packages feed

vulkan 3.1.0.0 → 3.2.0.0

raw patch · 179 files changed

+16646/−8754 lines, 179 filesdep −extradep −file-embeddep −managed

Dependencies removed: extra, file-embed, managed, pretty-show, pretty-simple, say, sdl2, template-haskell, temporary, text, typed-process, vector-sized, vulkan

Files

changelog.md view
@@ -2,6 +2,15 @@  ## WIP +## [3.2.0.0] - 2020-05-02+  - Update API version 1.2.139+  - Bracket functions now take as an argument a function to consume a pair of+    begin/end actions+  - Change `Either Word32 vec` to `vec` where the non-empty length is+    constrained to be the length of another known vector+  - Move `Counter` prefix on `PerformanceCounterResult` to be a suffix+  - Drop dependency on `vector-sized`, it was only used internally+ ## [3.1.0.0] - 2020-03-10   - Commands are now in MonadIO   - Improved documentation
− default.nix
@@ -1,116 +0,0 @@-{ pkgs ? import <nixpkgs> { }, compiler ? "ghc882"-, forShell ? pkgs.lib.inNixShell, hoogle ? forShell }:--let--  compiler' = if compiler != null then-    compiler-  else-    "ghc" + pkgs.lib.concatStrings-    (pkgs.lib.splitVersion pkgs.haskellPackages.ghc.version);--  targets = {-    vulkan = ./.;-    VulkanMemoryAllocator = ./VulkanMemoryAllocator;-    generate-new = ./generate-new;-  };--  # Any overrides we require to the specified haskell package set-  haskellPackages = with pkgs.haskell.lib;-    pkgs.haskell.packages.${compiler'}.override {-      overrides = self: super:-        (pkgs.lib.mapAttrs (n: v: makeDrv n v) targets) // {-          #-          # Examples-          #-          sdl2 = overrideSrc super.sdl2 {-            src = pkgs.fetchFromGitHub {-              owner = "haskell-game";-              repo = "sdl2";-              rev = "45679ab73fe4113eeae3b17ecaa2bec3b00bfd81";-              sha256 = "0qnzjs23b9b1j6ixlvhjdmp0anlgv0jxg2mxccb3piwkp9hdj6l2";-            };-          };-          bytes = self.bytes_0_17;--          #-          # Generate-          #-          algebraic-graphs = dontCheck super.algebraic-graphs;-          first-class-families = doJailbreak super.first-class-families;-          inline-c = self.inline-c_0_9_0_0;-          polysemy-plugin = self.callCabal2nix "" ((pkgs.fetchFromGitHub {-            owner = "polysemy-research";-            repo = "polysemy";-            rev = "72dc96fbd13dba6d8e9767253b7298e00a781bee";-            sha256 = "09b1n71gjmhf4ggx2wlywxm11jl3qbmhnlmmchj8pyy3hczl6hb5";-          } + "/polysemy-plugin")) { };-          polysemy = self.callCabal2nix "" ((pkgs.fetchFromGitHub {-            owner = "polysemy-research";-            repo = "polysemy";-            rev = "72dc96fbd13dba6d8e9767253b7298e00a781bee";-            sha256 = "09b1n71gjmhf4ggx2wlywxm11jl3qbmhnlmmchj8pyy3hczl6hb5";-          })) { };-          polysemy-zoo = dontCheck (self.callCabal2nix ""-            ((pkgs.fetchFromGitHub {-              owner = "polysemy-research";-              repo = "polysemy-zoo";-              rev = "57c6012e196db7fe1ce7551f1f762cbddc71f095";-              sha256 = "18smd2c66gdn9585sdkn60ykvdvkbvkxrnnl9zix687dca6h9jw0";-            })) { });-          compact = doJailbreak super.compact;-          pandoc = appendPatch super.pandoc-            ./generate-new/patches/pandoc-haddock-tables.patch;-          language-c = appendPatches super.language-c [-            ./generate-new/patches/language-c-custom-state.patch-            ./generate-new/patches/language-c-align.patch-            ./generate-new/patches/language-c-show-type.patch-          ];-        } // pkgs.lib.optionalAttrs hoogle {-          ghc = super.ghc // { withPackages = super.ghc.withHoogle; };-          ghcWithPackages = p:-            self.ghc.withPackages-            (f: p f ++ (if forShell then [ f.process ] else [ ]));-        };-    };--  buildSet = pkgs.lib.foldl (ps: p: ps // { ${p.pname} = p; }) { } packages;-  packages = map (t: haskellPackages.${t}) (builtins.attrNames targets);-  tools = with pkgs; [ pkgconfig asciidoctor python3 doxygen glslang ];--  # Generate a haskell derivation using the cabal2nix tool on `package.yaml`-  makeDrv = name: src:-    let-      drv =-        haskellPackages.callCabal2nixWithOptions "" src "--flag=build-examples"-        ({ } // pkgs.lib.optionalAttrs (name == "vulkan") {-          vulkan = pkgs.vulkan-loader;-        } // pkgs.lib.optionalAttrs-          (name == "VulkanMemoryAllocator" && forShell) {-            # For the shell we don't want to have the compile the local dependency-            # for VMA-            vulkan = null;-          });-    in if name == "vulkan" then-      pkgs.haskell.lib.addExtraLibrary drv pkgs.vulkan-headers-    else-      drv;--  addHoogleDatabase = drv:-    if hoogle then-      drv.overrideAttrs (attrs: {-        shellHook = attrs.shellHook + ''-          export HIE_HOOGLE_DATABASE="$(cat $(${pkgs.which}/bin/which hoogle) | sed -n -e 's|.*--database \(.*\.hoo\).*|\1|p')"-        '';-      })-    else-      drv;--in if forShell then-  addHoogleDatabase (haskellPackages.shellFor {-    packages = _: packages;-    buildInputs = tools;-    withHoogle = hoogle;-  })-else-  buildSet
− examples/info/Main.hs
@@ -1,27 +0,0 @@-module Main-  where--import           Graphics.Vulkan.Version-import           Graphics.Vulkan.Zero-import           Graphics.Vulkan.Core10-import           Text.Pretty.Simple-import           Data.Foldable--main :: IO ()-main = withInstance zero Nothing $ \i -> do-  pPrint i-  (_, layers    ) <- enumerateInstanceLayerProperties-  (_, extensions) <- enumerateInstanceExtensionProperties Nothing-  pPrint layers-  pPrint extensions-  (_, devices) <- enumeratePhysicalDevices i-  traverse_ deviceInfo devices--deviceInfo :: PhysicalDevice -> IO ()-deviceInfo p = do-  (_, extensions) <- enumerateDeviceExtensionProperties p Nothing-  (_, layers    ) <- enumerateDeviceLayerProperties p-  traverse_ pPrint extensions-  traverse_ pPrint layers-  pPrint =<< getPhysicalDeviceFeatures p-  pPrint =<< getPhysicalDeviceProperties p
− examples/sdl-triangle/DebugCallback.c
@@ -1,12 +0,0 @@-#include <stdio.h>-#include <vulkan/vulkan.h>--VKAPI_ATTR VkBool32 VKAPI_CALL-debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,-              VkDebugUtilsMessageTypeFlagsEXT messageType,-              const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,-              void *pUserData) {-  /* if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) */-  fprintf(stderr, "Validation: %s\n", pCallbackData->pMessage);-  return VK_FALSE;-}
− examples/sdl-triangle/Main.hs
@@ -1,677 +0,0 @@-{-# LANGUAGE OverloadedLists #-}-{-# LANGUAGE QuasiQuotes #-}-{-# OPTIONS_GHC -Wno-name-shadowing #-}--module Main where--import           Control.Exception-import           Control.Monad.Trans.Maybe-import           Control.Monad-import           Control.Monad.Extra-import           Data.Ord-import           Control.Monad.IO.Class-import           Data.Bits-import           Data.Traversable-import           Foreign.Ptr                    ( castPtr )-import           Data.List                      ( nub )-import qualified Data.ByteString               as BS-import           Data.Word-import           Say-import           System.Exit-import           Data.String                    ( IsString )-import           Data.Text               hiding ( maximum )-import           Data.Text.Encoding-import           Control.Monad.Managed-import qualified Data.Vector                   as V-import           Graphics.Vulkan.Core10-import           Graphics.Vulkan.Core11-import           Graphics.Vulkan.Extensions.VK_KHR_surface-import           Graphics.Vulkan.Extensions.VK_KHR_swapchain-import           Graphics.Vulkan.Extensions.VK_EXT_debug_utils-import           Graphics.Vulkan.Zero-import           Graphics.Vulkan.CStruct.Extends-import           Graphics.Vulkan.Version-import qualified SDL-import qualified SDL.Video.Vulkan              as SDL-import           Control.Arrow                  ( (&&&) )-import           ShaderQQ--main :: IO ()-main = runManaged $ do-  managed_ withSDL--  VulkanWindow {..} <- withVulkanWindow appName windowWidth windowHeight-  renderPass        <- Main.createRenderPass vwDevice vwFormat-  graphicsPipeline  <- createGraphicsPipeline vwDevice-                                              renderPass-                                              vwExtent-                                              vwFormat-  framebuffers   <- createFramebuffers vwDevice vwImageViews renderPass vwExtent-  commandBuffers <- createCommandBuffers vwDevice-                                         renderPass-                                         graphicsPipeline-                                         vwGraphicsQueueFamilyIndex-                                         framebuffers-                                         vwExtent-  (imageAvailableSemaphore, renderFinishedSemaphore) <- createSemaphores-    vwDevice-  SDL.showWindow vwSdlWindow-  liftIO . mainLoop $ drawFrame vwDevice-                                vwSwapchain-                                vwGraphicsQueue-                                vwPresentQueue-                                imageAvailableSemaphore-                                renderFinishedSemaphore-                                commandBuffers-  deviceWaitIdle vwDevice--mainLoop :: IO () -> IO ()-mainLoop draw = whileM $ do-  quit <- maybe False isQuitEvent <$> SDL.pollEvent-  if quit-    then pure False-    else do-      draw-      pure True--drawFrame-  :: Device-  -> SwapchainKHR-  -> Queue-  -> Queue-  -> Semaphore-  -> Semaphore-  -> V.Vector CommandBuffer-  -> IO ()-drawFrame dev swapchain graphicsQueue presentQueue imageAvailableSemaphore renderFinishedSemaphore commandBuffers-  = do-    (_, imageIndex) <- acquireNextImageKHR dev-                                           swapchain-                                           maxBound-                                           imageAvailableSemaphore-                                           zero-    let submitInfo = zero-          { waitSemaphores   = [imageAvailableSemaphore]-          , waitDstStageMask = [PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT]-          , commandBuffers   = [ commandBufferHandle-                                 $   commandBuffers-                                 V.! fromIntegral imageIndex-                               ]-          , signalSemaphores = [renderFinishedSemaphore]-          }-        presentInfo = zero { waitSemaphores = [renderFinishedSemaphore]-                           , swapchains     = [swapchain]-                           , imageIndices   = [imageIndex]-                           }-    queueSubmit graphicsQueue [submitInfo] zero-    _ <- queuePresentKHR presentQueue presentInfo-    pure ()--createSemaphores :: Device -> Managed (Semaphore, Semaphore)-createSemaphores dev = do-  imageAvailableSemaphore <- managed $ withSemaphore dev zero Nothing-  renderFinishedSemaphore <- managed $ withSemaphore dev zero Nothing-  pure (imageAvailableSemaphore, renderFinishedSemaphore)--createCommandBuffers-  :: Device-  -> RenderPass-  -> Pipeline-  -> Word32-  -> V.Vector Framebuffer-  -> Extent2D-  -> Managed (V.Vector CommandBuffer)-createCommandBuffers dev renderPass graphicsPipeline graphicsQueueFamilyIndex framebuffers swapchainExtent-  = do-    let commandPoolCreateInfo :: CommandPoolCreateInfo-        commandPoolCreateInfo =-          zero { queueFamilyIndex = graphicsQueueFamilyIndex }-    commandPool <- managed $ withCommandPool dev commandPoolCreateInfo Nothing-    let commandBufferAllocateInfo :: CommandBufferAllocateInfo-        commandBufferAllocateInfo = zero-          { commandPool        = commandPool-          , level              = COMMAND_BUFFER_LEVEL_PRIMARY-          , commandBufferCount = fromIntegral $ V.length framebuffers-          }-    buffers <- managed $ withCommandBuffers dev commandBufferAllocateInfo-    _ <- liftIO . for (V.zip framebuffers buffers) $ \(framebuffer, buffer) ->-      useCommandBuffer-          buffer-          zero { flags = COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT }-        $ do-            let renderPassBeginInfo = zero-                  { renderPass  = renderPass-                  , framebuffer = framebuffer-                  , renderArea  = Rect2D { offset = zero-                                         , extent = swapchainExtent-                                         }-                  , clearValues = [Color (Float32 (0.1, 0.1, 0.1, 0))]-                  }-            cmdBeginRenderPass buffer-                               renderPassBeginInfo-                               SUBPASS_CONTENTS_INLINE-            cmdBindPipeline buffer PIPELINE_BIND_POINT_GRAPHICS graphicsPipeline-            cmdDraw buffer 3 1 0 0-            cmdEndRenderPass buffer-    pure buffers--createShaders-  :: Device -> Managed (V.Vector (SomeStruct PipelineShaderStageCreateInfo))-createShaders dev = do-  let fragCode = [frag|-        #version 450-        #extension GL_ARB_separate_shader_objects : enable--        layout(location = 0) in vec3 fragColor;--        layout(location = 0) out vec4 outColor;--        void main() {-            outColor = vec4(fragColor, 1.0);-        }-      |]-      vertCode = [vert|-        #version 450-        #extension GL_ARB_separate_shader_objects : enable--        layout(location = 0) out vec3 fragColor;--        vec2 positions[3] = vec2[](-          vec2(0.0, -0.5),-          vec2(0.5, 0.5),-          vec2(-0.5, 0.5)-        );--        vec3 colors[3] = vec3[](-          vec3(1.0, 1.0, 0.0),-          vec3(0.0, 1.0, 1.0),-          vec3(1.0, 0.0, 1.0)-        );--        void main() {-          gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0);-          fragColor = colors[gl_VertexIndex];-        }-      |]-  fragModule <- managed $ withShaderModule dev zero { code = fragCode } Nothing-  vertModule <- managed $ withShaderModule dev zero { code = vertCode } Nothing-  let vertShaderStageCreateInfo = zero { stage   = SHADER_STAGE_VERTEX_BIT-                                       , module' = vertModule-                                       , name    = "main"-                                       }-      fragShaderStageCreateInfo = zero { stage   = SHADER_STAGE_FRAGMENT_BIT-                                       , module' = fragModule-                                       , name    = "main"-                                       }-  pure-    [SomeStruct vertShaderStageCreateInfo, SomeStruct fragShaderStageCreateInfo]--createRenderPass :: Device -> Format -> Managed RenderPass-createRenderPass dev swapchainImageFormat = do-  let-    attachmentDescription :: AttachmentDescription-    attachmentDescription = zero-      { format         = swapchainImageFormat-      , samples        = SAMPLE_COUNT_1_BIT-      , loadOp         = ATTACHMENT_LOAD_OP_CLEAR-      , storeOp        = ATTACHMENT_STORE_OP_STORE-      , stencilLoadOp  = ATTACHMENT_LOAD_OP_DONT_CARE-      , stencilStoreOp = ATTACHMENT_STORE_OP_DONT_CARE-      , initialLayout  = IMAGE_LAYOUT_UNDEFINED-      , finalLayout    = IMAGE_LAYOUT_PRESENT_SRC_KHR-      }-    subpass :: SubpassDescription-    subpass = zero-      { pipelineBindPoint = PIPELINE_BIND_POINT_GRAPHICS-      , colorAttachments  =-        [ zero { attachment = 0-               , layout     = IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL-               }-        ]-      }-    subpassDependency :: SubpassDependency-    subpassDependency = zero-      { srcSubpass    = SUBPASS_EXTERNAL-      , dstSubpass    = 0-      , srcStageMask  = PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT-      , srcAccessMask = zero-      , dstStageMask  = PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT-      , dstAccessMask = ACCESS_COLOR_ATTACHMENT_READ_BIT-                          .|. ACCESS_COLOR_ATTACHMENT_WRITE_BIT-      }-  managed $ withRenderPass-    dev-    zero { attachments  = [attachmentDescription]-         , subpasses    = [subpass]-         , dependencies = [subpassDependency]-         }-    Nothing--createGraphicsPipeline-  :: Device -> RenderPass -> Extent2D -> Format -> Managed Pipeline-createGraphicsPipeline dev renderPass swapchainExtent swapchainImageFormat = do-  shaderStages   <- createShaders dev-  pipelineLayout <- managed $ withPipelineLayout dev zero Nothing-  let-    pipelineCreateInfo :: GraphicsPipelineCreateInfo '[]-    pipelineCreateInfo = zero-      { stages             = shaderStages-      , vertexInputState   = Just zero-      , inputAssemblyState = Just zero-                               { topology = PRIMITIVE_TOPOLOGY_TRIANGLE_LIST-                               , primitiveRestartEnable = False-                               }-      , viewportState      = Just . SomeStruct $ zero-        { viewports = Right-          [ Viewport-              { x        = 0-              , y        = 0-              , width    = realToFrac (width (swapchainExtent :: Extent2D))-              , height   = realToFrac (height (swapchainExtent :: Extent2D))-              , minDepth = 0-              , maxDepth = 1-              }-          ]-        , scissors  = Right-          [Rect2D { offset = Offset2D 0 0, extent = swapchainExtent }]-        }-      , rasterizationState = SomeStruct $ zero-                               { depthClampEnable        = False-                               , rasterizerDiscardEnable = False-                               , lineWidth               = 1-                               , polygonMode             = POLYGON_MODE_FILL-                               , cullMode                = CULL_MODE_NONE-                               , frontFace               = FRONT_FACE_CLOCKWISE-                               , depthBiasEnable         = False-                               }-      , multisampleState   = Just . SomeStruct $ zero-                               { sampleShadingEnable  = False-                               , rasterizationSamples = SAMPLE_COUNT_1_BIT-                               , minSampleShading     = 1-                               , sampleMask           = [maxBound]-                               }-      , depthStencilState  = Nothing-      , colorBlendState    = Just . SomeStruct $ zero-                               { logicOpEnable = False-                               , attachments   = [ zero-                                                     { colorWriteMask =-                                                       COLOR_COMPONENT_R_BIT-                                                       .|. COLOR_COMPONENT_G_BIT-                                                       .|. COLOR_COMPONENT_B_BIT-                                                       .|. COLOR_COMPONENT_A_BIT-                                                     , blendEnable    = False-                                                     }-                                                 ]-                               }-      , dynamicState       = Nothing-      , layout             = pipelineLayout-      , renderPass         = renderPass-      , subpass            = 0-      , basePipelineHandle = zero-      }-  fmap V.head $ managed $ withGraphicsPipelines dev-                                                zero-                                                [pipelineCreateInfo]-                                                Nothing--createFramebuffers-  :: Device-  -> V.Vector ImageView-  -> RenderPass-  -> Extent2D-  -> Managed (V.Vector Framebuffer)-createFramebuffers dev imageViews renderPass swapchainExtent =-  for imageViews $ \imageView -> do-    let framebufferCreateInfo :: FramebufferCreateInfo '[]-        framebufferCreateInfo = zero-          { renderPass  = renderPass-          , attachments = [imageView]-          , width       = width (swapchainExtent :: Extent2D)-          , height      = height (swapchainExtent :: Extent2D)-          , layers      = 1-          }-    managed $ withFramebuffer dev framebufferCreateInfo Nothing--data VulkanWindow = VulkanWindow-  { vwSdlWindow                :: SDL.Window-  , vwDevice                   :: Device-  , vwSurface                  :: SurfaceKHR-  , vwSwapchain                :: SwapchainKHR-  , vwExtent                   :: Extent2D-  , vwFormat                   :: Format-  , vwImageViews               :: V.Vector ImageView-  , vwGraphicsQueue            :: Queue-  , vwGraphicsQueueFamilyIndex :: Word32-  , vwPresentQueue             :: Queue-  }--withVulkanWindow :: Text -> Int -> Int -> Managed VulkanWindow-withVulkanWindow appName width height = do-  window             <- managed $ withWindow appName width height-  instanceCreateInfo <- windowInstanceCreateInfo window-  inst               <- managed $ withInstance instanceCreateInfo Nothing-  _                  <- managed-    $ withDebugUtilsMessengerEXT inst debugUtilsMessengerCreateInfo Nothing-  submitDebugUtilsMessageEXT-    inst-    DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT-    DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT-    zero { message = "Debug Message Test" }-  surface <- managed $ withSDLWindowSurface inst window-  (dev, graphicsQueue, graphicsQueueFamilyIndex, presentQueue, swapchainFormat, swapchainExtent, swapchain) <--    createGraphicalDevice inst surface-  (_, images) <- getSwapchainImagesKHR dev swapchain-  let imageViewCreateInfo i = zero-        { image            = i-        , viewType         = IMAGE_VIEW_TYPE_2D-        , format           = swapchainFormat-        , components       = zero { r = COMPONENT_SWIZZLE_IDENTITY-                                  , g = COMPONENT_SWIZZLE_IDENTITY-                                  , b = COMPONENT_SWIZZLE_IDENTITY-                                  , a = COMPONENT_SWIZZLE_IDENTITY-                                  }-        , subresourceRange = zero { aspectMask     = IMAGE_ASPECT_COLOR_BIT-                                  , baseMipLevel   = 0-                                  , levelCount     = 1-                                  , baseArrayLayer = 0-                                  , layerCount     = 1-                                  }-        }-  imageViews <- for images-    $ \i -> managed $ withImageView dev (imageViewCreateInfo i) Nothing-  pure $ VulkanWindow window-                      dev-                      surface-                      swapchain-                      swapchainExtent-                      swapchainFormat-                      imageViews-                      graphicsQueue-                      graphicsQueueFamilyIndex-                      presentQueue--appName :: IsString a => a-appName = "Haskell Vulkan triangle example"--windowWidth, windowHeight :: Int-windowWidth = 1920-windowHeight = 1080---- | InstanceCreateInfo for an SDL window-windowInstanceCreateInfo-  :: MonadIO m-  => SDL.Window-  -> m (InstanceCreateInfo '[DebugUtilsMessengerCreateInfoEXT])-windowInstanceCreateInfo window = do-  windowExtensions <--    liftIO $ traverse BS.packCString =<< SDL.vkGetInstanceExtensions window-  let requiredLayers = ["VK_LAYER_LUNARG_standard_validation"]-      requiredExtensions =-        V.fromList $ EXT_DEBUG_UTILS_EXTENSION_NAME : windowExtensions-  pure zero-    { next                  = (debugUtilsMessengerCreateInfo, ())-    , applicationInfo       = Just zero { applicationName = Just appName-                                        , apiVersion      = MAKE_VERSION 1 1 0-                                        }-    , enabledLayerNames     = requiredLayers-    , enabledExtensionNames = requiredExtensions-    }--createGraphicalDevice-  :: Instance-  -> SurfaceKHR-  -> Managed-       (Device, Queue, Word32, Queue, Format, Extent2D, SwapchainKHR)-createGraphicalDevice inst surface = do-  let requiredDeviceExtensions = [KHR_SWAPCHAIN_EXTENSION_NAME]-  (physicalDevice, graphicsQueueFamilyIndex, presentQueueFamilyIndex, surfaceFormat, presentMode, surfaceCaps) <--    pickGraphicalPhysicalDevice-      inst-      surface-      requiredDeviceExtensions-      (SurfaceFormatKHR FORMAT_B8G8R8_UNORM COLOR_SPACE_SRGB_NONLINEAR_KHR)-  props <- getPhysicalDeviceProperties physicalDevice-  sayErr $ "Using device: " <> decodeUtf8 (deviceName props)-  let-    deviceCreateInfo :: DeviceCreateInfo '[]-    deviceCreateInfo = zero-      { queueCreateInfos      = V.fromList-        [ SomeStruct $ zero { queueFamilyIndex = i-                            , queuePriorities = [1]-                            , flags = DEVICE_QUEUE_CREATE_PROTECTED_BIT-                            }-        | i <- nub [graphicsQueueFamilyIndex, presentQueueFamilyIndex]-        ]-      , enabledExtensionNames = requiredDeviceExtensions-      }-  dev           <- managed $ withDevice physicalDevice deviceCreateInfo Nothing-  graphicsQueue <- getDeviceQueue2-    dev-    zero { queueFamilyIndex = graphicsQueueFamilyIndex-         , flags            = DEVICE_QUEUE_CREATE_PROTECTED_BIT-         }-  presentQueue <- getDeviceQueue2-    dev-    zero { queueFamilyIndex = presentQueueFamilyIndex-         , flags            = DEVICE_QUEUE_CREATE_PROTECTED_BIT-         }-  let-    swapchainCreateInfo :: SwapchainCreateInfoKHR '[]-    swapchainCreateInfo =-      let (sharingMode, queueFamilyIndices) = if graphicsQueue == presentQueue-            then (SHARING_MODE_EXCLUSIVE, [])-            else-              ( SHARING_MODE_CONCURRENT-              , [graphicsQueueFamilyIndex, presentQueueFamilyIndex]-              )-      in-        zero-          { surface            = surface-          , minImageCount      = minImageCount-                                     (surfaceCaps :: SurfaceCapabilitiesKHR)-                                   + 1-          , imageFormat = (format :: SurfaceFormatKHR -> Format) surfaceFormat-          , imageColorSpace    = colorSpace surfaceFormat-          , imageExtent        = case-                                   currentExtent-                                     (surfaceCaps :: SurfaceCapabilitiesKHR)-                                 of-                                   Extent2D w h | w == maxBound, h == maxBound ->-                                     Extent2D (fromIntegral windowWidth)-                                              (fromIntegral windowHeight)-                                   e -> e-          , imageArrayLayers   = 1-          , imageUsage         = IMAGE_USAGE_COLOR_ATTACHMENT_BIT-          , imageSharingMode   = sharingMode-          , queueFamilyIndices = queueFamilyIndices-          , preTransform       = currentTransform-                                   (surfaceCaps :: SurfaceCapabilitiesKHR)-          , compositeAlpha     = COMPOSITE_ALPHA_OPAQUE_BIT_KHR-          , presentMode        = presentMode-          , clipped            = True-          }-  swapchain <- managed $ withSwapchainKHR dev swapchainCreateInfo Nothing-  pure-    ( dev-    , graphicsQueue-    , graphicsQueueFamilyIndex-    , presentQueue-    , format (surfaceFormat :: SurfaceFormatKHR)-    , imageExtent (swapchainCreateInfo :: SwapchainCreateInfoKHR '[])-    , swapchain-    )---- | Find the device which has the most memory and a graphics queue family index-pickGraphicalPhysicalDevice-  :: MonadIO m-  => Instance-  -> SurfaceKHR-  -> V.Vector BS.ByteString-  -> SurfaceFormatKHR-  -> m-       ( PhysicalDevice-       , Word32-       , Word32-       , SurfaceFormatKHR-       , PresentModeKHR-       , SurfaceCapabilitiesKHR-       )-pickGraphicalPhysicalDevice inst surface requiredExtensions desiredFormat = do-  (_, devs)    <- enumeratePhysicalDevices inst-  -- All devices with support for all the graphical features we want-  graphicsDevs <- fmap (V.mapMaybe id) . for devs $ \dev -> runMaybeT $ do-    graphicsQueue <- MaybeT $ headMay <$> getGraphicsQueueIndices dev-    presentQueue  <- MaybeT $ headMay <$> getPresentQueueIndices dev-    guard =<< deviceHasSwapChain dev-    bestFormat  <- getFormat dev-    presentMode <- getPresentMode dev-    surfaceCaps <- getPhysicalDeviceSurfaceCapabilitiesKHR dev surface-    score       <- deviceScore dev-    pure-      ( score-      , (dev, graphicsQueue, presentQueue, bestFormat, presentMode, surfaceCaps)-      )-  if V.null graphicsDevs-    then do-      sayErr "No suitable devices found"-      liftIO exitFailure-    else pure . snd . V.maximumBy (comparing fst) $ graphicsDevs-- where-  headMay = \case-    [] -> Nothing-    xs -> Just (V.unsafeHead xs)--  deviceScore :: MonadIO m => PhysicalDevice -> m Word64-  deviceScore dev = do-    heaps <- memoryHeaps <$> getPhysicalDeviceMemoryProperties dev-    let totalSize = sum $ (size :: MemoryHeap -> DeviceSize) <$> heaps-    pure totalSize--  deviceHasSwapChain :: MonadIO m => PhysicalDevice -> m Bool-  deviceHasSwapChain dev = do-    (_, extensions) <- enumerateDeviceExtensionProperties dev Nothing-    pure $ V.any ((KHR_SWAPCHAIN_EXTENSION_NAME ==) . extensionName) extensions--  getGraphicsQueueIndices :: MonadIO m => PhysicalDevice -> m (V.Vector Word32)-  getGraphicsQueueIndices dev = do-    queueFamilyProperties <- getPhysicalDeviceQueueFamilyProperties dev-    let isGraphicsQueue q =-          (QUEUE_GRAPHICS_BIT .&&. queueFlags q) && (queueCount q > 0)-        graphicsQueueIndices = fromIntegral . fst <$> V.filter-          (isGraphicsQueue . snd)-          (V.indexed queueFamilyProperties)-    pure graphicsQueueIndices--  getPresentQueueIndices :: MonadIO m => PhysicalDevice -> m (V.Vector Word32)-  getPresentQueueIndices dev = do-    -- TODO: implement getNum...-    numQueues <- V.length <$> getPhysicalDeviceQueueFamilyProperties2 @'[] dev-    let queueIndices = V.generate (fromIntegral numQueues) fromIntegral-    V.filterM-      (\i -> (True ==) <$> getPhysicalDeviceSurfaceSupportKHR dev i surface)-      queueIndices--  getFormat :: MonadIO m => PhysicalDevice -> m SurfaceFormatKHR-  getFormat dev = do-    (_, formats) <- getPhysicalDeviceSurfaceFormatsKHR dev surface-    pure $ case formats of-      [] -> desiredFormat-      [SurfaceFormatKHR FORMAT_UNDEFINED _] -> desiredFormat-      _-        | V.any-          (\f ->-            format (f :: SurfaceFormatKHR)-              == format (desiredFormat :: SurfaceFormatKHR)-              && colorSpace (f :: SurfaceFormatKHR)-              == colorSpace (desiredFormat :: SurfaceFormatKHR)-          )-          formats-        -> desiredFormat-      _ -> V.head formats--  getPresentMode :: MonadIO m => PhysicalDevice -> MaybeT m PresentModeKHR-  getPresentMode dev = do-    (_, presentModes) <- getPhysicalDeviceSurfacePresentModesKHR dev surface-    let desiredPresentModes =-          [ PRESENT_MODE_MAILBOX_KHR-          , PRESENT_MODE_FIFO_KHR-          , PRESENT_MODE_IMMEDIATE_KHR-          ]-    MaybeT-      . pure-      . headMay-      . V.filter (`V.elem` presentModes)-      $ desiredPresentModes--------------------------------------------------------------------- Debugging-------------------------------------------------------------------debugUtilsMessengerCreateInfo :: DebugUtilsMessengerCreateInfoEXT-debugUtilsMessengerCreateInfo = zero-  { messageSeverity = -- DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT-                      -- .|. DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT-                      -- .|.-                      DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT-                        .|. DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT-  , messageType     = DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT-                      .|. DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT-                      .|. DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT-  , pfnUserCallback = debugCallbackPtr-  }--foreign import ccall unsafe "DebugCallback.c &debugCallback"-  debugCallbackPtr :: PFN_vkDebugUtilsMessengerCallbackEXT--------------------------------------------------------------------- SDL helpers--------------------------------------------------------------------- | Run something having initialized SDL-withSDL :: IO a -> IO a-withSDL =-  bracket_-      (SDL.initialize ([SDL.InitEvents, SDL.InitVideo] :: [SDL.InitFlag]))-      SDL.quit-    . bracket_ (SDL.vkLoadLibrary Nothing) SDL.vkUnloadLibrary---- | Create an SDL window and use it-withWindow :: Text -> Int -> Int -> (SDL.Window -> IO a) -> IO a-withWindow title width height = bracket-  (SDL.createWindow-    title-    (SDL.defaultWindow-      { SDL.windowInitialSize     = SDL.V2 (fromIntegral width)-                                           (fromIntegral height)-      , SDL.windowGraphicsContext = SDL.VulkanContext-      }-    )-  )-  SDL.destroyWindow--isQuitEvent :: SDL.Event -> Bool-isQuitEvent = \case-  (SDL.Event _ SDL.QuitEvent) -> True-  SDL.Event _ (SDL.KeyboardEvent (SDL.KeyboardEventData _ SDL.Released False (SDL.Keysym _ code _)))-    | code == SDL.KeycodeQ || code == SDL.KeycodeEscape-    -> True-  _ -> False---- | Get the Vulkan surface for an SDL window-getSDLWindowSurface :: Instance -> SDL.Window -> IO SurfaceKHR-getSDLWindowSurface inst window =-  SurfaceKHR <$> SDL.vkCreateSurface window (castPtr (instanceHandle inst))--withSDLWindowSurface :: Instance -> SDL.Window -> (SurfaceKHR -> IO a) -> IO a-withSDLWindowSurface inst window = bracket-  (getSDLWindowSurface inst window)-  (\o -> destroySurfaceKHR inst o Nothing)--------------------------------------------------------------------- Bit utils-------------------------------------------------------------------(.&&.) :: Bits a => a -> a -> Bool-x .&&. y = (/= zeroBits) (x .&. y)-
− examples/sdl-triangle/ShaderQQ.hs
@@ -1,87 +0,0 @@-module ShaderQQ-  ( comp-  , frag-  , geom-  , tesc-  , tese-  , vert-  , compileShader-  ) where--import           Data.ByteString                ( ByteString )-import qualified Data.ByteString               as BS-import           Data.FileEmbed-import           Language.Haskell.TH-import           Language.Haskell.TH.Syntax-import           Language.Haskell.TH.Quote-import           System.IO-import           System.IO.Temp-import           System.Process.Typed-import           Data.List.Extra-import           Data.Char--comp = shaderQQ "comp"-frag = shaderQQ "frag"-geom = shaderQQ "geom"-tesc = shaderQQ "tesc"-tese = shaderQQ "tese"-vert = shaderQQ "vert"--shaderQQ :: String -> QuasiQuoter-shaderQQ stage = QuasiQuoter-  { quoteExp  = \code -> do-                  loc <- location-                  bs  <- runIO $ compileShader (Just loc) stage code-                  bsToExp bs-  , quotePat  = bad "pattern"-  , quoteType = bad "type"-  , quoteDec  = bad "declaration"-  }- where-  bad :: String -> a-  bad s = error $ "Can't use " <> stage <> " quote in a " <> s <> " context"---- | Compile a glsl shader to spir-v using glslangValidator-compileShader-  :: Maybe Loc-  -- ^ Source location-  -> String-  -- ^ stage-  -> String-  -- ^ glsl code-  -> IO ByteString-  -- ^ Spir-V bytecode-compileShader loc stage code = withSystemTempDirectory "th-shader" $ \dir -> do-  let codeWithLineDirective = maybe code (`insertLineDirective` code) loc-  let shader = dir <> "/shader." <> stage-      spirv  = dir <> "/shader.spv"-  writeFile shader codeWithLineDirective-  let -- TODO: writing to stdout here breaks HIE-      p =-        setStderr inherit-          . setStdout (useHandleOpen stderr)-          . setStdin closed-          $ proc "glslangValidator" ["-S", stage, "-V", shader, "-o", spirv]-  runProcess_ p-  -- 'runIO' suggests flushing as GHC may not-  hFlush stderr-  BS.readFile spirv---- If possible, insert a #line directive after the #version directive (as well--- as the extension which allows filenames in line directives.-insertLineDirective :: Loc -> String -> String-insertLineDirective Loc {..} code =-  let isVersionDirective = ("#version" `isPrefixOf`) . dropWhile isSpace-      codeLines = lines code-      (beforeVersion, afterVersion) = break isVersionDirective codeLines-      lineDirective =-        [ "#extension GL_GOOGLE_cpp_style_line_directive : enable"-        , "#line "-          <> show (fst loc_start + length beforeVersion + 1)-          <> " \""-          <> loc_filename-          <> "\""-        ]-  in  case afterVersion of-        []     -> code-        v : xs -> unlines $ beforeVersion <> [v] <> lineDirective <> xs
readme.md view
@@ -84,8 +84,12 @@  - To prevent a name clash between the constructors of   `VkClearColorValue` and `VkPerformanceCounterResultKHR` the latter have had-  `Counter` prefixed.+  `Counter` suffixed. +- To prevent a name clash between the constructors of+  `DeviceOrHostAddressKHR` and `DeviceOrHostAddressConstKHR` the latter have+  had `Const` suffixed.+ ## How the C types relate to Haskell types  These bindings take advantage of the meta information present in the@@ -181,33 +185,32 @@ This package requires GHC 8.6 or higher due to the use of the `QuantifiedConstraints` language extension. +Make sure you have initialized the `VulkanMemoryAllocator` submodule if you+intend to build the `VulkanMemoryAllocator` package.++If you provision `libvulkan.so` (the Vulkan loader) with nix and you're not on+NixOS, you'll have to use [NixGL](https://github.com/guibou/nixGL) to run your+programs. For this reason it's recommended to use the system-provided+`libvulkan.so`.+ For instructions on how to regenerate the bindings see [the readme in ./generate-new](./generate-new/readme.md). -### Stack+Set the `build-examples` flag on the `vulkan` package to build the example+programs. You'll need to supply the following system packages: -To build with examples:+- `vulkan-loader` (for `libvulkan.so`)+- `vulkan-headers` (for `vulkan.h`)+- `pkg-config` and `SDL2` to build the haskell `sdl2` package.+- `glslang` (for the `glslangValidator` binary, to build the shaders) -```bash-ns -p stack ghc vulkan-loader vulkan-headers pkg-config SDL2 --run 'stack --system-ghc build --flag vulkan:build-examples'-```+- For the sdl example you'll need to use the patched `sdl2` package until this+  PR makes its way to Hackage: https://github.com/haskell-game/sdl2/pull/209  ## Examples -There are a couple of examples in the `examples` directory.--### `sdl-triangle`--This opens a window using SDL and renders a triangle.--You'll need to build the shaders first with `(cd examples/sdl-triangle &&-glslangValidator -V shader.*)`--Make sure that SDL can find `libvulkan.so` either by setting `LD_LIBRARY_PATH`-or `SDL_VULKAN_LIBRARY`, this must be the same `libvulkan.so` that the-`sdl-triangle` binary was compiled against.--Exit with `q`, `escape` or the window exit button.+There exists a package to build some example programs in the `examples`+directory.  ## Current Status 
src/Graphics/Vulkan/CStruct/Extends.hs view
@@ -40,9 +40,22 @@ import Data.Kind (Constraint) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildGeometryInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildOffsetInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateGeometryTypeInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureDeviceAddressInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryAabbsDataKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryInstancesDataKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureGeometryTrianglesDataKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureVersionKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)@@ -58,14 +71,17 @@ import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (AttachmentSampleLocationsEXT)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (BindImageMemorySwapchainInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (BindImagePlaneMemoryInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (BindIndexBufferIndirectCommandNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (BindShaderGroupIndirectCommandNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (BindVertexBufferIndirectCommandNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (BufferCopy) import {-# SOURCE #-} Graphics.Vulkan.Core10.Buffer (BufferCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address (BufferDeviceAddressCreateInfoEXT)@@ -80,8 +96,6 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearAttachment) import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearDepthStencilValue) import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearRect)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdProcessCommandsInfoNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdReserveSpaceForCommandsInfoNVX) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleLocationNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferAllocateInfo)@@ -95,7 +109,10 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureToMemoryInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (CopyDescriptorSet)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyMemoryToAccelerationStructureInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (D3D12FenceSubmitInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)@@ -109,6 +126,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations (DeferredOperationInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorBufferInfo) import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorImageInfo) import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)@@ -124,9 +142,8 @@ import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateEntry) import {-# SOURCE #-} Graphics.Vulkan.Core10.Device (DeviceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config (DeviceDiagnosticsConfigCreateInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsFeaturesNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsLimitsNVX) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupBindSparseInfo) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupCommandBufferBeginInfo) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)@@ -196,11 +213,15 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (FramebufferMixedSamplesCombinationNV) import Graphics.Vulkan.CStruct (FromCStruct) import Graphics.Vulkan.CStruct (FromCStruct(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryAABBNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryDataNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryTrianglesNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsShaderGroupCreateInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)@@ -225,6 +246,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceRange) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX) import {-# SOURCE #-} Graphics.Vulkan.Core10.ImageView (ImageViewCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (ImageViewUsageCreateInfo)@@ -237,9 +259,9 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsLayoutCreateInfoNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsLayoutTokenNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsTokenNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutTokenNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsStreamNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (InputAttachmentAspectReference) import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (InstanceCreateInfo)@@ -265,13 +287,6 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableCreateInfoNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableDescriptorSetEntryNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableEntryNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableIndexBufferEntryNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTablePipelineEntryNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTablePushConstantEntryNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableVertexBufferEntryNVX) import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Offset2D) import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Offset3D) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)@@ -303,6 +318,9 @@ import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)@@ -344,6 +362,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeaturesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties) import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)@@ -351,8 +370,12 @@ import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures) import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingPropertiesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2PropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (PhysicalDeviceSampleLocationsPropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)@@ -416,6 +439,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineInputAssemblyStateCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineMultisampleStateCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)@@ -446,12 +470,15 @@ import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (ProtectedSubmitInfo) import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineLayout (PushConstantRange) import {-# SOURCE #-} Graphics.Vulkan.Core10.Query (QueryPoolCreateInfo)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolCreateInfoINTEL) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolPerformanceQueryCreateInfoINTEL) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (QueueFamilyProperties) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineInterfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (RayTracingShaderGroupCreateInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_incremental_present (RectLayerKHR)@@ -478,6 +505,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreTypeCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (SetStateFlagsIndirectCommandNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.Shader (ShaderModuleCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_cache (ShaderModuleValidationCacheCreateInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_info (ShaderResourceUsageAMD)@@ -497,6 +525,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (SpecializationMapEntry) import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (StencilOpState) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (StridedBufferRegionKHR) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..)) import {-# SOURCE #-} Graphics.Vulkan.Core10.Queue (SubmitInfo)@@ -525,6 +554,8 @@ import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo) import Graphics.Vulkan.CStruct (ToCStruct) import Graphics.Vulkan.CStruct (ToCStruct(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (TraceRaysIndirectCommandKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)@@ -540,7 +571,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (WriteDescriptorSet)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata (XYColorEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR)@@ -653,6 +684,7 @@   type family Extends (a :: [Type] -> Type) (b :: Type) :: Constraint where+  Extends AccelerationStructureBuildGeometryInfoKHR DeferredOperationInfoKHR = ()   Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatPropertiesANDROID = ()   Extends AttachmentDescription2 AttachmentDescriptionStencilLayout = ()   Extends AttachmentReference2 AttachmentReferenceStencilLayout = ()@@ -671,10 +703,14 @@   Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()   Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()   Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()+  Extends CopyAccelerationStructureInfoKHR DeferredOperationInfoKHR = ()+  Extends CopyAccelerationStructureToMemoryInfoKHR DeferredOperationInfoKHR = ()+  Extends CopyMemoryToAccelerationStructureInfoKHR DeferredOperationInfoKHR = ()   Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfoEXT = ()   Extends DescriptorSetAllocateInfo DescriptorSetVariableDescriptorCountAllocateInfo = ()   Extends DescriptorSetLayoutCreateInfo DescriptorSetLayoutBindingFlagsCreateInfo = ()   Extends DescriptorSetLayoutSupport DescriptorSetVariableDescriptorCountLayoutSupport = ()+  Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()   Extends DeviceCreateInfo (PhysicalDeviceFeatures2 '[]) = ()   Extends DeviceCreateInfo PhysicalDeviceVariablePointersFeatures = ()   Extends DeviceCreateInfo PhysicalDeviceMultiviewFeatures = ()@@ -706,6 +742,7 @@   Extends DeviceCreateInfo PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceShadingRateImageFeaturesNV = ()   Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesNV = ()+  Extends DeviceCreateInfo PhysicalDeviceRayTracingFeaturesKHR = ()   Extends DeviceCreateInfo DeviceMemoryOverallocationCreateInfoAMD = ()   Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceScalarBlockLayoutFeatures = ()@@ -731,14 +768,19 @@   Extends DeviceCreateInfo PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceSubgroupSizeControlFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceLineRasterizationFeaturesEXT = ()+  Extends DeviceCreateInfo PhysicalDevicePipelineCreationCacheControlFeaturesEXT = ()   Extends DeviceCreateInfo PhysicalDeviceVulkan11Features = ()   Extends DeviceCreateInfo PhysicalDeviceVulkan12Features = ()   Extends DeviceCreateInfo PhysicalDeviceCoherentMemoryFeaturesAMD = ()+  Extends DeviceCreateInfo PhysicalDeviceDiagnosticsConfigFeaturesNV = ()+  Extends DeviceCreateInfo DeviceDiagnosticsConfigCreateInfoNV = ()+  Extends DeviceCreateInfo PhysicalDeviceRobustness2FeaturesEXT = ()   Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoEXT = ()   Extends FenceCreateInfo ExportFenceCreateInfo = ()   Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()   Extends FormatProperties2 DrmFormatModifierPropertiesListEXT = ()   Extends FramebufferCreateInfo FramebufferAttachmentsCreateInfo = ()+  Extends GraphicsPipelineCreateInfo GraphicsPipelineShaderGroupsCreateInfoNV = ()   Extends GraphicsPipelineCreateInfo PipelineDiscardRectangleStateCreateInfoEXT = ()   Extends GraphicsPipelineCreateInfo PipelineRepresentativeFragmentTestStateCreateInfoNV = ()   Extends GraphicsPipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()@@ -782,6 +824,7 @@   Extends MemoryAllocateInfo MemoryOpaqueCaptureAddressAllocateInfo = ()   Extends MemoryRequirements2 MemoryDedicatedRequirements = ()   Extends PhysicalDeviceExternalSemaphoreInfo SemaphoreTypeCreateInfo = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceVariablePointersFeatures = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewFeatures = ()   Extends PhysicalDeviceFeatures2 PhysicalDevice16BitStorageFeatures = ()@@ -811,6 +854,7 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceShadingRateImageFeaturesNV = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesNV = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingFeaturesKHR = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceScalarBlockLayoutFeatures = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceUniformBufferStandardLayoutFeatures = ()@@ -835,15 +879,19 @@   Extends PhysicalDeviceFeatures2 PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceSubgroupSizeControlFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceLineRasterizationFeaturesEXT = ()+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineCreationCacheControlFeaturesEXT = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan11Features = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan12Features = ()   Extends PhysicalDeviceFeatures2 PhysicalDeviceCoherentMemoryFeaturesAMD = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDiagnosticsConfigFeaturesNV = ()+  Extends PhysicalDeviceFeatures2 PhysicalDeviceRobustness2FeaturesEXT = ()   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()   Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()   Extends PhysicalDeviceImageFormatInfo2 ImageStencilUsageCreateInfo = ()   Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageViewImageFormatInfoEXT = ()   Extends PhysicalDeviceMemoryProperties2 PhysicalDeviceMemoryBudgetPropertiesEXT = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = ()   Extends PhysicalDeviceProperties2 PhysicalDevicePushDescriptorPropertiesKHR = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceDriverProperties = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceIDProperties = ()@@ -871,6 +919,7 @@   Extends PhysicalDeviceProperties2 PhysicalDeviceTransformFeedbackPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceShadingRateImagePropertiesNV = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesNV = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPropertiesKHR = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPropertiesNV = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrixPropertiesNV = ()@@ -881,6 +930,7 @@   Extends PhysicalDeviceProperties2 PhysicalDeviceLineRasterizationPropertiesEXT = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan11Properties = ()   Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan12Properties = ()+  Extends PhysicalDeviceProperties2 PhysicalDeviceRobustness2PropertiesEXT = ()   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()   Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()@@ -907,8 +957,10 @@   Extends PresentInfoKHR PresentTimesInfoGOOGLE = ()   Extends PresentInfoKHR PresentFrameTokenGGP = ()   Extends QueryPoolCreateInfo QueryPoolPerformanceCreateInfoKHR = ()-  Extends QueryPoolCreateInfo QueryPoolCreateInfoINTEL = ()+  Extends QueryPoolCreateInfo QueryPoolPerformanceQueryCreateInfoINTEL = ()   Extends QueueFamilyProperties2 QueueFamilyCheckpointPropertiesNV = ()+  Extends RayTracingPipelineCreateInfoKHR PipelineCreationFeedbackCreateInfoEXT = ()+  Extends RayTracingPipelineCreateInfoKHR DeferredOperationInfoKHR = ()   Extends RayTracingPipelineCreateInfoNV PipelineCreationFeedbackCreateInfoEXT = ()   Extends RenderPassBeginInfo DeviceGroupRenderPassBeginInfo = ()   Extends RenderPassBeginInfo RenderPassSampleLocationsBeginInfoEXT = ()@@ -944,7 +996,7 @@   Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveInfoEXT = ()   Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveWin32InfoEXT = ()   Extends WriteDescriptorSet WriteDescriptorSetInlineUniformBlockEXT = ()-  Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureNV = ()+  Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureKHR = ()   Extends a b = TypeError (ShowType a :<>: Text " is not extended by " :<>: ShowType b)  data SomeStruct (a :: [Type] -> Type) where@@ -1032,6 +1084,9 @@   STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ImportMemoryWin32HandleInfoNV   STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ExportMemoryWin32HandleInfoNV   STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV -> go @Win32KeyedMutexAcquireReleaseInfoNV+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+  STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV -> go @GraphicsPipelineShaderGroupsCreateInfoNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> go @(PhysicalDeviceFeatures2 '[])   STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR -> go @PhysicalDevicePushDescriptorPropertiesKHR   STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES -> go @PhysicalDeviceDriverProperties@@ -1170,7 +1225,9 @@   STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV -> go @PipelineViewportCoarseSampleOrderStateCreateInfoNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV -> go @PhysicalDeviceMeshShaderFeaturesNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV -> go @PhysicalDeviceMeshShaderPropertiesNV-  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV -> go @WriteDescriptorSetAccelerationStructureNV+  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR -> go @WriteDescriptorSetAccelerationStructureKHR+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR -> go @PhysicalDeviceRayTracingFeaturesKHR+  STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR -> go @PhysicalDeviceRayTracingPropertiesKHR   STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> go @PhysicalDeviceRayTracingPropertiesNV   STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT -> go @DrmFormatModifierPropertiesListEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT -> go @PhysicalDeviceImageDrmFormatModifierInfoEXT@@ -1214,7 +1271,7 @@   STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV -> go @PhysicalDeviceCoverageReductionModeFeaturesNV   STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV -> go @PipelineCoverageReductionStateCreateInfoNV   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL -> go @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-  STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL -> go @QueryPoolCreateInfoINTEL+  STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL -> go @QueryPoolPerformanceQueryCreateInfoINTEL   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR -> go @PhysicalDeviceShaderClockFeaturesKHR   STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT -> go @PhysicalDeviceIndexTypeUint8FeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV -> go @PhysicalDeviceShaderSMBuiltinsPropertiesNV@@ -1234,14 +1291,20 @@   STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT -> go @PhysicalDeviceLineRasterizationFeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT -> go @PhysicalDeviceLineRasterizationPropertiesEXT   STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationLineStateCreateInfoEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT -> go @PhysicalDevicePipelineCreationCacheControlFeaturesEXT   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES -> go @PhysicalDeviceVulkan11Features   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES -> go @PhysicalDeviceVulkan11Properties   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES -> go @PhysicalDeviceVulkan12Features   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES -> go @PhysicalDeviceVulkan12Properties   STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD -> go @PipelineCompilerControlCreateInfoAMD   STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD -> go @PhysicalDeviceCoherentMemoryFeaturesAMD+  STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR -> go @DeferredOperationInfoKHR   STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> go @RenderPassTransformBeginInfoQCOM   STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> go @CommandBufferInheritanceRenderPassTransformInfoQCOM+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV -> go @PhysicalDeviceDiagnosticsConfigFeaturesNV+  STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV -> go @DeviceDiagnosticsConfigCreateInfoNV+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT -> go @PhysicalDeviceRobustness2FeaturesEXT+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT -> go @PhysicalDeviceRobustness2PropertiesEXT   t -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("Unrecognized struct type: " <> show t) Nothing Nothing  where   go :: forall e . (Typeable e, FromCStruct e, ToCStruct e, Show e) => IO b@@ -1290,10 +1353,10 @@ -- @ -- myFun (Head{..} :&& Foo{..} :& ()) -- @-pattern (::&) :: Extensible a => a es -> Chain es -> a es+pattern (::&) :: Extensible a => a es' -> Chain es -> a es pattern a ::& es <- (\a -> (a, getNext a) -> (a, es))   where a ::& es = setNext a es-infixr 6 ::&+infix 6 ::&  -- | View the head and tail of a 'Chain', see '::&' --
src/Graphics/Vulkan/CStruct/Utils.hs view
@@ -1,17 +1,10 @@ {-# language CPP #-}-module Graphics.Vulkan.CStruct.Utils  ( withVec-                                      , withArray-                                      , withSizedArray-                                      , byteStringToSizedVector-                                      , byteStringToNullTerminatedSizedVector-                                      , padSized-                                      , padVector-                                      , packCStringElemOff-                                      , pokeFixedLengthByteString+module Graphics.Vulkan.CStruct.Utils  ( pokeFixedLengthByteString                                       , pokeFixedLengthNullTerminatedByteString                                       , peekByteStringFromSizedVectorPtr                                       , lowerArrayPtr                                       , advancePtrBytes+                                      , FixedArray                                       ) where  import Foreign.Marshal.Array (allocaArray)@@ -36,7 +29,6 @@ import qualified Data.Vector.Generic (replicate) import qualified Data.Vector.Generic (snoc) import qualified Data.Vector.Generic (take)-import qualified Data.Vector.Generic.Sized (fromSized) import Data.Proxy (Proxy(..)) import Foreign.C.Types (CChar(..)) import Foreign.Storable (Storable)@@ -45,107 +37,14 @@ import GHC.TypeNats (KnownNat) import Data.Word (Word8) import Data.ByteString (ByteString)+import GHC.TypeNats (Nat)+import Data.Kind (Type) import Data.Vector (Vector) import qualified Data.Vector.Generic (Vector)-import qualified Data.Vector.Generic.Sized.Internal (Vector)-import qualified Data.Vector.Generic.Sized.Internal (Vector(..))-import qualified Data.Vector.Sized (Vector)-import qualified Data.Vector.Storable.Sized (Vector) -packCStringElemOff :: Ptr (Ptr CChar) -> Int -> IO ByteString-packCStringElemOff p o = packCString =<< peekElemOff p o--withArray-  :: forall a b d-   . (a -> (b -> IO d) -> IO d)-  -> Vector a-  -> (Vector b -> IO d)-  -> IO d-withArray alloc v cont =-  let go :: a -> (Vector b -> IO d) -> (Vector b -> IO d)-      go x complete bs = alloc x (\b -> complete (Data.Vector.Generic.snoc bs b))-  in  foldr go cont v (Data.Vector.Generic.empty)--withSizedArray-  :: forall a b d n-   . (a -> (b -> IO d) -> IO d)-  -> Data.Vector.Sized.Vector n a-  -> (Data.Vector.Sized.Vector n b -> IO d)-  -> IO d-withSizedArray alloc v cont = withArray-  alloc-  (Data.Vector.Generic.Sized.fromSized v)-  (cont . Data.Vector.Generic.Sized.Internal.Vector)--withVec-  :: forall a b d-   . Storable b-  => (a -> (b -> IO d) -> IO d)-  -> Vector a-  -> (Ptr b -> IO d)-  -> IO d-withVec alloc v cont = allocaArray (Data.Vector.length v) $ \p ->-  let go :: Int -> a -> IO d -> IO d-      go index x complete = alloc x (\b -> pokeElemOff p index b *> complete)-  in  ifoldr go (cont p) v---- | Pad or truncate a vector so that it has the required size-padSized-  :: forall n a v-   . (KnownNat n, Data.Vector.Generic.Vector v a)-  => a-  -- ^ The value with which to pad if the given vector is too short-  -> v a-  -- ^ The vector to pad or truncate-  -> Data.Vector.Generic.Sized.Internal.Vector v n a-padSized p v = Data.Vector.Generic.Sized.Internal.Vector padded-  where-    padded :: v a-    padded = let n = fromIntegral (natVal (Proxy @n))-             in padVector p n v---- | Make sure a vector is at least a certain length-padVector-  :: (Data.Vector.Generic.Vector v a)-  => a-  -> Int-  -> v a-  -> v a-padVector p n v =-  let m = Data.Vector.Generic.length v-  in case m `compare` n of-       LT -> v Data.Vector.Generic.++ (Data.Vector.Generic.replicate (n - m) p)-       EQ -> v-       GT -> Data.Vector.Generic.take n v---- | Convert a bytestring to a null terminated sized vector. If the bytestring--- is too long it will be truncated.-byteStringToNullTerminatedSizedVector-  :: forall n v-   . (KnownNat n, 1 <= n, Data.Vector.Generic.Vector v CChar)-  => ByteString-  -> Data.Vector.Generic.Sized.Internal.Vector v n CChar-byteStringToNullTerminatedSizedVector bs = padSized-  (CChar 0)-  (byteStringToVector (Data.ByteString.take predN bs))-  where-    predN = pred (fromIntegral (natVal (Proxy @n)))-    byteStringToVector =-      Data.Vector.Generic.fromList . fmap fromIntegral . Data.ByteString.unpack---- | Convert a bytestring to a sized vector. If the bytestring is too--- long it will be truncated. If it is too short it will be zero padded-byteStringToSizedVector-  :: forall n v-   . (KnownNat n, Data.Vector.Generic.Vector v Word8)-  => ByteString-  -> Data.Vector.Generic.Sized.Internal.Vector v n Word8-byteStringToSizedVector bs = padSized-  0-  (byteStringToVector (Data.ByteString.take n bs))-  where-    n                  = fromIntegral (natVal (Proxy @n))-    byteStringToVector = Data.Vector.Generic.fromList . Data.ByteString.unpack+-- | An unpopulated type intended to be used as in @'Ptr' (FixedArray n a)@ to+-- indicate that the pointer points to an array of @n@ @a@s+data FixedArray (n :: Nat) (a :: Type)  -- | Store a 'ByteString' in a fixed amount of space inserting a null -- character at the end and truncating if necessary.@@ -158,7 +57,7 @@ pokeFixedLengthNullTerminatedByteString   :: forall n    . KnownNat n-  => Ptr (Data.Vector.Storable.Sized.Vector n CChar)+  => Ptr (FixedArray n CChar)   -> ByteString   -> IO () pokeFixedLengthNullTerminatedByteString to bs =@@ -179,7 +78,7 @@ pokeFixedLengthByteString   :: forall n    . KnownNat n-  => Ptr (Data.Vector.Storable.Sized.Vector n Word8)+  => Ptr (FixedArray n Word8)   -> ByteString   -> IO () pokeFixedLengthByteString to bs = unsafeUseAsCString bs $ \from -> do@@ -187,17 +86,18 @@       len       = min maxLength (Data.ByteString.length bs)   copyBytes (lowerArrayPtr to) (castPtr @CChar @Word8 from) len +-- | Peek a 'ByteString' from a fixed sized array of bytes peekByteStringFromSizedVectorPtr   :: forall n    . KnownNat n-  => Ptr (Data.Vector.Storable.Sized.Vector n Word8)+  => Ptr (FixedArray n Word8)   -> IO ByteString peekByteStringFromSizedVectorPtr p = packCStringLen (castPtr p, fromIntegral (natVal (Proxy @n)))  -- | Get the pointer to the first element in the array lowerArrayPtr   :: forall a n-   . Ptr (Data.Vector.Storable.Sized.Vector n a)+   . Ptr (FixedArray n a)   -> Ptr a lowerArrayPtr = castPtr 
src/Graphics/Vulkan/Core10/APIConstants.hs view
@@ -5,6 +5,7 @@                                             , MAX_DEVICE_GROUP_SIZE_KHR                                             , MAX_DRIVER_NAME_SIZE_KHR                                             , MAX_DRIVER_INFO_SIZE_KHR+                                            , SHADER_UNUSED_NV                                             , MAX_PHYSICAL_DEVICE_NAME_SIZE                                             , pattern MAX_PHYSICAL_DEVICE_NAME_SIZE                                             , UUID_SIZE@@ -41,8 +42,8 @@                                             , pattern MAX_DRIVER_NAME_SIZE                                             , MAX_DRIVER_INFO_SIZE                                             , pattern MAX_DRIVER_INFO_SIZE-                                            , SHADER_UNUSED_NV-                                            , pattern SHADER_UNUSED_NV+                                            , SHADER_UNUSED_KHR+                                            , pattern SHADER_UNUSED_KHR                                             , pattern NULL_HANDLE                                             , IsHandle                                             , Bool32(..)@@ -79,6 +80,10 @@ type MAX_DRIVER_INFO_SIZE_KHR = MAX_DRIVER_INFO_SIZE  +-- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"+type SHADER_UNUSED_NV = SHADER_UNUSED_KHR++ type MAX_PHYSICAL_DEVICE_NAME_SIZE = 256  -- No documentation found for TopLevel "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"@@ -205,11 +210,11 @@ pattern MAX_DRIVER_INFO_SIZE = 256  -type SHADER_UNUSED_NV = 0xffffffff+type SHADER_UNUSED_KHR = 0xffffffff --- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"-pattern SHADER_UNUSED_NV :: Word32-pattern SHADER_UNUSED_NV = 0xffffffff+-- No documentation found for TopLevel "VK_SHADER_UNUSED_KHR"+pattern SHADER_UNUSED_KHR :: Word32+pattern SHADER_UNUSED_KHR = 0xffffffff   -- | VK_NULL_HANDLE - Reserved non-valid object handle
src/Graphics/Vulkan/Core10/APIConstants.hs-boot view
@@ -4,6 +4,7 @@                                             , MAX_DEVICE_GROUP_SIZE                                             , MAX_DRIVER_NAME_SIZE                                             , MAX_DRIVER_INFO_SIZE+                                            , SHADER_UNUSED_KHR                                             ) where  @@ -21,4 +22,7 @@   type MAX_DRIVER_INFO_SIZE = 256+++type SHADER_UNUSED_KHR = 0xffffffff 
src/Graphics/Vulkan/Core10/AllocationCallbacks.hs view
@@ -45,6 +45,7 @@ -- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkInternalFreeNotification', -- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkReallocationFunction', -- 'Graphics.Vulkan.Core10.Memory.allocateMemory',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV', -- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.createAndroidSurfaceKHR', -- 'Graphics.Vulkan.Core10.Buffer.createBuffer',@@ -53,6 +54,7 @@ -- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorPool', -- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorSetLayout', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',@@ -69,14 +71,14 @@ -- 'Graphics.Vulkan.Core10.Image.createImage', -- 'Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.createImagePipeSurfaceFUCHSIA', -- 'Graphics.Vulkan.Core10.ImageView.createImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.createIndirectCommandsLayoutNV', -- 'Graphics.Vulkan.Core10.DeviceInitialization.createInstance', -- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.createMacOSSurfaceMVK', -- 'Graphics.Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createObjectTableNVX', -- 'Graphics.Vulkan.Core10.PipelineCache.createPipelineCache', -- 'Graphics.Vulkan.Core10.PipelineLayout.createPipelineLayout', -- 'Graphics.Vulkan.Core10.Query.createQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Graphics.Vulkan.Core10.Pass.createRenderPass', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',@@ -95,12 +97,14 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.createXcbSurfaceKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.createXlibSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.destroyAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV', -- 'Graphics.Vulkan.Core10.Buffer.destroyBuffer', -- 'Graphics.Vulkan.Core10.BufferView.destroyBufferView', -- 'Graphics.Vulkan.Core10.CommandPool.destroyCommandPool', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.destroyDebugReportCallbackEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.destroyDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorPool', -- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',@@ -111,9 +115,8 @@ -- 'Graphics.Vulkan.Core10.Pass.destroyFramebuffer', -- 'Graphics.Vulkan.Core10.Image.destroyImage', -- 'Graphics.Vulkan.Core10.ImageView.destroyImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.destroyIndirectCommandsLayoutNV', -- 'Graphics.Vulkan.Core10.DeviceInitialization.destroyInstance',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyObjectTableNVX', -- 'Graphics.Vulkan.Core10.Pipeline.destroyPipeline', -- 'Graphics.Vulkan.Core10.PipelineCache.destroyPipelineCache', -- 'Graphics.Vulkan.Core10.PipelineLayout.destroyPipelineLayout',
src/Graphics/Vulkan/Core10/BaseType.hs view
@@ -52,16 +52,19 @@ -- -- = See Also --+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryInstancesDataKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT', -- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo', -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV', -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.DeviceGeneratedCommandsFeaturesNVX', -- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD', -- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements', -- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL', -- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceValueDataINTEL',@@ -84,6 +87,8 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV', -- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',@@ -105,10 +110,13 @@ -- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT', -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR', -- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures', -- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',@@ -168,6 +176,7 @@ -- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD', -- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV', -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR', -- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD', -- 'Graphics.Vulkan.Core10.Fence.waitForFences'@@ -254,9 +263,12 @@ -- -- = See Also --+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR', -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferCopy',@@ -264,13 +276,14 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferImageCopy', -- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier', -- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX', -- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT', -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV', -- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV', -- 'Graphics.Vulkan.Core10.Memory.MappedMemoryRange', -- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo', -- 'Graphics.Vulkan.Core10.DeviceInitialization.MemoryHeap',@@ -279,12 +292,14 @@ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties', -- 'Graphics.Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT', -- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR', -- 'Graphics.Vulkan.Core10.Image.SubresourceLayout', -- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory',@@ -292,6 +307,7 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',@@ -308,6 +324,7 @@ -- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',@@ -321,6 +338,12 @@ -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT'+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX' type DeviceAddress = Word64 
src/Graphics/Vulkan/Core10/BaseType.hs-boot view
@@ -13,7 +13,13 @@ -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT'+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.BindVertexBufferIndirectCommandNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressConstKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.DeviceOrHostAddressKHR',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX' type DeviceAddress = Word64  @@ -21,9 +27,12 @@ -- -- = See Also --+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR', -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferCopy',@@ -31,13 +40,14 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferImageCopy', -- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier', -- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX', -- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT', -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV', -- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV', -- 'Graphics.Vulkan.Core10.Memory.MappedMemoryRange', -- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo', -- 'Graphics.Vulkan.Core10.DeviceInitialization.MemoryHeap',@@ -46,12 +56,14 @@ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties', -- 'Graphics.Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT', -- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR', -- 'Graphics.Vulkan.Core10.Image.SubresourceLayout', -- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory',@@ -59,6 +71,7 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',@@ -75,6 +88,7 @@ -- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
src/Graphics/Vulkan/Core10/Buffer.hs view
@@ -148,13 +148,17 @@   pBuffer <- lift $ peek @Buffer pPBuffer   pure $ (pBuffer) --- | A safe wrapper for 'createBuffer' and 'destroyBuffer' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createBuffer' and 'destroyBuffer' ----- The allocated value must not be returned from the provided computation-withBuffer :: forall a r . PokeChain a => Device -> BufferCreateInfo a -> Maybe AllocationCallbacks -> ((Buffer) -> IO r) -> IO r-withBuffer device pCreateInfo pAllocator =-  bracket-    (createBuffer device pCreateInfo pAllocator)+-- To ensure that 'destroyBuffer' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withBuffer :: forall a io r . (PokeChain a, MonadIO io) => (io (Buffer) -> ((Buffer) -> io ()) -> r) -> Device -> BufferCreateInfo a -> Maybe AllocationCallbacks -> r+withBuffer b device pCreateInfo pAllocator =+  b (createBuffer device pCreateInfo pAllocator)     (\(o0) -> destroyBuffer device o0 pAllocator)  
src/Graphics/Vulkan/Core10/BufferView.hs view
@@ -120,14 +120,17 @@   pView <- lift $ peek @BufferView pPView   pure $ (pView) --- | A safe wrapper for 'createBufferView' and 'destroyBufferView' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createBufferView' and 'destroyBufferView' ----- The allocated value must not be returned from the provided computation-withBufferView :: forall r . Device -> BufferViewCreateInfo -> Maybe AllocationCallbacks -> ((BufferView) -> IO r) -> IO r-withBufferView device pCreateInfo pAllocator =-  bracket-    (createBufferView device pCreateInfo pAllocator)+-- To ensure that 'destroyBufferView' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withBufferView :: forall io r . MonadIO io => (io (BufferView) -> ((BufferView) -> io ()) -> r) -> Device -> BufferViewCreateInfo -> Maybe AllocationCallbacks -> r+withBufferView b device pCreateInfo pAllocator =+  b (createBufferView device pCreateInfo pAllocator)     (\(o0) -> destroyBufferView device o0 pAllocator)  
src/Graphics/Vulkan/Core10/CommandBuffer.hs view
@@ -12,7 +12,6 @@                                              ) where  import Control.Exception.Base (bracket)-import Control.Exception.Base (bracket_) import Control.Monad.IO.Class (liftIO) import Data.Typeable (eqT) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -140,15 +139,15 @@ --     'CommandBufferAllocateInfo' structure -- -- -   @pCommandBuffers@ /must/ be a valid pointer to an array of---     @pAllocateInfo@::commandBufferCount+--     @pAllocateInfo->commandBufferCount@ --     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handles ----- -   The value referenced by @pAllocateInfo@::@commandBufferCount@ /must/+-- -   The value referenced by @pAllocateInfo->commandBufferCount@ /must/ --     be greater than @0@ -- -- == Host Synchronization ----- -   Host access to @pAllocateInfo@::commandPool /must/ be externally+-- -   Host access to @pAllocateInfo->commandPool@ /must/ be externally --     synchronized -- -- == Return Codes@@ -180,14 +179,17 @@     pure $ (\h -> CommandBuffer h cmds ) pCommandBuffersElem)   pure $ (pCommandBuffers) --- | A safe wrapper for 'allocateCommandBuffers' and 'freeCommandBuffers'--- using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'allocateCommandBuffers' and 'freeCommandBuffers' ----- The allocated value must not be returned from the provided computation-withCommandBuffers :: forall r . Device -> CommandBufferAllocateInfo -> ((Vector CommandBuffer) -> IO r) -> IO r-withCommandBuffers device pAllocateInfo =-  bracket-    (allocateCommandBuffers device pAllocateInfo)+-- To ensure that 'freeCommandBuffers' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withCommandBuffers :: forall io r . MonadIO io => (io (Vector CommandBuffer) -> ((Vector CommandBuffer) -> io ()) -> r) -> Device -> CommandBufferAllocateInfo -> r+withCommandBuffers b device pAllocateInfo =+  b (allocateCommandBuffers device pAllocateInfo)     (\(o0) -> freeCommandBuffers device (commandPool (pAllocateInfo :: CommandBufferAllocateInfo)) o0)  @@ -351,12 +353,18 @@   r <- lift $ vkBeginCommandBuffer' (commandBufferHandle (commandBuffer)) pBeginInfo   lift $ when (r < SUCCESS) (throwIO (VulkanException r)) --- | A safe wrapper for 'beginCommandBuffer' and 'endCommandBuffer' using--- 'bracket_'-useCommandBuffer :: forall a r . PokeChain a => CommandBuffer -> CommandBufferBeginInfo a -> IO r -> IO r-useCommandBuffer commandBuffer pBeginInfo =-  bracket_-    (beginCommandBuffer commandBuffer pBeginInfo)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'beginCommandBuffer' and 'endCommandBuffer'+--+-- To ensure that 'endCommandBuffer' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+useCommandBuffer :: forall a io r . (PokeChain a, MonadIO io) => (io () -> io () -> r) -> CommandBuffer -> CommandBufferBeginInfo a -> r+useCommandBuffer b commandBuffer pBeginInfo =+  b (beginCommandBuffer commandBuffer pBeginInfo)     (endCommandBuffer commandBuffer)  @@ -386,7 +394,7 @@ -- == Valid Usage -- -- -   @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> -- -- -   If @commandBuffer@ is a primary command buffer, there /must/ not be --     an active render pass instance@@ -396,7 +404,7 @@ --     during the recording of @commandBuffer@ /must/ have been made --     inactive ----- -   Conditional rendering must not be+-- -   Conditional rendering /must/ not be --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active> -- -- -   If @commandBuffer@ is a secondary command buffer, there /must/ not@@ -404,14 +412,14 @@ --     'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdBeginDebugUtilsLabelEXT' --     command recorded to @commandBuffer@ that has not previously been --     ended by a call to---     'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdEndDebugUtilsLabelEXT'.+--     'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdEndDebugUtilsLabelEXT' -- -- -   If @commandBuffer@ is a secondary command buffer, there /must/ not --     be an outstanding --     'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT' --     command recorded to @commandBuffer@ that has not previously been --     ended by a call to---     'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT'.+--     'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -57,7 +57,7 @@                                                      , ClearAttachment(..)                                                      ) where -import Control.Exception.Base (bracket_)+import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Data.Typeable (eqT)@@ -88,7 +88,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.NamedType ((:::))@@ -241,10 +240,10 @@ -- controls the behavior of all -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing drawing commands>. -- The pipeline bound to--- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_NV'+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR' -- controls the behavior of--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV'. No other--- commands are affected by the pipeline state.+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysKHR'. No+-- other commands are affected by the pipeline state. -- -- == Valid Usage --@@ -270,10 +269,12 @@ -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRate variable multisample rate> --     feature is not supported, @pipeline@ is a graphics pipeline, the---     current subpass has no attachments, and this is not the first call---     to this function with a graphics pipeline after transitioning to the---     current subpass, then the sample count specified by this pipeline---     /must/ match that set in the previous pipeline+--     current subpass+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments uses no attachments>,+--     and this is not the first call to this function with a graphics+--     pipeline after transitioning to the current subpass, then the sample+--     count specified by this pipeline /must/ match that set in the+--     previous pipeline -- -- -   If --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@@@ -297,14 +298,18 @@ --     active -- -- -   If @pipelineBindPoint@ is---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_NV',+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR', --     the 'Graphics.Vulkan.Core10.Handles.CommandPool' that --     @commandBuffer@ was allocated from /must/ support compute operations -- -- -   If @pipelineBindPoint@ is---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_NV',+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR', --     the @pipeline@ /must/ be a ray tracing pipeline --+-- -   The @pipeline@ /must/ not have been created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--     set+-- -- == Valid Usage (Implicit) -- -- -   @commandBuffer@ /must/ be a valid@@ -720,10 +725,9 @@ -- -- For fixed-point depth buffers, fragment depth values are always limited -- to the range [0,1] by clamping after depth bias addition is performed.--- Unless the--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@--- extension is enabled, fragment depth values are clamped even when the--- depth buffer uses a floating-point representation.+-- Unless the @VK_EXT_depth_range_unrestricted@ extension is enabled,+-- fragment depth values are clamped even when the depth buffer uses a+-- floating-point representation. -- -- == Valid Usage --@@ -776,7 +780,7 @@   unsafe #endif   "dynamic" mkVkCmdSetBlendConstants-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat) -> IO ()+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()  -- | vkCmdSetBlendConstants - Set the values of blend constants --@@ -826,7 +830,7 @@ cmdSetBlendConstants :: forall io . MonadIO io => CommandBuffer -> ("blendConstants" ::: (Float, Float, Float, Float)) -> io () cmdSetBlendConstants commandBuffer blendConstants = liftIO . evalContT $ do   let vkCmdSetBlendConstants' = mkVkCmdSetBlendConstants (pVkCmdSetBlendConstants (deviceCmds (commandBuffer :: CommandBuffer)))-  pBlendConstants <- ContT $ allocaBytesAligned @(Data.Vector.Storable.Sized.Vector 4 CFloat) 16 4+  pBlendConstants <- ContT $ allocaBytesAligned @(FixedArray 4 CFloat) 16 4   let pBlendConstants' = lowerArrayPtr pBlendConstants   lift $ case (blendConstants) of     (e0, e1, e2, e3) -> do@@ -860,15 +864,11 @@ -- -- == Valid Usage ----- -   Unless the---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@---     extension is enabled @minDepthBounds@ /must/ be between @0.0@ and---     @1.0@, inclusive+-- -   Unless the @VK_EXT_depth_range_unrestricted@ extension is enabled+--     @minDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive ----- -   Unless the---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@---     extension is enabled @maxDepthBounds@ /must/ be between @0.0@ and---     @1.0@, inclusive+-- -   Unless the @VK_EXT_depth_range_unrestricted@ extension is enabled+--     @maxDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive -- -- == Valid Usage (Implicit) --@@ -1362,7 +1362,7 @@ --     'Graphics.Vulkan.Core10.Handles.DeviceMemory' object -- -- -   @indexType@ /must/ not be---     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'.+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR' -- -- -   If @indexType@ is --     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', the@@ -1454,7 +1454,15 @@ -- the offset indicated by @pOffsets@[i] from the start of the buffer -- @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.+-- for subsequent draw commands. If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+-- feature is enabled, elements of @pBuffers@ /can/ be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by+-- the vertex shader. If a vertex input attribute is bound to a vertex+-- input binding that is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- the values taken from memory are considered to be zero, and missing G,+-- B, or A components are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>. -- -- == Valid Usage --@@ -1476,13 +1484,23 @@ --     completely and contiguously to a single --     'Graphics.Vulkan.Core10.Handles.DeviceMemory' object --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all elements of @pBuffers@ /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If an element of @pBuffers@ is+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then the+--     corresponding element of @pOffsets@ /must/ be zero+-- -- == Valid Usage (Implicit) -- -- -   @commandBuffer@ /must/ be a valid --     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle -- -- -   @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@---     valid 'Graphics.Vulkan.Core10.Handles.Buffer' handles+--     valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     'Graphics.Vulkan.Core10.Handles.Buffer' handles -- -- -   @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@ --     'Graphics.Vulkan.Core10.BaseType.DeviceSize' values@@ -1496,8 +1514,9 @@ -- -- -   @bindingCount@ /must/ be greater than @0@ ----- -   Both of @commandBuffer@, and the elements of @pBuffers@ /must/ have---     been created, allocated, or retrieved from the same+-- -   Both of @commandBuffer@, and the elements of @pBuffers@ that are+--     valid handles of non-ignored parameters /must/ have been created,+--     allocated, or retrieved from the same --     'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization@@ -1620,7 +1639,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -1721,25 +1740,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -1761,8 +1780,16 @@ -- -- -   All vertex input bindings accessed via vertex input variables --     declared in the vertex shader entry point’s interface /must/ have---     valid buffers bound+--     either valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     buffers bound --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   For a given vertex buffer binding, any attribute data fetched /must/ --     be entirely contained within the corresponding vertex buffer --     binding, as described in@@ -1911,7 +1938,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -2012,25 +2039,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -2052,8 +2079,16 @@ -- -- -   All vertex input bindings accessed via vertex input variables --     declared in the vertex shader entry point’s interface /must/ have---     valid buffers bound+--     either valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     buffers bound --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   For a given vertex buffer binding, any attribute data fetched /must/ --     be entirely contained within the corresponding vertex buffer --     binding, as described in@@ -2192,7 +2227,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -2293,25 +2328,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -2323,8 +2358,16 @@ -- -- -   All vertex input bindings accessed via vertex input variables --     declared in the vertex shader entry point’s interface /must/ have---     valid buffers bound+--     either valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     buffers bound --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   For a given vertex buffer binding, any attribute data fetched /must/ --     be entirely contained within the corresponding vertex buffer --     binding, as described in@@ -2505,7 +2548,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -2606,25 +2649,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -2636,8 +2679,16 @@ -- -- -   All vertex input bindings accessed via vertex input variables --     declared in the vertex shader entry point’s interface /must/ have---     valid buffers bound+--     either valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     buffers bound --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   For a given vertex buffer binding, any attribute data fetched /must/ --     be entirely contained within the corresponding vertex buffer --     binding, as described in@@ -2816,7 +2867,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -3049,7 +3100,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -3492,24 +3543,6 @@ -- -- == Valid Usage ----- -   The source region specified by each element of @pRegions@ /must/ be---     a region that is contained within @srcImage@ if the @srcImage@’s---     'Graphics.Vulkan.Core10.Enums.Format.Format' is not a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,---     and /must/ be a region that is contained within the plane being---     copied if the @srcImage@’s---     'Graphics.Vulkan.Core10.Enums.Format.Format' is a multi-planar---     format------ -   The destination region specified by each element of @pRegions@---     /must/ be a region that is contained within @dstImage@ if the---     @dstImage@’s 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,---     and /must/ be a region that is contained within the plane being---     copied to if the @dstImage@’s---     'Graphics.Vulkan.Core10.Enums.Format.Format' is a multi-planar---     format--- -- -   The union of all source regions, and the union of all destination --     regions, specified by the elements of @pRegions@, /must/ not overlap --     in memory@@ -3517,7 +3550,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT' -- -- -   @srcImage@ /must/ have been created with --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'@@ -3539,7 +3572,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @dstImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT' -- -- -   @dstImage@ /must/ have been created with --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'@@ -3573,19 +3606,6 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes> --     for the plane being copied ----- -   When a copy is performed to or from an image with a---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,---     the @aspectMask@ of the @srcSubresource@ and\/or @dstSubresource@---     that refers to the multi-planar image /must/ be---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',---     or---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'---     (with---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'---     valid only for a 'Graphics.Vulkan.Core10.Enums.Format.Format' with---     three planes)--- -- -   The sample count of @srcImage@ and @dstImage@ /must/ match -- -- -   If @commandBuffer@ is an unprotected command buffer, then @srcImage@@@ -3867,7 +3887,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT' -- -- -   @srcImage@ /must/ not use a format listed in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>@@ -3892,7 +3912,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @dstImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT' -- -- -   @dstImage@ /must/ not use a format listed in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>@@ -3914,10 +3934,6 @@ --     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' --     or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' ----- -   The sample count of @srcImage@ and @dstImage@ /must/ both be equal---     to---     'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'--- -- -   If either of @srcImage@ or @dstImage@ was created with a signed --     integer 'Graphics.Vulkan.Core10.Enums.Format.Format', the other --     /must/ also have been created with a signed integer@@ -3944,14 +3960,14 @@ --     then the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' -- -- -   If @filter@ is --     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', --     then the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain---     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'.+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' -- -- -   If @filter@ is --     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT',@@ -4142,7 +4158,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @dstImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT' -- -- -   If @srcBuffer@ is non-sparse then it /must/ be bound completely and --     contiguously to a single@@ -4336,7 +4352,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @srcImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT' -- -- -   @srcImage@ /must/ have been created with --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'@@ -4774,7 +4790,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @image@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT' -- -- -   @image@ /must/ have been created with --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'@@ -4950,27 +4966,27 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @image@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT' ----- -   If any element of @pRanges.aspect@ includes+-- -   If the @aspect@ member of any element of @pRanges@ includes --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', --     and @image@ was created with---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     <VkImageStencilUsageCreateInfo.html separate stencil usage>, --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' --     /must/ have been included in the --     'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@ --     used to create @image@ ----- -   If any element of @pRanges.aspect@ includes+-- -   If the @aspect@ member of any element of @pRanges@ includes --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT', --     and @image@ was not created with---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+--     <VkImageStencilUsageCreateInfo.html separate stencil usage>, --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' --     /must/ have been included in the --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to --     create @image@ ----- -   If any element of @pRanges.aspect@ includes+-- -   If the @aspect@ member of any element of @pRanges@ includes --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT', --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT' --     /must/ have been included in the@@ -5186,7 +5202,7 @@ --     then the @colorAttachment@ member of that element /must/ either --     refer to a color attachment which is --     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/---     be a valid color attachment.+--     be a valid color attachment -- -- -   If the @aspectMask@ member of any element of @pAttachments@ contains --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',@@ -5217,13 +5233,13 @@ --     @0@ -- -- -   If @commandBuffer@ is an unprotected command buffer, then each---     attachment to be cleared /must/ not be a protected image.+--     attachment to be cleared /must/ not be a protected image -- -- -   If @commandBuffer@ is a protected command buffer, then each---     attachment to be cleared /must/ not be an unprotected image.+--     attachment to be cleared /must/ not be an unprotected image -- -- -   If the render pass instance this is recorded in uses multiview, then---     @baseArrayLayer@ /must/ be zero and @layerCount@ /must/ be one.+--     @baseArrayLayer@ /must/ be zero and @layerCount@ /must/ be one -- -- == Valid Usage (Implicit) --@@ -5377,7 +5393,7 @@ -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     of @dstImage@ /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' -- -- -   @srcImage@ and @dstImage@ /must/ have been created with the same --     image format@@ -5545,7 +5561,7 @@ --     'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' -- -- -   @commandBuffer@’s current device mask /must/ include exactly one---     physical device.+--     physical device -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>@@ -5680,7 +5696,7 @@ --     'cmdWaitEvents' command that is currently executing -- -- -   @commandBuffer@’s current device mask /must/ include exactly one---     physical device.+--     physical device -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>@@ -5916,26 +5932,26 @@ --     that was used to create the --     'Graphics.Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ --     was allocated from, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages> -- -- -   Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or --     @pImageMemoryBarriers@ /must/ not have any access flag included in --     its @srcAccessMask@ member if that bit is not supported by any of --     the pipeline stages in @srcStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types> -- -- -   Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or --     @pImageMemoryBarriers@ /must/ not have any access flag included in --     its @dstAccessMask@ member if that bit is not supported by any of --     the pipeline stages in @dstStageMask@, as specified in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types> -- -- -   The @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any --     element of @pBufferMemoryBarriers@ or @pImageMemoryBarriers@ /must/---     be equal.+--     be equal -- -- -   @commandBuffer@’s current device mask /must/ include exactly one---     physical device.+--     physical device -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>@@ -6564,7 +6580,7 @@ --     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', --     this command /must/ not be recorded in a command buffer that, either --     directly or through secondary command buffers, also contains a---     'cmdResetQueryPool' command affecting the same query.+--     'cmdResetQueryPool' command affecting the same query -- -- == Valid Usage (Implicit) --@@ -6618,11 +6634,18 @@   vkCmdBeginQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags)   pure $ () --- | A safe wrapper for 'cmdBeginQuery' and 'cmdEndQuery' using 'bracket_'-cmdWithQuery :: forall r . CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> IO r -> IO r-cmdWithQuery commandBuffer queryPool query flags =-  bracket_-    (cmdBeginQuery commandBuffer queryPool query flags)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'cmdBeginQuery' and 'cmdEndQuery'+--+-- To ensure that 'cmdEndQuery' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+cmdWithQuery :: forall io r . MonadIO io => (io () -> io () -> r) -> CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> r+cmdWithQuery b commandBuffer queryPool query flags =+  b (cmdBeginQuery commandBuffer queryPool query flags)     (cmdEndQuery commandBuffer queryPool query)  @@ -7555,12 +7578,18 @@   lift $ vkCmdBeginRenderPass' (commandBufferHandle (commandBuffer)) pRenderPassBegin (contents)   pure $ () --- | A safe wrapper for 'cmdBeginRenderPass' and 'cmdEndRenderPass' using--- 'bracket_'-cmdWithRenderPass :: forall a r . PokeChain a => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> IO r -> IO r-cmdWithRenderPass commandBuffer pRenderPassBegin contents =-  bracket_-    (cmdBeginRenderPass commandBuffer pRenderPassBegin contents)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'cmdBeginRenderPass' and 'cmdEndRenderPass'+--+-- To ensure that 'cmdEndRenderPass' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+cmdWithRenderPass :: forall a io r . (PokeChain a, MonadIO io) => (io () -> io () -> r) -> CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> r+cmdWithRenderPass b commandBuffer pRenderPassBegin contents =+  b (cmdBeginRenderPass commandBuffer pRenderPassBegin contents)     (cmdEndRenderPass commandBuffer)  @@ -7832,7 +7861,8 @@ --     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of --     @pCommandBuffers@ /must/ have been recorded with --     'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'---     in the @pNext@ chain of VkCommandBufferBeginInfo+--     in the @pNext@ chain of+--     'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo' -- -- -   If 'cmdExecuteCommands' is being called within a render pass --     instance that included@@ -8031,15 +8061,11 @@ -- -   (@y@ + @height@) /must/ be less than or equal to --     @viewportBoundsRange@[1] ----- -   Unless---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@---     extension is enabled @minDepth@ /must/ be between @0.0@ and @1.0@,---     inclusive+-- -   Unless @VK_EXT_depth_range_unrestricted@ extension is enabled+--     @minDepth@ /must/ be between @0.0@ and @1.0@, inclusive ----- -   Unless---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@---     extension is enabled @maxDepth@ /must/ be between @0.0@ and @1.0@,---     inclusive+-- -   Unless @VK_EXT_depth_range_unrestricted@ extension is enabled+--     @maxDepth@ /must/ be between @0.0@ and @1.0@, inclusive -- -- = See Also --@@ -8381,7 +8407,7 @@ -- -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--     @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@ -- -- -   @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be --     greater than or equal to @0@ and less than or equal to the source@@ -8389,37 +8415,37 @@ -- -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--     @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@ -- -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--     @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@ -- -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then---     @srcOffset.z@ /must/ be @0@.+--     @srcOffset.z@ /must/ be @0@ -- -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then---     @dstOffset.z@ /must/ be @0@.+--     @dstOffset.z@ /must/ be @0@ -- -- -   If both @srcImage@ and @dstImage@ are of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' then---     @extent.depth@ /must/ be @1@.+--     @extent.depth@ /must/ be @1@ -- -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and the --     @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then --     @extent.depth@ /must/ equal to the @layerCount@ member of---     @srcSubresource@.+--     @srcSubresource@ -- -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and the --     @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then --     @extent.depth@ /must/ equal to the @layerCount@ member of---     @dstSubresource@.+--     @dstSubresource@ -- -- -   @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be --     greater than or equal to @0@ and less than or equal to the@@ -8431,7 +8457,7 @@ -- -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--     @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@ -- -- -   @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be --     greater than or equal to @0@ and less than or equal to the@@ -8587,7 +8613,7 @@ -- -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y /must/ be @1@.+--     @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y /must/ be @1@ -- -- -   @srcOffset@[0].z and @srcOffset@[1].z /must/ both be greater than or --     equal to @0@ and less than or equal to the source image subresource@@ -8596,7 +8622,7 @@ -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then---     @srcOffset@[0].z /must/ be @0@ and @srcOffset@[1].z /must/ be @1@.+--     @srcOffset@[0].z /must/ be @0@ and @srcOffset@[1].z /must/ be @1@ -- -- -   @dstOffset@[0].x and @dstOffset@[1].x /must/ both be greater than or --     equal to @0@ and less than or equal to the destination image@@ -8608,7 +8634,7 @@ -- -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y /must/ be @1@.+--     @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y /must/ be @1@ -- -- -   @dstOffset@[0].z and @dstOffset@[1].z /must/ both be greater than or --     equal to @0@ and less than or equal to the destination image@@ -8617,7 +8643,7 @@ -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then---     @dstOffset@[0].z /must/ be @0@ and @dstOffset@[1].z /must/ be @1@.+--     @dstOffset@[0].z /must/ be @0@ and @dstOffset@[1].z /must/ be @1@ -- -- == Valid Usage (Implicit) --@@ -8654,13 +8680,13 @@   withCStruct x f = allocaBytesAligned 80 4 $ \p -> pokeCStruct p x (f p)   pokeCStruct p ImageBlit{..} f = evalContT $ do     ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())-    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))     case (srcOffsets) of       (e0, e1) -> do         ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())         ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())     ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())-    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))     case (dstOffsets) of       (e0, e1) -> do         ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())@@ -8670,13 +8696,13 @@   cStructAlignment = 4   pokeZeroCStruct p f = evalContT $ do     ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))     case ((zero, zero)) of       (e0, e1) -> do         ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())         ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())     ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())-    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))     case ((zero, zero)) of       (e0, e1) -> do         ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())@@ -8686,11 +8712,11 @@ instance FromCStruct ImageBlit where   peekCStruct p = do     srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))-    let psrcOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+    let psrcOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))     srcOffsets0 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 0 :: Ptr Offset3D))     srcOffsets1 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 12 :: Ptr Offset3D))     dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers))-    let pdstOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+    let pdstOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))     dstOffsets0 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 0 :: Ptr Offset3D))     dstOffsets1 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 12 :: Ptr Offset3D))     pure $ ImageBlit@@ -8749,9 +8775,9 @@ -- queues that do not support graphics. -- -- When copying to a depth aspect, and the--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@--- extension is not enabled, the data in buffer memory /must/ be in the--- range [0,1], or the resulting values are undefined.+-- @VK_EXT_depth_range_unrestricted@ extension is not enabled, the data in+-- buffer memory /must/ be in the range [0,1], or the resulting values are+-- undefined. -- -- Copies are done layer by layer starting with image layer -- @baseArrayLayer@ member of @imageSubresource@. @layerCount@ layers are@@ -8763,7 +8789,7 @@ --     parameter’s format is not a depth\/stencil format or a --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>, --     then @bufferOffset@ /must/ be a multiple of the format’s texel block---     size.+--     size -- -- -   If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image' --     parameter’s format is a@@ -8796,8 +8822,7 @@ -- -   If the calling command’s @srcImage@ ('cmdCopyImageToBuffer') or --     @dstImage@ ('cmdCopyBufferToImage') is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @imageOffset.y@ /must/ be @0@ and @imageExtent.height@ /must/ be---     @1@.+--     @imageOffset.y@ /must/ be @0@ and @imageExtent.height@ /must/ be @1@ -- -- -   @imageOffset.z@ and (imageExtent.depth + @imageOffset.z@) /must/ --     both be greater than or equal to @0@ and less than or equal to the@@ -8981,7 +9006,7 @@ -- -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--     @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@ -- -- -   @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be --     greater than or equal to @0@ and less than or equal to the source@@ -8990,7 +9015,7 @@ -- -   If the calling command’s @srcImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then---     @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--     @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@ -- -- -   @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be --     greater than or equal to @0@ and less than or equal to the@@ -9002,7 +9027,7 @@ -- -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then---     @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--     @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@ -- -- -   @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be --     greater than or equal to @0@ and less than or equal to the@@ -9011,7 +9036,7 @@ -- -   If the calling command’s @dstImage@ is of type --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then---     @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--     @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@ -- -- == Valid Usage (Implicit) --@@ -9103,8 +9128,8 @@ -- -- If -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>--- is enabled, then @renderArea@ must equal the framebuffer pre-transformed--- dimensions. After @renderArea@ has been transformed by+-- is enabled, then @renderArea@ /must/ equal the framebuffer+-- pre-transformed dimensions. After @renderArea@ has been transformed by -- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@, -- the resulting render area /must/ be equal to the framebuffer dimensions. --@@ -9332,13 +9357,13 @@ -- -- -   If the @pNext@ chain includes --     'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',---     @renderArea@::@offset@ /must/ equal (0,0).+--     @renderArea@::@offset@ /must/ equal (0,0) -- -- -   If the @pNext@ chain includes --     'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM', --     @renderArea@::@extent@ transformed by --     'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@---     /must/ equal the @framebuffer@ dimensions.+--     /must/ equal the @framebuffer@ dimensions -- -- == Valid Usage (Implicit) --@@ -9486,7 +9511,7 @@ --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT' -- -- -   @aspectMask@ /must/ not include---     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@.+--     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@ -- -- -   @clearValue@ /must/ be a valid --     'Graphics.Vulkan.Core10.SharedTypes.ClearValue' union
src/Graphics/Vulkan/Core10/CommandPool.hs view
@@ -79,7 +79,7 @@ -- == Valid Usage -- -- -   @pCreateInfo->queueFamilyIndex@ /must/ be the index of a queue---     family available in the logical device @device@.+--     family available in the logical device @device@ -- -- == Valid Usage (Implicit) --@@ -127,14 +127,17 @@   pCommandPool <- lift $ peek @CommandPool pPCommandPool   pure $ (pCommandPool) --- | A safe wrapper for 'createCommandPool' and 'destroyCommandPool' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createCommandPool' and 'destroyCommandPool' ----- The allocated value must not be returned from the provided computation-withCommandPool :: forall r . Device -> CommandPoolCreateInfo -> Maybe AllocationCallbacks -> ((CommandPool) -> IO r) -> IO r-withCommandPool device pCreateInfo pAllocator =-  bracket-    (createCommandPool device pCreateInfo pAllocator)+-- To ensure that 'destroyCommandPool' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withCommandPool :: forall io r . MonadIO io => (io (CommandPool) -> ((CommandPool) -> io ()) -> r) -> Device -> CommandPoolCreateInfo -> Maybe AllocationCallbacks -> r+withCommandPool b device pCreateInfo pAllocator =+  b (createCommandPool device pCreateInfo pAllocator)     (\(o0) -> destroyCommandPool device o0 pAllocator)  @@ -160,8 +163,7 @@ -- = Description -- -- When a pool is destroyed, all command buffers allocated from the pool--- are--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkFreeCommandBuffers freed>.+-- are <vkFreeCommandBuffers.html freed>. -- -- Any primary command buffer allocated from another -- 'Graphics.Vulkan.Core10.Handles.CommandPool' that is in the@@ -174,7 +176,7 @@ -- -- -   All 'Graphics.Vulkan.Core10.Handles.CommandBuffer' objects allocated --     from @commandPool@ /must/ not be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state> -- -- -   If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' --     were provided when @commandPool@ was created, a compatible set of@@ -312,7 +314,7 @@ -- -- -   If the protected memory feature is not enabled, the --     'Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits.COMMAND_POOL_CREATE_PROTECTED_BIT'---     bit of @flags@ /must/ not be set.+--     bit of @flags@ /must/ not be set -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core10/DescriptorSet.hs view
@@ -105,7 +105,7 @@ import Graphics.Vulkan.CStruct (ToCStruct) import Graphics.Vulkan.CStruct (ToCStruct(..)) import Graphics.Vulkan.Exception (VulkanException(..))-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT) import Graphics.Vulkan.Zero (Zero(..)) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_DESCRIPTOR_SET))@@ -185,14 +185,17 @@   pSetLayout <- lift $ peek @DescriptorSetLayout pPSetLayout   pure $ (pSetLayout) --- | A safe wrapper for 'createDescriptorSetLayout' and--- 'destroyDescriptorSetLayout' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createDescriptorSetLayout' and 'destroyDescriptorSetLayout' ----- The allocated value must not be returned from the provided computation-withDescriptorSetLayout :: forall a r . PokeChain a => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> ((DescriptorSetLayout) -> IO r) -> IO r-withDescriptorSetLayout device pCreateInfo pAllocator =-  bracket-    (createDescriptorSetLayout device pCreateInfo pAllocator)+-- To ensure that 'destroyDescriptorSetLayout' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDescriptorSetLayout :: forall a io r . (PokeChain a, MonadIO io) => (io (DescriptorSetLayout) -> ((DescriptorSetLayout) -> io ()) -> r) -> Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> r+withDescriptorSetLayout b device pCreateInfo pAllocator =+  b (createDescriptorSetLayout device pCreateInfo pAllocator)     (\(o0) -> destroyDescriptorSetLayout device o0 pAllocator)  @@ -345,14 +348,17 @@   pDescriptorPool <- lift $ peek @DescriptorPool pPDescriptorPool   pure $ (pDescriptorPool) --- | A safe wrapper for 'createDescriptorPool' and 'destroyDescriptorPool'--- using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createDescriptorPool' and 'destroyDescriptorPool' ----- The allocated value must not be returned from the provided computation-withDescriptorPool :: forall a r . PokeChain a => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> ((DescriptorPool) -> IO r) -> IO r-withDescriptorPool device pCreateInfo pAllocator =-  bracket-    (createDescriptorPool device pCreateInfo pAllocator)+-- To ensure that 'destroyDescriptorPool' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDescriptorPool :: forall a io r . (PokeChain a, MonadIO io) => (io (DescriptorPool) -> ((DescriptorPool) -> io ()) -> r) -> Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> r+withDescriptorPool b device pCreateInfo pAllocator =+  b (createDescriptorPool device pCreateInfo pAllocator)     (\(o0) -> destroyDescriptorPool device o0 pAllocator)  @@ -589,15 +595,15 @@ --     'DescriptorSetAllocateInfo' structure -- -- -   @pDescriptorSets@ /must/ be a valid pointer to an array of---     @pAllocateInfo@::descriptorSetCount+--     @pAllocateInfo->descriptorSetCount@ --     'Graphics.Vulkan.Core10.Handles.DescriptorSet' handles ----- -   The value referenced by @pAllocateInfo@::@descriptorSetCount@ /must/+-- -   The value referenced by @pAllocateInfo->descriptorSetCount@ /must/ --     be greater than @0@ -- -- == Host Synchronization ----- -   Host access to @pAllocateInfo@::descriptorPool /must/ be externally+-- -   Host access to @pAllocateInfo->descriptorPool@ /must/ be externally --     synchronized -- -- == Return Codes@@ -630,14 +636,17 @@   pDescriptorSets <- lift $ generateM (fromIntegral . Data.Vector.length . setLayouts $ (allocateInfo)) (\i -> peek @DescriptorSet ((pPDescriptorSets `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSet)))   pure $ (pDescriptorSets) --- | A safe wrapper for 'allocateDescriptorSets' and 'freeDescriptorSets'--- using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'allocateDescriptorSets' and 'freeDescriptorSets' ----- The allocated value must not be returned from the provided computation-withDescriptorSets :: forall a r . PokeChain a => Device -> DescriptorSetAllocateInfo a -> DescriptorPool -> ((Vector DescriptorSet) -> IO r) -> IO r-withDescriptorSets device pAllocateInfo descriptorPool =-  bracket-    (allocateDescriptorSets device pAllocateInfo)+-- To ensure that 'freeDescriptorSets' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDescriptorSets :: forall a io r . (PokeChain a, MonadIO io) => (io (Vector DescriptorSet) -> ((Vector DescriptorSet) -> io ()) -> r) -> Device -> DescriptorSetAllocateInfo a -> DescriptorPool -> r+withDescriptorSets b device pAllocateInfo descriptorPool =+  b (allocateDescriptorSets device pAllocateInfo)     (\(o0) -> freeDescriptorSets device descriptorPool o0)  @@ -788,7 +797,7 @@ --     'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' --     bits set /must/ not be used by any command that was recorded to a --     command buffer which is in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state> -- -- == Valid Usage (Implicit) --@@ -863,17 +872,28 @@ --     'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @range@ /must/ be --     less than or equal to the size of @buffer@ minus @offset@ --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, @buffer@ /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @buffer@ is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @offset@ /must/ be zero and @range@ /must/ be+--     'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE'+-- -- == Valid Usage (Implicit) ----- -   @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'---     handle+-- -   If @buffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @buffer@ /must/+--     be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle -- -- = See Also -- -- 'Graphics.Vulkan.Core10.Handles.Buffer', -- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'WriteDescriptorSet' data DescriptorBufferInfo = DescriptorBufferInfo-  { -- | @buffer@ is the buffer resource.+  { -- | @buffer@ is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or the+    -- buffer resource.     buffer :: Buffer   , -- | @offset@ is the offset in bytes from the start of @buffer@. Access to     -- buffer memory via this descriptor uses addressing that is relative to@@ -897,7 +917,6 @@   cStructSize = 24   cStructAlignment = 8   pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr Buffer)) (zero)     poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)     poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)     f@@ -940,7 +959,7 @@ --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' --     or --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'---     but not both.+--     but not both -- -- -   @imageLayout@ /must/ match the actual --     'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' of each@@ -978,8 +997,8 @@     -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'     -- if the binding being updated does not use immutable samplers.     sampler :: Sampler-  , -- | @imageView@ is an image view handle, and is used in descriptor updates-    -- for types+  , -- | @imageView@ is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or an+    -- image view handle, and is used in descriptor updates for types     -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',     -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',     -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',@@ -1050,13 +1069,20 @@ -- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT' -- structure included in the @pNext@ chain of 'WriteDescriptorSet', or if -- @descriptorType@ is--- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR', -- in which case the source data for the descriptor writes is taken from -- the--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR' -- structure in the @pNext@ chain of 'WriteDescriptorSet', as specified -- below. --+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+-- feature is enabled, the buffer, imageView, or bufferView /can/ be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'. Loads from a null+-- descriptor return zero values and stores and atomics to a null+-- descriptor are discarded.+-- -- If the @dstBinding@ has fewer than @descriptorCount@ array elements -- remaining starting from @dstArrayElement@, then the remainder will be -- used to update the subsequent binding - @dstBinding@+1 starting at array@@ -1086,12 +1112,12 @@ -- -- -   All consecutive bindings updated via a single 'WriteDescriptorSet' --     structure, except those with a @descriptorCount@ of zero, /must/---     have identical @descriptorType@ and @stageFlags@.+--     have identical @descriptorType@ and @stageFlags@ -- -- -   All consecutive bindings updated via a single 'WriteDescriptorSet' --     structure, except those with a @descriptorCount@ of zero, /must/ all --     either use immutable samplers or /must/ all not use immutable---     samplers.+--     samplers -- -- -   @descriptorType@ /must/ match the type of @dstBinding@ within --     @dstSet@@@ -1127,11 +1153,20 @@ --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER' --     or --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',---     @pTexelBufferView@ /must/ be a valid pointer to an array of---     @descriptorCount@ valid 'Graphics.Vulkan.Core10.Handles.BufferView'---     handles+--     each element of @pTexelBufferView@ /must/ be either a valid+--     'Graphics.Vulkan.Core10.Handles.BufferView' handle or+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   If @descriptorType@ is+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+--     or+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, each element of @pTexelBufferView@ /must/+--     not be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @descriptorType@ is --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER', --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER', --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',@@ -1155,21 +1190,32 @@ --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE', --     or --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',---     the @imageView@ and @imageLayout@ members of each element of---     @pImageInfo@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.ImageView' and---     'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout', respectively+--     the @imageView@ member of each element of @pImageInfo@ /must/ be+--     either a valid 'Graphics.Vulkan.Core10.Handles.ImageView' handle or+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   If @descriptorType@ is+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+--     or+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+--     and the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, the @imageView@ member of each element of+--     @pImageInfo@ /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @descriptorType@ is --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT', --     the @pNext@ chain /must/ include a --     'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT' --     structure whose @dataSize@ member equals @descriptorCount@ -- -- -   If @descriptorType@ is---     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR', --     the @pNext@ chain /must/ include a---     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR' --     structure whose @accelerationStructureCount@ member equals --     @descriptorCount@ --@@ -1335,7 +1381,7 @@ -- -   All consecutive bindings updated via a single 'WriteDescriptorSet' --     structure, except those with a @descriptorCount@ of zero, /must/ --     have identical---     'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits'.+--     'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits' -- -- -   If @descriptorType@ is --     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',@@ -1350,7 +1396,7 @@ -- -   Each @pNext@ member of any structure (including this one) in the --     @pNext@ chain /must/ be either @NULL@ or a pointer to a valid --     instance of---     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR' --     or --     'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT' --@@ -1418,7 +1464,7 @@   getNext WriteDescriptorSet{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends WriteDescriptorSet e => b) -> Maybe b   extends _ f-    | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureNV = Just f+    | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureKHR = Just f     | Just Refl <- eqT @e @WriteDescriptorSetInlineUniformBlockEXT = Just f     | otherwise = Nothing @@ -1860,7 +1906,7 @@ -- == Valid Usage -- -- -   The 'DescriptorSetLayoutBinding'::@binding@ members of the elements---     of the @pBindings@ array /must/ each have different values.+--     of the @pBindings@ array /must/ each have different values -- -- -   If @flags@ contains --     'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
src/Graphics/Vulkan/Core10/Device.hs view
@@ -53,6 +53,7 @@ import Graphics.Vulkan.Core10.Handles (Device(Device)) import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyDevice)) import Graphics.Vulkan.Core10.Enums.DeviceCreateFlags (DeviceCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config (DeviceDiagnosticsConfigCreateInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior (DeviceMemoryOverallocationCreateInfoAMD) import Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)@@ -82,6 +83,8 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV) import Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)@@ -97,9 +100,12 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeaturesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR) import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingFeaturesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)@@ -199,7 +205,7 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required extensions> --     for each extension in the --     'DeviceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be---     present in that list.+--     present in that list -- -- == Valid Usage (Implicit) --@@ -259,13 +265,17 @@   pDevice' <- lift $ (\h -> Device h <$> initDeviceCmds cmds h) pDevice   pure $ (pDevice') --- | A safe wrapper for 'createDevice' and 'destroyDevice' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createDevice' and 'destroyDevice' ----- The allocated value must not be returned from the provided computation-withDevice :: forall a r . PokeChain a => PhysicalDevice -> DeviceCreateInfo a -> Maybe AllocationCallbacks -> ((Device) -> IO r) -> IO r-withDevice physicalDevice pCreateInfo pAllocator =-  bracket-    (createDevice physicalDevice pCreateInfo pAllocator)+-- To ensure that 'destroyDevice' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDevice :: forall a io r . (PokeChain a, MonadIO io) => (io (Device) -> ((Device) -> io ()) -> r) -> PhysicalDevice -> DeviceCreateInfo a -> Maybe AllocationCallbacks -> r+withDevice b physicalDevice pCreateInfo pAllocator =+  b (createDevice physicalDevice pCreateInfo pAllocator)     (\(o0) -> destroyDevice o0 pAllocator)  @@ -367,7 +377,7 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-protectedMemory protected memory> --     feature is not enabled, the --     'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'---     bit of @flags@ /must/ not be set.+--     bit of @flags@ /must/ not be set -- -- == Valid Usage (Implicit) --@@ -486,12 +496,10 @@ --     structure, then @pEnabledFeatures@ /must/ be @NULL@ -- -- -   @ppEnabledExtensionNames@ /must/ not contain---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_negative_viewport_height@+--     @VK_AMD_negative_viewport_height@ -- -- -   @ppEnabledExtensionNames@ /must/ not contain both---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_buffer_device_address@---     and---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_buffer_device_address@+--     @VK_KHR_buffer_device_address@ and @VK_EXT_buffer_device_address@ -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Features' structure,@@ -569,6 +577,7 @@ -- -   Each @pNext@ member of any structure (including this one) in the --     @pNext@ chain /must/ be either @NULL@ or a pointer to a valid --     instance of+--     'Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigCreateInfoNV', --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo', --     'Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD', --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',@@ -586,6 +595,8 @@ --     'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV', --     'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT', --     'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',+--     'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',+--     'Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV', --     'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV', --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', --     'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',@@ -600,9 +611,12 @@ --     'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV', --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures', --     'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',+--     'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT', --     'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR', --     'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR', --     'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+--     'Graphics.Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT', --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures', --     'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures', --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',@@ -697,9 +711,13 @@   getNext DeviceCreateInfo{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesEXT = Just f+    | Just Refl <- eqT @e @DeviceDiagnosticsConfigCreateInfoNV = Just f+    | Just Refl <- eqT @e @PhysicalDeviceDiagnosticsConfigFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f     | Just Refl <- eqT @e @PhysicalDeviceVulkan12Features = Just f     | Just Refl <- eqT @e @PhysicalDeviceVulkan11Features = Just f+    | Just Refl <- eqT @e @PhysicalDevicePipelineCreationCacheControlFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f@@ -725,6 +743,7 @@     | Just Refl <- eqT @e @PhysicalDeviceScalarBlockLayoutFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f     | Just Refl <- eqT @e @DeviceMemoryOverallocationCreateInfoAMD = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingFeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f@@ -756,6 +775,7 @@     | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceVariablePointersFeatures = Just f     | Just Refl <- eqT @e @(PhysicalDeviceFeatures2 '[]) = Just f+    | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = Just f     | otherwise = Nothing  instance PokeChain es => ToCStruct (DeviceCreateInfo es) where
src/Graphics/Vulkan/Core10/DeviceInitialization.hs view
@@ -25,6 +25,7 @@                                                     , PhysicalDeviceLimits(..)                                                     ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -72,7 +73,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -197,7 +197,7 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required extensions> --     for each extension in the --     'InstanceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be---     present in that list.+--     present in that list -- -- == Valid Usage (Implicit) --@@ -250,14 +250,17 @@   pInstance' <- lift $ (\h -> Instance h <$> initInstanceCmds h) pInstance   pure $ (pInstance') --- | A safe wrapper for 'createInstance' and 'destroyInstance' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createInstance' and 'destroyInstance' ----- The allocated value must not be returned from the provided computation-withInstance :: forall a r . PokeChain a => InstanceCreateInfo a -> Maybe AllocationCallbacks -> ((Instance) -> IO r) -> IO r-withInstance pCreateInfo pAllocator =-  bracket-    (createInstance pCreateInfo pAllocator)+-- To ensure that 'destroyInstance' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withInstance :: forall a io r . (PokeChain a, MonadIO io) => (io (Instance) -> ((Instance) -> io ()) -> r) -> InstanceCreateInfo a -> Maybe AllocationCallbacks -> r+withInstance b pCreateInfo pAllocator =+  b (createInstance pCreateInfo pAllocator)     (\(o0) -> destroyInstance o0 pAllocator)  @@ -306,6 +309,9 @@ -- -- -   Host access to @instance@ /must/ be externally synchronized --+-- -   Host access to all 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+--     objects enumerated from @instance@ /must/ be externally synchronized+-- -- = See Also -- -- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',@@ -425,10 +431,10 @@ -- = Description -- -- The returned function pointer is of type--- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and must be--- cast to the type of the command being queried. The function pointer--- /must/ only be called with a dispatchable object (the first parameter)--- that is @device@ or a child of @device@.+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and /must/ be+-- cast to the type of the command being queried before use. The function+-- pointer /must/ only be called with a dispatchable object (the first+-- parameter) that is @device@ or a child of @device@. -- -- +----------------------+----------------------+-----------------------+ -- | @device@             | @pName@              | return value          |@@ -450,7 +456,7 @@ -- | covered above        |                      |                       | -- +----------------------+----------------------+-----------------------+ ----- vkGetDeviceProcAddr behavior+-- 'getDeviceProcAddr' behavior -- -- [1] --     \"*\" means any representable value for the parameter (including@@ -506,8 +512,8 @@ -- and expected return value (“fp” is “function pointer”) for each case. -- -- The returned function pointer is of type--- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and must be--- cast to the type of the command being queried.+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and /must/ be+-- cast to the type of the command being queried before use. -- -- +----------------------+----------------------------------------------------------------------------------+-----------------------+ -- | @instance@           | @pName@                                                                          | return value          |@@ -535,7 +541,7 @@ -- | covered above        |                                                                                  |                       | -- +----------------------+----------------------------------------------------------------------------------+-----------------------+ ----- vkGetInstanceProcAddr behavior+-- 'getInstanceProcAddr' behavior -- -- [1] --     \"*\" means any representable value for the parameter (including@@ -995,8 +1001,8 @@     lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)     lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)     lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (deviceType)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (deviceName)-    lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (pipelineCacheUUID)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (deviceName)+    lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (pipelineCacheUUID)     ContT $ pokeCStruct ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (limits) . ($ ())     ContT $ pokeCStruct ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (sparseProperties) . ($ ())     lift $ f@@ -1008,8 +1014,8 @@     lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (zero)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (mempty)-    lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (mempty)+    lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)     ContT $ pokeCStruct ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (zero) . ($ ())     ContT $ pokeCStruct ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (zero) . ($ ())     lift $ f@@ -1021,8 +1027,8 @@     vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))     deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))     deviceType <- peek @PhysicalDeviceType ((p `plusPtr` 16 :: Ptr PhysicalDeviceType))-    deviceName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))))-    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+    deviceName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))))+    pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 276 :: Ptr (FixedArray UUID_SIZE Word8)))     limits <- peekCStruct @PhysicalDeviceLimits ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits))     sparseProperties <- peekCStruct @PhysicalDeviceSparseProperties ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties))     pure $ PhysicalDeviceProperties@@ -1248,7 +1254,10 @@     applicationInfo :: Maybe ApplicationInfo   , -- | @ppEnabledLayerNames@ is a pointer to an array of @enabledLayerCount@     -- null-terminated UTF-8 strings containing the names of layers to enable-    -- for the created instance. See the+    -- for the created instance. The layers are loaded in the order they are+    -- listed in this array, with the first array element being the closest to+    -- the application, and the last array element being the closest to the+    -- driver. See the     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers>     -- section for further details.     enabledLayerNames :: Vector ByteString@@ -1654,19 +1663,19 @@ -- For each pair of elements __X__ and __Y__ returned in @memoryTypes@, -- __X__ /must/ be placed at a lower index position than __Y__ if: ----- -   either the set of bit flags returned in the @propertyFlags@ member---     of __X__ is a strict subset of the set of bit flags returned in the+-- -   the set of bit flags returned in the @propertyFlags@ member of __X__+--     is a strict subset of the set of bit flags returned in the --     @propertyFlags@ member of __Y__; or -- -- -   the @propertyFlags@ members of __X__ and __Y__ are equal, and __X__ --     belongs to a memory heap with greater performance (as determined in --     an implementation-specific manner) ; or ----- -   or the @propertyFlags@ members of __X__ includes+-- -   the @propertyFlags@ members of __Y__ includes --     'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD' --     or --     'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'---     and __Y__ does not+--     and __X__ does not -- -- Note --@@ -1759,11 +1768,11 @@     lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (memoryTypeCount)     lift $ unless ((Data.Vector.length $ (memoryTypes)) <= MAX_MEMORY_TYPES) $       throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (memoryTypes)+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (memoryTypes)     lift $ poke ((p `plusPtr` 260 :: Ptr Word32)) (memoryHeapCount)     lift $ unless ((Data.Vector.length $ (memoryHeaps)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (memoryHeaps)+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (memoryHeaps)     lift $ f   cStructSize = 520   cStructAlignment = 8@@ -1771,19 +1780,19 @@     lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)     lift $ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_TYPES) $       throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (mempty)+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (mempty)     lift $ poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)     lift $ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (mempty)+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (mempty)     lift $ f  instance FromCStruct PhysicalDeviceMemoryProperties where   peekCStruct p = do     memoryTypeCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))-    memoryTypes <- generateM (MAX_MEMORY_TYPES) (\i -> peekCStruct @MemoryType (((lowerArrayPtr @MemoryType ((p `plusPtr` 4 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_TYPES MemoryType)))) `advancePtrBytes` (8 * (i)) :: Ptr MemoryType)))+    memoryTypes <- generateM (MAX_MEMORY_TYPES) (\i -> peekCStruct @MemoryType (((lowerArrayPtr @MemoryType ((p `plusPtr` 4 :: Ptr (FixedArray MAX_MEMORY_TYPES MemoryType)))) `advancePtrBytes` (8 * (i)) :: Ptr MemoryType)))     memoryHeapCount <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))-    memoryHeaps <- generateM (MAX_MEMORY_HEAPS) (\i -> peekCStruct @MemoryHeap (((lowerArrayPtr @MemoryHeap ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS MemoryHeap)))) `advancePtrBytes` (16 * (i)) :: Ptr MemoryHeap)))+    memoryHeaps <- generateM (MAX_MEMORY_HEAPS) (\i -> peekCStruct @MemoryHeap (((lowerArrayPtr @MemoryHeap ((p `plusPtr` 264 :: Ptr (FixedArray MAX_MEMORY_HEAPS MemoryHeap)))) `advancePtrBytes` (16 * (i)) :: Ptr MemoryHeap)))     pure $ PhysicalDeviceMemoryProperties              memoryTypeCount memoryTypes memoryHeapCount memoryHeaps @@ -2173,14 +2182,73 @@     --         structure are considered out of bounds even if the members at     --         the end are not statically used.     ---    --     -   If any buffer access is determined to be out of bounds, then any-    --         other access of the same type (load, store, or atomic) to the-    --         same buffer that accesses an address less than 16 bytes away-    --         from the out of bounds address /may/ also be considered out of-    --         bounds.+    --     -   If+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --         is not enabled and any buffer access is determined to be out of+    --         bounds, then any other access of the same type (load, store, or+    --         atomic) to the same buffer that accesses an address less than 16+    --         bytes away from the out of bounds address /may/ also be+    --         considered out of bounds.     --+    --     -   If the access is a load that reads from the same memory+    --         locations as a prior store in the same shader invocation, with+    --         no other intervening accesses to the same memory locations in+    --         that shader invocation, then the result of the load /may/ be the+    --         value stored by the store instruction, even if the access is out+    --         of bounds. If the load is @Volatile@, then an out of bounds load+    --         /must/ return the appropriate out of bounds value.+    --+    -- -   Accesses to descriptors written with a+    --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' resource or view+    --     are not considered to be out of bounds. Instead, each type of+    --     descriptor access defines a specific behavior for accesses to a null+    --     descriptor.+    --     -- -   Out-of-bounds buffer loads will return any of the following values:     --+    --     -   If the access is to a uniform buffer and+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --         is enabled, loads of offsets between the end of the descriptor+    --         range and the end of the descriptor range rounded up to a+    --         multiple of+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>+    --         bytes /must/ return either zero values or the contents of the+    --         memory at the offset being loaded. Loads of offsets past the+    --         descriptor range rounded up to a multiple of+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>+    --         bytes /must/ return zero values.+    --+    --     -   If the access is to a storage buffer and+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --         is enabled, loads of offsets between the end of the descriptor+    --         range and the end of the descriptor range rounded up to a+    --         multiple of+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>+    --         bytes /must/ return either zero values or the contents of the+    --         memory at the offset being loaded. Loads of offsets past the+    --         descriptor range rounded up to a multiple of+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>+    --         bytes /must/ return zero values. Similarly, stores to addresses+    --         between the end of the descriptor range and the end of the+    --         descriptor range rounded up to a multiple of+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>+    --         bytes /may/ be discarded.+    --+    --     -   Non-atomic accesses to storage buffers that are a multiple of 32+    --         bits /may/ be decomposed into 32-bit accesses that are+    --         individually bounds-checked.+    --+    --     -   If the access is to an index buffer and+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --         is enabled, zero values /must/ be returned.+    --+    --     -   If the access is to a uniform texel buffer or storage texel+    --         buffer and+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --         is enabled, zero values /must/ be returned, and then+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>+    --         is applied based on the buffer view’s format.+    --     --     -   Values from anywhere within the memory range(s) bound to the     --         buffer (possibly including bytes of memory past the end of the     --         buffer, up to the end of the bound range).@@ -2197,14 +2265,25 @@     -- -   Out-of-bounds writes /may/ modify values within the memory range(s)     --     bound to the buffer, but /must/ not modify any other memory.     --+    --     -   If+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --         is enabled, out of bounds writes /must/ not modify any memory.+    --     -- -   Out-of-bounds atomics /may/ modify values within the memory range(s)     --     bound to the buffer, but /must/ not modify any other memory, and     --     return an undefined value.     ---    -- -   Vertex input attributes are considered out of bounds if the offset-    --     of the attribute in the bound vertex buffer range plus the size of-    --     the attribute is greater than either:+    --     -   If+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --         is enabled, out of bounds atomics /must/ not modify any memory,+    --         and return an undefined value.     --+    -- -   If+    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --     is disabled, vertex input attributes are considered out of bounds if+    --     the offset of the attribute in the bound vertex buffer range plus+    --     the size of the attribute is greater than either:+    --     --     -   @vertexBufferRangeSize@, if @bindingStride@ == 0; or     --     --     -   (@vertexBufferRangeSize@ - (@vertexBufferRangeSize@ %@@ -2229,6 +2308,18 @@     --     --         -   Zero values, or (0,0,0,x) vectors, as described above.     --+    -- -   If+    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    --     is enabled, vertex input attributes are considered out of bounds if+    --     the offset of the attribute in the bound vertex buffer range plus+    --     the size of the attribute is greater than the byte size of the+    --     memory range bound to the vertex buffer binding.+    --+    --     -   If a vertex input attribute is out of bounds, the+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction raw data>+    --         extracted are zero values, and missing G, B, or A components are+    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.+    --     -- -   If @robustBufferAccess@ is not enabled, applications /must/ not     --     perform out of bounds accesses.     robustBufferAccess :: Bool@@ -2910,14 +3001,15 @@     -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structures, respectively.     sparseResidencyAliased :: Bool   , -- | @variableMultisampleRate@ specifies whether all pipelines that will be-    -- bound to a command buffer during a subpass with no attachments /must/-    -- have the same value for+    -- bound to a command buffer during a+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>+    -- /must/ have the same value for     -- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.     -- If set to 'Graphics.Vulkan.Core10.BaseType.TRUE', the implementation-    -- supports variable multisample rates in a subpass with no attachments. If-    -- set to 'Graphics.Vulkan.Core10.BaseType.FALSE', then all pipelines bound-    -- in such a subpass /must/ have the same multisample rate. This has no-    -- effect in situations where a subpass uses any attachments.+    -- supports variable multisample rates in a subpass which uses no+    -- attachments. If set to 'Graphics.Vulkan.Core10.BaseType.FALSE', then all+    -- pipelines bound in such a subpass /must/ have the same multisample rate.+    -- This has no effect in situations where a subpass uses any attachments.     variableMultisampleRate :: Bool   , -- | @inheritedQueries@ specifies whether a secondary command buffer /may/ be     -- executed while a query is active.@@ -3948,8 +4040,8 @@     framebufferStencilSampleCounts :: SampleCountFlags   , -- | @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of     -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'-    -- indicating the supported sample counts for a framebuffer with no-    -- attachments.+    -- indicating the supported sample counts for a+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>.     framebufferNoAttachmentsSampleCounts :: SampleCountFlags   , -- | @maxColorAttachments@ is the maximum number of color attachments that     -- /can/ be used by a subpass in a render pass. The @colorAttachmentCount@@@ -4151,14 +4243,14 @@     poke ((p `plusPtr` 208 :: Ptr Word32)) (maxFragmentDualSrcAttachments)     poke ((p `plusPtr` 212 :: Ptr Word32)) (maxFragmentCombinedOutputResources)     poke ((p `plusPtr` 216 :: Ptr Word32)) (maxComputeSharedMemorySize)-    let pMaxComputeWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 220 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxComputeWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 220 :: Ptr (FixedArray 3 Word32)))     case (maxComputeWorkGroupCount) of       (e0, e1, e2) -> do         poke (pMaxComputeWorkGroupCount' :: Ptr Word32) (e0)         poke (pMaxComputeWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)         poke (pMaxComputeWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)     poke ((p `plusPtr` 232 :: Ptr Word32)) (maxComputeWorkGroupInvocations)-    let pMaxComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 236 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 236 :: Ptr (FixedArray 3 Word32)))     case (maxComputeWorkGroupSize) of       (e0, e1, e2) -> do         poke (pMaxComputeWorkGroupSize' :: Ptr Word32) (e0)@@ -4172,12 +4264,12 @@     poke ((p `plusPtr` 268 :: Ptr CFloat)) (CFloat (maxSamplerLodBias))     poke ((p `plusPtr` 272 :: Ptr CFloat)) (CFloat (maxSamplerAnisotropy))     poke ((p `plusPtr` 276 :: Ptr Word32)) (maxViewports)-    let pMaxViewportDimensions' = lowerArrayPtr ((p `plusPtr` 280 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Word32)))+    let pMaxViewportDimensions' = lowerArrayPtr ((p `plusPtr` 280 :: Ptr (FixedArray 2 Word32)))     case (maxViewportDimensions) of       (e0, e1) -> do         poke (pMaxViewportDimensions' :: Ptr Word32) (e0)         poke (pMaxViewportDimensions' `plusPtr` 4 :: Ptr Word32) (e1)-    let pViewportBoundsRange' = lowerArrayPtr ((p `plusPtr` 288 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pViewportBoundsRange' = lowerArrayPtr ((p `plusPtr` 288 :: Ptr (FixedArray 2 CFloat)))     case (viewportBoundsRange) of       (e0, e1) -> do         poke (pViewportBoundsRange' :: Ptr CFloat) (CFloat (e0))@@ -4214,12 +4306,12 @@     poke ((p `plusPtr` 432 :: Ptr Word32)) (maxCullDistances)     poke ((p `plusPtr` 436 :: Ptr Word32)) (maxCombinedClipAndCullDistances)     poke ((p `plusPtr` 440 :: Ptr Word32)) (discreteQueuePriorities)-    let pPointSizeRange' = lowerArrayPtr ((p `plusPtr` 444 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pPointSizeRange' = lowerArrayPtr ((p `plusPtr` 444 :: Ptr (FixedArray 2 CFloat)))     case (pointSizeRange) of       (e0, e1) -> do         poke (pPointSizeRange' :: Ptr CFloat) (CFloat (e0))         poke (pPointSizeRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))-    let pLineWidthRange' = lowerArrayPtr ((p `plusPtr` 452 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pLineWidthRange' = lowerArrayPtr ((p `plusPtr` 452 :: Ptr (FixedArray 2 CFloat)))     case (lineWidthRange) of       (e0, e1) -> do         poke (pLineWidthRange' :: Ptr CFloat) (CFloat (e0))@@ -4287,14 +4379,14 @@     poke ((p `plusPtr` 208 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 212 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 216 :: Ptr Word32)) (zero)-    let pMaxComputeWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 220 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxComputeWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 220 :: Ptr (FixedArray 3 Word32)))     case ((zero, zero, zero)) of       (e0, e1, e2) -> do         poke (pMaxComputeWorkGroupCount' :: Ptr Word32) (e0)         poke (pMaxComputeWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)         poke (pMaxComputeWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)     poke ((p `plusPtr` 232 :: Ptr Word32)) (zero)-    let pMaxComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 236 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 236 :: Ptr (FixedArray 3 Word32)))     case ((zero, zero, zero)) of       (e0, e1, e2) -> do         poke (pMaxComputeWorkGroupSize' :: Ptr Word32) (e0)@@ -4308,12 +4400,12 @@     poke ((p `plusPtr` 268 :: Ptr CFloat)) (CFloat (zero))     poke ((p `plusPtr` 272 :: Ptr CFloat)) (CFloat (zero))     poke ((p `plusPtr` 276 :: Ptr Word32)) (zero)-    let pMaxViewportDimensions' = lowerArrayPtr ((p `plusPtr` 280 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Word32)))+    let pMaxViewportDimensions' = lowerArrayPtr ((p `plusPtr` 280 :: Ptr (FixedArray 2 Word32)))     case ((zero, zero)) of       (e0, e1) -> do         poke (pMaxViewportDimensions' :: Ptr Word32) (e0)         poke (pMaxViewportDimensions' `plusPtr` 4 :: Ptr Word32) (e1)-    let pViewportBoundsRange' = lowerArrayPtr ((p `plusPtr` 288 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pViewportBoundsRange' = lowerArrayPtr ((p `plusPtr` 288 :: Ptr (FixedArray 2 CFloat)))     case ((zero, zero)) of       (e0, e1) -> do         poke (pViewportBoundsRange' :: Ptr CFloat) (CFloat (e0))@@ -4341,12 +4433,12 @@     poke ((p `plusPtr` 432 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 436 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 440 :: Ptr Word32)) (zero)-    let pPointSizeRange' = lowerArrayPtr ((p `plusPtr` 444 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pPointSizeRange' = lowerArrayPtr ((p `plusPtr` 444 :: Ptr (FixedArray 2 CFloat)))     case ((zero, zero)) of       (e0, e1) -> do         poke (pPointSizeRange' :: Ptr CFloat) (CFloat (e0))         poke (pPointSizeRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))-    let pLineWidthRange' = lowerArrayPtr ((p `plusPtr` 452 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pLineWidthRange' = lowerArrayPtr ((p `plusPtr` 452 :: Ptr (FixedArray 2 CFloat)))     case ((zero, zero)) of       (e0, e1) -> do         poke (pLineWidthRange' :: Ptr CFloat) (CFloat (e0))@@ -4414,12 +4506,12 @@     maxFragmentDualSrcAttachments <- peek @Word32 ((p `plusPtr` 208 :: Ptr Word32))     maxFragmentCombinedOutputResources <- peek @Word32 ((p `plusPtr` 212 :: Ptr Word32))     maxComputeSharedMemorySize <- peek @Word32 ((p `plusPtr` 216 :: Ptr Word32))-    let pmaxComputeWorkGroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 220 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pmaxComputeWorkGroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 220 :: Ptr (FixedArray 3 Word32)))     maxComputeWorkGroupCount0 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 0 :: Ptr Word32))     maxComputeWorkGroupCount1 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 4 :: Ptr Word32))     maxComputeWorkGroupCount2 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 8 :: Ptr Word32))     maxComputeWorkGroupInvocations <- peek @Word32 ((p `plusPtr` 232 :: Ptr Word32))-    let pmaxComputeWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 236 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pmaxComputeWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 236 :: Ptr (FixedArray 3 Word32)))     maxComputeWorkGroupSize0 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))     maxComputeWorkGroupSize1 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))     maxComputeWorkGroupSize2 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))@@ -4431,10 +4523,10 @@     maxSamplerLodBias <- peek @CFloat ((p `plusPtr` 268 :: Ptr CFloat))     maxSamplerAnisotropy <- peek @CFloat ((p `plusPtr` 272 :: Ptr CFloat))     maxViewports <- peek @Word32 ((p `plusPtr` 276 :: Ptr Word32))-    let pmaxViewportDimensions = lowerArrayPtr @Word32 ((p `plusPtr` 280 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Word32)))+    let pmaxViewportDimensions = lowerArrayPtr @Word32 ((p `plusPtr` 280 :: Ptr (FixedArray 2 Word32)))     maxViewportDimensions0 <- peek @Word32 ((pmaxViewportDimensions `advancePtrBytes` 0 :: Ptr Word32))     maxViewportDimensions1 <- peek @Word32 ((pmaxViewportDimensions `advancePtrBytes` 4 :: Ptr Word32))-    let pviewportBoundsRange = lowerArrayPtr @CFloat ((p `plusPtr` 288 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pviewportBoundsRange = lowerArrayPtr @CFloat ((p `plusPtr` 288 :: Ptr (FixedArray 2 CFloat)))     viewportBoundsRange0 <- peek @CFloat ((pviewportBoundsRange `advancePtrBytes` 0 :: Ptr CFloat))     viewportBoundsRange1 <- peek @CFloat ((pviewportBoundsRange `advancePtrBytes` 4 :: Ptr CFloat))     viewportSubPixelBits <- peek @Word32 ((p `plusPtr` 296 :: Ptr Word32))@@ -4469,10 +4561,10 @@     maxCullDistances <- peek @Word32 ((p `plusPtr` 432 :: Ptr Word32))     maxCombinedClipAndCullDistances <- peek @Word32 ((p `plusPtr` 436 :: Ptr Word32))     discreteQueuePriorities <- peek @Word32 ((p `plusPtr` 440 :: Ptr Word32))-    let ppointSizeRange = lowerArrayPtr @CFloat ((p `plusPtr` 444 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let ppointSizeRange = lowerArrayPtr @CFloat ((p `plusPtr` 444 :: Ptr (FixedArray 2 CFloat)))     pointSizeRange0 <- peek @CFloat ((ppointSizeRange `advancePtrBytes` 0 :: Ptr CFloat))     pointSizeRange1 <- peek @CFloat ((ppointSizeRange `advancePtrBytes` 4 :: Ptr CFloat))-    let plineWidthRange = lowerArrayPtr @CFloat ((p `plusPtr` 452 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let plineWidthRange = lowerArrayPtr @CFloat ((p `plusPtr` 452 :: Ptr (FixedArray 2 CFloat)))     lineWidthRange0 <- peek @CFloat ((plineWidthRange `advancePtrBytes` 0 :: Ptr CFloat))     lineWidthRange1 <- peek @CFloat ((plineWidthRange `advancePtrBytes` 4 :: Ptr CFloat))     pointSizeGranularity <- peek @CFloat ((p `plusPtr` 460 :: Ptr CFloat))
src/Graphics/Vulkan/Core10/Enums.hs view
@@ -51,7 +51,7 @@                                      , module Graphics.Vulkan.Core10.Enums.ObjectType                                      , module Graphics.Vulkan.Core10.Enums.PhysicalDeviceType                                      , module Graphics.Vulkan.Core10.Enums.PipelineBindPoint-                                     , module Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags+                                     , module Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits                                      , module Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion                                      , module Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags                                      , module Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits@@ -147,7 +147,7 @@ import Graphics.Vulkan.Core10.Enums.ObjectType import Graphics.Vulkan.Core10.Enums.PhysicalDeviceType import Graphics.Vulkan.Core10.Enums.PipelineBindPoint-import Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits import Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion import Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits
src/Graphics/Vulkan/Core10/Enums/AccessFlagBits.hs view
@@ -16,13 +16,13 @@                                                                     , ACCESS_HOST_WRITE_BIT                                                                     , ACCESS_MEMORY_READ_BIT                                                                     , ACCESS_MEMORY_WRITE_BIT+                                                                    , ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV+                                                                    , ACCESS_COMMAND_PREPROCESS_READ_BIT_NV                                                                     , ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT-                                                                    , ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV-                                                                    , ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV                                                                     , ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV+                                                                    , ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR+                                                                    , ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR                                                                     , ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT-                                                                    , ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX-                                                                    , ACCESS_COMMAND_PROCESS_READ_BIT_NVX                                                                     , ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT                                                                     , ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT                                                                     , ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT@@ -63,92 +63,92 @@ -- accesses of that type. The following table lists, for each access flag, -- which pipeline stages /can/ perform that type of access. ----- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | Access flag                                        | Supported pipeline stages                                                                               |--- +====================================================+=========================================================================================================+--- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                   |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_INDEX_READ_BIT'                            | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                    |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                    |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_UNIFORM_READ_BIT'                          | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                 |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                 |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV',          |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                  |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',    |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or             |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                  |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_SHADER_READ_BIT'                           | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                 |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                 |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV',          |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                  |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',    |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or             |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                  |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_SHADER_WRITE_BIT'                          | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                 |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                 |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV',          |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                  |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',    |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or             |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                  |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'                 |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'         |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT'                | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'         |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'         | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or        |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'             |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'        | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or        |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'             |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_TRANSFER_READ_BIT'                         | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'                        |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_TRANSFER_WRITE_BIT'                        | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'                        |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_HOST_READ_BIT'                             | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                            |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_HOST_WRITE_BIT'                            | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                            |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_MEMORY_READ_BIT'                           | Any                                                                                                     |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_MEMORY_WRITE_BIT'                          | Any                                                                                                     |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'         |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_COMMAND_PROCESS_READ_BIT_NVX'              | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX'             |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX'             | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX'             |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'        | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'       |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'            | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'           |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'          | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'          |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'  | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'          |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'   | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                   |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV'        | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV', or       |--- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV' |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV'       | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV' |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------+--- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'         | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'    |--- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | Access flag                                        | Supported pipeline stages                                                                                |+-- +====================================================+==========================================================================================================++-- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                    |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_INDEX_READ_BIT'                            | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                     |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                     |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_UNIFORM_READ_BIT'                          | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',          |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                   |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',     |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                 |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or              |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                   |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_SHADER_READ_BIT'                           | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',          |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                   |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',     |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                 |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or              |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                   |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_SHADER_WRITE_BIT'                          | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',          |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                   |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',     |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',  |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                 |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or              |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                   |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'                  |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT'                 | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'          |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT'                | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'          |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'         | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or         |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'              |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'        | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or         |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'              |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFER_READ_BIT'                         | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'                         |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFER_WRITE_BIT'                        | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'                         |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_HOST_READ_BIT'                             | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                             |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_HOST_WRITE_BIT'                            | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                             |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_MEMORY_READ_BIT'                           | Any                                                                                                      |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_MEMORY_WRITE_BIT'                          | Any                                                                                                      |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'          |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'            | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'            |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'           | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'            |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'        | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'        |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV'            | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'            |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'          | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'           |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'  | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'           |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'   | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                    |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'       | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR', or       |+-- |                                                    | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'      | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------++-- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'         | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'     |+-- +----------------------------------------------------+----------------------------------------------------------------------------------------------------------+ -- -- Supported access types --@@ -277,33 +277,33 @@ -- valid in any access mask, and is treated as equivalent to setting all -- @WRITE@ access flags that are valid where it is used. pattern ACCESS_MEMORY_WRITE_BIT = AccessFlagBits 0x00010000+-- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV' specifies writes to the+-- 'Graphics.Vulkan.Core10.Handles.Buffer' preprocess outputs in+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.+pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = AccessFlagBits 0x00040000+-- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV' specifies reads from+-- 'Graphics.Vulkan.Core10.Handles.Buffer' inputs to+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.+pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = AccessFlagBits 0x00020000 -- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment> -- during dynamic -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations> pattern ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = AccessFlagBits 0x01000000--- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV' specifies write access to--- an acceleration structure as part of a build command.-pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = AccessFlagBits 0x00400000--- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV' specifies read access to an--- acceleration structure as part of a trace or build command.-pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = AccessFlagBits 0x00200000 -- | 'ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV' specifies read access to a -- shading rate image as part of a drawing command, as bound by -- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV'. pattern ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = AccessFlagBits 0x00800000+-- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access to+-- an acceleration structure as part of a build command.+pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = AccessFlagBits 0x00400000+-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR' specifies read access to an+-- acceleration structure as part of a trace or build command.+pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = AccessFlagBits 0x00200000 -- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' is similar to -- 'ACCESS_COLOR_ATTACHMENT_READ_BIT', but also includes -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>. pattern ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits 0x00080000--- | 'ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX' specifies writes to the target--- command buffer in--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'.-pattern ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = AccessFlagBits 0x00040000--- | 'ACCESS_COMMAND_PROCESS_READ_BIT_NVX' specifies reads from--- 'Graphics.Vulkan.Core10.Handles.Buffer' inputs to--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'.-pattern ACCESS_COMMAND_PROCESS_READ_BIT_NVX = AccessFlagBits 0x00020000 -- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to a -- predicate as part of conditional rendering. pattern ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = AccessFlagBits 0x00100000@@ -342,13 +342,13 @@     ACCESS_HOST_WRITE_BIT -> showString "ACCESS_HOST_WRITE_BIT"     ACCESS_MEMORY_READ_BIT -> showString "ACCESS_MEMORY_READ_BIT"     ACCESS_MEMORY_WRITE_BIT -> showString "ACCESS_MEMORY_WRITE_BIT"+    ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV -> showString "ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"+    ACCESS_COMMAND_PREPROCESS_READ_BIT_NV -> showString "ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"     ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT -> showString "ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"-    ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV -> showString "ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"-    ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV -> showString "ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"     ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV -> showString "ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"+    ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR -> showString "ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"+    ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR -> showString "ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"     ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT -> showString "ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"-    ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX -> showString "ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"-    ACCESS_COMMAND_PROCESS_READ_BIT_NVX -> showString "ACCESS_COMMAND_PROCESS_READ_BIT_NVX"     ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT -> showString "ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"     ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"     ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"@@ -373,13 +373,13 @@                             , ("ACCESS_HOST_WRITE_BIT", pure ACCESS_HOST_WRITE_BIT)                             , ("ACCESS_MEMORY_READ_BIT", pure ACCESS_MEMORY_READ_BIT)                             , ("ACCESS_MEMORY_WRITE_BIT", pure ACCESS_MEMORY_WRITE_BIT)+                            , ("ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV", pure ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV)+                            , ("ACCESS_COMMAND_PREPROCESS_READ_BIT_NV", pure ACCESS_COMMAND_PREPROCESS_READ_BIT_NV)                             , ("ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT", pure ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT)-                            , ("ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV", pure ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV)-                            , ("ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV", pure ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV)                             , ("ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV", pure ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV)+                            , ("ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR", pure ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR)+                            , ("ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR", pure ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR)                             , ("ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT", pure ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT)-                            , ("ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX", pure ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX)-                            , ("ACCESS_COMMAND_PROCESS_READ_BIT_NVX", pure ACCESS_COMMAND_PROCESS_READ_BIT_NVX)                             , ("ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT", pure ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT)                             , ("ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT)                             , ("ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT)
src/Graphics/Vulkan/Core10/Enums/AttachmentStoreOp.hs view
@@ -1,6 +1,7 @@ {-# language CPP #-} module Graphics.Vulkan.Core10.Enums.AttachmentStoreOp  (AttachmentStoreOp( ATTACHMENT_STORE_OP_STORE                                                                          , ATTACHMENT_STORE_OP_DONT_CARE+                                                                         , ATTACHMENT_STORE_OP_NONE_QCOM                                                                          , ..                                                                          )) where @@ -51,18 +52,26 @@ -- For attachments with a color format, this uses the access type -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'. pattern ATTACHMENT_STORE_OP_DONT_CARE = AttachmentStoreOp 1+-- | 'ATTACHMENT_STORE_OP_NONE_QCOM' specifies that the contents within the+-- render area were not written during rendering, and /may/ not be written+-- to memory. If the attachment was written to during the renderpass, the+-- contents of the attachment will be undefined inside the render area.+pattern ATTACHMENT_STORE_OP_NONE_QCOM = AttachmentStoreOp 1000301000 {-# complete ATTACHMENT_STORE_OP_STORE,-             ATTACHMENT_STORE_OP_DONT_CARE :: AttachmentStoreOp #-}+             ATTACHMENT_STORE_OP_DONT_CARE,+             ATTACHMENT_STORE_OP_NONE_QCOM :: AttachmentStoreOp #-}  instance Show AttachmentStoreOp where   showsPrec p = \case     ATTACHMENT_STORE_OP_STORE -> showString "ATTACHMENT_STORE_OP_STORE"     ATTACHMENT_STORE_OP_DONT_CARE -> showString "ATTACHMENT_STORE_OP_DONT_CARE"+    ATTACHMENT_STORE_OP_NONE_QCOM -> showString "ATTACHMENT_STORE_OP_NONE_QCOM"     AttachmentStoreOp x -> showParen (p >= 11) (showString "AttachmentStoreOp " . showsPrec 11 x)  instance Read AttachmentStoreOp where   readPrec = parens (choose [("ATTACHMENT_STORE_OP_STORE", pure ATTACHMENT_STORE_OP_STORE)-                            , ("ATTACHMENT_STORE_OP_DONT_CARE", pure ATTACHMENT_STORE_OP_DONT_CARE)]+                            , ("ATTACHMENT_STORE_OP_DONT_CARE", pure ATTACHMENT_STORE_OP_DONT_CARE)+                            , ("ATTACHMENT_STORE_OP_NONE_QCOM", pure ATTACHMENT_STORE_OP_NONE_QCOM)]                      +++                      prec 10 (do                        expectP (Ident "AttachmentStoreOp")
src/Graphics/Vulkan/Core10/Enums/BufferUsageFlagBits.hs view
@@ -8,7 +8,7 @@                                                                               , BUFFER_USAGE_INDEX_BUFFER_BIT                                                                               , BUFFER_USAGE_VERTEX_BUFFER_BIT                                                                               , BUFFER_USAGE_INDIRECT_BUFFER_BIT-                                                                              , BUFFER_USAGE_RAY_TRACING_BIT_NV+                                                                              , BUFFER_USAGE_RAY_TRACING_BIT_KHR                                                                               , BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT                                                                               , BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT                                                                               , BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT@@ -92,15 +92,16 @@ -- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV', -- or 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'. -- It is also suitable for passing as the @buffer@ member of--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',--- or @sequencesCountBuffer@ or @sequencesIndexBuffer@ member of--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX'+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV',+-- or @sequencesCountBuffer@ or @sequencesIndexBuffer@ or+-- @preprocessedBuffer@ member of+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV' pattern BUFFER_USAGE_INDIRECT_BUFFER_BIT = BufferUsageFlagBits 0x00000100--- | 'BUFFER_USAGE_RAY_TRACING_BIT_NV' specifies that the buffer is suitable--- for use in 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV'--- and--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'.-pattern BUFFER_USAGE_RAY_TRACING_BIT_NV = BufferUsageFlagBits 0x00000400+-- | 'BUFFER_USAGE_RAY_TRACING_BIT_KHR' specifies that the buffer is suitable+-- for use in+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysKHR' and+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureKHR'.+pattern BUFFER_USAGE_RAY_TRACING_BIT_KHR = BufferUsageFlagBits 0x00000400 -- | 'BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies that the buffer -- is suitable for passing as the @buffer@ parameter to -- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.@@ -135,7 +136,7 @@     BUFFER_USAGE_INDEX_BUFFER_BIT -> showString "BUFFER_USAGE_INDEX_BUFFER_BIT"     BUFFER_USAGE_VERTEX_BUFFER_BIT -> showString "BUFFER_USAGE_VERTEX_BUFFER_BIT"     BUFFER_USAGE_INDIRECT_BUFFER_BIT -> showString "BUFFER_USAGE_INDIRECT_BUFFER_BIT"-    BUFFER_USAGE_RAY_TRACING_BIT_NV -> showString "BUFFER_USAGE_RAY_TRACING_BIT_NV"+    BUFFER_USAGE_RAY_TRACING_BIT_KHR -> showString "BUFFER_USAGE_RAY_TRACING_BIT_KHR"     BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT -> showString "BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"     BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT -> showString "BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"     BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT -> showString "BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"@@ -152,7 +153,7 @@                             , ("BUFFER_USAGE_INDEX_BUFFER_BIT", pure BUFFER_USAGE_INDEX_BUFFER_BIT)                             , ("BUFFER_USAGE_VERTEX_BUFFER_BIT", pure BUFFER_USAGE_VERTEX_BUFFER_BIT)                             , ("BUFFER_USAGE_INDIRECT_BUFFER_BIT", pure BUFFER_USAGE_INDIRECT_BUFFER_BIT)-                            , ("BUFFER_USAGE_RAY_TRACING_BIT_NV", pure BUFFER_USAGE_RAY_TRACING_BIT_NV)+                            , ("BUFFER_USAGE_RAY_TRACING_BIT_KHR", pure BUFFER_USAGE_RAY_TRACING_BIT_KHR)                             , ("BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT", pure BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT)                             , ("BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT", pure BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT)                             , ("BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT", pure BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT)
src/Graphics/Vulkan/Core10/Enums/DescriptorType.hs view
@@ -10,7 +10,7 @@                                                                    , DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC                                                                    , DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC                                                                    , DESCRIPTOR_TYPE_INPUT_ATTACHMENT-                                                                   , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV+                                                                   , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR                                                                    , DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT                                                                    , ..                                                                    )) where@@ -115,10 +115,10 @@ -- structure in the @pNext@ chain of -- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'. When updating -- descriptors with a @descriptorType@ of--- 'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV', none of the @pImageInfo@,+-- 'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR', none of the @pImageInfo@, -- @pBufferInfo@, or @pTexelBufferView@ members are accessed, instead the -- source data of the descriptor update operation is taken from the--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR' -- structure in the @pNext@ chain of -- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'. --@@ -154,8 +154,8 @@ pattern DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = DescriptorType 9 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT" pattern DESCRIPTOR_TYPE_INPUT_ATTACHMENT = DescriptorType 10--- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"-pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = DescriptorType 1000165000+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"+pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = DescriptorType 1000165000 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT" pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = DescriptorType 1000138000 {-# complete DESCRIPTOR_TYPE_SAMPLER,@@ -169,7 +169,7 @@              DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,              DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,              DESCRIPTOR_TYPE_INPUT_ATTACHMENT,-             DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,+             DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,              DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT :: DescriptorType #-}  instance Show DescriptorType where@@ -185,7 +185,7 @@     DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC -> showString "DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"     DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC -> showString "DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"     DESCRIPTOR_TYPE_INPUT_ATTACHMENT -> showString "DESCRIPTOR_TYPE_INPUT_ATTACHMENT"-    DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV -> showString "DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"+    DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR -> showString "DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"     DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT -> showString "DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"     DescriptorType x -> showParen (p >= 11) (showString "DescriptorType " . showsPrec 11 x) @@ -201,7 +201,7 @@                             , ("DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC", pure DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC)                             , ("DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC", pure DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)                             , ("DESCRIPTOR_TYPE_INPUT_ATTACHMENT", pure DESCRIPTOR_TYPE_INPUT_ATTACHMENT)-                            , ("DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV", pure DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV)+                            , ("DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR", pure DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR)                             , ("DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT", pure DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)]                      +++                      prec 10 (do
src/Graphics/Vulkan/Core10/Enums/Format.hs view
@@ -261,6 +261,8 @@ -- -- = See Also --+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR', -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID', -- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
src/Graphics/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs view
@@ -13,6 +13,7 @@                                                                                   , FORMAT_FEATURE_BLIT_DST_BIT                                                                                   , FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT                                                                                   , FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT+                                                                                  , FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR                                                                                   , FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG                                                                                   , FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT                                                                                   , FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@@ -51,11 +52,10 @@ -- -- The following bits /may/ be set in @linearTilingFeatures@, -- @optimalTilingFeatures@, and--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierTilingFeatures>,--- specifying that the features are supported by--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImage images>--- or--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageView image views>+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierTilingFeatures@,+-- specifying that the features are supported by <VkImage.html images> or+-- <VkImageView.html image views> or+-- <VkSamplerYcbcrConversion.html sampler Y′CBCR conversion objects> -- created with the queried -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'::@format@: --@@ -209,11 +209,8 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>. -- -- The following bits /may/ be set in @bufferFeatures@, specifying that the--- features are supported by--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBuffer buffers>--- or--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferView buffer views>--- created with the queried+-- features are supported by <VkBuffer.html buffers> or+-- <VkBufferView.html buffer views> created with the queried -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceProperties'::@format@: -- -- -   'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the format@@ -318,6 +315,8 @@ -- view /can/ be used as a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>. pattern FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = FormatFeatureFlagBits 0x01000000+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"+pattern FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = FormatFeatureFlagBits 0x20000000 -- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = FormatFeatureFlagBits 0x00002000 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT' specifies@@ -415,6 +414,7 @@     FORMAT_FEATURE_BLIT_DST_BIT -> showString "FORMAT_FEATURE_BLIT_DST_BIT"     FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"     FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT -> showString "FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"+    FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR -> showString "FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"     FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"     FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"     FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT -> showString "FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"@@ -443,6 +443,7 @@                             , ("FORMAT_FEATURE_BLIT_DST_BIT", pure FORMAT_FEATURE_BLIT_DST_BIT)                             , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)                             , ("FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT", pure FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT)+                            , ("FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR", pure FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR)                             , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG)                             , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT)                             , ("FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", pure FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT)
src/Graphics/Vulkan/Core10/Enums/IndexType.hs view
@@ -2,7 +2,7 @@ module Graphics.Vulkan.Core10.Enums.IndexType  (IndexType( INDEX_TYPE_UINT16                                                          , INDEX_TYPE_UINT32                                                          , INDEX_TYPE_UINT8_EXT-                                                         , INDEX_TYPE_NONE_NV+                                                         , INDEX_TYPE_NONE_KHR                                                          , ..                                                          )) where @@ -24,8 +24,11 @@ -- -- = See Also --+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.BindIndexBufferIndirectCommandNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableIndexBufferEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' newtype IndexType = IndexType Int32   deriving newtype (Eq, Ord, Storable, Zero)@@ -39,26 +42,26 @@ -- | 'INDEX_TYPE_UINT8_EXT' specifies that indices are 8-bit unsigned integer -- values. pattern INDEX_TYPE_UINT8_EXT = IndexType 1000265000--- | 'INDEX_TYPE_NONE_NV' specifies that no indices are provided.-pattern INDEX_TYPE_NONE_NV = IndexType 1000165000+-- | 'INDEX_TYPE_NONE_KHR' specifies that no indices are provided.+pattern INDEX_TYPE_NONE_KHR = IndexType 1000165000 {-# complete INDEX_TYPE_UINT16,              INDEX_TYPE_UINT32,              INDEX_TYPE_UINT8_EXT,-             INDEX_TYPE_NONE_NV :: IndexType #-}+             INDEX_TYPE_NONE_KHR :: IndexType #-}  instance Show IndexType where   showsPrec p = \case     INDEX_TYPE_UINT16 -> showString "INDEX_TYPE_UINT16"     INDEX_TYPE_UINT32 -> showString "INDEX_TYPE_UINT32"     INDEX_TYPE_UINT8_EXT -> showString "INDEX_TYPE_UINT8_EXT"-    INDEX_TYPE_NONE_NV -> showString "INDEX_TYPE_NONE_NV"+    INDEX_TYPE_NONE_KHR -> showString "INDEX_TYPE_NONE_KHR"     IndexType x -> showParen (p >= 11) (showString "IndexType " . showsPrec 11 x)  instance Read IndexType where   readPrec = parens (choose [("INDEX_TYPE_UINT16", pure INDEX_TYPE_UINT16)                             , ("INDEX_TYPE_UINT32", pure INDEX_TYPE_UINT32)                             , ("INDEX_TYPE_UINT8_EXT", pure INDEX_TYPE_UINT8_EXT)-                            , ("INDEX_TYPE_NONE_NV", pure INDEX_TYPE_NONE_NV)]+                            , ("INDEX_TYPE_NONE_KHR", pure INDEX_TYPE_NONE_KHR)]                      +++                      prec 10 (do                        expectP (Ident "IndexType")
src/Graphics/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs view
@@ -49,7 +49,7 @@ -- uncached memory in particular, repeated accesses to the same or -- neighbouring memory locations over a short time period (e.g. within a -- frame) may be slower than it would be for the equivalent cached memory--- type. As such, it’s generally inadvisable to use device coherent or+-- type. As such, it is generally inadvisable to use device coherent or -- device uncached memory except when really needed. -- -- = See Also
src/Graphics/Vulkan/Core10/Enums/ObjectType.hs view
@@ -25,12 +25,12 @@                                                            , OBJECT_TYPE_DESCRIPTOR_SET                                                            , OBJECT_TYPE_FRAMEBUFFER                                                            , OBJECT_TYPE_COMMAND_POOL+                                                           , OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV+                                                           , OBJECT_TYPE_DEFERRED_OPERATION_KHR                                                            , OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL-                                                           , OBJECT_TYPE_ACCELERATION_STRUCTURE_NV                                                            , OBJECT_TYPE_VALIDATION_CACHE_EXT+                                                           , OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR                                                            , OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT-                                                           , OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX-                                                           , OBJECT_TYPE_OBJECT_TABLE_NVX                                                            , OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT                                                            , OBJECT_TYPE_DISPLAY_MODE_KHR                                                            , OBJECT_TYPE_DISPLAY_KHR@@ -130,15 +130,13 @@ -- +-----------------------------------------------+--------------------------------------------------------------------+ -- | 'OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT'       | 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT'        | -- +-----------------------------------------------+--------------------------------------------------------------------+--- | 'OBJECT_TYPE_OBJECT_TABLE_NVX'                | 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'                |--- +-----------------------------------------------+--------------------------------------------------------------------+--- | 'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX'    | 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'     |+-- | 'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV'     | 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'      | -- +-----------------------------------------------+--------------------------------------------------------------------+ -- | 'OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT'       | 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT'        | -- +-----------------------------------------------+--------------------------------------------------------------------+ -- | 'OBJECT_TYPE_VALIDATION_CACHE_EXT'            | 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT'            | -- +-----------------------------------------------+--------------------------------------------------------------------+--- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_NV'       | 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV'       |+-- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR'      | 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'      | -- +-----------------------------------------------+--------------------------------------------------------------------+ -- | 'OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL' | 'Graphics.Vulkan.Extensions.Handles.PerformanceConfigurationINTEL' | -- +-----------------------------------------------+--------------------------------------------------------------------+@@ -204,18 +202,18 @@ pattern OBJECT_TYPE_FRAMEBUFFER = ObjectType 24 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_POOL" pattern OBJECT_TYPE_COMMAND_POOL = ObjectType 25+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"+pattern OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = ObjectType 1000277000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"+pattern OBJECT_TYPE_DEFERRED_OPERATION_KHR = ObjectType 1000268000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL" pattern OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = ObjectType 1000210000--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"-pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = ObjectType 1000165000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT" pattern OBJECT_TYPE_VALIDATION_CACHE_EXT = ObjectType 1000160000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"+pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = ObjectType 1000165000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT" pattern OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = ObjectType 1000128000--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"-pattern OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = ObjectType 1000086001--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_OBJECT_TABLE_NVX"-pattern OBJECT_TYPE_OBJECT_TABLE_NVX = ObjectType 1000086000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT" pattern OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = ObjectType 1000011000 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"@@ -256,12 +254,12 @@              OBJECT_TYPE_DESCRIPTOR_SET,              OBJECT_TYPE_FRAMEBUFFER,              OBJECT_TYPE_COMMAND_POOL,+             OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV,+             OBJECT_TYPE_DEFERRED_OPERATION_KHR,              OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL,-             OBJECT_TYPE_ACCELERATION_STRUCTURE_NV,              OBJECT_TYPE_VALIDATION_CACHE_EXT,+             OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR,              OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT,-             OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,-             OBJECT_TYPE_OBJECT_TABLE_NVX,              OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,              OBJECT_TYPE_DISPLAY_MODE_KHR,              OBJECT_TYPE_DISPLAY_KHR,@@ -298,12 +296,12 @@     OBJECT_TYPE_DESCRIPTOR_SET -> showString "OBJECT_TYPE_DESCRIPTOR_SET"     OBJECT_TYPE_FRAMEBUFFER -> showString "OBJECT_TYPE_FRAMEBUFFER"     OBJECT_TYPE_COMMAND_POOL -> showString "OBJECT_TYPE_COMMAND_POOL"+    OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV -> showString "OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"+    OBJECT_TYPE_DEFERRED_OPERATION_KHR -> showString "OBJECT_TYPE_DEFERRED_OPERATION_KHR"     OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL -> showString "OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"-    OBJECT_TYPE_ACCELERATION_STRUCTURE_NV -> showString "OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"     OBJECT_TYPE_VALIDATION_CACHE_EXT -> showString "OBJECT_TYPE_VALIDATION_CACHE_EXT"+    OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR -> showString "OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"     OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT -> showString "OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"-    OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX -> showString "OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"-    OBJECT_TYPE_OBJECT_TABLE_NVX -> showString "OBJECT_TYPE_OBJECT_TABLE_NVX"     OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT -> showString "OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"     OBJECT_TYPE_DISPLAY_MODE_KHR -> showString "OBJECT_TYPE_DISPLAY_MODE_KHR"     OBJECT_TYPE_DISPLAY_KHR -> showString "OBJECT_TYPE_DISPLAY_KHR"@@ -340,12 +338,12 @@                             , ("OBJECT_TYPE_DESCRIPTOR_SET", pure OBJECT_TYPE_DESCRIPTOR_SET)                             , ("OBJECT_TYPE_FRAMEBUFFER", pure OBJECT_TYPE_FRAMEBUFFER)                             , ("OBJECT_TYPE_COMMAND_POOL", pure OBJECT_TYPE_COMMAND_POOL)+                            , ("OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV", pure OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV)+                            , ("OBJECT_TYPE_DEFERRED_OPERATION_KHR", pure OBJECT_TYPE_DEFERRED_OPERATION_KHR)                             , ("OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL", pure OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL)-                            , ("OBJECT_TYPE_ACCELERATION_STRUCTURE_NV", pure OBJECT_TYPE_ACCELERATION_STRUCTURE_NV)                             , ("OBJECT_TYPE_VALIDATION_CACHE_EXT", pure OBJECT_TYPE_VALIDATION_CACHE_EXT)+                            , ("OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR", pure OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR)                             , ("OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT", pure OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT)-                            , ("OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX", pure OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX)-                            , ("OBJECT_TYPE_OBJECT_TABLE_NVX", pure OBJECT_TYPE_OBJECT_TABLE_NVX)                             , ("OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT", pure OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT)                             , ("OBJECT_TYPE_DISPLAY_MODE_KHR", pure OBJECT_TYPE_DISPLAY_MODE_KHR)                             , ("OBJECT_TYPE_DISPLAY_KHR", pure OBJECT_TYPE_DISPLAY_KHR)
src/Graphics/Vulkan/Core10/Enums/PipelineBindPoint.hs view
@@ -1,7 +1,7 @@ {-# language CPP #-} module Graphics.Vulkan.Core10.Enums.PipelineBindPoint  (PipelineBindPoint( PIPELINE_BIND_POINT_GRAPHICS                                                                          , PIPELINE_BIND_POINT_COMPUTE-                                                                         , PIPELINE_BIND_POINT_RAY_TRACING_NV+                                                                         , PIPELINE_BIND_POINT_RAY_TRACING_KHR                                                                          , ..                                                                          )) where @@ -25,11 +25,14 @@ -- = See Also -- -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsLayoutCreateInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV', -- 'Graphics.Vulkan.Core10.Pass.SubpassDescription', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV', -- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR' newtype PipelineBindPoint = PipelineBindPoint Int32   deriving newtype (Eq, Ord, Storable, Zero)@@ -38,24 +41,24 @@ pattern PIPELINE_BIND_POINT_GRAPHICS = PipelineBindPoint 0 -- | 'PIPELINE_BIND_POINT_COMPUTE' specifies binding as a compute pipeline. pattern PIPELINE_BIND_POINT_COMPUTE = PipelineBindPoint 1--- | 'PIPELINE_BIND_POINT_RAY_TRACING_NV' specifies binding as a ray tracing+-- | 'PIPELINE_BIND_POINT_RAY_TRACING_KHR' specifies binding as a ray tracing -- pipeline.-pattern PIPELINE_BIND_POINT_RAY_TRACING_NV = PipelineBindPoint 1000165000+pattern PIPELINE_BIND_POINT_RAY_TRACING_KHR = PipelineBindPoint 1000165000 {-# complete PIPELINE_BIND_POINT_GRAPHICS,              PIPELINE_BIND_POINT_COMPUTE,-             PIPELINE_BIND_POINT_RAY_TRACING_NV :: PipelineBindPoint #-}+             PIPELINE_BIND_POINT_RAY_TRACING_KHR :: PipelineBindPoint #-}  instance Show PipelineBindPoint where   showsPrec p = \case     PIPELINE_BIND_POINT_GRAPHICS -> showString "PIPELINE_BIND_POINT_GRAPHICS"     PIPELINE_BIND_POINT_COMPUTE -> showString "PIPELINE_BIND_POINT_COMPUTE"-    PIPELINE_BIND_POINT_RAY_TRACING_NV -> showString "PIPELINE_BIND_POINT_RAY_TRACING_NV"+    PIPELINE_BIND_POINT_RAY_TRACING_KHR -> showString "PIPELINE_BIND_POINT_RAY_TRACING_KHR"     PipelineBindPoint x -> showParen (p >= 11) (showString "PipelineBindPoint " . showsPrec 11 x)  instance Read PipelineBindPoint where   readPrec = parens (choose [("PIPELINE_BIND_POINT_GRAPHICS", pure PIPELINE_BIND_POINT_GRAPHICS)                             , ("PIPELINE_BIND_POINT_COMPUTE", pure PIPELINE_BIND_POINT_COMPUTE)-                            , ("PIPELINE_BIND_POINT_RAY_TRACING_NV", pure PIPELINE_BIND_POINT_RAY_TRACING_NV)]+                            , ("PIPELINE_BIND_POINT_RAY_TRACING_KHR", pure PIPELINE_BIND_POINT_RAY_TRACING_KHR)]                      +++                      prec 10 (do                        expectP (Ident "PipelineBindPoint")
+ src/Graphics/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs view
@@ -0,0 +1,55 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits  ( PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT+                                                                                              , ..+                                                                                              )+                                                                 , PipelineCacheCreateFlags+                                                                 ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the+-- pipeline cache+--+-- = See Also+--+-- 'PipelineCacheCreateFlags'+newtype PipelineCacheCreateFlagBits = PipelineCacheCreateFlagBits Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT' specifies that+-- all commands that modify the created+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' will be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.+-- When set, the implementation /may/ skip any unnecessary processing+-- needed to support simultaneous modification from multiple threads where+-- allowed.+pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = PipelineCacheCreateFlagBits 0x00000001++type PipelineCacheCreateFlags = PipelineCacheCreateFlagBits++instance Show PipelineCacheCreateFlagBits where+  showsPrec p = \case+    PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT -> showString "PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"+    PipelineCacheCreateFlagBits x -> showParen (p >= 11) (showString "PipelineCacheCreateFlagBits 0x" . showHex x)++instance Read PipelineCacheCreateFlagBits where+  readPrec = parens (choose [("PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT", pure PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT)]+                     ++++                     prec 10 (do+                       expectP (Ident "PipelineCacheCreateFlagBits")+                       v <- step readPrec+                       pure (PipelineCacheCreateFlagBits v)))+
− src/Graphics/Vulkan/Core10/Enums/PipelineCacheCreateFlags.hs
@@ -1,45 +0,0 @@-{-# language CPP #-}-module Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags  (PipelineCacheCreateFlags(..)) where--import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)-import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import Data.Bits (Bits)-import Foreign.Storable (Storable)-import GHC.Read (Read(readPrec))-import Text.Read.Lex (Lexeme(Ident))-import Graphics.Vulkan.Core10.BaseType (Flags)-import Graphics.Vulkan.Zero (Zero)--- | VkPipelineCacheCreateFlags - Reserved for future use------ = Description------ 'PipelineCacheCreateFlags' is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'Graphics.Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo'-newtype PipelineCacheCreateFlags = PipelineCacheCreateFlags Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits)----instance Show PipelineCacheCreateFlags where-  showsPrec p = \case-    PipelineCacheCreateFlags x -> showParen (p >= 11) (showString "PipelineCacheCreateFlags 0x" . showHex x)--instance Read PipelineCacheCreateFlags where-  readPrec = parens (choose []-                     +++-                     prec 10 (do-                       expectP (Ident "PipelineCacheCreateFlags")-                       v <- step readPrec-                       pure (PipelineCacheCreateFlags v)))-
src/Graphics/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs view
@@ -2,9 +2,19 @@ module Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits  ( PipelineCreateFlagBits( PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                                                                                     , PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                                                                                     , PIPELINE_CREATE_DERIVATIVE_BIT+                                                                                    , PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT+                                                                                    , PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT+                                                                                    , PIPELINE_CREATE_LIBRARY_BIT_KHR+                                                                                    , PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                                                                                     , PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR                                                                                     , PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR                                                                                     , PIPELINE_CREATE_DEFER_COMPILE_BIT_NV+                                                                                    , PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR+                                                                                    , PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR+                                                                                    , PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR+                                                                                    , PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR+                                                                                    , PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR+                                                                                    , PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR                                                                                     , PIPELINE_CREATE_DISPATCH_BASE_BIT                                                                                     , PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT                                                                                     , ..@@ -31,6 +41,99 @@ -- -- = Description --+-- -   '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.+--+-- -   'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' specifies that the pipeline+--     to be created is allowed to be the parent of a pipeline that will be+--     created in a subsequent pipeline creation call.+--+-- -   'PIPELINE_CREATE_DERIVATIVE_BIT' specifies that the pipeline to be+--     created will be a child of a previously created parent pipeline.+--+-- -   'PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT' specifies that+--     any shader input variables decorated as @ViewIndex@ will be assigned+--     values as if they were decorated as @DeviceIndex@.+--+-- -   'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'+--     specifies that a compute pipeline /can/ be used with+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase'+--     with a non-zero base workgroup.+--+-- -   'PIPELINE_CREATE_DEFER_COMPILE_BIT_NV' specifies that a pipeline is+--     created with all shaders in the deferred state. Before using the+--     pipeline the application /must/ call+--     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV'+--     exactly once on each shader in the pipeline before using the+--     pipeline.+--+-- -   'PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR' specifies that the+--     shader compiler should capture statistics for the executables+--     produced by the compile process which /can/ later be retrieved by+--     calling+--     'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR'.+--     Enabling this flag /must/ not affect the final compiled pipeline but+--     /may/ disable pipeline caching or otherwise affect pipeline creation+--     time.+--+-- -   'PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR' specifies+--     that the shader compiler should capture the internal representations+--     of executables produced by the compile process which /can/ later be+--     retrieved by calling+--     'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'.+--     Enabling this flag /must/ not affect the final compiled pipeline but+--     /may/ disable pipeline caching or otherwise affect pipeline creation+--     time.+--+-- -   'PIPELINE_CREATE_LIBRARY_BIT_KHR' specifies that the pipeline+--     /cannot/ be used directly, and instead defines a /pipeline library/+--     that /can/ be combined with other pipelines using the+--     'Graphics.Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+--     structure. This is available in raytracing pipelines.+--+-- -   'PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--     specifies that an any hit shader will always be present when an any+--     hit shader would be executed.+--+-- -   'PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--     specifies that a closest hit shader will always be present when a+--     closest hit shader would be executed.+--+-- -   'PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR' specifies+--     that a miss shader will always be present when a miss shader would+--     be executed.+--+-- -   'PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--     specifies that an intersection shader will always be present when an+--     intersection shader would be executed.+--+-- -   'PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR' specifies that+--     triangle primitives will be skipped during traversal using+--     @OpTraceKHR@.+--+-- -   'PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR' specifies that AABB+--     primitives will be skipped during traversal using @OpTraceKHR@.+--+-- -   'PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV' specifies that the+--     pipeline can be used in combination with+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commands>.+--+-- -   'PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     specifies that pipeline creation will fail if a compile is required+--     for creation of a valid 'Graphics.Vulkan.Core10.Handles.Pipeline'+--     object;+--     'Graphics.Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+--     will be returned by pipeline creation, and the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' will be set to+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- -   When creating multiple pipelines,+--     'PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT' specifies that+--     control will be returned to the application on failure of the+--     corresponding pipeline rather than continuing to create additional+--     pipelines.+-- -- It is valid to set both 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' and -- 'PIPELINE_CREATE_DERIVATIVE_BIT'. This allows a pipeline to be both a -- parent and possibly a child in a pipeline hierarchy. See@@ -43,47 +146,41 @@ newtype PipelineCreateFlagBits = PipelineCreateFlagBits Flags   deriving newtype (Eq, Ord, Storable, Zero, Bits) --- | '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.+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT" pattern PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = PipelineCreateFlagBits 0x00000001--- | 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' specifies that the pipeline to--- be created is allowed to be the parent of a pipeline that will be--- created in a subsequent call to--- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines' or--- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines'.+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT" pattern PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = PipelineCreateFlagBits 0x00000002--- | 'PIPELINE_CREATE_DERIVATIVE_BIT' specifies that the pipeline to be--- created will be a child of a previously created parent pipeline.+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT" pattern PIPELINE_CREATE_DERIVATIVE_BIT = PipelineCreateFlagBits 0x00000004--- | 'PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR' specifies--- that the shader compiler should capture the internal representations of--- executables produced by the compile process which /can/ later be--- retrieved by calling--- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'.--- Enabling this flag /must/ not affect the final compiled pipeline but--- /may/ disable pipeline caching or otherwise affect pipeline creation--- time.+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"+pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = PipelineCreateFlagBits 0x00000200+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"+pattern PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = PipelineCreateFlagBits 0x00000100+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"+pattern PIPELINE_CREATE_LIBRARY_BIT_KHR = PipelineCreateFlagBits 0x00000800+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"+pattern PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = PipelineCreateFlagBits 0x00040000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR" pattern PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = PipelineCreateFlagBits 0x00000080--- | 'PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR' specifies that the shader--- compiler should capture statistics for the executables produced by the--- compile process which /can/ later be retrieved by calling--- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR'.--- Enabling this flag /must/ not affect the final compiled pipeline but--- /may/ disable pipeline caching or otherwise affect pipeline creation--- time.+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR" pattern PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = PipelineCreateFlagBits 0x00000040--- | 'PIPELINE_CREATE_DEFER_COMPILE_BIT_NV' specifies that a pipeline is--- created with all shaders in the deferred state. Before using the--- pipeline the application /must/ call--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' exactly--- once on each shader in the pipeline before using the pipeline.+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV" pattern PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = PipelineCreateFlagBits 0x00000020+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"+pattern PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = PipelineCreateFlagBits 0x00002000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"+pattern PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = PipelineCreateFlagBits 0x00001000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"+pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00020000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"+pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00010000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"+pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00008000+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"+pattern PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = PipelineCreateFlagBits 0x00004000 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT" pattern PIPELINE_CREATE_DISPATCH_BASE_BIT = PipelineCreateFlagBits 0x00000010--- | 'PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT' specifies that any--- shader input variables decorated as @ViewIndex@ will be assigned values--- as if they were decorated as @DeviceIndex@.+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT" pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = PipelineCreateFlagBits 0x00000008  type PipelineCreateFlags = PipelineCreateFlagBits@@ -93,9 +190,19 @@     PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT -> showString "PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"     PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT -> showString "PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"     PIPELINE_CREATE_DERIVATIVE_BIT -> showString "PIPELINE_CREATE_DERIVATIVE_BIT"+    PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT -> showString "PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"+    PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT -> showString "PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"+    PIPELINE_CREATE_LIBRARY_BIT_KHR -> showString "PIPELINE_CREATE_LIBRARY_BIT_KHR"+    PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV -> showString "PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"     PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR -> showString "PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"     PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR -> showString "PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"     PIPELINE_CREATE_DEFER_COMPILE_BIT_NV -> showString "PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"+    PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"+    PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"+    PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"+    PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"+    PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"+    PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR -> showString "PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"     PIPELINE_CREATE_DISPATCH_BASE_BIT -> showString "PIPELINE_CREATE_DISPATCH_BASE_BIT"     PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT -> showString "PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"     PipelineCreateFlagBits x -> showParen (p >= 11) (showString "PipelineCreateFlagBits 0x" . showHex x)@@ -104,9 +211,19 @@   readPrec = parens (choose [("PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", pure PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)                             , ("PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT", pure PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)                             , ("PIPELINE_CREATE_DERIVATIVE_BIT", pure PIPELINE_CREATE_DERIVATIVE_BIT)+                            , ("PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT", pure PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT)+                            , ("PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT", pure PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT)+                            , ("PIPELINE_CREATE_LIBRARY_BIT_KHR", pure PIPELINE_CREATE_LIBRARY_BIT_KHR)+                            , ("PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV", pure PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV)                             , ("PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR", pure PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR)                             , ("PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR", pure PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR)                             , ("PIPELINE_CREATE_DEFER_COMPILE_BIT_NV", pure PIPELINE_CREATE_DEFER_COMPILE_BIT_NV)+                            , ("PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR)+                            , ("PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR)+                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR)+                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR)+                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR)+                            , ("PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR", pure PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR)                             , ("PIPELINE_CREATE_DISPATCH_BASE_BIT", pure PIPELINE_CREATE_DISPATCH_BASE_BIT)                             , ("PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", pure PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT)]                      +++
src/Graphics/Vulkan/Core10/Enums/PipelineStageFlagBits.hs view
@@ -16,13 +16,13 @@                                                                                   , PIPELINE_STAGE_HOST_BIT                                                                                   , PIPELINE_STAGE_ALL_GRAPHICS_BIT                                                                                   , PIPELINE_STAGE_ALL_COMMANDS_BIT+                                                                                  , PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV                                                                                   , PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT                                                                                   , PIPELINE_STAGE_MESH_SHADER_BIT_NV                                                                                   , PIPELINE_STAGE_TASK_SHADER_BIT_NV-                                                                                  , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV-                                                                                  , PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV                                                                                   , PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV-                                                                                  , PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX+                                                                                  , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR+                                                                                  , PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR                                                                                   , PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT                                                                                   , PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT                                                                                   , ..@@ -84,7 +84,7 @@ -- | 'PIPELINE_STAGE_DRAW_INDIRECT_BIT' specifies the stage of the pipeline -- where Draw\/DispatchIndirect data structures are consumed. This stage -- also includes reading commands written by--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'.+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV'. pattern PIPELINE_STAGE_DRAW_INDIRECT_BIT = PipelineStageFlagBits 0x00000002 -- | 'PIPELINE_STAGE_VERTEX_INPUT_BIT' specifies the stage of the pipeline -- where vertex and index buffers are consumed.@@ -191,6 +191,11 @@ -- every other pipeline stage flag that is supported on the queue it is -- used with. pattern PIPELINE_STAGE_ALL_COMMANDS_BIT = PipelineStageFlagBits 0x00010000+-- | 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the+-- pipeline where device-side preprocessing for generated commands via+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'+-- is handled.+pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = PipelineStageFlagBits 0x00020000 -- | 'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage of -- the pipeline where the fragment density map is read to -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.@@ -199,27 +204,22 @@ pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV = PipelineStageFlagBits 0x00100000 -- | 'PIPELINE_STAGE_TASK_SHADER_BIT_NV' specifies the task shader stage. pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV = PipelineStageFlagBits 0x00080000--- | 'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV' specifies the--- execution of--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',--- and--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'.-pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PipelineStageFlagBits 0x02000000--- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV' specifies the execution of--- the ray tracing shader stages.-pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PipelineStageFlagBits 0x00200000 -- | 'PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV' specifies the stage of the -- pipeline where the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image> -- is read to determine the shading rate for portions of a rasterized -- primitive. pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = PipelineStageFlagBits 0x00400000--- | 'PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX' specifies the stage of the--- pipeline where device-side generation of commands via--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'--- is handled.-pattern PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = PipelineStageFlagBits 0x00020000+-- | 'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the+-- execution of+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyAccelerationStructureKHR',+-- and+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR'.+pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = PipelineStageFlagBits 0x02000000+-- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of+-- the ray tracing shader stages.+pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = PipelineStageFlagBits 0x00200000 -- | 'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of -- the pipeline where the predicate of conditional rendering is consumed. pattern PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = PipelineStageFlagBits 0x00040000@@ -249,13 +249,13 @@     PIPELINE_STAGE_HOST_BIT -> showString "PIPELINE_STAGE_HOST_BIT"     PIPELINE_STAGE_ALL_GRAPHICS_BIT -> showString "PIPELINE_STAGE_ALL_GRAPHICS_BIT"     PIPELINE_STAGE_ALL_COMMANDS_BIT -> showString "PIPELINE_STAGE_ALL_COMMANDS_BIT"+    PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV -> showString "PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"     PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT -> showString "PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"     PIPELINE_STAGE_MESH_SHADER_BIT_NV -> showString "PIPELINE_STAGE_MESH_SHADER_BIT_NV"     PIPELINE_STAGE_TASK_SHADER_BIT_NV -> showString "PIPELINE_STAGE_TASK_SHADER_BIT_NV"-    PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV -> showString "PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"-    PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV -> showString "PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"     PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV -> showString "PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"-    PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX -> showString "PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"+    PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR -> showString "PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"+    PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR -> showString "PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"     PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT -> showString "PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"     PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT -> showString "PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"     PipelineStageFlagBits x -> showParen (p >= 11) (showString "PipelineStageFlagBits 0x" . showHex x)@@ -278,13 +278,13 @@                             , ("PIPELINE_STAGE_HOST_BIT", pure PIPELINE_STAGE_HOST_BIT)                             , ("PIPELINE_STAGE_ALL_GRAPHICS_BIT", pure PIPELINE_STAGE_ALL_GRAPHICS_BIT)                             , ("PIPELINE_STAGE_ALL_COMMANDS_BIT", pure PIPELINE_STAGE_ALL_COMMANDS_BIT)+                            , ("PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV", pure PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV)                             , ("PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", pure PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT)                             , ("PIPELINE_STAGE_MESH_SHADER_BIT_NV", pure PIPELINE_STAGE_MESH_SHADER_BIT_NV)                             , ("PIPELINE_STAGE_TASK_SHADER_BIT_NV", pure PIPELINE_STAGE_TASK_SHADER_BIT_NV)-                            , ("PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV", pure PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV)-                            , ("PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV", pure PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV)                             , ("PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", pure PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV)-                            , ("PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX", pure PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX)+                            , ("PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR", pure PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR)+                            , ("PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR", pure PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR)                             , ("PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", pure PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT)                             , ("PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", pure PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT)]                      +++
src/Graphics/Vulkan/Core10/Enums/PrimitiveTopology.hs view
@@ -35,26 +35,26 @@ -- is described in detail below with a supporting diagram, according to the -- following key: ----- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOC45ODE3ODY3IgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDguOTgxNzg2OCA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSIxMDAuMjYxNiIKICAgICBpbmtzY2FwZTpjeT0iLTEwNC40NTE0NyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDAxIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTExIgogICAgICAgb3JpZ2lueT0iLTY0NS41MDkyMiIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzLjA0MzUsMjMyLjUyNikiPgogICAgPGZsb3dSb290CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgaWQ9ImZsb3dSb290NDcwMSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMzk2ODc1LDAsMCwwLjM5Njg3NSwzLjk0MzI5NTgsLTQ1LjY3NTc1KSI+PGZsb3dSZWdpb24KICAgICAgICAgaWQ9ImZsb3dSZWdpb240NzAzIj48cmVjdAogICAgICAgICAgIGlkPSJyZWN0NDcwNSIKICAgICAgICAgICB3aWR0aD0iMjQwIgogICAgICAgICAgIGhlaWdodD0iMTQwIgogICAgICAgICAgIHg9IjM2LjExNDQ5MSIKICAgICAgICAgICB5PSItOC4yOTk0Mzc1IiAvPjwvZmxvd1JlZ2lvbj48Zmxvd1BhcmEKICAgICAgICAgaWQ9ImZsb3dQYXJhNDcwNyIgLz48L2Zsb3dSb290PiAgICA8Y2lyY2xlCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBpZD0icGF0aDQ1MTctMC04LTUtMi0zIgogICAgICAgY3g9IjEwNy41MzQzOSIKICAgICAgIGN5PSItMjI4LjAzNTExIgogICAgICAgcj0iMy40OTA4OTMxIiAvPgogIDwvZz4KPC9zdmc+Cg== primitive topology key vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Vertex    | A point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only.                  |--- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8Zmxvd1Jvb3QKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBpZD0iZmxvd1Jvb3Q0NzAxIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6NDBweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4zOTY4NzUsMCwwLDAuMzk2ODc1LDMuOTQzMjk1OCwtNDUuNjc1NzUpIj48Zmxvd1JlZ2lvbgogICAgICAgICBpZD0iZmxvd1JlZ2lvbjQ3MDMiPjxyZWN0CiAgICAgICAgICAgaWQ9InJlY3Q0NzA1IgogICAgICAgICAgIHdpZHRoPSIyNDAiCiAgICAgICAgICAgaGVpZ2h0PSIxNDAiCiAgICAgICAgICAgeD0iMzYuMTE0NDkxIgogICAgICAgICAgIHk9Ii04LjI5OTQzNzUiIC8+PC9mbG93UmVnaW9uPjxmbG93UGFyYQogICAgICAgICBpZD0iZmxvd1BhcmE0NzA3IiAvPjwvZmxvd1Jvb3Q+ICAgIDx0ZXh0CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J3NhbnMtc2VyaWYsIE5vcm1hbCc7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjptaWRkbGU7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjE2NDI3Mzk4IgogICAgICAgeD0iMTA3LjUzNDM5IgogICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgIGlkPSJ0ZXh0NTA3MC0yLTItOS05LTQxLTkiPjx0c3BhbgogICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICBpZD0idHNwYW41MDY4LTAtMy0zNi05LTEtNSIKICAgICAgICAgeD0iMTA3LjUzNDM5IgogICAgICAgICB5PSItMTk4LjAzNTA1IgogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LXNpemU6MTZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J3NhbnMtc2VyaWYsIE5vcm1hbCc7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjptaWRkbGU7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxLjE2NDI3Mzk4Ij41PC90c3Bhbj48L3RleHQ+CiAgPC9nPgo8L3N2Zz4K primitive topology key vertex number>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | Vertex    | Sequence position of a vertex within the provided vertex data.                                                                 |--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Number    |                                                                                                                                |--- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTcuNDYxNTcxIgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDU3LjQ2MTU3MSA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNc3RhcnQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJtYXJrZXI2NzQ0LTgtMi0yIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIj4KICAgICAgPHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGg2NzQyLTktNjctNSIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojZmIwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmIwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC40LDAsMCwwLjQsNCwwKSIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSI2NS40Njg2NDgiCiAgICAgaW5rc2NhcGU6Y3k9Ii01NS44NjU2MjgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC41MDkxMSIKICAgICAgIG9yaWdpbnk9Ii01OTUuNTA5MTYiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMy4wNDM1LDE4Mi41MjU5NSkiPgogICAgPGZsb3dSb290CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgaWQ9ImZsb3dSb290NDcwMSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMzk2ODc1LDAsMCwwLjM5Njg3NSwzLjk0MzI5NTgsLTQ1LjY3NTc1KSI+PGZsb3dSZWdpb24KICAgICAgICAgaWQ9ImZsb3dSZWdpb240NzAzIj48cmVjdAogICAgICAgICAgIGlkPSJyZWN0NDcwNSIKICAgICAgICAgICB3aWR0aD0iMjQwIgogICAgICAgICAgIGhlaWdodD0iMTQwIgogICAgICAgICAgIHg9IjM2LjExNDQ5MSIKICAgICAgICAgICB5PSItOC4yOTk0Mzc1IiAvPjwvZmxvd1JlZ2lvbj48Zmxvd1BhcmEKICAgICAgICAgaWQ9ImZsb3dQYXJhNDcwNyIgLz48L2Zsb3dSb290PiAgICA8ZwogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEzMCwzNS4wMDAwNTcpIgogICAgICAgaWQ9ImcxMTkxMy0wIj4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODcyLTItMy0xLTEtNSIKICAgICAgICAgZD0ibSAyODcuNTM0MzksLTIxMy4wMzUxMSBoIC01MCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2ZiMDAwMDtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLXN0YXJ0OnVybCgjbWFya2VyNjc0NC04LTItMikiIC8+CiAgICAgIDxjaXJjbGUKICAgICAgICAgcj0iMy40OTA4OTMxIgogICAgICAgICBjeT0iLTIxMy4wMzUxMSIKICAgICAgICAgY3g9IjIzNy41MzQzOSIKICAgICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTkxLTAtMy04IgogICAgICAgICBzdHlsZT0iZmlsbDojZmYwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K primitive topology key provoking vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Provoking | Provoking vertex within the main primitive. The arrow points along an edge of the relevant primitive, following winding order. |--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Vertex    | Used in                                                                                                                        |--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |           | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading>.       |--- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfZWRnZS5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii05My41NTQwOTgiCiAgICAgaW5rc2NhcGU6Y3k9Ii03NS4yNjg5MjYiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii0zMDkiCiAgICAgICBvcmlnaW55PSItNjQ4LjUwMDAzIiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMjEuNTM0MzksMjI5LjUzNTAzKSI+CiAgICA8Zmxvd1Jvb3QKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBpZD0iZmxvd1Jvb3Q0NzAxIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6NDBweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4zOTY4NzUsMCwwLDAuMzk2ODc1LDMuOTQzMjk1OCwtNDUuNjc1NzUpIj48Zmxvd1JlZ2lvbgogICAgICAgICBpZD0iZmxvd1JlZ2lvbjQ3MDMiPjxyZWN0CiAgICAgICAgICAgaWQ9InJlY3Q0NzA1IgogICAgICAgICAgIHdpZHRoPSIyNDAiCiAgICAgICAgICAgaGVpZ2h0PSIxNDAiCiAgICAgICAgICAgeD0iMzYuMTE0NDkxIgogICAgICAgICAgIHk9Ii04LjI5OTQzNzUiIC8+PC9mbG93UmVnaW9uPjxmbG93UGFyYQogICAgICAgICBpZD0iZmxvd1BhcmE0NzA3IiAvPjwvZmxvd1Jvb3Q+ICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzIyLjUzNDM5LC0yMjguMDM1MDMgaCA4MCIKICAgICAgIGlkPSJwYXRoMjAzMy0xIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key edge>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Primitive | An edge connecting the points of a main primitive.                                                                             |--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Edge      |                                                                                                                                |--- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfYWRqYWNlbmN5X2VkZ2Uuc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItNDcuNTkyMTU3IgogICAgIGlua3NjYXBlOmN5PSItNzAuNzc1MDIzIgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA5IgogICAgICAgb3JpZ2lueT0iLTYyMy41MDAwMyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzIxLjUzNDM5LDIwNC41MzUwMykiPgogICAgPGZsb3dSb290CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgaWQ9ImZsb3dSb290NDcwMSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMzk2ODc1LDAsMCwwLjM5Njg3NSwzLjk0MzI5NTgsLTQ1LjY3NTc1KSI+PGZsb3dSZWdpb24KICAgICAgICAgaWQ9ImZsb3dSZWdpb240NzAzIj48cmVjdAogICAgICAgICAgIGlkPSJyZWN0NDcwNSIKICAgICAgICAgICB3aWR0aD0iMjQwIgogICAgICAgICAgIGhlaWdodD0iMTQwIgogICAgICAgICAgIHg9IjM2LjExNDQ5MSIKICAgICAgICAgICB5PSItOC4yOTk0Mzc1IiAvPjwvZmxvd1JlZ2lvbj48Zmxvd1BhcmEKICAgICAgICAgaWQ9ImZsb3dQYXJhNDcwNyIgLz48L2Zsb3dSb290PiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6NCwgNDtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBkPSJtIDMyMi41MzQzOSwtMjAzLjAzNTAzIGggODAiCiAgICAgICBpZD0icGF0aDIwMzMiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogIDwvZz4KPC9zdmc+Cg== primitive topology key adjacency edge>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Adjacency | Points connected by these lines do not contribute to a main primitive, and are only accessible in a                            |--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Edge      | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shader>.                      |--- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+--- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTUuMDYzODE2IgogICBoZWlnaHQ9IjQ2LjE3ODgyOSIKICAgdmlld0JveD0iMCAwIDU1LjA2MzgxNyA0Ni4xNzg4MyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV93aW5kaW5nX29yZGVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjMwMzktMSIKICAgICAgIHJlZlg9IjAiCiAgICAgICByZWZZPSIwIgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTWVuZCI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjQsMCwwLC0wLjQsLTQsMCkiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAwMDAwMDNwdDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDAsMCA1LC01IC0xMi41LDAgNSw1IFoiCiAgICAgICAgIGlkPSJwYXRoMzAzNy0wIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpZD0ibWFya2VyMjg5MS02IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNZW5kIj4KICAgICAgPHBhdGgKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgaWQ9InBhdGgyODg5LTYiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MU1lbmQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJBcnJvdzFNZW5kLTgwIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg4OTAtMCIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTQwLjU1MDU2IgogICAgIGlua3NjYXBlOmN5PSItOC40MzI2NjQ2IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA3LjAyOTMzIgogICAgICAgb3JpZ2lueT0iLTU2Ni40NjA5NyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzE5LjU2MzcxLDE5MC42NzQ4KSI+CiAgICA8Zmxvd1Jvb3QKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBpZD0iZmxvd1Jvb3Q0NzAxIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6NDBweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4zOTY4NzUsMCwwLDAuMzk2ODc1LDMuOTQzMjk1OCwtNDUuNjc1NzUpIj48Zmxvd1JlZ2lvbgogICAgICAgICBpZD0iZmxvd1JlZ2lvbjQ3MDMiPjxyZWN0CiAgICAgICAgICAgaWQ9InJlY3Q0NzA1IgogICAgICAgICAgIHdpZHRoPSIyNDAiCiAgICAgICAgICAgaGVpZ2h0PSIxNDAiCiAgICAgICAgICAgeD0iMzYuMTE0NDkxIgogICAgICAgICAgIHk9Ii04LjI5OTQzNzUiIC8+PC9mbG93UmVnaW9uPjxmbG93UGFyYQogICAgICAgICBpZD0iZmxvd1BhcmE0NzA3IiAvPjwvZmxvd1Jvb3Q+ICAgIDxnCiAgICAgICBpZD0iZzQzODktODkiCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNTUsLTQ0Ljk5OTk5NSkiPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NjgtNzkiCiAgICAgICAgIGQ9Im0gNjcuNTM0MzkzLC0xMTMuMDM1MSAyMCwtMzAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNtYXJrZXIzMDM5LTEpIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzAtMyIKICAgICAgICAgZD0ibSA5Ny41MzQzOTMsLTE0My4wMzUxIDE5Ljk5OTk5NywzMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLWVuZDp1cmwoI21hcmtlcjI4OTEtNikiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2MiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTg3Mi05IgogICAgICAgICBkPSJNIDExNy41MzQzOSwtMTAzLjAzNTEgSCA2Ny41MzQzOTMiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNBcnJvdzFNZW5kLTgwKSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key winding order>> | Winding   | The relative order in which vertices are defined within a primitive, used in the                                               |--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Order     | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygons-basic facing determination>. |--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |           | This ordering has no specific start or end point.                                                                              |--- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOC45ODE3ODY3IgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDguOTgxNzg2OCA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSIxMDAuMjYxNiIKICAgICBpbmtzY2FwZTpjeT0iLTEwNC40NTE0NyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDAxIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTExIgogICAgICAgb3JpZ2lueT0iLTY0NS41MDkyMiIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzLjA0MzUsMjMyLjUyNikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTItMyIKICAgICAgIGN4PSIxMDcuNTM0MzkiCiAgICAgICBjeT0iLTIyOC4wMzUxMSIKICAgICAgIHI9IjMuNDkwODkzMSIgLz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Vertex    | A point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only.                  |+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8dGV4dAogICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuMjU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjtsZXR0ZXItc3BhY2luZzowcHg7d29yZC1zcGFjaW5nOjBweDt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCIKICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgIHk9Ii0xOTguMDM1MDUiCiAgICAgICBpZD0idGV4dDUwNzAtMi0yLTktOS00MS05Ij48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuNTA2OC0wLTMtMzYtOS0xLTUiCiAgICAgICAgIHg9IjEwNy41MzQzOSIKICAgICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidzYW5zLXNlcmlmLCBOb3JtYWwnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjt3cml0aW5nLW1vZGU6bHItdGI7dGV4dC1hbmNob3I6bWlkZGxlO2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MS4xNjQyNzM5OCI+NTwvdHNwYW4+PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg== primitive topology key vertex number>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Vertex    | Sequence position of a vertex within the provided vertex data.                                                                 |+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Number    |                                                                                                                                |+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTcuNDYxNTcxIgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDU3LjQ2MTU3MSA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV9wcm92b2tpbmdfdmVydGV4LnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTXN0YXJ0IgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgcmVmWT0iMCIKICAgICAgIHJlZlg9IjAiCiAgICAgICBpZD0ibWFya2VyNjc0NC04LTItMiIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSI+CiAgICAgIDxwYXRoCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoNjc0Mi05LTY3LTUiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZiMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I2ZiMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNCwwLDAsMC40LDQsMCkiIC8+CiAgICA8L21hcmtlcj4KICA8L2RlZnM+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iLTEzOC43MDg0NCIKICAgICBpbmtzY2FwZTpjeT0iLTU1Ljg2NTYyOCIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjU5NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNDk1IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODEiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjE5MSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItOTAuNTA5MTEiCiAgICAgICBvcmlnaW55PSItNTk1LjUwOTE2IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDMuMDQzNSwxODIuNTI1OTUpIj4KICAgIDxnCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTMwLDM1LjAwMDA1NykiCiAgICAgICBpZD0iZzExOTEzLTAiPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzItMi0zLTEtMS01IgogICAgICAgICBkPSJtIDI4Ny41MzQzOSwtMjEzLjAzNTExIGggLTUwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmIwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItc3RhcnQ6dXJsKCNtYXJrZXI2NzQ0LTgtMi0yKSIgLz4KICAgICAgPGNpcmNsZQogICAgICAgICByPSIzLjQ5MDg5MzEiCiAgICAgICAgIGN5PSItMjEzLjAzNTExIgogICAgICAgICBjeD0iMjM3LjUzNDM5IgogICAgICAgICBpZD0icGF0aDQ1MTctMC04LTUtOTEtMC0zLTgiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZjAwMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key provoking vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Provoking | Provoking vertex within the main primitive. The arrow points along an edge of the relevant primitive, following winding order. |+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Vertex    | Used in                                                                                                                        |+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |           | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading>.       |+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfZWRnZS5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xNTUuNzc5NSIKICAgICBpbmtzY2FwZTpjeT0iLTQuNTU4MjQ3MyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjI2MiIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNTA3IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODIiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjM4NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA5IgogICAgICAgb3JpZ2lueT0iLTY0OC41MDAwMyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzIxLjUzNDM5LDIyOS41MzUwMykiPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzMjIuNTM0MzksLTIyOC4wMzUwMyBoIDgwIgogICAgICAgaWQ9InBhdGgyMDMzLTEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogIDwvZz4KPC9zdmc+Cg== primitive topology key edge>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Primitive | An edge connecting the points of a main primitive.                                                                             |+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Edge      |                                                                                                                                |+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfYWRqYWNlbmN5X2VkZ2Uuc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTYxLjc4OTkiCiAgICAgaW5rc2NhcGU6Y3k9Ii03MC43NzUwMjMiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjIyMzMiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTM0MyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMzkyIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyOTYiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTMwOSIKICAgICAgIG9yaWdpbnk9Ii02MjMuNTAwMDMiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyMS41MzQzOSwyMDQuNTM1MDMpIj4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTo0LCA0O3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzIyLjUzNDM5LC0yMDMuMDM1MDMgaCA4MCIKICAgICAgIGlkPSJwYXRoMjAzMyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgPC9nPgo8L3N2Zz4K primitive topology key adjacency edge>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Adjacency | Points connected by these lines do not contribute to a main primitive, and are only accessible in a                            |+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Edge      | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shader>.                      |+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTUuMDYzODE2IgogICBoZWlnaHQ9IjQ2LjE3ODgyOSIKICAgdmlld0JveD0iMCAwIDU1LjA2MzgxNyA0Ni4xNzg4MyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV93aW5kaW5nX29yZGVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjMwMzktMSIKICAgICAgIHJlZlg9IjAiCiAgICAgICByZWZZPSIwIgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTWVuZCI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjQsMCwwLC0wLjQsLTQsMCkiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAwMDAwMDNwdDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDAsMCA1LC01IC0xMi41LDAgNSw1IFoiCiAgICAgICAgIGlkPSJwYXRoMzAzNy0wIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpZD0ibWFya2VyMjg5MS02IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNZW5kIj4KICAgICAgPHBhdGgKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgaWQ9InBhdGgyODg5LTYiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MU1lbmQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJBcnJvdzFNZW5kLTgwIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg4OTAtMCIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTQwLjU1MDU2IgogICAgIGlua3NjYXBlOmN5PSItOC40MzI2NjQ2IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA3LjAyOTMzIgogICAgICAgb3JpZ2lueT0iLTU2Ni40NjA5NyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzE5LjU2MzcxLDE5MC42NzQ4KSI+CiAgICA8ZwogICAgICAgaWQ9Imc0Mzg5LTg5IgogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjU1LC00NC45OTk5OTUpIj4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODY4LTc5IgogICAgICAgICBkPSJtIDY3LjUzNDM5MywtMTEzLjAzNTEgMjAsLTMwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjbWFya2VyMzAzOS0xKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODcwLTMiCiAgICAgICAgIGQ9Im0gOTcuNTM0MzkzLC0xNDMuMDM1MSAxOS45OTk5OTcsMzAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNtYXJrZXIyODkxLTYpIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzItOSIKICAgICAgICAgZD0iTSAxMTcuNTM0MzksLTEwMy4wMzUxIEggNjcuNTM0MzkzIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjQXJyb3cxTWVuZC04MCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K primitive topology key winding order>> | Winding   | The relative order in which vertices are defined within a primitive, used in the                                               |+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Order     | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygons-basic facing determination>. |+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |           | This ordering has no specific start or end point.                                                                              |+-- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+ -- -- The diagrams are supported with mathematical definitions where the -- vertices (v) and primitives (p) are numbered starting from 0; v0 is the
src/Graphics/Vulkan/Core10/Enums/QueryType.hs view
@@ -3,7 +3,8 @@                                                          , QUERY_TYPE_PIPELINE_STATISTICS                                                          , QUERY_TYPE_TIMESTAMP                                                          , QUERY_TYPE_PERFORMANCE_QUERY_INTEL-                                                         , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV+                                                         , QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR+                                                         , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR                                                          , QUERY_TYPE_PERFORMANCE_QUERY_KHR                                                          , QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT                                                          , ..@@ -28,7 +29,9 @@ -- = See Also -- -- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.writeAccelerationStructuresPropertiesKHR' newtype QueryType = QueryType Int32   deriving newtype (Eq, Ord, Storable, Zero) @@ -44,9 +47,12 @@ -- | 'QUERY_TYPE_PERFORMANCE_QUERY_INTEL' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance-intel Intel performance query>. pattern QUERY_TYPE_PERFORMANCE_QUERY_INTEL = QueryType 1000210000--- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV' specifies a+-- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying ray tracing serialization acceleration structure size query>+pattern QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = QueryType 1000150000+-- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying ray tracing acceleration structure size query>.-pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QueryType 1000165000+pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = QueryType 1000165000 -- | 'QUERY_TYPE_PERFORMANCE_QUERY_KHR' specifies a -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance performance query>. pattern QUERY_TYPE_PERFORMANCE_QUERY_KHR = QueryType 1000116000@@ -57,7 +63,8 @@              QUERY_TYPE_PIPELINE_STATISTICS,              QUERY_TYPE_TIMESTAMP,              QUERY_TYPE_PERFORMANCE_QUERY_INTEL,-             QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV,+             QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR,+             QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR,              QUERY_TYPE_PERFORMANCE_QUERY_KHR,              QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT :: QueryType #-} @@ -67,7 +74,8 @@     QUERY_TYPE_PIPELINE_STATISTICS -> showString "QUERY_TYPE_PIPELINE_STATISTICS"     QUERY_TYPE_TIMESTAMP -> showString "QUERY_TYPE_TIMESTAMP"     QUERY_TYPE_PERFORMANCE_QUERY_INTEL -> showString "QUERY_TYPE_PERFORMANCE_QUERY_INTEL"-    QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV -> showString "QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"+    QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR -> showString "QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"+    QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR -> showString "QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"     QUERY_TYPE_PERFORMANCE_QUERY_KHR -> showString "QUERY_TYPE_PERFORMANCE_QUERY_KHR"     QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT -> showString "QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"     QueryType x -> showParen (p >= 11) (showString "QueryType " . showsPrec 11 x)@@ -77,7 +85,8 @@                             , ("QUERY_TYPE_PIPELINE_STATISTICS", pure QUERY_TYPE_PIPELINE_STATISTICS)                             , ("QUERY_TYPE_TIMESTAMP", pure QUERY_TYPE_TIMESTAMP)                             , ("QUERY_TYPE_PERFORMANCE_QUERY_INTEL", pure QUERY_TYPE_PERFORMANCE_QUERY_INTEL)-                            , ("QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV", pure QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV)+                            , ("QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR", pure QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR)+                            , ("QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR", pure QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR)                             , ("QUERY_TYPE_PERFORMANCE_QUERY_KHR", pure QUERY_TYPE_PERFORMANCE_QUERY_KHR)                             , ("QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT", pure QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT)]                      +++
src/Graphics/Vulkan/Core10/Enums/Result.hs view
@@ -18,9 +18,15 @@                                                    , ERROR_FORMAT_NOT_SUPPORTED                                                    , ERROR_FRAGMENTED_POOL                                                    , ERROR_UNKNOWN+                                                   , PIPELINE_COMPILE_REQUIRED_EXT+                                                   , OPERATION_NOT_DEFERRED_KHR+                                                   , OPERATION_DEFERRED_KHR+                                                   , THREAD_DONE_KHR+                                                   , THREAD_IDLE_KHR                                                    , ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT                                                    , ERROR_NOT_PERMITTED_EXT                                                    , ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT+                                                   , ERROR_INCOMPATIBLE_VERSION_KHR                                                    , ERROR_INVALID_SHADER_NV                                                    , ERROR_VALIDATION_FAILED_EXT                                                    , ERROR_INCOMPATIBLE_DISPLAY_KHR@@ -66,19 +72,18 @@ -- -- 'ERROR_UNKNOWN' will be returned by an implementation when an unexpected -- error occurs that cannot be attributed to valid behavior of the--- application and implementation.+-- application and implementation. Under these conditions, it /may/ be+-- returned from any command returning a 'Result'. -- -- Note ----- If 'ERROR_UNKNOWN' is received, the application should be checked--- against the latest validation layers to verify correct behavior as much--- as possible. If no issues are identified it could be an implementation+-- 'ERROR_UNKNOWN' is not expected to ever be returned if the application+-- behavior is valid, and if the implementation is bug-free. If+-- 'ERROR_UNKNOWN' is received, the application should be checked against+-- the latest validation layers to verify correct behavior as much as+-- possible. If no issues are identified it could be an implementation -- issue, and the implementor should be contacted for support. ----- This error should not be expected from any command if application--- behavior is valid, and if the implementation is bug-free, but it can be--- returned by /any/ error returning command when that is not the case.--- -- Performance-critical commands generally do not have return codes. If a -- run time error occurs in such commands, the implementation will defer -- reporting the error until a specified point. For commands that record@@ -142,6 +147,22 @@ -- | 'ERROR_UNKNOWN' An unknown error has occurred; either the application -- has provided invalid input, or an implementation failure has occurred. pattern ERROR_UNKNOWN = Result (-13)+-- | 'PIPELINE_COMPILE_REQUIRED_EXT' A requested pipeline creation would have+-- required compilation, but the application requested compilation to not+-- be performed.+pattern PIPELINE_COMPILE_REQUIRED_EXT = Result 1000297000+-- | 'OPERATION_NOT_DEFERRED_KHR' A deferred operation was requested and no+-- operations were deferred.+pattern OPERATION_NOT_DEFERRED_KHR = Result 1000268003+-- | 'OPERATION_DEFERRED_KHR' A deferred operation was requested and at least+-- some of the work was deferred.+pattern OPERATION_DEFERRED_KHR = Result 1000268002+-- | 'THREAD_DONE_KHR' A deferred operation is not complete but there is no+-- work remaining to assign to additional threads.+pattern THREAD_DONE_KHR = Result 1000268001+-- | 'THREAD_IDLE_KHR' A deferred operation is not complete but there is+-- currently no work for this thread to do at the time of this call.+pattern THREAD_IDLE_KHR = Result 1000268000 -- | 'ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT' An operation on a swapchain -- created with -- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT'@@ -153,10 +174,11 @@ pattern ERROR_NOT_PERMITTED_EXT = Result (-1000174001) -- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT" pattern ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = Result (-1000158000)+-- No documentation found for Nested "VkResult" "VK_ERROR_INCOMPATIBLE_VERSION_KHR"+pattern ERROR_INCOMPATIBLE_VERSION_KHR = Result (-1000150000) -- | 'ERROR_INVALID_SHADER_NV' One or more shaders failed to compile or link. -- More details are reported back to the application via--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_debug_report@--- if enabled.+-- @VK_EXT_debug_report@ if enabled. pattern ERROR_INVALID_SHADER_NV = Result (-1000012000) -- No documentation found for Nested "VkResult" "VK_ERROR_VALIDATION_FAILED_EXT" pattern ERROR_VALIDATION_FAILED_EXT = Result (-1000011001)@@ -180,7 +202,9 @@ -- | 'ERROR_SURFACE_LOST_KHR' A surface is no longer available. pattern ERROR_SURFACE_LOST_KHR = Result (-1000000000) -- | 'ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' A buffer creation or memory--- allocation failed because the requested address is not available.+-- allocation failed because the requested address is not available. A+-- shader group handle assignment failed because the requested shader group+-- handle information is no longer valid. pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = Result (-1000257000) -- | 'ERROR_FRAGMENTATION' A descriptor pool creation has failed due to -- fragmentation.@@ -213,9 +237,15 @@              ERROR_FORMAT_NOT_SUPPORTED,              ERROR_FRAGMENTED_POOL,              ERROR_UNKNOWN,+             PIPELINE_COMPILE_REQUIRED_EXT,+             OPERATION_NOT_DEFERRED_KHR,+             OPERATION_DEFERRED_KHR,+             THREAD_DONE_KHR,+             THREAD_IDLE_KHR,              ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,              ERROR_NOT_PERMITTED_EXT,              ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT,+             ERROR_INCOMPATIBLE_VERSION_KHR,              ERROR_INVALID_SHADER_NV,              ERROR_VALIDATION_FAILED_EXT,              ERROR_INCOMPATIBLE_DISPLAY_KHR,@@ -249,9 +279,15 @@     ERROR_FORMAT_NOT_SUPPORTED -> showString "ERROR_FORMAT_NOT_SUPPORTED"     ERROR_FRAGMENTED_POOL -> showString "ERROR_FRAGMENTED_POOL"     ERROR_UNKNOWN -> showString "ERROR_UNKNOWN"+    PIPELINE_COMPILE_REQUIRED_EXT -> showString "PIPELINE_COMPILE_REQUIRED_EXT"+    OPERATION_NOT_DEFERRED_KHR -> showString "OPERATION_NOT_DEFERRED_KHR"+    OPERATION_DEFERRED_KHR -> showString "OPERATION_DEFERRED_KHR"+    THREAD_DONE_KHR -> showString "THREAD_DONE_KHR"+    THREAD_IDLE_KHR -> showString "THREAD_IDLE_KHR"     ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT -> showString "ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"     ERROR_NOT_PERMITTED_EXT -> showString "ERROR_NOT_PERMITTED_EXT"     ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT -> showString "ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"+    ERROR_INCOMPATIBLE_VERSION_KHR -> showString "ERROR_INCOMPATIBLE_VERSION_KHR"     ERROR_INVALID_SHADER_NV -> showString "ERROR_INVALID_SHADER_NV"     ERROR_VALIDATION_FAILED_EXT -> showString "ERROR_VALIDATION_FAILED_EXT"     ERROR_INCOMPATIBLE_DISPLAY_KHR -> showString "ERROR_INCOMPATIBLE_DISPLAY_KHR"@@ -285,9 +321,15 @@                             , ("ERROR_FORMAT_NOT_SUPPORTED", pure ERROR_FORMAT_NOT_SUPPORTED)                             , ("ERROR_FRAGMENTED_POOL", pure ERROR_FRAGMENTED_POOL)                             , ("ERROR_UNKNOWN", pure ERROR_UNKNOWN)+                            , ("PIPELINE_COMPILE_REQUIRED_EXT", pure PIPELINE_COMPILE_REQUIRED_EXT)+                            , ("OPERATION_NOT_DEFERRED_KHR", pure OPERATION_NOT_DEFERRED_KHR)+                            , ("OPERATION_DEFERRED_KHR", pure OPERATION_DEFERRED_KHR)+                            , ("THREAD_DONE_KHR", pure THREAD_DONE_KHR)+                            , ("THREAD_IDLE_KHR", pure THREAD_IDLE_KHR)                             , ("ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT", pure ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT)                             , ("ERROR_NOT_PERMITTED_EXT", pure ERROR_NOT_PERMITTED_EXT)                             , ("ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT", pure ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT)+                            , ("ERROR_INCOMPATIBLE_VERSION_KHR", pure ERROR_INCOMPATIBLE_VERSION_KHR)                             , ("ERROR_INVALID_SHADER_NV", pure ERROR_INVALID_SHADER_NV)                             , ("ERROR_VALIDATION_FAILED_EXT", pure ERROR_VALIDATION_FAILED_EXT)                             , ("ERROR_INCOMPATIBLE_DISPLAY_KHR", pure ERROR_INCOMPATIBLE_DISPLAY_KHR)
src/Graphics/Vulkan/Core10/Enums/SamplerAddressMode.hs view
@@ -45,9 +45,8 @@ -- | 'SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE' specifies that the mirror -- clamp to edge wrap mode will be used. This is only valid if -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>--- is enabled, or if the--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge@--- extension is enabled.+-- is enabled, or if the @VK_KHR_sampler_mirror_clamp_to_edge@ extension is+-- enabled. pattern SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = SamplerAddressMode 4 {-# complete SAMPLER_ADDRESS_MODE_REPEAT,              SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
src/Graphics/Vulkan/Core10/Enums/ShaderStageFlagBits.hs view
@@ -9,12 +9,12 @@                                                                               , SHADER_STAGE_ALL                                                                               , SHADER_STAGE_MESH_BIT_NV                                                                               , SHADER_STAGE_TASK_BIT_NV-                                                                              , SHADER_STAGE_CALLABLE_BIT_NV-                                                                              , SHADER_STAGE_INTERSECTION_BIT_NV-                                                                              , SHADER_STAGE_MISS_BIT_NV-                                                                              , SHADER_STAGE_CLOSEST_HIT_BIT_NV-                                                                              , SHADER_STAGE_ANY_HIT_BIT_NV-                                                                              , SHADER_STAGE_RAYGEN_BIT_NV+                                                                              , SHADER_STAGE_CALLABLE_BIT_KHR+                                                                              , SHADER_STAGE_INTERSECTION_BIT_KHR+                                                                              , SHADER_STAGE_MISS_BIT_KHR+                                                                              , SHADER_STAGE_CLOSEST_HIT_BIT_KHR+                                                                              , SHADER_STAGE_ANY_HIT_BIT_KHR+                                                                              , SHADER_STAGE_RAYGEN_BIT_KHR                                                                               , ..                                                                               )                                                          , ShaderStageFlags@@ -79,18 +79,18 @@ pattern SHADER_STAGE_MESH_BIT_NV = ShaderStageFlagBits 0x00000080 -- | 'SHADER_STAGE_TASK_BIT_NV' specifies the task stage. pattern SHADER_STAGE_TASK_BIT_NV = ShaderStageFlagBits 0x00000040--- | 'SHADER_STAGE_CALLABLE_BIT_NV' specifies the callable stage.-pattern SHADER_STAGE_CALLABLE_BIT_NV = ShaderStageFlagBits 0x00002000--- | 'SHADER_STAGE_INTERSECTION_BIT_NV' specifies the intersection stage.-pattern SHADER_STAGE_INTERSECTION_BIT_NV = ShaderStageFlagBits 0x00001000--- | 'SHADER_STAGE_MISS_BIT_NV' specifies the miss stage.-pattern SHADER_STAGE_MISS_BIT_NV = ShaderStageFlagBits 0x00000800--- | 'SHADER_STAGE_CLOSEST_HIT_BIT_NV' specifies the closest hit stage.-pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV = ShaderStageFlagBits 0x00000400--- | 'SHADER_STAGE_ANY_HIT_BIT_NV' specifies the any-hit stage.-pattern SHADER_STAGE_ANY_HIT_BIT_NV = ShaderStageFlagBits 0x00000200--- | 'SHADER_STAGE_RAYGEN_BIT_NV' specifies the ray generation stage.-pattern SHADER_STAGE_RAYGEN_BIT_NV = ShaderStageFlagBits 0x00000100+-- | 'SHADER_STAGE_CALLABLE_BIT_KHR' specifies the callable stage.+pattern SHADER_STAGE_CALLABLE_BIT_KHR = ShaderStageFlagBits 0x00002000+-- | 'SHADER_STAGE_INTERSECTION_BIT_KHR' specifies the intersection stage.+pattern SHADER_STAGE_INTERSECTION_BIT_KHR = ShaderStageFlagBits 0x00001000+-- | 'SHADER_STAGE_MISS_BIT_KHR' specifies the miss stage.+pattern SHADER_STAGE_MISS_BIT_KHR = ShaderStageFlagBits 0x00000800+-- | 'SHADER_STAGE_CLOSEST_HIT_BIT_KHR' specifies the closest hit stage.+pattern SHADER_STAGE_CLOSEST_HIT_BIT_KHR = ShaderStageFlagBits 0x00000400+-- | 'SHADER_STAGE_ANY_HIT_BIT_KHR' specifies the any-hit stage.+pattern SHADER_STAGE_ANY_HIT_BIT_KHR = ShaderStageFlagBits 0x00000200+-- | 'SHADER_STAGE_RAYGEN_BIT_KHR' specifies the ray generation stage.+pattern SHADER_STAGE_RAYGEN_BIT_KHR = ShaderStageFlagBits 0x00000100  type ShaderStageFlags = ShaderStageFlagBits @@ -106,12 +106,12 @@     SHADER_STAGE_ALL -> showString "SHADER_STAGE_ALL"     SHADER_STAGE_MESH_BIT_NV -> showString "SHADER_STAGE_MESH_BIT_NV"     SHADER_STAGE_TASK_BIT_NV -> showString "SHADER_STAGE_TASK_BIT_NV"-    SHADER_STAGE_CALLABLE_BIT_NV -> showString "SHADER_STAGE_CALLABLE_BIT_NV"-    SHADER_STAGE_INTERSECTION_BIT_NV -> showString "SHADER_STAGE_INTERSECTION_BIT_NV"-    SHADER_STAGE_MISS_BIT_NV -> showString "SHADER_STAGE_MISS_BIT_NV"-    SHADER_STAGE_CLOSEST_HIT_BIT_NV -> showString "SHADER_STAGE_CLOSEST_HIT_BIT_NV"-    SHADER_STAGE_ANY_HIT_BIT_NV -> showString "SHADER_STAGE_ANY_HIT_BIT_NV"-    SHADER_STAGE_RAYGEN_BIT_NV -> showString "SHADER_STAGE_RAYGEN_BIT_NV"+    SHADER_STAGE_CALLABLE_BIT_KHR -> showString "SHADER_STAGE_CALLABLE_BIT_KHR"+    SHADER_STAGE_INTERSECTION_BIT_KHR -> showString "SHADER_STAGE_INTERSECTION_BIT_KHR"+    SHADER_STAGE_MISS_BIT_KHR -> showString "SHADER_STAGE_MISS_BIT_KHR"+    SHADER_STAGE_CLOSEST_HIT_BIT_KHR -> showString "SHADER_STAGE_CLOSEST_HIT_BIT_KHR"+    SHADER_STAGE_ANY_HIT_BIT_KHR -> showString "SHADER_STAGE_ANY_HIT_BIT_KHR"+    SHADER_STAGE_RAYGEN_BIT_KHR -> showString "SHADER_STAGE_RAYGEN_BIT_KHR"     ShaderStageFlagBits x -> showParen (p >= 11) (showString "ShaderStageFlagBits 0x" . showHex x)  instance Read ShaderStageFlagBits where@@ -125,12 +125,12 @@                             , ("SHADER_STAGE_ALL", pure SHADER_STAGE_ALL)                             , ("SHADER_STAGE_MESH_BIT_NV", pure SHADER_STAGE_MESH_BIT_NV)                             , ("SHADER_STAGE_TASK_BIT_NV", pure SHADER_STAGE_TASK_BIT_NV)-                            , ("SHADER_STAGE_CALLABLE_BIT_NV", pure SHADER_STAGE_CALLABLE_BIT_NV)-                            , ("SHADER_STAGE_INTERSECTION_BIT_NV", pure SHADER_STAGE_INTERSECTION_BIT_NV)-                            , ("SHADER_STAGE_MISS_BIT_NV", pure SHADER_STAGE_MISS_BIT_NV)-                            , ("SHADER_STAGE_CLOSEST_HIT_BIT_NV", pure SHADER_STAGE_CLOSEST_HIT_BIT_NV)-                            , ("SHADER_STAGE_ANY_HIT_BIT_NV", pure SHADER_STAGE_ANY_HIT_BIT_NV)-                            , ("SHADER_STAGE_RAYGEN_BIT_NV", pure SHADER_STAGE_RAYGEN_BIT_NV)]+                            , ("SHADER_STAGE_CALLABLE_BIT_KHR", pure SHADER_STAGE_CALLABLE_BIT_KHR)+                            , ("SHADER_STAGE_INTERSECTION_BIT_KHR", pure SHADER_STAGE_INTERSECTION_BIT_KHR)+                            , ("SHADER_STAGE_MISS_BIT_KHR", pure SHADER_STAGE_MISS_BIT_KHR)+                            , ("SHADER_STAGE_CLOSEST_HIT_BIT_KHR", pure SHADER_STAGE_CLOSEST_HIT_BIT_KHR)+                            , ("SHADER_STAGE_ANY_HIT_BIT_KHR", pure SHADER_STAGE_ANY_HIT_BIT_KHR)+                            , ("SHADER_STAGE_RAYGEN_BIT_KHR", pure SHADER_STAGE_RAYGEN_BIT_KHR)]                      +++                      prec 10 (do                        expectP (Ident "ShaderStageFlagBits")
src/Graphics/Vulkan/Core10/Enums/StructureType.hs view
@@ -48,10 +48,24 @@                                                                  , STRUCTURE_TYPE_MEMORY_BARRIER                                                                  , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO                                                                  , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO+                                                                 , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT+                                                                 , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT                                                                  , STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM                                                                  , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV+                                                                 , STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV+                                                                 , STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV+                                                                 , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV+                                                                 , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV+                                                                 , STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV+                                                                 , STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT                                                                  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR                                                                  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR@@ -59,6 +73,7 @@                                                                  , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR                                                                  , STRUCTURE_TYPE_PIPELINE_INFO_KHR                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR+                                                                 , STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT                                                                  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT@@ -102,7 +117,7 @@                                                                  , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL                                                                  , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL                                                                  , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL-                                                                 , STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL+                                                                 , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL                                                                  , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV                                                                  , STRUCTURE_TYPE_CHECKPOINT_DATA_NV@@ -135,8 +150,6 @@                                                                  , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV                                                                  , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV-                                                                 , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV-                                                                 , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV                                                                  , STRUCTURE_TYPE_GEOMETRY_AABB_NV                                                                  , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV                                                                  , STRUCTURE_TYPE_GEOMETRY_NV@@ -157,6 +170,26 @@                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV                                                                  , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV+                                                                 , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR+                                                                 , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR+                                                                 , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR+                                                                 , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR+                                                                 , STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR+                                                                 , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR+                                                                 , STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR+                                                                 , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR+                                                                 , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR+                                                                 , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR                                                                  , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV                                                                  , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT@@ -220,12 +253,6 @@                                                                  , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT                                                                  , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT                                                                  , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV-                                                                 , STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX-                                                                 , STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX-                                                                 , STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX-                                                                 , STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX-                                                                 , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX-                                                                 , STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX                                                                  , STRUCTURE_TYPE_PRESENT_REGIONS_KHR                                                                  , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT@@ -264,6 +291,7 @@                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV                                                                  , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP                                                                  , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD+                                                                 , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX                                                                  , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX                                                                  , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT                                                                  , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT@@ -418,7 +446,7 @@ import GHC.Read (Read(readPrec)) import Text.Read.Lex (Lexeme(Ident)) import Graphics.Vulkan.Zero (Zero)--- | VkStructureType - Vulkan structure types (@stype@)+-- | VkStructureType - Vulkan structure types (@sType@) -- -- = Description --@@ -439,9 +467,19 @@ -- -- = See Also --+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateGeometryTypeInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureDeviceAddressInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryAabbsDataKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryInstancesDataKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureGeometryTrianglesDataKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureMemoryRequirementsInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureVersionKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',@@ -455,7 +493,7 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout', -- 'Graphics.Vulkan.CStruct.Extends.BaseInStructure', -- 'Graphics.Vulkan.CStruct.Extends.BaseOutStructure',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',@@ -472,8 +510,6 @@ -- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps.CalibratedTimestampInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdReserveSpaceForCommandsInfoNVX', -- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo', -- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo', -- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',@@ -483,7 +519,10 @@ -- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureToMemoryInfoKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.CopyDescriptorSet',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyMemoryToAccelerationStructureInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerMarkerInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',@@ -497,6 +536,7 @@ -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV', -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV', -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT', -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',@@ -507,9 +547,8 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo', -- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigCreateInfoNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.DeviceEventInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.DeviceGeneratedCommandsFeaturesNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.DeviceGeneratedCommandsLimitsNVX', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupBindSparseInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',@@ -561,10 +600,14 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo', -- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV', -- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',@@ -582,6 +625,7 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewAddressPropertiesNVX', -- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',@@ -594,7 +638,8 @@ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV', -- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsLayoutCreateInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV', -- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.InitializePerformanceApiInfoINTEL', -- 'Graphics.Vulkan.Core10.DeviceInitialization.InstanceCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.MacOSSurfaceCreateInfoMVK',@@ -615,7 +660,6 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryWin32HandlePropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableCreateInfoNVX', -- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceConfigurationAcquireInfoINTEL', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR',@@ -643,6 +687,9 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties', -- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',@@ -681,14 +728,19 @@ -- 'Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT', -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2', -- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures', -- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties', -- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV', -- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2FeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',@@ -749,6 +801,7 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR', -- 'Graphics.Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo', -- 'Graphics.Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR', -- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo', -- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',@@ -776,11 +829,14 @@ -- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE', -- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo', -- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolCreateInfoINTEL', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL', -- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineInterfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingShaderGroupCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',@@ -836,7 +892,7 @@ -- 'Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV', -- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.Win32SurfaceCreateInfoKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT', -- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.XcbSurfaceCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.XlibSurfaceCreateInfoKHR'@@ -941,6 +997,18 @@ pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = StructureType 47 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO" pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = StructureType 48+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = StructureType 1000300001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = StructureType 1000300000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = StructureType 1000297000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = StructureType 1000290000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = StructureType 1000286001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = StructureType 1000286000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM" pattern STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = StructureType 1000282001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"@@ -949,6 +1017,22 @@ pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = StructureType 1000281001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = StructureType 1000277007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000277006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"+pattern STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = StructureType 1000277005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = StructureType 1000277004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = StructureType 1000277003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = StructureType 1000277002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = StructureType 1000277001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = StructureType 1000277000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = StructureType 1000276000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"@@ -963,6 +1047,8 @@ pattern STRUCTURE_TYPE_PIPELINE_INFO_KHR = StructureType 1000269001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = StructureType 1000269000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR"+pattern STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = StructureType 1000268000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = StructureType 1000265000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"@@ -1049,8 +1135,8 @@ pattern STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = StructureType 1000210002 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL" pattern STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = StructureType 1000210001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL"-pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = StructureType 1000210000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"+pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = StructureType 1000210000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL" pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = StructureType 1000209000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"@@ -1115,10 +1201,6 @@ pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = StructureType 1000165009 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV" pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000165008--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = StructureType 1000165007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"-pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = StructureType 1000165006 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV" pattern STRUCTURE_TYPE_GEOMETRY_AABB_NV = StructureType 1000165005 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"@@ -1159,6 +1241,46 @@ pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = StructureType 1000154000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV" pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = StructureType 1000152000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = StructureType 1000150018+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = StructureType 1000150017+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = StructureType 1000150016+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = StructureType 1000150015+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = StructureType 1000150014+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = StructureType 1000150013+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"+pattern STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150012+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"+pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = StructureType 1000150011+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"+pattern STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = StructureType 1000150010+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = StructureType 1000150009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = StructureType 1000150008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = StructureType 1000150006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = StructureType 1000150005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = StructureType 1000150004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = StructureType 1000150003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = StructureType 1000150002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = StructureType 1000150001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = StructureType 1000150000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = StructureType 1000165007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = StructureType 1000165006 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV" pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = StructureType 1000149000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"@@ -1285,18 +1407,6 @@ pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = StructureType 1000090000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV" pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = StructureType 1000087000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"-pattern STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = StructureType 1000086005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"-pattern STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = StructureType 1000086004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"-pattern STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = StructureType 1000086003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"-pattern STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = StructureType 1000086002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"-pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = StructureType 1000086001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"-pattern STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = StructureType 1000086000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR" pattern STRUCTURE_TYPE_PRESENT_REGIONS_KHR = StructureType 1000084000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"@@ -1373,6 +1483,8 @@ pattern STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = StructureType 1000049000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD" pattern STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = StructureType 1000041000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"+pattern STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = StructureType 1000030001 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX" pattern STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = StructureType 1000030000 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"@@ -1696,10 +1808,24 @@              STRUCTURE_TYPE_MEMORY_BARRIER,              STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,              STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,+             STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT,+             STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT,              STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,              STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,              STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,+             STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV,+             STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV,+             STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV,+             STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV,+             STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,+             STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,              STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,              STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR,@@ -1707,6 +1833,7 @@              STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR,              STRUCTURE_TYPE_PIPELINE_INFO_KHR,              STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,+             STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR,              STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT,              STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT,@@ -1750,7 +1877,7 @@              STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL,              STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL,              STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL,-             STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL,+             STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,              STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,              STRUCTURE_TYPE_CHECKPOINT_DATA_NV,@@ -1783,8 +1910,6 @@              STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,              STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,-             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,-             STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,              STRUCTURE_TYPE_GEOMETRY_AABB_NV,              STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV,              STRUCTURE_TYPE_GEOMETRY_NV,@@ -1805,6 +1930,26 @@              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,              STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,+             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,+             STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR,+             STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR,+             STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR,+             STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR,+             STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR,+             STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR,+             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR,+             STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR,              STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,              STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,@@ -1868,12 +2013,6 @@              STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,              STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,              STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,-             STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,-             STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,-             STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,-             STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,-             STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,-             STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,              STRUCTURE_TYPE_PRESENT_REGIONS_KHR,              STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,@@ -1912,6 +2051,7 @@              STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,              STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,              STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,+             STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,              STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,              STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,              STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,@@ -2101,10 +2241,24 @@     STRUCTURE_TYPE_MEMORY_BARRIER -> showString "STRUCTURE_TYPE_MEMORY_BARRIER"     STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO -> showString "STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"     STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO -> showString "STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"+    STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"+    STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"     STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> showString "STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"     STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"     STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"     STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"+    STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV -> showString "STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"+    STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV -> showString "STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV"+    STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"+    STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV -> showString "STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV"+    STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"+    STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"     STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"     STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"     STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"@@ -2112,6 +2266,7 @@     STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"     STRUCTURE_TYPE_PIPELINE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_INFO_KHR"     STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"+    STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR -> showString "STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR"     STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"     STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"     STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"@@ -2155,7 +2310,7 @@     STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"     STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"     STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL -> showString "STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"-    STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL -> showString "STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL"+    STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL -> showString "STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"     STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"     STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV -> showString "STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"     STRUCTURE_TYPE_CHECKPOINT_DATA_NV -> showString "STRUCTURE_TYPE_CHECKPOINT_DATA_NV"@@ -2188,8 +2343,6 @@     STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"     STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"     STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"-    STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"-    STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV -> showString "STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"     STRUCTURE_TYPE_GEOMETRY_AABB_NV -> showString "STRUCTURE_TYPE_GEOMETRY_AABB_NV"     STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV -> showString "STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"     STRUCTURE_TYPE_GEOMETRY_NV -> showString "STRUCTURE_TYPE_GEOMETRY_NV"@@ -2210,6 +2363,26 @@     STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"     STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"     STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"+    STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR"+    STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"+    STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR"+    STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR"+    STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR -> showString "STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"+    STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR -> showString "STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"+    STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR -> showString "STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR"+    STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"+    STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"+    STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR -> showString "STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR"     STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"     STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"     STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"@@ -2273,12 +2446,6 @@     STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT -> showString "STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"     STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT -> showString "STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"     STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"-    STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX -> showString "STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"-    STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX -> showString "STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"-    STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX -> showString "STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"-    STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX -> showString "STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"-    STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX -> showString "STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"-    STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX -> showString "STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"     STRUCTURE_TYPE_PRESENT_REGIONS_KHR -> showString "STRUCTURE_TYPE_PRESENT_REGIONS_KHR"     STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT -> showString "STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"     STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"@@ -2317,6 +2484,7 @@     STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"     STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP -> showString "STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"     STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD -> showString "STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"+    STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX -> showString "STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"     STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX -> showString "STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"     STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"     STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"@@ -2506,10 +2674,24 @@                             , ("STRUCTURE_TYPE_MEMORY_BARRIER", pure STRUCTURE_TYPE_MEMORY_BARRIER)                             , ("STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO", pure STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO)                             , ("STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO", pure STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO)+                            , ("STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV", pure STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT)+                            , ("STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT)                             , ("STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM", pure STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM)                             , ("STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM", pure STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)+                            , ("STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV", pure STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)+                            , ("STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV", pure STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)+                            , ("STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV", pure STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)+                            , ("STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV", pure STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)+                            , ("STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV", pure STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)+                            , ("STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV", pure STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT)                             , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR)                             , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR)@@ -2517,6 +2699,7 @@                             , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR)                             , ("STRUCTURE_TYPE_PIPELINE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_INFO_KHR)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR)+                            , ("STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR", pure STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT)                             , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT)@@ -2560,7 +2743,7 @@                             , ("STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL)                             , ("STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL)                             , ("STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL", pure STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL)-                            , ("STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL", pure STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL)+                            , ("STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL", pure STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL)                             , ("STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV", pure STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV)                             , ("STRUCTURE_TYPE_CHECKPOINT_DATA_NV", pure STRUCTURE_TYPE_CHECKPOINT_DATA_NV)@@ -2593,8 +2776,6 @@                             , ("STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV", pure STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)                             , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)-                            , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)-                            , ("STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV", pure STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)                             , ("STRUCTURE_TYPE_GEOMETRY_AABB_NV", pure STRUCTURE_TYPE_GEOMETRY_AABB_NV)                             , ("STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV", pure STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)                             , ("STRUCTURE_TYPE_GEOMETRY_NV", pure STRUCTURE_TYPE_GEOMETRY_NV)@@ -2615,6 +2796,26 @@                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV)                             , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV)+                            , ("STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)+                            , ("STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR", pure STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)+                            , ("STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR)+                            , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR)+                            , ("STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR", pure STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)+                            , ("STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR", pure STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)+                            , ("STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR", pure STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR)+                            , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)+                            , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)+                            , ("STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR", pure STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR)                             , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)                             , ("STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT)@@ -2678,12 +2879,6 @@                             , ("STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT", pure STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT)                             , ("STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT", pure STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)                             , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)-                            , ("STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX", pure STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX)-                            , ("STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX", pure STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX)-                            , ("STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX", pure STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX)-                            , ("STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX", pure STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX)-                            , ("STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX", pure STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX)-                            , ("STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX", pure STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX)                             , ("STRUCTURE_TYPE_PRESENT_REGIONS_KHR", pure STRUCTURE_TYPE_PRESENT_REGIONS_KHR)                             , ("STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT", pure STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT)@@ -2722,6 +2917,7 @@                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV)                             , ("STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP", pure STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP)                             , ("STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD", pure STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD)+                            , ("STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX", pure STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX)                             , ("STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX", pure STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX)                             , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)                             , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)
src/Graphics/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs view
@@ -1,5 +1,7 @@ {-# language CPP #-}-module Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits  ( SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX+module Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits  ( SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM+                                                                                            , SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM+                                                                                            , SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX                                                                                             , SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX                                                                                             , ..                                                                                             )@@ -23,12 +25,32 @@ import Graphics.Vulkan.Zero (Zero) -- | VkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass --+-- = Description+--+-- Note+--+-- Shader resolve operations allow for custom resolve operations, but+-- overdrawing pixels /may/ have a performance and\/or power cost.+-- Furthermore, since the contents of any depth stencil attachment or color+-- attachment is undefined at the begining of a shader resolve subpass, any+-- depth testing, stencil testing, or blending which sources these+-- undefined values are also undefined.+-- -- = See Also -- -- 'SubpassDescriptionFlags' newtype SubpassDescriptionFlagBits = SubpassDescriptionFlagBits Flags   deriving newtype (Eq, Ord, Storable, Zero, Bits) +-- | 'SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM' specifies that the subpass+-- performs shader resolve operations.+pattern SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = SubpassDescriptionFlagBits 0x00000008+-- | 'SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM' specifies that the+-- framebuffer region is the fragment region, that is, the minimum region+-- dependencies are by pixel rather than by sample, such that any fragment+-- shader invocation /can/ access any sample associated with that fragment+-- shader invocation.+pattern SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = SubpassDescriptionFlagBits 0x00000004 -- | 'SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX' specifies that -- shaders compiled for this subpass use per-view positions which only -- differ in value in the x component. Per-view viewport mask /can/ also be@@ -46,12 +68,16 @@  instance Show SubpassDescriptionFlagBits where   showsPrec p = \case+    SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM -> showString "SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"+    SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM -> showString "SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"     SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX -> showString "SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"     SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX -> showString "SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"     SubpassDescriptionFlagBits x -> showParen (p >= 11) (showString "SubpassDescriptionFlagBits 0x" . showHex x)  instance Read SubpassDescriptionFlagBits where-  readPrec = parens (choose [("SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX", pure SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX)+  readPrec = parens (choose [("SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM", pure SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM)+                            , ("SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM", pure SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM)+                            , ("SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX", pure SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX)                             , ("SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX", pure SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX)]                      +++                      prec 10 (do
src/Graphics/Vulkan/Core10/Event.hs view
@@ -126,13 +126,17 @@   pEvent <- lift $ peek @Event pPEvent   pure $ (pEvent) --- | A safe wrapper for 'createEvent' and 'destroyEvent' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createEvent' and 'destroyEvent' ----- The allocated value must not be returned from the provided computation-withEvent :: forall r . Device -> EventCreateInfo -> Maybe AllocationCallbacks -> ((Event) -> IO r) -> IO r-withEvent device pCreateInfo pAllocator =-  bracket-    (createEvent device pCreateInfo pAllocator)+-- To ensure that 'destroyEvent' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withEvent :: forall io r . MonadIO io => (io (Event) -> ((Event) -> io ()) -> r) -> Device -> EventCreateInfo -> Maybe AllocationCallbacks -> r+withEvent b device pCreateInfo pAllocator =+  b (createEvent device pCreateInfo pAllocator)     (\(o0) -> destroyEvent device o0 pAllocator)  
src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs view
@@ -4,6 +4,7 @@                                                   , ExtensionProperties(..)                                                   ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -35,7 +36,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Dynamic (getInstanceProcAddr') import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)@@ -266,19 +266,19 @@ instance ToCStruct ExtensionProperties where   withCStruct x f = allocaBytesAligned 260 4 $ \p -> pokeCStruct p x (f p)   pokeCStruct p ExtensionProperties{..} f = do-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (extensionName)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (extensionName)     poke ((p `plusPtr` 256 :: Ptr Word32)) (specVersion)     f   cStructSize = 260   cStructAlignment = 4   pokeZeroCStruct p f = do-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)     poke ((p `plusPtr` 256 :: Ptr Word32)) (zero)     f  instance FromCStruct ExtensionProperties where   peekCStruct p = do-    extensionName <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+    extensionName <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))     specVersion <- peek @Word32 ((p `plusPtr` 256 :: Ptr Word32))     pure $ ExtensionProperties              extensionName specVersion
src/Graphics/Vulkan/Core10/Fence.hs view
@@ -140,13 +140,17 @@   pFence <- lift $ peek @Fence pPFence   pure $ (pFence) --- | A safe wrapper for 'createFence' and 'destroyFence' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createFence' and 'destroyFence' ----- The allocated value must not be returned from the provided computation-withFence :: forall a r . PokeChain a => Device -> FenceCreateInfo a -> Maybe AllocationCallbacks -> ((Fence) -> IO r) -> IO r-withFence device pCreateInfo pAllocator =-  bracket-    (createFence device pCreateInfo pAllocator)+-- To ensure that 'destroyFence' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withFence :: forall a io r . (PokeChain a, MonadIO io) => (io (Fence) -> ((Fence) -> io ()) -> r) -> Device -> FenceCreateInfo a -> Maybe AllocationCallbacks -> r+withFence b device pCreateInfo pAllocator =+  b (createFence device pCreateInfo pAllocator)     (\(o0) -> destroyFence device o0 pAllocator)  
src/Graphics/Vulkan/Core10/FuncPointers.hs view
@@ -129,7 +129,7 @@ -- /must/ not free the old allocation. -- -- @pfnReallocation@ /must/ follow the same--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAllocationFunction_return_rules rules for return values as >.+-- <vkAllocationFunction_return_rules.html rules for return values as >. -- -- = See Also --
src/Graphics/Vulkan/Core10/Handles.hs view
@@ -122,7 +122,6 @@ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2', -- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.getPhysicalDeviceGeneratedCommandsPropertiesNVX', -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2', -- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR',@@ -181,6 +180,7 @@ -- 'Graphics.Vulkan.Core10.CommandBuffer.allocateCommandBuffers', -- 'Graphics.Vulkan.Core10.DescriptorSet.allocateDescriptorSets', -- 'Graphics.Vulkan.Core10.Memory.allocateMemory',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.bindAccelerationStructureMemoryKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV', -- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2',@@ -188,12 +188,18 @@ -- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2', -- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.buildAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.copyAccelerationStructureKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.copyAccelerationStructureToMemoryKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.copyMemoryToAccelerationStructureKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV', -- 'Graphics.Vulkan.Core10.Buffer.createBuffer', -- 'Graphics.Vulkan.Core10.BufferView.createBufferView', -- 'Graphics.Vulkan.Core10.CommandPool.createCommandPool', -- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorPool', -- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorSetLayout', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',@@ -205,11 +211,11 @@ -- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines', -- 'Graphics.Vulkan.Core10.Image.createImage', -- 'Graphics.Vulkan.Core10.ImageView.createImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createIndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createObjectTableNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.createIndirectCommandsLayoutNV', -- 'Graphics.Vulkan.Core10.PipelineCache.createPipelineCache', -- 'Graphics.Vulkan.Core10.PipelineLayout.createPipelineLayout', -- 'Graphics.Vulkan.Core10.Query.createQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Graphics.Vulkan.Core10.Pass.createRenderPass', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',@@ -224,10 +230,13 @@ -- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectNameEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectTagEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.deferredOperationJoinKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.destroyAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV', -- 'Graphics.Vulkan.Core10.Buffer.destroyBuffer', -- 'Graphics.Vulkan.Core10.BufferView.destroyBufferView', -- 'Graphics.Vulkan.Core10.CommandPool.destroyCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorPool', -- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',@@ -238,8 +247,7 @@ -- 'Graphics.Vulkan.Core10.Pass.destroyFramebuffer', -- 'Graphics.Vulkan.Core10.Image.destroyImage', -- 'Graphics.Vulkan.Core10.ImageView.destroyImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyIndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyObjectTableNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.destroyIndirectCommandsLayoutNV', -- 'Graphics.Vulkan.Core10.Pipeline.destroyPipeline', -- 'Graphics.Vulkan.Core10.PipelineCache.destroyPipelineCache', -- 'Graphics.Vulkan.Core10.PipelineLayout.destroyPipelineLayout',@@ -258,7 +266,9 @@ -- 'Graphics.Vulkan.Core10.CommandBuffer.freeCommandBuffers', -- 'Graphics.Vulkan.Core10.DescriptorSet.freeDescriptorSets', -- 'Graphics.Vulkan.Core10.Memory.freeMemory',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getAccelerationStructureDeviceAddressKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getAccelerationStructureMemoryRequirementsKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV', -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',@@ -270,8 +280,11 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress', -- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddressKHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps.getCalibratedTimestampsEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationMaxConcurrencyKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationResultKHR', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport', -- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getDeviceAccelerationStructureCompatibilityKHR', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.getDeviceGroupPeerMemoryFeatures', -- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.getDeviceGroupPeerMemoryFeaturesKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupPresentCapabilitiesKHR',@@ -287,6 +300,7 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.getFenceFdKHR', -- 'Graphics.Vulkan.Core10.Fence.getFenceStatus', -- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.getFenceWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.getGeneratedCommandsMemoryRequirementsNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT', -- 'Graphics.Vulkan.Core10.MemoryManagement.getImageMemoryRequirements', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2',@@ -295,6 +309,7 @@ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2', -- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR', -- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewAddressNVX', -- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewHandleNVX', -- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getMemoryAndroidHardwareBufferANDROID', -- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR',@@ -310,6 +325,8 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutablePropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR', -- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingCaptureReplayShaderGroupHandlesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingShaderGroupHandlesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV', -- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.getRefreshCycleDurationGOOGLE', -- 'Graphics.Vulkan.Core10.Pass.getRenderAreaGranularity',@@ -333,7 +350,6 @@ -- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.mergeValidationCachesEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.registerObjectsNVX', -- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.releaseFullScreenExclusiveModeEXT', -- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.releasePerformanceConfigurationINTEL', -- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.releaseProfilingLockKHR',@@ -354,13 +370,13 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.trimCommandPoolKHR', -- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.uninitializePerformanceApiINTEL', -- 'Graphics.Vulkan.Core10.Memory.unmapMemory',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.unregisterObjectsNVX', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate', -- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR', -- 'Graphics.Vulkan.Core10.DescriptorSet.updateDescriptorSets', -- 'Graphics.Vulkan.Core10.Fence.waitForFences', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.waitSemaphores',--- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR'+-- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.writeAccelerationStructuresPropertiesKHR' data Device = Device   { deviceHandle :: Ptr Device_T   , deviceCmds :: DeviceCmds@@ -404,7 +420,6 @@ -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX', -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo', -- 'Graphics.Vulkan.Core10.CommandBuffer.allocateCommandBuffers', -- 'Graphics.Vulkan.Core10.CommandBuffer.beginCommandBuffer',@@ -419,19 +434,25 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV', -- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyAccelerationStructureToMemoryKHR', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImage', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdCopyMemoryToAccelerationStructureKHR', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT',@@ -463,17 +484,17 @@ -- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer', -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdInsertDebugUtilsLabelEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdNextSubpass2', -- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPushConstants', -- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdReserveSpaceForCommandsNVX', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetEvent', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResolveImage',@@ -500,9 +521,12 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetViewport', -- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV', -- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV', -- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',@@ -523,7 +547,7 @@ -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo', -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',@@ -577,22 +601,22 @@ -- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2', -- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX', -- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT', -- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV', -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsStreamNV', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableIndexBufferEntryNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableVertexBufferEntryNVX', -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseBufferMemoryBindInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.StridedBufferRegionKHR', -- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdBuildAccelerationStructureIndirectKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',@@ -612,6 +636,7 @@ -- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdTraceRaysIndirectKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer', -- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',@@ -684,7 +709,8 @@ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo', -- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV', -- 'Graphics.Vulkan.Core10.ImageView.createImageView',--- 'Graphics.Vulkan.Core10.ImageView.destroyImageView'+-- 'Graphics.Vulkan.Core10.ImageView.destroyImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewAddressNVX' newtype ImageView = ImageView Word64   deriving newtype (Eq, Ord, Storable, Zero)   deriving anyclass (IsHandle)@@ -711,17 +737,25 @@ -- = See Also -- -- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV', -- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTablePipelineEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV', -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.cmdBindPipelineShaderGroupNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV', -- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines', -- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Graphics.Vulkan.Core10.Pipeline.destroyPipeline',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingCaptureReplayShaderGroupHandlesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getRayTracingShaderGroupHandlesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV', -- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD' newtype Pipeline = Pipeline Word64@@ -738,8 +772,8 @@ -- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo', -- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableDescriptorSetEntryNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTablePushConstantEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.IndirectCommandsLayoutTokenNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',@@ -775,7 +809,6 @@ -- = See Also -- -- 'Graphics.Vulkan.Core10.DescriptorSet.CopyDescriptorSet',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableDescriptorSetEntryNVX', -- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet', -- 'Graphics.Vulkan.Core10.DescriptorSet.allocateDescriptorSets', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',@@ -902,6 +935,7 @@ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndQuery', -- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV', -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp', -- 'Graphics.Vulkan.Core10.Query.createQueryPool',@@ -958,6 +992,7 @@ -- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines', -- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines', -- 'Graphics.Vulkan.Core10.PipelineCache.createPipelineCache',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- 'Graphics.Vulkan.Core10.PipelineCache.destroyPipelineCache', -- 'Graphics.Vulkan.Core10.PipelineCache.getPipelineCacheData',
src/Graphics/Vulkan/Core10/Image.hs view
@@ -164,13 +164,17 @@   pImage <- lift $ peek @Image pPImage   pure $ (pImage) --- | A safe wrapper for 'createImage' and 'destroyImage' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createImage' and 'destroyImage' ----- The allocated value must not be returned from the provided computation-withImage :: forall a r . PokeChain a => Device -> ImageCreateInfo a -> Maybe AllocationCallbacks -> ((Image) -> IO r) -> IO r-withImage device pCreateInfo pAllocator =-  bracket-    (createImage device pCreateInfo pAllocator)+-- To ensure that 'destroyImage' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withImage :: forall a io r . (PokeChain a, MonadIO io) => (io (Image) -> ((Image) -> io ()) -> r) -> Device -> ImageCreateInfo a -> Maybe AllocationCallbacks -> r+withImage b device pCreateInfo pAllocator =+  b (createImage device pCreateInfo pAllocator)     (\(o0) -> destroyImage device o0 pAllocator)  @@ -335,18 +339,16 @@ -- -- -   If @image@ was created with the --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'---     external memory handle type, then @image@ /must/ be bound to memory.+--     external memory handle type, then @image@ /must/ be bound to memory -- -- -   If the @tiling@ of the @image@ is --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT', --     then the @aspectMask@ member of @pSubresource@ /must/ be --     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ and the index @i@ /must/ be --     less than the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>---     associated with the image’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo format>---     and---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageDrmFormatModifierPropertiesEXT drmFormatModifier>.+--     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@+--     associated with the image’s @format@ and+--     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@ -- -- == Valid Usage (Implicit) --@@ -540,8 +542,7 @@ -- --     -   If 'ImageCreateInfo'::@pNext@ contains --         'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',---         then @imageCreateDrmFormatModifiers@ contains the exactly the---         modifiers in+--         then @imageCreateDrmFormatModifiers@ contains the entire array --         'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@. -- -- -   Let @VkBool32 imageCreateMaybeLinear@ indicate if the resultant@@ -563,7 +564,7 @@ --         @DRM_FORMAT_MOD_LINEAR@. -- -- -   Let @VkFormatFeatureFlags imageCreateFormatFeatures@ be the set of---     format features available during image creation.+--     valid /format features/ available during image creation. -- --     -   If @tiling@ is --         'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR',@@ -744,7 +745,7 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>) --     /must/ not be undefined @imageCreateMaxMipLevels@, --     @imageCreateMaxArrayLayers@, @imageCreateMaxExtent@, and---     @imageCreateSampleCounts@.+--     @imageCreateSampleCounts@ -- -- -   If @sharingMode@ is --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',@@ -767,19 +768,19 @@ -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' --     structure, and its @externalFormat@ member is non-zero the @format@---     /must/ be 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--     /must/ be 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- -   If the @pNext@ chain does not include a --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' --     structure, or does and its @externalFormat@ member is @0@, the --     @format@ /must/ not be---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' ----- -   @extent.width@ /must/ be greater than @0@.+-- -   @extent.width@ /must/ be greater than @0@ ----- -   @extent.height@ /must/ be greater than @0@.+-- -   @extent.height@ /must/ be greater than @0@ ----- -   @extent.depth@ /must/ be greater than @0@.+-- -   @extent.depth@ /must/ be greater than @0@ -- -- -   @mipLevels@ /must/ be greater than @0@ --@@ -802,15 +803,15 @@ -- -- -   @extent.width@ /must/ be less than or equal to --     @imageCreateMaxExtent.width@ (as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>) -- -- -   @extent.height@ /must/ be less than or equal to --     @imageCreateMaxExtent.height@ (as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>) -- -- -   @extent.depth@ /must/ be less than or equal to --     @imageCreateMaxExtent.depth@ (as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>) -- -- -   If @imageType@ is --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @flags@@@ -829,19 +830,19 @@ -- -- -   @mipLevels@ /must/ be less than or equal to the number of levels in --     the complete mipmap chain based on @extent.width@, @extent.height@,---     and @extent.depth@.+--     and @extent.depth@ -- -- -   @mipLevels@ /must/ be less than or equal to --     @imageCreateMaxMipLevels@ (as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>) -- -- -   @arrayLayers@ /must/ be less than or equal to --     @imageCreateMaxArrayLayers@ (as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>) -- -- -   If @imageType@ is --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',---     @arrayLayers@ /must/ be @1@.+--     @arrayLayers@ /must/ be @1@ -- -- -   If @samples@ is not --     'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT',@@ -902,11 +903,11 @@ --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT', --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT', --     or---     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT' -- -- -   @samples@ /must/ be a bit value that is set in --     @imageCreateSampleCounts@ (as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>) -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisample multisampled storage images>@@ -998,7 +999,7 @@ -- -- -   If the protected memory feature is not enabled, @flags@ /must/ not --     contain---     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'.+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT' -- -- -   If any of the bits --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',@@ -1007,13 +1008,13 @@ --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT' --     are set, --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'---     /must/ not also be set.+--     /must/ not also be set -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV' --     structure, it /must/ not contain a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'---     structure.+--     structure -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'@@ -1053,7 +1054,7 @@ --     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'. and --     @imageCreateMaybeLinear@ (as defined in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)---     /must/ be @false@.+--     /must/ be @false@ -- -- -   If @flags@ contains --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT',@@ -1062,16 +1063,16 @@ --     an --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-etc2 ETC compressed image format>, --     or an---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC compressed image format>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC compressed image format> -- -- -   If @flags@ contains --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT', --     then @flags@ /must/ also contain---     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT' -- -- -   @initialLayout@ /must/ be --     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or---     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'.+--     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED' -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'@@ -1087,7 +1088,7 @@ -- -- -   If the image @format@ is one of those listed in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>,---     @samples@ must be+--     @samples@ /must/ be --     'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- -   If the image @format@ is one of those listed in@@ -1135,7 +1136,7 @@ --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT', --     then the @pNext@ chain /must/ include a --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'---     structure with non-zero @viewFormatCount@.+--     structure with non-zero @viewFormatCount@ -- -- -   If @flags@ contains --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'@@ -1146,7 +1147,7 @@ --     structure whose @handleTypes@ member includes --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID', --     @imageType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'.+--     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'@@ -1154,24 +1155,24 @@ --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID', --     @mipLevels@ /must/ either be @1@ or equal to the number of levels in --     the complete mipmap chain based on @extent.width@, @extent.height@,---     and @extent.depth@.+--     and @extent.depth@ -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' --     structure whose @externalFormat@ member is not @0@, @flags@ /must/ --     not include---     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT' -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' --     structure whose @externalFormat@ member is not @0@, @usage@ /must/ --     not include any usages except---     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'.+--     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID' --     structure whose @externalFormat@ member is not @0@, @tiling@ /must/---     be 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.+--     be 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' -- -- -   If @format@ is a depth-stencil format, @usage@ includes --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',@@ -1263,17 +1264,17 @@ -- -   If @usage@ includes --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV', --     @imageType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'.+--     'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' -- -- -   If @usage@ includes --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV', --     @samples@ /must/ be---     'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'.+--     'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT' -- -- -   If @usage@ includes --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV', --     @tiling@ /must/ be---     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.+--     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' -- -- -   If @flags@ contains --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT',@@ -1581,10 +1582,8 @@ -- then the @aspectMask@ member of 'ImageSubresource' /must/ be one of -- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@, where the maximum allowed -- plane index @i@ is defined by the--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>--- associated with the image’s--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo format>--- and+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@+-- associated with the image’s 'ImageCreateInfo'::@format@ and -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier modifier>. -- The memory range used by the subresource is described by @offset@ and -- @size@. If the image is /disjoint/, then the @offset@ is relative to the
src/Graphics/Vulkan/Core10/ImageView.hs view
@@ -135,14 +135,17 @@   pView <- lift $ peek @ImageView pPView   pure $ (pView) --- | A safe wrapper for 'createImageView' and 'destroyImageView' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createImageView' and 'destroyImageView' ----- The allocated value must not be returned from the provided computation-withImageView :: forall a r . PokeChain a => Device -> ImageViewCreateInfo a -> Maybe AllocationCallbacks -> ((ImageView) -> IO r) -> IO r-withImageView device pCreateInfo pAllocator =-  bracket-    (createImageView device pCreateInfo pAllocator)+-- To ensure that 'destroyImageView' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withImageView :: forall a io r . (PokeChain a, MonadIO io) => (io (ImageView) -> ((ImageView) -> io ()) -> r) -> Device -> ImageViewCreateInfo a -> Maybe AllocationCallbacks -> r+withImageView b device pCreateInfo pAllocator =+  b (createImageView device pCreateInfo pAllocator)     (\(o0) -> destroyImageView device o0 pAllocator)  @@ -548,35 +551,35 @@ -- -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     of the resultant image view /must/ contain at least one bit.+--     of the resultant image view /must/ contain at least one bit -- -- -   If @usage@ contains --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', --     then the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> --     of the resultant image view /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT' -- -- -   If @usage@ contains --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT', --     then the image view’s --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> --     /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT' -- -- -   If @usage@ contains --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT', --     then the image view’s --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> --     /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' -- -- -   If @usage@ contains --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT', --     then the image view’s --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features> --     /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' -- -- -   If @usage@ contains --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',@@ -585,7 +588,7 @@ --     /must/ contain at least one of --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' --     or---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' -- -- -   @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@ --     specified in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when@@ -634,7 +637,7 @@ --     computed from @baseMipLevel@ and @extent.depth@ specified in --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @image@ was --     created, according to the formula defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing> -- -- -   If @subresourceRange.layerCount@ is not --     'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',@@ -649,13 +652,7 @@ --     @baseMipLevel@ and @extent.depth@ specified in --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @image@ was --     created, according to the formula defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.------ -   If @image@ was created with the---     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'---     flag, @format@ /must/ be compatible with the @format@ used to create---     @image@, as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing> -- -- -   If @image@ was created with the --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'@@ -671,12 +668,12 @@ --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT' --     flag, @format@ /must/ be compatible with, or /must/ be an --     uncompressed format that is size-compatible with, the @format@ used---     to create @image@.+--     to create @image@ -- -- -   If @image@ was created with the --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT' --     flag, the @levelCount@ and @layerCount@ members of---     @subresourceRange@ /must/ both be @1@.+--     @subresourceRange@ /must/ both be @1@ -- -- -   If a --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'@@ -685,7 +682,7 @@ --     creating @image@ and the @viewFormatCount@ field of --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo' --     is not zero then @format@ /must/ be one of the formats in---     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@.+--     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@ -- -- -   If @image@ was created with the --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'@@ -715,7 +712,7 @@ --     structure with a @conversion@ value other than --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', all members of --     @components@ /must/ have the value---     'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'.+--     'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY' -- -- -   If @image@ is non-sparse then it /must/ be bound completely and --     contiguously to a single@@ -728,19 +725,19 @@ -- -   If @image@ has an --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>, --     @format@ /must/ be---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' -- -- -   If @image@ has an --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>, --     the @pNext@ chain /must/ include a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo' --     structure with a @conversion@ object created with the same external---     format as @image@.+--     format as @image@ -- -- -   If @image@ has an --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>, --     all members of @components@ /must/ be---     'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'.+--     'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY' -- -- -   If @image@ was created with @usage@ containing --     'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',@@ -808,6 +805,30 @@ --     structure /must/ not include any bits that were not set in the --     @usage@ member of the 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' --     structure used to create @image@+--+-- -   If @viewType@ is+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE'+--     and @subresourceRange.layerCount@ is not+--     'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',+--     @subresourceRange.layerCount@ /must/ be @6@+--+-- -   If @viewType@ is+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'+--     and @subresourceRange.layerCount@ is not+--     'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',+--     @subresourceRange.layerCount@ /must/ be a multiple of @6@+--+-- -   If @viewType@ is+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE'+--     and @subresourceRange.layerCount@ is+--     'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the+--     remaining number of layers /must/ be @6@+--+-- -   If @viewType@ is+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'+--     and @subresourceRange.layerCount@ is+--     'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', the+--     remaining number of layers /must/ be a multiple of @6@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core10/LayerDiscovery.hs view
@@ -4,6 +4,7 @@                                               , LayerProperties(..)                                               ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -33,7 +34,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Dynamic (getInstanceProcAddr') import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)@@ -251,26 +251,26 @@ instance ToCStruct LayerProperties where   withCStruct x f = allocaBytesAligned 520 4 $ \p -> pokeCStruct p x (f p)   pokeCStruct p LayerProperties{..} f = do-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (layerName)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (layerName)     poke ((p `plusPtr` 256 :: Ptr Word32)) (specVersion)     poke ((p `plusPtr` 260 :: Ptr Word32)) (implementationVersion)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 264 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)     f   cStructSize = 520   cStructAlignment = 4   pokeZeroCStruct p f = do-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)     poke ((p `plusPtr` 256 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 264 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)     f  instance FromCStruct LayerProperties where   peekCStruct p = do-    layerName <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+    layerName <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))     specVersion <- peek @Word32 ((p `plusPtr` 256 :: Ptr Word32))     implementationVersion <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))-    description <- packCString (lowerArrayPtr ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+    description <- packCString (lowerArrayPtr ((p `plusPtr` 264 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))     pure $ LayerProperties              layerName specVersion implementationVersion description 
src/Graphics/Vulkan/Core10/Memory.hs view
@@ -161,9 +161,7 @@ -- size of the specified heap. In such cases, allocated memory is tracked -- on a per-device and per-heap basis. Some platforms allow overallocation -- into other heaps. The overallocation behavior /can/ be specified through--- the--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_memory_overallocation_behavior@--- extension.+-- the @VK_AMD_memory_overallocation_behavior@ extension. -- -- == Valid Usage --@@ -174,14 +172,14 @@ --     as returned by --     'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties' --     for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that---     @device@ was created from.+--     @device@ was created from -- -- -   @pAllocateInfo->memoryTypeIndex@ /must/ be less than --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryTypeCount@ --     as returned by --     'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties' --     for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that---     @device@ was created from.+--     @device@ was created from -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>@@ -241,13 +239,17 @@   pMemory <- lift $ peek @DeviceMemory pPMemory   pure $ (pMemory) --- | A safe wrapper for 'allocateMemory' and 'freeMemory' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'allocateMemory' and 'freeMemory' ----- The allocated value must not be returned from the provided computation-withMemory :: forall a r . PokeChain a => Device -> MemoryAllocateInfo a -> Maybe AllocationCallbacks -> ((DeviceMemory) -> IO r) -> IO r-withMemory device pAllocateInfo pAllocator =-  bracket-    (allocateMemory device pAllocateInfo pAllocator)+-- To ensure that 'freeMemory' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withMemory :: forall a io r . (PokeChain a, MonadIO io) => (io (DeviceMemory) -> ((DeviceMemory) -> io ()) -> r) -> Device -> MemoryAllocateInfo a -> Maybe AllocationCallbacks -> r+withMemory b device pAllocateInfo pAllocator =+  b (allocateMemory device pAllocateInfo pAllocator)     (\(o0) -> freeMemory device o0 pAllocator)  @@ -435,7 +437,7 @@ -- -   @memory@ /must/ have been created with a memory type that reports --     'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT' ----- -   @memory@ /must/ not have been allocated with multiple instances.+-- -   @memory@ /must/ not have been allocated with multiple instances -- -- == Valid Usage (Implicit) --@@ -485,13 +487,17 @@   ppData <- lift $ peek @(Ptr ()) pPpData   pure $ (ppData) --- | A safe wrapper for 'mapMemory' and 'unmapMemory' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to 'mapMemory'+-- and 'unmapMemory' ----- The allocated value must not be returned from the provided computation-withMappedMemory :: forall r . Device -> DeviceMemory -> DeviceSize -> DeviceSize -> MemoryMapFlags -> ((Ptr ()) -> IO r) -> IO r-withMappedMemory device memory offset size flags =-  bracket-    (mapMemory device memory offset size flags)+-- To ensure that 'unmapMemory' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withMappedMemory :: forall io r . MonadIO io => (io (Ptr ()) -> ((Ptr ()) -> io ()) -> r) -> Device -> DeviceMemory -> DeviceSize -> DeviceSize -> MemoryMapFlags -> r+withMappedMemory b device memory offset size flags =+  b (mapMemory device memory offset size flags)     (\(_) -> unmapMemory device memory)  @@ -783,7 +789,7 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'::@externalMemoryProperties.externalMemoryFeatures@ --     or --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'::@externalMemoryProperties.externalMemoryFeatures@,---     the @pNext@ chain must include a+--     the @pNext@ chain /must/ include a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo' --     or --     'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'@@ -796,13 +802,13 @@ --     'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV' --     or --     'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV'---     structure.+--     structure -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR' --     structure, it /must/ not include a --     'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV'---     structure.+--     structure -- -- -   If the parameters define an import operation, the external handle --     specified was created by the Vulkan API, and the external handle@@ -810,26 +816,26 @@ --     'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR', --     then the values of @allocationSize@ and @memoryTypeIndex@ /must/ --     match those specified when the memory object being imported was---     created.+--     created -- -- -   If the parameters define an import operation and the external handle --     specified was created by the Vulkan API, the device mask specified --     by --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo' --     /must/ match that specified when the memory object being imported---     was allocated.+--     was allocated -- -- -   If the parameters define an import operation and the external handle --     specified was created by the Vulkan API, the list of physical --     devices that comprise the logical device passed to 'allocateMemory' --     /must/ match the list of physical devices that comprise the logical---     device on which the memory was originally allocated.+--     device on which the memory was originally allocated -- -- -   If the parameters define an import operation and the external handle --     is an NT handle or a global share handle created outside of the --     Vulkan API, the value of @memoryTypeIndex@ /must/ be one of those --     returned by---     'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR'.+--     'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR' -- -- -   If the parameters define an import operation, the external handle --     was created by the Vulkan API, and the external handle type is@@ -838,7 +844,7 @@ --     'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR', --     then the values of @allocationSize@ and @memoryTypeIndex@ /must/ --     match those specified when the memory object being imported was---     created.+--     created -- -- -   If the parameters define an import operation and the external handle --     type is@@ -849,23 +855,23 @@ --     @allocationSize@ /must/ match the size reported in the memory --     requirements of the @image@ or @buffer@ member of the --     'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'---     structure included in the @pNext@ chain.+--     structure included in the @pNext@ chain -- -- -   If the parameters define an import operation and the external handle --     type is --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT', --     @allocationSize@ /must/ match the size specified when creating the---     Direct3D 12 heap from which the external handle was extracted.+--     Direct3D 12 heap from which the external handle was extracted -- -- -   If the parameters define an import operation and the external handle --     is a POSIX file descriptor created outside of the Vulkan API, the --     value of @memoryTypeIndex@ /must/ be one of those returned by---     'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR'.+--     'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR' -- -- -   If the protected memory feature is not enabled, the --     'MemoryAllocateInfo'::@memoryTypeIndex@ /must/ not indicate a memory --     type that reports---     'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'.+--     'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT' -- -- -   If the parameters define an import operation and the external handle --     is a host pointer, the value of @memoryTypeIndex@ /must/ be one of@@ -880,20 +886,20 @@ --     is a host pointer, the @pNext@ chain /must/ not include a --     'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV' --     structure with either its @image@ or @buffer@ field set to a value---     other than 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--     other than 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   If the parameters define an import operation and the external handle --     is a host pointer, the @pNext@ chain /must/ not include a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo' --     structure with either its @image@ or @buffer@ field set to a value---     other than 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--     other than 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   If the parameters define an import operation and the external handle --     type is --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID', --     @allocationSize@ /must/ be the size returned by --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID'---     for the Android hardware buffer.+--     for the Android hardware buffer -- -- -   If the parameters define an import operation and the external handle --     type is@@ -905,14 +911,14 @@ --     is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the Android --     hardware buffer /must/ have a @AHardwareBuffer_Desc@::@format@ of --     @AHARDWAREBUFFER_FORMAT_BLOB@ and a @AHardwareBuffer_Desc@::@usage@---     that includes @AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER@.+--     that includes @AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER@ -- -- -   If the parameters define an import operation and the external handle --     type is --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID', --     @memoryTypeIndex@ /must/ be one of those returned by --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID'---     for the Android hardware buffer.+--     for the Android hardware buffer -- -- -   If the parameters do not define an import operation, and the @pNext@ --     chain includes a@@ -925,7 +931,7 @@ --     structure with @image@ not equal to --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then --     @allocationSize@ /must/ be @0@, otherwise @allocationSize@ /must/ be---     greater than @0@.+--     greater than @0@ -- -- -   If the parameters define an import operation, the external handle is --     an Android hardware buffer, and the @pNext@ chain includes a@@ -936,7 +942,7 @@ --     'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@ --     /must/ include at least one of --     @AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT@ or---     @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@.+--     @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@ -- -- -   If the parameters define an import operation, the external handle is --     an Android hardware buffer, and the @pNext@ chain includes a@@ -949,7 +955,7 @@ --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID' --     in --     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID'::@format@---     for the Android hardware buffer.+--     for the Android hardware buffer -- -- -   If the parameters define an import operation, the external handle is --     an Android hardware buffer, and the @pNext@ chain includes a@@ -957,7 +963,7 @@ --     structure with @image@ that is not --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the width, --     height, and array layer dimensions of @image@ and the Android---     hardware buffer’s @AHardwareBuffer_Desc@ /must/ be identical.+--     hardware buffer’s @AHardwareBuffer_Desc@ /must/ be identical -- -- -   If the parameters define an import operation, the external handle is --     an Android hardware buffer, and the @pNext@ chain includes a@@ -967,7 +973,7 @@ --     hardware buffer’s --     'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@ --     includes @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the @image@---     /must/ have a complete mipmap chain.+--     /must/ have a complete mipmap chain -- -- -   If the parameters define an import operation, the external handle is --     an Android hardware buffer, and the @pNext@ chain includes a@@ -977,7 +983,7 @@ --     hardware buffer’s --     'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@ does --     not include @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the @image@---     /must/ have exactly one mipmap level.+--     /must/ have exactly one mipmap level -- -- -   If the parameters define an import operation, the external handle is --     an Android hardware buffer, and the @pNext@ chain includes a@@ -988,7 +994,7 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>, --     and if there is a corresponding @AHARDWAREBUFFER_USAGE@ bit listed --     that bit /must/ be included in the Android hardware buffer’s---     @AHardwareBuffer_Desc@::@usage@.+--     @AHardwareBuffer_Desc@::@usage@ -- -- -   If --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo'::@opaqueCaptureAddress@@@ -1145,7 +1151,7 @@ --     'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', the end of the --     current mapping of @memory@ /must/ be a multiple of --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@---     bytes from the beginning of the memory object.+--     bytes from the beginning of the memory object -- -- -   @offset@ /must/ be a multiple of --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@@@ -1154,7 +1160,7 @@ --     'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ --     either be a multiple of --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@,---     or @offset@ plus @size@ /must/ equal the size of @memory@.+--     or @offset@ plus @size@ /must/ equal the size of @memory@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core10/MemoryManagement.hs view
@@ -68,8 +68,27 @@ --     structure in which the memory requirements of the buffer object are --     returned. --+-- == Valid Usage+--+-- -   If @buffer@ was created with the+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--     external memory handle type, then @buffer@ /must/ be bound to+--     memory.+-- -- == Valid Usage (Implicit) --+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'+--     handle+--+-- -   @pMemoryRequirements@ /must/ be a valid pointer to a+--     'MemoryRequirements' structure+--+-- -   @buffer@ /must/ have been created, allocated, or retrieved from+--     @device@+-- -- = See Also -- -- 'Graphics.Vulkan.Core10.Handles.Buffer',@@ -151,7 +170,7 @@ --     was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then --     @buffer@ /must/ equal --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@,---     and @memoryOffset@ /must/ be zero.+--     and @memoryOffset@ /must/ be zero -- -- -   If buffer was created with the --     'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'@@ -180,11 +199,21 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@ --     when @buffer@ was created ----- -   If @memory@ was created by a memory import operation, the external---     handle type of the imported memory /must/ also have been set in+-- -   If @memory@ was created by a memory import operation, that is not+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     with a non-@NULL@ @buffer@ value, the external handle type of the+--     imported memory /must/ also have been set in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@ --     when @buffer@ was created --+-- -   If @memory@ was created with the+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     memory import operation with a non-@NULL@ @buffer@ value,+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--     /must/ also have been set in+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+--     when @buffer@ was created+-- -- -   If the --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures'::@bufferDeviceAddress@ --     feature is enabled and @buffer@ was created with the@@ -261,8 +290,30 @@ --     structure in which the memory requirements of the image object are --     returned. --+-- == Valid Usage+--+-- -   @image@ /must/ not have been created with the+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+--     flag set+--+-- -   If @image@ was created with the+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--     external memory handle type, then @image@ /must/ be bound to memory.+-- -- == Valid Usage (Implicit) --+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @image@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+--     handle+--+-- -   @pMemoryRequirements@ /must/ be a valid pointer to a+--     'MemoryRequirements' structure+--+-- -   @image@ /must/ have been created, allocated, or retrieved from+--     @device@+-- -- = See Also -- -- 'Graphics.Vulkan.Core10.Handles.Device',@@ -310,7 +361,7 @@ -- -- -   @image@ /must/ not have been created with the --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'---     set.+--     set -- -- -   @image@ /must/ not already be backed by a memory object --@@ -352,7 +403,7 @@ --     was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then --     @image@ /must/ equal --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@image@---     and @memoryOffset@ /must/ be zero.+--     and @memoryOffset@ /must/ be zero -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing dedicated allocation image aliasing>@@ -373,7 +424,7 @@ --     original image for which the allocation was created; and the --     @arrayLayers@ parameter of the image being bound /must/ be equal to --     or smaller than the original image for which the allocation was---     created.+--     created -- -- -   If image was created with the --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'@@ -402,8 +453,18 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@ --     when @image@ was created ----- -   If @memory@ was created by a memory import operation, the external---     handle type of the imported memory /must/ also have been set in+-- -   If @memory@ was created by a memory import operation, that is not+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     with a non-@NULL@ @buffer@ value, the external handle type of the+--     imported memory /must/ also have been set in+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+--     when @image@ was created+--+-- -   If @memory@ was created with the+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     memory import operation with a non-@NULL@ @buffer@ value,+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--     /must/ also have been set in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@ --     when @image@ was created --
src/Graphics/Vulkan/Core10/OtherTypes.hs view
@@ -189,7 +189,7 @@ --     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or a --     special queue family reserved for external memory ownership --     transfers, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers> -- -- -   If @buffer@ was created with a sharing mode of --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'@@ -204,7 +204,7 @@ --     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it --     /must/ be a valid queue family or a special queue family reserved --     for external memory transfers, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers> -- -- -   If @buffer@ was created with a sharing mode of --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'@@ -212,7 +212,7 @@ --     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it --     /must/ be a valid queue family or a special queue family reserved --     for external memory transfers, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers> -- -- -   If @buffer@ was created with a sharing mode of --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE',@@ -441,14 +441,14 @@ --     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or a --     special queue family reserved for external memory transfers, as --     described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers> -- -- -   If @image@ was created with a sharing mode of --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE' --     and @srcQueueFamilyIndex@ is --     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', --     @dstQueueFamilyIndex@ /must/ also be---     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'.+--     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' -- -- -   If @image@ was created with a sharing mode of --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'@@ -456,7 +456,7 @@ --     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it --     /must/ be a valid queue family or a special queue family reserved --     for external memory transfers, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers> -- -- -   If @image@ was created with a sharing mode of --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'@@ -464,7 +464,7 @@ --     'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it --     /must/ be a valid queue family or a special queue family reserved --     for external memory transfers, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers> -- -- -   If @image@ was created with a sharing mode of --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE',@@ -514,8 +514,9 @@ --     and --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' ----- -   If @image@ has a single-plane color format or is not /disjoint/,---     then the @aspectMask@ member of @subresourceRange@ /must/ be+-- -   If @image@ has a color format and either the format is single-plane+--     or the image is not disjoint then the @aspectMask@ member of+--     @subresourceRange@ /must/ only include --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' -- -- -   If @image@ has a multi-planar format and the image is /disjoint/,
src/Graphics/Vulkan/Core10/Pass.hs view
@@ -34,7 +34,6 @@ import qualified Data.Vector (length) import qualified Data.Vector (null) import Control.Monad.IO.Class (MonadIO)-import Data.Either (Either) import Data.Type.Equality ((:~:)(Refl)) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -179,14 +178,17 @@   pFramebuffer <- lift $ peek @Framebuffer pPFramebuffer   pure $ (pFramebuffer) --- | A safe wrapper for 'createFramebuffer' and 'destroyFramebuffer' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createFramebuffer' and 'destroyFramebuffer' ----- The allocated value must not be returned from the provided computation-withFramebuffer :: forall a r . PokeChain a => Device -> FramebufferCreateInfo a -> Maybe AllocationCallbacks -> ((Framebuffer) -> IO r) -> IO r-withFramebuffer device pCreateInfo pAllocator =-  bracket-    (createFramebuffer device pCreateInfo pAllocator)+-- To ensure that 'destroyFramebuffer' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withFramebuffer :: forall a io r . (PokeChain a, MonadIO io) => (io (Framebuffer) -> ((Framebuffer) -> io ()) -> r) -> Device -> FramebufferCreateInfo a -> Maybe AllocationCallbacks -> r+withFramebuffer b device pCreateInfo pAllocator =+  b (createFramebuffer device pCreateInfo pAllocator)     (\(o0) -> destroyFramebuffer device o0 pAllocator)  @@ -330,14 +332,17 @@   pRenderPass <- lift $ peek @RenderPass pPRenderPass   pure $ (pRenderPass) --- | A safe wrapper for 'createRenderPass' and 'destroyRenderPass' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createRenderPass' and 'destroyRenderPass' ----- The allocated value must not be returned from the provided computation-withRenderPass :: forall a r . PokeChain a => Device -> RenderPassCreateInfo a -> Maybe AllocationCallbacks -> ((RenderPass) -> IO r) -> IO r-withRenderPass device pCreateInfo pAllocator =-  bracket-    (createRenderPass device pCreateInfo pAllocator)+-- To ensure that 'destroyRenderPass' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withRenderPass :: forall a io r . (PokeChain a, MonadIO io) => (io (RenderPass) -> ((RenderPass) -> io ()) -> r) -> Device -> RenderPassCreateInfo a -> Maybe AllocationCallbacks -> r+withRenderPass b device pCreateInfo pAllocator =+  b (createRenderPass device pCreateInfo pAllocator)     (\(o0) -> destroyRenderPass device o0 pAllocator)  @@ -957,16 +962,20 @@ -- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', writes to the -- corresponding location by a fragment are discarded. ----- If @pResolveAttachments@ is not @NULL@, each of its elements corresponds--- to a color attachment (the element in @pColorAttachments@ at the same--- index), and a multisample resolve operation is defined for each+-- If @flags@ does not include+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',+-- and if @pResolveAttachments@ is not @NULL@, each of its elements+-- corresponds to a color attachment (the element in @pColorAttachments@ at+-- the same index), and a multisample resolve operation is defined for each -- attachment. At the end of each subpass, multisample resolve operations -- read the subpass’s color attachments, and resolve the samples for each -- pixel within the render area to the same pixel location in the -- corresponding resolve attachments, unless the resolve attachment index -- is 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'. ----- Similarly, if+-- Similarly, if @flags@ does not include+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',+-- and -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@pDepthStencilResolveAttachment@ -- is not @NULL@ and does not have the value -- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it corresponds@@ -1019,6 +1028,15 @@ -- -- -   The attachment is not used or preserved in subpass __S__. --+-- In addition, the contents of an attachment within the render area become+-- undefined at the start of a subpass __S__ if all of the following+-- conditions are true:+--+-- -   'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM'+--     is set.+--+-- -   The attachment is used as a color or depth\/stencil in the subpass.+-- -- Once the contents of an attachment become undefined in subpass __S__, -- they remain undefined for subpasses in subpass dependency chains -- starting with subpass __S__ until they are written again. However, they@@ -1068,7 +1086,7 @@ --     formats whose features contain at least one of --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' --     or---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' -- -- -   All attachments in @pColorAttachments@ that are not --     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have@@ -1113,12 +1131,39 @@ -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX', --     it /must/ also include---     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'.+--     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX' --+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',+--     and if @pResolveAttachments@ is not @NULL@, then each resolve+--     attachment /must/ be+--     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',+--     and if @pDepthStencilResolveAttachmentKHR@ is not @NULL@, then the+--     depth\/stencil resolve attachment /must/ be+--     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM',+--     then the subpass /must/ be the last subpass in a subpass dependency+--     chain+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',+--     then the sample count of the input attachments /must/ equal+--     @rasterizationSamples@+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM',+--     and if @sampleShadingEnable@ is enabled (explicitly or implicitly)+--     then @minSampleShading@ /must/ equal 0.0+-- -- -   If the render pass is created with --     'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM' --     each of the elements of @pInputAttachments@ /must/ be---     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'.+--     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' -- -- == Valid Usage (Implicit) --@@ -1177,7 +1222,7 @@   , -- | @pResolveAttachments@ is an optional array of @colorAttachmentCount@     -- 'AttachmentReference' structures defining the resolve attachments for     -- this subpass and their layouts.-    resolveAttachments :: Either Word32 (Vector AttachmentReference)+    resolveAttachments :: Vector AttachmentReference   , -- | @pDepthStencilAttachment@ is a pointer to a 'AttachmentReference'     -- structure specifying the depth\/stencil attachment for this subpass and     -- its layout.@@ -1201,19 +1246,19 @@     Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInputAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (inputAttachments)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr AttachmentReference))) (pPInputAttachments')     let pColorAttachmentsLength = Data.Vector.length $ (colorAttachments)-    let pResolveAttachmentsLength = either id (fromIntegral . Data.Vector.length) (resolveAttachments)+    let pResolveAttachmentsLength = Data.Vector.length $ (resolveAttachments)     lift $ unless (fromIntegral pResolveAttachmentsLength == pColorAttachmentsLength || pResolveAttachmentsLength == 0) $       throwIO $ IOError Nothing InvalidArgument "" "pResolveAttachments and pColorAttachments must have the same length" Nothing Nothing     lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral pColorAttachmentsLength :: Word32))     pPColorAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (colorAttachments)) * 8) 4     Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (colorAttachments)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr AttachmentReference))) (pPColorAttachments')-    pResolveAttachments'' <- case (resolveAttachments) of-      Left _ -> pure nullPtr-      Right v -> do-        pPResolveAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (v)) * 8) 4-        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPResolveAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (v)-        pure $ pPResolveAttachments'+    pResolveAttachments'' <- if Data.Vector.null (resolveAttachments)+      then pure nullPtr+      else do+        pPResolveAttachments <- ContT $ allocaBytesAligned @AttachmentReference (((Data.Vector.length (resolveAttachments))) * 8) 4+        Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPResolveAttachments `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) ((resolveAttachments))+        pure $ pPResolveAttachments     lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr AttachmentReference))) pResolveAttachments''     pDepthStencilAttachment'' <- case (depthStencilAttachment) of       Nothing -> pure nullPtr@@ -1250,15 +1295,15 @@     pColorAttachments <- peek @(Ptr AttachmentReference) ((p `plusPtr` 32 :: Ptr (Ptr AttachmentReference)))     pColorAttachments' <- generateM (fromIntegral colorAttachmentCount) (\i -> peekCStruct @AttachmentReference ((pColorAttachments `advancePtrBytes` (8 * (i)) :: Ptr AttachmentReference)))     pResolveAttachments <- peek @(Ptr AttachmentReference) ((p `plusPtr` 40 :: Ptr (Ptr AttachmentReference)))-    pResolveAttachments' <- maybePeek (\j -> generateM (fromIntegral colorAttachmentCount) (\i -> peekCStruct @AttachmentReference (((j) `advancePtrBytes` (8 * (i)) :: Ptr AttachmentReference)))) pResolveAttachments-    let pResolveAttachments'' = maybe (Left colorAttachmentCount) Right pResolveAttachments'+    let pResolveAttachmentsLength = if pResolveAttachments == nullPtr then 0 else (fromIntegral colorAttachmentCount)+    pResolveAttachments' <- generateM pResolveAttachmentsLength (\i -> peekCStruct @AttachmentReference ((pResolveAttachments `advancePtrBytes` (8 * (i)) :: Ptr AttachmentReference)))     pDepthStencilAttachment <- peek @(Ptr AttachmentReference) ((p `plusPtr` 48 :: Ptr (Ptr AttachmentReference)))     pDepthStencilAttachment' <- maybePeek (\j -> peekCStruct @AttachmentReference (j)) pDepthStencilAttachment     preserveAttachmentCount <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))     pPreserveAttachments <- peek @(Ptr Word32) ((p `plusPtr` 64 :: Ptr (Ptr Word32)))     pPreserveAttachments' <- generateM (fromIntegral preserveAttachmentCount) (\i -> peek @Word32 ((pPreserveAttachments `advancePtrBytes` (4 * (i)) :: Ptr Word32)))     pure $ SubpassDescription-             flags pipelineBindPoint pInputAttachments' pColorAttachments' pResolveAttachments'' pDepthStencilAttachment' pPreserveAttachments'+             flags pipelineBindPoint pInputAttachments' pColorAttachments' pResolveAttachments' pDepthStencilAttachment' pPreserveAttachments'  instance Zero SubpassDescription where   zero = SubpassDescription@@ -1266,7 +1311,7 @@            zero            mempty            mempty-           (Left 0)+           mempty            Nothing            mempty @@ -1593,7 +1638,7 @@ --     to --     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL' --     or---     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'.+--     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' -- -- -   For any member of @pAttachments@ with a @stencilLoadOp@ equal to --     'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',@@ -1601,19 +1646,19 @@ --     to --     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL' --     or---     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'.+--     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' -- -- -   For any member of @pAttachments@ with a @loadOp@ equal to --     'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR', --     the first use of that attachment /must/ not specify a @layout@ equal --     to---     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'.+--     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' -- -- -   For any member of @pAttachments@ with a @stencilLoadOp@ equal to --     'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR', --     the first use of that attachment /must/ not specify a @layout@ equal --     to---     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'.+--     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'@@ -1874,17 +1919,18 @@ -- when to overlap execution of subpasses, etc. -- -- It is legal for a subpass to use no color or depth\/stencil attachments,--- and rather use shader side effects such as image stores and atomics to--- produce an output. In this case, the subpass continues to use the--- @width@, @height@, and @layers@ of the framebuffer to define the+-- either because it has no attachment references or because all of them+-- are 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'. This kind+-- of subpass /can/ use shader side effects such as image stores and+-- atomics to produce an output. In this case, the subpass continues to use+-- the @width@, @height@, and @layers@ of the framebuffer to define the -- dimensions of the rendering area, and the @rasterizationSamples@ from -- each pipeline’s -- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' to -- define the number of samples used in rasterization; however, if -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'::@variableMultisampleRate@ -- is 'Graphics.Vulkan.Core10.BaseType.FALSE', then all pipelines to be--- bound with a given zero-attachment subpass /must/ have the same value--- for+-- bound with the subpass /must/ have the same value for -- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@. -- -- == Valid Usage@@ -1894,7 +1940,7 @@ -- -- -   If @flags@ does not include --     'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',---     and @attachmentCount@ is not @0@, @pAttachments@ must be a valid+--     and @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid --     pointer to an array of @attachmentCount@ valid --     'Graphics.Vulkan.Core10.Handles.ImageView' handles --@@ -1929,14 +1975,14 @@ -- -   Each element of @pAttachments@ that is used as a fragment density --     map attachment by @renderPass@ /must/ not have been created with a --     @flags@ value including---     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'.+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT' -- -- -   If @renderPass@ has a fragment density map attachment and --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nonsubsampledimages non-subsample image feature> --     is not enabled, each element of @pAttachments@ /must/ have been --     created with a @flags@ value including --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'---     unless that element is the fragment density map attachment.+--     unless that element is the fragment density map attachment -- -- -   If @flags@ does not include --     'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',@@ -1998,17 +2044,17 @@ --     each element of @pAttachments@ /must/ have been created with the --     identity swizzle ----- -   @width@ /must/ be greater than @0@.+-- -   @width@ /must/ be greater than @0@ -- -- -   @width@ /must/ be less than or equal to --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferWidth@ ----- -   @height@ /must/ be greater than @0@.+-- -   @height@ /must/ be greater than @0@ -- -- -   @height@ /must/ be less than or equal to --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@ ----- -   @layers@ /must/ be greater than @0@.+-- -   @layers@ /must/ be greater than @0@ -- -- -   @layers@ /must/ be less than or equal to --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferLayers@
src/Graphics/Vulkan/Core10/Pipeline.hs view
@@ -24,6 +24,7 @@                                         , GraphicsPipelineCreateInfo(..)                                         ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -70,7 +71,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -101,6 +101,7 @@ import Graphics.Vulkan.CStruct (FromCStruct) import Graphics.Vulkan.CStruct (FromCStruct(..)) import Graphics.Vulkan.Core10.Enums.FrontFace (FrontFace)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GraphicsPipelineShaderGroupsCreateInfoNV) import Graphics.Vulkan.Core10.Enums.LogicOp (LogicOp) import Graphics.Vulkan.CStruct.Extends (PeekChain) import Graphics.Vulkan.CStruct.Extends (PeekChain(..))@@ -233,6 +234,19 @@ --     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' --     flag set --+-- -   If @pipelineCache@ was created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+--+-- Note+--+-- An implicit cache may be provided by the implementation or a layer. For+-- this reason, it is still valid to set+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+-- on @flags@ for any element of @pCreateInfos@ while passing+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' for @pipelineCache@.+-- -- == Valid Usage (Implicit) -- -- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'@@ -265,6 +279,8 @@ -- --     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' --+--     -   'Graphics.Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+-- -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] -- --     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'@@ -279,7 +295,7 @@ -- 'Graphics.Vulkan.Core10.Handles.Device', 'GraphicsPipelineCreateInfo', -- 'Graphics.Vulkan.Core10.Handles.Pipeline', -- 'Graphics.Vulkan.Core10.Handles.PipelineCache'-createGraphicsPipelines :: forall a io . (PokeChain a, MonadIO io) => Device -> PipelineCache -> ("createInfos" ::: Vector (GraphicsPipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (("pipelines" ::: Vector Pipeline))+createGraphicsPipelines :: forall a io . (PokeChain a, MonadIO io) => Device -> PipelineCache -> ("createInfos" ::: Vector (GraphicsPipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, ("pipelines" ::: Vector Pipeline)) createGraphicsPipelines device pipelineCache createInfos allocator = liftIO . evalContT $ do   let vkCreateGraphicsPipelines' = mkVkCreateGraphicsPipelines (pVkCreateGraphicsPipelines (deviceCmds (device :: Device)))   pPCreateInfos <- ContT $ allocaBytesAligned @(GraphicsPipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 144) 8@@ -291,17 +307,20 @@   r <- lift $ vkCreateGraphicsPipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)   lift $ when (r < SUCCESS) (throwIO (VulkanException r))   pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))-  pure $ (pPipelines)+  pure $ (r, pPipelines) --- | A safe wrapper for 'createGraphicsPipelines' and 'destroyPipeline' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createGraphicsPipelines' and 'destroyPipeline' ----- The allocated value must not be returned from the provided computation-withGraphicsPipelines :: forall a r . PokeChain a => Device -> PipelineCache -> Vector (GraphicsPipelineCreateInfo a) -> Maybe AllocationCallbacks -> ((Vector Pipeline) -> IO r) -> IO r-withGraphicsPipelines device pipelineCache pCreateInfos pAllocator =-  bracket-    (createGraphicsPipelines device pipelineCache pCreateInfos pAllocator)-    (\(o0) -> traverse_ (\o0Elem -> destroyPipeline device o0Elem pAllocator) o0)+-- To ensure that 'destroyPipeline' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withGraphicsPipelines :: forall a io r . (PokeChain a, MonadIO io) => (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> Device -> PipelineCache -> Vector (GraphicsPipelineCreateInfo a) -> Maybe AllocationCallbacks -> r+withGraphicsPipelines b device pipelineCache pCreateInfos pAllocator =+  b (createGraphicsPipelines device pipelineCache pCreateInfos pAllocator)+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)   foreign import ccall@@ -352,6 +371,11 @@ --     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' --     flag set --+-- -   If @pipelineCache@ was created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+-- -- == Valid Usage (Implicit) -- -- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'@@ -384,6 +408,8 @@ -- --     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' --+--     -   'Graphics.Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+-- -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] -- --     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'@@ -398,7 +424,7 @@ -- 'ComputePipelineCreateInfo', 'Graphics.Vulkan.Core10.Handles.Device', -- 'Graphics.Vulkan.Core10.Handles.Pipeline', -- 'Graphics.Vulkan.Core10.Handles.PipelineCache'-createComputePipelines :: forall a io . (PokeChain a, MonadIO io) => Device -> PipelineCache -> ("createInfos" ::: Vector (ComputePipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (("pipelines" ::: Vector Pipeline))+createComputePipelines :: forall a io . (PokeChain a, MonadIO io) => Device -> PipelineCache -> ("createInfos" ::: Vector (ComputePipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, ("pipelines" ::: Vector Pipeline)) createComputePipelines device pipelineCache createInfos allocator = liftIO . evalContT $ do   let vkCreateComputePipelines' = mkVkCreateComputePipelines (pVkCreateComputePipelines (deviceCmds (device :: Device)))   pPCreateInfos <- ContT $ allocaBytesAligned @(ComputePipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 96) 8@@ -410,17 +436,20 @@   r <- lift $ vkCreateComputePipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)   lift $ when (r < SUCCESS) (throwIO (VulkanException r))   pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))-  pure $ (pPipelines)+  pure $ (r, pPipelines) --- | A safe wrapper for 'createComputePipelines' and 'destroyPipeline' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createComputePipelines' and 'destroyPipeline' ----- The allocated value must not be returned from the provided computation-withComputePipelines :: forall a r . PokeChain a => Device -> PipelineCache -> Vector (ComputePipelineCreateInfo a) -> Maybe AllocationCallbacks -> ((Vector Pipeline) -> IO r) -> IO r-withComputePipelines device pipelineCache pCreateInfos pAllocator =-  bracket-    (createComputePipelines device pipelineCache pCreateInfos pAllocator)-    (\(o0) -> traverse_ (\o0Elem -> destroyPipeline device o0Elem pAllocator) o0)+-- To ensure that 'destroyPipeline' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withComputePipelines :: forall a io r . (PokeChain a, MonadIO io) => (io (Result, Vector Pipeline) -> ((Result, Vector Pipeline) -> io ()) -> r) -> Device -> PipelineCache -> Vector (ComputePipelineCreateInfo a) -> Maybe AllocationCallbacks -> r+withComputePipelines b device pipelineCache pCreateInfos pAllocator =+  b (createComputePipelines device pipelineCache pCreateInfos pAllocator)+    (\(_, o1) -> traverse_ (\o1Elem -> destroyPipeline device o1Elem pAllocator) o1)   foreign import ccall@@ -749,7 +778,7 @@ --     the identified entry point /must/ have an @OpExecutionMode@ --     instruction that specifies a maximum output vertex count, --     @OutputVertices@, that is greater than @0@ and less than or equal to---     'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputVertices@.+--     'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputVertices@ -- -- -   If @stage@ is --     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV',@@ -757,26 +786,26 @@ --     instruction that specifies a maximum output primitive count, --     @OutputPrimitivesNV@, that is greater than @0@ and less than or --     equal to---     'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputPrimitives@.+--     'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputPrimitives@ -- -- -   If @flags@ has the --     'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT' --     flag set, the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>---     feature /must/ be enabled.+--     feature /must/ be enabled -- -- -   If @flags@ has the --     'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' --     flag set, the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>---     feature /must/ be enabled.+--     feature /must/ be enabled -- -- -   If a --     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' --     structure is included in the @pNext@ chain, @flags@ /must/ not have --     the --     'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'---     flag set.+--     flag set -- -- -   If a --     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'@@ -784,7 +813,7 @@ --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl> --     feature /must/ be enabled, and @stage@ /must/ be a valid bit --     specified in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required-subgroup-size-stages requiredSubgroupSizeStages>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required-subgroup-size-stages requiredSubgroupSizeStages> -- -- -   If a --     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'@@ -794,7 +823,7 @@ --     to the product of --     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'::@requiredSubgroupSize@ --     and---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroups-per-workgroup maxComputeWorkgroupSubgroups>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroups-per-workgroup maxComputeWorkgroupSubgroups> -- -- -   If a --     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'@@ -802,7 +831,7 @@ --     'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' --     flag set, the local workgroup size in the X dimension of the --     pipeline /must/ be a multiple of---     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'::@requiredSubgroupSize@.+--     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'::@requiredSubgroupSize@ -- -- -   If @flags@ has both the --     'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'@@ -810,7 +839,7 @@ --     'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT' --     flags set, the local workgroup size in the X dimension of the --     pipeline /must/ be a multiple of---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maxSubgroupSize>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maxSubgroupSize> -- -- -   If @flags@ has the --     'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'@@ -820,7 +849,7 @@ --     'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' --     structure is included in the @pNext@ chain, the local workgroup size --     in the X dimension of the pipeline /must/ be a multiple of---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize> -- -- == Valid Usage (Implicit) --@@ -852,7 +881,9 @@ -- = See Also -- -- 'ComputePipelineCreateInfo', 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV', -- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Graphics.Vulkan.Core10.Handles.ShaderModule', -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',@@ -996,6 +1027,37 @@ --     stage /must/ be less than or equal to --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@ --+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     or+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+-- -- == Valid Usage (Implicit) -- -- -   @sType@ /must/ be@@ -1282,6 +1344,7 @@ -- = See Also -- -- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV', -- 'Graphics.Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags.PipelineVertexInputStateCreateFlags', -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType', -- 'VertexInputAttributeDescription', 'VertexInputBindingDescription'@@ -1509,6 +1572,7 @@ -- = See Also -- -- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsShaderGroupCreateInfoNV', -- 'Graphics.Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags.PipelineTessellationStateCreateFlags', -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType' data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo@@ -1750,9 +1814,8 @@ --     'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or --     'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV' ----- -   If the---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_NV_fill_rectangle@---     extension is not enabled, @polygonMode@ /must/ not be+-- -   If the @VK_NV_fill_rectangle@ extension is not enabled,+--     @polygonMode@ /must/ not be --     'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV' -- -- == Valid Usage (Implicit)@@ -2142,13 +2205,13 @@ --     'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@ --     is 'Graphics.Vulkan.Core10.BaseType.FALSE' and @colorBlendOp@ is an --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,---     then @colorBlendOp@ /must/ be the same for all attachments.+--     then @colorBlendOp@ /must/ be the same for all attachments -- -- -   If --     'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@ --     is 'Graphics.Vulkan.Core10.BaseType.FALSE' and @alphaBlendOp@ is an --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,---     then @alphaBlendOp@ /must/ be the same for all attachments.+--     then @alphaBlendOp@ /must/ be the same for all attachments -- -- -   If --     'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@@@ -2410,7 +2473,7 @@     pPAttachments' <- ContT $ allocaBytesAligned @PipelineColorBlendAttachmentState ((Data.Vector.length (attachments)) * 32) 4     Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e) . ($ ())) (attachments)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')-    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))     lift $ case (blendConstants) of       (e0, e1, e2, e3) -> do         poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))@@ -2429,7 +2492,7 @@     pPAttachments' <- ContT $ allocaBytesAligned @PipelineColorBlendAttachmentState ((Data.Vector.length (mempty)) * 32) 4     Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e) . ($ ())) (mempty)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')-    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+    let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))     lift $ case ((zero, zero, zero, zero)) of       (e0, e1, e2, e3) -> do         poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))@@ -2448,7 +2511,7 @@     attachmentCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))     pAttachments <- peek @(Ptr PipelineColorBlendAttachmentState) ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState)))     pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peekCStruct @PipelineColorBlendAttachmentState ((pAttachments `advancePtrBytes` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState)))-    let pblendConstants = lowerArrayPtr @CFloat ((p `plusPtr` 40 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+    let pblendConstants = lowerArrayPtr @CFloat ((p `plusPtr` 40 :: Ptr (FixedArray 4 CFloat)))     blendConstants0 <- peek @CFloat ((pblendConstants `advancePtrBytes` 0 :: Ptr CFloat))     blendConstants1 <- peek @CFloat ((pblendConstants `advancePtrBytes` 4 :: Ptr CFloat))     blendConstants2 <- peek @CFloat ((pblendConstants `advancePtrBytes` 8 :: Ptr CFloat))@@ -2813,12 +2876,12 @@ --     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT', --     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT', --     or---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT').+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT') -- -- -   The @stage@ member of one element of @pStages@ /must/ be either --     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' --     or---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'.+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV' -- -- -   The @stage@ member of each element of @pStages@ /must/ not be --     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'@@ -2917,7 +2980,7 @@ --     'Graphics.Vulkan.Core10.BaseType.FALSE' if the attached image’s --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features> --     does not contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'.+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT' -- -- -   If rasterization is not disabled and the subpass uses color --     attachments, the @attachmentCount@ member of @pColorBlendState@@@ -2968,10 +3031,8 @@ --     'Graphics.Vulkan.Core10.BaseType.TRUE', the @depthBiasClamp@ member --     of @pRasterizationState@ /must/ be @0.0@ ----- -   If the---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@---     extension is not enabled and no element of the @pDynamicStates@---     member of @pDynamicState@ is+-- -   If the @VK_EXT_depth_range_unrestricted@ extension is not enabled+--     and no element of the @pDynamicStates@ member of @pDynamicState@ is --     'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', --     and the @depthBoundsTestEnable@ member of @pDepthStencilState@ is --     'Graphics.Vulkan.Core10.BaseType.TRUE', the @minDepthBounds@ and@@ -3065,11 +3126,11 @@ -- -   If the @renderPass@ has multiview enabled and @subpass@ has more --     than one bit set in the view mask and @multiviewTessellationShader@ --     is not enabled, then @pStages@ /must/ not include tessellation---     shaders.+--     shaders -- -- -   If the @renderPass@ has multiview enabled and @subpass@ has more --     than one bit set in the view mask and @multiviewGeometryShader@ is---     not enabled, then @pStages@ /must/ not include a geometry shader.+--     not enabled, then @pStages@ /must/ not include a geometry shader -- -- -   If the @renderPass@ has multiview enabled and @subpass@ has more --     than one bit set in the view mask, shaders in the pipeline /must/@@ -3077,20 +3138,16 @@ -- -- -   If the @renderPass@ has multiview enabled, then all shaders /must/ --     not include variables decorated with the @Layer@ built-in decoration---     in their interfaces.+--     in their interfaces -- -- -   @flags@ /must/ not contain the --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'---     flag.+--     flag -- -- -   If @pStages@ includes a fragment shader stage and an input---     attachment was referenced by the---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'---     at @renderPass@ create time, its shader code /must/ not read from---     any aspect that was not specified in the @aspectMask@ of the---     corresponding---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.InputAttachmentAspectReference'---     structure.+--     attachment was referenced by an @aspectMask@ at @renderPass@+--     creation time, its shader code /must/ only read from the aspects+--     that were specified for that input attachment -- -- -   The number of resources in @layout@ accessible to each shader stage --     that is used by the pipeline /must/ be less than or equal to@@ -3146,7 +3203,7 @@ --     feature /must/ be enabled -- -- -   If there are any mesh shader stages in the pipeline there /must/ not---     be any shader stage in the pipeline with a @Xfb@ execution mode.+--     be any shader stage in the pipeline with a @Xfb@ execution mode -- -- -   If the @lineRasterizationMode@ member of a --     'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'@@ -3168,6 +3225,44 @@ --     'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT' --     /must/ be in the range [1,256] --+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',+--     then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',+--     then all stages /must/ not specify @Xfb@ execution mode+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     or+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+-- -- == Valid Usage (Implicit) -- -- -   @sType@ /must/ be@@ -3176,6 +3271,7 @@ -- -   Each @pNext@ member of any structure (including this one) in the --     @pNext@ chain /must/ be either @NULL@ or a pointer to a valid --     instance of+--     'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV', --     'Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD', --     'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT', --     'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',@@ -3311,6 +3407,7 @@     | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f     | Just Refl <- eqT @e @PipelineRepresentativeFragmentTestStateCreateInfoNV = Just f     | Just Refl <- eqT @e @PipelineDiscardRectangleStateCreateInfoEXT = Just f+    | Just Refl <- eqT @e @GraphicsPipelineShaderGroupsCreateInfoNV = Just f     | otherwise = Nothing  instance PokeChain es => ToCStruct (GraphicsPipelineCreateInfo es) where
src/Graphics/Vulkan/Core10/PipelineCache.hs view
@@ -53,7 +53,7 @@ import Graphics.Vulkan.CStruct (FromCStruct(..)) import Graphics.Vulkan.Core10.Handles (PipelineCache) import Graphics.Vulkan.Core10.Handles (PipelineCache(..))-import Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags (PipelineCacheCreateFlags)+import Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits (PipelineCacheCreateFlags) import Graphics.Vulkan.Core10.Enums.Result (Result) import Graphics.Vulkan.Core10.Enums.Result (Result(..)) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)@@ -100,22 +100,28 @@ -- total host memory consumed. -- -- Once created, a pipeline cache /can/ be passed to the--- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines' and--- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines' commands. If--- the pipeline cache passed into these commands is not+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines'+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',+-- and 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines' commands.+-- If the pipeline cache passed into these commands is not -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the implementation -- will query it for possible reuse opportunities and update it with new -- content. The use of the pipeline cache object in these commands is -- internally synchronized, and the same pipeline cache object /can/ be -- used in multiple threads simultaneously. --+-- If @flags@ of @pCreateInfo@ includes+-- 'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',+-- all commands that modify the returned pipeline cache object /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.+-- -- Note -- -- Implementations /should/ make every effort to limit any critical -- sections to the actual accesses to the cache, which is expected to be--- significantly shorter than the duration of the--- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines' and--- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines' commands.+-- significantly shorter than the duration of the @vkCreate*Pipelines@+-- commands. -- -- == Valid Usage (Implicit) --@@ -164,14 +170,17 @@   pPipelineCache <- lift $ peek @PipelineCache pPPipelineCache   pure $ (pPipelineCache) --- | A safe wrapper for 'createPipelineCache' and 'destroyPipelineCache'--- using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createPipelineCache' and 'destroyPipelineCache' ----- The allocated value must not be returned from the provided computation-withPipelineCache :: forall r . Device -> PipelineCacheCreateInfo -> Maybe AllocationCallbacks -> ((PipelineCache) -> IO r) -> IO r-withPipelineCache device pCreateInfo pAllocator =-  bracket-    (createPipelineCache device pCreateInfo pAllocator)+-- To ensure that 'destroyPipelineCache' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withPipelineCache :: forall io r . MonadIO io => (io (PipelineCache) -> ((PipelineCache) -> io ()) -> r) -> Device -> PipelineCacheCreateInfo -> Maybe AllocationCallbacks -> r+withPipelineCache b device pCreateInfo pAllocator =+  b (createPipelineCache device pCreateInfo pAllocator)     (\(o0) -> destroyPipelineCache device o0 pAllocator)  @@ -475,6 +484,11 @@ -- -   If @initialDataSize@ is not @0@, @pInitialData@ /must/ have been --     retrieved from a previous call to 'getPipelineCacheData' --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'+-- -- == Valid Usage (Implicit) -- -- -   @sType@ /must/ be@@ -482,18 +496,22 @@ -- -- -   @pNext@ /must/ be @NULL@ ----- -   @flags@ /must/ be @0@+-- -   @flags@ /must/ be a valid combination of+--     'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'+--     values -- -- -   If @initialDataSize@ is not @0@, @pInitialData@ /must/ be a valid --     pointer to an array of @initialDataSize@ bytes -- -- = See Also ----- 'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags.PipelineCacheCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlags', -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType', -- 'createPipelineCache' data PipelineCacheCreateInfo = PipelineCacheCreateInfo-  { -- | @flags@ is reserved for future use.+  { -- | @flags@ is a bitmask of+    -- 'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'+    -- specifying the behavior of the pipeline cache.     flags :: PipelineCacheCreateFlags   , -- | @initialDataSize@ is the number of bytes in @pInitialData@. If     -- @initialDataSize@ is zero, the pipeline cache will initially be empty.
src/Graphics/Vulkan/Core10/PipelineLayout.hs view
@@ -127,14 +127,17 @@   pPipelineLayout <- lift $ peek @PipelineLayout pPPipelineLayout   pure $ (pPipelineLayout) --- | A safe wrapper for 'createPipelineLayout' and 'destroyPipelineLayout'--- using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createPipelineLayout' and 'destroyPipelineLayout' ----- The allocated value must not be returned from the provided computation-withPipelineLayout :: forall r . Device -> PipelineLayoutCreateInfo -> Maybe AllocationCallbacks -> ((PipelineLayout) -> IO r) -> IO r-withPipelineLayout device pCreateInfo pAllocator =-  bracket-    (createPipelineLayout device pCreateInfo pAllocator)+-- To ensure that 'destroyPipelineLayout' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withPipelineLayout :: forall io r . MonadIO io => (io (PipelineLayout) -> ((PipelineLayout) -> io ()) -> r) -> Device -> PipelineLayoutCreateInfo -> Maybe AllocationCallbacks -> r+withPipelineLayout b device pCreateInfo pAllocator =+  b (createPipelineLayout device pCreateInfo pAllocator)     (\(o0) -> destroyPipelineLayout device o0 pAllocator)  @@ -560,10 +563,10 @@ --     set -- -- -   The total number of bindings with a @descriptorType@ of---     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'+--     'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR' --     accessible across all shader stages and across all elements of --     @pSetLayouts@ /must/ be less than or equal to---     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'::@maxDescriptorSetAccelerationStructures@+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@maxDescriptorSetAccelerationStructures@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core10/Query.hs view
@@ -55,8 +55,8 @@ import Graphics.Vulkan.Core10.Handles (QueryPool) import Graphics.Vulkan.Core10.Handles (QueryPool(..)) import Graphics.Vulkan.Core10.Enums.QueryPoolCreateFlags (QueryPoolCreateFlags)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolCreateInfoINTEL) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolPerformanceQueryCreateInfoINTEL) import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..)) import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags) import Graphics.Vulkan.Core10.Enums.QueryType (QueryType)@@ -139,14 +139,17 @@   pQueryPool <- lift $ peek @QueryPool pPQueryPool   pure $ (pQueryPool) --- | A safe wrapper for 'createQueryPool' and 'destroyQueryPool' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createQueryPool' and 'destroyQueryPool' ----- The allocated value must not be returned from the provided computation-withQueryPool :: forall a r . PokeChain a => Device -> QueryPoolCreateInfo a -> Maybe AllocationCallbacks -> ((QueryPool) -> IO r) -> IO r-withQueryPool device pCreateInfo pAllocator =-  bracket-    (createQueryPool device pCreateInfo pAllocator)+-- To ensure that 'destroyQueryPool' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withQueryPool :: forall a io r . (PokeChain a, MonadIO io) => (io (QueryPool) -> ((QueryPool) -> io ()) -> r) -> Device -> QueryPoolCreateInfo a -> Maybe AllocationCallbacks -> r+withQueryPool b device pCreateInfo pAllocator =+  b (createQueryPool device pCreateInfo pAllocator)     (\(o0) -> destroyQueryPool device o0 pAllocator)  @@ -493,9 +496,9 @@ -- -   Each @pNext@ member of any structure (including this one) in the --     @pNext@ chain /must/ be either @NULL@ or a pointer to a valid --     instance of---     'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolCreateInfoINTEL'---     or --     'Graphics.Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'+--     or+--     'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL' -- -- -   The @sType@ value of each struct in the @pNext@ chain /must/ be --     unique@@ -538,7 +541,7 @@   getNext QueryPoolCreateInfo{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends QueryPoolCreateInfo e => b) -> Maybe b   extends _ f-    | Just Refl <- eqT @e @QueryPoolCreateInfoINTEL = Just f+    | Just Refl <- eqT @e @QueryPoolPerformanceQueryCreateInfoINTEL = Just f     | Just Refl <- eqT @e @QueryPoolPerformanceCreateInfoKHR = Just f     | otherwise = Nothing 
src/Graphics/Vulkan/Core10/Queue.hs view
@@ -534,7 +534,7 @@ --     'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' -- -- -   Each element of @pWaitDstStageMask@ /must/ not include---     'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'.+--     'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' -- -- -   If any element of @pWaitSemaphores@ or @pSignalSemaphores@ was --     created with a@@ -578,7 +578,7 @@ --     /must/ have a value which does not differ from the current value of --     the semaphore or the value of any outstanding semaphore wait or --     signal operation on that semaphore by more than---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference> -- -- -   For each element of @pSignalSemaphores@ created with a --     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of@@ -588,7 +588,7 @@ --     /must/ have a value which does not differ from the current value of --     the semaphore or the value of any outstanding semaphore wait or --     signal operation on that semaphore by more than---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference> -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
src/Graphics/Vulkan/Core10/QueueSemaphore.hs view
@@ -127,14 +127,17 @@   pSemaphore <- lift $ peek @Semaphore pPSemaphore   pure $ (pSemaphore) --- | A safe wrapper for 'createSemaphore' and 'destroySemaphore' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createSemaphore' and 'destroySemaphore' ----- The allocated value must not be returned from the provided computation-withSemaphore :: forall a r . PokeChain a => Device -> SemaphoreCreateInfo a -> Maybe AllocationCallbacks -> ((Semaphore) -> IO r) -> IO r-withSemaphore device pCreateInfo pAllocator =-  bracket-    (createSemaphore device pCreateInfo pAllocator)+-- To ensure that 'destroySemaphore' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withSemaphore :: forall a io r . (PokeChain a, MonadIO io) => (io (Semaphore) -> ((Semaphore) -> io ()) -> r) -> Device -> SemaphoreCreateInfo a -> Maybe AllocationCallbacks -> r+withSemaphore b device pCreateInfo pAllocator =+  b (createSemaphore device pCreateInfo pAllocator)     (\(o0) -> destroySemaphore device o0 pAllocator)  
src/Graphics/Vulkan/Core10/Sampler.hs view
@@ -139,13 +139,17 @@   pSampler <- lift $ peek @Sampler pPSampler   pure $ (pSampler) --- | A safe wrapper for 'createSampler' and 'destroySampler' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createSampler' and 'destroySampler' ----- The allocated value must not be returned from the provided computation-withSampler :: forall a r . PokeChain a => Device -> SamplerCreateInfo a -> Maybe AllocationCallbacks -> ((Sampler) -> IO r) -> IO r-withSampler device pCreateInfo pAllocator =-  bracket-    (createSampler device pCreateInfo pAllocator)+-- To ensure that 'destroySampler' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withSampler :: forall a io r . (PokeChain a, MonadIO io) => (io (Sampler) -> ((Sampler) -> io ()) -> r) -> Device -> SamplerCreateInfo a -> Maybe AllocationCallbacks -> r+withSampler b device pCreateInfo pAllocator =+  b (createSampler device pCreateInfo pAllocator)     (\(o0) -> destroySampler device o0 pAllocator)  @@ -286,10 +290,12 @@ -- -- -   If --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>---     is enabled and---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'---     is not set for the format, @minFilter@ and @magFilter@ /must/ be---     equal to the sampler Y′CBCR conversion’s @chromaFilter@+--     is enabled and the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>+--     do not support+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT',+--     @minFilter@ and @magFilter@ /must/ be equal to the sampler Y′CBCR+--     conversion’s @chromaFilter@ -- -- -   If @unnormalizedCoordinates@ is --     'Graphics.Vulkan.Core10.BaseType.TRUE', @minFilter@ and @magFilter@@@ -341,8 +347,7 @@ -- -- -   If --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>---     is not enabled, and if the---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge@+--     is not enabled, and if the @VK_KHR_sampler_mirror_clamp_to_edge@ --     extension is not enabled, @addressModeU@, @addressModeV@ and --     @addressModeW@ /must/ not be --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'@@ -363,38 +368,38 @@ -- -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',---     then @minFilter@ and @magFilter@ /must/ be equal.+--     then @minFilter@ and @magFilter@ /must/ be equal -- -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT', --     then @mipmapMode@ /must/ be---     'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST'.+--     'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST' -- -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',---     then @minLod@ and @maxLod@ /must/ be zero.+--     then @minLod@ and @maxLod@ /must/ be zero -- -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT', --     then @addressModeU@ and @addressModeV@ /must/ each be either --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' --     or---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER' -- -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT', --     then @anisotropyEnable@ /must/ be---     'Graphics.Vulkan.Core10.BaseType.FALSE'.+--     'Graphics.Vulkan.Core10.BaseType.FALSE' -- -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT', --     then @compareEnable@ /must/ be---     'Graphics.Vulkan.Core10.BaseType.FALSE'.+--     'Graphics.Vulkan.Core10.BaseType.FALSE' -- -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT', --     then @unnormalizedCoordinates@ /must/ be---     'Graphics.Vulkan.Core10.BaseType.FALSE'.+--     'Graphics.Vulkan.Core10.BaseType.FALSE' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core10/Shader.hs view
@@ -104,9 +104,7 @@ -- If the shader stage fails to compile -- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV' will be -- generated and the compile log will be reported back to the application--- by--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_debug_report@--- if enabled.+-- by @VK_EXT_debug_report@ if enabled. -- -- == Valid Usage (Implicit) --@@ -156,14 +154,17 @@   pShaderModule <- lift $ peek @ShaderModule pPShaderModule   pure $ (pShaderModule) --- | A safe wrapper for 'createShaderModule' and 'destroyShaderModule' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createShaderModule' and 'destroyShaderModule' ----- The allocated value must not be returned from the provided computation-withShaderModule :: forall a r . PokeChain a => Device -> ShaderModuleCreateInfo a -> Maybe AllocationCallbacks -> ((ShaderModule) -> IO r) -> IO r-withShaderModule device pCreateInfo pAllocator =-  bracket-    (createShaderModule device pCreateInfo pAllocator)+-- To ensure that 'destroyShaderModule' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withShaderModule :: forall a io r . (PokeChain a, MonadIO io) => (io (ShaderModule) -> ((ShaderModule) -> io ()) -> r) -> Device -> ShaderModuleCreateInfo a -> Maybe AllocationCallbacks -> r+withShaderModule b device pCreateInfo pAllocator =+  b (createShaderModule device pCreateInfo pAllocator)     (\(o0) -> destroyShaderModule device o0 pAllocator)  @@ -277,7 +278,7 @@ -- -   If @pCode@ declares any of the capabilities listed as /optional/ in --     the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table SPIR-V Environment>---     appendix, the corresponding feature(s) /must/ be enabled.+--     appendix, the corresponding feature(s) /must/ be enabled -- -- == Valid Usage (Implicit) --@@ -350,19 +351,6 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)     pNext' <- fmap castPtr . ContT $ withZeroChain @es     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    lift $ unless (Data.ByteString.length (mempty) .&. 3 == 0) $-      throwIO $ IOError Nothing InvalidArgument "" "code size must be a multiple of 4" Nothing Nothing-    unalignedCode <- ContT $ unsafeUseAsCString (mempty)-    pCode'' <- if ptrToWordPtr unalignedCode .&. 3 == 0-      -- If this pointer is already aligned properly then use it-      then pure $ castPtr @CChar @Word32 unalignedCode-      -- Otherwise allocate and copy the bytes-      else do-        let len = Data.ByteString.length (mempty)-        mem <- ContT $ allocaBytesAligned @Word32 len 4-        lift $ copyBytes mem (castPtr @CChar @Word32 unalignedCode) len-        pure mem-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) pCode''     lift $ f  instance PeekChain es => FromCStruct (ShaderModuleCreateInfo es) where
src/Graphics/Vulkan/Core10/SharedTypes.hs view
@@ -10,6 +10,7 @@                                            , ClearValue(..)                                            ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Marshal.Alloc (callocBytes)@@ -30,7 +31,6 @@ import Data.Word (Word32) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.CStruct (FromCStruct) import Graphics.Vulkan.CStruct (FromCStruct(..))@@ -277,7 +277,7 @@ --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT' -- -- -   @aspectMask@ /must/ not include---     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@.+--     @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@ -- -- -   @layerCount@ /must/ be greater than 0 --@@ -545,10 +545,8 @@ -- -- == Valid Usage ----- -   Unless the---     @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@---     extension is enabled @depth@ /must/ be between @0.0@ and @1.0@,---     inclusive+-- -   Unless the @VK_EXT_depth_range_unrestricted@ extension is enabled+--     @depth@ /must/ be between @0.0@ and @1.0@, inclusive -- -- = See Also --@@ -611,7 +609,7 @@   pokeCStruct :: Ptr ClearColorValue -> ClearColorValue -> IO a -> IO a   pokeCStruct p = (. const) . runContT .  \case     Float32 v -> lift $ do-      let pFloat32 = lowerArrayPtr (castPtr @_ @(Data.Vector.Storable.Sized.Vector 4 CFloat) p)+      let pFloat32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 CFloat) p)       case (v) of         (e0, e1, e2, e3) -> do           poke (pFloat32 :: Ptr CFloat) (CFloat (e0))@@ -619,7 +617,7 @@           poke (pFloat32 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))           poke (pFloat32 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))     Int32 v -> lift $ do-      let pInt32 = lowerArrayPtr (castPtr @_ @(Data.Vector.Storable.Sized.Vector 4 Int32) p)+      let pInt32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Int32) p)       case (v) of         (e0, e1, e2, e3) -> do           poke (pInt32 :: Ptr Int32) (e0)@@ -627,7 +625,7 @@           poke (pInt32 `plusPtr` 8 :: Ptr Int32) (e2)           poke (pInt32 `plusPtr` 12 :: Ptr Int32) (e3)     Uint32 v -> lift $ do-      let pUint32 = lowerArrayPtr (castPtr @_ @(Data.Vector.Storable.Sized.Vector 4 Word32) p)+      let pUint32 = lowerArrayPtr (castPtr @_ @(FixedArray 4 Word32) p)       case (v) of         (e0, e1, e2, e3) -> do           poke (pUint32 :: Ptr Word32) (e0)
src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs view
@@ -377,13 +377,13 @@ -- -   When a semaphore wait operation referring to a binary semaphore --     defined by any element of the @pWaitSemaphores@ member of any --     element of @pBindInfo@ executes on @queue@, there /must/ be no other---     queues waiting on the same semaphore.+--     queues waiting on the same semaphore -- -- -   All elements of the @pWaitSemaphores@ member of all elements of --     @pBindInfo@ member referring to a binary semaphore /must/ be --     semaphores that are signaled, or have --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>---     previously submitted for execution.+--     previously submitted for execution -- -- -   All elements of the @pWaitSemaphores@ member of all elements of --     @pBindInfo@ created with a@@ -391,7 +391,7 @@ --     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY' --     /must/ reference a semaphore signal operation that has been --     submitted for execution and any semaphore signal operations on which---     it depends (if any) /must/ have also been submitted for execution.+--     it depends (if any) /must/ have also been submitted for execution -- -- == Valid Usage (Implicit) --@@ -651,14 +651,14 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@ --     or --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@---     when the resource was created.+--     when the resource was created -- -- -   If @memory@ was created by a memory import operation, the external --     handle type of the imported memory /must/ also have been set in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@ --     or --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@---     when the resource was created.+--     when the resource was created -- -- == Valid Usage (Implicit) --@@ -787,12 +787,12 @@ --     not equal to @0@, at least one handle type it contained /must/ also --     have been set in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@---     when the image was created.+--     when the image was created -- -- -   If @memory@ was created by a memory import operation, the external --     handle type of the imported memory /must/ also have been set in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@---     when @image@ was created.+--     when @image@ was created -- -- == Valid Usage (Implicit) --@@ -1020,6 +1020,10 @@ --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @image@ was --     created --+-- -   @image@ /must/ have been created with+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--     set+-- -- == Valid Usage (Implicit) -- -- -   @image@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'@@ -1122,7 +1126,7 @@ --     /must/ have a value which does not differ from the current value of --     the semaphore or from the value of any outstanding semaphore wait or --     signal operation on that semaphore by more than---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference> -- -- -   For each element of @pSignalSemaphores@ created with a --     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of@@ -1132,7 +1136,7 @@ --     /must/ have a value which does not differ from the current value of --     the semaphore or from the value of any outstanding semaphore wait or --     signal operation on that semaphore by more than---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference> -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/DeviceInitialization.hs view
@@ -5,6 +5,8 @@ import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (callocBytes) import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO) import Foreign.Ptr (castFunPtr) import Foreign.Ptr (nullPtr) import Control.Monad.Trans.Class (lift)@@ -20,6 +22,8 @@ import Graphics.Vulkan.NamedType ((:::)) import Graphics.Vulkan.Core10.Enums.Result (Result) import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS)) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)   unsafe@@ -37,12 +41,28 @@ --     described in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>. --+-- = Description+--+-- Note+--+-- The intended behaviour of 'enumerateInstanceVersion' is that an+-- implementation /should/ not need to perform memory allocations and+-- /should/ unconditionally return+-- 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'. The loader, and any+-- enabled layers, /may/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' in the+-- case of a failed memory allocation.+-- -- == Return Codes -- -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] -- --     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' --+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+-- -- = See Also -- -- No cross-references are available@@ -50,7 +70,8 @@ enumerateInstanceVersion  = liftIO . evalContT $ do   vkEnumerateInstanceVersion' <- lift $ mkVkEnumerateInstanceVersion . castFunPtr @_ @(("pApiVersion" ::: Ptr Word32) -> IO Result) <$> getInstanceProcAddr' nullPtr (Ptr "vkEnumerateInstanceVersion"#)   pPApiVersion <- ContT $ bracket (callocBytes @Word32 4) free-  _ <- lift $ vkEnumerateInstanceVersion' (pPApiVersion)+  r <- lift $ vkEnumerateInstanceVersion' (pPApiVersion)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))   pApiVersion <- lift $ peek @Word32 pPApiVersion   pure $ (pApiVersion) 
src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs view
@@ -115,20 +115,20 @@ -- == Valid Usage -- -- -   If the protected memory feature is not enabled, @protectedSubmit@---     /must/ not be 'Graphics.Vulkan.Core10.BaseType.TRUE'.+--     /must/ not be 'Graphics.Vulkan.Core10.BaseType.TRUE' -- -- -   If @protectedSubmit@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', then --     each element of the @pCommandBuffers@ array /must/ be a protected---     command buffer.+--     command buffer -- -- -   If @protectedSubmit@ is 'Graphics.Vulkan.Core10.BaseType.FALSE', --     then each element of the @pCommandBuffers@ array /must/ be an---     unprotected command buffer.+--     unprotected command buffer -- -- -   If the 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pNext@ chain does --     not include a 'ProtectedSubmitInfo' structure, then each element of --     the command buffer of the @pCommandBuffers@ array /must/ be an---     unprotected command buffer.+--     unprotected command buffer -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs view
@@ -146,6 +146,9 @@ --     then all planes of 'BindImageMemoryInfo'::image /must/ be bound --     individually in separate @pBindInfos@ --+-- -   @pBindInfos@ /must/ not refer to the same image subresource more+--     than once.+-- -- == Valid Usage (Implicit) -- -- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'@@ -229,7 +232,7 @@ --     was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then --     @buffer@ /must/ equal --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@buffer@---     and @memoryOffset@ /must/ be zero.+--     and @memoryOffset@ /must/ be zero -- -- -   If @buffer@ was created with --     'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@@@ -251,11 +254,21 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@ --     when @buffer@ was created ----- -   If @memory@ was created by a memory import operation, the external---     handle type of the imported memory /must/ also have been set in+-- -   If @memory@ was created by a memory import operation, that is not+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     with a non-@NULL@ @buffer@ value, the external handle type of the+--     imported memory /must/ also have been set in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@ --     when @buffer@ was created --+-- -   If @memory@ was created with the+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     memory import operation with a non-@NULL@ @buffer@ value,+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--     /must/ also have been set in+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+--     when @buffer@ was created+-- -- -   If the --     'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesKHR'::@bufferDeviceAddress@ --     feature is enabled and @buffer@ was created with the@@ -401,7 +414,7 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo' --     structure, @image@ /must/ have been created with the --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'---     bit set.+--     bit set -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'@@ -467,7 +480,7 @@ --     was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then --     @image@ /must/ equal --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::@image@---     and @memoryOffset@ /must/ be zero.+--     and @memoryOffset@ /must/ be zero -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing dedicated allocation image aliasing>@@ -488,7 +501,7 @@ --     original image for which the allocation was created; and the --     @arrayLayers@ parameter of the image being bound /must/ be equal to --     or smaller than the original image for which the allocation was---     created.+--     created -- -- -   If @image@ was created with --     'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@@@ -523,13 +536,13 @@ --     structure, the union of the areas of all elements of --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'::@pSplitInstanceBindRegions@ --     that correspond to the same instance of @image@ /must/ cover the---     entire image.+--     entire image -- -- -   If @image@ was created with a valid swapchain handle in --     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'::@swapchain@, --     then the @pNext@ chain /must/ include a --     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR'---     structure containing the same swapchain handle.+--     structure containing the same swapchain handle -- -- -   If the @pNext@ chain includes a --     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR'@@ -548,8 +561,18 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@ --     when @image@ was created ----- -   If @memory@ was created by a memory import operation, the external---     handle type of the imported memory /must/ also have been set in+-- -   If @memory@ was created by a memory import operation, that is not+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     with a non-@NULL@ @buffer@ value, the external handle type of the+--     imported memory /must/ also have been set in+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+--     when @image@ was created+--+-- -   If @memory@ was created with the+--     'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+--     memory import operation with a non-@NULL@ @buffer@ value,+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--     /must/ also have been set in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@ --     when @image@ was created --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs view
@@ -188,7 +188,8 @@ -- -   At least one of @image@ and @buffer@ /must/ be --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' ----- -   If @image@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- -   If @image@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     and the memory is not an imported Android Hardware Buffer, --     'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ --     /must/ equal the --     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@@@ -199,8 +200,8 @@ --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT' --     set in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@flags@ ----- -   If @buffer@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- -   If @buffer@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     and the memory is not an imported Android Hardware Buffer, --     'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@ --     /must/ equal the --     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@@@ -225,7 +226,7 @@ --     and the external handle was created by the Vulkan API, then the --     memory being imported /must/ also be a dedicated image allocation --     and @image@ must be identical to the image associated with the---     imported memory.+--     imported memory -- -- -   If @buffer@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' --     and 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a@@ -239,24 +240,24 @@ --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT', --     and the external handle was created by the Vulkan API, then the --     memory being imported /must/ also be a dedicated buffer allocation---     and @buffer@ must be identical to the buffer associated with the---     imported memory.+--     and @buffer@ /must/ be identical to the buffer associated with the+--     imported memory -- -- -   If @image@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' --     and 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a --     memory import operation with handle type --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT', --     the memory being imported /must/ also be a dedicated image---     allocation and @image@ must be identical to the image associated---     with the imported memory.+--     allocation and @image@ /must/ be identical to the image associated+--     with the imported memory -- -- -   If @buffer@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' --     and 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a --     memory import operation with handle type --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT', --     the memory being imported /must/ also be a dedicated buffer---     allocation and @buffer@ must be identical to the buffer associated---     with the imported memory.+--     allocation and @buffer@ /must/ be identical to the buffer associated+--     with the imported memory -- -- -   If @image@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', --     @image@ /must/ not have been created with
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs view
@@ -152,14 +152,17 @@   pDescriptorUpdateTemplate <- lift $ peek @DescriptorUpdateTemplate pPDescriptorUpdateTemplate   pure $ (pDescriptorUpdateTemplate) --- | A safe wrapper for 'createDescriptorUpdateTemplate' and--- 'destroyDescriptorUpdateTemplate' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createDescriptorUpdateTemplate' and 'destroyDescriptorUpdateTemplate' ----- The allocated value must not be returned from the provided computation-withDescriptorUpdateTemplate :: forall r . Device -> DescriptorUpdateTemplateCreateInfo -> Maybe AllocationCallbacks -> ((DescriptorUpdateTemplate) -> IO r) -> IO r-withDescriptorUpdateTemplate device pCreateInfo pAllocator =-  bracket-    (createDescriptorUpdateTemplate device pCreateInfo pAllocator)+-- To ensure that 'destroyDescriptorUpdateTemplate' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDescriptorUpdateTemplate :: forall io r . MonadIO io => (io (DescriptorUpdateTemplate) -> ((DescriptorUpdateTemplate) -> io ()) -> r) -> Device -> DescriptorUpdateTemplateCreateInfo -> Maybe AllocationCallbacks -> r+withDescriptorUpdateTemplate b device pCreateInfo pAllocator =+  b (createDescriptorUpdateTemplate device pCreateInfo pAllocator)     (\(o0) -> destroyDescriptorUpdateTemplate device o0 pAllocator)  @@ -386,7 +389,7 @@ -- -- -   @dstBinding@ /must/ be a valid binding in the descriptor set layout --     implicitly specified when using a descriptor update template to---     update descriptors.+--     update descriptors -- -- -   @dstArrayElement@ and @descriptorCount@ /must/ be less than or equal --     to the number of array elements in the descriptor set binding
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs view
@@ -158,12 +158,12 @@ -- -- -   @deviceMask@ /must/ not include any set bits that were not in the --     'DeviceGroupCommandBufferBeginInfo'::@deviceMask@ value when the---     command buffer began recording.+--     command buffer began recording -- -- -   If 'cmdSetDeviceMask' is called inside a render pass instance, --     @deviceMask@ /must/ not include any set bits that were not in the --     'DeviceGroupRenderPassBeginInfo'::@deviceMask@ value when the render---     pass instance began recording.+--     pass instance began recording -- -- == Valid Usage (Implicit) --@@ -298,7 +298,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -417,7 +417,7 @@ -- -- -   If any of @baseGroupX@, @baseGroupY@, or @baseGroupZ@ are not zero, --     then the bound compute pipeline /must/ have been created with the---     'PIPELINE_CREATE_DISPATCH_BASE' flag.+--     'PIPELINE_CREATE_DISPATCH_BASE' flag -- -- == Valid Usage (Implicit) --@@ -499,7 +499,7 @@ -- -- -   If --     'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_MASK_BIT'---     is set, @deviceMask@ /must/ be a valid device mask.+--     is set, @deviceMask@ /must/ be a valid device mask -- -- -   If --     'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_MASK_BIT'@@ -609,7 +609,7 @@ --     device mask -- -- -   @deviceRenderAreaCount@ /must/ either be zero or equal to the number---     of physical devices in the logical device.+--     of physical devices in the logical device -- -- == Valid Usage (Implicit) --@@ -865,10 +865,10 @@ -- == Valid Usage -- -- -   @resourceDeviceIndex@ and @memoryDeviceIndex@ /must/ both be valid---     device indices.+--     device indices -- -- -   Each memory allocation bound in this batch /must/ have allocated an---     instance for @memoryDeviceIndex@.+--     instance for @memoryDeviceIndex@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs view
@@ -200,18 +200,18 @@ -- == Valid Usage -- -- -   At least one of @deviceIndexCount@ and---     @splitInstanceBindRegionCount@ /must/ be zero.+--     @splitInstanceBindRegionCount@ /must/ be zero -- -- -   @deviceIndexCount@ /must/ either be zero or equal to the number of --     physical devices in the logical device ----- -   All elements of @pDeviceIndices@ /must/ be valid device indices.+-- -   All elements of @pDeviceIndices@ /must/ be valid device indices -- -- -   @splitInstanceBindRegionCount@ /must/ either be zero or equal to the --     number of physical devices in the logical device squared -- -- -   Elements of @pSplitInstanceBindRegions@ that correspond to the same---     instance of an image /must/ not overlap.+--     instance of an image /must/ not overlap -- -- -   The @offset.x@ member of any element of @pSplitInstanceBindRegions@ --     /must/ be a multiple of the sparse image block width
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs view
@@ -9,6 +9,7 @@                                                                           , pattern MAX_DEVICE_GROUP_SIZE                                                                           ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -38,7 +39,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -202,7 +202,7 @@     poke ((p `plusPtr` 16 :: Ptr Word32)) (physicalDeviceCount)     unless ((Data.Vector.length $ (physicalDevices)) <= MAX_DEVICE_GROUP_SIZE) $       throwIO $ IOError Nothing InvalidArgument "" "physicalDevices is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (physicalDevices)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (physicalDevices)     poke ((p `plusPtr` 280 :: Ptr Bool32)) (boolToBool32 (subsetAllocation))     f   cStructSize = 288@@ -213,14 +213,14 @@     poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)     unless ((Data.Vector.length $ (mempty)) <= MAX_DEVICE_GROUP_SIZE) $       throwIO $ IOError Nothing InvalidArgument "" "physicalDevices is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (mempty)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (mempty)     poke ((p `plusPtr` 280 :: Ptr Bool32)) (boolToBool32 (zero))     f  instance FromCStruct PhysicalDeviceGroupProperties where   peekCStruct p = do     physicalDeviceCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    physicalDevices <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @(Ptr PhysicalDevice_T) (((lowerArrayPtr @(Ptr PhysicalDevice_T) ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `advancePtrBytes` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T))))+    physicalDevices <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @(Ptr PhysicalDevice_T) (((lowerArrayPtr @(Ptr PhysicalDevice_T) ((p `plusPtr` 24 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `advancePtrBytes` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T))))     subsetAllocation <- peek @Bool32 ((p `plusPtr` 280 :: Ptr Bool32))     pure $ PhysicalDeviceGroupProperties              physicalDeviceCount physicalDevices (bool32ToBool subsetAllocation)@@ -268,7 +268,7 @@ -- -- -   If @physicalDeviceCount@ is not @0@, the @physicalDevice@ parameter --     of 'Graphics.Vulkan.Core10.Device.createDevice' /must/ be an element---     of @pPhysicalDevices@.+--     of @pPhysicalDevices@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs view
@@ -31,9 +31,9 @@ -- -- == Valid Usage ----- -   The bits in @handleTypes@ must be supported and compatible, as+-- -   The bits in @handleTypes@ /must/ be supported and compatible, as --     reported by---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs view
@@ -152,7 +152,7 @@ --     reported by --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties' --     or---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs view
@@ -15,6 +15,7 @@                                                                                  , pattern LUID_SIZE                                                                                  ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr)@@ -34,7 +35,6 @@ import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32) import Graphics.Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)@@ -523,9 +523,9 @@   pokeCStruct p PhysicalDeviceIDProperties{..} f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (deviceUUID)-    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (driverUUID)-    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (deviceLUID)+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (deviceUUID)+    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (FixedArray UUID_SIZE Word8))) (driverUUID)+    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (FixedArray LUID_SIZE Word8))) (deviceLUID)     poke ((p `plusPtr` 56 :: Ptr Word32)) (deviceNodeMask)     poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (deviceLUIDValid))     f@@ -534,18 +534,18 @@   pokeZeroCStruct p f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)-    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)-    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (FixedArray LUID_SIZE Word8))) (mempty)     poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))     f  instance FromCStruct PhysicalDeviceIDProperties where   peekCStruct p = do-    deviceUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))-    driverUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))-    deviceLUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8)))+    deviceUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8)))+    driverUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 32 :: Ptr (FixedArray UUID_SIZE Word8)))+    deviceLUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (FixedArray LUID_SIZE Word8)))     deviceNodeMask <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))     deviceLUIDValid <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))     pure $ PhysicalDeviceIDProperties
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs view
@@ -33,7 +33,7 @@ -- -- -   The bits in @handleTypes@ /must/ be supported and compatible, as --     reported by---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs view
@@ -122,7 +122,7 @@ -- 'getPhysicalDeviceExternalSemaphoreProperties', -- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR' data PhysicalDeviceExternalSemaphoreInfo (es :: [Type]) = PhysicalDeviceExternalSemaphoreInfo-  { -- | @pNext@ is NULL or a pointer to an extension-specific structure.+  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.     next :: Chain es   , -- | @handleType@ is a     -- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs view
@@ -207,8 +207,23 @@  -- | VkBufferMemoryRequirementsInfo2 - (None) --+-- == Valid Usage+--+-- -   If @buffer@ was created with the+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+--     external memory handle type, then @buffer@ /must/ be bound to+--     memory.+-- -- == Valid Usage (Implicit) --+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'+--     handle+-- -- = See Also -- -- 'Graphics.Vulkan.Core10.Handles.Buffer',@@ -216,8 +231,7 @@ -- 'getBufferMemoryRequirements2', -- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR' data BufferMemoryRequirementsInfo2 = BufferMemoryRequirementsInfo2-  { -- | @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'-    -- handle+  { -- | @buffer@ is the buffer to query.     buffer :: Buffer }   deriving (Typeable) deriving instance Show BufferMemoryRequirementsInfo2@@ -291,7 +305,7 @@ -- -- -   If @image@ was created with the --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'---     external memory handle type, then @image@ /must/ be bound to memory.+--     external memory handle type, then @image@ /must/ be bound to memory -- -- == Valid Usage (Implicit) --@@ -427,8 +441,10 @@ -- -- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements', -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.getAccelerationStructureMemoryRequirementsKHR', -- 'getBufferMemoryRequirements2', -- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.getGeneratedCommandsMemoryRequirementsNV', -- 'getImageMemoryRequirements2', -- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR' data MemoryRequirements2 (es :: [Type]) = MemoryRequirements2
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -97,6 +97,9 @@ import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)@@ -130,14 +133,19 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeaturesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties) import Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties) import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures) import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (PhysicalDeviceRayTracingPropertiesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2FeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_robustness2 (PhysicalDeviceRobustness2PropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (PhysicalDeviceSampleLocationsPropertiesEXT) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)@@ -361,7 +369,7 @@ --     structure, the @pNext@ chain of @pImageFormatInfo@ /must/ include a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo' --     structure with @handleType@ set to---     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'.+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID' -- -- == Valid Usage (Implicit) --@@ -613,9 +621,12 @@   getNext PhysicalDeviceFeatures2{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesEXT = Just f+    | Just Refl <- eqT @e @PhysicalDeviceDiagnosticsConfigFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f     | Just Refl <- eqT @e @PhysicalDeviceVulkan12Features = Just f     | Just Refl <- eqT @e @PhysicalDeviceVulkan11Features = Just f+    | Just Refl <- eqT @e @PhysicalDevicePipelineCreationCacheControlFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeaturesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f@@ -640,6 +651,7 @@     | Just Refl <- eqT @e @PhysicalDeviceUniformBufferStandardLayoutFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceScalarBlockLayoutFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingFeaturesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f@@ -669,6 +681,7 @@     | Just Refl <- eqT @e @PhysicalDevice16BitStorageFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f     | Just Refl <- eqT @e @PhysicalDeviceVariablePointersFeatures = Just f+    | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = Just f     | otherwise = Nothing  instance PokeChain es => ToCStruct (PhysicalDeviceFeatures2 es) where@@ -723,6 +736,7 @@ --     'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV', --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties', --     'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+--     'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsPropertiesNV', --     'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT', --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties', --     'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',@@ -740,7 +754,9 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties', --     'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties', --     'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR', --     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',+--     'Graphics.Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT', --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT', --     'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties', --     'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',@@ -784,6 +800,7 @@   getNext PhysicalDeviceProperties2{..} = next   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b   extends _ f+    | Just Refl <- eqT @e @PhysicalDeviceRobustness2PropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceVulkan12Properties = Just f     | Just Refl <- eqT @e @PhysicalDeviceVulkan11Properties = Just f     | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationPropertiesEXT = Just f@@ -794,6 +811,7 @@     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixPropertiesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapPropertiesEXT = Just f     | Just Refl <- eqT @e @PhysicalDeviceRayTracingPropertiesNV = Just f+    | Just Refl <- eqT @e @PhysicalDeviceRayTracingPropertiesKHR = Just f     | Just Refl <- eqT @e @PhysicalDeviceMeshShaderPropertiesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceShadingRateImagePropertiesNV = Just f     | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackPropertiesEXT = Just f@@ -821,6 +839,7 @@     | Just Refl <- eqT @e @PhysicalDeviceIDProperties = Just f     | Just Refl <- eqT @e @PhysicalDeviceDriverProperties = Just f     | Just Refl <- eqT @e @PhysicalDevicePushDescriptorPropertiesKHR = Just f+    | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = Just f     | otherwise = Nothing  instance PokeChain es => ToCStruct (PhysicalDeviceProperties2 es) where@@ -1040,7 +1059,7 @@ -- -   @tiling@ /must/ be --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT' --     if and only if the @pNext@ chain includes---     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT'.+--     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT' -- -- -   If @tiling@ is --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'@@ -1048,7 +1067,7 @@ --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT', --     then the @pNext@ chain /must/ include a --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'---     structure with non-zero @viewFormatCount@.+--     structure with non-zero @viewFormatCount@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs view
@@ -81,10 +81,10 @@ -- == Valid Usage -- -- -   If @multiviewGeometryShader@ is enabled then @multiview@ /must/ also---     be enabled.+--     be enabled -- -- -   If @multiviewTessellationShader@ is enabled then @multiview@ /must/---     also be enabled.+--     also be enabled -- -- == Valid Usage (Implicit) --@@ -275,10 +275,9 @@ -- bit in the subpass description. The only supported per-view attributes -- are position and viewport mask, and per-view position and viewport masks -- are written to output array variables decorated with @PositionPerViewNV@--- and @ViewportMaskPerViewNV@, respectively. If--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_NV_viewport_array2@--- is not supported and enabled, @ViewportMaskPerViewNV@ /must/ not be--- used. Values written to elements of @PositionPerViewNV@ and+-- and @ViewportMaskPerViewNV@, respectively. If @VK_NV_viewport_array2@ is+-- not supported and enabled, @ViewportMaskPerViewNV@ /must/ not be used.+-- Values written to elements of @PositionPerViewNV@ and -- @ViewportMaskPerViewNV@ /must/ not depend on the @ViewIndex@. The shader -- /must/ also write to an output variable decorated with @Position@, and -- the value written to @Position@ /must/ equal the value written to
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs view
@@ -191,14 +191,17 @@   pYcbcrConversion <- lift $ peek @SamplerYcbcrConversion pPYcbcrConversion   pure $ (pYcbcrConversion) --- | A safe wrapper for 'createSamplerYcbcrConversion' and--- 'destroySamplerYcbcrConversion' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createSamplerYcbcrConversion' and 'destroySamplerYcbcrConversion' ----- The allocated value must not be returned from the provided computation-withSamplerYcbcrConversion :: forall a r . PokeChain a => Device -> SamplerYcbcrConversionCreateInfo a -> Maybe AllocationCallbacks -> ((SamplerYcbcrConversion) -> IO r) -> IO r-withSamplerYcbcrConversion device pCreateInfo pAllocator =-  bracket-    (createSamplerYcbcrConversion device pCreateInfo pAllocator)+-- To ensure that 'destroySamplerYcbcrConversion' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withSamplerYcbcrConversion :: forall a io r . (PokeChain a, MonadIO io) => (io (SamplerYcbcrConversion) -> ((SamplerYcbcrConversion) -> io ()) -> r) -> Device -> SamplerYcbcrConversionCreateInfo a -> Maybe AllocationCallbacks -> r+withSamplerYcbcrConversion b device pCreateInfo pAllocator =+  b (createSamplerYcbcrConversion device pCreateInfo pAllocator)     (\(o0) -> destroySamplerYcbcrConversion device o0 pAllocator)  @@ -339,26 +342,29 @@ -- -   If an external format conversion is being created, @format@ /must/ --     be 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', otherwise --     it /must/ not be---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' ----- -   @format@ /must/ support+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>+--     /must/ support --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' --     or --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' ----- -   If the format does not support+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>+--     do not support --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT', --     @xChromaOffset@ and @yChromaOffset@ /must/ not be --     'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN' ----- -   If the format does not support+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>+--     do not support --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT', --     @xChromaOffset@ and @yChromaOffset@ /must/ not be --     'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT' ----- -   @format@ /must/ represent unsigned normalized values (i.e. the---     format must be a @UNORM@ format)--- -- -   If the format has a @_422@ or @_420@ suffix, then @components.g@ --     /must/ be --     'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'@@ -404,14 +410,18 @@ --     'Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange.SAMPLER_YCBCR_RANGE_ITU_NARROW' --     then the R, G and B channels obtained by applying the @component@ --     swizzle to @format@ /must/ each have a bit-depth greater than or---     equal to 8.+--     equal to 8 ----- -   If the format does not support+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>+--     do not support --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT' --     @forceExplicitReconstruction@ /must/ be --     'Graphics.Vulkan.Core10.BaseType.FALSE' ----- -   If the format does not support+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-sampler-ycbcr-conversion-format-features sampler Y′CBCR conversion’s features>+--     do not support --     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT', --     @chromaFilter@ /must/ not be --     'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR'@@ -582,31 +592,28 @@ -- -- == Valid Usage ----- -   If the image’s tiling is+-- -   If the image’s @tiling@ is --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', --     then @planeAspect@ /must/ be a single valid /format plane/ for the---     image. (That is, @planeAspect@ /must/ be+--     image (that is, for a two-plane image @planeAspect@ /must/ be --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' --     or---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'---     for “@_2PLANE@” formats and @planeAspect@ /must/ be---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT', --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+--     and for a three-plane image @planeAspect@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+--     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' --     or---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'---     for “@_3PLANE@” formats.)+--     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT') ----- -   If the image’s tiling is+-- -   If the image’s @tiling@ is --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT', --     then @planeAspect@ /must/ be a single valid /memory plane/ for the---     image. (That is, @aspectMask@ /must/ specify a plane index that is+--     image (that is, @aspectMask@ /must/ specify a plane index that is --     less than the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>---     associated with the image’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo format>---     and---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageDrmFormatModifierPropertiesEXT drmFormatModifier>.)+--     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@+--     associated with the image’s @format@ and+--     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@) -- -- == Valid Usage (Implicit) --@@ -664,11 +671,11 @@ -- -- == Valid Usage ----- -   If the image’s tiling is+-- -   If the image’s @tiling@ is --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', --     then @planeAspect@ /must/ be a single valid /format plane/ for the---     image. (That is, for a two-plane image @planeAspect@ /must/ be+--     image (that is, for a two-plane image @planeAspect@ /must/ be --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' --     or --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',@@ -676,18 +683,16 @@ --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT', --     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' --     or---     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT').+--     'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT') ----- -   If the image’s tiling is+-- -   If the image’s @tiling@ is --     'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT', --     then @planeAspect@ /must/ be a single valid /memory plane/ for the---     image. (That is, @aspectMask@ /must/ specify a plane index that is+--     image (that is, @aspectMask@ /must/ specify a plane index that is --     less than the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>---     associated with the image’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo format>---     and---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageDrmFormatModifierPropertiesEXT drmFormatModifier>.)+--     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@+--     associated with the image’s @format@ and+--     'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@) -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs view
@@ -62,7 +62,7 @@ -- == Valid Usage -- -- -   If @variablePointers@ is enabled then---     @variablePointersStorageBuffer@ /must/ also be enabled.+--     @variablePointersStorageBuffer@ /must/ also be enabled -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core12.hs view
@@ -50,6 +50,7 @@ import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model+import Graphics.Vulkan.CStruct.Utils (FixedArray) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)@@ -69,7 +70,6 @@ import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)@@ -355,9 +355,10 @@     -- are available in all stages, or are restricted to fragment and compute     -- stages.     subgroupQuadOperationsInAllStages :: Bool-  , -- | @pointClippingBehavior@ /must/ be a valid+  , -- | @pointClippingBehavior@ is a     -- 'Graphics.Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior'-    -- value+    -- value specifying the point clipping behavior supported by the+    -- implementation.     pointClippingBehavior :: PointClippingBehavior   , -- | @maxMultiviewViewCount@ is one greater than the maximum view index that     -- /can/ be used in a subpass.@@ -392,9 +393,9 @@   pokeCStruct p PhysicalDeviceVulkan11Properties{..} f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (deviceUUID)-    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (driverUUID)-    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (deviceLUID)+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (deviceUUID)+    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (FixedArray UUID_SIZE Word8))) (driverUUID)+    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (FixedArray LUID_SIZE Word8))) (deviceLUID)     poke ((p `plusPtr` 56 :: Ptr Word32)) (deviceNodeMask)     poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (deviceLUIDValid))     poke ((p `plusPtr` 64 :: Ptr Word32)) (subgroupSize)@@ -413,9 +414,9 @@   pokeZeroCStruct p f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)-    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)-    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (FixedArray LUID_SIZE Word8))) (mempty)     poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))     poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)@@ -432,9 +433,9 @@  instance FromCStruct PhysicalDeviceVulkan11Properties where   peekCStruct p = do-    deviceUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))-    driverUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))-    deviceLUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8)))+    deviceUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (FixedArray UUID_SIZE Word8)))+    driverUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 32 :: Ptr (FixedArray UUID_SIZE Word8)))+    deviceLUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (FixedArray LUID_SIZE Word8)))     deviceNodeMask <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))     deviceLUIDValid <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))     subgroupSize <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))@@ -798,10 +799,11 @@ --     trace capture and replay. -- -- -   @bufferDeviceAddressMultiDevice@ indicates that the implementation---     supports the @bufferDeviceAddress@ feature for logical devices---     created with multiple physical devices. If this feature is not---     supported, buffer addresses /must/ not be queried on a logical---     device created with more than one physical device.+--     supports the @bufferDeviceAddress@ and @rayTracing@ features for+--     logical devices created with multiple physical devices. If this+--     feature is not supported, buffer and acceleration structure+--     addresses /must/ not be queried on a logical device created with+--     more than one physical device. -- -- -   @vulkanMemoryModel@ indicates whether the Vulkan Memory Model is --     supported, as defined in@@ -1201,26 +1203,31 @@ -- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence', -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDeviceVulkan12Properties = PhysicalDeviceVulkan12Properties-  { -- | @driverID@ /must/ be a valid-    -- 'Graphics.Vulkan.Core12.Enums.DriverId.DriverId' value+  { -- | @driverID@ is a unique identifier for the driver of the physical device.     driverID :: DriverId-  , -- | @driverName@ /must/ be a null-terminated UTF-8 string whose length is-    -- less than or equal to VK_MAX_DRIVER_NAME_SIZE+  , -- | @driverName@ is an array of+    -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE' @char@+    -- containing a null-terminated UTF-8 string which is the name of the+    -- driver.     driverName :: ByteString-  , -- | @driverInfo@ /must/ be a null-terminated UTF-8 string whose length is-    -- less than or equal to VK_MAX_DRIVER_INFO_SIZE+  , -- | @driverInfo@ is an array of+    -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE' @char@+    -- containing a null-terminated UTF-8 string with additional information+    -- about the driver.     driverInfo :: ByteString   , -- | @conformanceVersion@ is the version of the Vulkan conformance test this     -- driver is conformant against (see     -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.ConformanceVersion').     conformanceVersion :: ConformanceVersion-  , -- | @denormBehaviorIndependence@ /must/ be a valid+  , -- | @denormBehaviorIndependence@ is a     -- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'-    -- value+    -- value indicating whether, and how, denorm behavior can be set+    -- independently for different bit widths.     denormBehaviorIndependence :: ShaderFloatControlsIndependence-  , -- | @roundingModeIndependence@ /must/ be a valid+  , -- | @roundingModeIndependence@ is a     -- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'-    -- value+    -- value indicating whether, and how, rounding modes can be set+    -- independently for different bit widths.     roundingModeIndependence :: ShaderFloatControlsIndependence   , -- | @shaderSignedZeroInfNanPreserveFloat16@ is a boolean value indicating     -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in@@ -1457,9 +1464,21 @@     -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'     -- bit set.     maxDescriptorSetUpdateAfterBindInputAttachments :: Word32-  , -- | @supportedDepthResolveModes@ /must/ not be @0@+  , -- | @supportedDepthResolveModes@ is a bitmask of+    -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+    -- indicating the set of supported depth resolve modes.+    -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'+    -- /must/ be included in the set but implementations /may/ support+    -- additional modes.     supportedDepthResolveModes :: ResolveModeFlags-  , -- | @supportedStencilResolveModes@ /must/ not be @0@+  , -- | @supportedStencilResolveModes@ is a bitmask of+    -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+    -- indicating the set of supported stencil resolve modes.+    -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'+    -- /must/ be included in the set but implementations /may/ support+    -- additional modes.+    -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'+    -- /must/ not be included in the set.     supportedStencilResolveModes :: ResolveModeFlags   , -- | @independentResolveNone@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' if     -- the implementation supports setting the depth and stencil resolve modes@@ -1487,9 +1506,10 @@     -- allowed by the implementation between the current value of a timeline     -- semaphore and any pending signal or wait operations.     maxTimelineSemaphoreValueDifference :: Word64-  , -- | @framebufferIntegerColorSampleCounts@ /must/ be a valid combination of+  , -- | @framebufferIntegerColorSampleCounts@ is a bitmask of     -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'-    -- values+    -- indicating the color sample counts that are supported for all+    -- framebuffer color attachments with integer formats.     framebufferIntegerColorSampleCounts :: SampleCountFlags   }   deriving (Typeable)@@ -1501,8 +1521,8 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (driverName)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (driverName)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)     ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion) . ($ ())     lift $ poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (denormBehaviorIndependence)     lift $ poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (roundingModeIndependence)@@ -1559,8 +1579,8 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (mempty)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (mempty)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (mempty)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (mempty)     ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero) . ($ ())     lift $ poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (zero)     lift $ poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (zero)@@ -1614,8 +1634,8 @@ instance FromCStruct PhysicalDeviceVulkan12Properties where   peekCStruct p = do     driverID <- peek @DriverId ((p `plusPtr` 16 :: Ptr DriverId))-    driverName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))))-    driverInfo <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))))+    driverName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))))+    driverInfo <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))))     conformanceVersion <- peekCStruct @ConformanceVersion ((p `plusPtr` 532 :: Ptr ConformanceVersion))     denormBehaviorIndependence <- peek @ShaderFloatControlsIndependence ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence))     roundingModeIndependence <- peek @ShaderFloatControlsIndependence ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence))
src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs view
@@ -861,7 +861,7 @@ --     'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'::@pSetLayouts@[i] --     has a variable descriptor count binding, then @pDescriptorCounts@[i] --     /must/ be less than or equal to the descriptor count specified for---     that binding when the descriptor set layout was created.+--     that binding when the descriptor set layout was created -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs view
@@ -295,10 +295,10 @@     -- capture and replay.     bufferDeviceAddressCaptureReplay :: Bool   , -- | @bufferDeviceAddressMultiDevice@ indicates that the implementation-    -- supports the @bufferDeviceAddress@ feature for logical devices created-    -- with multiple physical devices. If this feature is not supported, buffer-    -- addresses /must/ not be queried on a logical device created with more-    -- than one physical device.+    -- supports the @bufferDeviceAddress@ and @rayTracing@ features for logical+    -- devices created with multiple physical devices. If this feature is not+    -- supported, buffer and acceleration structure addresses /must/ not be+    -- queried on a logical device created with more than one physical device.     bufferDeviceAddressMultiDevice :: Bool   }   deriving (Typeable)
src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs view
@@ -15,7 +15,6 @@                                                                        ) where  import Control.Exception.Base (bracket)-import Control.Exception.Base (bracket_) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Data.Typeable (eqT)@@ -35,7 +34,6 @@ import qualified Data.Vector (length) import qualified Data.Vector (null) import Control.Monad.IO.Class (MonadIO)-import Data.Either (Either) import Data.Type.Equality ((:~:)(Refl)) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -405,12 +403,18 @@   lift $ vkCmdBeginRenderPass2' (commandBufferHandle (commandBuffer)) pRenderPassBegin pSubpassBeginInfo   pure $ () --- | A safe wrapper for 'cmdBeginRenderPass2' and 'cmdEndRenderPass2' using--- 'bracket_'-cmdWithRenderPass2 :: forall a r . PokeChain a => CommandBuffer -> RenderPassBeginInfo a -> SubpassBeginInfo -> SubpassEndInfo -> IO r -> IO r-cmdWithRenderPass2 commandBuffer pRenderPassBegin pSubpassBeginInfo pSubpassEndInfo =-  bracket_-    (cmdBeginRenderPass2 commandBuffer pRenderPassBegin pSubpassBeginInfo)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'cmdBeginRenderPass2' and 'cmdEndRenderPass2'+--+-- To ensure that 'cmdEndRenderPass2' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+cmdWithRenderPass2 :: forall a io r . (PokeChain a, MonadIO io) => (io () -> io () -> r) -> CommandBuffer -> RenderPassBeginInfo a -> SubpassBeginInfo -> SubpassEndInfo -> r+cmdWithRenderPass2 b commandBuffer pRenderPassBegin pSubpassBeginInfo pSubpassEndInfo =+  b (cmdBeginRenderPass2 commandBuffer pRenderPassBegin pSubpassBeginInfo)     (cmdEndRenderPass2 commandBuffer pSubpassEndInfo)  @@ -885,10 +889,8 @@ -- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' have the identical -- effect to those parameters. ----- @aspectMask@ has the same effect for the described attachment as--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.InputAttachmentAspectReference'::@aspectMask@--- has on each corresponding attachment. It is ignored when this structure--- is used to describe anything other than an input attachment reference.+-- @aspectMask@ is ignored when this structure is used to describe anything+-- other than an input attachment reference. -- -- If the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>@@ -1119,6 +1121,28 @@ --     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have --     the same sample count --+-- -   All attachments in @pInputAttachments@ that are not+--     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+--     formats whose features contain at least one of+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--     or+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- -   All attachments in @pColorAttachments@ that are not+--     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+--     formats whose features contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--+-- -   All attachments in @pResolveAttachments@ that are not+--     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+--     formats whose features contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--+-- -   If @pDepthStencilAttachment@ is not @NULL@ and the attachment is not+--     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' then it+--     /must/ have a format whose features contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+-- -- -   If the @VK_AMD_mixed_attachment_samples@ extension is enabled, all --     attachments in @pColorAttachments@ that are not --     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have@@ -1148,7 +1172,7 @@ -- -   If @flags@ includes --     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX', --     it /must/ also include---     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'.+--     'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX' -- -- -   If the @attachment@ member of any element of @pInputAttachments@ is --     not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', then@@ -1230,7 +1254,7 @@   , -- | @pResolveAttachments@ is an optional array of @colorAttachmentCount@     -- 'AttachmentReference2' structures defining the resolve attachments for     -- this subpass and their layouts.-    resolveAttachments :: Either Word32 (Vector (SomeStruct AttachmentReference2))+    resolveAttachments :: Vector (SomeStruct AttachmentReference2)   , -- | @pDepthStencilAttachment@ is a pointer to a 'AttachmentReference2'     -- structure specifying the depth\/stencil attachment for this subpass and     -- its layout.@@ -1267,19 +1291,19 @@     Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPInputAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (inputAttachments)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (AttachmentReference2 _)))) (pPInputAttachments')     let pColorAttachmentsLength = Data.Vector.length $ (colorAttachments)-    let pResolveAttachmentsLength = either id (fromIntegral . Data.Vector.length) (resolveAttachments)+    let pResolveAttachmentsLength = Data.Vector.length $ (resolveAttachments)     lift $ unless (fromIntegral pResolveAttachmentsLength == pColorAttachmentsLength || pResolveAttachmentsLength == 0) $       throwIO $ IOError Nothing InvalidArgument "" "pResolveAttachments and pColorAttachments must have the same length" Nothing Nothing     lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral pColorAttachmentsLength :: Word32))     pPColorAttachments' <- ContT $ allocaBytesAligned @(AttachmentReference2 _) ((Data.Vector.length (colorAttachments)) * 32) 8     Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPColorAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (colorAttachments)     lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (AttachmentReference2 _)))) (pPColorAttachments')-    pResolveAttachments'' <- case (resolveAttachments) of-      Left _ -> pure nullPtr-      Right v -> do-        pPResolveAttachments' <- ContT $ allocaBytesAligned @(AttachmentReference2 _) ((Data.Vector.length (v)) * 32) 8-        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPResolveAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (v)-        pure $ pPResolveAttachments'+    pResolveAttachments'' <- if Data.Vector.null (resolveAttachments)+      then pure nullPtr+      else do+        pPResolveAttachments <- ContT $ allocaBytesAligned @(AttachmentReference2 _) (((Data.Vector.length (resolveAttachments))) * 32) 8+        Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPResolveAttachments `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) ((resolveAttachments))+        pure $ pPResolveAttachments     lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (AttachmentReference2 _)))) pResolveAttachments''     pDepthStencilAttachment'' <- case (depthStencilAttachment) of       Nothing -> pure nullPtr@@ -1323,15 +1347,15 @@     pColorAttachments <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 48 :: Ptr (Ptr (AttachmentReference2 a))))     pColorAttachments' <- generateM (fromIntegral colorAttachmentCount) (\i -> peekSomeCStruct (forgetExtensions ((pColorAttachments `advancePtrBytes` (32 * (i)) :: Ptr (AttachmentReference2 _)))))     pResolveAttachments <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 56 :: Ptr (Ptr (AttachmentReference2 a))))-    pResolveAttachments' <- maybePeek (\j -> generateM (fromIntegral colorAttachmentCount) (\i -> peekSomeCStruct (forgetExtensions (((j) `advancePtrBytes` (32 * (i)) :: Ptr (AttachmentReference2 _)))))) pResolveAttachments-    let pResolveAttachments'' = maybe (Left colorAttachmentCount) Right pResolveAttachments'+    let pResolveAttachmentsLength = if pResolveAttachments == nullPtr then 0 else (fromIntegral colorAttachmentCount)+    pResolveAttachments' <- generateM pResolveAttachmentsLength (\i -> peekSomeCStruct (forgetExtensions ((pResolveAttachments `advancePtrBytes` (32 * (i)) :: Ptr (AttachmentReference2 _)))))     pDepthStencilAttachment <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 64 :: Ptr (Ptr (AttachmentReference2 a))))     pDepthStencilAttachment' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pDepthStencilAttachment     preserveAttachmentCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))     pPreserveAttachments <- peek @(Ptr Word32) ((p `plusPtr` 80 :: Ptr (Ptr Word32)))     pPreserveAttachments' <- generateM (fromIntegral preserveAttachmentCount) (\i -> peek @Word32 ((pPreserveAttachments `advancePtrBytes` (4 * (i)) :: Ptr Word32)))     pure $ SubpassDescription2-             next flags pipelineBindPoint viewMask pInputAttachments' pColorAttachments' pResolveAttachments'' pDepthStencilAttachment' pPreserveAttachments'+             next flags pipelineBindPoint viewMask pInputAttachments' pColorAttachments' pResolveAttachments' pDepthStencilAttachment' pPreserveAttachments'  instance es ~ '[] => Zero (SubpassDescription2 es) where   zero = SubpassDescription2@@ -1341,7 +1365,7 @@            zero            mempty            mempty-           (Left 0)+           mempty            Nothing            mempty @@ -1435,7 +1459,7 @@ --     @viewOffset@ /must/ be @0@ -- -- -   If @viewOffset@ is not @0@, @srcSubpass@ /must/ not be equal to---     @dstSubpass@.+--     @dstSubpass@ -- -- -   If the --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>@@ -1649,7 +1673,7 @@ --     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL', --     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL', --     or---     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'.+--     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' -- -- -   For any element of @pDependencies@, if the @srcSubpass@ is not --     'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage
src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs view
@@ -108,7 +108,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -210,25 +210,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -240,8 +240,16 @@ -- -- -   All vertex input bindings accessed via vertex input variables --     declared in the vertex shader entry point’s interface /must/ have---     valid buffers bound+--     either valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     buffers bound --+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+-- -- -   For a given vertex buffer binding, any attribute data fetched /must/ --     be entirely contained within the corresponding vertex buffer --     binding, as described in@@ -439,7 +447,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -541,25 +549,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -571,7 +579,15 @@ -- -- -   All vertex input bindings accessed via vertex input variables --     declared in the vertex shader entry point’s interface /must/ have---     valid buffers bound+--     either valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     buffers bound+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   For a given vertex buffer binding, any attribute data fetched /must/ --     be entirely contained within the corresponding vertex buffer
src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs view
@@ -9,6 +9,7 @@                                                                       , pattern MAX_DRIVER_INFO_SIZE                                                                       ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr)@@ -26,7 +27,6 @@ import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString) import Graphics.Vulkan.Core12.Enums.DriverId (DriverId)@@ -123,12 +123,12 @@   { -- | @driverID@ is a unique identifier for the driver of the physical device.     driverID :: DriverId   , -- | @driverName@ is an array of-    -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE_KHR' @char@+    -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE' @char@     -- containing a null-terminated UTF-8 string which is the name of the     -- driver.     driverName :: ByteString   , -- | @driverInfo@ is an array of-    -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE_KHR' @char@+    -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE' @char@     -- containing a null-terminated UTF-8 string with additional information     -- about the driver.     driverInfo :: ByteString@@ -145,8 +145,8 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (driverName)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (driverName)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)     ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion) . ($ ())     lift $ f   cStructSize = 536@@ -155,16 +155,16 @@     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (mempty)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (mempty)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))) (mempty)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))) (mempty)     ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero) . ($ ())     lift $ f  instance FromCStruct PhysicalDeviceDriverProperties where   peekCStruct p = do     driverID <- peek @DriverId ((p `plusPtr` 16 :: Ptr DriverId))-    driverName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))))-    driverInfo <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))))+    driverName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DRIVER_NAME_SIZE CChar))))+    driverInfo <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DRIVER_INFO_SIZE CChar))))     conformanceVersion <- peekCStruct @ConformanceVersion ((p `plusPtr` 532 :: Ptr ConformanceVersion))     pure $ PhysicalDeviceDriverProperties              driverID driverName driverInfo conformanceVersion
src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs view
@@ -45,16 +45,16 @@ --     @pViewFormats@ array /must/ be compatible with the format specified --     in the @format@ field of --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo', as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table> -- -- -   If 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@flags@ does not --     contain --     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',---     @viewFormatCount@ /must/ be @0@ or @1@.+--     @viewFormatCount@ /must/ be @0@ or @1@ -- -- -   If @viewFormatCount@ is not @0@, --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@format@ /must/ be---     in @pViewFormats@.+--     in @pViewFormats@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs view
@@ -403,7 +403,7 @@ -- -- -   If @semaphoreType@ is --     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY',---     @initialValue@ /must/ be zero.+--     @initialValue@ /must/ be zero -- -- If no 'SemaphoreTypeCreateInfo' structure is included in the @pNext@ -- chain of 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',@@ -678,7 +678,7 @@   , -- | @value@ /must/ have a value which does not differ from the current value     -- of the semaphore or the value of any outstanding semaphore wait or     -- signal operation on @semaphore@ by more than-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>     value :: Word64   }   deriving (Typeable)
src/Graphics/Vulkan/Dynamic.hs view
@@ -6,6 +6,7 @@                                 , initDeviceCmds                                 ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Foreign.Ptr (castFunPtr) import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr)@@ -20,19 +21,25 @@ import Data.Word (Word16) import Data.Word (Word32) import Data.Word (Word64)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.NamedType ((:::)) import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (AHardwareBuffer)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildGeometryInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureBuildOffsetInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureDeviceAddressInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureVersionKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo) import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo) import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)@@ -52,8 +59,6 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearColorValue) import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearDepthStencilValue) import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearRect)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdProcessCommandsInfoNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdReserveSpaceForCommandsInfoNVX) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderTypeNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferAllocateInfo)@@ -67,8 +72,11 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (ComputePipelineCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (CopyAccelerationStructureModeNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureToMemoryInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (CopyDescriptorSet)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyMemoryToAccelerationStructureInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectTagInfoEXT)@@ -84,6 +92,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DebugUtilsMessengerEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DeferredOperationKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags) import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DescriptorPool) import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)@@ -98,8 +107,6 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.BaseType (DeviceAddress) import {-# SOURCE #-} Graphics.Vulkan.Core10.Device (DeviceCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsFeaturesNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsLimitsNVX) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DeviceMemory)@@ -144,6 +151,8 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Framebuffer) import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (FramebufferCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (FramebufferMixedSamplesCombinationNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (GeneratedCommandsMemoryRequirementsInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (HANDLE) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)@@ -169,6 +178,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageType (ImageType) import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags) import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (ImageView)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewAddressPropertiesNVX) import {-# SOURCE #-} Graphics.Vulkan.Core10.ImageView (ImageViewCreateInfo) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd (ImportFenceFdInfoKHR)@@ -176,8 +186,8 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.IndexType (IndexType)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsLayoutCreateInfoNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_generated_commands (IndirectCommandsLayoutCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNV) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL) import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Instance_T) import {-# SOURCE #-} Graphics.Vulkan.Core10.LayerDiscovery (LayerProperties)@@ -197,10 +207,6 @@ import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectEntryTypeNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableCreateInfoNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableEntryNVX)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (ObjectTableNVX) import {-# SOURCE #-} Graphics.Vulkan.Core10.FuncPointers (PFN_vkVoidFunction) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE) import {-# SOURCE #-} Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)@@ -253,6 +259,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2) import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Queue_T) import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (RROutput)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingPipelineCreateInfoKHR) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV) import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)@@ -285,6 +292,7 @@ import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2) import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags) import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (StridedBufferRegionKHR) import {-# SOURCE #-} Graphics.Vulkan.Core10.Queue (SubmitInfo) import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo) import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents)@@ -358,7 +366,6 @@   , pVkDestroyDebugReportCallbackEXT :: FunPtr (Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())   , pVkDebugReportMessageEXT :: FunPtr (Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())   , pVkGetPhysicalDeviceExternalImageFormatPropertiesNV :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr ExternalImageFormatPropertiesNV) -> IO Result)-  , pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: FunPtr (Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr DeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr DeviceGeneratedCommandsLimitsNVX) -> IO ())   , pVkGetPhysicalDeviceFeatures2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr (PhysicalDeviceFeatures2 a)) -> IO ())   , pVkGetPhysicalDeviceProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr (PhysicalDeviceProperties2 a)) -> IO ())   , pVkGetPhysicalDeviceFormatProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr (FormatProperties2 a)) -> IO ())@@ -411,7 +418,7 @@     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr-    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr  -- | A version of 'getInstanceProcAddr' which can be called -- with a null pointer for the instance.@@ -464,7 +471,6 @@   vkDestroyDebugReportCallbackEXT <- getInstanceProcAddr' handle (Ptr "vkDestroyDebugReportCallbackEXT"#)   vkDebugReportMessageEXT <- getInstanceProcAddr' handle (Ptr "vkDebugReportMessageEXT"#)   vkGetPhysicalDeviceExternalImageFormatPropertiesNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"#)-  vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"#)   vkGetPhysicalDeviceFeatures2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFeatures2"#)   vkGetPhysicalDeviceProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceProperties2"#)   vkGetPhysicalDeviceFormatProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFormatProperties2"#)@@ -544,7 +550,6 @@     (castFunPtr @_ @(Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDebugReportCallbackEXT)     (castFunPtr @_ @(Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()) vkDebugReportMessageEXT)     (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr ExternalImageFormatPropertiesNV) -> IO Result) vkGetPhysicalDeviceExternalImageFormatPropertiesNV)-    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr DeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr DeviceGeneratedCommandsLimitsNVX) -> IO ()) vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr (PhysicalDeviceFeatures2 _)) -> IO ()) vkGetPhysicalDeviceFeatures2)     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr (PhysicalDeviceProperties2 _)) -> IO ()) vkGetPhysicalDeviceProperties2)     (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr (FormatProperties2 _)) -> IO ()) vkGetPhysicalDeviceFormatProperties2)@@ -668,7 +673,7 @@   , pVkCmdSetScissor :: FunPtr (Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ())   , pVkCmdSetLineWidth :: FunPtr (Ptr CommandBuffer_T -> ("lineWidth" ::: CFloat) -> IO ())   , pVkCmdSetDepthBias :: FunPtr (Ptr CommandBuffer_T -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())-  , pVkCmdSetBlendConstants :: FunPtr (Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)) -> IO ())+  , pVkCmdSetBlendConstants :: FunPtr (Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (FixedArray 4 CFloat)) -> IO ())   , pVkCmdSetDepthBounds :: FunPtr (Ptr CommandBuffer_T -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())   , pVkCmdSetStencilCompareMask :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())   , pVkCmdSetStencilWriteMask :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())@@ -721,14 +726,12 @@   , pVkCmdDebugMarkerEndEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())   , pVkCmdDebugMarkerInsertEXT :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ())   , pVkGetMemoryWin32HandleNV :: FunPtr (Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> ("pHandle" ::: Ptr HANDLE) -> IO Result)-  , pVkCmdProcessCommandsNVX :: FunPtr (Ptr CommandBuffer_T -> ("pProcessCommandsInfo" ::: Ptr CmdProcessCommandsInfoNVX) -> IO ())-  , pVkCmdReserveSpaceForCommandsNVX :: FunPtr (Ptr CommandBuffer_T -> ("pReserveSpaceInfo" ::: Ptr CmdReserveSpaceForCommandsInfoNVX) -> IO ())-  , pVkCreateIndirectCommandsLayoutNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNVX) -> IO Result)-  , pVkDestroyIndirectCommandsLayoutNVX :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())-  , pVkCreateObjectTableNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr ObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pObjectTable" ::: Ptr ObjectTableNVX) -> IO Result)-  , pVkDestroyObjectTableNVX :: FunPtr (Ptr Device_T -> ObjectTableNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())-  , pVkRegisterObjectsNVX :: FunPtr (Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr ObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result)-  , pVkUnregisterObjectsNVX :: FunPtr (Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr ObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result)+  , pVkCmdExecuteGeneratedCommandsNV :: FunPtr (Ptr CommandBuffer_T -> ("isPreprocessed" ::: Bool32) -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ())+  , pVkCmdPreprocessGeneratedCommandsNV :: FunPtr (Ptr CommandBuffer_T -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ())+  , pVkCmdBindPipelineShaderGroupNV :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> ("groupIndex" ::: Word32) -> IO ())+  , pVkGetGeneratedCommandsMemoryRequirementsNV :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr GeneratedCommandsMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 a)) -> IO ())+  , pVkCreateIndirectCommandsLayoutNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNV) -> IO Result)+  , pVkDestroyIndirectCommandsLayoutNV :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())   , pVkCmdPushDescriptorSetKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet a)) -> IO ())   , pVkTrimCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())   , pVkGetMemoryWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)@@ -818,17 +821,31 @@   , pVkCmdDrawMeshTasksIndirectCountNV :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())   , pVkCompileDeferredNV :: FunPtr (Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)   , pVkCreateAccelerationStructureNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result)-  , pVkDestroyAccelerationStructureNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+  , pVkDestroyAccelerationStructureKHR :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+  , pVkGetAccelerationStructureMemoryRequirementsKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoKHR) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 a)) -> IO ())   , pVkGetAccelerationStructureMemoryRequirementsNV :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a)) -> IO ())-  , pVkBindAccelerationStructureMemoryNV :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result)-  , pVkCmdCopyAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeNV -> IO ())-  , pVkCmdWriteAccelerationStructuresPropertiesNV :: FunPtr (Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ())-  , pVkCmdBuildAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ())+  , pVkBindAccelerationStructureMemoryKHR :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoKHR) -> IO Result)+  , pVkCmdCopyAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> IO ())+  , pVkCmdCopyAccelerationStructureKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR a)) -> IO ())+  , pVkCopyAccelerationStructureKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR a)) -> IO Result)+  , pVkCmdCopyAccelerationStructureToMemoryKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR a)) -> IO ())+  , pVkCopyAccelerationStructureToMemoryKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR a)) -> IO Result)+  , pVkCmdCopyMemoryToAccelerationStructureKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR a)) -> IO ())+  , pVkCopyMemoryToAccelerationStructureKHR :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR a)) -> IO Result)+  , pVkCmdWriteAccelerationStructuresPropertiesKHR :: FunPtr (Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ())+  , pVkCmdBuildAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ())+  , pVkWriteAccelerationStructuresPropertiesKHR :: FunPtr (Ptr Device_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: CSize) -> IO Result)+  , pVkCmdTraceRaysKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())   , pVkCmdTraceRaysNV :: FunPtr (Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())-  , pVkGetRayTracingShaderGroupHandlesNV :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)-  , pVkGetAccelerationStructureHandleNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)+  , pVkGetRayTracingShaderGroupHandlesKHR :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)+  , pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)+  , pVkGetAccelerationStructureHandleNV :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)   , pVkCreateRayTracingPipelinesNV :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)+  , pVkCreateRayTracingPipelinesKHR :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoKHR a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)+  , pVkCmdTraceRaysIndirectKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> IO ())+  , pVkGetDeviceAccelerationStructureCompatibilityKHR :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result)   , pVkGetImageViewHandleNVX :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32)+  , pVkGetImageViewAddressNVX :: FunPtr (Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result)   , pVkGetDeviceGroupSurfacePresentModes2EXT :: forall a . FunPtr (Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result)   , pVkAcquireFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)   , pVkReleaseFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)@@ -851,6 +868,16 @@   , pVkGetPipelineExecutableStatisticsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result)   , pVkGetPipelineExecutableInternalRepresentationsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result)   , pVkCmdSetLineStippleEXT :: FunPtr (Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ())+  , pVkCreateAccelerationStructureKHR :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result)+  , pVkCmdBuildAccelerationStructureKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR a)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO ())+  , pVkCmdBuildAccelerationStructureIndirectKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR a)) -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> IO ())+  , pVkBuildAccelerationStructureKHR :: forall a . FunPtr (Ptr Device_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR a)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO Result)+  , pVkGetAccelerationStructureDeviceAddressKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureDeviceAddressInfoKHR) -> IO DeviceAddress)+  , pVkCreateDeferredOperationKHR :: FunPtr (Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDeferredOperation" ::: Ptr DeferredOperationKHR) -> IO Result)+  , pVkDestroyDeferredOperationKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+  , pVkGetDeferredOperationMaxConcurrencyKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Word32)+  , pVkGetDeferredOperationResultKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result)+  , pVkDeferredOperationJoinKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result)   }  deriving instance Eq DeviceCmds@@ -890,7 +917,10 @@     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr     nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr-    nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr nullFunPtr+    nullFunPtr  foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)@@ -1040,14 +1070,12 @@   vkCmdDebugMarkerEndEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerEndEXT"#)   vkCmdDebugMarkerInsertEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerInsertEXT"#)   vkGetMemoryWin32HandleNV <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandleNV"#)-  vkCmdProcessCommandsNVX <- getDeviceProcAddr' handle (Ptr "vkCmdProcessCommandsNVX"#)-  vkCmdReserveSpaceForCommandsNVX <- getDeviceProcAddr' handle (Ptr "vkCmdReserveSpaceForCommandsNVX"#)-  vkCreateIndirectCommandsLayoutNVX <- getDeviceProcAddr' handle (Ptr "vkCreateIndirectCommandsLayoutNVX"#)-  vkDestroyIndirectCommandsLayoutNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyIndirectCommandsLayoutNVX"#)-  vkCreateObjectTableNVX <- getDeviceProcAddr' handle (Ptr "vkCreateObjectTableNVX"#)-  vkDestroyObjectTableNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyObjectTableNVX"#)-  vkRegisterObjectsNVX <- getDeviceProcAddr' handle (Ptr "vkRegisterObjectsNVX"#)-  vkUnregisterObjectsNVX <- getDeviceProcAddr' handle (Ptr "vkUnregisterObjectsNVX"#)+  vkCmdExecuteGeneratedCommandsNV <- getDeviceProcAddr' handle (Ptr "vkCmdExecuteGeneratedCommandsNV"#)+  vkCmdPreprocessGeneratedCommandsNV <- getDeviceProcAddr' handle (Ptr "vkCmdPreprocessGeneratedCommandsNV"#)+  vkCmdBindPipelineShaderGroupNV <- getDeviceProcAddr' handle (Ptr "vkCmdBindPipelineShaderGroupNV"#)+  vkGetGeneratedCommandsMemoryRequirementsNV <- getDeviceProcAddr' handle (Ptr "vkGetGeneratedCommandsMemoryRequirementsNV"#)+  vkCreateIndirectCommandsLayoutNV <- getDeviceProcAddr' handle (Ptr "vkCreateIndirectCommandsLayoutNV"#)+  vkDestroyIndirectCommandsLayoutNV <- getDeviceProcAddr' handle (Ptr "vkDestroyIndirectCommandsLayoutNV"#)   vkCmdPushDescriptorSetKHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetKHR"#)   vkTrimCommandPool <- getDeviceProcAddr' handle (Ptr "vkTrimCommandPool"#)   vkGetMemoryWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandleKHR"#)@@ -1137,17 +1165,31 @@   vkCmdDrawMeshTasksIndirectCountNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirectCountNV"#)   vkCompileDeferredNV <- getDeviceProcAddr' handle (Ptr "vkCompileDeferredNV"#)   vkCreateAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureNV"#)-  vkDestroyAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkDestroyAccelerationStructureNV"#)+  vkDestroyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkDestroyAccelerationStructureKHR"#)+  vkGetAccelerationStructureMemoryRequirementsKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureMemoryRequirementsKHR"#)   vkGetAccelerationStructureMemoryRequirementsNV <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureMemoryRequirementsNV"#)-  vkBindAccelerationStructureMemoryNV <- getDeviceProcAddr' handle (Ptr "vkBindAccelerationStructureMemoryNV"#)+  vkBindAccelerationStructureMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkBindAccelerationStructureMemoryKHR"#)   vkCmdCopyAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureNV"#)-  vkCmdWriteAccelerationStructuresPropertiesNV <- getDeviceProcAddr' handle (Ptr "vkCmdWriteAccelerationStructuresPropertiesNV"#)+  vkCmdCopyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureKHR"#)+  vkCopyAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCopyAccelerationStructureKHR"#)+  vkCmdCopyAccelerationStructureToMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureToMemoryKHR"#)+  vkCopyAccelerationStructureToMemoryKHR <- getDeviceProcAddr' handle (Ptr "vkCopyAccelerationStructureToMemoryKHR"#)+  vkCmdCopyMemoryToAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyMemoryToAccelerationStructureKHR"#)+  vkCopyMemoryToAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCopyMemoryToAccelerationStructureKHR"#)+  vkCmdWriteAccelerationStructuresPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkCmdWriteAccelerationStructuresPropertiesKHR"#)   vkCmdBuildAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureNV"#)+  vkWriteAccelerationStructuresPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkWriteAccelerationStructuresPropertiesKHR"#)+  vkCmdTraceRaysKHR <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysKHR"#)   vkCmdTraceRaysNV <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysNV"#)-  vkGetRayTracingShaderGroupHandlesNV <- getDeviceProcAddr' handle (Ptr "vkGetRayTracingShaderGroupHandlesNV"#)+  vkGetRayTracingShaderGroupHandlesKHR <- getDeviceProcAddr' handle (Ptr "vkGetRayTracingShaderGroupHandlesKHR"#)+  vkGetRayTracingCaptureReplayShaderGroupHandlesKHR <- getDeviceProcAddr' handle (Ptr "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"#)   vkGetAccelerationStructureHandleNV <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureHandleNV"#)   vkCreateRayTracingPipelinesNV <- getDeviceProcAddr' handle (Ptr "vkCreateRayTracingPipelinesNV"#)+  vkCreateRayTracingPipelinesKHR <- getDeviceProcAddr' handle (Ptr "vkCreateRayTracingPipelinesKHR"#)+  vkCmdTraceRaysIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysIndirectKHR"#)+  vkGetDeviceAccelerationStructureCompatibilityKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceAccelerationStructureCompatibilityKHR"#)   vkGetImageViewHandleNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewHandleNVX"#)+  vkGetImageViewAddressNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewAddressNVX"#)   vkGetDeviceGroupSurfacePresentModes2EXT <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupSurfacePresentModes2EXT"#)   vkAcquireFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkAcquireFullScreenExclusiveModeEXT"#)   vkReleaseFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkReleaseFullScreenExclusiveModeEXT"#)@@ -1170,6 +1212,16 @@   vkGetPipelineExecutableStatisticsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableStatisticsKHR"#)   vkGetPipelineExecutableInternalRepresentationsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableInternalRepresentationsKHR"#)   vkCmdSetLineStippleEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetLineStippleEXT"#)+  vkCreateAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureKHR"#)+  vkCmdBuildAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureKHR"#)+  vkCmdBuildAccelerationStructureIndirectKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureIndirectKHR"#)+  vkBuildAccelerationStructureKHR <- getDeviceProcAddr' handle (Ptr "vkBuildAccelerationStructureKHR"#)+  vkGetAccelerationStructureDeviceAddressKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureDeviceAddressKHR"#)+  vkCreateDeferredOperationKHR <- getDeviceProcAddr' handle (Ptr "vkCreateDeferredOperationKHR"#)+  vkDestroyDeferredOperationKHR <- getDeviceProcAddr' handle (Ptr "vkDestroyDeferredOperationKHR"#)+  vkGetDeferredOperationMaxConcurrencyKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeferredOperationMaxConcurrencyKHR"#)+  vkGetDeferredOperationResultKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeferredOperationResultKHR"#)+  vkDeferredOperationJoinKHR <- getDeviceProcAddr' handle (Ptr "vkDeferredOperationJoinKHR"#)   pure $ DeviceCmds handle     (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)@@ -1254,7 +1306,7 @@     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetScissor)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineWidth" ::: CFloat) -> IO ()) vkCmdSetLineWidth)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()) vkCmdSetDepthBias)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)) -> IO ()) vkCmdSetBlendConstants)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (FixedArray 4 CFloat)) -> IO ()) vkCmdSetBlendConstants)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()) vkCmdSetDepthBounds)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()) vkCmdSetStencilCompareMask)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()) vkCmdSetStencilWriteMask)@@ -1307,14 +1359,12 @@     (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdDebugMarkerEndEXT)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ()) vkCmdDebugMarkerInsertEXT)     (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetMemoryWin32HandleNV)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pProcessCommandsInfo" ::: Ptr CmdProcessCommandsInfoNVX) -> IO ()) vkCmdProcessCommandsNVX)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pReserveSpaceInfo" ::: Ptr CmdReserveSpaceForCommandsInfoNVX) -> IO ()) vkCmdReserveSpaceForCommandsNVX)-    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNVX) -> IO Result) vkCreateIndirectCommandsLayoutNVX)-    (castFunPtr @_ @(Ptr Device_T -> IndirectCommandsLayoutNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyIndirectCommandsLayoutNVX)-    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr ObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pObjectTable" ::: Ptr ObjectTableNVX) -> IO Result) vkCreateObjectTableNVX)-    (castFunPtr @_ @(Ptr Device_T -> ObjectTableNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyObjectTableNVX)-    (castFunPtr @_ @(Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr ObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result) vkRegisterObjectsNVX)-    (castFunPtr @_ @(Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr ObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result) vkUnregisterObjectsNVX)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("isPreprocessed" ::: Bool32) -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ()) vkCmdExecuteGeneratedCommandsNV)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pGeneratedCommandsInfo" ::: Ptr GeneratedCommandsInfoNV) -> IO ()) vkCmdPreprocessGeneratedCommandsNV)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> ("groupIndex" ::: Word32) -> IO ()) vkCmdBindPipelineShaderGroupNV)+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr GeneratedCommandsMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetGeneratedCommandsMemoryRequirementsNV)+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNV) -> IO Result) vkCreateIndirectCommandsLayoutNV)+    (castFunPtr @_ @(Ptr Device_T -> IndirectCommandsLayoutNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyIndirectCommandsLayoutNV)     (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet _)) -> IO ()) vkCmdPushDescriptorSetKHR)     (castFunPtr @_ @(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()) vkTrimCommandPool)     (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetMemoryWin32HandleKHR)@@ -1404,17 +1454,31 @@     (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMeshTasksIndirectCountNV)     (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result) vkCompileDeferredNV)     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result) vkCreateAccelerationStructureNV)-    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureNV)+    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoKHR) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR _)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsNV)-    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result) vkBindAccelerationStructureMemoryNV)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeNV -> IO ()) vkCmdCopyAccelerationStructureNV)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ()) vkCmdWriteAccelerationStructuresPropertiesNV)-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ()) vkCmdBuildAccelerationStructureNV)+    (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoKHR) -> IO Result) vkBindAccelerationStructureMemoryKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> IO ()) vkCmdCopyAccelerationStructureNV)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR _)) -> IO ()) vkCmdCopyAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureInfoKHR _)) -> IO Result) vkCopyAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR _)) -> IO ()) vkCmdCopyAccelerationStructureToMemoryKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (CopyAccelerationStructureToMemoryInfoKHR _)) -> IO Result) vkCopyAccelerationStructureToMemoryKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR _)) -> IO ()) vkCmdCopyMemoryToAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (CopyMemoryToAccelerationStructureInfoKHR _)) -> IO Result) vkCopyMemoryToAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ()) vkCmdWriteAccelerationStructuresPropertiesKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ()) vkCmdBuildAccelerationStructureNV)+    (castFunPtr @_ @(Ptr Device_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: CSize) -> IO Result) vkWriteAccelerationStructuresPropertiesKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysNV)-    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingShaderGroupHandlesNV)-    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureHandleNV)+    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingShaderGroupHandlesKHR)+    (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)+    (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureKHR -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureHandleNV)     (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesNV)+    (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoKHR _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRaygenShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pMissShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pHitShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> ("pCallableShaderBindingTable" ::: Ptr StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdTraceRaysIndirectKHR)+    (castFunPtr @_ @(Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result) vkGetDeviceAccelerationStructureCompatibilityKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32) vkGetImageViewHandleNVX)+    (castFunPtr @_ @(Ptr Device_T -> ImageView -> ("pProperties" ::: Ptr ImageViewAddressPropertiesNVX) -> IO Result) vkGetImageViewAddressNVX)     (castFunPtr @_ @(Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result) vkGetDeviceGroupSurfacePresentModes2EXT)     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkAcquireFullScreenExclusiveModeEXT)     (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkReleaseFullScreenExclusiveModeEXT)@@ -1437,4 +1501,14 @@     (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result) vkGetPipelineExecutableStatisticsKHR)     (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result) vkGetPipelineExecutableInternalRepresentationsKHR)     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()) vkCmdSetLineStippleEXT)+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureKHR) -> IO Result) vkCreateAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO ()) vkCmdBuildAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> IO ()) vkCmdBuildAccelerationStructureIndirectKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("infoCount" ::: Word32) -> ("pInfos" ::: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) -> ("ppOffsetInfos" ::: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) -> IO Result) vkBuildAccelerationStructureKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureDeviceAddressInfoKHR) -> IO DeviceAddress) vkGetAccelerationStructureDeviceAddressKHR)+    (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDeferredOperation" ::: Ptr DeferredOperationKHR) -> IO Result) vkCreateDeferredOperationKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDeferredOperationKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Word32) vkGetDeferredOperationMaxConcurrencyKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Result) vkGetDeferredOperationResultKHR)+    (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Result) vkDeferredOperationJoinKHR) 
src/Graphics/Vulkan/Exception.hs view
@@ -34,6 +34,11 @@   ERROR_FORMAT_NOT_SUPPORTED -> "A requested format is not supported on this device"   ERROR_FRAGMENTED_POOL -> "A pool allocation has failed due to fragmentation of the pool's memory"   ERROR_UNKNOWN -> "An unknown error has occurred; either the application has provided invalid input, or an implementation failure has occurred"+  PIPELINE_COMPILE_REQUIRED_EXT -> "A requested pipeline creation would have required compilation, but the application requested compilation to not be performed"+  OPERATION_NOT_DEFERRED_KHR -> "A deferred operation was requested and no operations were deferred"+  OPERATION_DEFERRED_KHR -> "A deferred operation was requested and at least some of the work was deferred"+  THREAD_DONE_KHR -> "A deferred operation is not complete but there is no work remaining to assign to additional threads"+  THREAD_IDLE_KHR -> "A deferred operation is not complete but there is currently no work for this thread to do at the time of this call"   ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT -> "An operation on a swapchain created with VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT failed as it did not have exlusive full-screen access"   ERROR_INVALID_SHADER_NV -> "One or more shaders failed to compile or link"   ERROR_INCOMPATIBLE_DISPLAY_KHR -> "The display used by a swapchain does not use the same presentable image layout, or is incompatible in a way that prevents sharing an image"
src/Graphics/Vulkan/Extensions.hs view
@@ -57,9 +57,11 @@                                    , module Graphics.Vulkan.Extensions.VK_EXT_memory_priority                                    , module Graphics.Vulkan.Extensions.VK_EXT_metal_surface                                    , module Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info+                                   , module Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control                                    , module Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback                                    , module Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage                                    , module Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign+                                   , module Graphics.Vulkan.Extensions.VK_EXT_robustness2                                    , module Graphics.Vulkan.Extensions.VK_EXT_sample_locations                                    , module Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax                                    , module Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout@@ -98,6 +100,7 @@                                    , module Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address                                    , module Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2                                    , module Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation+                                   , module Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations                                    , module Graphics.Vulkan.Extensions.VK_KHR_depth_stencil_resolve                                    , module Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template                                    , module Graphics.Vulkan.Extensions.VK_KHR_device_group@@ -131,7 +134,9 @@                                    , module Graphics.Vulkan.Extensions.VK_KHR_multiview                                    , module Graphics.Vulkan.Extensions.VK_KHR_performance_query                                    , module Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties+                                   , module Graphics.Vulkan.Extensions.VK_KHR_pipeline_library                                    , module Graphics.Vulkan.Extensions.VK_KHR_push_descriptor+                                   , module Graphics.Vulkan.Extensions.VK_KHR_ray_tracing                                    , module Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout                                    , module Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge                                    , module Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion@@ -162,7 +167,6 @@                                    , module Graphics.Vulkan.Extensions.VK_MVK_ios_surface                                    , module Graphics.Vulkan.Extensions.VK_MVK_macos_surface                                    , module Graphics.Vulkan.Extensions.VK_NN_vi_surface-                                   , module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands                                    , module Graphics.Vulkan.Extensions.VK_NVX_image_view_handle                                    , module Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes                                    , module Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling@@ -173,6 +177,8 @@                                    , module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation                                    , module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing                                    , module Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints+                                   , module Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config+                                   , module Graphics.Vulkan.Extensions.VK_NV_device_generated_commands                                    , module Graphics.Vulkan.Extensions.VK_NV_external_memory                                    , module Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities                                    , module Graphics.Vulkan.Extensions.VK_NV_external_memory_win32@@ -194,6 +200,8 @@                                    , module Graphics.Vulkan.Extensions.VK_NV_viewport_array2                                    , module Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle                                    , module Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex+                                   , module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve+                                   , module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_store_ops                                    , module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform                                    , module Graphics.Vulkan.Extensions.WSITypes                                    ) where@@ -255,9 +263,11 @@ import Graphics.Vulkan.Extensions.VK_EXT_memory_priority import Graphics.Vulkan.Extensions.VK_EXT_metal_surface import Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info+import Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control import Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback import Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage import Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign+import Graphics.Vulkan.Extensions.VK_EXT_robustness2 import Graphics.Vulkan.Extensions.VK_EXT_sample_locations import Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax import Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout@@ -296,6 +306,7 @@ import Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address import Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2 import Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation+import Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations import Graphics.Vulkan.Extensions.VK_KHR_depth_stencil_resolve import Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template import Graphics.Vulkan.Extensions.VK_KHR_device_group@@ -329,7 +340,9 @@ import Graphics.Vulkan.Extensions.VK_KHR_multiview import Graphics.Vulkan.Extensions.VK_KHR_performance_query import Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties+import Graphics.Vulkan.Extensions.VK_KHR_pipeline_library import Graphics.Vulkan.Extensions.VK_KHR_push_descriptor+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing import Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout import Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge import Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion@@ -360,7 +373,6 @@ import Graphics.Vulkan.Extensions.VK_MVK_ios_surface import Graphics.Vulkan.Extensions.VK_MVK_macos_surface import Graphics.Vulkan.Extensions.VK_NN_vi_surface-import Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands import Graphics.Vulkan.Extensions.VK_NVX_image_view_handle import Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes import Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling@@ -371,6 +383,8 @@ import Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation import Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing import Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints+import Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config+import Graphics.Vulkan.Extensions.VK_NV_device_generated_commands import Graphics.Vulkan.Extensions.VK_NV_external_memory import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32@@ -392,6 +406,8 @@ import Graphics.Vulkan.Extensions.VK_NV_viewport_array2 import Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle import Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex+import Graphics.Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve+import Graphics.Vulkan.Extensions.VK_QCOM_render_pass_store_ops import Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform import Graphics.Vulkan.Extensions.WSITypes 
src/Graphics/Vulkan/Extensions/Handles.hs view
@@ -1,9 +1,9 @@ {-# language CPP #-}-module Graphics.Vulkan.Extensions.Handles  ( ObjectTableNVX(..)-                                           , IndirectCommandsLayoutNVX(..)+module Graphics.Vulkan.Extensions.Handles  ( IndirectCommandsLayoutNV(..)                                            , ValidationCacheEXT(..)-                                           , AccelerationStructureNV(..)+                                           , AccelerationStructureKHR(..)                                            , PerformanceConfigurationINTEL(..)+                                           , DeferredOperationKHR(..)                                            , DisplayKHR(..)                                            , DisplayModeKHR(..)                                            , SurfaceKHR(..)@@ -68,37 +68,20 @@ import Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion(..)) import Graphics.Vulkan.Core10.Handles (Semaphore(..)) import Graphics.Vulkan.Core10.Handles (ShaderModule(..))--- | VkObjectTableNVX - Opaque handle to an object table------ = See Also------ 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdReserveSpaceForCommandsInfoNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createObjectTableNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyObjectTableNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.registerObjectsNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.unregisterObjectsNVX'-newtype ObjectTableNVX = ObjectTableNVX Word64-  deriving newtype (Eq, Ord, Storable, Zero)-  deriving anyclass (IsHandle)-instance Show ObjectTableNVX where-  showsPrec p (ObjectTableNVX x) = showParen (p >= 11) (showString "ObjectTableNVX 0x" . showHex x)----- | VkIndirectCommandsLayoutNVX - Opaque handle to an indirect commands+-- | VkIndirectCommandsLayoutNV - Opaque handle to an indirect commands -- layout object -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdReserveSpaceForCommandsInfoNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createIndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyIndirectCommandsLayoutNVX'-newtype IndirectCommandsLayoutNVX = IndirectCommandsLayoutNVX Word64+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.createIndirectCommandsLayoutNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_generated_commands.destroyIndirectCommandsLayoutNV'+newtype IndirectCommandsLayoutNV = IndirectCommandsLayoutNV Word64   deriving newtype (Eq, Ord, Storable, Zero)   deriving anyclass (IsHandle)-instance Show IndirectCommandsLayoutNVX where-  showsPrec p (IndirectCommandsLayoutNVX x) = showParen (p >= 11) (showString "IndirectCommandsLayoutNVX 0x" . showHex x)+instance Show IndirectCommandsLayoutNV where+  showsPrec p (IndirectCommandsLayoutNV x) = showParen (p >= 11) (showString "IndirectCommandsLayoutNV 0x" . showHex x)   -- | VkValidationCacheEXT - Opaque handle to a validation cache object@@ -117,25 +100,33 @@   showsPrec p (ValidationCacheEXT x) = showParen (p >= 11) (showString "ValidationCacheEXT 0x" . showHex x)  --- | VkAccelerationStructureNV - Opaque handle to an acceleration structure+-- | VkAccelerationStructureKHR - Opaque handle to an acceleration structure -- object -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureBuildGeometryInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureDeviceAddressInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureMemoryRequirementsInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.BindAccelerationStructureMemoryInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureToMemoryInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyMemoryToAccelerationStructureInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.WriteDescriptorSetAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.cmdWriteAccelerationStructuresPropertiesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createAccelerationStructureKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.destroyAccelerationStructureKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV',--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'-newtype AccelerationStructureNV = AccelerationStructureNV Word64+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.writeAccelerationStructuresPropertiesKHR'+newtype AccelerationStructureKHR = AccelerationStructureKHR Word64   deriving newtype (Eq, Ord, Storable, Zero)   deriving anyclass (IsHandle)-instance Show AccelerationStructureNV where-  showsPrec p (AccelerationStructureNV x) = showParen (p >= 11) (showString "AccelerationStructureNV 0x" . showHex x)+instance Show AccelerationStructureKHR where+  showsPrec p (AccelerationStructureKHR x) = showParen (p >= 11) (showString "AccelerationStructureKHR 0x" . showHex x)   -- | VkPerformanceConfigurationINTEL - Device configuration for performance@@ -151,6 +142,28 @@   deriving anyclass (IsHandle) instance Show PerformanceConfigurationINTEL where   showsPrec p (PerformanceConfigurationINTEL x) = showParen (p >= 11) (showString "PerformanceConfigurationINTEL 0x" . showHex x)+++-- | VkDeferredOperationKHR - A deferred operation+--+-- = Description+--+-- This handle refers to a tracking structure which manages the execution+-- state for a deferred command.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.createDeferredOperationKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.deferredOperationJoinKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.destroyDeferredOperationKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationMaxConcurrencyKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.getDeferredOperationResultKHR'+newtype DeferredOperationKHR = DeferredOperationKHR Word64+  deriving newtype (Eq, Ord, Storable, Zero)+  deriving anyclass (IsHandle)+instance Show DeferredOperationKHR where+  showsPrec p (DeferredOperationKHR x) = showParen (p >= 11) (showString "DeferredOperationKHR 0x" . showHex x)   -- | VkDisplayKHR - Opaque handle to a display object
src/Graphics/Vulkan/Extensions/Handles.hs-boot view
@@ -1,11 +1,11 @@ {-# language CPP #-}-module Graphics.Vulkan.Extensions.Handles  ( AccelerationStructureNV+module Graphics.Vulkan.Extensions.Handles  ( AccelerationStructureKHR                                            , DebugReportCallbackEXT                                            , DebugUtilsMessengerEXT+                                           , DeferredOperationKHR                                            , DisplayKHR                                            , DisplayModeKHR-                                           , IndirectCommandsLayoutNVX-                                           , ObjectTableNVX+                                           , IndirectCommandsLayoutNV                                            , PerformanceConfigurationINTEL                                            , SurfaceKHR                                            , SwapchainKHR@@ -14,7 +14,7 @@   -data AccelerationStructureNV+data AccelerationStructureKHR   data DebugReportCallbackEXT@@ -23,16 +23,16 @@ data DebugUtilsMessengerEXT  -data DisplayKHR+data DeferredOperationKHR  -data DisplayModeKHR+data DisplayKHR  -data IndirectCommandsLayoutNVX+data DisplayModeKHR  -data ObjectTableNVX+data IndirectCommandsLayoutNV   data PerformanceConfigurationINTEL
src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs view
@@ -84,7 +84,7 @@ -- == Valid Usage -- -- -   @dstOffset@ /must/ be less than or equal to the size of @dstBuffer@---     minus @4@.+--     minus @4@ -- -- -   @dstBuffer@ /must/ have been created with --     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
src/Graphics/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs view
@@ -43,7 +43,7 @@ -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType' data PhysicalDeviceCoherentMemoryFeaturesAMD = PhysicalDeviceCoherentMemoryFeaturesAMD   { -- | @deviceCoherentMemory@ indicates that the implementation supports-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkMemoryPropertyFlagBits device coherent memory>.+    -- <VkMemoryPropertyFlagBits.html device coherent memory>.     deviceCoherentMemory :: Bool }   deriving (Typeable) deriving instance Show PhysicalDeviceCoherentMemoryFeaturesAMD
src/Graphics/Vulkan/Extensions/VK_AMD_display_native_hdr.hs view
@@ -79,7 +79,7 @@ -- -- -   It is only valid to call 'setLocalDimmingAMD' if --     'DisplayNativeHdrSurfaceCapabilitiesAMD'::@localDimmingSupport@ is---     supported.+--     supported -- -- = See Also --@@ -166,7 +166,7 @@ -- -   It is only valid to set @localDimmingEnable@ to --     'Graphics.Vulkan.Core10.BaseType.TRUE' if --     'DisplayNativeHdrSurfaceCapabilitiesAMD'::@localDimmingSupport@ is---     supported.+--     supported -- -- = See Also --
src/Graphics/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs view
@@ -100,7 +100,7 @@   deriving newtype (Eq, Ord, Storable, Zero)  -- | 'MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD' lets the implementation--- decide if overallocation should be allowed.+-- decide if overallocation is allowed. pattern MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = MemoryOverallocationBehaviorAMD 0 -- | 'MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD' specifies overallocation is -- allowed if platform permits.
src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs view
@@ -46,13 +46,11 @@ -- -- == Valid Usage (Implicit) ----- If the--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_rasterization_order@--- device extension is not enabled or the application does not request a--- particular rasterization order through specifying a--- 'PipelineRasterizationStateRasterizationOrderAMD' structure then the--- rasterization order used by the graphics pipeline defaults to--- 'RASTERIZATION_ORDER_STRICT_AMD'.+-- If the @VK_AMD_rasterization_order@ device extension is not enabled or+-- the application does not request a particular rasterization order+-- through specifying a 'PipelineRasterizationStateRasterizationOrderAMD'+-- structure then the rasterization order used by the graphics pipeline+-- defaults to 'RASTERIZATION_ORDER_STRICT_AMD'. -- -- = See Also --
src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs view
@@ -13,6 +13,7 @@                                                       , pattern AMD_SHADER_INFO_EXTENSION_NAME                                                       ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -56,7 +57,6 @@ import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.NamedType ((:::))@@ -102,7 +102,7 @@ -- -   @pInfoSize@ is a pointer to a value related to the amount of data --     the query returns, as described below. ----- -   @pInfo@ is either NULL or a pointer to a buffer.+-- -   @pInfo@ is either @NULL@ or a pointer to a buffer. -- -- = Description --@@ -327,7 +327,7 @@     lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (numPhysicalSgprs)     lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (numAvailableVgprs)     lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (numAvailableSgprs)-    let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 3 Word32)))     lift $ case (computeWorkGroupSize) of       (e0, e1, e2) -> do         poke (pComputeWorkGroupSize' :: Ptr Word32) (e0)@@ -343,7 +343,7 @@     lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)     lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)-    let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 3 Word32)))     lift $ case ((zero, zero, zero)) of       (e0, e1, e2) -> do         poke (pComputeWorkGroupSize' :: Ptr Word32) (e0)@@ -359,7 +359,7 @@     numPhysicalSgprs <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))     numAvailableVgprs <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))     numAvailableSgprs <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))-    let pcomputeWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pcomputeWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 56 :: Ptr (FixedArray 3 Word32)))     computeWorkGroupSize0 <- peek @Word32 ((pcomputeWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))     computeWorkGroupSize1 <- peek @Word32 ((pcomputeWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))     computeWorkGroupSize2 <- peek @Word32 ((pcomputeWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))
src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs view
@@ -40,9 +40,8 @@ data TextureLODGatherFormatPropertiesAMD = TextureLODGatherFormatPropertiesAMD   { -- | @supportsTextureGatherLODBiasAMD@ tells if the image format can be used     -- with texture gather bias\/LOD functions, as introduced by the-    -- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_texture_gather_bias_lod@-    -- extension. This field is set by the implementation. User-specified value-    -- is ignored.+    -- @VK_AMD_texture_gather_bias_lod@ extension. This field is set by the+    -- implementation. User-specified value is ignored.     supportsTextureGatherLODBiasAMD :: Bool }   deriving (Typeable) deriving instance Show TextureLODGatherFormatPropertiesAMD
src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs view
@@ -202,13 +202,13 @@ --     supported for import, as reported by --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties' --     or---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties' -- -- -   If @buffer@ is not @NULL@, it /must/ be a valid Android hardware --     buffer object with @AHardwareBuffer_Desc@::@format@ and --     @AHardwareBuffer_Desc@::@usage@ compatible with Vulkan as described --     in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers> -- -- == Valid Usage (Implicit) --@@ -413,14 +413,14 @@ -- -   'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID' --     /must/ have been included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@---     when @memory@ was created.+--     when @memory@ was created -- -- -   If the @pNext@ chain of the --     'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' used to allocate --     @memory@ included a --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo' --     with non-@NULL@ @image@ member, then that @image@ /must/ already be---     bound to @memory@.+--     bound to @memory@ -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_EXT_conditional_rendering.hs view
@@ -15,7 +15,6 @@                                                                 , pattern EXT_CONDITIONAL_RENDERING_EXTENSION_NAME                                                                 ) where -import Control.Exception.Base (bracket_) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr)@@ -134,12 +133,18 @@   lift $ vkCmdBeginConditionalRenderingEXT' (commandBufferHandle (commandBuffer)) pConditionalRenderingBegin   pure $ () --- | A safe wrapper for 'cmdBeginConditionalRenderingEXT' and--- 'cmdEndConditionalRenderingEXT' using 'bracket_'-cmdWithConditionalRenderingEXT :: forall r . CommandBuffer -> ConditionalRenderingBeginInfoEXT -> IO r -> IO r-cmdWithConditionalRenderingEXT commandBuffer pConditionalRenderingBegin =-  bracket_-    (cmdBeginConditionalRenderingEXT commandBuffer pConditionalRenderingBegin)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'cmdBeginConditionalRenderingEXT' and 'cmdEndConditionalRenderingEXT'+--+-- To ensure that 'cmdEndConditionalRenderingEXT' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+cmdWithConditionalRenderingEXT :: forall io r . MonadIO io => (io () -> io () -> r) -> CommandBuffer -> ConditionalRenderingBeginInfoEXT -> r+cmdWithConditionalRenderingEXT b commandBuffer pConditionalRenderingBegin =+  b (cmdBeginConditionalRenderingEXT commandBuffer pConditionalRenderingBegin)     (cmdEndConditionalRenderingEXT commandBuffer)  @@ -169,12 +174,12 @@ -- -- -   If conditional rendering was made --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>---     outside of a render pass instance, it must not be ended inside a+--     outside of a render pass instance, it /must/ not be ended inside a --     render pass instance -- -- -   If conditional rendering was made --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>---     within a subpass it must be ended in the same subpass+--     within a subpass it /must/ be ended in the same subpass -- -- == Valid Usage (Implicit) --@@ -240,7 +245,7 @@ --     bit set -- -- -   @offset@ /must/ be less than the size of @buffer@ by at least 32---     bits.+--     bits -- -- -   @offset@ /must/ be a multiple of 4 --
src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs view
@@ -14,6 +14,7 @@                                                        , DebugReportObjectTypeEXT(..)                                                        ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned) import GHC.Base (when)@@ -42,7 +43,6 @@ import Data.ByteString (ByteString) import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..))-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.Core10.Handles (CommandBuffer)@@ -98,7 +98,7 @@ -- -- == Host Synchronization ----- -   Host access to @pNameInfo.object@ /must/ be externally synchronized+-- -   Host access to @pNameInfo->object@ /must/ be externally synchronized -- -- == Return Codes --@@ -149,7 +149,7 @@ -- -- == Host Synchronization ----- -   Host access to @pTagInfo.object@ /must/ be externally synchronized+-- -   Host access to @pTagInfo->object@ /must/ be externally synchronized -- -- == Return Codes --@@ -266,7 +266,7 @@ -- -   If @commandBuffer@ is a secondary command buffer, there /must/ be an --     outstanding 'cmdDebugMarkerBeginEXT' command recorded to --     @commandBuffer@ that has not previously been ended by a call to---     'cmdDebugMarkerEndEXT'.+--     'cmdDebugMarkerEndEXT' -- -- == Valid Usage (Implicit) --@@ -389,7 +389,7 @@     objectType :: DebugReportObjectTypeEXT   , -- | @object@ /must/ be a Vulkan object of the type associated with     -- @objectType@ as defined in-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>     object :: Word64   , -- | @pObjectName@ /must/ be a null-terminated UTF-8 string     objectName :: ByteString@@ -456,7 +456,7 @@     objectType :: DebugReportObjectTypeEXT   , -- | @object@ /must/ be a Vulkan object of the type associated with     -- @objectType@ as defined in-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>     object :: Word64   , -- | @tagName@ is a numerical identifier of the tag.     tagName :: Word64@@ -544,7 +544,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pMarkerName'' <- ContT $ useAsCString (markerName)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pMarkerName''-    let pColor' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+    let pColor' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray 4 CFloat)))     lift $ case (color) of       (e0, e1, e2, e3) -> do         poke (pColor' :: Ptr CFloat) (CFloat (e0))@@ -564,7 +564,7 @@ instance FromCStruct DebugMarkerMarkerInfoEXT where   peekCStruct p = do     pMarkerName <- packCString =<< peek ((p `plusPtr` 16 :: Ptr (Ptr CChar)))-    let pcolor = lowerArrayPtr @CFloat ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+    let pcolor = lowerArrayPtr @CFloat ((p `plusPtr` 24 :: Ptr (FixedArray 4 CFloat)))     color0 <- peek @CFloat ((pcolor `advancePtrBytes` 0 :: Ptr CFloat))     color1 <- peek @CFloat ((pcolor `advancePtrBytes` 4 :: Ptr CFloat))     color2 <- peek @CFloat ((pcolor `advancePtrBytes` 8 :: Ptr CFloat))
src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs view
@@ -44,11 +44,9 @@                                                                                  , DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT                                                                                  , DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT                                                                                  , DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT-                                                                                 , DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT-                                                                                 , DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT                                                                                  , DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT-                                                                                 , DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT                                                                                  , DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT+                                                                                 , DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT                                                                                  , DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT                                                                                  , ..                                                                                  )@@ -141,7 +139,7 @@ -- -- = Parameters ----- -   @instance@ the instance the callback will be logged on.+-- -   @instance@ is the instance the callback will be logged on. -- -- -   @pCreateInfo@ is a pointer to a 'DebugReportCallbackCreateInfoEXT' --     structure defining the conditions under which this callback will be@@ -200,14 +198,17 @@   pCallback <- lift $ peek @DebugReportCallbackEXT pPCallback   pure $ (pCallback) --- | A safe wrapper for 'createDebugReportCallbackEXT' and--- 'destroyDebugReportCallbackEXT' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createDebugReportCallbackEXT' and 'destroyDebugReportCallbackEXT' ----- The allocated value must not be returned from the provided computation-withDebugReportCallbackEXT :: forall r . Instance -> DebugReportCallbackCreateInfoEXT -> Maybe AllocationCallbacks -> ((DebugReportCallbackEXT) -> IO r) -> IO r-withDebugReportCallbackEXT instance' pCreateInfo pAllocator =-  bracket-    (createDebugReportCallbackEXT instance' pCreateInfo pAllocator)+-- To ensure that 'destroyDebugReportCallbackEXT' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDebugReportCallbackEXT :: forall io r . MonadIO io => (io (DebugReportCallbackEXT) -> ((DebugReportCallbackEXT) -> io ()) -> r) -> Instance -> DebugReportCallbackCreateInfoEXT -> Maybe AllocationCallbacks -> r+withDebugReportCallbackEXT b instance' pCreateInfo pAllocator =+  b (createDebugReportCallbackEXT instance' pCreateInfo pAllocator)     (\(o0) -> destroyDebugReportCallbackEXT instance' o0 pAllocator)  @@ -222,9 +223,9 @@ -- -- = Parameters ----- -   @instance@ the instance where the callback was created.+-- -   @instance@ is the instance where the callback was created. ----- -   @callback@ the+-- -   @callback@ is the --     'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' object --     to destroy. @callback@ is an externally synchronized object and --     /must/ not be used on more than one thread at a time. This means@@ -301,9 +302,9 @@ -- -   @objectType@ is a 'DebugReportObjectTypeEXT' specifying the type of --     object being used or created at the time the event was triggered. ----- -   @object@ this is the object where the issue was detected. @object@---     /can/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' if there---     is no object associated with the event.+-- -   @object@ is the object where the issue was detected. @object@ /can/+--     be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' if there is no+--     object associated with the event. -- -- -   @location@ is an application defined value. --@@ -331,7 +332,7 @@ --     @object@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', --     @object@ /must/ be a Vulkan object of the corresponding type --     associated with @objectType@ as defined in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types> -- -- == Valid Usage (Implicit) --@@ -512,79 +513,75 @@ -- -- \' ----- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DebugReportObjectTypeEXT'                                  | Vulkan Handle Type                                             |--- +=============================================================+================================================================+--- | 'DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT'                      | Unknown\/Undefined Handle                                      |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT'                     | 'Graphics.Vulkan.Core10.Handles.Instance'                      |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT'              | 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'                |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT'                       | 'Graphics.Vulkan.Core10.Handles.Device'                        |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT'                        | 'Graphics.Vulkan.Core10.Handles.Queue'                         |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT'                    | 'Graphics.Vulkan.Core10.Handles.Semaphore'                     |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT'               | 'Graphics.Vulkan.Core10.Handles.CommandBuffer'                 |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT'                        | 'Graphics.Vulkan.Core10.Handles.Fence'                         |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT'                | 'Graphics.Vulkan.Core10.Handles.DeviceMemory'                  |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT'                       | 'Graphics.Vulkan.Core10.Handles.Buffer'                        |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT'                        | 'Graphics.Vulkan.Core10.Handles.Image'                         |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT'                        | 'Graphics.Vulkan.Core10.Handles.Event'                         |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT'                   | 'Graphics.Vulkan.Core10.Handles.QueryPool'                     |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT'                  | 'Graphics.Vulkan.Core10.Handles.BufferView'                    |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT'                   | 'Graphics.Vulkan.Core10.Handles.ImageView'                     |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT'                | 'Graphics.Vulkan.Core10.Handles.ShaderModule'                  |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT'               | 'Graphics.Vulkan.Core10.Handles.PipelineCache'                 |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT'              | 'Graphics.Vulkan.Core10.Handles.PipelineLayout'                |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT'                  | 'Graphics.Vulkan.Core10.Handles.RenderPass'                    |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT'                     | 'Graphics.Vulkan.Core10.Handles.Pipeline'                      |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT'        | 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout'           |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT'                      | 'Graphics.Vulkan.Core10.Handles.Sampler'                       |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT'              | 'Graphics.Vulkan.Core10.Handles.DescriptorPool'                |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT'               | 'Graphics.Vulkan.Core10.Handles.DescriptorSet'                 |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT'                  | 'Graphics.Vulkan.Core10.Handles.Framebuffer'                   |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT'                 | 'Graphics.Vulkan.Core10.Handles.CommandPool'                   |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT'                  | 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'                |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT'                | 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'              |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT'    | 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT'    |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT'                  | 'Graphics.Vulkan.Extensions.Handles.DisplayKHR'                |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT'             | 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR'            |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT'             | 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'            |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT' | 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' |--- +-------------------------------------------------------------+----------------------------------------------------------------+--- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT'   | 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate'      |--- +-------------------------------------------------------------+----------------------------------------------------------------++-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DebugReportObjectTypeEXT'                                | Vulkan Handle Type                                          |+-- +===========================================================+=============================================================++-- | 'DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT'                    | Unknown\/Undefined Handle                                   |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT'                   | 'Graphics.Vulkan.Core10.Handles.Instance'                   |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT'            | 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'             |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT'                     | 'Graphics.Vulkan.Core10.Handles.Device'                     |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT'                      | 'Graphics.Vulkan.Core10.Handles.Queue'                      |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT'                  | 'Graphics.Vulkan.Core10.Handles.Semaphore'                  |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT'             | 'Graphics.Vulkan.Core10.Handles.CommandBuffer'              |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT'                      | 'Graphics.Vulkan.Core10.Handles.Fence'                      |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT'              | 'Graphics.Vulkan.Core10.Handles.DeviceMemory'               |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT'                     | 'Graphics.Vulkan.Core10.Handles.Buffer'                     |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT'                      | 'Graphics.Vulkan.Core10.Handles.Image'                      |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT'                      | 'Graphics.Vulkan.Core10.Handles.Event'                      |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT'                 | 'Graphics.Vulkan.Core10.Handles.QueryPool'                  |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT'                | 'Graphics.Vulkan.Core10.Handles.BufferView'                 |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT'                 | 'Graphics.Vulkan.Core10.Handles.ImageView'                  |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT'              | 'Graphics.Vulkan.Core10.Handles.ShaderModule'               |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT'             | 'Graphics.Vulkan.Core10.Handles.PipelineCache'              |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT'            | 'Graphics.Vulkan.Core10.Handles.PipelineLayout'             |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT'                | 'Graphics.Vulkan.Core10.Handles.RenderPass'                 |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT'                   | 'Graphics.Vulkan.Core10.Handles.Pipeline'                   |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT'      | 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout'        |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT'                    | 'Graphics.Vulkan.Core10.Handles.Sampler'                    |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT'            | 'Graphics.Vulkan.Core10.Handles.DescriptorPool'             |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT'             | 'Graphics.Vulkan.Core10.Handles.DescriptorSet'              |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT'                | 'Graphics.Vulkan.Core10.Handles.Framebuffer'                |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT'               | 'Graphics.Vulkan.Core10.Handles.CommandPool'                |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT'                | 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'             |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT'              | 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'           |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT'  | 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT'                | 'Graphics.Vulkan.Extensions.Handles.DisplayKHR'             |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT'           | 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR'         |+-- +-----------------------------------------------------------+-------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT' | 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate'   |+-- +-----------------------------------------------------------+-------------------------------------------------------------+ ----- VkDebugReportObjectTypeEXT and Vulkan Handle Relationship+-- 'DebugReportObjectTypeEXT' and Vulkan Handle Relationship -- -- Note --@@ -663,16 +660,12 @@ pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = DebugReportObjectTypeEXT 29 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT" pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = DebugReportObjectTypeEXT 30--- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = DebugReportObjectTypeEXT 31--- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = DebugReportObjectTypeEXT 32 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT" pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = DebugReportObjectTypeEXT 33--- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"-pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = DebugReportObjectTypeEXT 1000165000 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT" pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = DebugReportObjectTypeEXT 1000156000+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = DebugReportObjectTypeEXT 1000165000 -- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT" pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = DebugReportObjectTypeEXT 1000085000 {-# complete DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,@@ -706,11 +699,9 @@              DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,              DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,              DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,-             DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,-             DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,              DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,-             DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT,              DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,+             DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT,              DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT #-}  instance Show DebugReportObjectTypeEXT where@@ -746,11 +737,9 @@     DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"     DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"     DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"-    DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"-    DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"     DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"-    DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"     DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"+    DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT"     DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"     DebugReportObjectTypeEXT x -> showParen (p >= 11) (showString "DebugReportObjectTypeEXT " . showsPrec 11 x) @@ -786,11 +775,9 @@                             , ("DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT)                             , ("DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT)                             , ("DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT", pure DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT", pure DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT)                             , ("DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT)-                            , ("DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT", pure DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT)                             , ("DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT)+                            , ("DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT)                             , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT)]                      +++                      prec 10 (do
src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs view
@@ -41,8 +41,8 @@                                                       , DebugUtilsMessengerEXT(..)                                                       ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket)-import Control.Exception.Base (bracket_) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Marshal.Alloc (callocBytes)@@ -92,7 +92,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.NamedType ((:::))@@ -176,7 +175,7 @@ -- -- == Host Synchronization ----- -   Host access to @pNameInfo.objectHandle@ /must/ be externally+-- -   Host access to @pNameInfo->objectHandle@ /must/ be externally --     synchronized -- -- == Return Codes@@ -228,7 +227,7 @@ -- -- == Host Synchronization ----- -   Host access to @pTagInfo.objectHandle@ /must/ be externally+-- -   Host access to @pTagInfo->objectHandle@ /must/ be externally --     synchronized -- -- == Return Codes@@ -434,12 +433,18 @@   lift $ vkCmdBeginDebugUtilsLabelEXT' (commandBufferHandle (commandBuffer)) pLabelInfo   pure $ () --- | A safe wrapper for 'cmdBeginDebugUtilsLabelEXT' and--- 'cmdEndDebugUtilsLabelEXT' using 'bracket_'-cmdWithDebugUtilsLabelEXT :: forall r . CommandBuffer -> DebugUtilsLabelEXT -> IO r -> IO r-cmdWithDebugUtilsLabelEXT commandBuffer pLabelInfo =-  bracket_-    (cmdBeginDebugUtilsLabelEXT commandBuffer pLabelInfo)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'cmdBeginDebugUtilsLabelEXT' and 'cmdEndDebugUtilsLabelEXT'+--+-- To ensure that 'cmdEndDebugUtilsLabelEXT' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+cmdWithDebugUtilsLabelEXT :: forall io r . MonadIO io => (io () -> io () -> r) -> CommandBuffer -> DebugUtilsLabelEXT -> r+cmdWithDebugUtilsLabelEXT b commandBuffer pLabelInfo =+  b (cmdBeginDebugUtilsLabelEXT commandBuffer pLabelInfo)     (cmdEndDebugUtilsLabelEXT commandBuffer)  @@ -475,7 +480,7 @@ -- -   If @commandBuffer@ is a secondary command buffer, there /must/ be an --     outstanding 'cmdBeginDebugUtilsLabelEXT' command recorded to --     @commandBuffer@ that has not previously been ended by a call to---     'cmdEndDebugUtilsLabelEXT'.+--     'cmdEndDebugUtilsLabelEXT' -- -- == Valid Usage (Implicit) --@@ -585,7 +590,7 @@ -- -- = Parameters ----- -   @instance@ the instance the messenger will be used with.+-- -   @instance@ is the instance the messenger will be used with. -- -- -   @pCreateInfo@ is a pointer to a 'DebugUtilsMessengerCreateInfoEXT' --     structure containing the callback pointer, as well as defining@@ -648,14 +653,17 @@   pMessenger <- lift $ peek @DebugUtilsMessengerEXT pPMessenger   pure $ (pMessenger) --- | A safe wrapper for 'createDebugUtilsMessengerEXT' and--- 'destroyDebugUtilsMessengerEXT' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createDebugUtilsMessengerEXT' and 'destroyDebugUtilsMessengerEXT' ----- The allocated value must not be returned from the provided computation-withDebugUtilsMessengerEXT :: forall r . Instance -> DebugUtilsMessengerCreateInfoEXT -> Maybe AllocationCallbacks -> ((DebugUtilsMessengerEXT) -> IO r) -> IO r-withDebugUtilsMessengerEXT instance' pCreateInfo pAllocator =-  bracket-    (createDebugUtilsMessengerEXT instance' pCreateInfo pAllocator)+-- To ensure that 'destroyDebugUtilsMessengerEXT' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDebugUtilsMessengerEXT :: forall io r . MonadIO io => (io (DebugUtilsMessengerEXT) -> ((DebugUtilsMessengerEXT) -> io ()) -> r) -> Instance -> DebugUtilsMessengerCreateInfoEXT -> Maybe AllocationCallbacks -> r+withDebugUtilsMessengerEXT b instance' pCreateInfo pAllocator =+  b (createDebugUtilsMessengerEXT instance' pCreateInfo pAllocator)     (\(o0) -> destroyDebugUtilsMessengerEXT instance' o0 pAllocator)  @@ -670,9 +678,9 @@ -- -- = Parameters ----- -   @instance@ the instance where the callback was created.+-- -   @instance@ is the instance where the callback was created. ----- -   @messenger@ the+-- -   @messenger@ is the --     'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' object --     to destroy. @messenger@ is an externally synchronized object and --     /must/ not be used on more than one thread at a time. This means@@ -805,8 +813,8 @@ -- -- Applications /may/ change the name associated with an object simply by -- calling 'setDebugUtilsObjectNameEXT' again with a new string. If--- @pObjectName@ is an empty string, then any previously set name is--- removed.+-- @pObjectName@ is either @NULL@ or an empty string, then any previously+-- set name is removed. -- -- == Valid Usage --@@ -833,7 +841,8 @@ -- -   @objectType@ /must/ be a valid --     'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' value ----- -   @pObjectName@ /must/ be a null-terminated UTF-8 string+-- -   If @pObjectName@ is not @NULL@, @pObjectName@ /must/ be a+--     null-terminated UTF-8 string -- -- = See Also --@@ -847,9 +856,9 @@     objectType :: ObjectType   , -- | @objectHandle@ is the object to be named.     objectHandle :: Word64-  , -- | @pObjectName@ is a null-terminated UTF-8 string specifying the name to-    -- apply to @objectHandle@.-    objectName :: ByteString+  , -- | @pObjectName@ is either @NULL@ or a null-terminated UTF-8 string+    -- specifying the name to apply to @objectHandle@.+    objectName :: Maybe ByteString   }   deriving (Typeable) deriving instance Show DebugUtilsObjectNameInfoEXT@@ -861,33 +870,34 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr ObjectType)) (objectType)     lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (objectHandle)-    pObjectName'' <- ContT $ useAsCString (objectName)+    pObjectName'' <- case (objectName) of+      Nothing -> pure nullPtr+      Just j -> ContT $ useAsCString (j)     lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pObjectName''     lift $ f   cStructSize = 40   cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr ObjectType)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)-    pObjectName'' <- ContT $ useAsCString (mempty)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pObjectName''-    lift $ f+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr ObjectType)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+    f  instance FromCStruct DebugUtilsObjectNameInfoEXT where   peekCStruct p = do     objectType <- peek @ObjectType ((p `plusPtr` 16 :: Ptr ObjectType))     objectHandle <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))-    pObjectName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))+    pObjectName <- peek @(Ptr CChar) ((p `plusPtr` 32 :: Ptr (Ptr CChar)))+    pObjectName' <- maybePeek (\j -> packCString  (j)) pObjectName     pure $ DebugUtilsObjectNameInfoEXT-             objectType objectHandle pObjectName+             objectType objectHandle pObjectName'  instance Zero DebugUtilsObjectNameInfoEXT where   zero = DebugUtilsObjectNameInfoEXT            zero            zero-           mempty+           Nothing   -- | VkDebugUtilsObjectTagInfoEXT - Specify parameters of a tag to attach to@@ -1002,7 +1012,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     pLabelName'' <- ContT $ useAsCString (labelName)     lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pLabelName''-    let pColor' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+    let pColor' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray 4 CFloat)))     lift $ case (color) of       (e0, e1, e2, e3) -> do         poke (pColor' :: Ptr CFloat) (CFloat (e0))@@ -1022,7 +1032,7 @@ instance FromCStruct DebugUtilsLabelEXT where   peekCStruct p = do     pLabelName <- packCString =<< peek ((p `plusPtr` 16 :: Ptr (Ptr CChar)))-    let pcolor = lowerArrayPtr @CFloat ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+    let pcolor = lowerArrayPtr @CFloat ((p `plusPtr` 24 :: Ptr (FixedArray 4 CFloat)))     color0 <- peek @CFloat ((pcolor `advancePtrBytes` 0 :: Ptr CFloat))     color1 <- peek @CFloat ((pcolor `advancePtrBytes` 4 :: Ptr CFloat))     color2 <- peek @CFloat ((pcolor `advancePtrBytes` 8 :: Ptr CFloat))@@ -1167,13 +1177,13 @@ -- -- Note ----- @pQueueLabels@ will only be non-NULL if one of the objects in @pObjects@--- can be related directly to a defined+-- @pQueueLabels@ will only be non-@NULL@ if one of the objects in+-- @pObjects@ can be related directly to a defined -- 'Graphics.Vulkan.Core10.Handles.Queue' which has had one or more labels -- associated with it. ----- Likewise, @pCmdBufLabels@ will only be non-NULL if one of the objects in--- @pObjects@ can be related directly to a defined+-- Likewise, @pCmdBufLabels@ will only be non-@NULL@ if one of the objects+-- in @pObjects@ can be related directly to a defined -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' which has had one or more -- labels associated with it. Additionally, while command buffer labels -- allow for beginning and ending across different command buffers, the@@ -1216,7 +1226,7 @@ -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType', -- 'submitDebugUtilsMessageEXT' data DebugUtilsMessengerCallbackDataEXT = DebugUtilsMessengerCallbackDataEXT-  { -- | @flags@ is 0 and reserved for future use.+  { -- | @flags@ is @0@ and is reserved for future use.     flags :: DebugUtilsMessengerCallbackDataFlagsEXT   , -- | @pMessageIdName@ is a null-terminated string that identifies the     -- particular message ID that is associated with the provided message. If@@ -1231,15 +1241,17 @@     messageIdNumber :: Int32   , -- | @pMessage@ is a null-terminated string detailing the trigger conditions.     message :: ByteString-  , -- | @pQueueLabels@ is NULL or a pointer to an array of 'DebugUtilsLabelEXT'-    -- active in the current 'Graphics.Vulkan.Core10.Handles.Queue' at the time-    -- the callback was triggered. Refer to+  , -- | @pQueueLabels@ is @NULL@ or a pointer to an array of+    -- 'DebugUtilsLabelEXT' active in the current+    -- 'Graphics.Vulkan.Core10.Handles.Queue' at the time the callback was+    -- triggered. Refer to     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels Queue Labels>     -- for more information.     queueLabels :: Vector DebugUtilsLabelEXT-  , -- | @pCmdBufLabels@ is NULL or a pointer to an array of 'DebugUtilsLabelEXT'-    -- active in the current 'Graphics.Vulkan.Core10.Handles.CommandBuffer' at-    -- the time the callback was triggered. Refer to+  , -- | @pCmdBufLabels@ is @NULL@ or a pointer to an array of+    -- 'DebugUtilsLabelEXT' active in the current+    -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' at the time the callback+    -- was triggered. Refer to     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labels Command Buffer Labels>     -- for more information.     cmdBufLabels :: Vector DebugUtilsLabelEXT@@ -1495,11 +1507,11 @@ type PFN_vkDebugUtilsMessengerCallbackEXT = FunPtr FN_vkDebugUtilsMessengerCallbackEXT  -type EXT_DEBUG_UTILS_SPEC_VERSION = 1+type EXT_DEBUG_UTILS_SPEC_VERSION = 2  -- No documentation found for TopLevel "VK_EXT_DEBUG_UTILS_SPEC_VERSION" pattern EXT_DEBUG_UTILS_SPEC_VERSION :: forall a . Integral a => a-pattern EXT_DEBUG_UTILS_SPEC_VERSION = 1+pattern EXT_DEBUG_UTILS_SPEC_VERSION = 2   type EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils"
src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs view
@@ -316,7 +316,7 @@ -- == Valid Usage -- -- -   One or more present commands on @swapchain@ /must/ have been---     processed by the presentation engine.+--     processed by the presentation engine -- -- == Valid Usage (Implicit) --@@ -511,7 +511,7 @@ -- -   The bits in @surfaceCounters@ /must/ be supported by --     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@surface@, --     as reported by---     'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.getPhysicalDeviceSurfaceCapabilities2EXT'.+--     'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.getPhysicalDeviceSurfaceCapabilities2EXT' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs view
@@ -198,7 +198,7 @@     supportedUsageFlags :: ImageUsageFlags   , -- | @supportedSurfaceCounters@ /must/ not include     -- 'SURFACE_COUNTER_VBLANK_EXT' unless the surface queried is a-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#wsi-display-surfaces display surface>.+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#wsi-display-surfaces display surface>     supportedSurfaceCounters :: SurfaceCounterFlagsEXT   }   deriving (Typeable)
src/Graphics/Vulkan/Extensions/VK_EXT_filter_cubic.hs view
@@ -108,7 +108,7 @@ --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2' --     structure /must/ include a --     'PhysicalDeviceImageViewImageFormatInfoEXT' structure with an---     @imageViewType@ that is compatible with @imageType@.+--     @imageViewType@ that is compatible with @imageType@ -- -- = See Also --
src/Graphics/Vulkan/Extensions/VK_EXT_fragment_density_map.hs view
@@ -245,13 +245,13 @@ --     @loadOp@ equal to --     'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_LOAD' --     or---     'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_DONT_CARE'.+--     'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_DONT_CARE' -- -- -   If @fragmentDensityMapAttachment@ is not --     'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', --     @fragmentDensityMapAttachment@ /must/ reference an attachment with a --     @storeOp@ equal to---     'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_DONT_CARE'.+--     'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_DONT_CARE' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs view
@@ -450,7 +450,7 @@ -- -- Note ----- It’s the responsibility of the application to change the display+-- It is the responsibility of the application to change the display -- settings of the targeted Win32 display using the appropriate platform -- APIs. Such changes /may/ alter the surface capabilities reported for the -- created surface.
src/Graphics/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs view
@@ -324,18 +324,18 @@ -- -   If @sharingMode@ is --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', --     then @pQueueFamilyIndices@ /must/ be a valid pointer to an array of---     @queueFamilyIndexCount@ @uint32_t@ values.+--     @queueFamilyIndexCount@ @uint32_t@ values -- -- -   If @sharingMode@ is --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',---     then @queueFamilyIndexCount@ /must/ be greater than @1@.+--     then @queueFamilyIndexCount@ /must/ be greater than @1@ -- -- -   If @sharingMode@ is --     'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', --     each element of @pQueueFamilyIndices@ /must/ be unique and /must/ be --     less than the @pQueueFamilyPropertyCount@ returned by --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'---     for the @physicalDevice@ that was used to create @device@.+--     for the @physicalDevice@ that was used to create @device@ -- -- == Valid Usage (Implicit) --@@ -412,11 +412,11 @@ -- -- == Valid Usage ----- -   Each /modifier/ in @pDrmFormatModifiers@ must be compatible with the---     parameters in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' and its---     @pNext@ chain, as determined by querying+-- -   Each /modifier/ in @pDrmFormatModifiers@ /must/ be compatible with+--     the parameters in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' and+--     its @pNext@ chain, as determined by querying --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'---     extended with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'.+--     extended with 'PhysicalDeviceImageDrmFormatModifierInfoEXT' -- -- == Valid Usage (Implicit) --@@ -498,26 +498,26 @@ -- -- == Valid Usage ----- -   @drmFormatModifier@ must be compatible with the parameters in+-- -   @drmFormatModifier@ /must/ be compatible with the parameters in --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo' and its @pNext@ --     chain, as determined by querying --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'---     extended with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'.+--     extended with 'PhysicalDeviceImageDrmFormatModifierInfoEXT' -- -- -   @drmFormatModifierPlaneCount@ /must/ be equal to the --     'DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@ --     associated with --     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@format@ and --     @drmFormatModifier@, as found by querying---     'DrmFormatModifierPropertiesListEXT'.+--     'DrmFormatModifierPropertiesListEXT' -- -- -   For each element of @pPlaneLayouts@, @size@ /must/ be 0 -- -- -   For each element of @pPlaneLayouts@, @arrayPitch@ /must/ be 0 if---     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@arrayLayers@ is 1.+--     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@arrayLayers@ is 1 -- -- -   For each element of @pPlaneLayouts@, @depthPitch@ /must/ be 0 if---     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@extent.depth@ is 1.+--     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@extent.depth@ is 1 -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_EXT_memory_budget.hs view
@@ -6,6 +6,7 @@                                                         , pattern EXT_MEMORY_BUDGET_EXTENSION_NAME                                                         ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Monad (unless) import Foreign.Marshal.Alloc (allocaBytesAligned) import GHC.IO (throwIO)@@ -25,7 +26,6 @@ import Foreign.Ptr (Ptr) import Data.Kind (Type) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.Core10.BaseType (DeviceSize)@@ -86,10 +86,10 @@     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     unless ((Data.Vector.length $ (heapBudget)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "heapBudget is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (heapBudget)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (heapBudget)     unless ((Data.Vector.length $ (heapUsage)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "heapUsage is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 144 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (heapUsage)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 144 :: Ptr (FixedArray MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (heapUsage)     f   cStructSize = 272   cStructAlignment = 8@@ -98,16 +98,16 @@     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "heapBudget is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (mempty)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (mempty)     unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $       throwIO $ IOError Nothing InvalidArgument "" "heapUsage is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 144 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (mempty)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 144 :: Ptr (FixedArray MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (mempty)     f  instance FromCStruct PhysicalDeviceMemoryBudgetPropertiesEXT where   peekCStruct p = do-    heapBudget <- generateM (MAX_MEMORY_HEAPS) (\i -> peek @DeviceSize (((lowerArrayPtr @DeviceSize ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))-    heapUsage <- generateM (MAX_MEMORY_HEAPS) (\i -> peek @DeviceSize (((lowerArrayPtr @DeviceSize ((p `plusPtr` 144 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))+    heapBudget <- generateM (MAX_MEMORY_HEAPS) (\i -> peek @DeviceSize (((lowerArrayPtr @DeviceSize ((p `plusPtr` 16 :: Ptr (FixedArray MAX_MEMORY_HEAPS DeviceSize)))) `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))+    heapUsage <- generateM (MAX_MEMORY_HEAPS) (\i -> peek @DeviceSize (((lowerArrayPtr @DeviceSize ((p `plusPtr` 144 :: Ptr (FixedArray MAX_MEMORY_HEAPS DeviceSize)))) `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))     pure $ PhysicalDeviceMemoryBudgetPropertiesEXT              heapBudget heapUsage 
+ src/Graphics/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs view
@@ -0,0 +1,124 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control  ( pattern ERROR_PIPELINE_COMPILE_REQUIRED_EXT+                                                                          , PhysicalDevicePipelineCreationCacheControlFeaturesEXT(..)+                                                                          , EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION+                                                                          , pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION+                                                                          , EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME+                                                                          , pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME+                                                                          ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(PIPELINE_COMPILE_REQUIRED_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT))+-- No documentation found for TopLevel "VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT"+pattern ERROR_PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED_EXT+++-- | VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - Structure+-- describing whether pipeline cache control can be supported by an+-- implementation+--+-- = Members+--+-- The members of the+-- 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' structure+-- is included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' /can/ also be+-- used in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeaturesEXT+  { -- | @pipelineCreationCacheControl@ indicates that the implementation+    -- supports:+    --+    -- -   The following /can/ be used in @Vk*PipelineCreateInfo@::@flags@:+    --+    --     -   'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+    --+    --     -   'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+    --+    -- -   The following /can/ be used in+    --     'Graphics.Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo'::@flags@:+    --+    --     -   'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'+    pipelineCreationCacheControl :: Bool }+  deriving (Typeable)+deriving instance Show PhysicalDevicePipelineCreationCacheControlFeaturesEXT++instance ToCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDevicePipelineCreationCacheControlFeaturesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineCreationCacheControl))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT where+  peekCStruct p = do+    pipelineCreationCacheControl <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDevicePipelineCreationCacheControlFeaturesEXT+             (bool32ToBool pipelineCreationCacheControl)++instance Storable PhysicalDevicePipelineCreationCacheControlFeaturesEXT where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePipelineCreationCacheControlFeaturesEXT where+  zero = PhysicalDevicePipelineCreationCacheControlFeaturesEXT+           zero+++type EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION"+pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3+++type EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control"++-- No documentation found for TopLevel "VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME"+pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control  (PhysicalDevicePipelineCreationCacheControlFeaturesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDevicePipelineCreationCacheControlFeaturesEXT++instance ToCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT+instance Show PhysicalDevicePipelineCreationCacheControlFeaturesEXT++instance FromCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs view
@@ -123,11 +123,13 @@ -- is set in @pPipelineCreationFeedback@. -- -- When chained to--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- or 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', the @i@ -- element of @pPipelineStageCreationFeedbacks@ corresponds to the @i@ -- element of--- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pStages@+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR'::@pStages@,+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pStages@, -- or -- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@. -- When chained to@@ -149,6 +151,12 @@ --     /must/ equal 1 -- -- -   When chained to+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+--     'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@+--     /must/ equal+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR'::@stageCount@+--+-- -   When chained to --     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', --     'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@ --     /must/ equal@@ -173,6 +181,7 @@ -- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', -- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', -- 'PipelineCreationFeedbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType' data PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfoEXT@@ -253,6 +262,7 @@ -- if it was able to avoid the large majority of pipeline or pipeline stage -- creation work by using the @pipelineCache@ parameter of -- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.createRayTracingPipelinesKHR', -- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', -- or 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines'. When an -- implementation sets this bit for the entire pipeline, it /may/ leave it
+ src/Graphics/Vulkan/Extensions/VK_EXT_robustness2.hs view
@@ -0,0 +1,223 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_robustness2  ( PhysicalDeviceRobustness2FeaturesEXT(..)+                                                      , PhysicalDeviceRobustness2PropertiesEXT(..)+                                                      , EXT_ROBUSTNESS_2_SPEC_VERSION+                                                      , pattern EXT_ROBUSTNESS_2_SPEC_VERSION+                                                      , EXT_ROBUSTNESS_2_EXTENSION_NAME+                                                      , pattern EXT_ROBUSTNESS_2_EXTENSION_NAME+                                                      ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT))+-- | VkPhysicalDeviceRobustness2FeaturesEXT - Structure describing the+-- out-of-bounds behavior for an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceRobustness2FeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- -   @robustBufferAccess2@ indicates whether buffer accesses are tightly+--     bounds-checked against the range of the descriptor. Uniform buffers+--     /must/ be bounds-checked to the range of the descriptor, where the+--     range is rounded up to a multiple of+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>.+--     Storage buffers /must/ be bounds-checked to the range of the+--     descriptor, where the range is rounded up to a multiple of+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>.+--     Out of bounds buffer loads will return zero values, and formatted+--     loads will have (0,0,1) values inserted for missing G, B, or A+--     components based on the format.+--+-- -   @robustImageAccess2@ indicates whether image accesses are tightly+--     bounds-checked against the dimensions of the image view. Out of+--     bounds image loads will return zero values, with (0,0,1) values+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba inserted for missing G, B, or A components>+--     based on the format.+--+-- -   @nullDescriptor@ indicates whether descriptors /can/ be written with+--     a 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' resource or+--     view, which are considered valid to access and act as if the+--     descriptor were bound to nothing.+--+-- If the 'PhysicalDeviceRobustness2FeaturesEXT' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+--+-- == Valid Usage+--+-- -   If @robustBufferAccess2@ is enabled then+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>+--     /must/ also be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesEXT+  { -- No documentation found for Nested "VkPhysicalDeviceRobustness2FeaturesEXT" "robustBufferAccess2"+    robustBufferAccess2 :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRobustness2FeaturesEXT" "robustImageAccess2"+    robustImageAccess2 :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRobustness2FeaturesEXT" "nullDescriptor"+    nullDescriptor :: Bool+  }+  deriving (Typeable)+deriving instance Show PhysicalDeviceRobustness2FeaturesEXT++instance ToCStruct PhysicalDeviceRobustness2FeaturesEXT where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRobustness2FeaturesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (robustBufferAccess2))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (robustImageAccess2))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (nullDescriptor))+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceRobustness2FeaturesEXT where+  peekCStruct p = do+    robustBufferAccess2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    robustImageAccess2 <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    nullDescriptor <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    pure $ PhysicalDeviceRobustness2FeaturesEXT+             (bool32ToBool robustBufferAccess2) (bool32ToBool robustImageAccess2) (bool32ToBool nullDescriptor)++instance Storable PhysicalDeviceRobustness2FeaturesEXT where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRobustness2FeaturesEXT where+  zero = PhysicalDeviceRobustness2FeaturesEXT+           zero+           zero+           zero+++-- | VkPhysicalDeviceRobustness2PropertiesEXT - Structure describing robust+-- buffer access properties supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceRobustness2PropertiesEXT' structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceRobustness2PropertiesEXT' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesEXT+  { -- | @robustStorageBufferAccessSizeAlignment@ is the number of bytes that the+    -- range of a storage buffer descriptor is rounded up to when used for+    -- bounds-checking when+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    -- is enabled. This value is either 1 or 4.+    robustStorageBufferAccessSizeAlignment :: DeviceSize+  , -- | @robustUniformBufferAccessSizeAlignment@ is the number of bytes that the+    -- range of a uniform buffer descriptor is rounded up to when used for+    -- bounds-checking when+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>+    -- is enabled. This value is a power of two in the range [1, 256].+    robustUniformBufferAccessSizeAlignment :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show PhysicalDeviceRobustness2PropertiesEXT++instance ToCStruct PhysicalDeviceRobustness2PropertiesEXT where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRobustness2PropertiesEXT{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (robustStorageBufferAccessSizeAlignment)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (robustUniformBufferAccessSizeAlignment)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct PhysicalDeviceRobustness2PropertiesEXT where+  peekCStruct p = do+    robustStorageBufferAccessSizeAlignment <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+    robustUniformBufferAccessSizeAlignment <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+    pure $ PhysicalDeviceRobustness2PropertiesEXT+             robustStorageBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment++instance Storable PhysicalDeviceRobustness2PropertiesEXT where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRobustness2PropertiesEXT where+  zero = PhysicalDeviceRobustness2PropertiesEXT+           zero+           zero+++type EXT_ROBUSTNESS_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_ROBUSTNESS_2_SPEC_VERSION"+pattern EXT_ROBUSTNESS_2_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_ROBUSTNESS_2_SPEC_VERSION = 1+++type EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2"++-- No documentation found for TopLevel "VK_EXT_ROBUSTNESS_2_EXTENSION_NAME"+pattern EXT_ROBUSTNESS_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_robustness2.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_robustness2  ( PhysicalDeviceRobustness2FeaturesEXT+                                                      , PhysicalDeviceRobustness2PropertiesEXT+                                                      ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceRobustness2FeaturesEXT++instance ToCStruct PhysicalDeviceRobustness2FeaturesEXT+instance Show PhysicalDeviceRobustness2FeaturesEXT++instance FromCStruct PhysicalDeviceRobustness2FeaturesEXT+++data PhysicalDeviceRobustness2PropertiesEXT++instance ToCStruct PhysicalDeviceRobustness2PropertiesEXT+instance Show PhysicalDeviceRobustness2PropertiesEXT++instance FromCStruct PhysicalDeviceRobustness2PropertiesEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs view
@@ -15,6 +15,7 @@                                                            , pattern EXT_SAMPLE_LOCATIONS_EXTENSION_NAME                                                            ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr)@@ -39,7 +40,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -675,7 +675,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (sampleLocationSampleCounts)     ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (maxSampleLocationGridSize) . ($ ())-    let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 2 CFloat)))     lift $ case (sampleLocationCoordinateRange) of       (e0, e1) -> do         poke (pSampleLocationCoordinateRange' :: Ptr CFloat) (CFloat (e0))@@ -690,7 +690,7 @@     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (zero)     ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())-    let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (FixedArray 2 CFloat)))     lift $ case ((zero, zero)) of       (e0, e1) -> do         poke (pSampleLocationCoordinateRange' :: Ptr CFloat) (CFloat (e0))@@ -703,7 +703,7 @@   peekCStruct p = do     sampleLocationSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 16 :: Ptr SampleCountFlags))     maxSampleLocationGridSize <- peekCStruct @Extent2D ((p `plusPtr` 20 :: Ptr Extent2D))-    let psampleLocationCoordinateRange = lowerArrayPtr @CFloat ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+    let psampleLocationCoordinateRange = lowerArrayPtr @CFloat ((p `plusPtr` 28 :: Ptr (FixedArray 2 CFloat)))     sampleLocationCoordinateRange0 <- peek @CFloat ((psampleLocationCoordinateRange `advancePtrBytes` 0 :: Ptr CFloat))     sampleLocationCoordinateRange1 <- peek @CFloat ((psampleLocationCoordinateRange `advancePtrBytes` 4 :: Ptr CFloat))     sampleLocationSubPixelBits <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
src/Graphics/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs view
@@ -55,12 +55,11 @@ -- Note -- -- The 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure was added--- in version 2 of the--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_subgroup_size_control@--- extension. Version 1 implementations of this extension will not fill out--- the features structure but applications may assume that both--- @subgroupSizeControl@ and @computeFullSubgroups@ are supported if the--- extension is supported. (See also the+-- in version 2 of the @VK_EXT_subgroup_size_control@ extension. Version 1+-- implementations of this extension will not fill out the features+-- structure but applications may assume that both @subgroupSizeControl@+-- and @computeFullSubgroups@ are supported if the extension is supported.+-- (See also the -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirements Feature Requirements> -- section.) Applications are advised to add a -- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure to the @pNext@@@ -248,7 +247,7 @@ -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType' data PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT   { -- | @requiredSubgroupSize@ /must/ be less than or equal to-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maxSubgroupSize>.+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maxSubgroupSize>     requiredSubgroupSize :: Word32 }   deriving (Typeable) deriving instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
src/Graphics/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs view
@@ -49,8 +49,7 @@ -- -- Note ----- In the initial release of the @VK_KHR_surface@ and--- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_swapchain@+-- In the initial release of the @VK_KHR_surface@ and @VK_KHR_swapchain@ -- extensions, the token @VK_COLORSPACE_SRGB_NONLINEAR_KHR@ was used. -- Starting in the 2016-05-13 updates to the extension branches, matching -- release 1.0.13 of the core API specification,
src/Graphics/Vulkan/Extensions/VK_EXT_tooling_info.hs view
@@ -17,6 +17,7 @@                                                        , pattern EXT_TOOLING_INFO_EXTENSION_NAME                                                        ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -55,7 +56,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr) import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)@@ -186,31 +186,31 @@   pokeCStruct p PhysicalDeviceToolPropertiesEXT{..} f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (name)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (version)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (name)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (version)     poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT)) (purposes)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (layer)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (layer)     f   cStructSize = 1048   cStructAlignment = 8   pokeZeroCStruct p f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)     poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT)) (zero)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)     f  instance FromCStruct PhysicalDeviceToolPropertiesEXT where   peekCStruct p = do-    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))-    version <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))+    version <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))     purposes <- peek @ToolPurposeFlagsEXT ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT))-    description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))-    layer <- packCString (lowerArrayPtr ((p `plusPtr` 788 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+    description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))+    layer <- packCString (lowerArrayPtr ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))     pure $ PhysicalDeviceToolPropertiesEXT              name version purposes description layer 
src/Graphics/Vulkan/Extensions/VK_EXT_transform_feedback.hs view
@@ -17,7 +17,6 @@                                                              , pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME                                                              ) where -import Control.Exception.Base (bracket_) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -40,7 +39,6 @@ import qualified Data.Vector (null) import Control.Monad.IO.Class (MonadIO) import Data.Bits (Bits)-import Data.Either (Either) import Data.String (IsString) import Data.Typeable (Typeable) import Foreign.Storable (Storable)@@ -220,25 +218,25 @@ -- 'Graphics.Vulkan.Core10.Handles.Buffer', -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', -- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'-cmdBindTransformFeedbackBuffersEXT :: forall io . MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("sizes" ::: Either Word32 (Vector DeviceSize)) -> io ()+cmdBindTransformFeedbackBuffersEXT :: forall io . MonadIO io => CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("sizes" ::: Vector DeviceSize) -> io () cmdBindTransformFeedbackBuffersEXT commandBuffer firstBinding buffers offsets sizes = liftIO . evalContT $ do   let vkCmdBindTransformFeedbackBuffersEXT' = mkVkCmdBindTransformFeedbackBuffersEXT (pVkCmdBindTransformFeedbackBuffersEXT (deviceCmds (commandBuffer :: CommandBuffer)))   let pBuffersLength = Data.Vector.length $ (buffers)   let pOffsetsLength = Data.Vector.length $ (offsets)   lift $ unless (pOffsetsLength == pBuffersLength) $     throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing-  let pSizesLength = either id (fromIntegral . Data.Vector.length) (sizes)+  let pSizesLength = Data.Vector.length $ (sizes)   lift $ unless (fromIntegral pSizesLength == pBuffersLength || pSizesLength == 0) $     throwIO $ IOError Nothing InvalidArgument "" "pSizes and pBuffers must have the same length" Nothing Nothing   pPBuffers <- ContT $ allocaBytesAligned @Buffer ((Data.Vector.length (buffers)) * 8) 8   lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)   pPOffsets <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (offsets)) * 8) 8   lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)-  pSizes <- case (sizes) of-    Left _ -> pure nullPtr-    Right v -> do-      pPSizes <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (v)) * 8) 8-      lift $ Data.Vector.imapM_ (\i e -> poke (pPSizes `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (v)+  pSizes <- if Data.Vector.null (sizes)+    then pure nullPtr+    else do+      pPSizes <- ContT $ allocaBytesAligned @DeviceSize (((Data.Vector.length (sizes))) * 8) 8+      lift $ Data.Vector.imapM_ (\i e -> poke (pPSizes `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((sizes))       pure $ pPSizes   lift $ vkCmdBindTransformFeedbackBuffersEXT' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets) pSizes   pure $ ()@@ -378,30 +376,36 @@ -- 'Graphics.Vulkan.Core10.Handles.Buffer', -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', -- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'-cmdBeginTransformFeedbackEXT :: forall io . MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Either Word32 (Vector DeviceSize)) -> io ()+cmdBeginTransformFeedbackEXT :: forall io . MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Vector DeviceSize) -> io () cmdBeginTransformFeedbackEXT commandBuffer firstCounterBuffer counterBuffers counterBufferOffsets = liftIO . evalContT $ do   let vkCmdBeginTransformFeedbackEXT' = mkVkCmdBeginTransformFeedbackEXT (pVkCmdBeginTransformFeedbackEXT (deviceCmds (commandBuffer :: CommandBuffer)))   let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)-  let pCounterBufferOffsetsLength = either id (fromIntegral . Data.Vector.length) (counterBufferOffsets)+  let pCounterBufferOffsetsLength = Data.Vector.length $ (counterBufferOffsets)   lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $     throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing   pPCounterBuffers <- ContT $ allocaBytesAligned @Buffer ((Data.Vector.length (counterBuffers)) * 8) 8   lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)-  pCounterBufferOffsets <- case (counterBufferOffsets) of-    Left _ -> pure nullPtr-    Right v -> do-      pPCounterBufferOffsets <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (v)) * 8) 8-      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (v)+  pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets)+    then pure nullPtr+    else do+      pPCounterBufferOffsets <- ContT $ allocaBytesAligned @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8) 8+      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((counterBufferOffsets))       pure $ pPCounterBufferOffsets   lift $ vkCmdBeginTransformFeedbackEXT' (commandBufferHandle (commandBuffer)) (firstCounterBuffer) ((fromIntegral pCounterBuffersLength :: Word32)) (pPCounterBuffers) pCounterBufferOffsets   pure $ () --- | A safe wrapper for 'cmdBeginTransformFeedbackEXT' and--- 'cmdEndTransformFeedbackEXT' using 'bracket_'-cmdWithTransformFeedbackEXT :: forall r . CommandBuffer -> Word32 -> Vector Buffer -> Either Word32 (Vector DeviceSize) -> IO r -> IO r-cmdWithTransformFeedbackEXT commandBuffer firstCounterBuffer pCounterBuffers pCounterBufferOffsets =-  bracket_-    (cmdBeginTransformFeedbackEXT commandBuffer firstCounterBuffer pCounterBuffers pCounterBufferOffsets)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'cmdBeginTransformFeedbackEXT' and 'cmdEndTransformFeedbackEXT'+--+-- To ensure that 'cmdEndTransformFeedbackEXT' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+cmdWithTransformFeedbackEXT :: forall io r . MonadIO io => (io () -> io () -> r) -> CommandBuffer -> Word32 -> Vector Buffer -> Vector DeviceSize -> r+cmdWithTransformFeedbackEXT b commandBuffer firstCounterBuffer pCounterBuffers pCounterBufferOffsets =+  b (cmdBeginTransformFeedbackEXT commandBuffer firstCounterBuffer pCounterBuffers pCounterBufferOffsets)     (cmdEndTransformFeedbackEXT commandBuffer firstCounterBuffer pCounterBuffers pCounterBufferOffsets)  @@ -525,20 +529,20 @@ -- 'Graphics.Vulkan.Core10.Handles.Buffer', -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', -- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'-cmdEndTransformFeedbackEXT :: forall io . MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Either Word32 (Vector DeviceSize)) -> io ()+cmdEndTransformFeedbackEXT :: forall io . MonadIO io => CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Vector DeviceSize) -> io () cmdEndTransformFeedbackEXT commandBuffer firstCounterBuffer counterBuffers counterBufferOffsets = liftIO . evalContT $ do   let vkCmdEndTransformFeedbackEXT' = mkVkCmdEndTransformFeedbackEXT (pVkCmdEndTransformFeedbackEXT (deviceCmds (commandBuffer :: CommandBuffer)))   let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)-  let pCounterBufferOffsetsLength = either id (fromIntegral . Data.Vector.length) (counterBufferOffsets)+  let pCounterBufferOffsetsLength = Data.Vector.length $ (counterBufferOffsets)   lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $     throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing   pPCounterBuffers <- ContT $ allocaBytesAligned @Buffer ((Data.Vector.length (counterBuffers)) * 8) 8   lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)-  pCounterBufferOffsets <- case (counterBufferOffsets) of-    Left _ -> pure nullPtr-    Right v -> do-      pPCounterBufferOffsets <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (v)) * 8) 8-      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (v)+  pCounterBufferOffsets <- if Data.Vector.null (counterBufferOffsets)+    then pure nullPtr+    else do+      pPCounterBufferOffsets <- ContT $ allocaBytesAligned @DeviceSize (((Data.Vector.length (counterBufferOffsets))) * 8) 8+      lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((counterBufferOffsets))       pure $ pPCounterBufferOffsets   lift $ vkCmdEndTransformFeedbackEXT' (commandBufferHandle (commandBuffer)) (firstCounterBuffer) ((fromIntegral pCounterBuffersLength :: Word32)) (pPCounterBuffers) pCounterBufferOffsets   pure $ ()@@ -683,7 +687,7 @@ --     this command /must/ not be recorded in a command buffer that, either --     directly or through secondary command buffers, also contains a --     'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool'---     command affecting the same query.+--     command affecting the same query -- -- == Valid Usage (Implicit) --@@ -737,12 +741,18 @@   vkCmdBeginQueryIndexedEXT' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags) (index)   pure $ () --- | A safe wrapper for 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT'--- using 'bracket_'-cmdWithQueryIndexedEXT :: forall r . CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO r -> IO r-cmdWithQueryIndexedEXT commandBuffer queryPool query flags index =-  bracket_-    (cmdBeginQueryIndexedEXT commandBuffer queryPool query flags index)+-- | A convenience wrapper to make a compatible pair of calls to+-- 'cmdBeginQueryIndexedEXT' and 'cmdEndQueryIndexedEXT'+--+-- To ensure that 'cmdEndQueryIndexedEXT' is always called: pass+-- 'Control.Exception.bracket_' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+-- Note that there is no inner resource+cmdWithQueryIndexedEXT :: forall io r . MonadIO io => (io () -> io () -> r) -> CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> r+cmdWithQueryIndexedEXT b commandBuffer queryPool query flags index =+  b (cmdBeginQueryIndexedEXT commandBuffer queryPool query flags index)     (cmdEndQueryIndexedEXT commandBuffer queryPool query index)  @@ -950,7 +960,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -1052,25 +1062,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -1082,7 +1092,15 @@ -- -- -   All vertex input bindings accessed via vertex input variables --     declared in the vertex shader entry point’s interface /must/ have---     valid buffers bound+--     either valid or 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--     buffers bound+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' -- -- -   For a given vertex buffer binding, any attribute data fetched /must/ --     be entirely contained within the corresponding vertex buffer
src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs view
@@ -193,14 +193,17 @@   pValidationCache <- lift $ peek @ValidationCacheEXT pPValidationCache   pure $ (pValidationCache) --- | A safe wrapper for 'createValidationCacheEXT' and--- 'destroyValidationCacheEXT' using 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createValidationCacheEXT' and 'destroyValidationCacheEXT' ----- The allocated value must not be returned from the provided computation-withValidationCacheEXT :: forall r . Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> ((ValidationCacheEXT) -> IO r) -> IO r-withValidationCacheEXT device pCreateInfo pAllocator =-  bracket-    (createValidationCacheEXT device pCreateInfo pAllocator)+-- To ensure that 'destroyValidationCacheEXT' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withValidationCacheEXT :: forall io r . MonadIO io => (io (ValidationCacheEXT) -> ((ValidationCacheEXT) -> io ()) -> r) -> Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> r+withValidationCacheEXT b device pCreateInfo pAllocator =+  b (createValidationCacheEXT device pCreateInfo pAllocator)     (\(o0) -> destroyValidationCacheEXT device o0 pAllocator)  
src/Graphics/Vulkan/Extensions/VK_EXT_validation_features.hs view
@@ -3,6 +3,7 @@                                                               , ValidationFeatureEnableEXT( VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT                                                                                           , VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT                                                                                           , VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT+                                                                                          , VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT                                                                                           , ..                                                                                           )                                                               , ValidationFeatureDisableEXT( VALIDATION_FEATURE_DISABLE_ALL_EXT@@ -62,6 +63,17 @@ -- | VkValidationFeaturesEXT - Specify validation features to enable or -- disable for a Vulkan instance --+-- == Valid Usage+--+-- -   If the @pEnabledValidationFeatures@ array contains+--     'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT',+--     then it /must/ also contain+--     'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT'+--+-- -   If the @pEnabledValidationFeatures@ array contains+--     'VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT', then it /must/ not+--     contain 'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT'+-- -- == Valid Usage (Implicit) -- -- -   @sType@ /must/ be@@ -158,8 +170,7 @@ -- that is one less than the value reported by the device. If the device -- supports the binding of only one descriptor set, the validation layer -- does not perform GPU-assisted validation. This feature is disabled by--- default. The GPU-assisted validation feature must be enabled in order to--- use this feature.+-- default. pattern VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = ValidationFeatureEnableEXT 1 -- | 'VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT' specifies that Vulkan -- best-practices validation is enabled. Activating this feature enables@@ -167,21 +178,29 @@ -- are not explicitly prohibited by the specification. This feature is -- disabled by default. pattern VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = ValidationFeatureEnableEXT 2+-- | 'VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT' specifies that the layers+-- will process @debugPrintfEXT@ operations in shaders and send the+-- resulting output to the debug callback. This feature is disabled by+-- default.+pattern VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = ValidationFeatureEnableEXT 3 {-# complete VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,              VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT,-             VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT :: ValidationFeatureEnableEXT #-}+             VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,+             VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT :: ValidationFeatureEnableEXT #-}  instance Show ValidationFeatureEnableEXT where   showsPrec p = \case     VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT -> showString "VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"     VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT -> showString "VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"     VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT -> showString "VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"+    VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT -> showString "VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"     ValidationFeatureEnableEXT x -> showParen (p >= 11) (showString "ValidationFeatureEnableEXT " . showsPrec 11 x)  instance Read ValidationFeatureEnableEXT where   readPrec = parens (choose [("VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT", pure VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT)                             , ("VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT", pure VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT)-                            , ("VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT", pure VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT)]+                            , ("VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT", pure VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT)+                            , ("VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT", pure VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT)]                      +++                      prec 10 (do                        expectP (Ident "ValidationFeatureEnableEXT")@@ -255,11 +274,11 @@                        pure (ValidationFeatureDisableEXT v)))  -type EXT_VALIDATION_FEATURES_SPEC_VERSION = 2+type EXT_VALIDATION_FEATURES_SPEC_VERSION = 3  -- No documentation found for TopLevel "VK_EXT_VALIDATION_FEATURES_SPEC_VERSION" pattern EXT_VALIDATION_FEATURES_SPEC_VERSION :: forall a . Integral a => a-pattern EXT_VALIDATION_FEATURES_SPEC_VERSION = 2+pattern EXT_VALIDATION_FEATURES_SPEC_VERSION = 3   type EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features"
src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs view
@@ -62,12 +62,12 @@ -- -- -   @divisor@ /must/ be a value between @0@ and --     'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'::@maxVertexAttribDivisor@,---     inclusive.+--     inclusive -- -- -   'Graphics.Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@inputRate@ --     /must/ be of type --     'Graphics.Vulkan.Core10.Enums.VertexInputRate.VERTEX_INPUT_RATE_INSTANCE'---     for this @binding@.+--     for this @binding@ -- -- = See Also --
src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs view
@@ -382,7 +382,7 @@ --     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@, --     where 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' --     is included in the @pNext@ chain of this 'PresentTimesInfoGOOGLE'---     structure.+--     structure -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_INTEL_performance_query.hs view
@@ -8,9 +8,10 @@                                                               , releasePerformanceConfigurationINTEL                                                               , queueSetPerformanceConfigurationINTEL                                                               , getPerformanceParameterINTEL+                                                              , pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL                                                               , PerformanceValueINTEL(..)                                                               , InitializePerformanceApiInfoINTEL(..)-                                                              , QueryPoolCreateInfoINTEL(..)+                                                              , QueryPoolPerformanceQueryCreateInfoINTEL(..)                                                               , PerformanceMarkerInfoINTEL(..)                                                               , PerformanceStreamMarkerInfoINTEL(..)                                                               , PerformanceOverrideInfoINTEL(..)@@ -38,6 +39,7 @@                                                                                          , PERFORMANCE_VALUE_TYPE_STRING_INTEL                                                                                          , ..                                                                                          )+                                                              , QueryPoolCreateInfoINTEL                                                               , INTEL_PERFORMANCE_QUERY_SPEC_VERSION                                                               , pattern INTEL_PERFORMANCE_QUERY_SPEC_VERSION                                                               , INTEL_PERFORMANCE_QUERY_EXTENSION_NAME@@ -128,7 +130,7 @@ import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL)) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL)) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL)) import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS)) import Graphics.Vulkan.Extensions.Handles (PerformanceConfigurationINTEL(..)) foreign import ccall@@ -355,7 +357,7 @@ -- -- -   @pOverrideInfo@ /must/ not be used with a --     'PerformanceOverrideTypeINTEL' that is not reported available by---     'getPerformanceParameterINTEL'.+--     'getPerformanceParameterINTEL' -- -- == Valid Usage (Implicit) --@@ -610,6 +612,10 @@   pure $ (pValue)  +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL"+pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL++ -- | VkPerformanceValueINTEL - Container for value and types of parameters -- that can be queried --@@ -701,16 +707,17 @@            zero  --- | VkQueryPoolCreateInfoINTEL - Structure specifying parameters to create a--- pool of performance queries+-- | VkQueryPoolPerformanceQueryCreateInfoINTEL - Structure specifying+-- parameters to create a pool of performance queries -- -- = Members -- -- To create a pool for Intel performance queries, set -- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo'::@queryType@ to -- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'--- and add a 'QueryPoolCreateInfoINTEL' structure to the @pNext@ chain of--- the 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo' structure.+-- and add a 'QueryPoolPerformanceQueryCreateInfoINTEL' structure to the+-- @pNext@ chain of the 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo'+-- structure. -- -- == Valid Usage (Implicit) --@@ -718,42 +725,42 @@ -- -- 'QueryPoolSamplingModeINTEL', -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'-data QueryPoolCreateInfoINTEL = QueryPoolCreateInfoINTEL+data QueryPoolPerformanceQueryCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL   { -- | @performanceCountersSampling@ /must/ be a valid     -- 'QueryPoolSamplingModeINTEL' value     performanceCountersSampling :: QueryPoolSamplingModeINTEL }   deriving (Typeable)-deriving instance Show QueryPoolCreateInfoINTEL+deriving instance Show QueryPoolPerformanceQueryCreateInfoINTEL -instance ToCStruct QueryPoolCreateInfoINTEL where+instance ToCStruct QueryPoolPerformanceQueryCreateInfoINTEL where   withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p QueryPoolCreateInfoINTEL{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL)+  pokeCStruct p QueryPoolPerformanceQueryCreateInfoINTEL{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr QueryPoolSamplingModeINTEL)) (performanceCountersSampling)     f   cStructSize = 24   cStructAlignment = 8   pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL)+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr QueryPoolSamplingModeINTEL)) (zero)     f -instance FromCStruct QueryPoolCreateInfoINTEL where+instance FromCStruct QueryPoolPerformanceQueryCreateInfoINTEL where   peekCStruct p = do     performanceCountersSampling <- peek @QueryPoolSamplingModeINTEL ((p `plusPtr` 16 :: Ptr QueryPoolSamplingModeINTEL))-    pure $ QueryPoolCreateInfoINTEL+    pure $ QueryPoolPerformanceQueryCreateInfoINTEL              performanceCountersSampling -instance Storable QueryPoolCreateInfoINTEL where+instance Storable QueryPoolPerformanceQueryCreateInfoINTEL where   sizeOf ~_ = 24   alignment ~_ = 8   peek = peekCStruct   poke ptr poked = pokeCStruct ptr poked (pure ()) -instance Zero QueryPoolCreateInfoINTEL where-  zero = QueryPoolCreateInfoINTEL+instance Zero QueryPoolPerformanceQueryCreateInfoINTEL where+  zero = QueryPoolPerformanceQueryCreateInfoINTEL            zero  @@ -811,7 +818,7 @@ -- -- -   The value written by the application into @marker@ /must/ only used --     the valid bits as reported by 'getPerformanceParameterINTEL' with---     the 'PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL'.+--     the 'PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL' -- -- == Valid Usage (Implicit) --@@ -1043,7 +1050,7 @@ -- -- = See Also ----- 'QueryPoolCreateInfoINTEL'+-- 'QueryPoolPerformanceQueryCreateInfoINTEL' newtype QueryPoolSamplingModeINTEL = QueryPoolSamplingModeINTEL Int32   deriving newtype (Eq, Ord, Storable, Zero) @@ -1183,11 +1190,15 @@                        pure (PerformanceValueTypeINTEL v)))  -type INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 1+-- No documentation found for TopLevel "VkQueryPoolCreateInfoINTEL"+type QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL ++type INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2+ -- No documentation found for TopLevel "VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION" pattern INTEL_PERFORMANCE_QUERY_SPEC_VERSION :: forall a . Integral a => a-pattern INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 1+pattern INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2   type INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query"
src/Graphics/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot view
@@ -5,7 +5,7 @@                                                               , PerformanceOverrideInfoINTEL                                                               , PerformanceStreamMarkerInfoINTEL                                                               , PerformanceValueINTEL-                                                              , QueryPoolCreateInfoINTEL+                                                              , QueryPoolPerformanceQueryCreateInfoINTEL                                                               , PerformanceParameterTypeINTEL                                                               ) where @@ -60,12 +60,12 @@ instance FromCStruct PerformanceValueINTEL  -data QueryPoolCreateInfoINTEL+data QueryPoolPerformanceQueryCreateInfoINTEL -instance ToCStruct QueryPoolCreateInfoINTEL-instance Show QueryPoolCreateInfoINTEL+instance ToCStruct QueryPoolPerformanceQueryCreateInfoINTEL+instance Show QueryPoolPerformanceQueryCreateInfoINTEL -instance FromCStruct QueryPoolCreateInfoINTEL+instance FromCStruct QueryPoolPerformanceQueryCreateInfoINTEL   data PerformanceParameterTypeINTEL
src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs view
@@ -189,7 +189,7 @@   { -- | @flags@ /must/ be @0@     flags :: AndroidSurfaceCreateFlagsKHR   , -- | @window@ /must/ point to a valid Android-    -- 'Graphics.Vulkan.Extensions.WSITypes.ANativeWindow'.+    -- 'Graphics.Vulkan.Extensions.WSITypes.ANativeWindow'     window :: Ptr ANativeWindow   }   deriving (Typeable)
+ src/Graphics/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs view
@@ -0,0 +1,525 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations  ( createDeferredOperationKHR+                                                                   , withDeferredOperationKHR+                                                                   , destroyDeferredOperationKHR+                                                                   , getDeferredOperationMaxConcurrencyKHR+                                                                   , getDeferredOperationResultKHR+                                                                   , deferredOperationJoinKHR+                                                                   , DeferredOperationInfoKHR(..)+                                                                   , KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION+                                                                   , pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION+                                                                   , KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+                                                                   , pattern KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME+                                                                   , DeferredOperationKHR(..)+                                                                   ) where++import Control.Exception.Base (bracket)+import Control.Monad.IO.Class (liftIO)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Extensions.Handles (DeferredOperationKHR)+import Graphics.Vulkan.Extensions.Handles (DeferredOperationKHR(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateDeferredOperationKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDeferredOperationJoinKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyDeferredOperationKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeferredOperationMaxConcurrencyKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeferredOperationResultKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (DeferredOperationKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateDeferredOperationKHR+  :: FunPtr (Ptr Device_T -> Ptr AllocationCallbacks -> Ptr DeferredOperationKHR -> IO Result) -> Ptr Device_T -> Ptr AllocationCallbacks -> Ptr DeferredOperationKHR -> IO Result++-- | vkCreateDeferredOperationKHR - Create a deferred operation handle+--+-- = Parameters+--+-- -   @device@ is the device which owns @operation@.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- -   @pDeferredOperation@ is a pointer to a handle in which the created+--     'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR' is+--     returned.+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @pDeferredOperation@ /must/ be a valid pointer to a+--     'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createDeferredOperationKHR :: forall io . MonadIO io => Device -> ("allocator" ::: Maybe AllocationCallbacks) -> io (DeferredOperationKHR)+createDeferredOperationKHR device allocator = liftIO . evalContT $ do+  let vkCreateDeferredOperationKHR' = mkVkCreateDeferredOperationKHR (pVkCreateDeferredOperationKHR (deviceCmds (device :: Device)))+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPDeferredOperation <- ContT $ bracket (callocBytes @DeferredOperationKHR 8) free+  r <- lift $ vkCreateDeferredOperationKHR' (deviceHandle (device)) pAllocator (pPDeferredOperation)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pDeferredOperation <- lift $ peek @DeferredOperationKHR pPDeferredOperation+  pure $ (pDeferredOperation)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createDeferredOperationKHR' and 'destroyDeferredOperationKHR'+--+-- To ensure that 'destroyDeferredOperationKHR' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withDeferredOperationKHR :: forall io r . MonadIO io => (io (DeferredOperationKHR) -> ((DeferredOperationKHR) -> io ()) -> r) -> Device -> Maybe AllocationCallbacks -> r+withDeferredOperationKHR b device pAllocator =+  b (createDeferredOperationKHR device pAllocator)+    (\(o0) -> destroyDeferredOperationKHR device o0 pAllocator)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDestroyDeferredOperationKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> DeferredOperationKHR -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyDeferredOperationKHR - Destroy a deferred operation handle+--+-- = Parameters+--+-- -   @device@ is the device which owns @operation@.+--+-- -   @operation@ is the completed operation to be destroyed.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- == Valid Usage+--+-- -   If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     were provided when @operation@ was created, a compatible set of+--     callbacks /must/ be provided here+--+-- -   If no+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     were provided when @operation@ was created, @pAllocator@ /must/ be+--     @NULL@+--+-- -   @operation@ /must/ be completed+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @operation@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @operation@ /must/ have been created, allocated, or retrieved from+--     @device@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyDeferredOperationKHR :: forall io . MonadIO io => Device -> DeferredOperationKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()+destroyDeferredOperationKHR device operation allocator = liftIO . evalContT $ do+  let vkDestroyDeferredOperationKHR' = mkVkDestroyDeferredOperationKHR (pVkDestroyDeferredOperationKHR (deviceCmds (device :: Device)))+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  lift $ vkDestroyDeferredOperationKHR' (deviceHandle (device)) (operation) pAllocator+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDeferredOperationMaxConcurrencyKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Word32) -> Ptr Device_T -> DeferredOperationKHR -> IO Word32++-- | vkGetDeferredOperationMaxConcurrencyKHR - Query the maximum concurrency+-- on a deferred operation+--+-- = Parameters+--+-- -   @device@ is the device which owns @operation@.+--+-- -   @operation@ is the deferred operation to be queried.+--+-- = Description+--+-- The returned value is the maximum number of threads that can usefully+-- execute a deferred operation concurrently, reported for the state of the+-- deferred operation at the point this command is called. This value is+-- intended to be used to better schedule work onto available threads.+-- Applications /can/ join any number of threads to the deferred operation+-- and expect it to eventually complete, though excessive joins /may/+-- return 'Graphics.Vulkan.Core10.Enums.Result.THREAD_IDLE_KHR'+-- immediately, performing no useful work.+--+-- If the deferred operation is currently joined to any threads, the value+-- returned by this command /may/ immediately be out of date.+--+-- Implementations /must/ not return zero.+--+-- Implementations /may/ return 232-1 to indicate that the maximum+-- concurrency is unknown and cannot be easily derived. Implementations+-- /may/ return values larger than the maximum concurrency available on the+-- host CPU. In these situations, an application /should/ clamp the return+-- value rather than oversubscribing the machine.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getDeferredOperationMaxConcurrencyKHR :: forall io . MonadIO io => Device -> DeferredOperationKHR -> io (Word32)+getDeferredOperationMaxConcurrencyKHR device operation = liftIO $ do+  let vkGetDeferredOperationMaxConcurrencyKHR' = mkVkGetDeferredOperationMaxConcurrencyKHR (pVkGetDeferredOperationMaxConcurrencyKHR (deviceCmds (device :: Device)))+  r <- vkGetDeferredOperationMaxConcurrencyKHR' (deviceHandle (device)) (operation)+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDeferredOperationResultKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> IO Result++-- | vkGetDeferredOperationResultKHR - Query the result of a deferred+-- operation+--+-- = Parameters+--+-- -   @device@ is the device which owns @operation@.+--+-- -   @operation@ is the operation whose deferred result is being queried.+--+-- = Description+--+-- If the deferred operation is pending, 'getDeferredOperationResultKHR'+-- returns 'Graphics.Vulkan.Core10.Enums.Result.NOT_READY'. Otherwise, it+-- returns the result of the deferred operation. This value /must/ be one+-- of the 'Graphics.Vulkan.Core10.Enums.Result.Result' values which could+-- have been returned by the original command if the operation had not been+-- deferred.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.NOT_READY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getDeferredOperationResultKHR :: forall io . MonadIO io => Device -> DeferredOperationKHR -> io (Result)+getDeferredOperationResultKHR device operation = liftIO $ do+  let vkGetDeferredOperationResultKHR' = mkVkGetDeferredOperationResultKHR (pVkGetDeferredOperationResultKHR (deviceCmds (device :: Device)))+  r <- vkGetDeferredOperationResultKHR' (deviceHandle (device)) (operation)+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDeferredOperationJoinKHR+  :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result) -> Ptr Device_T -> DeferredOperationKHR -> IO Result++-- | vkDeferredOperationJoinKHR - Assign a thread to a deferred operation+--+-- = Parameters+--+-- -   @device@ is the device which owns @operation@.+--+-- -   @operation@ is the deferred operation that the calling thread should+--     work on.+--+-- = Description+--+-- The 'deferredOperationJoinKHR' command will execute a portion of the+-- deferred operation on the calling thread.+--+-- The return value will be one of the following:+--+-- -   A return value of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--     indicates that @operation@ is complete. The application /should/ use+--     'getDeferredOperationResultKHR' to retrieve the result of+--     @operation@.+--+-- -   A return value of+--     'Graphics.Vulkan.Core10.Enums.Result.THREAD_DONE_KHR' indicates that+--     the deferred operation is not complete, but there is no work+--     remaining to assign to threads. Future calls to+--     'deferredOperationJoinKHR' are not necessary and will simply harm+--     performance. This situation /may/ occur when other threads executing+--     'deferredOperationJoinKHR' are about to complete @operation@, and+--     the implementation is unable to partition the workload any further.+--+-- -   A return value of+--     'Graphics.Vulkan.Core10.Enums.Result.THREAD_IDLE_KHR' indicates that+--     the deferred operation is not complete, and there is no work for the+--     thread to do at the time of the call. This situation /may/ occur if+--     the operation encounters a temporary reduction in parallelism. By+--     returning 'Graphics.Vulkan.Core10.Enums.Result.THREAD_IDLE_KHR', the+--     implementation is signaling that it expects that more opportunities+--     for parallelism will emerge as execution progresses, and that future+--     calls to 'deferredOperationJoinKHR' /can/ be beneficial. In the+--     meantime, the application /can/ perform other work on the calling+--     thread.+--+-- Implementations /must/ guarantee forward progress by enforcing the+-- following invariants:+--+-- 1.  If only one thread has invoked 'deferredOperationJoinKHR' on a given+--     operation, that thread /must/ execute the operation to completion+--     and return 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'.+--+-- 2.  If multiple threads have concurrently invoked+--     'deferredOperationJoinKHR' on the same operation, then at least one+--     of them /must/ complete the operation and return+--     'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'.+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @operation@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR' handle+--+-- -   @operation@ /must/ have been created, allocated, or retrieved from+--     @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.THREAD_DONE_KHR'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.THREAD_IDLE_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+deferredOperationJoinKHR :: forall io . MonadIO io => Device -> DeferredOperationKHR -> io (Result)+deferredOperationJoinKHR device operation = liftIO $ do+  let vkDeferredOperationJoinKHR' = mkVkDeferredOperationJoinKHR (pVkDeferredOperationJoinKHR (deviceCmds (device :: Device)))+  r <- vkDeferredOperationJoinKHR' (deviceHandle (device)) (operation)+  when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++-- | VkDeferredOperationInfoKHR - Deferred operation request+--+-- = Description+--+-- The application /can/ request deferral of an operation by adding this+-- structure to the argument list of a command or by providing this in the+-- @pNext@ chain of a relevant structure for an operation when the+-- corresponding command is invoked. If this structure is not present, no+-- deferral is requested. If @operationHandle@ is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', no deferral is+-- requested and the command proceeds as if no 'DeferredOperationInfoKHR'+-- structure was provided.+--+-- When an application requests an operation deferral, the implementation+-- /may/ defer the operation. When deferral is requested and the+-- implementation defers any operation, the implementation /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR' as the+-- success code if no errors occurred. When deferral is requested, the+-- implementation /should/ defer the operation when the workload is+-- significant, however if the implementation chooses not to defer any of+-- the requested operations and instead executes all of them immediately,+-- the implementation /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR' as the+-- success code if no errors occurred.+--+-- A deferred operation is created /complete/ with an initial result value+-- of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'. The deferred operation+-- becomes /pending/ when an operation has been successfully deferred with+-- that @operationHandle@.+--+-- A deferred operation is considered pending until the deferred operation+-- completes. A pending deferred operation becomes /complete/ when it has+-- been fully executed by one or more threads. Pending deferred operations+-- will never complete until they are /joined/ by an application thread,+-- using 'deferredOperationJoinKHR'. Applications /can/ join multiple+-- threads to the same deferred operation, enabling concurrent execution of+-- subtasks within that operation.+--+-- The application /can/ query the status of a+-- 'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR' using the+-- 'getDeferredOperationMaxConcurrencyKHR' or+-- 'getDeferredOperationResultKHR' commands.+--+-- From the perspective of other commands - parameters to the original+-- command that are externally synchronized /must/ not be accessed before+-- the deferred operation completes, and the result of the deferred+-- operation (e.g. object creation) are not considered complete until the+-- deferred operation completes.+--+-- If the deferred operation is one which creates an object (for example, a+-- pipeline object), the implementation /must/ allocate that object as it+-- normally would, and return a valid handle to the application. This+-- object is a /pending/ object, and /must/ not be used by the application+-- until the deferred operation is completed (unless otherwise specified by+-- the deferral extension). When the deferred operation is complete, the+-- application /should/ call 'getDeferredOperationResultKHR' to obtain the+-- result of the operation. If 'getDeferredOperationResultKHR' indicates+-- failure, the application /must/ destroy the pending object using an+-- appropriate command, so that the implementation has an opportunity to+-- recover the handle. The application /must/ not perform this destruction+-- until the deferred operation is complete. Construction of the pending+-- object uses the same allocator which would have been used if the+-- operation had not been deferred.+--+-- == Valid Usage+--+-- -   Any previous deferred operation that was associated with+--     @operationHandle@ /must/ be complete+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DeferredOperationKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeferredOperationInfoKHR = DeferredOperationInfoKHR+  { -- | @operationHandle@ is a handle to a tracking object to associate with the+    -- deferred operation.+    operationHandle :: DeferredOperationKHR }+  deriving (Typeable)+deriving instance Show DeferredOperationInfoKHR++instance ToCStruct DeferredOperationInfoKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p DeferredOperationInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeferredOperationKHR)) (operationHandle)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeferredOperationKHR)) (zero)+    f++instance FromCStruct DeferredOperationInfoKHR where+  peekCStruct p = do+    operationHandle <- peek @DeferredOperationKHR ((p `plusPtr` 16 :: Ptr DeferredOperationKHR))+    pure $ DeferredOperationInfoKHR+             operationHandle++instance Storable DeferredOperationInfoKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeferredOperationInfoKHR where+  zero = DeferredOperationInfoKHR+           zero+++type KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION"+pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 2+++type KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations"++-- No documentation found for TopLevel "VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME"+pattern KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations  (DeferredOperationInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeferredOperationInfoKHR++instance ToCStruct DeferredOperationInfoKHR+instance Show DeferredOperationInfoKHR++instance FromCStruct DeferredOperationInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs view
@@ -198,11 +198,11 @@ -- == Valid Usage -- -- -   @handleType@ /must/ be a value included in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-fd Handle Types Supported by VkImportFenceFdInfoKHR>---     table.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-fd Handle Types Supported by >+--     table -- -- -   @fd@ /must/ obey any requirements listed for @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility> -- -- If @handleType@ is -- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT',@@ -325,22 +325,22 @@ -- -- -   @handleType@ /must/ have been included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo'::@handleTypes@---     when @fence@’s current payload was created.+--     when @fence@’s current payload was created -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, @fence@ /must/ be signaled, or have an --     associated --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>---     pending execution.+--     pending execution -- -- -   @fence@ /must/ not currently have its payload replaced by an --     imported payload as described below in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads> --     unless that imported payload’s handle type was included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'::@exportFromImportedHandleTypes@---     for @handleType@.+--     for @handleType@ ----- -   @handleType@ /must/ be defined as a POSIX file descriptor handle.+-- -   @handleType@ /must/ be defined as a POSIX file descriptor handle -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs view
@@ -193,29 +193,29 @@ -- == Valid Usage -- -- -   @handleType@ /must/ be a value included in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-win32 Handle Types Supported by VkImportFenceWin32HandleInfoKHR>---     table.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-win32 Handle Types Supported by >+--     table -- -- -   If @handleType@ is not --     'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT',---     @name@ /must/ be @NULL@.+--     @name@ /must/ be @NULL@ -- -- -   If @handleType@ is not @0@ and @handle@ is @NULL@, @name@ /must/ --     name a valid synchronization primitive of the type specified by---     @handleType@.+--     @handleType@ -- -- -   If @handleType@ is not @0@ and @name@ is @NULL@, @handle@ /must/ be---     a valid handle of the type specified by @handleType@.+--     a valid handle of the type specified by @handleType@ ----- -   If @handle@ is not @NULL@, @name@ must be @NULL@.+-- -   If @handle@ is not @NULL@, @name@ /must/ be @NULL@ -- -- -   If @handle@ is not @NULL@, it /must/ obey any requirements listed --     for @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility> -- -- -   If @name@ is not @NULL@, it /must/ obey any requirements listed for --     @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility> -- -- == Valid Usage (Implicit) --@@ -313,7 +313,16 @@ -- -- = Description ----- If this structure is not present, or if @pAttributes@ is set to @NULL@,+-- If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo'+-- is not present in the same @pNext@ chain, this structure is ignored.+--+-- If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo'+-- is present in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Fence.FenceCreateInfo' with a Windows+-- @handleType@, but either 'ExportFenceWin32HandleInfoKHR' is not present+-- in the @pNext@ chain, or if it is but @pAttributes@ is set to @NULL@, -- default security descriptor values will be used, and child processes -- created by the application will not inherit the handle, as described in -- the MSDN documentation for “Synchronization Object Security and Access@@ -337,7 +346,7 @@ --     'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT', --     a 'ExportFenceWin32HandleInfoKHR' structure /must/ not be included --     in the @pNext@ chain of---     'Graphics.Vulkan.Core10.Fence.FenceCreateInfo'.+--     'Graphics.Vulkan.Core10.Fence.FenceCreateInfo' -- -- == Valid Usage (Implicit) --@@ -421,27 +430,27 @@ -- -- -   @handleType@ /must/ have been included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo'::@handleTypes@---     when the @fence@’s current payload was created.+--     when the @fence@’s current payload was created -- -- -   If @handleType@ is defined as an NT handle, 'getFenceWin32HandleKHR' --     /must/ be called no more than once for each valid unique combination---     of @fence@ and @handleType@.+--     of @fence@ and @handleType@ -- -- -   @fence@ /must/ not currently have its payload replaced by an --     imported payload as described below in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads> --     unless that imported payload’s handle type was included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'::@exportFromImportedHandleTypes@---     for @handleType@.+--     for @handleType@ -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, @fence@ /must/ be signaled, or have an --     associated --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>---     pending execution.+--     pending execution -- -- -   @handleType@ /must/ be defined as an NT handle or a global share---     handle.+--     handle -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs view
@@ -183,24 +183,24 @@ --     reported by --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties' --     or---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties' -- -- -   The memory from which @fd@ was exported /must/ have been created on---     the same underlying physical device as @device@.+--     the same underlying physical device as @device@ -- -- -   If @handleType@ is not @0@, it /must/ be defined as a POSIX file---     descriptor handle.+--     descriptor handle -- -- -   If @handleType@ is not @0@, @fd@ /must/ be a valid handle of the---     type specified by @handleType@.+--     type specified by @handleType@ -- -- -   The memory represented by @fd@ /must/ have been created from a --     physical device and driver that is compatible with @device@ and --     @handleType@, as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility> -- -- -   @fd@ /must/ obey any requirements listed for @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility> -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs view
@@ -189,14 +189,14 @@ --     reported by --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties' --     or---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties' -- -- -   The memory from which @handle@ was exported, or the memory named by --     @name@ /must/ have been created on the same underlying physical---     device as @device@.+--     device as @device@ -- -- -   If @handleType@ is not @0@, it /must/ be defined as an NT handle or---     a global share handle.+--     a global share handle -- -- -   If @handleType@ is not --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT',@@ -204,23 +204,23 @@ --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT', --     or --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT',---     @name@ /must/ be @NULL@.+--     @name@ /must/ be @NULL@ -- -- -   If @handleType@ is not @0@ and @handle@ is @NULL@, @name@ /must/---     name a valid memory resource of the type specified by @handleType@.+--     name a valid memory resource of the type specified by @handleType@ -- -- -   If @handleType@ is not @0@ and @name@ is @NULL@, @handle@ /must/ be---     a valid handle of the type specified by @handleType@.+--     a valid handle of the type specified by @handleType@ ----- -   if @handle@ is not @NULL@, @name@ must be @NULL@.+-- -   if @handle@ is not @NULL@, @name@ /must/ be @NULL@ -- -- -   If @handle@ is not @NULL@, it /must/ obey any requirements listed --     for @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility> -- -- -   If @name@ is not @NULL@, it /must/ obey any requirements listed for --     @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility> -- -- == Valid Usage (Implicit) --@@ -289,7 +289,16 @@ -- -- = Description ----- If this structure is not present, or if @pAttributes@ is set to @NULL@,+-- If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'+-- is not present in the same @pNext@ chain, this structure is ignored.+--+-- If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'+-- is present in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' with a Windows+-- @handleType@, but either 'ExportMemoryWin32HandleInfoKHR' is not present+-- in the @pNext@ chain, or if it is but @pAttributes@ is set to @NULL@, -- default security descriptor values will be used, and child processes -- created by the application will not inherit the handle, as described in -- the MSDN documentation for “Synchronization Object Security and Access@@ -328,7 +337,7 @@ --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT', --     a 'ExportMemoryWin32HandleInfoKHR' structure /must/ not be included --     in the @pNext@ chain of---     'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'.+--     'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' -- -- == Valid Usage (Implicit) --@@ -460,14 +469,14 @@ -- -- -   @handleType@ /must/ have been included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@---     when @memory@ was created.+--     when @memory@ was created -- -- -   If @handleType@ is defined as an NT handle, --     'getMemoryWin32HandleKHR' /must/ be called no more than once for---     each valid unique combination of @memory@ and @handleType@.+--     each valid unique combination of @memory@ and @handleType@ -- -- -   @handleType@ /must/ be defined as an NT handle or a global share---     handle.+--     handle -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs view
@@ -195,32 +195,32 @@ -- == Valid Usage -- -- -   @handleType@ /must/ be a value included in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd Handle Types Supported by VkImportSemaphoreFdInfoKHR>---     table.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd Handle Types Supported by >+--     table -- -- -   @fd@ /must/ obey any requirements listed for @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility> -- -- -   If @handleType@ is --     'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT', --     the --     'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'::@flags@ --     field /must/ match that of the semaphore from which @fd@ was---     exported.+--     exported -- -- -   If @handleType@ is --     'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT', --     the --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::@semaphoreType@ --     field /must/ match that of the semaphore from which @fd@ was---     exported.+--     exported -- -- -   If @flags@ contains --     'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SEMAPHORE_IMPORT_TEMPORARY_BIT', --     the --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::@semaphoreType@ --     field of the semaphore from which @fd@ was exported /must/ not be---     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'.+--     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' -- -- == Valid Usage (Implicit) --@@ -325,38 +325,38 @@ -- -- -   @handleType@ /must/ have been included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'::@handleTypes@---     when @semaphore@’s current payload was created.+--     when @semaphore@’s current payload was created -- -- -   @semaphore@ /must/ not currently have its payload replaced by an --     imported payload as described below in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads> --     unless that imported payload’s handle type was included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@---     for @handleType@.+--     for @handleType@ -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, as defined below in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,---     there /must/ be no queue waiting on @semaphore@.+--     there /must/ be no queue waiting on @semaphore@ -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, @semaphore@ /must/ be signaled, or have an --     associated --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>---     pending execution.+--     pending execution ----- -   @handleType@ /must/ be defined as a POSIX file descriptor handle.+-- -   @handleType@ /must/ be defined as a POSIX file descriptor handle -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, @semaphore@ /must/ have been created with a --     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of---     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.+--     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY' -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, @semaphore@ /must/ have an associated --     semaphore signal operation that has been submitted for execution and --     any semaphore signal operations on which it depends (if any) /must/---     have also been submitted for execution.+--     have also been submitted for execution -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs view
@@ -211,31 +211,31 @@ -- == Valid Usage -- -- -   @handleType@ /must/ be a value included in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32 Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR>---     table.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32 Handle Types Supported by >+--     table -- -- -   If @handleType@ is not --     'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' --     or --     'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT',---     @name@ /must/ be @NULL@.+--     @name@ /must/ be @NULL@ -- -- -   If @handleType@ is not @0@ and @handle@ is @NULL@, @name@ /must/ --     name a valid synchronization primitive of the type specified by---     @handleType@.+--     @handleType@ -- -- -   If @handleType@ is not @0@ and @name@ is @NULL@, @handle@ /must/ be---     a valid handle of the type specified by @handleType@.+--     a valid handle of the type specified by @handleType@ ----- -   If @handle@ is not @NULL@, @name@ must be @NULL@.+-- -   If @handle@ is not @NULL@, @name@ /must/ be @NULL@ -- -- -   If @handle@ is not @NULL@, it /must/ obey any requirements listed --     for @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility> -- -- -   If @name@ is not @NULL@, it /must/ obey any requirements listed for --     @handleType@ in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>.+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility> -- -- -   If @handleType@ is --     'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'@@ -244,7 +244,7 @@ --     the --     'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'::@flags@ --     field /must/ match that of the semaphore from which @handle@ or---     @name@ was exported.+--     @name@ was exported -- -- -   If @handleType@ is --     'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'@@ -253,7 +253,7 @@ --     the --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::@semaphoreType@ --     field /must/ match that of the semaphore from which @handle@ or---     @name@ was exported.+--     @name@ was exported -- -- -   If @flags@ contains --     'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SEMAPHORE_IMPORT_TEMPORARY_BIT',@@ -261,7 +261,7 @@ --     'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::@semaphoreType@ --     field of the semaphore from which @handle@ or @name@ was exported --     /must/ not be---     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'.+--     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' -- -- == Valid Usage (Implicit) --@@ -360,12 +360,22 @@ -- -- = Description ----- If this structure is not present, or if @pAttributes@ is set to @NULL@,--- default security descriptor values will be used, and child processes--- created by the application will not inherit the handle, as described in--- the MSDN documentation for “Synchronization Object Security and Access--- Rights”1.+-- If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'+-- is not present in the same @pNext@ chain, this structure is ignored. --+-- If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'+-- is present in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo' with a+-- Windows @handleType@, but either 'ExportSemaphoreWin32HandleInfoKHR' is+-- not present in the @pNext@ chain, or if it is but @pAttributes@ is set+-- to @NULL@, default security descriptor values will be used, and child+-- processes created by the application will not inherit the handle, as+-- described in the MSDN documentation for “Synchronization Object Security+-- and Access Rights”1. Further, if the structure is not present, the+-- access rights used depend on the handle type.+-- -- For handles of the following types: -- -- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'@@ -394,7 +404,7 @@ --     'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT', --     'ExportSemaphoreWin32HandleInfoKHR' /must/ not be included in the --     @pNext@ chain of---     'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'.+--     'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo' -- -- == Valid Usage (Implicit) --@@ -500,12 +510,12 @@ -- -   @waitSemaphoreValuesCount@ /must/ be the same value as --     'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@waitSemaphoreCount@, --     where 'Graphics.Vulkan.Core10.Queue.SubmitInfo' is in the @pNext@---     chain of this 'D3D12FenceSubmitInfoKHR' structure.+--     chain of this 'D3D12FenceSubmitInfoKHR' structure -- -- -   @signalSemaphoreValuesCount@ /must/ be the same value as --     'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@signalSemaphoreCount@, --     where 'Graphics.Vulkan.Core10.Queue.SubmitInfo' is in the @pNext@---     chain of this 'D3D12FenceSubmitInfoKHR' structure.+--     chain of this 'D3D12FenceSubmitInfoKHR' structure -- -- == Valid Usage (Implicit) --@@ -602,32 +612,32 @@ -- -- -   @handleType@ /must/ have been included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'::@handleTypes@---     when the @semaphore@’s current payload was created.+--     when the @semaphore@’s current payload was created -- -- -   If @handleType@ is defined as an NT handle, --     'getSemaphoreWin32HandleKHR' /must/ be called no more than once for---     each valid unique combination of @semaphore@ and @handleType@.+--     each valid unique combination of @semaphore@ and @handleType@ -- -- -   @semaphore@ /must/ not currently have its payload replaced by an --     imported payload as described below in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads> --     unless that imported payload’s handle type was included in --     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@---     for @handleType@.+--     for @handleType@ -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, as defined below in --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,---     there /must/ be no queue waiting on @semaphore@.+--     there /must/ be no queue waiting on @semaphore@ -- -- -   If @handleType@ refers to a handle type with copy payload --     transference semantics, @semaphore@ /must/ be signaled, or have an --     associated --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>---     pending execution.+--     pending execution -- -- -   @handleType@ /must/ be defined as an NT handle or a global share---     handle.+--     handle -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs view
@@ -127,7 +127,7 @@ --     structure is included in the @pNext@ chain of --     @pSurfaceCapabilities@, a --     'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT'---     structure /must/ be included in the @pNext@ chain of @pSurfaceInfo@.+--     structure /must/ be included in the @pNext@ chain of @pSurfaceInfo@ -- -- == Valid Usage (Implicit) --@@ -218,10 +218,10 @@ -- -- == Valid Usage ----- -   @pSurfaceInfo->surface@ must be supported by @physicalDevice@, as+-- -   @pSurfaceInfo->surface@ /must/ be supported by @physicalDevice@, as --     reported by --     'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'---     or an equivalent platform-specific mechanism.+--     or an equivalent platform-specific mechanism -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs view
@@ -169,13 +169,13 @@ -- -   The sum of @offset@ and @extent@ /must/ be no greater than the --     @imageExtent@ member of the --     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'---     structure given to---     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--     structure passed to+--     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' ----- -   @layer@ /must/ be less than @imageArrayLayers@ member of the+-- -   @layer@ /must/ be less than the @imageArrayLayers@ member of the --     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'---     structure given to---     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--     structure passed to+--     'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' -- -- Some platforms allow the size of a surface to change, and then scale the -- pixels of the image to fit the surface. 'RectLayerKHR' specifies pixels
src/Graphics/Vulkan/Extensions/VK_KHR_performance_query.hs view
@@ -50,6 +50,7 @@                                                             , pattern KHR_PERFORMANCE_QUERY_EXTENSION_NAME                                                             ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -103,7 +104,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -535,7 +535,7 @@     poke ((p `plusPtr` 16 :: Ptr PerformanceCounterUnitKHR)) (unit)     poke ((p `plusPtr` 20 :: Ptr PerformanceCounterScopeKHR)) (scope)     poke ((p `plusPtr` 24 :: Ptr PerformanceCounterStorageKHR)) (storage)-    pokeFixedLengthByteString ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (uuid)+    pokeFixedLengthByteString ((p `plusPtr` 28 :: Ptr (FixedArray UUID_SIZE Word8))) (uuid)     f   cStructSize = 48   cStructAlignment = 8@@ -545,7 +545,7 @@     poke ((p `plusPtr` 16 :: Ptr PerformanceCounterUnitKHR)) (zero)     poke ((p `plusPtr` 20 :: Ptr PerformanceCounterScopeKHR)) (zero)     poke ((p `plusPtr` 24 :: Ptr PerformanceCounterStorageKHR)) (zero)-    pokeFixedLengthByteString ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+    pokeFixedLengthByteString ((p `plusPtr` 28 :: Ptr (FixedArray UUID_SIZE Word8))) (mempty)     f  instance FromCStruct PerformanceCounterKHR where@@ -553,7 +553,7 @@     unit <- peek @PerformanceCounterUnitKHR ((p `plusPtr` 16 :: Ptr PerformanceCounterUnitKHR))     scope <- peek @PerformanceCounterScopeKHR ((p `plusPtr` 20 :: Ptr PerformanceCounterScopeKHR))     storage <- peek @PerformanceCounterStorageKHR ((p `plusPtr` 24 :: Ptr PerformanceCounterStorageKHR))-    uuid <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+    uuid <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 28 :: Ptr (FixedArray UUID_SIZE Word8)))     pure $ PerformanceCounterKHR              unit scope storage uuid @@ -607,26 +607,26 @@     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr PerformanceCounterDescriptionFlagsKHR)) (flags)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (category)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (name)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (category)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)     f   cStructSize = 792   cStructAlignment = 8   pokeZeroCStruct p f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)     f  instance FromCStruct PerformanceCounterDescriptionKHR where   peekCStruct p = do     flags <- peek @PerformanceCounterDescriptionFlagsKHR ((p `plusPtr` 16 :: Ptr PerformanceCounterDescriptionFlagsKHR))-    name <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))-    category <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))-    description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+    name <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))+    category <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))+    description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))     pure $ PerformanceCounterDescriptionKHR              flags name category description @@ -838,31 +838,31 @@   data PerformanceCounterResultKHR-  = CounterInt32 Int32-  | CounterInt64 Int64-  | CounterUint32 Word32-  | CounterUint64 Word64-  | CounterFloat32 Float-  | CounterFloat64 Double+  = Int32Counter Int32+  | Int64Counter Int64+  | Uint32Counter Word32+  | Uint64Counter Word64+  | Float32Counter Float+  | Float64Counter Double   deriving (Show)  instance ToCStruct PerformanceCounterResultKHR where   withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)   pokeCStruct :: Ptr PerformanceCounterResultKHR -> PerformanceCounterResultKHR -> IO a -> IO a   pokeCStruct p = (. const) . runContT .  \case-    CounterInt32 v -> lift $ poke (castPtr @_ @Int32 p) (v)-    CounterInt64 v -> lift $ poke (castPtr @_ @Int64 p) (v)-    CounterUint32 v -> lift $ poke (castPtr @_ @Word32 p) (v)-    CounterUint64 v -> lift $ poke (castPtr @_ @Word64 p) (v)-    CounterFloat32 v -> lift $ poke (castPtr @_ @CFloat p) (CFloat (v))-    CounterFloat64 v -> lift $ poke (castPtr @_ @CDouble p) (CDouble (v))+    Int32Counter v -> lift $ poke (castPtr @_ @Int32 p) (v)+    Int64Counter v -> lift $ poke (castPtr @_ @Int64 p) (v)+    Uint32Counter v -> lift $ poke (castPtr @_ @Word32 p) (v)+    Uint64Counter v -> lift $ poke (castPtr @_ @Word64 p) (v)+    Float32Counter v -> lift $ poke (castPtr @_ @CFloat p) (CFloat (v))+    Float64Counter v -> lift $ poke (castPtr @_ @CDouble p) (CDouble (v))   pokeZeroCStruct :: Ptr PerformanceCounterResultKHR -> IO b -> IO b   pokeZeroCStruct _ f = f   cStructSize = 8   cStructAlignment = 8  instance Zero PerformanceCounterResultKHR where-  zero = CounterInt64 zero+  zero = Int64Counter zero   -- | VkPerformanceCounterScopeKHR - Supported counter scope types
src/Graphics/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs view
@@ -22,6 +22,7 @@                                                                          , pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME                                                                          ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)@@ -70,7 +71,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -141,10 +141,10 @@ -- == Valid Usage -- -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>---     /must/ be enabled.+--     /must/ be enabled -- -- -   @pipeline@ member of @pPipelineInfo@ /must/ have been created with---     @device@.+--     @device@ -- -- == Valid Usage (Implicit) --@@ -235,16 +235,16 @@ -- == Valid Usage -- -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>---     /must/ be enabled.+--     /must/ be enabled -- -- -   @pipeline@ member of @pExecutableInfo@ /must/ have been created with---     @device@.+--     @device@ -- -- -   @pipeline@ member of @pExecutableInfo@ /must/ have been created with --     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR' --     set in the @flags@ field of --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' or---     'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'.+--     'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo' -- -- == Valid Usage (Implicit) --@@ -343,16 +343,16 @@ -- == Valid Usage -- -- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>---     /must/ be enabled.+--     /must/ be enabled -- -- -   @pipeline@ member of @pExecutableInfo@ /must/ have been created with---     @device@.+--     @device@ -- -- -   @pipeline@ member of @pExecutableInfo@ /must/ have been created with --     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR' --     set in the @flags@ field of --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' or---     'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'.+--     'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo' -- -- == Valid Usage (Implicit) --@@ -573,8 +573,8 @@     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stages)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (name)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)     poke ((p `plusPtr` 532 :: Ptr Word32)) (subgroupSize)     f   cStructSize = 536@@ -583,16 +583,16 @@     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)     poke ((p `plusPtr` 532 :: Ptr Word32)) (zero)     f  instance FromCStruct PipelineExecutablePropertiesKHR where   peekCStruct p = do     stages <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))-    name <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))-    description <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+    name <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))+    description <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))     subgroupSize <- peek @Word32 ((p `plusPtr` 532 :: Ptr Word32))     pure $ PipelineExecutablePropertiesKHR              stages name description subgroupSize@@ -628,7 +628,7 @@     pipeline :: Pipeline   , -- | @executableIndex@ /must/ be less than the number of executables     -- associated with @pipeline@ as returned in the @pExecutableCount@-    -- parameter of 'getPipelineExecutablePropertiesKHR'.+    -- parameter of 'getPipelineExecutablePropertiesKHR'     executableIndex :: Word32   }   deriving (Typeable)@@ -706,8 +706,8 @@   pokeCStruct p PipelineExecutableStatisticKHR{..} f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (name)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)     lift $ poke ((p `plusPtr` 528 :: Ptr PipelineExecutableStatisticFormatKHR)) (format)     ContT $ pokeCStruct ((p `plusPtr` 536 :: Ptr PipelineExecutableStatisticValueKHR)) (value) . ($ ())     lift $ f@@ -716,16 +716,16 @@   pokeZeroCStruct p f = evalContT $ do     lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR)     lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)-    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)+    lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)     lift $ poke ((p `plusPtr` 528 :: Ptr PipelineExecutableStatisticFormatKHR)) (zero)     ContT $ pokeCStruct ((p `plusPtr` 536 :: Ptr PipelineExecutableStatisticValueKHR)) (zero) . ($ ())     lift $ f  instance FromCStruct PipelineExecutableStatisticKHR where   peekCStruct p = do-    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))-    description <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))+    description <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))     format <- peek @PipelineExecutableStatisticFormatKHR ((p `plusPtr` 528 :: Ptr PipelineExecutableStatisticFormatKHR))     value <- peekPipelineExecutableStatisticValueKHR format ((p `plusPtr` 536 :: Ptr PipelineExecutableStatisticValueKHR))     pure $ PipelineExecutableStatisticKHR@@ -796,8 +796,8 @@   pokeCStruct p PipelineExecutableInternalRepresentationKHR{..} f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (name)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)     poke ((p `plusPtr` 528 :: Ptr Bool32)) (boolToBool32 (isText))     poke ((p `plusPtr` 536 :: Ptr CSize)) (CSize (dataSize))     poke ((p `plusPtr` 544 :: Ptr (Ptr ()))) (data')@@ -807,15 +807,15 @@   pokeZeroCStruct p f = do     poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR)     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)     poke ((p `plusPtr` 528 :: Ptr Bool32)) (boolToBool32 (zero))     f  instance FromCStruct PipelineExecutableInternalRepresentationKHR where   peekCStruct p = do-    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))-    description <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))+    description <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))     isText <- peek @Bool32 ((p `plusPtr` 528 :: Ptr Bool32))     dataSize <- peek @CSize ((p `plusPtr` 536 :: Ptr CSize))     pData <- peek @(Ptr ()) ((p `plusPtr` 544 :: Ptr (Ptr ())))
+ src/Graphics/Vulkan/Extensions/VK_KHR_pipeline_library.hs view
@@ -0,0 +1,111 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_pipeline_library  ( PipelineLibraryCreateInfoKHR(..)+                                                           , KHR_PIPELINE_LIBRARY_SPEC_VERSION+                                                           , pattern KHR_PIPELINE_LIBRARY_SPEC_VERSION+                                                           , KHR_PIPELINE_LIBRARY_EXTENSION_NAME+                                                           , pattern KHR_PIPELINE_LIBRARY_EXTENSION_NAME+                                                           ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR))+-- | VkPipelineLibraryCreateInfoKHR - Structure specifying pipeline libraries+-- to use when creating a pipeline+--+-- == Valid Usage+--+-- -   Each element of @pLibraries@ /must/ have been created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   If @libraryCount@ is not @0@, @pLibraries@ /must/ be a valid pointer+--     to an array of @libraryCount@ valid+--     'Graphics.Vulkan.Core10.Handles.Pipeline' handles+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingPipelineCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineLibraryCreateInfoKHR = PipelineLibraryCreateInfoKHR+  { -- | @pLibraries@ is an array of pipeline libraries to use when creating a+    -- pipeline.+    libraries :: Vector Pipeline }+  deriving (Typeable)+deriving instance Show PipelineLibraryCreateInfoKHR++instance ToCStruct PipelineLibraryCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PipelineLibraryCreateInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (libraries)) :: Word32))+    pPLibraries' <- ContT $ allocaBytesAligned @Pipeline ((Data.Vector.length (libraries)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPLibraries' `plusPtr` (8 * (i)) :: Ptr Pipeline) (e)) (libraries)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Pipeline))) (pPLibraries')+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pPLibraries' <- ContT $ allocaBytesAligned @Pipeline ((Data.Vector.length (mempty)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPLibraries' `plusPtr` (8 * (i)) :: Ptr Pipeline) (e)) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Pipeline))) (pPLibraries')+    lift $ f++instance FromCStruct PipelineLibraryCreateInfoKHR where+  peekCStruct p = do+    libraryCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pLibraries <- peek @(Ptr Pipeline) ((p `plusPtr` 24 :: Ptr (Ptr Pipeline)))+    pLibraries' <- generateM (fromIntegral libraryCount) (\i -> peek @Pipeline ((pLibraries `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+    pure $ PipelineLibraryCreateInfoKHR+             pLibraries'++instance Zero PipelineLibraryCreateInfoKHR where+  zero = PipelineLibraryCreateInfoKHR+           mempty+++type KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION"+pattern KHR_PIPELINE_LIBRARY_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1+++type KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library"++-- No documentation found for TopLevel "VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME"+pattern KHR_PIPELINE_LIBRARY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_pipeline_library  (PipelineLibraryCreateInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineLibraryCreateInfoKHR++instance ToCStruct PipelineLibraryCreateInfoKHR+instance Show PipelineLibraryCreateInfoKHR++instance FromCStruct PipelineLibraryCreateInfoKHR+
+ src/Graphics/Vulkan/Extensions/VK_KHR_ray_tracing.hs view
@@ -0,0 +1,6144 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_ray_tracing  ( destroyAccelerationStructureKHR+                                                      , getAccelerationStructureMemoryRequirementsKHR+                                                      , bindAccelerationStructureMemoryKHR+                                                      , cmdCopyAccelerationStructureKHR+                                                      , copyAccelerationStructureKHR+                                                      , cmdCopyAccelerationStructureToMemoryKHR+                                                      , copyAccelerationStructureToMemoryKHR+                                                      , cmdCopyMemoryToAccelerationStructureKHR+                                                      , copyMemoryToAccelerationStructureKHR+                                                      , cmdWriteAccelerationStructuresPropertiesKHR+                                                      , writeAccelerationStructuresPropertiesKHR+                                                      , cmdTraceRaysKHR+                                                      , getRayTracingShaderGroupHandlesKHR+                                                      , getRayTracingCaptureReplayShaderGroupHandlesKHR+                                                      , createRayTracingPipelinesKHR+                                                      , cmdTraceRaysIndirectKHR+                                                      , getDeviceAccelerationStructureCompatibilityKHR+                                                      , createAccelerationStructureKHR+                                                      , withAccelerationStructureKHR+                                                      , cmdBuildAccelerationStructureKHR+                                                      , cmdBuildAccelerationStructureIndirectKHR+                                                      , buildAccelerationStructureKHR+                                                      , getAccelerationStructureDeviceAddressKHR+                                                      , RayTracingShaderGroupCreateInfoKHR(..)+                                                      , RayTracingPipelineCreateInfoKHR(..)+                                                      , BindAccelerationStructureMemoryInfoKHR(..)+                                                      , WriteDescriptorSetAccelerationStructureKHR(..)+                                                      , AccelerationStructureMemoryRequirementsInfoKHR(..)+                                                      , PhysicalDeviceRayTracingFeaturesKHR(..)+                                                      , PhysicalDeviceRayTracingPropertiesKHR(..)+                                                      , StridedBufferRegionKHR(..)+                                                      , TraceRaysIndirectCommandKHR(..)+                                                      , AccelerationStructureGeometryTrianglesDataKHR(..)+                                                      , AccelerationStructureGeometryAabbsDataKHR(..)+                                                      , AccelerationStructureGeometryInstancesDataKHR(..)+                                                      , AccelerationStructureGeometryKHR(..)+                                                      , AccelerationStructureBuildGeometryInfoKHR(..)+                                                      , AccelerationStructureBuildOffsetInfoKHR(..)+                                                      , AccelerationStructureCreateGeometryTypeInfoKHR(..)+                                                      , AccelerationStructureCreateInfoKHR(..)+                                                      , AabbPositionsKHR(..)+                                                      , TransformMatrixKHR(..)+                                                      , AccelerationStructureInstanceKHR(..)+                                                      , AccelerationStructureDeviceAddressInfoKHR(..)+                                                      , AccelerationStructureVersionKHR(..)+                                                      , CopyAccelerationStructureInfoKHR(..)+                                                      , CopyAccelerationStructureToMemoryInfoKHR(..)+                                                      , CopyMemoryToAccelerationStructureInfoKHR(..)+                                                      , RayTracingPipelineInterfaceCreateInfoKHR(..)+                                                      , DeviceOrHostAddressKHR(..)+                                                      , DeviceOrHostAddressConstKHR(..)+                                                      , AccelerationStructureGeometryDataKHR(..)+                                                      , GeometryInstanceFlagBitsKHR( GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR+                                                                                   , GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR+                                                                                   , GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR+                                                                                   , GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR+                                                                                   , ..+                                                                                   )+                                                      , GeometryInstanceFlagsKHR+                                                      , GeometryFlagBitsKHR( GEOMETRY_OPAQUE_BIT_KHR+                                                                           , GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR+                                                                           , ..+                                                                           )+                                                      , GeometryFlagsKHR+                                                      , BuildAccelerationStructureFlagBitsKHR( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR+                                                                                             , BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR+                                                                                             , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR+                                                                                             , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR+                                                                                             , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR+                                                                                             , ..+                                                                                             )+                                                      , BuildAccelerationStructureFlagsKHR+                                                      , CopyAccelerationStructureModeKHR( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR+                                                                                        , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR+                                                                                        , COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR+                                                                                        , COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR+                                                                                        , ..+                                                                                        )+                                                      , AccelerationStructureTypeKHR( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR+                                                                                    , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR+                                                                                    , ..+                                                                                    )+                                                      , GeometryTypeKHR( GEOMETRY_TYPE_TRIANGLES_KHR+                                                                       , GEOMETRY_TYPE_AABBS_KHR+                                                                       , GEOMETRY_TYPE_INSTANCES_KHR+                                                                       , ..+                                                                       )+                                                      , AccelerationStructureMemoryRequirementsTypeKHR( ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR+                                                                                                      , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR+                                                                                                      , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR+                                                                                                      , ..+                                                                                                      )+                                                      , AccelerationStructureBuildTypeKHR( ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR+                                                                                         , ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR+                                                                                         , ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR+                                                                                         , ..+                                                                                         )+                                                      , RayTracingShaderGroupTypeKHR( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR+                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR+                                                                                    , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR+                                                                                    , ..+                                                                                    )+                                                      , KHR_RAY_TRACING_SPEC_VERSION+                                                      , pattern KHR_RAY_TRACING_SPEC_VERSION+                                                      , KHR_RAY_TRACING_EXTENSION_NAME+                                                      , pattern KHR_RAY_TRACING_EXTENSION_NAME+                                                      , AccelerationStructureKHR(..)+                                                      , PipelineLibraryCreateInfoKHR(..)+                                                      , DebugReportObjectTypeEXT(..)+                                                      , SHADER_UNUSED_KHR+                                                      , pattern SHADER_UNUSED_KHR+                                                      ) where++import Graphics.Vulkan.CStruct.Utils (FixedArray)+import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Data.Bits ((.&.))+import Data.Bits ((.|.))+import Data.Bits (shiftL)+import Data.Bits (shiftR)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Marshal.Utils (with)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import qualified Data.ByteString (length)+import Data.ByteString (packCStringLen)+import Data.ByteString.Unsafe (unsafeUseAsCString)+import Data.Coerce (coerce)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.Trans.Cont (runContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Foreign.C.Types (CSize(..))+import Control.Monad.IO.Class (MonadIO)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Word (Word8)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR)+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR(..))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations (DeferredOperationInfoKHR)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Core10.BaseType (DeviceAddress)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBuildAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureIndirectKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureToMemoryKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyMemoryToAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysIndirectKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCopyAccelerationStructureToMemoryKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCopyMemoryToAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureDeviceAddressKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceAccelerationStructureCompatibilityKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkWriteAccelerationStructuresPropertiesKHR))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Handles (PipelineCache)+import Graphics.Vulkan.Core10.Handles (PipelineCache(..))+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)+import Graphics.Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Handles (QueryPool)+import Graphics.Vulkan.Core10.Handles (QueryPool(..))+import Graphics.Vulkan.Core10.Enums.QueryType (QueryType)+import Graphics.Vulkan.Core10.Enums.QueryType (QueryType(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.BaseType (Bool32(FALSE))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core10.APIConstants (pattern UUID_SIZE)+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+import Graphics.Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR(..))+import Graphics.Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)+import Graphics.Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDestroyAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureKHR -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyAccelerationStructureKHR - Destroy an acceleration structure+-- object+--+-- = Parameters+--+-- -   @device@ is the logical device that destroys the buffer.+--+-- -   @accelerationStructure@ is the acceleration structure to destroy.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- == Valid Usage+--+-- -   All submitted commands that refer to @accelerationStructure@ /must/+--     have completed execution+--+-- -   If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     were provided when @accelerationStructure@ was created, a compatible+--     set of callbacks /must/ be provided here+--+-- -   If no+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     were provided when @accelerationStructure@ was created, @pAllocator@+--     /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @accelerationStructure@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @accelerationStructure@ /must/ have been created, allocated, or+--     retrieved from @device@+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyAccelerationStructureKHR :: forall io . MonadIO io => Device -> AccelerationStructureKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()+destroyAccelerationStructureKHR device accelerationStructure allocator = liftIO . evalContT $ do+  let vkDestroyAccelerationStructureKHR' = mkVkDestroyAccelerationStructureKHR (pVkDestroyAccelerationStructureKHR (deviceCmds (device :: Device)))+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  lift $ vkDestroyAccelerationStructureKHR' (deviceHandle (device)) (accelerationStructure) pAllocator+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsKHR+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoKHR -> Ptr (MemoryRequirements2 a) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoKHR -> Ptr (MemoryRequirements2 a) -> IO ()++-- | vkGetAccelerationStructureMemoryRequirementsKHR - Get acceleration+-- structure memory requirements+--+-- = Parameters+--+-- -   @device@ is the logical device on which the acceleration structure+--     was created.+--+-- -   @pInfo@ specifies the acceleration structure to get memory+--     requirements for.+--+-- -   @pMemoryRequirements@ returns the requested acceleration structure+--     memory requirements.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+getAccelerationStructureMemoryRequirementsKHR :: forall a io . (PokeChain a, PeekChain a, MonadIO io) => Device -> AccelerationStructureMemoryRequirementsInfoKHR -> io (MemoryRequirements2 a)+getAccelerationStructureMemoryRequirementsKHR device info = liftIO . evalContT $ do+  let vkGetAccelerationStructureMemoryRequirementsKHR' = mkVkGetAccelerationStructureMemoryRequirementsKHR (pVkGetAccelerationStructureMemoryRequirementsKHR (deviceCmds (device :: Device)))+  pInfo <- ContT $ withCStruct (info)+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))+  lift $ vkGetAccelerationStructureMemoryRequirementsKHR' (deviceHandle (device)) pInfo (pPMemoryRequirements)+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements+  pure $ (pMemoryRequirements)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkBindAccelerationStructureMemoryKHR+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoKHR -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoKHR -> IO Result++-- | vkBindAccelerationStructureMemoryKHR - Bind acceleration structure+-- memory+--+-- = Parameters+--+-- -   @device@ is the logical device that owns the acceleration structures+--     and memory.+--+-- -   @bindInfoCount@ is the number of elements in @pBindInfos@.+--+-- -   @pBindInfos@ is a pointer to an array of+--     'BindAccelerationStructureMemoryInfoKHR' structures describing+--     acceleration structures and memory to bind.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'BindAccelerationStructureMemoryInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+bindAccelerationStructureMemoryKHR :: forall io . MonadIO io => Device -> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoKHR) -> io ()+bindAccelerationStructureMemoryKHR device bindInfos = liftIO . evalContT $ do+  let vkBindAccelerationStructureMemoryKHR' = mkVkBindAccelerationStructureMemoryKHR (pVkBindAccelerationStructureMemoryKHR (deviceCmds (device :: Device)))+  pPBindInfos <- ContT $ allocaBytesAligned @BindAccelerationStructureMemoryInfoKHR ((Data.Vector.length (bindInfos)) * 56) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (56 * (i)) :: Ptr BindAccelerationStructureMemoryInfoKHR) (e) . ($ ())) (bindInfos)+  r <- lift $ vkBindAccelerationStructureMemoryKHR' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32)) (pPBindInfos)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyAccelerationStructureKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (CopyAccelerationStructureInfoKHR a) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (CopyAccelerationStructureInfoKHR a) -> IO ()++-- | vkCmdCopyAccelerationStructureKHR - Copy an acceleration structure+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR'+--     structure defining the copy operation.+--+-- == Valid Usage+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to device memory+--+-- -   The+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--     structure /must/ not be included in the @pNext@ chain of the+--     'CopyAccelerationStructureInfoKHR' structure+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'CopyAccelerationStructureInfoKHR' structure+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'CopyAccelerationStructureInfoKHR'+cmdCopyAccelerationStructureKHR :: forall a io . (PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureInfoKHR a -> io ()+cmdCopyAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do+  let vkCmdCopyAccelerationStructureKHR' = mkVkCmdCopyAccelerationStructureKHR (pVkCmdCopyAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdCopyAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) pInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCopyAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> Ptr (CopyAccelerationStructureInfoKHR a) -> IO Result) -> Ptr Device_T -> Ptr (CopyAccelerationStructureInfoKHR a) -> IO Result++-- | vkCopyAccelerationStructureKHR - Copy an acceleration structure on the+-- host+--+-- = Parameters+--+-- This command fulfills the same task as 'cmdCopyAccelerationStructureKHR'+-- but executed by the host.+--+-- = Description+--+-- -   @device@ is the device which owns the acceleration structures.+--+-- -   @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR'+--     structure defining the copy operation.+--+-- If the+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+-- structure is included in the @pNext@ chain of the+-- 'CopyAccelerationStructureInfoKHR' structure, the operation of this+-- command is /deferred/, as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>+-- chapter.+--+-- == Valid Usage+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to host-visible+--     memory+--+-- -   the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'CopyAccelerationStructureInfoKHR' structure+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CopyAccelerationStructureInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+copyAccelerationStructureKHR :: forall a io . (PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureInfoKHR a -> io (Result)+copyAccelerationStructureKHR device info = liftIO . evalContT $ do+  let vkCopyAccelerationStructureKHR' = mkVkCopyAccelerationStructureKHR (pVkCopyAccelerationStructureKHR (deviceCmds (device :: Device)))+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkCopyAccelerationStructureKHR' (deviceHandle (device)) pInfo+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyAccelerationStructureToMemoryKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (CopyAccelerationStructureToMemoryInfoKHR a) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (CopyAccelerationStructureToMemoryInfoKHR a) -> IO ()++-- | vkCmdCopyAccelerationStructureToMemoryKHR - Copy an acceleration+-- structure to device memory+--+-- = Parameters+--+-- This command produces the same results as+-- 'copyAccelerationStructureToMemoryKHR', but writes its result to a+-- device address, and is executed on the device rather than the host. The+-- output /may/ not necessarily be bit-for-bit identical, but it can be+-- equally used by either 'cmdCopyMemoryToAccelerationStructureKHR' or+-- 'copyMemoryToAccelerationStructureKHR'.+--+-- = Description+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @pInfo@ is an a pointer to a+--     'CopyAccelerationStructureToMemoryInfoKHR' structure defining the+--     copy operation.+--+-- The defined header structure for the serialized data consists of:+--+-- -   'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data+--     matching+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@+--+-- -   'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' bytes of data+--     identifying the compatibility for comparison using+--     'getDeviceAccelerationStructureCompatibilityKHR'+--+-- -   A 64-bit integer of the total size matching the value queried using+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   A 64-bit integer of the deserialized size to be passed in to+--     'AccelerationStructureCreateInfoKHR'::@compactedSize@+--+-- -   A 64-bit integer of the count of the number of acceleration+--     structure handles following. This will be zero for a bottom-level+--     acceleration structure.+--+-- The corresponding handles matching the values returned by+-- 'getAccelerationStructureDeviceAddressKHR' or+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+-- are tightly packed in the buffer following the count. The application is+-- expected to store a mapping between those handles and the original+-- application-generated bottom-level acceleration structures to provide+-- when deserializing.+--+-- == Valid Usage+--+-- -   All 'DeviceOrHostAddressConstKHR' referenced by this command /must/+--     contain valid device addresses+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to device memory+--+-- -   The+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--     structure /must/ not be included in the @pNext@ chain of the+--     'CopyAccelerationStructureToMemoryInfoKHR' structure+--+-- -   [[VUID-{refpage}-mode-03412]] @mode@ /must/ be+--     'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'CopyAccelerationStructureToMemoryInfoKHR' structure+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'CopyAccelerationStructureToMemoryInfoKHR'+cmdCopyAccelerationStructureToMemoryKHR :: forall a io . (PokeChain a, MonadIO io) => CommandBuffer -> CopyAccelerationStructureToMemoryInfoKHR a -> io ()+cmdCopyAccelerationStructureToMemoryKHR commandBuffer info = liftIO . evalContT $ do+  let vkCmdCopyAccelerationStructureToMemoryKHR' = mkVkCmdCopyAccelerationStructureToMemoryKHR (pVkCmdCopyAccelerationStructureToMemoryKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdCopyAccelerationStructureToMemoryKHR' (commandBufferHandle (commandBuffer)) pInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCopyAccelerationStructureToMemoryKHR+  :: FunPtr (Ptr Device_T -> Ptr (CopyAccelerationStructureToMemoryInfoKHR a) -> IO Result) -> Ptr Device_T -> Ptr (CopyAccelerationStructureToMemoryInfoKHR a) -> IO Result++-- | vkCopyAccelerationStructureToMemoryKHR - Serialize an acceleration+-- structure on the host+--+-- = Parameters+--+-- This command fulfills the same task as+-- 'cmdCopyAccelerationStructureToMemoryKHR' but executed by the host.+--+-- = Description+--+-- This command produces the same results as+-- 'cmdCopyAccelerationStructureToMemoryKHR', but writes its result+-- directly to a host pointer, and is executed on the host rather than the+-- device. The output /may/ not necessarily be bit-for-bit identical, but+-- it can be equally used by either+-- 'cmdCopyMemoryToAccelerationStructureKHR' or+-- 'copyMemoryToAccelerationStructureKHR'.+--+-- -   @device@ is the device which owns @pInfo->src@.+--+-- -   @pInfo@ is a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'+--     structure defining the copy operation.+--+-- If the+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+-- structure is included in the @pNext@ chain of the+-- 'CopyAccelerationStructureToMemoryInfoKHR' structure, the operation of+-- this command is /deferred/, as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations>+-- chapter.+--+-- == Valid Usage+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to host-visible+--     memory+--+-- -   All 'DeviceOrHostAddressKHR' referenced by this command /must/+--     contain valid host pointers+--+-- -   the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'CopyAccelerationStructureToMemoryInfoKHR' structure+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CopyAccelerationStructureToMemoryInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+copyAccelerationStructureToMemoryKHR :: forall a io . (PokeChain a, MonadIO io) => Device -> CopyAccelerationStructureToMemoryInfoKHR a -> io (Result)+copyAccelerationStructureToMemoryKHR device info = liftIO . evalContT $ do+  let vkCopyAccelerationStructureToMemoryKHR' = mkVkCopyAccelerationStructureToMemoryKHR (pVkCopyAccelerationStructureToMemoryKHR (deviceCmds (device :: Device)))+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkCopyAccelerationStructureToMemoryKHR' (deviceHandle (device)) pInfo+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyMemoryToAccelerationStructureKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (CopyMemoryToAccelerationStructureInfoKHR a) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (CopyMemoryToAccelerationStructureInfoKHR a) -> IO ()++-- | vkCmdCopyMemoryToAccelerationStructureKHR - Copy device memory to an+-- acceleration structure+--+-- = Parameters+--+-- This command can accept acceleration structures produced by either+-- 'cmdCopyAccelerationStructureToMemoryKHR' or+-- 'copyAccelerationStructureToMemoryKHR'.+--+-- = Description+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'+--     structure defining the copy operation.+--+-- The structure provided as input to deserialize is as described in+-- 'cmdCopyAccelerationStructureToMemoryKHR', with any acceleration+-- structure handles filled in with the newly-queried handles to bottom+-- level acceleration structures created before deserialization. These do+-- not need to be built at deserialize time, but /must/ be created.+--+-- == Valid Usage+--+-- -   All 'DeviceOrHostAddressKHR' referenced by this command /must/+--     contain valid device addresses+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to device memory+--+-- -   The+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--     structure /must/ not be included in the @pNext@ chain of the+--     'CopyMemoryToAccelerationStructureInfoKHR' structure+--+-- -   [[VUID-{refpage}-mode-03413]] @mode@ /must/ be+--     'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'+--+-- -   [[VUID-{refpage}-pInfo-03414]] The data in @pInfo->src@ /must/ have+--     a format compatible with the destination physical device as returned+--     by 'getDeviceAccelerationStructureCompatibilityKHR'+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'CopyMemoryToAccelerationStructureInfoKHR' structure+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'CopyMemoryToAccelerationStructureInfoKHR'+cmdCopyMemoryToAccelerationStructureKHR :: forall a io . (PokeChain a, MonadIO io) => CommandBuffer -> CopyMemoryToAccelerationStructureInfoKHR a -> io ()+cmdCopyMemoryToAccelerationStructureKHR commandBuffer info = liftIO . evalContT $ do+  let vkCmdCopyMemoryToAccelerationStructureKHR' = mkVkCmdCopyMemoryToAccelerationStructureKHR (pVkCmdCopyMemoryToAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdCopyMemoryToAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) pInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCopyMemoryToAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> Ptr (CopyMemoryToAccelerationStructureInfoKHR a) -> IO Result) -> Ptr Device_T -> Ptr (CopyMemoryToAccelerationStructureInfoKHR a) -> IO Result++-- | vkCopyMemoryToAccelerationStructureKHR - Deserialize an acceleration+-- structure on the host+--+-- = Parameters+--+-- This command fulfills the same task as+-- 'cmdCopyMemoryToAccelerationStructureKHR' but is executed by the host.+--+-- = Description+--+-- This command can accept acceleration structures produced by either+-- 'cmdCopyAccelerationStructureToMemoryKHR' or+-- 'copyAccelerationStructureToMemoryKHR'.+--+-- -   @device@ is the device which owns @pInfo->dst@.+--+-- -   @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'+--     structure defining the copy operation.+--+-- If the+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+-- structure is included in the @pNext@ chain of the+-- 'CopyMemoryToAccelerationStructureInfoKHR' structure, the operation of+-- this command is /deferred/, as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>+-- chapter.+--+-- == Valid Usage+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to host-visible+--     memory+--+-- -   All 'DeviceOrHostAddressConstKHR' referenced by this command /must/+--     contain valid host pointers+--+-- -   the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'CopyMemoryToAccelerationStructureInfoKHR' structure+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CopyMemoryToAccelerationStructureInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+copyMemoryToAccelerationStructureKHR :: forall a io . (PokeChain a, MonadIO io) => Device -> CopyMemoryToAccelerationStructureInfoKHR a -> io (Result)+copyMemoryToAccelerationStructureKHR device info = liftIO . evalContT $ do+  let vkCopyMemoryToAccelerationStructureKHR' = mkVkCopyMemoryToAccelerationStructureKHR (pVkCopyMemoryToAccelerationStructureKHR (deviceCmds (device :: Device)))+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkCopyMemoryToAccelerationStructureKHR' (deviceHandle (device)) pInfo+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesKHR+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> QueryPool -> Word32 -> IO ()++-- | vkCmdWriteAccelerationStructuresPropertiesKHR - Write acceleration+-- structure result parameters to query results.+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @accelerationStructureCount@ is the count of acceleration structures+--     for which to query the property.+--+-- -   @pAccelerationStructures@ is a pointer to an array of existing+--     previously built acceleration structures.+--+-- -   @queryType@ is a 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+--     value specifying the type of queries managed by the pool.+--+-- -   @queryPool@ is the query pool that will manage the results of the+--     query.+--+-- -   @firstQuery@ is the first query index within the query pool that+--     will contain the @accelerationStructureCount@ number of results.+--+-- == Valid Usage+--+-- -   @queryPool@ /must/ have been created with a @queryType@ matching+--     @queryType@+--+-- -   The queries identified by @queryPool@ and @firstQuery@ /must/ be+--     /unavailable/+--+-- -   [[VUID-{refpage}-accelerationStructures-03431]] All acceleration+--     structures in @accelerationStructures@ /must/ have been built with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if+--     @queryType@ is+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--+-- -   [[VUID-{refpage}-queryType-03432]] @queryType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--     or+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     handles+--+-- -   @queryType@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' value+--+-- -   @queryPool@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- -   @accelerationStructureCount@ /must/ be greater than @0@+--+-- -   Each of @commandBuffer@, @queryPool@, and the elements of+--     @pAccelerationStructures@ /must/ have been created, allocated, or+--     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool',+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+cmdWriteAccelerationStructuresPropertiesKHR :: forall io . MonadIO io => CommandBuffer -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> io ()+cmdWriteAccelerationStructuresPropertiesKHR commandBuffer accelerationStructures queryType queryPool firstQuery = liftIO . evalContT $ do+  let vkCmdWriteAccelerationStructuresPropertiesKHR' = mkVkCmdWriteAccelerationStructuresPropertiesKHR (pVkCmdWriteAccelerationStructuresPropertiesKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)+  lift $ vkCmdWriteAccelerationStructuresPropertiesKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (queryPool) (firstQuery)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkWriteAccelerationStructuresPropertiesKHR+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result) -> Ptr Device_T -> Word32 -> Ptr AccelerationStructureKHR -> QueryType -> CSize -> Ptr () -> CSize -> IO Result++-- | vkWriteAccelerationStructuresPropertiesKHR - Query acceleration+-- structure meta-data on the host+--+-- = Parameters+--+-- This command fulfills the same task as+-- 'cmdWriteAccelerationStructuresPropertiesKHR' but executed by the host.+--+-- = Description+--+-- -   @device@ is the device which owns the acceleration structures in+--     @pAccelerationStructures@.+--+-- -   @accelerationStructureCount@ is the count of acceleration structures+--     for which to query the property.+--+-- -   @pAccelerationStructures@ points to an array of existing previously+--     built acceleration structures.+--+-- -   @queryType@ is a 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+--     value specifying the property to be queried.+--+-- -   @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+--+-- -   @pData@ is a pointer to a user-allocated buffer where the results+--     will be written.+--+-- -   @stride@ is the stride in bytes between results for individual+--     queries within @pData@.+--+-- == Valid Usage+--+-- -   If @queryType@ is+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',+--     then @stride@ /must/ be a multiple of the size of+--     'Graphics.Vulkan.Core10.BaseType.DeviceSize'+--+-- -   If @queryType@ is+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR',+--     then @data@ /must/ point to a+--     'Graphics.Vulkan.Core10.BaseType.DeviceSize'+--+-- -   If @queryType@ is+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',+--     then @stride@ /must/ be a multiple of the size of+--     'Graphics.Vulkan.Core10.BaseType.DeviceSize'+--+-- -   If @queryType@ is+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR',+--     then @data@ /must/ point to a+--     'Graphics.Vulkan.Core10.BaseType.DeviceSize'+--+-- -   @dataSize@ /must/ be greater than or equal to+--     @accelerationStructureCount@*@stride@+--+-- -   The acceleration structures referenced by @pAccelerationStructures@+--     /must/ be bound to host-visible memory+--+-- -   [[VUID-{refpage}-accelerationStructures-03431]] All acceleration+--     structures in @accelerationStructures@ /must/ have been built with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if+--     @queryType@ is+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--+-- -   [[VUID-{refpage}-queryType-03432]] @queryType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'+--     or+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     handles+--+-- -   @queryType@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' value+--+-- -   @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- -   @accelerationStructureCount@ /must/ be greater than @0@+--+-- -   @dataSize@ /must/ be greater than @0@+--+-- -   Each element of @pAccelerationStructures@ /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+writeAccelerationStructuresPropertiesKHR :: forall io . MonadIO io => Device -> ("accelerationStructures" ::: Vector AccelerationStructureKHR) -> QueryType -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> ("stride" ::: Word64) -> io ()+writeAccelerationStructuresPropertiesKHR device accelerationStructures queryType dataSize data' stride = liftIO . evalContT $ do+  let vkWriteAccelerationStructuresPropertiesKHR' = mkVkWriteAccelerationStructuresPropertiesKHR (pVkWriteAccelerationStructuresPropertiesKHR (deviceCmds (device :: Device)))+  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8+  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)+  r <- lift $ vkWriteAccelerationStructuresPropertiesKHR' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (CSize (dataSize)) (data') (CSize (stride))+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdTraceRaysKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdTraceRaysKHR - Initialize a ray tracing dispatch+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @pRaygenShaderBindingTable@ is the strided buffer range that holds+--     the shader binding table data for the ray generation shader stage.+--+-- -   @pMissShaderBindingTable@ is the strided buffer range that holds the+--     shader binding table data for the miss shader stage.+--+-- -   @pHitShaderBindingTable@ is the strided buffer range that holds the+--     shader binding table data for the hit shader stage.+--+-- -   @pCallableShaderBindingTable@ is the strided buffer range that holds+--     the shader binding table data for the callable shader stage.+--+-- -   @width@ is the width of the ray trace query dimensions.+--+-- -   @height@ is height of the ray trace query dimensions.+--+-- -   @depth@ is depth of the ray trace query dimensions.+--+-- = Description+--+-- When the command is executed, a ray generation group of @width@ ×+-- @height@ × @depth@ rays is assembled.+--+-- == Valid Usage+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+--     atomic operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering, as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+--     with a reduction mode of either+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering together with minmax filtering,+--     as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+--     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+--     of+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   For each set /n/ that is statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command, a descriptor set /must/ have been bound+--     to /n/ at the same pipeline bind point, with a+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+--     for set /n/, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   For each push constant that is statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command, a push constant value /must/ have been+--     set for the same pipeline bind point, with a+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+--     for push constants, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   Descriptors in each bound descriptor set, specified via+--     'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+--     /must/ be valid if they are statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command+--+-- -   A valid pipeline /must/ be bound to the pipeline bind point used by+--     this command+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command requires any dynamic state,+--     that state /must/ have been set for @commandBuffer@, and done so+--     after any previously bound pipeline with the corresponding state not+--     specified as dynamic+--+-- -   There /must/ not have been any calls to dynamic state setting+--     commands for any state not specified as dynamic in the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command, since that pipeline was+--     bound+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used to sample+--     from any 'Graphics.Vulkan.Core10.Handles.Image' with a+--     'Graphics.Vulkan.Core10.Handles.ImageView' of the type+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+--     or+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+--     in any shader stage+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+--     any shader stage+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions that includes a LOD bias or any offset values, in any+--     shader stage+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a uniform buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a storage buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   If @commandBuffer@ is an unprotected command buffer, any resource+--     accessed by the 'Graphics.Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command /must/ not be+--     a protected resource+--+-- -   @raygenShaderBindingOffset@ /must/ be less than the size of+--     @raygenShaderBindingTableBuffer@+--+-- -   @raygenShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @missShaderBindingOffset@ /must/ be less than the size of+--     @missShaderBindingTableBuffer@+--+-- -   @missShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @hitShaderBindingOffset@ /must/ be less than the size of+--     @hitShaderBindingTableBuffer@+--+-- -   @hitShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @callableShaderBindingOffset@ /must/ be less than the size of+--     @callableShaderBindingTableBuffer@+--+-- -   @callableShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @missShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @hitShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @callableShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @missShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   @hitShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   @callableShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   Any shader group handle referenced by this call /must/ have been+--     queried from the currently bound ray tracing shader pipeline+--+-- -   This command /must/ not cause a shader call instruction to be+--     executed from a shader invocation with a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>+--     greater than the value of @maxRecursionDepth@ used to create the+--     bound ray tracing pipeline+--+-- -   If @commandBuffer@ is a protected command buffer, any resource+--     written to by the 'Graphics.Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command /must/ not be+--     an unprotected resource+--+-- -   If @commandBuffer@ is a protected command buffer, pipeline stages+--     other than the framebuffer-space and compute stages in the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point /must/ not write to any resource+--+-- -   @width@ /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--+-- -   @height@ /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--+-- -   @depth@ /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--+-- -   If the currently bound ray tracing pipeline was created with @flags@+--     that included+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     the @buffer@ member of @hitShaderBindingTable@ /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If the currently bound ray tracing pipeline was created with @flags@+--     that included+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     the @buffer@ member of @hitShaderBindingTable@ /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If the currently bound ray tracing pipeline was created with @flags@+--     that included+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--     the @buffer@ member of @hitShaderBindingTable@ /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If the currently bound ray tracing pipeline was created with @flags@+--     that included+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR',+--     the shader group handle identified by @missShaderBindingTable@+--     /must/ contain a valid miss shader+--+-- -   If the currently bound ray tracing pipeline was created with @flags@+--     that included+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     entries in @hitShaderBindingTable@ accessed as a result of this+--     command in order to execute an any hit shader /must/ not be set to+--     zero+--+-- -   If the currently bound ray tracing pipeline was created with @flags@+--     that included+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     entries in @hitShaderBindingTable@ accessed as a result of this+--     command in order to execute a closest hit shader /must/ not be set+--     to zero+--+-- -   If the currently bound ray tracing pipeline was created with @flags@+--     that included+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR',+--     entries in @hitShaderBindingTable@ accessed as a result of this+--     command in order to execute an intersection shader /must/ not be set+--     to zero+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @pMissShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @pHitShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'StridedBufferRegionKHR'+cmdTraceRaysKHR :: forall io . MonadIO io => CommandBuffer -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> io ()+cmdTraceRaysKHR commandBuffer raygenShaderBindingTable missShaderBindingTable hitShaderBindingTable callableShaderBindingTable width height depth = liftIO . evalContT $ do+  let vkCmdTraceRaysKHR' = mkVkCmdTraceRaysKHR (pVkCmdTraceRaysKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)+  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)+  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)+  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)+  lift $ vkCmdTraceRaysKHR' (commandBufferHandle (commandBuffer)) pRaygenShaderBindingTable pMissShaderBindingTable pHitShaderBindingTable pCallableShaderBindingTable (width) (height) (depth)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetRayTracingShaderGroupHandlesKHR+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result++-- | vkGetRayTracingShaderGroupHandlesKHR - Query ray tracing pipeline shader+-- group handles+--+-- = Parameters+--+-- -   @device@ is the logical device containing the ray tracing pipeline.+--+-- -   @pipeline@ is the ray tracing pipeline object containing the+--     shaders.+--+-- -   @firstGroup@ is the index of the first group to retrieve a handle+--     for from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ or+--     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pGroups@+--     array.+--+-- -   @groupCount@ is the number of shader handles to retrieve.+--+-- -   @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+--+-- -   @pData@ is a pointer to a user-allocated buffer where the results+--     will be written.+--+-- == Valid Usage+--+-- -   The sum of @firstGroup@ and @groupCount@ /must/ be less than the+--     number of shader groups in @pipeline@+--+-- -   @dataSize@ /must/ be at least+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@ ×+--     @groupCount@+--+-- -   @pipeline@ /must/ have not been created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pipeline@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- -   @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- -   @dataSize@ /must/ be greater than @0@+--+-- -   @pipeline@ /must/ have been created, allocated, or retrieved from+--     @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+getRayTracingShaderGroupHandlesKHR :: forall io . MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()+getRayTracingShaderGroupHandlesKHR device pipeline firstGroup groupCount dataSize data' = liftIO $ do+  let vkGetRayTracingShaderGroupHandlesKHR' = mkVkGetRayTracingShaderGroupHandlesKHR (pVkGetRayTracingShaderGroupHandlesKHR (deviceCmds (device :: Device)))+  r <- vkGetRayTracingShaderGroupHandlesKHR' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result++-- | vkGetRayTracingCaptureReplayShaderGroupHandlesKHR - Query ray tracing+-- capture replay pipeline shader group handles+--+-- = Parameters+--+-- -   @device@ is the logical device containing the ray tracing pipeline.+--+-- -   @pipeline@ is the ray tracing pipeline object containing the+--     shaders.+--+-- -   @firstGroup@ is the index of the first group to retrieve a handle+--     for from the 'RayTracingPipelineCreateInfoKHR'::@pGroups@ array.+--+-- -   @groupCount@ is the number of shader handles to retrieve.+--+-- -   @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+--+-- -   @pData@ is a pointer to a user-allocated buffer where the results+--     will be written.+--+-- == Valid Usage+--+-- -   The sum of @firstGroup@ and @groupCount@ /must/ be less than the+--     number of shader groups in @pipeline@+--+-- -   @dataSize@ /must/ be at least+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleCaptureReplaySize@+--     × @groupCount@+--+-- -   'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplay@+--     /must/ be enabled to call this function+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pipeline@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- -   @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- -   @dataSize@ /must/ be greater than @0@+--+-- -   @pipeline@ /must/ have been created, allocated, or retrieved from+--     @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+getRayTracingCaptureReplayShaderGroupHandlesKHR :: forall io . MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()+getRayTracingCaptureReplayShaderGroupHandlesKHR device pipeline firstGroup groupCount dataSize data' = liftIO $ do+  let vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' = mkVkGetRayTracingCaptureReplayShaderGroupHandlesKHR (pVkGetRayTracingCaptureReplayShaderGroupHandlesKHR (deviceCmds (device :: Device)))+  r <- vkGetRayTracingCaptureReplayShaderGroupHandlesKHR' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateRayTracingPipelinesKHR+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoKHR a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoKHR a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateRayTracingPipelinesKHR - Creates a new ray tracing pipeline+-- object+--+-- = Parameters+--+-- -   @device@ is the logical device that creates the ray tracing+--     pipelines.+--+-- -   @pipelineCache@ is either+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', indicating that+--     pipeline caching is disabled, or the handle of a valid+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>+--     object, in which case use of that cache is enabled for the duration+--     of the command.+--+-- -   @createInfoCount@ is the length of the @pCreateInfos@ and+--     @pPipelines@ arrays.+--+-- -   @pCreateInfos@ is a pointer to an array of+--     'RayTracingPipelineCreateInfoKHR' structures.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- -   @pPipelines@ is a pointer to an array in which the resulting ray+--     tracing pipeline objects are returned.+--+-- = Description+--+-- The+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'+-- error is returned if the implementation is unable to re-use the shader+-- group handles provided in+-- 'RayTracingShaderGroupCreateInfoKHR'::@pShaderGroupCaptureReplayHandle@+-- when+-- 'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplay@+-- is enabled.+--+-- == Valid Usage+--+-- -   If the @flags@ member of any element of @pCreateInfos@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and the @basePipelineIndex@ member of that same element is not+--     @-1@, @basePipelineIndex@ /must/ be less than the index into+--     @pCreateInfos@ that corresponds to that element+--+-- -   If the @flags@ member of any element of @pCreateInfos@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, the base pipeline /must/ have been created with the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+--     flag set+--+-- -   If @pipelineCache@ was created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   If @pipelineCache@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @pipelineCache@+--     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.PipelineCache'+--     handle+--+-- -   @pCreateInfos@ /must/ be a valid pointer to an array of+--     @createInfoCount@ valid 'RayTracingPipelineCreateInfoKHR' structures+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @pPipelines@ /must/ be a valid pointer to an array of+--     @createInfoCount@ 'Graphics.Vulkan.Core10.Handles.Pipeline' handles+--+-- -   @createInfoCount@ /must/ be greater than @0@+--+-- -   If @pipelineCache@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache',+-- 'RayTracingPipelineCreateInfoKHR'+createRayTracingPipelinesKHR :: forall a io . (PokeChain a, MonadIO io) => Device -> PipelineCache -> ("createInfos" ::: Vector (RayTracingPipelineCreateInfoKHR a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, ("pipelines" ::: Vector Pipeline))+createRayTracingPipelinesKHR device pipelineCache createInfos allocator = liftIO . evalContT $ do+  let vkCreateRayTracingPipelinesKHR' = mkVkCreateRayTracingPipelinesKHR (pVkCreateRayTracingPipelinesKHR (deviceCmds (device :: Device)))+  pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoKHR _) ((Data.Vector.length (createInfos)) * 120) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCreateInfos `plusPtr` (120 * (i)) :: Ptr (RayTracingPipelineCreateInfoKHR _)) (e) . ($ ())) (createInfos)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+  r <- lift $ vkCreateRayTracingPipelinesKHR' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+  pure $ (r, pPipelines)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdTraceRaysIndirectKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Ptr StridedBufferRegionKHR -> Buffer -> DeviceSize -> IO ()++-- | vkCmdTraceRaysIndirectKHR - Initialize an indirect ray tracing dispatch+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @pRaygenShaderBindingTable@ is the strided buffer range that holds+--     the shader binding table data for the ray generation shader stage.+--+-- -   @pMissShaderBindingTable@ is the strided buffer range that holds the+--     shader binding table data for the miss shader stage.+--+-- -   @pHitShaderBindingTable@ is the strided buffer range that holds the+--     shader binding table data for the hit shader stage.+--+-- -   @pCallableShaderBindingTable@ is the strided buffer range that holds+--     the shader binding table data for the callable shader stage.+--+-- -   @buffer@ is the buffer containing the trace ray parameters.+--+-- -   @offset@ is the byte offset into @buffer@ where parameters begin.+--+-- = Description+--+-- 'cmdTraceRaysIndirectKHR' behaves similarly to 'cmdTraceRaysKHR' except+-- that the ray trace query dimensions are read by the device from a buffer+-- during execution. The parameters of trace ray are encoded in the+-- 'TraceRaysIndirectCommandKHR' structure.+--+-- == Valid Usage+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+--     atomic operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering, as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+--     with a reduction mode of either+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering together with minmax filtering,+--     as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+--     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+--     of+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   For each set /n/ that is statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command, a descriptor set /must/ have been bound+--     to /n/ at the same pipeline bind point, with a+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+--     for set /n/, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   For each push constant that is statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command, a push constant value /must/ have been+--     set for the same pipeline bind point, with a+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+--     for push constants, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   Descriptors in each bound descriptor set, specified via+--     'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+--     /must/ be valid if they are statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command+--+-- -   A valid pipeline /must/ be bound to the pipeline bind point used by+--     this command+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command requires any dynamic state,+--     that state /must/ have been set for @commandBuffer@, and done so+--     after any previously bound pipeline with the corresponding state not+--     specified as dynamic+--+-- -   There /must/ not have been any calls to dynamic state setting+--     commands for any state not specified as dynamic in the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command, since that pipeline was+--     bound+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used to sample+--     from any 'Graphics.Vulkan.Core10.Handles.Image' with a+--     'Graphics.Vulkan.Core10.Handles.ImageView' of the type+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+--     or+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+--     in any shader stage+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+--     any shader stage+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions that includes a LOD bias or any offset values, in any+--     shader stage+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a uniform buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a storage buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   If @commandBuffer@ is an unprotected command buffer, any resource+--     accessed by the 'Graphics.Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command /must/ not be+--     a protected resource+--+-- -   @raygenShaderBindingOffset@ /must/ be less than the size of+--     @raygenShaderBindingTableBuffer@+--+-- -   @raygenShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @missShaderBindingOffset@ /must/ be less than the size of+--     @missShaderBindingTableBuffer@+--+-- -   @missShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @hitShaderBindingOffset@ /must/ be less than the size of+--     @hitShaderBindingTableBuffer@+--+-- -   @hitShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @callableShaderBindingOffset@ /must/ be less than the size of+--     @callableShaderBindingTableBuffer@+--+-- -   @callableShaderBindingOffset@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @missShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @hitShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @callableShaderBindingStride@ /must/ be a multiple of+--     'PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @missShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   @hitShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   @callableShaderBindingStride@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   Any shader group handle referenced by this call /must/ have been+--     queried from the currently bound ray tracing shader pipeline+--+-- -   This command /must/ not cause a shader call instruction to be+--     executed from a shader invocation with a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>+--     greater than the value of @maxRecursionDepth@ used to create the+--     bound ray tracing pipeline+--+-- -   If @buffer@ is non-sparse then it /must/ be bound completely and+--     contiguously to a single+--     'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   @buffer@ /must/ have been created with the+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   @offset@ /must/ be a multiple of @4@+--+-- -   @commandBuffer@ /must/ not be a protected command buffer+--+-- -   (@offset@ + @sizeof@('TraceRaysIndirectCommandKHR')) /must/ be less+--     than or equal to the size of @buffer@+--+-- -   the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirecttraceray ::rayTracingIndirectTraceRays>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pRaygenShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @pMissShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @pHitShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @pCallableShaderBindingTable@ /must/ be a valid pointer to a valid+--     'StridedBufferRegionKHR' structure+--+-- -   @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'+--     handle+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- -   Both of @buffer@, and @commandBuffer@ /must/ have been created,+--     allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'StridedBufferRegionKHR'+cmdTraceRaysIndirectKHR :: forall io . MonadIO io => CommandBuffer -> ("raygenShaderBindingTable" ::: StridedBufferRegionKHR) -> ("missShaderBindingTable" ::: StridedBufferRegionKHR) -> ("hitShaderBindingTable" ::: StridedBufferRegionKHR) -> ("callableShaderBindingTable" ::: StridedBufferRegionKHR) -> Buffer -> ("offset" ::: DeviceSize) -> io ()+cmdTraceRaysIndirectKHR commandBuffer raygenShaderBindingTable missShaderBindingTable hitShaderBindingTable callableShaderBindingTable buffer offset = liftIO . evalContT $ do+  let vkCmdTraceRaysIndirectKHR' = mkVkCmdTraceRaysIndirectKHR (pVkCmdTraceRaysIndirectKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  pRaygenShaderBindingTable <- ContT $ withCStruct (raygenShaderBindingTable)+  pMissShaderBindingTable <- ContT $ withCStruct (missShaderBindingTable)+  pHitShaderBindingTable <- ContT $ withCStruct (hitShaderBindingTable)+  pCallableShaderBindingTable <- ContT $ withCStruct (callableShaderBindingTable)+  lift $ vkCmdTraceRaysIndirectKHR' (commandBufferHandle (commandBuffer)) pRaygenShaderBindingTable pMissShaderBindingTable pHitShaderBindingTable pCallableShaderBindingTable (buffer) (offset)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetDeviceAccelerationStructureCompatibilityKHR+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureVersionKHR -> IO Result++-- | vkGetDeviceAccelerationStructureCompatibilityKHR - Check if a serialized+-- acceleration structure is compatible with the current device+--+-- = Parameters+--+-- -   @device@ is the device to check the version against.+--+-- -   @version@ points to the 'AccelerationStructureVersionKHR' version+--     information to check against the device.+--+-- = Description+--+-- This possible return values for+-- 'getDeviceAccelerationStructureCompatibilityKHR' are:+--+-- -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' is returned if an+--     acceleration structure serialized with @version@ as the version+--     information is compatible with @device@.+--+-- -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_VERSION_KHR'+--     is returned if an acceleration structure serialized with @version@+--     as the version information is not compatible with @device@.+--+-- == Valid Usage+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @version@ /must/ be a valid pointer to a valid+--     'AccelerationStructureVersionKHR' structure+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_VERSION_KHR'+--+-- = See Also+--+-- 'AccelerationStructureVersionKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getDeviceAccelerationStructureCompatibilityKHR :: forall io . MonadIO io => Device -> AccelerationStructureVersionKHR -> io ()+getDeviceAccelerationStructureCompatibilityKHR device version = liftIO . evalContT $ do+  let vkGetDeviceAccelerationStructureCompatibilityKHR' = mkVkGetDeviceAccelerationStructureCompatibilityKHR (pVkGetDeviceAccelerationStructureCompatibilityKHR (deviceCmds (device :: Device)))+  version' <- ContT $ withCStruct (version)+  r <- lift $ vkGetDeviceAccelerationStructureCompatibilityKHR' (deviceHandle (device)) version'+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr AccelerationStructureKHR -> IO Result++-- | vkCreateAccelerationStructureKHR - Create a new acceleration structure+-- object+--+-- = Parameters+--+-- -   @device@ is the logical device that creates the buffer object.+--+-- -   @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoKHR'+--     structure containing parameters affecting creation of the+--     acceleration structure.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- -   @pAccelerationStructure@ is a pointer to a+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--     in which the resulting acceleration structure object is returned.+--+-- = Description+--+-- Similar to other objects in Vulkan, the acceleration structure creation+-- merely creates an object with a specific “shape”. The type and quantity+-- of geometry that can be built into an acceleration structure is+-- determined by the parameters of 'AccelerationStructureCreateInfoKHR'.+--+-- Populating the data in the object after allocating and binding memory is+-- done with commands such as 'cmdBuildAccelerationStructureKHR',+-- 'buildAccelerationStructureKHR', 'cmdCopyAccelerationStructureKHR', and+-- 'copyAccelerationStructureKHR'.+--+-- == Valid Usage+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing rayTracing>+--     or+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>+--     feature /must/ be enabled+--+-- -   If 'AccelerationStructureCreateInfoKHR'::@deviceAddress@ is not+--     zero, the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay rayTracingAccelerationStructureCaptureReplay>+--     feature /must/ be enabled+--+-- -   If @device@ was created with multiple physical devices, then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pCreateInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureCreateInfoKHR' structure+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @pAccelerationStructure@ /must/ be a valid pointer to a+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createAccelerationStructureKHR :: forall io . MonadIO io => Device -> AccelerationStructureCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io (AccelerationStructureKHR)+createAccelerationStructureKHR device createInfo allocator = liftIO . evalContT $ do+  let vkCreateAccelerationStructureKHR' = mkVkCreateAccelerationStructureKHR (pVkCreateAccelerationStructureKHR (deviceCmds (device :: Device)))+  pCreateInfo <- ContT $ withCStruct (createInfo)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureKHR 8) free+  r <- lift $ vkCreateAccelerationStructureKHR' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pAccelerationStructure <- lift $ peek @AccelerationStructureKHR pPAccelerationStructure+  pure $ (pAccelerationStructure)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createAccelerationStructureKHR' and 'destroyAccelerationStructureKHR'+--+-- To ensure that 'destroyAccelerationStructureKHR' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withAccelerationStructureKHR :: forall io r . MonadIO io => (io (AccelerationStructureKHR) -> ((AccelerationStructureKHR) -> io ()) -> r) -> Device -> AccelerationStructureCreateInfoKHR -> Maybe AllocationCallbacks -> r+withAccelerationStructureKHR b device pCreateInfo pAllocator =+  b (createAccelerationStructureKHR device pCreateInfo pAllocator)+    (\(o0) -> destroyAccelerationStructureKHR device o0 pAllocator)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBuildAccelerationStructureKHR+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (AccelerationStructureBuildGeometryInfoKHR a) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (AccelerationStructureBuildGeometryInfoKHR a) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO ()++-- | vkCmdBuildAccelerationStructureKHR - Build an acceleration structure+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @infoCount@ is the number of acceleration structures to build. It+--     specifies the number of the @pInfos@ structures and @ppOffsetInfos@+--     pointers that /must/ be provided.+--+-- -   @pInfos@ is an array of @infoCount@+--     'AccelerationStructureBuildGeometryInfoKHR' structures defining the+--     geometry used to build each acceleration structure.+--+-- -   @ppOffsetInfos@ is an array of @infoCount@ pointers to arrays of+--     'AccelerationStructureBuildOffsetInfoKHR' structures. Each+--     @ppOffsetInfos@[i] is an array of @pInfos@[i].@geometryCount@+--     'AccelerationStructureBuildOffsetInfoKHR' structures defining+--     dynamic offsets to the addresses where geometry data is stored, as+--     defined by @pInfos@[i].+--+-- = Description+--+-- The 'cmdBuildAccelerationStructureKHR' command provides the ability to+-- initiate multiple acceleration structures builds, however there is no+-- ordering or synchronization implied between any of the individual+-- acceleration structure builds.+--+-- Note+--+-- This means that an application /cannot/ build a top-level acceleration+-- structure in the same 'cmdBuildAccelerationStructureKHR' call as the+-- associated bottom-level or instance acceleration structures are being+-- built. There also /cannot/ be any memory aliasing between any+-- acceleration structure memories or scratch memories being used by any of+-- the builds.+--+-- == Valid Usage+--+-- -   [[VUID-{refpage}-pOffsetInfos-03402]] Each element of+--     @ppOffsetInfos@[i] /must/ be a valid pointer to an array of+--     @pInfos@[i].@geometryCount@+--     'AccelerationStructureBuildOffsetInfoKHR' structures+--+-- -   [[VUID-{refpage}-pInfos-03403]] Each+--     @pInfos@[i].@srcAccelerationStructure@ /must/ not refer to the same+--     acceleration structure as any @pInfos@[i].@dstAccelerationStructure@+--     that is provided to the same build command unless it is identical+--     for an update+--+-- -   [[VUID-{refpage}-pInfos-03404]] For each @pInfos@[i],+--     @dstAccelerationStructure@ /must/ have been created with compatible+--     'AccelerationStructureCreateInfoKHR' where+--     'AccelerationStructureCreateInfoKHR'::@type@ and+--     'AccelerationStructureCreateInfoKHR'::@flags@ are identical to+--     'AccelerationStructureBuildGeometryInfoKHR'::@type@ and+--     'AccelerationStructureBuildGeometryInfoKHR'::@flags@ respectively,+--     'AccelerationStructureBuildGeometryInfoKHR'::@geometryCount@ for+--     @dstAccelerationStructure@ are greater than or equal to the build+--     size, and each geometry in+--     'AccelerationStructureBuildGeometryInfoKHR'::@ppGeometries@ for+--     @dstAccelerationStructure@ has greater than or equal to the number+--     of vertices, indices, and AABBs,+--     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ is+--     both 0 or both non-zero, and all other parameters are the same+--+-- -   [[VUID-{refpage}-pInfos-03405]] For each @pInfos@[i], if @update@ is+--     'Graphics.Vulkan.Core10.BaseType.TRUE', then objects that were+--     previously active for that acceleration structure /must/ not be made+--     inactive as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>+--+-- -   [[VUID-{refpage}-pInfos-03406]] For each @pInfos@[i], if @update@ is+--     'Graphics.Vulkan.Core10.BaseType.TRUE', then objects that were+--     previously inactive for that acceleration structure /must/ not be+--     made active as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>+--+-- -   [[VUID-{refpage}-None-03407]] Any acceleration structure instance in+--     any top level build in this command /must/ not reference any bottom+--     level acceleration structure built by this command+--+-- -   [[VUID-{refpage}-pInfos-03408]] There /must/ not be any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--     between the scratch memories that are provided in all the+--     @pInfos@[i].@scratchData@ memories for the acceleration structure+--     builds+--+-- -   [[VUID-{refpage}-None-03409]] There /must/ not be any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--     between memory bound to any top level, bottom level, or instance+--     acceleration structure accessed by this command+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.FALSE', all+--     addresses between @pInfos@[i].@scratchData@ and+--     @pInfos@[i].@scratchData@ + N - 1 /must/ be in the buffer device+--     address range of the same buffer, where N is given by the @size@+--     member of the+--     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsKHR' with+--     'AccelerationStructureMemoryRequirementsInfoKHR'::@accelerationStructure@+--     set to @pInfos@[i].@dstAccelerationStructure@ and+--     'AccelerationStructureMemoryRequirementsInfoKHR'::@type@ set to+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR'+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', all addresses+--     between @pInfos@[i].@scratchData@ and @pInfos@[i].@scratchData@ + N+--     - 1 /must/ be in the buffer device address range of the same buffer,+--     where N is given by the @size@ member of the+--     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsKHR' with+--     'AccelerationStructureMemoryRequirementsInfoKHR'::@accelerationStructure@+--     set to @pInfos@[i].@dstAccelerationStructure@ and+--     'AccelerationStructureMemoryRequirementsInfoKHR'::@type@ set to+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR'+--+-- -   The buffer from which the buffer device address+--     @pInfos@[i].@scratchData@ is queried /must/ have been created with+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_KHR'+--     usage flag+--+-- -   All 'DeviceOrHostAddressKHR' or 'DeviceOrHostAddressConstKHR'+--     referenced by this command /must/ contain valid device addresses+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to device memory+--+-- -   The+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--     structure /must/ not be included in the @pNext@ chain of any of the+--     provided 'AccelerationStructureBuildGeometryInfoKHR' structures+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pInfos@ /must/ be a valid pointer to an array of @infoCount@ valid+--     'AccelerationStructureBuildGeometryInfoKHR' structures+--+-- -   @ppOffsetInfos@ /must/ be a valid pointer to an array of @infoCount@+--     'AccelerationStructureBuildOffsetInfoKHR' structures+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- -   @infoCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureBuildOffsetInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdBuildAccelerationStructureKHR :: forall a io . (PokeChain a, MonadIO io) => CommandBuffer -> ("infos" ::: Vector (AccelerationStructureBuildGeometryInfoKHR a)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io ()+cmdBuildAccelerationStructureKHR commandBuffer infos offsetInfos = liftIO . evalContT $ do+  let vkCmdBuildAccelerationStructureKHR' = mkVkCmdBuildAccelerationStructureKHR (pVkCmdBuildAccelerationStructureKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  let pInfosLength = Data.Vector.length $ (infos)+  let ppOffsetInfosLength = Data.Vector.length $ (offsetInfos)+  lift $ unless (ppOffsetInfosLength == pInfosLength) $+    throwIO $ IOError Nothing InvalidArgument "" "ppOffsetInfos and pInfos must have the same length" Nothing Nothing+  pPInfos <- ContT $ allocaBytesAligned @(AccelerationStructureBuildGeometryInfoKHR _) ((Data.Vector.length (infos)) * 72) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (72 * (i)) :: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) (e) . ($ ())) (infos)+  pPpOffsetInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildOffsetInfoKHR) ((Data.Vector.length (offsetInfos)) * 8) 8+  Data.Vector.imapM_ (\i e -> do+    ppOffsetInfos <- ContT $ withCStruct (e)+    lift $ poke (pPpOffsetInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) ppOffsetInfos) (offsetInfos)+  lift $ vkCmdBuildAccelerationStructureKHR' (commandBufferHandle (commandBuffer)) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPpOffsetInfos)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBuildAccelerationStructureIndirectKHR+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (AccelerationStructureBuildGeometryInfoKHR a) -> Buffer -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Ptr (AccelerationStructureBuildGeometryInfoKHR a) -> Buffer -> DeviceSize -> Word32 -> IO ()++-- | vkCmdBuildAccelerationStructureIndirectKHR - Build an acceleration+-- structure with some parameters provided on the device+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @pInfo@ is a pointer to a+--     'AccelerationStructureBuildGeometryInfoKHR' structure defining the+--     geometry used to build the acceleration structure.+--+-- -   @indirectBuffer@ is the 'Graphics.Vulkan.Core10.Handles.Buffer'+--     containing @pInfo->geometryCount@+--     'AccelerationStructureBuildOffsetInfoKHR' structures defining+--     dynamic offsets to the addresses where geometry data is stored, as+--     defined by @pInfo@.+--+-- -   @indirectOffset@ is the byte offset into @indirectBuffer@ where+--     offset parameters begin.+--+-- -   @stride@ is the byte stride between successive sets of offset+--     parameters.+--+-- == Valid Usage+--+-- -   All 'DeviceOrHostAddressKHR' or 'DeviceOrHostAddressConstKHR'+--     referenced by this command /must/ contain valid device addresses+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to device memory+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-indirectasbuild ::rayTracingIndirectAccelerationStructureBuild>+--     feature /must/ be enabled+--+-- -   The+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--     structure /must/ not be included in the @pNext@ chain of any of the+--     provided 'AccelerationStructureBuildGeometryInfoKHR' structures+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureBuildGeometryInfoKHR' structure+--+-- -   @indirectBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- -   Both of @commandBuffer@, and @indirectBuffer@ /must/ have been+--     created, allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdBuildAccelerationStructureIndirectKHR :: forall a io . (PokeChain a, MonadIO io) => CommandBuffer -> AccelerationStructureBuildGeometryInfoKHR a -> ("indirectBuffer" ::: Buffer) -> ("indirectOffset" ::: DeviceSize) -> ("indirectStride" ::: Word32) -> io ()+cmdBuildAccelerationStructureIndirectKHR commandBuffer info indirectBuffer indirectOffset indirectStride = liftIO . evalContT $ do+  let vkCmdBuildAccelerationStructureIndirectKHR' = mkVkCmdBuildAccelerationStructureIndirectKHR (pVkCmdBuildAccelerationStructureIndirectKHR (deviceCmds (commandBuffer :: CommandBuffer)))+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdBuildAccelerationStructureIndirectKHR' (commandBufferHandle (commandBuffer)) pInfo (indirectBuffer) (indirectOffset) (indirectStride)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkBuildAccelerationStructureKHR+  :: FunPtr (Ptr Device_T -> Word32 -> Ptr (AccelerationStructureBuildGeometryInfoKHR a) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (AccelerationStructureBuildGeometryInfoKHR a) -> Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR) -> IO Result++-- | vkBuildAccelerationStructureKHR - Build an acceleration structure on the+-- host+--+-- = Parameters+--+-- This command fulfills the same task as+-- 'cmdBuildAccelerationStructureKHR' but executed by the host.+--+-- = Description+--+-- -   @device@ is the 'Graphics.Vulkan.Core10.Handles.Device' for which+--     the acceleration structures are being built.+--+-- -   @infoCount@ is the number of acceleration structures to build. It+--     specifies the number of the @pInfos@ structures and @ppOffsetInfos@+--     pointers that /must/ be provided.+--+-- -   @pInfos@ is a pointer to an array of @infoCount@+--     'AccelerationStructureBuildGeometryInfoKHR' structures defining the+--     geometry used to build each acceleration structure.+--+-- -   @ppOffsetInfos@ is an array of @infoCount@ pointers to arrays of+--     'AccelerationStructureBuildOffsetInfoKHR' structures. Each+--     @ppOffsetInfos@[i] is an array of @pInfos@[i].@geometryCount@+--     'AccelerationStructureBuildOffsetInfoKHR' structures defining+--     dynamic offsets to the addresses where geometry data is stored, as+--     defined by @pInfos@[i].+--+-- The 'buildAccelerationStructureKHR' command provides the ability to+-- initiate multiple acceleration structures builds, however there is no+-- ordering or synchronization implied between any of the individual+-- acceleration structure builds.+--+-- Note+--+-- This means that an application /cannot/ build a top-level acceleration+-- structure in the same 'buildAccelerationStructureKHR' call as the+-- associated bottom-level or instance acceleration structures are being+-- built. There also /cannot/ be any memory aliasing between any+-- acceleration structure memories or scratch memories being used by any of+-- the builds.+--+-- If the+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+-- structure is included in the @pNext@ chain of any+-- 'AccelerationStructureBuildGeometryInfoKHR' structure, the operation of+-- this command is /deferred/, as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>+-- chapter.+--+-- == Valid Usage+--+-- -   [[VUID-{refpage}-pOffsetInfos-03402]] Each element of+--     @ppOffsetInfos@[i] /must/ be a valid pointer to an array of+--     @pInfos@[i].@geometryCount@+--     'AccelerationStructureBuildOffsetInfoKHR' structures+--+-- -   [[VUID-{refpage}-pInfos-03403]] Each+--     @pInfos@[i].@srcAccelerationStructure@ /must/ not refer to the same+--     acceleration structure as any @pInfos@[i].@dstAccelerationStructure@+--     that is provided to the same build command unless it is identical+--     for an update+--+-- -   [[VUID-{refpage}-pInfos-03404]] For each @pInfos@[i],+--     @dstAccelerationStructure@ /must/ have been created with compatible+--     'AccelerationStructureCreateInfoKHR' where+--     'AccelerationStructureCreateInfoKHR'::@type@ and+--     'AccelerationStructureCreateInfoKHR'::@flags@ are identical to+--     'AccelerationStructureBuildGeometryInfoKHR'::@type@ and+--     'AccelerationStructureBuildGeometryInfoKHR'::@flags@ respectively,+--     'AccelerationStructureBuildGeometryInfoKHR'::@geometryCount@ for+--     @dstAccelerationStructure@ are greater than or equal to the build+--     size, and each geometry in+--     'AccelerationStructureBuildGeometryInfoKHR'::@ppGeometries@ for+--     @dstAccelerationStructure@ has greater than or equal to the number+--     of vertices, indices, and AABBs,+--     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@ is+--     both 0 or both non-zero, and all other parameters are the same+--+-- -   [[VUID-{refpage}-pInfos-03405]] For each @pInfos@[i], if @update@ is+--     'Graphics.Vulkan.Core10.BaseType.TRUE', then objects that were+--     previously active for that acceleration structure /must/ not be made+--     inactive as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>+--+-- -   [[VUID-{refpage}-pInfos-03406]] For each @pInfos@[i], if @update@ is+--     'Graphics.Vulkan.Core10.BaseType.TRUE', then objects that were+--     previously inactive for that acceleration structure /must/ not be+--     made active as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims ???>+--+-- -   [[VUID-{refpage}-None-03407]] Any acceleration structure instance in+--     any top level build in this command /must/ not reference any bottom+--     level acceleration structure built by this command+--+-- -   [[VUID-{refpage}-pInfos-03408]] There /must/ not be any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--     between the scratch memories that are provided in all the+--     @pInfos@[i].@scratchData@ memories for the acceleration structure+--     builds+--+-- -   [[VUID-{refpage}-None-03409]] There /must/ not be any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--     between memory bound to any top level, bottom level, or instance+--     acceleration structure accessed by this command+--+-- -   All 'DeviceOrHostAddressKHR' or 'DeviceOrHostAddressConstKHR'+--     referenced by this command /must/ contain valid host addresses+--+-- -   All 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     objects referenced by this command /must/ be bound to host-visible+--     memory+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-raytracing-hostascmds ::rayTracingHostAccelerationStructureCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pInfos@ /must/ be a valid pointer to an array of @infoCount@ valid+--     'AccelerationStructureBuildGeometryInfoKHR' structures+--+-- -   @ppOffsetInfos@ /must/ be a valid pointer to an array of @infoCount@+--     'AccelerationStructureBuildOffsetInfoKHR' structures+--+-- -   @infoCount@ /must/ be greater than @0@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_DEFERRED_KHR'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureBuildOffsetInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+buildAccelerationStructureKHR :: forall a io . (PokeChain a, MonadIO io) => Device -> ("infos" ::: Vector (AccelerationStructureBuildGeometryInfoKHR a)) -> ("offsetInfos" ::: Vector AccelerationStructureBuildOffsetInfoKHR) -> io (Result)+buildAccelerationStructureKHR device infos offsetInfos = liftIO . evalContT $ do+  let vkBuildAccelerationStructureKHR' = mkVkBuildAccelerationStructureKHR (pVkBuildAccelerationStructureKHR (deviceCmds (device :: Device)))+  let pInfosLength = Data.Vector.length $ (infos)+  let ppOffsetInfosLength = Data.Vector.length $ (offsetInfos)+  lift $ unless (ppOffsetInfosLength == pInfosLength) $+    throwIO $ IOError Nothing InvalidArgument "" "ppOffsetInfos and pInfos must have the same length" Nothing Nothing+  pPInfos <- ContT $ allocaBytesAligned @(AccelerationStructureBuildGeometryInfoKHR _) ((Data.Vector.length (infos)) * 72) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInfos `plusPtr` (72 * (i)) :: Ptr (AccelerationStructureBuildGeometryInfoKHR _)) (e) . ($ ())) (infos)+  pPpOffsetInfos <- ContT $ allocaBytesAligned @(Ptr AccelerationStructureBuildOffsetInfoKHR) ((Data.Vector.length (offsetInfos)) * 8) 8+  Data.Vector.imapM_ (\i e -> do+    ppOffsetInfos <- ContT $ withCStruct (e)+    lift $ poke (pPpOffsetInfos `plusPtr` (8 * (i)) :: Ptr (Ptr AccelerationStructureBuildOffsetInfoKHR)) ppOffsetInfos) (offsetInfos)+  r <- lift $ vkBuildAccelerationStructureKHR' (deviceHandle (device)) ((fromIntegral pInfosLength :: Word32)) (pPInfos) (pPpOffsetInfos)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureDeviceAddressKHR+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress) -> Ptr Device_T -> Ptr AccelerationStructureDeviceAddressInfoKHR -> IO DeviceAddress++-- | vkGetAccelerationStructureDeviceAddressKHR - Query an address of a+-- acceleration structure+--+-- = Parameters+--+-- -   @device@ is the logical device that the accelerationStructure was+--     created on.+--+-- -   @pInfo@ is a pointer to a+--     'AccelerationStructureDeviceAddressInfoKHR' structure specifying the+--     acceleration structure to retrieve an address for.+--+-- = Description+--+-- The 64-bit return value is an address of the acceleration structure,+-- which can be used for device and shader operations that involve+-- acceleration structures, such as ray traversal and acceleration+-- structure building.+--+-- If the acceleration structure was created with a non-zero value of+-- 'AccelerationStructureCreateInfoKHR'::@deviceAddress@ the return value+-- will be the same address.+--+-- == Valid Usage+--+-- -   If @device@ was created with multiple physical devices, then the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureDeviceAddressInfoKHR' structure+--+-- = See Also+--+-- 'AccelerationStructureDeviceAddressInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getAccelerationStructureDeviceAddressKHR :: forall io . MonadIO io => Device -> AccelerationStructureDeviceAddressInfoKHR -> io (DeviceAddress)+getAccelerationStructureDeviceAddressKHR device info = liftIO . evalContT $ do+  let vkGetAccelerationStructureDeviceAddressKHR' = mkVkGetAccelerationStructureDeviceAddressKHR (pVkGetAccelerationStructureDeviceAddressKHR (deviceCmds (device :: Device)))+  pInfo <- ContT $ withCStruct (info)+  r <- lift $ vkGetAccelerationStructureDeviceAddressKHR' (deviceHandle (device)) pInfo+  pure $ (r)+++-- | VkRayTracingShaderGroupCreateInfoKHR - Structure specifying shaders in a+-- shader group+--+-- == Valid Usage+--+-- -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then+--     @generalShader@ /must/ be a valid index into+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader+--     of+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',+--     or+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'+--+-- -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' then+--     @closestHitShader@, @anyHitShader@, and @intersectionShader@ /must/+--     be 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   If @type@ is+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' then+--     @intersectionShader@ /must/ be a valid index into+--     'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to a shader+--     of+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_KHR'+--+-- -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR'+--     then @intersectionShader@ /must/ be+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   @closestHitShader@ /must/ be either+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid+--     index into 'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to+--     a shader of+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_KHR'+--+-- -   @anyHitShader@ /must/ be either+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' or a valid+--     index into 'RayTracingPipelineCreateInfoKHR'::@pStages@ referring to+--     a shader of+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_KHR'+--+-- -   If+--     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplayMixed@+--     is 'Graphics.Vulkan.Core10.BaseType.FALSE' then+--     @pShaderGroupCaptureReplayHandle@ /must/ not be provided if it has+--     not been provided on a previous call to ray tracing pipeline+--     creation+--+-- -   If+--     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplayMixed@+--     is 'Graphics.Vulkan.Core10.BaseType.FALSE' then the caller /must/+--     guarantee that no ray tracing pipeline creation commands with+--     @pShaderGroupCaptureReplayHandle@ provided execute simultaneously+--     with ray tracing pipeline creation commands without+--     @pShaderGroupCaptureReplayHandle@ provided+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @type@ /must/ be a valid 'RayTracingShaderGroupTypeKHR' value+--+-- = See Also+--+-- 'RayTracingPipelineCreateInfoKHR', 'RayTracingShaderGroupTypeKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RayTracingShaderGroupCreateInfoKHR = RayTracingShaderGroupCreateInfoKHR+  { -- | @type@ is the type of hit group specified in this structure.+    type' :: RayTracingShaderGroupTypeKHR+  , -- | @generalShader@ is the index of the ray generation, miss, or callable+    -- shader from 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if+    -- the shader group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    generalShader :: Word32+  , -- | @closestHitShader@ is the optional index of the closest hit shader from+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    closestHitShader :: Word32+  , -- | @anyHitShader@ is the optional index of the any-hit shader from+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    anyHitShader :: Word32+  , -- | @intersectionShader@ is the index of the intersection shader from+    -- 'RayTracingPipelineCreateInfoKHR'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR' otherwise.+    intersectionShader :: Word32+  , -- | @pShaderGroupCaptureReplayHandle@ is an optional pointer to replay+    -- information for this shader group. Ignored if+    -- 'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingShaderGroupHandleCaptureReplay@+    -- is 'Graphics.Vulkan.Core10.BaseType.FALSE'.+    shaderGroupCaptureReplayHandle :: Ptr ()+  }+  deriving (Typeable)+deriving instance Show RayTracingShaderGroupCreateInfoKHR++instance ToCStruct RayTracingShaderGroupCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingShaderGroupCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')+    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)+    poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (shaderGroupCaptureReplayHandle)+    f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    f++instance FromCStruct RayTracingShaderGroupCreateInfoKHR where+  peekCStruct p = do+    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))+    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pShaderGroupCaptureReplayHandle <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))+    pure $ RayTracingShaderGroupCreateInfoKHR+             type' generalShader closestHitShader anyHitShader intersectionShader pShaderGroupCaptureReplayHandle++instance Storable RayTracingShaderGroupCreateInfoKHR where+  sizeOf ~_ = 48+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RayTracingShaderGroupCreateInfoKHR where+  zero = RayTracingShaderGroupCreateInfoKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkRayTracingPipelineCreateInfoKHR - Structure specifying parameters of a+-- newly created ray tracing pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- When+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+-- is specified, this pipeline defines a /pipeline library/ which /cannot/+-- be bound as a ray tracing pipeline directly. Instead, pipeline libraries+-- define common shaders and shader groups which /can/ be included in+-- future pipeline creation.+--+-- If pipeline libraries are included in @libraries@, shaders defined in+-- those libraries are treated as if they were defined as additional+-- entries in @pStages@, appended in the order they appear in the+-- @pLibraries@ array and in the @pStages@ array when those libraries were+-- defined.+--+-- When referencing shader groups in order to obtain a shader group handle,+-- groups defined in those libraries are treated as if they were defined as+-- additional entries in @pGroups@, appended in the order they appear in+-- the @pLibraries@ array and in the @pGroups@ array when those libraries+-- were defined. The shaders these groups reference are set when the+-- pipeline library is created, referencing those specified in the pipeline+-- library, not in the pipeline that includes it.+--+-- If the+-- 'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+-- structure is included in the @pNext@ chain of+-- 'RayTracingPipelineCreateInfoKHR', the operation of this pipeline+-- creation is /deferred/, as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations Deferred Host Operations>+-- chapter.+--+-- == Valid Usage+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/+--     be a valid handle to a ray tracing+--     'Graphics.Vulkan.Core10.Handles.Pipeline'+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @basePipelineIndex@ /must/ be a valid index into the calling+--     command’s @pCreateInfos@ parameter+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@+--     /must/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @basePipelineIndex@ /must/ be @-1@+--+-- -   The @stage@ member of at least one element of @pStages@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'+--+-- -   The shader code for the entry points identified by @pStages@, and+--     the rest of the state identified by this structure /must/ adhere to+--     the pipeline linking rules described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>+--     chapter+--+-- -   @layout@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+--     with all shaders specified in @pStages@+--+-- -   The number of resources in @layout@ accessible to each shader stage+--     that is used by the pipeline /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     or+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+--+-- -   @maxRecursionDepth@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxRecursionDepth@+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR',+--     @pLibraryInterface@ /must/ not be @NULL@+--+-- -   If the @libraryCount@ member of @libraries@ is greater than @0@,+--     @pLibraryInterface@ /must/ not be @NULL@+--+-- -   Each element of the @pLibraries@ member of @libraries@ /must/ have+--     been created with the value of @maxRecursionDepth@ equal to that in+--     this pipeline+--+-- -   Each element of the @pLibraries@ member of @libraries@ /must/ have+--     been created with a @layout@ that is compatible with the @layout@ in+--     this pipeline+--+-- -   Each element of the @pLibraries@ member of @libraries@ /must/ have+--     been created with values of the @maxPayloadSize@,+--     @maxAttributeSize@, and @maxCallableSize@ members of+--     @pLibraryInterface@ equal to those in this pipeline+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR',+--     for any element of @pGroups@ with a @type@ of+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the+--     @anyHitShader@ of that element /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   If @flags@ includes+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR',+--     for any element of @pGroups@ with a @type@ of+--     'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' or+--     'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR', the+--     @closestHitShader@ of that element /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_KHR'+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCulling rayTracingPrimitiveCulling>+--     feature is not enabled, @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPrimitiveCulling rayTracingPrimitiveCulling>+--     feature is not enabled, @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   If @libraries.libraryCount@ is zero, then @stageCount@ /must/ not be+--     zero+--+-- -   If @libraries.libraryCount@ is zero, then @groupCount@ /must/ not be+--     zero+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR'+--+-- -   Each @pNext@ member of any structure (including this one) in the+--     @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+--     instance of+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--     or+--     'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'+--+-- -   The @sType@ value of each struct in the @pNext@ chain /must/ be+--     unique+--+-- -   @flags@ /must/ be a valid combination of+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--     values+--+-- -   If @stageCount@ is not @0@, @pStages@ /must/ be a valid pointer to+--     an array of @stageCount@ valid+--     'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+--     structures+--+-- -   If @groupCount@ is not @0@, @pGroups@ /must/ be a valid pointer to+--     an array of @groupCount@ valid 'RayTracingShaderGroupCreateInfoKHR'+--     structures+--+-- -   @libraries@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+--     structure+--+-- -   If @pLibraryInterface@ is not @NULL@, @pLibraryInterface@ /must/ be+--     a valid pointer to a valid+--     'RayTracingPipelineInterfaceCreateInfoKHR' structure+--+-- -   @layout@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   Both of @basePipelineHandle@, and @layout@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'RayTracingPipelineInterfaceCreateInfoKHR',+-- 'RayTracingShaderGroupCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createRayTracingPipelinesKHR'+data RayTracingPipelineCreateInfoKHR (es :: [Type]) = RayTracingPipelineCreateInfoKHR+  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+    -- specifying how the pipeline will be generated.+    flags :: PipelineCreateFlags+  , -- | @pStages@ is a pointer to an array of @stageCount@+    -- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+    -- structures describing the set of the shader stages to be included in the+    -- ray tracing pipeline.+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+  , -- | @pGroups@ is a pointer to an array of @groupCount@+    -- 'RayTracingShaderGroupCreateInfoKHR' structures describing the set of+    -- the shader stages to be included in each shader group in the ray tracing+    -- pipeline.+    groups :: Vector RayTracingShaderGroupCreateInfoKHR+  , -- | @maxRecursionDepth@ is the+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>+    -- of shaders executed by this pipeline.+    maxRecursionDepth :: Word32+  , -- | @libraries@ is a+    -- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_library.PipelineLibraryCreateInfoKHR'+    -- structure defining pipeline libraries to include.+    libraries :: PipelineLibraryCreateInfoKHR+  , -- | @pLibraryInterface@ is a pointer to a+    -- 'RayTracingPipelineInterfaceCreateInfoKHR' structure defining additional+    -- information when using pipeline libraries.+    libraryInterface :: Maybe RayTracingPipelineInterfaceCreateInfoKHR+  , -- | @layout@ is the description of binding locations used by both the+    -- pipeline and descriptor sets used with the pipeline.+    layout :: PipelineLayout+  , -- | @basePipelineHandle@ is a pipeline to derive from.+    basePipelineHandle :: Pipeline+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+    -- as a pipeline to derive from.+    basePipelineIndex :: Int32+  }+  deriving (Typeable)+deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)++instance Extensible RayTracingPipelineCreateInfoKHR where+  extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR+  setNext x next = x{next = next}+  getNext RayTracingPipelineCreateInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f+    | otherwise = Nothing++instance PokeChain es => ToCStruct (RayTracingPipelineCreateInfoKHR es) where+  withCStruct x f = allocaBytesAligned 120 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingPipelineCreateInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (groups)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e) . ($ ())) (groups)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)+    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr PipelineLibraryCreateInfoKHR)) (libraries) . ($ ())+    pLibraryInterface'' <- case (libraryInterface) of+      Nothing -> pure nullPtr+      Just j -> ContT $ withCStruct (j)+    lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR))) pLibraryInterface''+    lift $ poke ((p `plusPtr` 96 :: Ptr PipelineLayout)) (layout)+    lift $ poke ((p `plusPtr` 104 :: Ptr Pipeline)) (basePipelineHandle)+    lift $ poke ((p `plusPtr` 112 :: Ptr Int32)) (basePipelineIndex)+    lift $ f+  cStructSize = 120+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoKHR ((Data.Vector.length (mempty)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr PipelineLibraryCreateInfoKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 96 :: Ptr PipelineLayout)) (zero)+    lift $ poke ((p `plusPtr` 112 :: Ptr Int32)) (zero)+    lift $ f++instance PeekChain es => FromCStruct (RayTracingPipelineCreateInfoKHR es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoKHR)))+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoKHR ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr RayTracingShaderGroupCreateInfoKHR)))+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    libraries <- peekCStruct @PipelineLibraryCreateInfoKHR ((p `plusPtr` 56 :: Ptr PipelineLibraryCreateInfoKHR))+    pLibraryInterface <- peek @(Ptr RayTracingPipelineInterfaceCreateInfoKHR) ((p `plusPtr` 88 :: Ptr (Ptr RayTracingPipelineInterfaceCreateInfoKHR)))+    pLibraryInterface' <- maybePeek (\j -> peekCStruct @RayTracingPipelineInterfaceCreateInfoKHR (j)) pLibraryInterface+    layout <- peek @PipelineLayout ((p `plusPtr` 96 :: Ptr PipelineLayout))+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 104 :: Ptr Pipeline))+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 112 :: Ptr Int32))+    pure $ RayTracingPipelineCreateInfoKHR+             next flags pStages' pGroups' maxRecursionDepth libraries pLibraryInterface' layout basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (RayTracingPipelineCreateInfoKHR es) where+  zero = RayTracingPipelineCreateInfoKHR+           ()+           zero+           mempty+           mempty+           zero+           zero+           Nothing+           zero+           zero+           zero+++-- | VkBindAccelerationStructureMemoryInfoKHR - Structure specifying+-- acceleration structure memory binding+--+-- == Valid Usage+--+-- -   @accelerationStructure@ /must/ not already be backed by a memory+--     object+--+-- -   @memoryOffset@ /must/ be less than the size of @memory@+--+-- -   @memory@ /must/ have been allocated using one of the memory types+--     allowed in the @memoryTypeBits@ member of the+--     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsKHR' with+--     @accelerationStructure@ and @type@ of+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR'+--+-- -   @memoryOffset@ /must/ be an integer multiple of the @alignment@+--     member of the+--     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsKHR' with+--     @accelerationStructure@ and @type@ of+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR'+--+-- -   The @size@ member of the+--     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsKHR' with+--     @accelerationStructure@ and @type@ of+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR' /must/+--     be less than or equal to the size of @memory@ minus @memoryOffset@+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @accelerationStructure@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @memory@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- -   If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid+--     pointer to an array of @deviceIndexCount@ @uint32_t@ values+--+-- -   Both of @accelerationStructure@, and @memory@ /must/ have been+--     created, allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'bindAccelerationStructureMemoryKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV'+data BindAccelerationStructureMemoryInfoKHR = BindAccelerationStructureMemoryInfoKHR+  { -- | @accelerationStructure@ is the acceleration structure to be attached to+    -- memory.+    accelerationStructure :: AccelerationStructureKHR+  , -- | @memory@ is a 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+    -- describing the device memory to attach.+    memory :: DeviceMemory+  , -- | @memoryOffset@ is the start offset of the region of memory that is to be+    -- bound to the acceleration structure. The number of bytes returned in the+    -- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+    -- member in @memory@, starting from @memoryOffset@ bytes, will be bound to+    -- the specified acceleration structure.+    memoryOffset :: DeviceSize+  , -- | @pDeviceIndices@ is a pointer to an array of device indices.+    deviceIndices :: Vector Word32+  }+  deriving (Typeable)+deriving instance Show BindAccelerationStructureMemoryInfoKHR++instance ToCStruct BindAccelerationStructureMemoryInfoKHR where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p BindAccelerationStructureMemoryInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))+    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceIndices)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')+    lift $ f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')+    lift $ f++instance FromCStruct BindAccelerationStructureMemoryInfoKHR where+  peekCStruct p = do+    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))+    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))+    memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+    deviceIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))+    pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    pure $ BindAccelerationStructureMemoryInfoKHR+             accelerationStructure memory memoryOffset pDeviceIndices'++instance Zero BindAccelerationStructureMemoryInfoKHR where+  zero = BindAccelerationStructureMemoryInfoKHR+           zero+           zero+           zero+           mempty+++-- | VkWriteDescriptorSetAccelerationStructureKHR - Structure specifying+-- acceleration structure descriptor info+--+-- == Valid Usage+--+-- -   @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in+--     the extended structure+--+-- -   Each acceleration structure in @pAccelerationStructures@ /must/ have+--     been created with 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR'+--+-- -   @pAccelerationStructures@ /must/ be a valid pointer to an array of+--     @accelerationStructureCount@ valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+--     handles+--+-- -   @accelerationStructureCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data WriteDescriptorSetAccelerationStructureKHR = WriteDescriptorSetAccelerationStructureKHR+  { -- | @pAccelerationStructures@ are the acceleration structures to update.+    accelerationStructures :: Vector AccelerationStructureKHR }+  deriving (Typeable)+deriving instance Show WriteDescriptorSetAccelerationStructureKHR++instance ToCStruct WriteDescriptorSetAccelerationStructureKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p WriteDescriptorSetAccelerationStructureKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))+    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (accelerationStructures)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (accelerationStructures)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureKHR ((Data.Vector.length (mempty)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureKHR) (e)) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR))) (pPAccelerationStructures')+    lift $ f++instance FromCStruct WriteDescriptorSetAccelerationStructureKHR where+  peekCStruct p = do+    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pAccelerationStructures <- peek @(Ptr AccelerationStructureKHR) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureKHR)))+    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureKHR ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureKHR)))+    pure $ WriteDescriptorSetAccelerationStructureKHR+             pAccelerationStructures'++instance Zero WriteDescriptorSetAccelerationStructureKHR where+  zero = WriteDescriptorSetAccelerationStructureKHR+           mempty+++-- | VkAccelerationStructureMemoryRequirementsInfoKHR - Structure specifying+-- acceleration to query for memory requirements+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureBuildTypeKHR',+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'AccelerationStructureMemoryRequirementsTypeKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAccelerationStructureMemoryRequirementsKHR'+data AccelerationStructureMemoryRequirementsInfoKHR = AccelerationStructureMemoryRequirementsInfoKHR+  { -- | @type@ /must/ be a valid+    -- 'AccelerationStructureMemoryRequirementsTypeKHR' value+    type' :: AccelerationStructureMemoryRequirementsTypeKHR+  , -- | @buildType@ /must/ be a valid 'AccelerationStructureBuildTypeKHR' value+    buildType :: AccelerationStructureBuildTypeKHR+  , -- | @accelerationStructure@ /must/ be a valid+    -- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+    accelerationStructure :: AccelerationStructureKHR+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureMemoryRequirementsInfoKHR++instance ToCStruct AccelerationStructureMemoryRequirementsInfoKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureMemoryRequirementsInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeKHR)) (type')+    poke ((p `plusPtr` 20 :: Ptr AccelerationStructureBuildTypeKHR)) (buildType)+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (accelerationStructure)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeKHR)) (zero)+    poke ((p `plusPtr` 20 :: Ptr AccelerationStructureBuildTypeKHR)) (zero)+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)+    f++instance FromCStruct AccelerationStructureMemoryRequirementsInfoKHR where+  peekCStruct p = do+    type' <- peek @AccelerationStructureMemoryRequirementsTypeKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeKHR))+    buildType <- peek @AccelerationStructureBuildTypeKHR ((p `plusPtr` 20 :: Ptr AccelerationStructureBuildTypeKHR))+    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR))+    pure $ AccelerationStructureMemoryRequirementsInfoKHR+             type' buildType accelerationStructure++instance Storable AccelerationStructureMemoryRequirementsInfoKHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureMemoryRequirementsInfoKHR where+  zero = AccelerationStructureMemoryRequirementsInfoKHR+           zero+           zero+           zero+++-- | VkPhysicalDeviceRayTracingFeaturesKHR - Structure describing the ray+-- tracing features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceRayTracingFeaturesKHR' structure+-- describe the following features:+--+-- = Description+--+-- -   @rayTracing@ indicates whether the implementation supports ray+--     tracing functionality. See+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing>.+--+-- -   @rayTracingShaderGroupHandleCaptureReplay@ indicates whether the+--     implementation supports saving and reusing shader group handles,+--     e.g. for trace capture and replay.+--+-- -   @rayTracingShaderGroupHandleCaptureReplayMixed@ indicates whether+--     the implementation supports reuse of shader group handles being+--     arbitrarily mixed with creation of non-reused shader group handles.+--     If this is 'Graphics.Vulkan.Core10.BaseType.FALSE', all reused+--     shader group handles /must/ be specified before any non-reused+--     handles /may/ be created.+--+-- -   @rayTracingAccelerationStructureCaptureReplay@ indicates whether the+--     implementation supports saving and reusing acceleration structure+--     device addresses, e.g. for trace capture and replay.+--+-- -   @rayTracingIndirectTraceRays@ indicates whether the implementation+--     supports indirect trace ray commands, e.g.+--     'cmdTraceRaysIndirectKHR'.+--+-- -   @rayTracingIndirectAccelerationStructureBuild@ indicates whether the+--     implementation supports indirect acceleration structure build+--     commands, e.g. 'cmdBuildAccelerationStructureIndirectKHR'.+--+-- -   @rayTracingHostAccelerationStructureCommands@ indicates whether the+--     implementation supports host side acceleration structure commands,+--     e.g. 'buildAccelerationStructureKHR',+--     'copyAccelerationStructureKHR',+--     'copyAccelerationStructureToMemoryKHR',+--     'copyMemoryToAccelerationStructureKHR',+--     'writeAccelerationStructuresPropertiesKHR'.+--+-- -   @rayQuery@ indicates whether the implementation supports ray query+--     (@OpRayQueryProceedKHR@) functionality.+--+-- -   @rayTracingPrimitiveCulling@ indicates whether the implementation+--     supports+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.+--+-- If the 'PhysicalDeviceRayTracingFeaturesKHR' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceRayTracingFeaturesKHR' /can/ also be used in the @pNext@+-- chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the+-- features.+--+-- == Valid Usage+--+-- -   If @rayTracingShaderGroupHandleCaptureReplayMixed@ is+--     'Graphics.Vulkan.Core10.BaseType.TRUE',+--     @rayTracingShaderGroupHandleCaptureReplay@ /must/ also be+--     'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingFeaturesKHR = PhysicalDeviceRayTracingFeaturesKHR+  { -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracing"+    rayTracing :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingShaderGroupHandleCaptureReplay"+    rayTracingShaderGroupHandleCaptureReplay :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingShaderGroupHandleCaptureReplayMixed"+    rayTracingShaderGroupHandleCaptureReplayMixed :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingAccelerationStructureCaptureReplay"+    rayTracingAccelerationStructureCaptureReplay :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingIndirectTraceRays"+    rayTracingIndirectTraceRays :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingIndirectAccelerationStructureBuild"+    rayTracingIndirectAccelerationStructureBuild :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingHostAccelerationStructureCommands"+    rayTracingHostAccelerationStructureCommands :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayQuery"+    rayQuery :: Bool+  , -- No documentation found for Nested "VkPhysicalDeviceRayTracingFeaturesKHR" "rayTracingPrimitiveCulling"+    rayTracingPrimitiveCulling :: Bool+  }+  deriving (Typeable)+deriving instance Show PhysicalDeviceRayTracingFeaturesKHR++instance ToCStruct PhysicalDeviceRayTracingFeaturesKHR where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayTracingFeaturesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rayTracing))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (rayTracingShaderGroupHandleCaptureReplay))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rayTracingShaderGroupHandleCaptureReplayMixed))+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (rayTracingAccelerationStructureCaptureReplay))+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (rayTracingIndirectTraceRays))+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (rayTracingIndirectAccelerationStructureBuild))+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (rayTracingHostAccelerationStructureCommands))+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (rayQuery))+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (rayTracingPrimitiveCulling))+    f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceRayTracingFeaturesKHR where+  peekCStruct p = do+    rayTracing <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    rayTracingShaderGroupHandleCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+    rayTracingShaderGroupHandleCaptureReplayMixed <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+    rayTracingAccelerationStructureCaptureReplay <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+    rayTracingIndirectTraceRays <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+    rayTracingIndirectAccelerationStructureBuild <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+    rayTracingHostAccelerationStructureCommands <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+    rayQuery <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+    rayTracingPrimitiveCulling <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+    pure $ PhysicalDeviceRayTracingFeaturesKHR+             (bool32ToBool rayTracing) (bool32ToBool rayTracingShaderGroupHandleCaptureReplay) (bool32ToBool rayTracingShaderGroupHandleCaptureReplayMixed) (bool32ToBool rayTracingAccelerationStructureCaptureReplay) (bool32ToBool rayTracingIndirectTraceRays) (bool32ToBool rayTracingIndirectAccelerationStructureBuild) (bool32ToBool rayTracingHostAccelerationStructureCommands) (bool32ToBool rayQuery) (bool32ToBool rayTracingPrimitiveCulling)++instance Storable PhysicalDeviceRayTracingFeaturesKHR where+  sizeOf ~_ = 56+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingFeaturesKHR where+  zero = PhysicalDeviceRayTracingFeaturesKHR+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkPhysicalDeviceRayTracingPropertiesKHR - Properties of the physical+-- device for ray tracing+--+-- = Description+--+-- If the 'PhysicalDeviceRayTracingPropertiesKHR' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- Limits specified by this structure /must/ match those specified with the+-- same name in+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingPropertiesKHR = PhysicalDeviceRayTracingPropertiesKHR+  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.+    shaderGroupHandleSize :: Word32+  , -- | @maxRecursionDepth@ is the maximum number of levels of recursion allowed+    -- in a trace command.+    maxRecursionDepth :: Word32+  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between+    -- shader groups in the SBT.+    maxShaderGroupStride :: Word32+  , -- | @shaderGroupBaseAlignment@ is the required alignment in bytes for the+    -- base of the SBTs.+    shaderGroupBaseAlignment :: Word32+  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom+    -- level acceleration structure.+    maxGeometryCount :: Word64+  , -- | @maxInstanceCount@ is the maximum number of instances in the top level+    -- acceleration structure.+    maxInstanceCount :: Word64+  , -- | @maxPrimitiveCount@ is the maximum number of triangles or AABBs in all+    -- geometries in the bottom level acceleration structure.+    maxPrimitiveCount :: Word64+  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of+    -- acceleration structure descriptors that are allowed in a descriptor set.+    maxDescriptorSetAccelerationStructures :: Word32+  , -- | @shaderGroupHandleCaptureReplaySize@ is the number of bytes for the+    -- information required to do capture and replay for shader group handles.+    shaderGroupHandleCaptureReplaySize :: Word32+  }+  deriving (Typeable)+deriving instance Show PhysicalDeviceRayTracingPropertiesKHR++instance ToCStruct PhysicalDeviceRayTracingPropertiesKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayTracingPropertiesKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)+    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)+    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxPrimitiveCount)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)+    poke ((p `plusPtr` 60 :: Ptr Word32)) (shaderGroupHandleCaptureReplaySize)+    f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)+    f++instance FromCStruct PhysicalDeviceRayTracingPropertiesKHR where+  peekCStruct p = do+    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))+    maxPrimitiveCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))+    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+    shaderGroupHandleCaptureReplaySize <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))+    pure $ PhysicalDeviceRayTracingPropertiesKHR+             shaderGroupHandleSize maxRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment maxGeometryCount maxInstanceCount maxPrimitiveCount maxDescriptorSetAccelerationStructures shaderGroupHandleCaptureReplaySize++instance Storable PhysicalDeviceRayTracingPropertiesKHR where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingPropertiesKHR where+  zero = PhysicalDeviceRayTracingPropertiesKHR+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkStridedBufferRegionKHR - Structure specifying a region of a VkBuffer+-- with a stride+--+-- == Valid Usage+--+-- -   If @buffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @size@ plus+--     @offset@ /must/ be less than or equal to the size of @buffer@+--+-- -   If @buffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @stride@ /must/+--     be less than the size of @buffer@+--+-- == Valid Usage (Implicit)+--+-- -   If @buffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @buffer@ /must/+--     be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'cmdTraceRaysIndirectKHR',+-- 'cmdTraceRaysKHR'+data StridedBufferRegionKHR = StridedBufferRegionKHR+  { -- | @buffer@ is the buffer containing this region.+    buffer :: Buffer+  , -- | @offset@ is the byte offset in @buffer@ at which the region starts.+    offset :: DeviceSize+  , -- | @stride@ is the byte stride between consecutive elements.+    stride :: DeviceSize+  , -- | @size@ is the size in bytes of the region starting at @offset@.+    size :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show StridedBufferRegionKHR++instance ToCStruct StridedBufferRegionKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p StridedBufferRegionKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (offset)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (stride)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (size)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct StridedBufferRegionKHR where+  peekCStruct p = do+    buffer <- peek @Buffer ((p `plusPtr` 0 :: Ptr Buffer))+    offset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+    stride <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+    size <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+    pure $ StridedBufferRegionKHR+             buffer offset stride size++instance Storable StridedBufferRegionKHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero StridedBufferRegionKHR where+  zero = StridedBufferRegionKHR+           zero+           zero+           zero+           zero+++-- | VkTraceRaysIndirectCommandKHR - Structure specifying the parameters of+-- an indirect trace ray command+--+-- = Description+--+-- The members of 'TraceRaysIndirectCommandKHR' have the same meaning as+-- the similarly named parameters of 'cmdTraceRaysKHR'.+--+-- == Valid Usage+--+-- = See Also+--+-- No cross-references are available+data TraceRaysIndirectCommandKHR = TraceRaysIndirectCommandKHR+  { -- | @width@ /must/ be less than or equal to+    -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+    width :: Word32+  , -- | @height@ /must/ be less than or equal to+    -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+    height :: Word32+  , -- | @depth@ /must/ be less than or equal to+    -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+    depth :: Word32+  }+  deriving (Typeable)+deriving instance Show TraceRaysIndirectCommandKHR++instance ToCStruct TraceRaysIndirectCommandKHR where+  withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p TraceRaysIndirectCommandKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (width)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (height)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)+    f+  cStructSize = 12+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    f++instance FromCStruct TraceRaysIndirectCommandKHR where+  peekCStruct p = do+    width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+    pure $ TraceRaysIndirectCommandKHR+             width height depth++instance Storable TraceRaysIndirectCommandKHR where+  sizeOf ~_ = 12+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero TraceRaysIndirectCommandKHR where+  zero = TraceRaysIndirectCommandKHR+           zero+           zero+           zero+++-- | VkAccelerationStructureGeometryTrianglesDataKHR - Structure specifying a+-- triangle geometry in a bottom-level acceleration structure+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @vertexFormat@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- -   @vertexData@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union+--+-- -   @indexType@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- -   If @indexData@ is not @0@, @indexData@ /must/ be a valid+--     'DeviceOrHostAddressConstKHR' union+--+-- -   If @transformData@ is not @0@, @transformData@ /must/ be a valid+--     'DeviceOrHostAddressConstKHR' union+--+-- = See Also+--+-- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryTrianglesDataKHR = AccelerationStructureGeometryTrianglesDataKHR+  { -- | @vertexFormat@ is the 'Graphics.Vulkan.Core10.Enums.Format.Format' of+    -- each vertex element.+    vertexFormat :: Format+  , -- | @vertexData@ is a device or host address to memory containing vertex+    -- data for this geometry.+    vertexData :: DeviceOrHostAddressConstKHR+  , -- | @vertexStride@ is the stride in bytes between each vertex.+    vertexStride :: DeviceSize+  , -- | @indexType@ is the 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' of+    -- each index element.+    indexType :: IndexType+  , -- | @indexData@ is the device or host address to memory containing index+    -- data for this geometry.+    indexData :: DeviceOrHostAddressConstKHR+  , -- | @transformData@ is a device or host address to memory containing an+    -- optional reference to a 'TransformMatrixKHR' structure defining a+    -- transformation that should be applied to vertices in this geometry.+    transformData :: DeviceOrHostAddressConstKHR+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureGeometryTrianglesDataKHR++instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryTrianglesDataKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (vertexFormat)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (vertexData) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (vertexStride)+    lift $ poke ((p `plusPtr` 40 :: Ptr IndexType)) (indexType)+    ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr DeviceOrHostAddressConstKHR)) (indexData) . ($ ())+    ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr DeviceOrHostAddressConstKHR)) (transformData) . ($ ())+    lift $ f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    lift $ poke ((p `plusPtr` 40 :: Ptr IndexType)) (zero)+    lift $ f++instance Zero AccelerationStructureGeometryTrianglesDataKHR where+  zero = AccelerationStructureGeometryTrianglesDataKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureGeometryAabbsDataKHR - Structure specifying+-- axis-aligned bounding box geometry in a bottom-level acceleration+-- structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureGeometryDataKHR', 'DeviceOrHostAddressConstKHR',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryAabbsDataKHR = AccelerationStructureGeometryAabbsDataKHR+  { -- | @data@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union+    data' :: DeviceOrHostAddressConstKHR+  , -- | @stride@ /must/ be a multiple of @8@+    stride :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureGeometryAabbsDataKHR++instance ToCStruct AccelerationStructureGeometryAabbsDataKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryAabbsDataKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (stride)+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    lift $ f++instance Zero AccelerationStructureGeometryAabbsDataKHR where+  zero = AccelerationStructureGeometryAabbsDataKHR+           zero+           zero+++-- | VkAccelerationStructureGeometryInstancesDataKHR - Structure specifying a+-- geometry consisting of instances of other acceleration structures+--+-- == Valid Usage+--+-- -   @data@ /must/ be aligned to @16@ bytes+--+-- -   If @arrayOfPointers@ is true, each pointer /must/ be aligned to @16@+--     bytes+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @data@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union+--+-- = See Also+--+-- 'AccelerationStructureGeometryDataKHR',+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'DeviceOrHostAddressConstKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryInstancesDataKHR = AccelerationStructureGeometryInstancesDataKHR+  { -- | @arrayOfPointers@ specifies whether @data@ is used as an array of+    -- addresses or just an array.+    arrayOfPointers :: Bool+  , -- | @data@ is either the address of an array of device or host addresses+    -- referencing individual 'AccelerationStructureInstanceKHR' structures if+    -- @arrayOfPointers@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', or the+    -- address of an array of 'AccelerationStructureInstanceKHR' structures.+    data' :: DeviceOrHostAddressConstKHR+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureGeometryInstancesDataKHR++instance ToCStruct AccelerationStructureGeometryInstancesDataKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryInstancesDataKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (arrayOfPointers))+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (data') . ($ ())+    lift $ f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ f++instance Zero AccelerationStructureGeometryInstancesDataKHR where+  zero = AccelerationStructureGeometryInstancesDataKHR+           zero+           zero+++-- | VkAccelerationStructureGeometryKHR - Structure specifying geometries to+-- be built into an acceleration structure+--+-- == Valid Usage+--+-- -   If @geometryType@ is 'GEOMETRY_TYPE_AABBS_KHR', the @aabbs@ member+--     of @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryAabbsDataKHR' structure+--+-- -   If @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', the @triangles@+--     member of @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryTrianglesDataKHR' structure+--+-- -   If @geometryType@ is 'GEOMETRY_TYPE_INSTANCES_KHR', the @instances@+--     member of @geometry@ /must/ be a valid+--     'AccelerationStructureGeometryInstancesDataKHR' structure+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @geometryType@ /must/ be a valid 'GeometryTypeKHR' value+--+-- -   @geometry@ /must/ be a valid 'AccelerationStructureGeometryDataKHR'+--     union+--+-- -   @flags@ /must/ be a valid combination of 'GeometryFlagBitsKHR'+--     values+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureGeometryDataKHR', 'GeometryFlagsKHR',+-- 'GeometryTypeKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureGeometryKHR = AccelerationStructureGeometryKHR+  { -- | @geometryType@ describes which type of geometry this+    -- 'AccelerationStructureGeometryKHR' refers to.+    geometryType :: GeometryTypeKHR+  , -- | @geometry@ is a 'AccelerationStructureGeometryDataKHR' union describing+    -- the geometry data for the relevant geometry type.+    geometry :: AccelerationStructureGeometryDataKHR+  , -- | @flags@ is a bitmask of 'GeometryFlagBitsKHR' values describing+    -- additional properties of how the geometry should be built.+    flags :: GeometryFlagsKHR+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureGeometryKHR++instance ToCStruct AccelerationStructureGeometryKHR where+  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureGeometryKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (geometry) . ($ ())+    lift $ poke ((p `plusPtr` 88 :: Ptr GeometryFlagsKHR)) (flags)+    lift $ f+  cStructSize = 96+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureGeometryDataKHR)) (zero) . ($ ())+    lift $ f++instance Zero AccelerationStructureGeometryKHR where+  zero = AccelerationStructureGeometryKHR+           zero+           zero+           zero+++-- | VkAccelerationStructureBuildGeometryInfoKHR - Structure specifying the+-- geometry data used to build an acceleration structure+--+-- = Description+--+-- Note+--+-- Elements of @ppGeometries@ are accessed as follows, based on+-- @geometryArrayOfPointers@:+--+-- > if (geometryArrayOfPointers) {+-- >     use *(ppGeometries[i]);+-- > } else {+-- >     use (*ppGeometries)[i];+-- > }+--+-- == Valid Usage+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE',+--     @srcAccelerationStructure@ /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE',+--     @srcAccelerationStructure@ /must/ have been built before with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' set in+--     'AccelerationStructureBuildGeometryInfoKHR'::@flags@+--+-- -   @scratchData@ /must/ have been created with+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_KHR'+--     usage flag+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', the+--     @srcAccelerationStructure@ and @dstAccelerationStructure@ objects+--     /must/ either be the same object or not have any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--+-- -   The @sType@ value of each struct in the @pNext@ chain /must/ be+--     unique+--+-- -   @type@ /must/ be a valid 'AccelerationStructureTypeKHR' value+--+-- -   @flags@ /must/ be a valid combination of+--     'BuildAccelerationStructureFlagBitsKHR' values+--+-- -   If @srcAccelerationStructure@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @srcAccelerationStructure@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @dstAccelerationStructure@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @scratchData@ /must/ be a valid 'DeviceOrHostAddressKHR' union+--+-- -   Both of @dstAccelerationStructure@, and @srcAccelerationStructure@+--     that are valid handles of non-ignored parameters /must/ have been+--     created, allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'AccelerationStructureGeometryKHR',+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'AccelerationStructureTypeKHR',+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'BuildAccelerationStructureFlagsKHR', 'DeviceOrHostAddressKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'buildAccelerationStructureKHR',+-- 'cmdBuildAccelerationStructureIndirectKHR',+-- 'cmdBuildAccelerationStructureKHR'+data AccelerationStructureBuildGeometryInfoKHR (es :: [Type]) = AccelerationStructureBuildGeometryInfoKHR+  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+    next :: Chain es+  , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of+    -- acceleration structure being built.+    type' :: AccelerationStructureTypeKHR+  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsKHR'+    -- specifying additional parameters of the acceleration structure.+    flags :: BuildAccelerationStructureFlagsKHR+  , -- | @update@ specifies whether to update @dstAccelerationStructure@ with the+    -- data in @srcAccelerationStructure@ or not.+    update :: Bool+  , -- | @srcAccelerationStructure@ points to an existing acceleration structure+    -- that is to be used to update the @dst@ acceleration structure when+    -- @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'.+    srcAccelerationStructure :: AccelerationStructureKHR+  , -- | @dstAccelerationStructure@ points to the target acceleration structure+    -- for the build.+    dstAccelerationStructure :: AccelerationStructureKHR+  , -- | @ppGeometries@ is either a pointer to an array of pointers to+    -- 'AccelerationStructureGeometryKHR' structures if+    -- @geometryArrayOfPointers@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', or+    -- a pointer to a pointer to an array of 'AccelerationStructureGeometryKHR'+    -- structures if it is 'Graphics.Vulkan.Core10.BaseType.FALSE'. Each+    -- element of the array describes the data used to build each acceleration+    -- structure geometry.+    geometries :: Vector AccelerationStructureGeometryKHR+  , -- | @scratchData@ is the device or host address to memory that will be used+    -- as scratch memory for the build.+    scratchData :: DeviceOrHostAddressKHR+  }+  deriving (Typeable)+deriving instance Show (Chain es) => Show (AccelerationStructureBuildGeometryInfoKHR es)++instance Extensible AccelerationStructureBuildGeometryInfoKHR where+  extensibleType = STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR+  setNext x next = x{next = next}+  getNext AccelerationStructureBuildGeometryInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends AccelerationStructureBuildGeometryInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f+    | otherwise = Nothing++instance PokeChain es => ToCStruct (AccelerationStructureBuildGeometryInfoKHR es) where+  withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureBuildGeometryInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (type')+    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (update))+    lift $ poke ((p `plusPtr` 32 :: Ptr AccelerationStructureKHR)) (srcAccelerationStructure)+    lift $ poke ((p `plusPtr` 40 :: Ptr AccelerationStructureKHR)) (dstAccelerationStructure)+    lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (FALSE)+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))+    pPpGeometries' <- ContT $ allocaBytesAligned @AccelerationStructureGeometryKHR ((Data.Vector.length (geometries)) * 96) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPpGeometries' `plusPtr` (96 * (i)) :: Ptr AccelerationStructureGeometryKHR) (e) . ($ ())) (geometries)+    ppGeometries'' <- ContT $ with (pPpGeometries')+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr AccelerationStructureGeometryKHR)))) ppGeometries''+    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressKHR)) (scratchData) . ($ ())+    lift $ f+  cStructSize = 72+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeKHR)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 40 :: Ptr AccelerationStructureKHR)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 64 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())+    lift $ f++instance es ~ '[] => Zero (AccelerationStructureBuildGeometryInfoKHR es) where+  zero = AccelerationStructureBuildGeometryInfoKHR+           ()+           zero+           zero+           zero+           zero+           zero+           mempty+           zero+++-- | VkAccelerationStructureBuildOffsetInfoKHR - Structure specifying build+-- offsets and counts for acceleration structure builds+--+-- = Description+--+-- The primitive count and primitive offset are interpreted differently+-- depending on the 'GeometryTypeKHR' used:+--+-- -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR',+--     @primitiveCount@ is the number of triangles to be built, where each+--     triangle is treated as 3 vertices.+--+--     -   If the geometry uses indices, @primitiveCount@ × 3 indices are+--         consumed from+--         'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@,+--         starting at an offset of @primitiveOffset@. The value of+--         @firstVertex@ is added to the index values before fetching+--         vertices.+--+--     -   If the geometry does not use indices, @primitiveCount@ × 3+--         vertices are consumed from+--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@,+--         starting at an offset of @primitiveOffset@ ++--         'AccelerationStructureGeometryTrianglesDataKHR'::@vertexStride@+--         × @firstVertex@.+--+--     -   A single 'TransformMatrixKHR' structure is consumed from+--         'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,+--         at an offset of @transformOffset@. This transformation matrix is+--         used by all triangles.+--+-- -   For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', @primitiveCount@+--     is the number of axis-aligned bounding boxes. @primitiveCount@+--     'AabbPositionsKHR' structures are consumed from+--     'AccelerationStructureGeometryAabbsDataKHR'::@data@, starting at an+--     offset of @primitiveOffset@.+--+-- -   For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR',+--     @primitiveCount@ is the number of acceleration structures.+--     @primitiveCount@ 'AccelerationStructureInstanceKHR' structures are+--     consumed from+--     'AccelerationStructureGeometryInstancesDataKHR'::@data@, starting at+--     an offset of @primitiveOffset@.+--+-- == Valid Usage+--+-- -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the+--     geometry uses indices, the offset @primitiveOffset@ from+--     'AccelerationStructureGeometryTrianglesDataKHR'::@indexData@ /must/+--     be a multiple of the element size of+--     'AccelerationStructureGeometryTrianglesDataKHR'::@indexType@+--+-- -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', if the+--     geometry doesn’t use indices, the offset @primitiveOffset@ from+--     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexData@ /must/+--     be a multiple of the component size of+--     'AccelerationStructureGeometryTrianglesDataKHR'::@vertexType@+--+-- -   For geometries of type 'GEOMETRY_TYPE_TRIANGLES_KHR', the offset+--     @transformOffset@ from+--     'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@+--     /must/ be a multiple of 16+--+-- -   For geometries of type 'GEOMETRY_TYPE_AABBS_KHR', the offset+--     @primitiveOffset@ from+--     'AccelerationStructureGeometryAabbsDataKHR'::@data@ /must/ be a+--     multiple of 8+--+-- -   For geometries of type 'GEOMETRY_TYPE_INSTANCES_KHR', the offset+--     @primitiveOffset@ from+--     'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be a+--     multiple of 16 \/\/ TODO - Almost certainly should be more here+--+-- = See Also+--+-- 'buildAccelerationStructureKHR', 'cmdBuildAccelerationStructureKHR'+data AccelerationStructureBuildOffsetInfoKHR = AccelerationStructureBuildOffsetInfoKHR+  { -- | @primitiveCount@ defines the number of primitives for a corresponding+    -- acceleration structure geometry.+    primitiveCount :: Word32+  , -- | @primitiveOffset@ defines an offset in bytes into the memory where+    -- primitive data is defined.+    primitiveOffset :: Word32+  , -- | @firstVertex@ is the index of the first vertex to build from for+    -- triangle geometry.+    firstVertex :: Word32+  , -- | @transformOffset@ defines an offset in bytes into the memory where a+    -- transform matrix is defined.+    transformOffset :: Word32+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureBuildOffsetInfoKHR++instance ToCStruct AccelerationStructureBuildOffsetInfoKHR where+  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureBuildOffsetInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (primitiveCount)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (primitiveOffset)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (transformOffset)+    f+  cStructSize = 16+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+    f++instance FromCStruct AccelerationStructureBuildOffsetInfoKHR where+  peekCStruct p = do+    primitiveCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    primitiveOffset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+    firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+    transformOffset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+    pure $ AccelerationStructureBuildOffsetInfoKHR+             primitiveCount primitiveOffset firstVertex transformOffset++instance Storable AccelerationStructureBuildOffsetInfoKHR where+  sizeOf ~_ = 16+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureBuildOffsetInfoKHR where+  zero = AccelerationStructureBuildOffsetInfoKHR+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureCreateGeometryTypeInfoKHR - Structure specifying+-- the shape of geometries that will be built into an acceleration+-- structure+--+-- = Description+--+-- When @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR':+--+-- -   if @indexType@ is+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then+--     this structure describes a set of triangles.+--+-- -   if @indexType@ is not+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR', then+--     this structure describes a set of indexed triangles.+--+-- == Valid Usage+--+-- -   If @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', @vertexFormat@+--     /must/ support the+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'+--     in+--     'Graphics.Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@+--     as returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+--+-- -   If @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR', @indexType@+--     /must/ be+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @geometryType@ /must/ be a valid 'GeometryTypeKHR' value+--+-- -   @indexType@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- -   If @vertexFormat@ is not @0@, @vertexFormat@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', 'GeometryTypeKHR',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AccelerationStructureCreateGeometryTypeInfoKHR = AccelerationStructureCreateGeometryTypeInfoKHR+  { -- | @geometryType@ is a 'GeometryTypeKHR' that describes the type of an+    -- acceleration structure geometry.+    geometryType :: GeometryTypeKHR+  , -- | @maxPrimitiveCount@ describes the maximum number of primitives that+    -- /can/ be built into an acceleration structure geometry.+    maxPrimitiveCount :: Word32+  , -- | @indexType@ is a 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' that+    -- describes the index type used to build this geometry when @geometryType@+    -- is 'GEOMETRY_TYPE_TRIANGLES_KHR'.+    indexType :: IndexType+  , -- | @maxVertexCount@ describes the maximum vertex count that /can/ be used+    -- to build an acceleration structure geometry when @geometryType@ is+    -- 'GEOMETRY_TYPE_TRIANGLES_KHR'.+    maxVertexCount :: Word32+  , -- | @vertexFormat@ is a 'Graphics.Vulkan.Core10.Enums.Format.Format' that+    -- describes the vertex format used to build this geometry when+    -- @geometryType@ is 'GEOMETRY_TYPE_TRIANGLES_KHR'.+    vertexFormat :: Format+  , -- | @allowsTransforms@ indicates whether transform data /can/ be used by+    -- this acceleration structure or not, when @geometryType@ is+    -- 'GEOMETRY_TYPE_TRIANGLES_KHR'.+    allowsTransforms :: Bool+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureCreateGeometryTypeInfoKHR++instance ToCStruct AccelerationStructureCreateGeometryTypeInfoKHR where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureCreateGeometryTypeInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPrimitiveCount)+    poke ((p `plusPtr` 24 :: Ptr IndexType)) (indexType)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxVertexCount)+    poke ((p `plusPtr` 32 :: Ptr Format)) (vertexFormat)+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (allowsTransforms))+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr IndexType)) (zero)+    f++instance FromCStruct AccelerationStructureCreateGeometryTypeInfoKHR where+  peekCStruct p = do+    geometryType <- peek @GeometryTypeKHR ((p `plusPtr` 16 :: Ptr GeometryTypeKHR))+    maxPrimitiveCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    indexType <- peek @IndexType ((p `plusPtr` 24 :: Ptr IndexType))+    maxVertexCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    vertexFormat <- peek @Format ((p `plusPtr` 32 :: Ptr Format))+    allowsTransforms <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+    pure $ AccelerationStructureCreateGeometryTypeInfoKHR+             geometryType maxPrimitiveCount indexType maxVertexCount vertexFormat (bool32ToBool allowsTransforms)++instance Storable AccelerationStructureCreateGeometryTypeInfoKHR where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureCreateGeometryTypeInfoKHR where+  zero = AccelerationStructureCreateGeometryTypeInfoKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureCreateInfoKHR - Structure specifying the+-- parameters of a newly created acceleration structure object+--+-- = Description+--+-- If @deviceAddress@ is zero, no specific address is requested.+--+-- If @deviceAddress@ is not zero, @deviceAddress@ /must/ be an address+-- retrieved from an identically created acceleration structure on the same+-- implementation. The acceleration structure /must/ also be bound to an+-- identically created 'Graphics.Vulkan.Core10.Handles.DeviceMemory'+-- object.+--+-- Apps /should/ avoid creating acceleration structures with app-provided+-- addresses and implementation-provided addresses in the same process, to+-- reduce the likelihood of+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+-- errors.+--+-- == Valid Usage+--+-- -   If @compactedSize@ is not @0@ then @maxGeometryCount@ /must/ be @0@+--+-- -   If @compactedSize@ is @0@ then @maxGeometryCount@ /must/ not be @0@+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then+--     @maxGeometryCount@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxGeometryCount@+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' then the+--     @maxPrimitiveCount@ member of each element of the @pGeometryInfos@+--     array /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxInstanceCount@+--+-- -   The total number of triangles in all geometries /must/ be less than+--     or equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxPrimitiveCount@+--+-- -   The total number of AABBs in all geometries /must/ be less than or+--     equal to+--     'PhysicalDeviceRayTracingPropertiesKHR'::@maxPrimitiveCount@+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' and+--     @compactedSize@ is @0@, @maxGeometryCount@ /must/ be @1@+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' and+--     @compactedSize@ is @0@, the @geometryType@ member of elements of+--     @pGeometryInfos@ /must/ be 'GEOMETRY_TYPE_INSTANCES_KHR'+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' and+--     @compactedSize@ is @0@, the @geometryType@ member of elements of+--     @pGeometryInfos@ /must/ not be 'GEOMETRY_TYPE_INSTANCES_KHR'+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' then the+--     @geometryType@ member of each geometry in @pGeometryInfos@ /must/ be+--     the same+--+-- -   If @flags@ has the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' bit set,+--     then it /must/ not have the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' bit set+--+-- -   If @deviceAddress@ is not @0@,+--     'PhysicalDeviceRayTracingFeaturesKHR'::@rayTracingAccelerationStructureCaptureReplay@+--     /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @type@ /must/ be a valid 'AccelerationStructureTypeKHR' value+--+-- -   @flags@ /must/ be a valid combination of+--     'BuildAccelerationStructureFlagBitsKHR' values+--+-- -   If @maxGeometryCount@ is not @0@, @pGeometryInfos@ /must/ be a valid+--     pointer to an array of @maxGeometryCount@ valid+--     'AccelerationStructureCreateGeometryTypeInfoKHR' structures+--+-- = See Also+--+-- 'AccelerationStructureCreateGeometryTypeInfoKHR',+-- 'AccelerationStructureTypeKHR', 'BuildAccelerationStructureFlagsKHR',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceAddress',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createAccelerationStructureKHR'+data AccelerationStructureCreateInfoKHR = AccelerationStructureCreateInfoKHR+  { -- | @compactedSize@ is the size from the result of+    -- 'cmdWriteAccelerationStructuresPropertiesKHR' if this acceleration+    -- structure is going to be the target of a compacting copy.+    compactedSize :: DeviceSize+  , -- | @type@ is a 'AccelerationStructureTypeKHR' value specifying the type of+    -- acceleration structure that will be created.+    type' :: AccelerationStructureTypeKHR+  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsKHR'+    -- specifying additional parameters of the acceleration structure.+    flags :: BuildAccelerationStructureFlagsKHR+  , -- | @pGeometryInfos@ is an array of @maxGeometryCount@+    -- 'AccelerationStructureCreateGeometryTypeInfoKHR' structures, which+    -- describe the maximum size and format of the data that will be built into+    -- the acceleration structure.+    geometryInfos :: Vector AccelerationStructureCreateGeometryTypeInfoKHR+  , -- | @deviceAddress@ is the device address requested for the acceleration+    -- structure if the+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-raytracing-ascapturereplay rayTracingAccelerationStructureCaptureReplay>+    -- feature is being used.+    deviceAddress :: DeviceAddress+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureCreateInfoKHR++instance ToCStruct AccelerationStructureCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureCreateInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureTypeKHR)) (type')+    lift $ poke ((p `plusPtr` 28 :: Ptr BuildAccelerationStructureFlagsKHR)) (flags)+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometryInfos)) :: Word32))+    pPGeometryInfos' <- ContT $ allocaBytesAligned @AccelerationStructureCreateGeometryTypeInfoKHR ((Data.Vector.length (geometryInfos)) * 40) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometryInfos' `plusPtr` (40 * (i)) :: Ptr AccelerationStructureCreateGeometryTypeInfoKHR) (e) . ($ ())) (geometryInfos)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr AccelerationStructureCreateGeometryTypeInfoKHR))) (pPGeometryInfos')+    lift $ poke ((p `plusPtr` 48 :: Ptr DeviceAddress)) (deviceAddress)+    lift $ f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureTypeKHR)) (zero)+    pPGeometryInfos' <- ContT $ allocaBytesAligned @AccelerationStructureCreateGeometryTypeInfoKHR ((Data.Vector.length (mempty)) * 40) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometryInfos' `plusPtr` (40 * (i)) :: Ptr AccelerationStructureCreateGeometryTypeInfoKHR) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr AccelerationStructureCreateGeometryTypeInfoKHR))) (pPGeometryInfos')+    lift $ f++instance FromCStruct AccelerationStructureCreateInfoKHR where+  peekCStruct p = do+    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+    type' <- peek @AccelerationStructureTypeKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureTypeKHR))+    flags <- peek @BuildAccelerationStructureFlagsKHR ((p `plusPtr` 28 :: Ptr BuildAccelerationStructureFlagsKHR))+    maxGeometryCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pGeometryInfos <- peek @(Ptr AccelerationStructureCreateGeometryTypeInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr AccelerationStructureCreateGeometryTypeInfoKHR)))+    pGeometryInfos' <- generateM (fromIntegral maxGeometryCount) (\i -> peekCStruct @AccelerationStructureCreateGeometryTypeInfoKHR ((pGeometryInfos `advancePtrBytes` (40 * (i)) :: Ptr AccelerationStructureCreateGeometryTypeInfoKHR)))+    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 48 :: Ptr DeviceAddress))+    pure $ AccelerationStructureCreateInfoKHR+             compactedSize type' flags pGeometryInfos' deviceAddress++instance Zero AccelerationStructureCreateInfoKHR where+  zero = AccelerationStructureCreateInfoKHR+           zero+           zero+           zero+           mempty+           zero+++-- | VkAabbPositionsKHR - Structure specifying two opposing corners of an+-- axis-aligned bounding box+--+-- == Valid Usage+--+-- = See Also+--+-- No cross-references are available+data AabbPositionsKHR = AabbPositionsKHR+  { -- | @minX@ /must/ be less than or equal to @maxX@+    minX :: Float+  , -- | @minY@ /must/ be less than or equal to @maxY@+    minY :: Float+  , -- | @minZ@ /must/ be less than or equal to @maxZ@+    minZ :: Float+  , -- | @maxX@ is the x position of the other opposing corner of a bounding box.+    maxX :: Float+  , -- | @maxY@ is the y position of the other opposing corner of a bounding box.+    maxY :: Float+  , -- | @maxZ@ is the z position of the other opposing corner of a bounding box.+    maxZ :: Float+  }+  deriving (Typeable)+deriving instance Show AabbPositionsKHR++instance ToCStruct AabbPositionsKHR where+  withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AabbPositionsKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (minX))+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (minY))+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (minZ))+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (maxX))+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (maxY))+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxZ))+    f+  cStructSize = 24+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))+    poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))+    f++instance FromCStruct AabbPositionsKHR where+  peekCStruct p = do+    minX <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+    minY <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+    minZ <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))+    maxX <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))+    maxY <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))+    maxZ <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))+    pure $ AabbPositionsKHR+             ((\(CFloat a) -> a) minX) ((\(CFloat a) -> a) minY) ((\(CFloat a) -> a) minZ) ((\(CFloat a) -> a) maxX) ((\(CFloat a) -> a) maxY) ((\(CFloat a) -> a) maxZ)++instance Storable AabbPositionsKHR where+  sizeOf ~_ = 24+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AabbPositionsKHR where+  zero = AabbPositionsKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkTransformMatrixKHR - Structure specifying a 3x4 affine transformation+-- matrix+--+-- = See Also+--+-- 'AccelerationStructureInstanceKHR'+data TransformMatrixKHR = TransformMatrixKHR+  { -- | @matrix@ is a 3x4 row-major affine transformation matrix.+    matrix :: ((Float, Float, Float, Float), (Float, Float, Float, Float), (Float, Float, Float, Float)) }+  deriving (Typeable)+deriving instance Show TransformMatrixKHR++instance ToCStruct TransformMatrixKHR where+  withCStruct x f = allocaBytesAligned 48 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p TransformMatrixKHR{..} f = do+    let pMatrix' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 3 (FixedArray 4 CFloat))))+    case (matrix) of+      (e0, e1, e2) -> do+        let pMatrix0 = lowerArrayPtr (pMatrix' :: Ptr (FixedArray 4 CFloat))+        case (e0) of+          (e0', e1', e2', e3) -> do+            poke (pMatrix0 :: Ptr CFloat) (CFloat (e0'))+            poke (pMatrix0 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))+            poke (pMatrix0 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))+            poke (pMatrix0 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+        let pMatrix1 = lowerArrayPtr (pMatrix' `plusPtr` 16 :: Ptr (FixedArray 4 CFloat))+        case (e1) of+          (e0', e1', e2', e3) -> do+            poke (pMatrix1 :: Ptr CFloat) (CFloat (e0'))+            poke (pMatrix1 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))+            poke (pMatrix1 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))+            poke (pMatrix1 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+        let pMatrix2 = lowerArrayPtr (pMatrix' `plusPtr` 32 :: Ptr (FixedArray 4 CFloat))+        case (e2) of+          (e0', e1', e2', e3) -> do+            poke (pMatrix2 :: Ptr CFloat) (CFloat (e0'))+            poke (pMatrix2 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))+            poke (pMatrix2 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))+            poke (pMatrix2 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+        pure $ ()+    f+  cStructSize = 48+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    let pMatrix' = lowerArrayPtr ((p `plusPtr` 0 :: Ptr (FixedArray 3 (FixedArray 4 CFloat))))+    case (((zero, zero, zero, zero), (zero, zero, zero, zero), (zero, zero, zero, zero))) of+      (e0, e1, e2) -> do+        let pMatrix0 = lowerArrayPtr (pMatrix' :: Ptr (FixedArray 4 CFloat))+        case (e0) of+          (e0', e1', e2', e3) -> do+            poke (pMatrix0 :: Ptr CFloat) (CFloat (e0'))+            poke (pMatrix0 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))+            poke (pMatrix0 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))+            poke (pMatrix0 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+        let pMatrix1 = lowerArrayPtr (pMatrix' `plusPtr` 16 :: Ptr (FixedArray 4 CFloat))+        case (e1) of+          (e0', e1', e2', e3) -> do+            poke (pMatrix1 :: Ptr CFloat) (CFloat (e0'))+            poke (pMatrix1 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))+            poke (pMatrix1 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))+            poke (pMatrix1 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+        let pMatrix2 = lowerArrayPtr (pMatrix' `plusPtr` 32 :: Ptr (FixedArray 4 CFloat))+        case (e2) of+          (e0', e1', e2', e3) -> do+            poke (pMatrix2 :: Ptr CFloat) (CFloat (e0'))+            poke (pMatrix2 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1'))+            poke (pMatrix2 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2'))+            poke (pMatrix2 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+        pure $ ()+    f++instance FromCStruct TransformMatrixKHR where+  peekCStruct p = do+    let pmatrix = lowerArrayPtr @(FixedArray 4 CFloat) ((p `plusPtr` 0 :: Ptr (FixedArray 3 (FixedArray 4 CFloat))))+    let pmatrix0 = lowerArrayPtr @CFloat ((pmatrix `advancePtrBytes` 0 :: Ptr (FixedArray 4 CFloat)))+    matrix00 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 0 :: Ptr CFloat))+    matrix01 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 4 :: Ptr CFloat))+    matrix02 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 8 :: Ptr CFloat))+    matrix03 <- peek @CFloat ((pmatrix0 `advancePtrBytes` 12 :: Ptr CFloat))+    let pmatrix1 = lowerArrayPtr @CFloat ((pmatrix `advancePtrBytes` 16 :: Ptr (FixedArray 4 CFloat)))+    matrix10 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 0 :: Ptr CFloat))+    matrix11 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 4 :: Ptr CFloat))+    matrix12 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 8 :: Ptr CFloat))+    matrix13 <- peek @CFloat ((pmatrix1 `advancePtrBytes` 12 :: Ptr CFloat))+    let pmatrix2 = lowerArrayPtr @CFloat ((pmatrix `advancePtrBytes` 32 :: Ptr (FixedArray 4 CFloat)))+    matrix20 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 0 :: Ptr CFloat))+    matrix21 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 4 :: Ptr CFloat))+    matrix22 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 8 :: Ptr CFloat))+    matrix23 <- peek @CFloat ((pmatrix2 `advancePtrBytes` 12 :: Ptr CFloat))+    pure $ TransformMatrixKHR+             ((((((\(CFloat a) -> a) matrix00), ((\(CFloat a) -> a) matrix01), ((\(CFloat a) -> a) matrix02), ((\(CFloat a) -> a) matrix03))), ((((\(CFloat a) -> a) matrix10), ((\(CFloat a) -> a) matrix11), ((\(CFloat a) -> a) matrix12), ((\(CFloat a) -> a) matrix13))), ((((\(CFloat a) -> a) matrix20), ((\(CFloat a) -> a) matrix21), ((\(CFloat a) -> a) matrix22), ((\(CFloat a) -> a) matrix23)))))++instance Storable TransformMatrixKHR where+  sizeOf ~_ = 48+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero TransformMatrixKHR where+  zero = TransformMatrixKHR+           ((zero, zero, zero, zero), (zero, zero, zero, zero), (zero, zero, zero, zero))+++-- | VkAccelerationStructureInstanceKHR - Structure specifying a single+-- acceleration structure instance for building into an acceleration+-- structure geometry+--+-- = Description+--+-- The C language spec does not define the ordering of bit-fields, but in+-- practice, this struct produces the correct layout with existing+-- compilers. The intended bit pattern is for the following:+--+-- If a compiler produces code that diverges from that pattern,+-- applications /must/ employ another method to set values according to the+-- correct bit pattern.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'GeometryInstanceFlagsKHR', 'TransformMatrixKHR'+data AccelerationStructureInstanceKHR = AccelerationStructureInstanceKHR+  { -- | @transform@ is a 'TransformMatrixKHR' structure describing a+    -- transformation to be applied to the acceleration structure.+    transform :: TransformMatrixKHR+  , -- | @instanceCustomIndex@ and @mask@ occupy the same memory as if a single+    -- @int32_t@ was specified in their place+    --+    -- -   @instanceCustomIndex@ occupies the 24 least significant bits of that+    --     memory+    --+    -- -   @mask@ occupies the 8 most significant bits of that memory+    instanceCustomIndex :: Word32+  , -- | @mask@ is an 8-bit visibility mask for the geometry. The instance /may/+    -- only be hit if @rayMask & instance.mask != 0@+    mask :: Word32+  , -- | @instanceShaderBindingTableRecordOffset@ and @flags@ occupy the same+    -- memory as if a single @int32_t@ was specified in their place+    --+    -- -   @instanceShaderBindingTableRecordOffset@ occupies the 24 least+    --     significant bits of that memory+    --+    -- -   @flags@ occupies the 8 most significant bits of that memory+    instanceShaderBindingTableRecordOffset :: Word32+  , -- | @flags@ /must/ be a valid combination of 'GeometryInstanceFlagBitsKHR'+    -- values+    flags :: GeometryInstanceFlagsKHR+  , -- | @accelerationStructureReference@ is either:+    --+    -- -   a device address containing the value obtained from+    --     'getAccelerationStructureDeviceAddressKHR' or+    --     'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+    --     (used by device operations which reference acceleration structures)+    --     or,+    --+    -- -   a 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR'+    --     object (used by host operations which reference acceleration+    --     structures).+    accelerationStructureReference :: Word64+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureInstanceKHR++instance ToCStruct AccelerationStructureInstanceKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureInstanceKHR{..} f = evalContT $ do+    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (transform) . ($ ())+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (((coerce @_ @Word32 (mask)) `shiftL` 24) .|. (instanceCustomIndex))+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (((coerce @_ @Word32 (flags)) `shiftL` 24) .|. (instanceShaderBindingTableRecordOffset))+    lift $ poke ((p `plusPtr` 56 :: Ptr Word64)) (accelerationStructureReference)+    lift $ f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr TransformMatrixKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 56 :: Ptr Word64)) (zero)+    lift $ f++instance FromCStruct AccelerationStructureInstanceKHR where+  peekCStruct p = do+    transform <- peekCStruct @TransformMatrixKHR ((p `plusPtr` 0 :: Ptr TransformMatrixKHR))+    instanceCustomIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    let instanceCustomIndex' = ((instanceCustomIndex .&. coerce @Word32 0xffffff))+    mask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    let mask' = ((((mask `shiftR` 24)) .&. coerce @Word32 0xff))+    instanceShaderBindingTableRecordOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+    let instanceShaderBindingTableRecordOffset' = ((instanceShaderBindingTableRecordOffset .&. coerce @Word32 0xffffff))+    flags <- peek @GeometryInstanceFlagsKHR ((p `plusPtr` 52 :: Ptr GeometryInstanceFlagsKHR))+    let flags' = ((((flags `shiftR` 24)) .&. coerce @Word32 0xff))+    accelerationStructureReference <- peek @Word64 ((p `plusPtr` 56 :: Ptr Word64))+    pure $ AccelerationStructureInstanceKHR+             transform instanceCustomIndex' mask' instanceShaderBindingTableRecordOffset' flags' accelerationStructureReference++instance Zero AccelerationStructureInstanceKHR where+  zero = AccelerationStructureInstanceKHR+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkAccelerationStructureDeviceAddressInfoKHR - Structure specifying the+-- acceleration structure to query an address for+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAccelerationStructureDeviceAddressKHR'+data AccelerationStructureDeviceAddressInfoKHR = AccelerationStructureDeviceAddressInfoKHR+  { -- | @accelerationStructure@ /must/ be a valid+    -- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+    accelerationStructure :: AccelerationStructureKHR }+  deriving (Typeable)+deriving instance Show AccelerationStructureDeviceAddressInfoKHR++instance ToCStruct AccelerationStructureDeviceAddressInfoKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureDeviceAddressInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (accelerationStructure)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)+    f++instance FromCStruct AccelerationStructureDeviceAddressInfoKHR where+  peekCStruct p = do+    accelerationStructure <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))+    pure $ AccelerationStructureDeviceAddressInfoKHR+             accelerationStructure++instance Storable AccelerationStructureDeviceAddressInfoKHR where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureDeviceAddressInfoKHR where+  zero = AccelerationStructureDeviceAddressInfoKHR+           zero+++-- | VkAccelerationStructureVersionKHR - Acceleration structure version+-- information+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDeviceAccelerationStructureCompatibilityKHR'+data AccelerationStructureVersionKHR = AccelerationStructureVersionKHR+  { -- | @versionData@ /must/ be a valid pointer to an array of @2@*VK_UUID_SIZE+    -- @uint8_t@ values+    versionData :: ByteString }+  deriving (Typeable)+deriving instance Show AccelerationStructureVersionKHR++instance ToCStruct AccelerationStructureVersionKHR where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureVersionKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ unless (Data.ByteString.length (versionData) == 2 * UUID_SIZE) $+      throwIO $ IOError Nothing InvalidArgument "" "AccelerationStructureVersionKHR::versionData must be 2*VK_UUID_SIZE bytes" Nothing Nothing+    versionData'' <- fmap (castPtr @CChar @Word8) . ContT $ unsafeUseAsCString (versionData)+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Word8))) versionData''+    lift $ f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    f++instance FromCStruct AccelerationStructureVersionKHR where+  peekCStruct p = do+    versionData <- peek @(Ptr Word8) ((p `plusPtr` 16 :: Ptr (Ptr Word8)))+    versionData' <- packCStringLen (castPtr @Word8 @CChar versionData, 2 * UUID_SIZE)+    pure $ AccelerationStructureVersionKHR+             versionData'++instance Zero AccelerationStructureVersionKHR where+  zero = AccelerationStructureVersionKHR+           mempty+++-- | VkCopyAccelerationStructureInfoKHR - Parameters for copying an+-- acceleration structure+--+-- == Valid Usage+--+-- -   [[VUID-{refpage}-mode-03410]] @mode@ /must/ be+--     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' or+--     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'+--+-- -   [[VUID-{refpage}-src-03411]] @src@ /must/ have been built with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' if @mode@ is+--     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--+-- -   The @sType@ value of each struct in the @pNext@ chain /must/ be+--     unique+--+-- -   @src@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @dst@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value+--+-- -   Both of @dst@, and @src@ /must/ have been created, allocated, or+--     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'CopyAccelerationStructureModeKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdCopyAccelerationStructureKHR', 'copyAccelerationStructureKHR'+data CopyAccelerationStructureInfoKHR (es :: [Type]) = CopyAccelerationStructureInfoKHR+  { -- No documentation found for Nested "VkCopyAccelerationStructureInfoKHR" "pNext"+    next :: Chain es+  , -- | @src@ is the source acceleration structure for the copy.+    src :: AccelerationStructureKHR+  , -- | @dst@ is the target acceleration structure for the copy.+    dst :: AccelerationStructureKHR+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies+    -- additional operations to perform during the copy.+    mode :: CopyAccelerationStructureModeKHR+  }+  deriving (Typeable)+deriving instance Show (Chain es) => Show (CopyAccelerationStructureInfoKHR es)++instance Extensible CopyAccelerationStructureInfoKHR where+  extensibleType = STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR+  setNext x next = x{next = next}+  getNext CopyAccelerationStructureInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CopyAccelerationStructureInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f+    | otherwise = Nothing++instance PokeChain es => ToCStruct (CopyAccelerationStructureInfoKHR es) where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p CopyAccelerationStructureInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)+    lift $ f++instance PeekChain es => FromCStruct (CopyAccelerationStructureInfoKHR es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    src <- peek @AccelerationStructureKHR ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR))+    dst <- peek @AccelerationStructureKHR ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR))+    mode <- peek @CopyAccelerationStructureModeKHR ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR))+    pure $ CopyAccelerationStructureInfoKHR+             next src dst mode++instance es ~ '[] => Zero (CopyAccelerationStructureInfoKHR es) where+  zero = CopyAccelerationStructureInfoKHR+           ()+           zero+           zero+           zero+++-- | VkCopyAccelerationStructureToMemoryInfoKHR - Parameters for serializing+-- an acceleration structure+--+-- == Valid Usage+--+-- -   The memory pointed to by @dst@ /must/ be at least as large as the+--     serialization size of @src@, as reported by+--     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'+--+-- -   [[VUID-{refpage}-mode-03412]] @mode@ /must/ be+--     'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--+-- -   The @sType@ value of each struct in the @pNext@ chain /must/ be+--     unique+--+-- -   @src@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @dst@ /must/ be a valid 'DeviceOrHostAddressKHR' union+--+-- -   @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdCopyAccelerationStructureToMemoryKHR',+-- 'copyAccelerationStructureToMemoryKHR'+data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type]) = CopyAccelerationStructureToMemoryInfoKHR+  { -- No documentation found for Nested "VkCopyAccelerationStructureToMemoryInfoKHR" "pNext"+    next :: Chain es+  , -- | @src@ is the source acceleration structure for the copy+    src :: AccelerationStructureKHR+  , -- | @dst@ is the device or host address to memory which is the target for+    -- the copy+    dst :: DeviceOrHostAddressKHR+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies+    -- additional operations to perform during the copy.+    mode :: CopyAccelerationStructureModeKHR+  }+  deriving (Typeable)+deriving instance Show (Chain es) => Show (CopyAccelerationStructureToMemoryInfoKHR es)++instance Extensible CopyAccelerationStructureToMemoryInfoKHR where+  extensibleType = STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR+  setNext x next = x{next = next}+  getNext CopyAccelerationStructureToMemoryInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CopyAccelerationStructureToMemoryInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f+    | otherwise = Nothing++instance PokeChain es => ToCStruct (CopyAccelerationStructureToMemoryInfoKHR es) where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p CopyAccelerationStructureToMemoryInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (src)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (dst) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureKHR)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr DeviceOrHostAddressKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)+    lift $ f++instance es ~ '[] => Zero (CopyAccelerationStructureToMemoryInfoKHR es) where+  zero = CopyAccelerationStructureToMemoryInfoKHR+           ()+           zero+           zero+           zero+++-- | VkCopyMemoryToAccelerationStructureInfoKHR - Parameters for+-- deserializing an acceleration structure+--+-- == Valid Usage+--+-- -   [[VUID-{refpage}-mode-03413]] @mode@ /must/ be+--     'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR'+--+-- -   [[VUID-{refpage}-pInfo-03414]] The data in @pInfo->src@ /must/ have+--     a format compatible with the destination physical device as returned+--     by 'getDeviceAccelerationStructureCompatibilityKHR'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR'+--+-- -   @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+--     'Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations.DeferredOperationInfoKHR'+--+-- -   The @sType@ value of each struct in the @pNext@ chain /must/ be+--     unique+--+-- -   @src@ /must/ be a valid 'DeviceOrHostAddressConstKHR' union+--+-- -   @dst@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @mode@ /must/ be a valid 'CopyAccelerationStructureModeKHR' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'CopyAccelerationStructureModeKHR', 'DeviceOrHostAddressConstKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdCopyMemoryToAccelerationStructureKHR',+-- 'copyMemoryToAccelerationStructureKHR'+data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type]) = CopyMemoryToAccelerationStructureInfoKHR+  { -- No documentation found for Nested "VkCopyMemoryToAccelerationStructureInfoKHR" "pNext"+    next :: Chain es+  , -- | @src@ is the device or host address to memory containing the source data+    -- for the copy.+    src :: DeviceOrHostAddressConstKHR+  , -- | @dst@ is the target acceleration structure for the copy.+    dst :: AccelerationStructureKHR+  , -- | @mode@ is a 'CopyAccelerationStructureModeKHR' value that specifies+    -- additional operations to perform during the copy.+    mode :: CopyAccelerationStructureModeKHR+  }+  deriving (Typeable)+deriving instance Show (Chain es) => Show (CopyMemoryToAccelerationStructureInfoKHR es)++instance Extensible CopyMemoryToAccelerationStructureInfoKHR where+  extensibleType = STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR+  setNext x next = x{next = next}+  getNext CopyMemoryToAccelerationStructureInfoKHR{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends CopyMemoryToAccelerationStructureInfoKHR e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @DeferredOperationInfoKHR = Just f+    | otherwise = Nothing++instance PokeChain es => ToCStruct (CopyMemoryToAccelerationStructureInfoKHR es) where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p CopyMemoryToAccelerationStructureInfoKHR{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (src) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (dst)+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (mode)+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DeviceOrHostAddressConstKHR)) (zero) . ($ ())+    lift $ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureKHR)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr CopyAccelerationStructureModeKHR)) (zero)+    lift $ f++instance es ~ '[] => Zero (CopyMemoryToAccelerationStructureInfoKHR es) where+  zero = CopyMemoryToAccelerationStructureInfoKHR+           ()+           zero+           zero+           zero+++-- | VkRayTracingPipelineInterfaceCreateInfoKHR - Structure specifying+-- additional interface information when using libraries+--+-- = Description+--+-- @maxPayloadSize@ is calculated as the maximum number of bytes used by+-- any block declared in the @RayPayloadKHR@ or @IncomingRayPayloadKHR@+-- storage classes. @maxAttributeSize@ is calculated as the maximum number+-- of bytes used by any block declared in the @HitAttributeKHR@ storage+-- class. @maxCallableSize@ is calculated as the maximum number of bytes+-- used by any block declred in the @CallableDataKHR@ or+-- @IncomingCallableDataKHR@. As variables in these storage classes do not+-- have explicit offsets, the size should be calculated as if each variable+-- has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>+-- equal to the largest scalar alignment of any of the block’s members.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'RayTracingPipelineCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RayTracingPipelineInterfaceCreateInfoKHR = RayTracingPipelineInterfaceCreateInfoKHR+  { -- | @maxPayloadSize@ is the maximum payload size in bytes used by any shader+    -- in the pipeline.+    maxPayloadSize :: Word32+  , -- | @maxAttributeSize@ is the maximum attribute structure size in bytes used+    -- by any shader in the pipeline.+    maxAttributeSize :: Word32+  , -- | @maxCallableSize@ is the maximum callable data size in bytes used by any+    -- shader in the pipeline.+    maxCallableSize :: Word32+  }+  deriving (Typeable)+deriving instance Show RayTracingPipelineInterfaceCreateInfoKHR++instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingPipelineInterfaceCreateInfoKHR{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPayloadSize)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxAttributeSize)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxCallableSize)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    f++instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR where+  peekCStruct p = do+    maxPayloadSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    maxAttributeSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    maxCallableSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    pure $ RayTracingPipelineInterfaceCreateInfoKHR+             maxPayloadSize maxAttributeSize maxCallableSize++instance Storable RayTracingPipelineInterfaceCreateInfoKHR where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RayTracingPipelineInterfaceCreateInfoKHR where+  zero = RayTracingPipelineInterfaceCreateInfoKHR+           zero+           zero+           zero+++data DeviceOrHostAddressKHR+  = DeviceAddress DeviceAddress+  | HostAddress (Ptr ())+  deriving (Show)++instance ToCStruct DeviceOrHostAddressKHR where+  withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct :: Ptr DeviceOrHostAddressKHR -> DeviceOrHostAddressKHR -> IO a -> IO a+  pokeCStruct p = (. const) . runContT .  \case+    DeviceAddress v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)+    HostAddress v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)+  pokeZeroCStruct :: Ptr DeviceOrHostAddressKHR -> IO b -> IO b+  pokeZeroCStruct _ f = f+  cStructSize = 8+  cStructAlignment = 8++instance Zero DeviceOrHostAddressKHR where+  zero = DeviceAddress zero+++data DeviceOrHostAddressConstKHR+  = DeviceAddressConst DeviceAddress+  | HostAddressConst (Ptr ())+  deriving (Show)++instance ToCStruct DeviceOrHostAddressConstKHR where+  withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct :: Ptr DeviceOrHostAddressConstKHR -> DeviceOrHostAddressConstKHR -> IO a -> IO a+  pokeCStruct p = (. const) . runContT .  \case+    DeviceAddressConst v -> lift $ poke (castPtr @_ @DeviceAddress p) (v)+    HostAddressConst v -> lift $ poke (castPtr @_ @(Ptr ()) p) (v)+  pokeZeroCStruct :: Ptr DeviceOrHostAddressConstKHR -> IO b -> IO b+  pokeZeroCStruct _ f = f+  cStructSize = 8+  cStructAlignment = 8++instance Zero DeviceOrHostAddressConstKHR where+  zero = DeviceAddressConst zero+++data AccelerationStructureGeometryDataKHR+  = Triangles AccelerationStructureGeometryTrianglesDataKHR+  | Aabbs AccelerationStructureGeometryAabbsDataKHR+  | Instances AccelerationStructureGeometryInstancesDataKHR+  deriving (Show)++instance ToCStruct AccelerationStructureGeometryDataKHR where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct :: Ptr AccelerationStructureGeometryDataKHR -> AccelerationStructureGeometryDataKHR -> IO a -> IO a+  pokeCStruct p = (. const) . runContT .  \case+    Triangles v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryTrianglesDataKHR p) (v) . ($ ())+    Aabbs v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryAabbsDataKHR p) (v) . ($ ())+    Instances v -> ContT $ pokeCStruct (castPtr @_ @AccelerationStructureGeometryInstancesDataKHR p) (v) . ($ ())+  pokeZeroCStruct :: Ptr AccelerationStructureGeometryDataKHR -> IO b -> IO b+  pokeZeroCStruct _ f = f+  cStructSize = 64+  cStructAlignment = 8++instance Zero AccelerationStructureGeometryDataKHR where+  zero = Triangles zero+++-- | VkGeometryInstanceFlagBitsKHR - Instance flag bits+--+-- = Description+--+-- 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' and+-- 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' /must/ not be used in the same+-- flag.+--+-- = See Also+--+-- 'GeometryInstanceFlagsKHR'+newtype GeometryInstanceFlagBitsKHR = GeometryInstanceFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR' disables face+-- culling for this instance.+pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000001+-- | 'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR' indicates+-- that the front face of the triangle for culling purposes is the face+-- that is counter clockwise in object space relative to the ray origin.+-- Because the facing is determined in object space, an instance transform+-- matrix does not change the winding, but a geometry transform does.+pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000002+-- | 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR' causes this instance to act as+-- though 'GEOMETRY_OPAQUE_BIT_KHR' were specified on all geometries+-- referenced by this instance. This behavior /can/ be overridden by the+-- SPIR-V @NoOpaqueKHR@ ray flag.+pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000004+-- | 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR' causes this instance to act+-- as though 'GEOMETRY_OPAQUE_BIT_KHR' were not specified on all geometries+-- referenced by this instance. This behavior /can/ be overridden by the+-- SPIR-V @OpaqueKHR@ ray flag.+pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000008++type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR++instance Show GeometryInstanceFlagBitsKHR where+  showsPrec p = \case+    GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR -> showString "GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"+    GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR -> showString "GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"+    GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR -> showString "GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"+    GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR -> showString "GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"+    GeometryInstanceFlagBitsKHR x -> showParen (p >= 11) (showString "GeometryInstanceFlagBitsKHR 0x" . showHex x)++instance Read GeometryInstanceFlagBitsKHR where+  readPrec = parens (choose [("GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR", pure GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR)+                            , ("GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR", pure GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR)+                            , ("GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR", pure GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR)+                            , ("GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR", pure GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "GeometryInstanceFlagBitsKHR")+                       v <- step readPrec+                       pure (GeometryInstanceFlagBitsKHR v)))+++-- | VkGeometryFlagBitsKHR - Bitmask specifying additional parameters for a+-- geometry+--+-- = See Also+--+-- 'GeometryFlagsKHR'+newtype GeometryFlagBitsKHR = GeometryFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'GEOMETRY_OPAQUE_BIT_KHR' indicates that this geometry does not invoke+-- the any-hit shaders even if present in a hit group.+pattern GEOMETRY_OPAQUE_BIT_KHR = GeometryFlagBitsKHR 0x00000001+-- | 'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR' indicates that the+-- implementation /must/ only call the any-hit shader a single time for+-- each primitive in this geometry. If this bit is absent an implementation+-- /may/ invoke the any-hit shader more than once for this geometry.+pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = GeometryFlagBitsKHR 0x00000002++type GeometryFlagsKHR = GeometryFlagBitsKHR++instance Show GeometryFlagBitsKHR where+  showsPrec p = \case+    GEOMETRY_OPAQUE_BIT_KHR -> showString "GEOMETRY_OPAQUE_BIT_KHR"+    GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR -> showString "GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"+    GeometryFlagBitsKHR x -> showParen (p >= 11) (showString "GeometryFlagBitsKHR 0x" . showHex x)++instance Read GeometryFlagBitsKHR where+  readPrec = parens (choose [("GEOMETRY_OPAQUE_BIT_KHR", pure GEOMETRY_OPAQUE_BIT_KHR)+                            , ("GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR", pure GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "GeometryFlagBitsKHR")+                       v <- step readPrec+                       pure (GeometryFlagBitsKHR v)))+++-- | VkBuildAccelerationStructureFlagBitsKHR - Bitmask specifying additional+-- parameters for acceleration structure builds+--+-- = Description+--+-- Note+--+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' and+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' /may/ take more+-- time and memory than a normal build, and so /should/ only be used when+-- those features are needed.+--+-- = See Also+--+-- 'BuildAccelerationStructureFlagsKHR'+newtype BuildAccelerationStructureFlagBitsKHR = BuildAccelerationStructureFlagBitsKHR Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR' indicates that the+-- specified acceleration structure /can/ be updated with @update@ of+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' in+-- 'cmdBuildAccelerationStructureKHR' or+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'+-- .+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000001+-- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR' indicates that+-- the specified acceleration structure /can/ act as the source for a copy+-- acceleration structure command with @mode@ of+-- 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' to produce a compacted+-- acceleration structure.+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000002+-- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR' indicates that+-- the given acceleration structure build /should/ prioritize trace+-- performance over build time.+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000004+-- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR' indicates that+-- the given acceleration structure build /should/ prioritize build time+-- over trace performance.+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000008+-- | 'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR' indicates that this+-- acceleration structure /should/ minimize the size of the scratch memory+-- and the final result build, potentially at the expense of build time or+-- trace performance.+pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = BuildAccelerationStructureFlagBitsKHR 0x00000010++type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR++instance Show BuildAccelerationStructureFlagBitsKHR where+  showsPrec p = \case+    BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"+    BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"+    BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"+    BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"+    BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR -> showString "BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"+    BuildAccelerationStructureFlagBitsKHR x -> showParen (p >= 11) (showString "BuildAccelerationStructureFlagBitsKHR 0x" . showHex x)++instance Read BuildAccelerationStructureFlagBitsKHR where+  readPrec = parens (choose [("BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR)+                            , ("BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR)+                            , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR)+                            , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR)+                            , ("BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR", pure BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "BuildAccelerationStructureFlagBitsKHR")+                       v <- step readPrec+                       pure (BuildAccelerationStructureFlagBitsKHR v)))+++-- | VkCopyAccelerationStructureModeKHR - Acceleration structure copy mode+--+-- = See Also+--+-- 'CopyAccelerationStructureInfoKHR',+-- 'CopyAccelerationStructureToMemoryInfoKHR',+-- 'CopyMemoryToAccelerationStructureInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV'+newtype CopyAccelerationStructureModeKHR = CopyAccelerationStructureModeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR' creates a direct copy of+-- the acceleration structure specified in @src@ into the one specified by+-- @dst@. The @dst@ acceleration structure /must/ have been created with+-- the same parameters as @src@.+pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = CopyAccelerationStructureModeKHR 0+-- | 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR' creates a more compact+-- version of an acceleration structure @src@ into @dst@. The acceleration+-- structure @dst@ /must/ have been created with a @compactedSize@+-- corresponding to the one returned by+-- 'cmdWriteAccelerationStructuresPropertiesKHR' after the build of the+-- acceleration structure specified by @src@.+pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = CopyAccelerationStructureModeKHR 1+-- | 'COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR' serializes the+-- acceleration structure to a semi-opaque format which can be reloaded on+-- a compatible implementation.+pattern COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = CopyAccelerationStructureModeKHR 2+-- | 'COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR' deserializes the+-- semi-opaque serialization format in the buffer to the acceleration+-- structure.+pattern COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = CopyAccelerationStructureModeKHR 3+{-# complete COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,+             COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,+             COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR,+             COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR :: CopyAccelerationStructureModeKHR #-}++instance Show CopyAccelerationStructureModeKHR where+  showsPrec p = \case+    COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR"+    COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR"+    COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR"+    COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR -> showString "COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR"+    CopyAccelerationStructureModeKHR x -> showParen (p >= 11) (showString "CopyAccelerationStructureModeKHR " . showsPrec 11 x)++instance Read CopyAccelerationStructureModeKHR where+  readPrec = parens (choose [("COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR)+                            , ("COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR)+                            , ("COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR)+                            , ("COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR", pure COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "CopyAccelerationStructureModeKHR")+                       v <- step readPrec+                       pure (CopyAccelerationStructureModeKHR v)))+++-- | VkAccelerationStructureTypeKHR - Type of acceleration structure+--+-- = See Also+--+-- 'AccelerationStructureBuildGeometryInfoKHR',+-- 'AccelerationStructureCreateInfoKHR'+newtype AccelerationStructureTypeKHR = AccelerationStructureTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR' is a top-level acceleration+-- structure containing instance data referring to bottom-level+-- acceleration structures.+pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = AccelerationStructureTypeKHR 0+-- | 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR' is a bottom-level+-- acceleration structure containing the AABBs or geometry to be+-- intersected.+pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = AccelerationStructureTypeKHR 1+{-# complete ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,+             ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR :: AccelerationStructureTypeKHR #-}++instance Show AccelerationStructureTypeKHR where+  showsPrec p = \case+    ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR -> showString "ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR"+    ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR -> showString "ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR"+    AccelerationStructureTypeKHR x -> showParen (p >= 11) (showString "AccelerationStructureTypeKHR " . showsPrec 11 x)++instance Read AccelerationStructureTypeKHR where+  readPrec = parens (choose [("ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR", pure ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR)+                            , ("ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR", pure ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "AccelerationStructureTypeKHR")+                       v <- step readPrec+                       pure (AccelerationStructureTypeKHR v)))+++-- | VkGeometryTypeKHR - Enum specifying which type of geometry is provided+--+-- = See Also+--+-- 'AccelerationStructureCreateGeometryTypeInfoKHR',+-- 'AccelerationStructureGeometryKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV'+newtype GeometryTypeKHR = GeometryTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'GEOMETRY_TYPE_TRIANGLES_KHR' specifies a geometry type consisting of+-- triangles.+pattern GEOMETRY_TYPE_TRIANGLES_KHR = GeometryTypeKHR 0+-- | 'GEOMETRY_TYPE_AABBS_KHR' specifies a geometry type consisting of+-- axis-aligned bounding boxes.+pattern GEOMETRY_TYPE_AABBS_KHR = GeometryTypeKHR 1+-- | 'GEOMETRY_TYPE_INSTANCES_KHR' specifies a geometry type consisting of+-- acceleration structure instances.+pattern GEOMETRY_TYPE_INSTANCES_KHR = GeometryTypeKHR 1000150000+{-# complete GEOMETRY_TYPE_TRIANGLES_KHR,+             GEOMETRY_TYPE_AABBS_KHR,+             GEOMETRY_TYPE_INSTANCES_KHR :: GeometryTypeKHR #-}++instance Show GeometryTypeKHR where+  showsPrec p = \case+    GEOMETRY_TYPE_TRIANGLES_KHR -> showString "GEOMETRY_TYPE_TRIANGLES_KHR"+    GEOMETRY_TYPE_AABBS_KHR -> showString "GEOMETRY_TYPE_AABBS_KHR"+    GEOMETRY_TYPE_INSTANCES_KHR -> showString "GEOMETRY_TYPE_INSTANCES_KHR"+    GeometryTypeKHR x -> showParen (p >= 11) (showString "GeometryTypeKHR " . showsPrec 11 x)++instance Read GeometryTypeKHR where+  readPrec = parens (choose [("GEOMETRY_TYPE_TRIANGLES_KHR", pure GEOMETRY_TYPE_TRIANGLES_KHR)+                            , ("GEOMETRY_TYPE_AABBS_KHR", pure GEOMETRY_TYPE_AABBS_KHR)+                            , ("GEOMETRY_TYPE_INSTANCES_KHR", pure GEOMETRY_TYPE_INSTANCES_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "GeometryTypeKHR")+                       v <- step readPrec+                       pure (GeometryTypeKHR v)))+++-- | VkAccelerationStructureMemoryRequirementsTypeKHR - Acceleration+-- structure memory requirement type+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoKHR'+newtype AccelerationStructureMemoryRequirementsTypeKHR = AccelerationStructureMemoryRequirementsTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR' requests+-- the memory requirement for the+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' backing+-- store.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = AccelerationStructureMemoryRequirementsTypeKHR 0+-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR'+-- requests the memory requirement for scratch space during the initial+-- build.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = AccelerationStructureMemoryRequirementsTypeKHR 1+-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR'+-- requests the memory requirement for scratch space during an update.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = AccelerationStructureMemoryRequirementsTypeKHR 2+{-# complete ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR,+             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR,+             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR :: AccelerationStructureMemoryRequirementsTypeKHR #-}++instance Show AccelerationStructureMemoryRequirementsTypeKHR where+  showsPrec p = \case+    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR"+    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR"+    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR"+    AccelerationStructureMemoryRequirementsTypeKHR x -> showParen (p >= 11) (showString "AccelerationStructureMemoryRequirementsTypeKHR " . showsPrec 11 x)++instance Read AccelerationStructureMemoryRequirementsTypeKHR where+  readPrec = parens (choose [("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR)+                            , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR)+                            , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "AccelerationStructureMemoryRequirementsTypeKHR")+                       v <- step readPrec+                       pure (AccelerationStructureMemoryRequirementsTypeKHR v)))+++-- | VkAccelerationStructureBuildTypeKHR - Acceleration structure build type+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoKHR'+newtype AccelerationStructureBuildTypeKHR = AccelerationStructureBuildTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR' requests the memory+-- requirement for operations performed by the host.+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = AccelerationStructureBuildTypeKHR 0+-- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR' requests the memory+-- requirement for operations performed by the device.+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = AccelerationStructureBuildTypeKHR 1+-- | 'ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR' requests the+-- memory requirement for operations performed by either the host, or the+-- device.+pattern ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = AccelerationStructureBuildTypeKHR 2+{-# complete ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR,+             ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR,+             ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR :: AccelerationStructureBuildTypeKHR #-}++instance Show AccelerationStructureBuildTypeKHR where+  showsPrec p = \case+    ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR -> showString "ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR"+    ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR -> showString "ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR"+    ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR -> showString "ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR"+    AccelerationStructureBuildTypeKHR x -> showParen (p >= 11) (showString "AccelerationStructureBuildTypeKHR " . showsPrec 11 x)++instance Read AccelerationStructureBuildTypeKHR where+  readPrec = parens (choose [("ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR", pure ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR)+                            , ("ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR", pure ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR)+                            , ("ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR", pure ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "AccelerationStructureBuildTypeKHR")+                       v <- step readPrec+                       pure (AccelerationStructureBuildTypeKHR v)))+++-- | VkRayTracingShaderGroupTypeKHR - Shader group types+--+-- = Description+--+-- Note+--+-- For current group types, the hit group type could be inferred from the+-- presence or absence of the intersection shader, but we provide the type+-- explicitly for future hit groups that do not have that property.+--+-- = See Also+--+-- 'RayTracingShaderGroupCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV'+newtype RayTracingShaderGroupTypeKHR = RayTracingShaderGroupTypeKHR Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- | 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR' indicates a shader group+-- with a single+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_KHR',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_KHR'+-- shader in it.+pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = RayTracingShaderGroupTypeKHR 0+-- | 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR' specifies a+-- shader group that only hits triangles and /must/ not contain an+-- intersection shader, only closest hit and any-hit shaders.+pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 1+-- | 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR' specifies a+-- shader group that only intersects with custom geometry and /must/+-- contain an intersection shader and /may/ contain closest hit and any-hit+-- shaders.+pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = RayTracingShaderGroupTypeKHR 2+{-# complete RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,+             RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,+             RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR :: RayTracingShaderGroupTypeKHR #-}++instance Show RayTracingShaderGroupTypeKHR where+  showsPrec p = \case+    RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR -> showString "RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR"+    RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR -> showString "RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR"+    RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR -> showString "RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR"+    RayTracingShaderGroupTypeKHR x -> showParen (p >= 11) (showString "RayTracingShaderGroupTypeKHR " . showsPrec 11 x)++instance Read RayTracingShaderGroupTypeKHR where+  readPrec = parens (choose [("RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR", pure RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR)+                            , ("RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR", pure RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR)+                            , ("RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR", pure RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR)]+                     ++++                     prec 10 (do+                       expectP (Ident "RayTracingShaderGroupTypeKHR")+                       v <- step readPrec+                       pure (RayTracingShaderGroupTypeKHR v)))+++type KHR_RAY_TRACING_SPEC_VERSION = 8++-- No documentation found for TopLevel "VK_KHR_RAY_TRACING_SPEC_VERSION"+pattern KHR_RAY_TRACING_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_RAY_TRACING_SPEC_VERSION = 8+++type KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing"++-- No documentation found for TopLevel "VK_KHR_RAY_TRACING_EXTENSION_NAME"+pattern KHR_RAY_TRACING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_RAY_TRACING_EXTENSION_NAME = "VK_KHR_ray_tracing"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_ray_tracing.hs-boot view
@@ -0,0 +1,274 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_ray_tracing  ( AabbPositionsKHR+                                                      , AccelerationStructureBuildGeometryInfoKHR+                                                      , AccelerationStructureBuildOffsetInfoKHR+                                                      , AccelerationStructureCreateGeometryTypeInfoKHR+                                                      , AccelerationStructureCreateInfoKHR+                                                      , AccelerationStructureDeviceAddressInfoKHR+                                                      , AccelerationStructureGeometryAabbsDataKHR+                                                      , AccelerationStructureGeometryInstancesDataKHR+                                                      , AccelerationStructureGeometryKHR+                                                      , AccelerationStructureGeometryTrianglesDataKHR+                                                      , AccelerationStructureInstanceKHR+                                                      , AccelerationStructureMemoryRequirementsInfoKHR+                                                      , AccelerationStructureVersionKHR+                                                      , BindAccelerationStructureMemoryInfoKHR+                                                      , CopyAccelerationStructureInfoKHR+                                                      , CopyAccelerationStructureToMemoryInfoKHR+                                                      , CopyMemoryToAccelerationStructureInfoKHR+                                                      , PhysicalDeviceRayTracingFeaturesKHR+                                                      , PhysicalDeviceRayTracingPropertiesKHR+                                                      , RayTracingPipelineCreateInfoKHR+                                                      , RayTracingPipelineInterfaceCreateInfoKHR+                                                      , RayTracingShaderGroupCreateInfoKHR+                                                      , StridedBufferRegionKHR+                                                      , TraceRaysIndirectCommandKHR+                                                      , TransformMatrixKHR+                                                      , WriteDescriptorSetAccelerationStructureKHR+                                                      , CopyAccelerationStructureModeKHR+                                                      , GeometryFlagBitsKHR+                                                      , GeometryFlagsKHR+                                                      , GeometryInstanceFlagBitsKHR+                                                      , GeometryInstanceFlagsKHR+                                                      , BuildAccelerationStructureFlagBitsKHR+                                                      , BuildAccelerationStructureFlagsKHR+                                                      , AccelerationStructureTypeKHR+                                                      , GeometryTypeKHR+                                                      , RayTracingShaderGroupTypeKHR+                                                      , AccelerationStructureMemoryRequirementsTypeKHR+                                                      ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data AabbPositionsKHR++instance ToCStruct AabbPositionsKHR+instance Show AabbPositionsKHR++instance FromCStruct AabbPositionsKHR+++type role AccelerationStructureBuildGeometryInfoKHR nominal+data AccelerationStructureBuildGeometryInfoKHR (es :: [Type])++instance PokeChain es => ToCStruct (AccelerationStructureBuildGeometryInfoKHR es)+instance Show (Chain es) => Show (AccelerationStructureBuildGeometryInfoKHR es)+++data AccelerationStructureBuildOffsetInfoKHR++instance ToCStruct AccelerationStructureBuildOffsetInfoKHR+instance Show AccelerationStructureBuildOffsetInfoKHR++instance FromCStruct AccelerationStructureBuildOffsetInfoKHR+++data AccelerationStructureCreateGeometryTypeInfoKHR++instance ToCStruct AccelerationStructureCreateGeometryTypeInfoKHR+instance Show AccelerationStructureCreateGeometryTypeInfoKHR++instance FromCStruct AccelerationStructureCreateGeometryTypeInfoKHR+++data AccelerationStructureCreateInfoKHR++instance ToCStruct AccelerationStructureCreateInfoKHR+instance Show AccelerationStructureCreateInfoKHR++instance FromCStruct AccelerationStructureCreateInfoKHR+++data AccelerationStructureDeviceAddressInfoKHR++instance ToCStruct AccelerationStructureDeviceAddressInfoKHR+instance Show AccelerationStructureDeviceAddressInfoKHR++instance FromCStruct AccelerationStructureDeviceAddressInfoKHR+++data AccelerationStructureGeometryAabbsDataKHR++instance ToCStruct AccelerationStructureGeometryAabbsDataKHR+instance Show AccelerationStructureGeometryAabbsDataKHR+++data AccelerationStructureGeometryInstancesDataKHR++instance ToCStruct AccelerationStructureGeometryInstancesDataKHR+instance Show AccelerationStructureGeometryInstancesDataKHR+++data AccelerationStructureGeometryKHR++instance ToCStruct AccelerationStructureGeometryKHR+instance Show AccelerationStructureGeometryKHR+++data AccelerationStructureGeometryTrianglesDataKHR++instance ToCStruct AccelerationStructureGeometryTrianglesDataKHR+instance Show AccelerationStructureGeometryTrianglesDataKHR+++data AccelerationStructureInstanceKHR++instance ToCStruct AccelerationStructureInstanceKHR+instance Show AccelerationStructureInstanceKHR++instance FromCStruct AccelerationStructureInstanceKHR+++data AccelerationStructureMemoryRequirementsInfoKHR++instance ToCStruct AccelerationStructureMemoryRequirementsInfoKHR+instance Show AccelerationStructureMemoryRequirementsInfoKHR++instance FromCStruct AccelerationStructureMemoryRequirementsInfoKHR+++data AccelerationStructureVersionKHR++instance ToCStruct AccelerationStructureVersionKHR+instance Show AccelerationStructureVersionKHR++instance FromCStruct AccelerationStructureVersionKHR+++data BindAccelerationStructureMemoryInfoKHR++instance ToCStruct BindAccelerationStructureMemoryInfoKHR+instance Show BindAccelerationStructureMemoryInfoKHR++instance FromCStruct BindAccelerationStructureMemoryInfoKHR+++type role CopyAccelerationStructureInfoKHR nominal+data CopyAccelerationStructureInfoKHR (es :: [Type])++instance PokeChain es => ToCStruct (CopyAccelerationStructureInfoKHR es)+instance Show (Chain es) => Show (CopyAccelerationStructureInfoKHR es)++instance PeekChain es => FromCStruct (CopyAccelerationStructureInfoKHR es)+++type role CopyAccelerationStructureToMemoryInfoKHR nominal+data CopyAccelerationStructureToMemoryInfoKHR (es :: [Type])++instance PokeChain es => ToCStruct (CopyAccelerationStructureToMemoryInfoKHR es)+instance Show (Chain es) => Show (CopyAccelerationStructureToMemoryInfoKHR es)+++type role CopyMemoryToAccelerationStructureInfoKHR nominal+data CopyMemoryToAccelerationStructureInfoKHR (es :: [Type])++instance PokeChain es => ToCStruct (CopyMemoryToAccelerationStructureInfoKHR es)+instance Show (Chain es) => Show (CopyMemoryToAccelerationStructureInfoKHR es)+++data PhysicalDeviceRayTracingFeaturesKHR++instance ToCStruct PhysicalDeviceRayTracingFeaturesKHR+instance Show PhysicalDeviceRayTracingFeaturesKHR++instance FromCStruct PhysicalDeviceRayTracingFeaturesKHR+++data PhysicalDeviceRayTracingPropertiesKHR++instance ToCStruct PhysicalDeviceRayTracingPropertiesKHR+instance Show PhysicalDeviceRayTracingPropertiesKHR++instance FromCStruct PhysicalDeviceRayTracingPropertiesKHR+++type role RayTracingPipelineCreateInfoKHR nominal+data RayTracingPipelineCreateInfoKHR (es :: [Type])++instance PokeChain es => ToCStruct (RayTracingPipelineCreateInfoKHR es)+instance Show (Chain es) => Show (RayTracingPipelineCreateInfoKHR es)++instance PeekChain es => FromCStruct (RayTracingPipelineCreateInfoKHR es)+++data RayTracingPipelineInterfaceCreateInfoKHR++instance ToCStruct RayTracingPipelineInterfaceCreateInfoKHR+instance Show RayTracingPipelineInterfaceCreateInfoKHR++instance FromCStruct RayTracingPipelineInterfaceCreateInfoKHR+++data RayTracingShaderGroupCreateInfoKHR++instance ToCStruct RayTracingShaderGroupCreateInfoKHR+instance Show RayTracingShaderGroupCreateInfoKHR++instance FromCStruct RayTracingShaderGroupCreateInfoKHR+++data StridedBufferRegionKHR++instance ToCStruct StridedBufferRegionKHR+instance Show StridedBufferRegionKHR++instance FromCStruct StridedBufferRegionKHR+++data TraceRaysIndirectCommandKHR++instance ToCStruct TraceRaysIndirectCommandKHR+instance Show TraceRaysIndirectCommandKHR++instance FromCStruct TraceRaysIndirectCommandKHR+++data TransformMatrixKHR++instance ToCStruct TransformMatrixKHR+instance Show TransformMatrixKHR++instance FromCStruct TransformMatrixKHR+++data WriteDescriptorSetAccelerationStructureKHR++instance ToCStruct WriteDescriptorSetAccelerationStructureKHR+instance Show WriteDescriptorSetAccelerationStructureKHR++instance FromCStruct WriteDescriptorSetAccelerationStructureKHR+++data CopyAccelerationStructureModeKHR+++data GeometryFlagBitsKHR++type GeometryFlagsKHR = GeometryFlagBitsKHR+++data GeometryInstanceFlagBitsKHR++type GeometryInstanceFlagsKHR = GeometryInstanceFlagBitsKHR+++data BuildAccelerationStructureFlagBitsKHR++type BuildAccelerationStructureFlagsKHR = BuildAccelerationStructureFlagBitsKHR+++data AccelerationStructureTypeKHR+++data GeometryTypeKHR+++data RayTracingShaderGroupTypeKHR+++data AccelerationStructureMemoryRequirementsTypeKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs view
@@ -359,9 +359,9 @@ -- -- == Valid Usage ----- -   @surface@ must be supported by @physicalDevice@, as reported by+-- -   @surface@ /must/ be supported by @physicalDevice@, as reported by --     'getPhysicalDeviceSurfaceSupportKHR' or an equivalent---     platform-specific mechanism.+--     platform-specific mechanism -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs view
@@ -44,6 +44,7 @@                                                     , SurfaceTransformFlagsKHR                                                     ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Exception.Base (bracket) import Control.Monad (unless) import Control.Monad.IO.Class (liftIO)@@ -90,7 +91,6 @@ import Data.Kind (Type) import Control.Monad.Trans.Cont (ContT(..)) import Data.Vector (Vector)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -253,10 +253,10 @@ -- -- == Host Synchronization ----- -   Host access to @pCreateInfo.surface@ /must/ be externally+-- -   Host access to @pCreateInfo->surface@ /must/ be externally --     synchronized ----- -   Host access to @pCreateInfo.oldSwapchain@ /must/ be externally+-- -   Host access to @pCreateInfo->oldSwapchain@ /must/ be externally --     synchronized -- -- == Return Codes@@ -297,14 +297,17 @@   pSwapchain <- lift $ peek @SwapchainKHR pPSwapchain   pure $ (pSwapchain) --- | A safe wrapper for 'createSwapchainKHR' and 'destroySwapchainKHR' using--- 'bracket'+-- | A convenience wrapper to make a compatible pair of calls to+-- 'createSwapchainKHR' and 'destroySwapchainKHR' ----- The allocated value must not be returned from the provided computation-withSwapchainKHR :: forall a r . PokeChain a => Device -> SwapchainCreateInfoKHR a -> Maybe AllocationCallbacks -> ((SwapchainKHR) -> IO r) -> IO r-withSwapchainKHR device pCreateInfo pAllocator =-  bracket-    (createSwapchainKHR device pCreateInfo pAllocator)+-- To ensure that 'destroySwapchainKHR' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withSwapchainKHR :: forall a io r . (PokeChain a, MonadIO io) => (io (SwapchainKHR) -> ((SwapchainKHR) -> io ()) -> r) -> Device -> SwapchainCreateInfoKHR a -> Maybe AllocationCallbacks -> r+withSwapchainKHR b device pCreateInfo pAllocator =+  b (createSwapchainKHR device pCreateInfo pAllocator)     (\(o0) -> destroySwapchainKHR device o0 pAllocator)  @@ -679,22 +682,22 @@ -- -   When a semaphore wait operation referring to a binary semaphore --     defined by the elements of the @pWaitSemaphores@ member of --     @pPresentInfo@ executes on @queue@, there /must/ be no other queues---     waiting on the same semaphore.+--     waiting on the same semaphore -- -- -   All elements of the @pWaitSemaphores@ member of @pPresentInfo@ --     /must/ be semaphores that are signaled, or have --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>---     previously submitted for execution.+--     previously submitted for execution -- -- -   All elements of the @pWaitSemaphores@ member of @pPresentInfo@ --     /must/ be created with a --     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of---     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.+--     'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY' -- -- -   All elements of the @pWaitSemaphores@ member of @pPresentInfo@ --     /must/ reference a semaphore signal operation that has been --     submitted for execution and any semaphore signal operations on which---     it depends (if any) /must/ have also been submitted for execution.+--     it depends (if any) /must/ have also been submitted for execution -- -- Any writes to memory backing the images referenced by the -- @pImageIndices@ and @pSwapchains@ members of @pPresentInfo@, that are@@ -710,6 +713,17 @@ -- queue operations does not include the actual processing of the image by -- the presentation engine. --+-- Note+--+-- The origin of the native orientation of the surface coordinate system is+-- not specified in the Vulkan specification; it depends on the platform.+-- For most platforms the origin is by default upper-left, meaning the+-- pixel of the presented 'Graphics.Vulkan.Core10.Handles.Image' at+-- coordinates (0,0) would appear at the upper left pixel of the platform+-- surface (assuming+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',+-- and the display standing the right way up).+-- -- If 'queuePresentKHR' fails to enqueue the corresponding set of queue -- operations, it /may/ return -- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or@@ -724,9 +738,10 @@ -- -- However, if the presentation request is rejected by the presentation -- engine with an error--- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' or--- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR', the set of--- queue operations are still considered to be enqueued and thus any+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR',+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT',+-- or 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR', the set+-- of queue operations are still considered to be enqueued and thus any -- semaphore wait operation specified in 'PresentInfoKHR' will execute when -- the corresponding queue operation is complete. --@@ -749,10 +764,10 @@ -- -- -   Host access to @queue@ /must/ be externally synchronized ----- -   Host access to @pPresentInfo.pWaitSemaphores@[] /must/ be externally---     synchronized+-- -   Host access to @pPresentInfo->pWaitSemaphores@[] /must/ be+--     externally synchronized ----- -   Host access to @pPresentInfo.pSwapchains@[] /must/ be externally+-- -   Host access to @pPresentInfo->pSwapchains@[] /must/ be externally --     synchronized -- -- == Command Properties@@ -1841,7 +1856,7 @@     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     unless ((Data.Vector.length $ (presentMask)) <= MAX_DEVICE_GROUP_SIZE) $       throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (presentMask)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (presentMask)     poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (modes)     f   cStructSize = 152@@ -1851,13 +1866,13 @@     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     unless ((Data.Vector.length $ (mempty)) <= MAX_DEVICE_GROUP_SIZE) $       throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)     poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (zero)     f  instance FromCStruct DeviceGroupPresentCapabilitiesKHR where   peekCStruct p = do-    presentMask <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @Word32 (((lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE Word32)))) `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    presentMask <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @Word32 (((lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (FixedArray MAX_DEVICE_GROUP_SIZE Word32)))) `advancePtrBytes` (4 * (i)) :: Ptr Word32)))     modes <- peek @DeviceGroupPresentModeFlagsKHR ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR))     pure $ DeviceGroupPresentCapabilitiesKHR              presentMask modes@@ -2215,7 +2230,7 @@ -- -   If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR', then each --     element of @pDeviceMasks@ /must/ have exactly one bit set, and some --     physical device in the logical device /must/ include that bit in its---     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.+--     'DeviceGroupPresentCapabilitiesKHR'::@presentMask@ -- -- -   If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR', then each --     element of @pDeviceMasks@ /must/ have a value for which all set bits
src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs view
@@ -204,9 +204,9 @@ data WaylandSurfaceCreateInfoKHR = WaylandSurfaceCreateInfoKHR   { -- | @flags@ /must/ be @0@     flags :: WaylandSurfaceCreateFlagsKHR-  , -- | @display@ /must/ point to a valid Wayland @wl_display@.+  , -- | @display@ /must/ point to a valid Wayland @wl_display@     display :: Ptr Wl_display-  , -- | @surface@ /must/ point to a valid Wayland @wl_surface@.+  , -- | @surface@ /must/ point to a valid Wayland @wl_surface@     surface :: Ptr Wl_surface   }   deriving (Typeable)
src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs view
@@ -48,7 +48,7 @@ --     to --     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' --     or---     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT'.+--     'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT' -- -- == Valid Usage (Implicit) --
src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs view
@@ -202,10 +202,10 @@   { -- | @flags@ /must/ be @0@     flags :: Win32SurfaceCreateFlagsKHR   , -- | @hinstance@ /must/ be a valid Win32-    -- 'Graphics.Vulkan.Extensions.WSITypes.HINSTANCE'.+    -- 'Graphics.Vulkan.Extensions.WSITypes.HINSTANCE'     hinstance :: HINSTANCE   , -- | @hwnd@ /must/ be a valid Win32-    -- 'Graphics.Vulkan.Extensions.WSITypes.HWND'.+    -- 'Graphics.Vulkan.Extensions.WSITypes.HWND'     hwnd :: HWND   }   deriving (Typeable)
src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs view
@@ -175,8 +175,9 @@ -- -   @queueFamilyIndex@ is the queue family index. -- -- -   @connection@ is a pointer to an @xcb_connection_t@ to the X server.---     @visual_id@ is an X11 visual (@xcb_visualid_t@). --+-- -   @visual_id@ is an X11 visual (@xcb_visualid_t@).+-- -- = Description -- -- This platform-specific function /can/ be called prior to creating a@@ -206,9 +207,9 @@ data XcbSurfaceCreateInfoKHR = XcbSurfaceCreateInfoKHR   { -- | @flags@ /must/ be @0@     flags :: XcbSurfaceCreateFlagsKHR-  , -- | @connection@ /must/ point to a valid X11 @xcb_connection_t@.+  , -- | @connection@ /must/ point to a valid X11 @xcb_connection_t@     connection :: Ptr Xcb_connection_t-  , -- | @window@ /must/ be a valid X11 @xcb_window_t@.+  , -- | @window@ /must/ be a valid X11 @xcb_window_t@     window :: Xcb_window_t   }   deriving (Typeable)
src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs view
@@ -212,10 +212,10 @@   { -- | @flags@ /must/ be @0@     flags :: XlibSurfaceCreateFlagsKHR   , -- | @dpy@ /must/ point to a valid Xlib-    -- 'Graphics.Vulkan.Extensions.WSITypes.Display'.+    -- 'Graphics.Vulkan.Extensions.WSITypes.Display'     dpy :: Ptr Display   , -- | @window@ /must/ be a valid Xlib-    -- 'Graphics.Vulkan.Extensions.WSITypes.Window'.+    -- 'Graphics.Vulkan.Extensions.WSITypes.Window'     window :: Window   }   deriving (Typeable)
src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs view
@@ -153,7 +153,7 @@   { -- | @flags@ /must/ be @0@     flags :: IOSSurfaceCreateFlagsMVK   , -- | @pView@ /must/ be a valid @UIView@ and /must/ be backed by a @CALayer@-    -- instance of type 'Graphics.Vulkan.Extensions.WSITypes.CAMetalLayer'.+    -- instance of type 'Graphics.Vulkan.Extensions.WSITypes.CAMetalLayer'     view :: Ptr ()   }   deriving (Typeable)
src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs view
@@ -155,7 +155,7 @@   { -- | @flags@ /must/ be @0@     flags :: MacOSSurfaceCreateFlagsMVK   , -- | @pView@ /must/ be a valid @NSView@ and /must/ be backed by a @CALayer@-    -- instance of type 'Graphics.Vulkan.Extensions.WSITypes.CAMetalLayer'.+    -- instance of type 'Graphics.Vulkan.Extensions.WSITypes.CAMetalLayer'     view :: Ptr ()   }   deriving (Typeable)
− src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs
@@ -1,2346 +0,0 @@-{-# language CPP #-}-module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands  ( cmdProcessCommandsNVX-                                                                    , cmdReserveSpaceForCommandsNVX-                                                                    , createIndirectCommandsLayoutNVX-                                                                    , withIndirectCommandsLayoutNVX-                                                                    , destroyIndirectCommandsLayoutNVX-                                                                    , createObjectTableNVX-                                                                    , withObjectTableNVX-                                                                    , destroyObjectTableNVX-                                                                    , registerObjectsNVX-                                                                    , withRegisteredObjectsNVX-                                                                    , unregisterObjectsNVX-                                                                    , getPhysicalDeviceGeneratedCommandsPropertiesNVX-                                                                    , DeviceGeneratedCommandsFeaturesNVX(..)-                                                                    , DeviceGeneratedCommandsLimitsNVX(..)-                                                                    , IndirectCommandsTokenNVX(..)-                                                                    , IndirectCommandsLayoutTokenNVX(..)-                                                                    , IndirectCommandsLayoutCreateInfoNVX(..)-                                                                    , CmdProcessCommandsInfoNVX(..)-                                                                    , CmdReserveSpaceForCommandsInfoNVX(..)-                                                                    , ObjectTableCreateInfoNVX(..)-                                                                    , ObjectTableEntryNVX(..)-                                                                    , ObjectTablePipelineEntryNVX(..)-                                                                    , ObjectTableDescriptorSetEntryNVX(..)-                                                                    , ObjectTableVertexBufferEntryNVX(..)-                                                                    , ObjectTableIndexBufferEntryNVX(..)-                                                                    , ObjectTablePushConstantEntryNVX(..)-                                                                    , IndirectCommandsLayoutUsageFlagBitsNVX( INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX-                                                                                                            , INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX-                                                                                                            , INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX-                                                                                                            , INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX-                                                                                                            , ..-                                                                                                            )-                                                                    , IndirectCommandsLayoutUsageFlagsNVX-                                                                    , ObjectEntryUsageFlagBitsNVX( OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX-                                                                                                 , OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX-                                                                                                 , ..-                                                                                                 )-                                                                    , ObjectEntryUsageFlagsNVX-                                                                    , IndirectCommandsTokenTypeNVX( INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX-                                                                                                  , INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX-                                                                                                  , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX-                                                                                                  , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX-                                                                                                  , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX-                                                                                                  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX-                                                                                                  , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX-                                                                                                  , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX-                                                                                                  , ..-                                                                                                  )-                                                                    , ObjectEntryTypeNVX( OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX-                                                                                        , OBJECT_ENTRY_TYPE_PIPELINE_NVX-                                                                                        , OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX-                                                                                        , OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX-                                                                                        , OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX-                                                                                        , ..-                                                                                        )-                                                                    , NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION-                                                                    , pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION-                                                                    , NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME-                                                                    , pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME-                                                                    , ObjectTableNVX(..)-                                                                    , IndirectCommandsLayoutNVX(..)-                                                                    ) where--import Control.Exception.Base (bracket)-import Control.Exception.Base (bracket_)-import Control.Monad (unless)-import Control.Monad.IO.Class (liftIO)-import Foreign.Marshal.Alloc (allocaBytesAligned)-import Foreign.Marshal.Alloc (callocBytes)-import Foreign.Marshal.Alloc (free)-import GHC.Base (when)-import GHC.IO (throwIO)-import Foreign.Ptr (nullPtr)-import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)-import GHC.Show (showsPrec)-import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT)-import Data.Vector (generateM)-import qualified Data.Vector (imapM_)-import qualified Data.Vector (length)-import Control.Monad.IO.Class (MonadIO)-import Data.Bits (Bits)-import Data.String (IsString)-import Data.Typeable (Typeable)-import Foreign.Storable (Storable)-import Foreign.Storable (Storable(peek))-import Foreign.Storable (Storable(poke))-import qualified Foreign.Storable (Storable(..))-import GHC.IO.Exception (IOErrorType(..))-import GHC.IO.Exception (IOException(..))-import Data.Int (Int32)-import Foreign.Ptr (FunPtr)-import Foreign.Ptr (Ptr)-import GHC.Read (Read(readPrec))-import Data.Word (Word32)-import Text.Read.Lex (Lexeme(Ident))-import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..))-import Data.Vector (Vector)-import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)-import Graphics.Vulkan.Core10.BaseType (bool32ToBool)-import Graphics.Vulkan.Core10.BaseType (boolToBool32)-import Graphics.Vulkan.NamedType ((:::))-import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)-import Graphics.Vulkan.Core10.BaseType (Bool32)-import Graphics.Vulkan.Core10.Handles (Buffer)-import Graphics.Vulkan.Core10.Handles (CommandBuffer)-import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))-import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)-import Graphics.Vulkan.Core10.Handles (DescriptorSet)-import Graphics.Vulkan.Core10.Handles (Device)-import Graphics.Vulkan.Core10.Handles (Device(..))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdProcessCommandsNVX))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdReserveSpaceForCommandsNVX))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutNVX))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateObjectTableNVX))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutNVX))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyObjectTableNVX))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkRegisterObjectsNVX))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkUnregisterObjectsNVX))-import Graphics.Vulkan.Core10.BaseType (DeviceSize)-import Graphics.Vulkan.Core10.Handles (Device_T)-import Graphics.Vulkan.Core10.BaseType (Flags)-import Graphics.Vulkan.CStruct (FromCStruct)-import Graphics.Vulkan.CStruct (FromCStruct(..))-import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)-import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX)-import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX(..))-import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX))-import Graphics.Vulkan.Extensions.Handles (ObjectTableNVX)-import Graphics.Vulkan.Extensions.Handles (ObjectTableNVX(..))-import Graphics.Vulkan.Core10.Handles (PhysicalDevice)-import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))-import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)-import Graphics.Vulkan.Core10.Handles (Pipeline)-import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)-import Graphics.Vulkan.Core10.Handles (PipelineLayout)-import Graphics.Vulkan.Core10.Enums.Result (Result)-import Graphics.Vulkan.Core10.Enums.Result (Result(..))-import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)-import Graphics.Vulkan.CStruct (ToCStruct)-import Graphics.Vulkan.CStruct (ToCStruct(..))-import Graphics.Vulkan.Exception (VulkanException(..))-import Graphics.Vulkan.Zero (Zero)-import Graphics.Vulkan.Zero (Zero(..))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX))-import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))-import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX(..))-import Graphics.Vulkan.Extensions.Handles (ObjectTableNVX(..))-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdProcessCommandsNVX-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CmdProcessCommandsInfoNVX -> IO ()) -> Ptr CommandBuffer_T -> Ptr CmdProcessCommandsInfoNVX -> IO ()---- | vkCmdProcessCommandsNVX - Performs the generation of commands on the--- device------ = Parameters------ -   @commandBuffer@ is the primary command buffer in which the---     generation process takes space.------ -   @pProcessCommandsInfo@ is a pointer to a 'CmdProcessCommandsInfoNVX'---     structure containing parameters affecting the processing of---     commands.------ == Valid Usage (Implicit)------ -   @commandBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle------ -   @pProcessCommandsInfo@ /must/ be a valid pointer to a valid---     'CmdProcessCommandsInfoNVX' structure------ -   @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ support graphics, or---     compute operations------ -   This command /must/ only be called inside of a render pass instance------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'CmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'-cmdProcessCommandsNVX :: forall io . MonadIO io => CommandBuffer -> CmdProcessCommandsInfoNVX -> io ()-cmdProcessCommandsNVX commandBuffer processCommandsInfo = liftIO . evalContT $ do-  let vkCmdProcessCommandsNVX' = mkVkCmdProcessCommandsNVX (pVkCmdProcessCommandsNVX (deviceCmds (commandBuffer :: CommandBuffer)))-  pProcessCommandsInfo <- ContT $ withCStruct (processCommandsInfo)-  lift $ vkCmdProcessCommandsNVX' (commandBufferHandle (commandBuffer)) pProcessCommandsInfo-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdReserveSpaceForCommandsNVX-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CmdReserveSpaceForCommandsInfoNVX -> IO ()) -> Ptr CommandBuffer_T -> Ptr CmdReserveSpaceForCommandsInfoNVX -> IO ()---- | vkCmdReserveSpaceForCommandsNVX - Perform a reservation of command--- buffer space------ = Parameters------ -   @commandBuffer@ is the secondary command buffer in which the space---     for device-generated commands is reserved.------ -   @pProcessCommandsInfo@ is a pointer to a---     'CmdReserveSpaceForCommandsInfoNVX' structure containing parameters---     affecting the reservation of command buffer space.------ == Valid Usage------ -   The provided @commandBuffer@ /must/ not have had a prior space---     reservation since its creation or the last reset.------ -   The state of the @commandBuffer@ /must/ be legal to execute all---     commands within the sequence provided by the---     @indirectCommandsLayout@ member of @pProcessCommandsInfo@.------ == Valid Usage (Implicit)------ -   @commandBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle------ -   @pReserveSpaceInfo@ /must/ be a valid pointer to a valid---     'CmdReserveSpaceForCommandsInfoNVX' structure------ -   @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ support graphics, or---     compute operations------ -   This command /must/ only be called inside of a render pass instance------ -   @commandBuffer@ /must/ be a secondary---     'Graphics.Vulkan.Core10.Handles.CommandBuffer'------ == Host Synchronization------ -   Host access to @commandBuffer@ /must/ be externally synchronized------ -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Secondary                                                                                                                  | Inside                                                                                                                 | Graphics                                                                                                              |                                                                                                                                     |--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'CmdReserveSpaceForCommandsInfoNVX',--- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'-cmdReserveSpaceForCommandsNVX :: forall io . MonadIO io => CommandBuffer -> ("reserveSpaceInfo" ::: CmdReserveSpaceForCommandsInfoNVX) -> io ()-cmdReserveSpaceForCommandsNVX commandBuffer reserveSpaceInfo = liftIO . evalContT $ do-  let vkCmdReserveSpaceForCommandsNVX' = mkVkCmdReserveSpaceForCommandsNVX (pVkCmdReserveSpaceForCommandsNVX (deviceCmds (commandBuffer :: CommandBuffer)))-  pReserveSpaceInfo <- ContT $ withCStruct (reserveSpaceInfo)-  lift $ vkCmdReserveSpaceForCommandsNVX' (commandBufferHandle (commandBuffer)) pReserveSpaceInfo-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateIndirectCommandsLayoutNVX-  :: FunPtr (Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNVX -> IO Result) -> Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNVX -> IO Result---- | vkCreateIndirectCommandsLayoutNVX - Create an indirect command layout--- object------ = Parameters------ -   @device@ is the logical device that creates the indirect command---     layout.------ -   @pCreateInfo@ is a pointer to a---     'IndirectCommandsLayoutCreateInfoNVX' structure containing---     parameters affecting creation of the indirect command layout.------ -   @pAllocator@ controls host memory allocation as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>---     chapter.------ -   @pIndirectCommandsLayout@ is a pointer to a---     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'---     handle in which the resulting indirect command layout is returned.------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @pCreateInfo@ /must/ be a valid pointer to a valid---     'IndirectCommandsLayoutCreateInfoNVX' structure------ -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid---     pointer to a valid---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   @pIndirectCommandsLayout@ /must/ be a valid pointer to a---     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'---     handle------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Graphics.Vulkan.Core10.Handles.Device',--- 'IndirectCommandsLayoutCreateInfoNVX',--- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'-createIndirectCommandsLayoutNVX :: forall io . MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io (IndirectCommandsLayoutNVX)-createIndirectCommandsLayoutNVX device createInfo allocator = liftIO . evalContT $ do-  let vkCreateIndirectCommandsLayoutNVX' = mkVkCreateIndirectCommandsLayoutNVX (pVkCreateIndirectCommandsLayoutNVX (deviceCmds (device :: Device)))-  pCreateInfo <- ContT $ withCStruct (createInfo)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPIndirectCommandsLayout <- ContT $ bracket (callocBytes @IndirectCommandsLayoutNVX 8) free-  r <- lift $ vkCreateIndirectCommandsLayoutNVX' (deviceHandle (device)) pCreateInfo pAllocator (pPIndirectCommandsLayout)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pIndirectCommandsLayout <- lift $ peek @IndirectCommandsLayoutNVX pPIndirectCommandsLayout-  pure $ (pIndirectCommandsLayout)---- | A safe wrapper for 'createIndirectCommandsLayoutNVX' and--- 'destroyIndirectCommandsLayoutNVX' using 'bracket'------ The allocated value must not be returned from the provided computation-withIndirectCommandsLayoutNVX :: forall r . Device -> IndirectCommandsLayoutCreateInfoNVX -> Maybe AllocationCallbacks -> ((IndirectCommandsLayoutNVX) -> IO r) -> IO r-withIndirectCommandsLayoutNVX device pCreateInfo pAllocator =-  bracket-    (createIndirectCommandsLayoutNVX device pCreateInfo pAllocator)-    (\(o0) -> destroyIndirectCommandsLayoutNVX device o0 pAllocator)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkDestroyIndirectCommandsLayoutNVX-  :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNVX -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutNVX -> Ptr AllocationCallbacks -> IO ()---- | vkDestroyIndirectCommandsLayoutNVX - Destroy an object table------ = Parameters------ -   @device@ is the logical device that destroys the layout.------ -   @indirectCommandsLayout@ is the table to destroy.------ -   @pAllocator@ controls host memory allocation as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>---     chapter.------ == Valid Usage------ -   All submitted commands that refer to @indirectCommandsLayout@ /must/---     have completed execution------ -   If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     were provided when @objectTable@ was created, a compatible set of---     callbacks /must/ be provided here------ -   If no---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     were provided when @objectTable@ was created, @pAllocator@ /must/ be---     @NULL@------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @indirectCommandsLayout@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'---     handle------ -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid---     pointer to a valid---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   @indirectCommandsLayout@ /must/ have been created, allocated, or---     retrieved from @device@------ = See Also------ 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Graphics.Vulkan.Core10.Handles.Device',--- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'-destroyIndirectCommandsLayoutNVX :: forall io . MonadIO io => Device -> IndirectCommandsLayoutNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()-destroyIndirectCommandsLayoutNVX device indirectCommandsLayout allocator = liftIO . evalContT $ do-  let vkDestroyIndirectCommandsLayoutNVX' = mkVkDestroyIndirectCommandsLayoutNVX (pVkDestroyIndirectCommandsLayoutNVX (deviceCmds (device :: Device)))-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  lift $ vkDestroyIndirectCommandsLayoutNVX' (deviceHandle (device)) (indirectCommandsLayout) pAllocator-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateObjectTableNVX-  :: FunPtr (Ptr Device_T -> Ptr ObjectTableCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr ObjectTableNVX -> IO Result) -> Ptr Device_T -> Ptr ObjectTableCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr ObjectTableNVX -> IO Result---- | vkCreateObjectTableNVX - Create an object table------ = Parameters------ -   @device@ is the logical device that creates the object table.------ -   @pCreateInfo@ is a pointer to a 'ObjectTableCreateInfoNVX' structure---     containing parameters affecting creation of the table.------ -   @pAllocator@ controls host memory allocation as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>---     chapter.------ -   @pObjectTable@ is a pointer to a---     'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle in which---     the resulting object table is returned.------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @pCreateInfo@ /must/ be a valid pointer to a valid---     'ObjectTableCreateInfoNVX' structure------ -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid---     pointer to a valid---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   @pObjectTable@ /must/ be a valid pointer to a---     'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Graphics.Vulkan.Core10.Handles.Device', 'ObjectTableCreateInfoNVX',--- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'-createObjectTableNVX :: forall io . MonadIO io => Device -> ObjectTableCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io (ObjectTableNVX)-createObjectTableNVX device createInfo allocator = liftIO . evalContT $ do-  let vkCreateObjectTableNVX' = mkVkCreateObjectTableNVX (pVkCreateObjectTableNVX (deviceCmds (device :: Device)))-  pCreateInfo <- ContT $ withCStruct (createInfo)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPObjectTable <- ContT $ bracket (callocBytes @ObjectTableNVX 8) free-  r <- lift $ vkCreateObjectTableNVX' (deviceHandle (device)) pCreateInfo pAllocator (pPObjectTable)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pObjectTable <- lift $ peek @ObjectTableNVX pPObjectTable-  pure $ (pObjectTable)---- | A safe wrapper for 'createObjectTableNVX' and 'destroyObjectTableNVX'--- using 'bracket'------ The allocated value must not be returned from the provided computation-withObjectTableNVX :: forall r . Device -> ObjectTableCreateInfoNVX -> Maybe AllocationCallbacks -> ((ObjectTableNVX) -> IO r) -> IO r-withObjectTableNVX device pCreateInfo pAllocator =-  bracket-    (createObjectTableNVX device pCreateInfo pAllocator)-    (\(o0) -> destroyObjectTableNVX device o0 pAllocator)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkDestroyObjectTableNVX-  :: FunPtr (Ptr Device_T -> ObjectTableNVX -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ObjectTableNVX -> Ptr AllocationCallbacks -> IO ()---- | vkDestroyObjectTableNVX - Destroy an object table------ = Parameters------ -   @device@ is the logical device that destroys the table.------ -   @objectTable@ is the table to destroy.------ -   @pAllocator@ controls host memory allocation as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>---     chapter.------ == Valid Usage------ -   All submitted commands that refer to @objectTable@ /must/ have---     completed execution.------ -   If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     were provided when @objectTable@ was created, a compatible set of---     callbacks /must/ be provided here.------ -   If no---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     were provided when @objectTable@ was created, @pAllocator@ /must/ be---     @NULL@.------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @objectTable@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle------ -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid---     pointer to a valid---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   @objectTable@ /must/ have been created, allocated, or retrieved from---     @device@------ == Host Synchronization------ -   Host access to @objectTable@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Graphics.Vulkan.Core10.Handles.Device',--- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'-destroyObjectTableNVX :: forall io . MonadIO io => Device -> ObjectTableNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()-destroyObjectTableNVX device objectTable allocator = liftIO . evalContT $ do-  let vkDestroyObjectTableNVX' = mkVkDestroyObjectTableNVX (pVkDestroyObjectTableNVX (deviceCmds (device :: Device)))-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  lift $ vkDestroyObjectTableNVX' (deviceHandle (device)) (objectTable) pAllocator-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkRegisterObjectsNVX-  :: FunPtr (Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr (Ptr ObjectTableEntryNVX) -> Ptr Word32 -> IO Result) -> Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr (Ptr ObjectTableEntryNVX) -> Ptr Word32 -> IO Result---- | vkRegisterObjectsNVX - Register resource bindings in an object table------ = Parameters------ -   @device@ is the logical device that creates the object table.------ -   @objectTable@ is the table for which the resources are registered.------ -   @objectCount@ is the number of resources to register.------ -   @ppObjectTableEntries@ provides an array for detailed binding---     informations. Each array element is a pointer to a structure of type---     'ObjectTablePipelineEntryNVX', 'ObjectTableDescriptorSetEntryNVX',---     'ObjectTableVertexBufferEntryNVX', 'ObjectTableIndexBufferEntryNVX'---     or 'ObjectTablePushConstantEntryNVX' (see below for details).------ -   @pObjectIndices@ are the indices at which each resource is---     registered.------ == Valid Usage------ -   The contents of @pObjectTableEntry@ /must/ yield plausible bindings---     supported by the device.------ -   At any @pObjectIndices@ there /must/ not be a registered resource---     already.------ -   Any value inside @pObjectIndices@ /must/ be below the appropriate---     'ObjectTableCreateInfoNVX'::@pObjectEntryCounts@ limits provided at---     @objectTable@ creation time.------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @objectTable@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle------ -   @ppObjectTableEntries@ /must/ be a valid pointer to an array of---     @objectCount@ valid 'ObjectTableEntryNVX' structures------ -   @pObjectIndices@ /must/ be a valid pointer to an array of---     @objectCount@ @uint32_t@ values------ -   @objectCount@ /must/ be greater than @0@------ -   @objectTable@ /must/ have been created, allocated, or retrieved from---     @device@------ == Host Synchronization------ -   Host access to @objectTable@ /must/ be externally synchronized------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Device', 'ObjectTableEntryNVX',--- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'-registerObjectsNVX :: forall io . MonadIO io => Device -> ObjectTableNVX -> ("objectTableEntries" ::: Vector ObjectTableEntryNVX) -> ("objectIndices" ::: Vector Word32) -> io ()-registerObjectsNVX device objectTable objectTableEntries objectIndices = liftIO . evalContT $ do-  let vkRegisterObjectsNVX' = mkVkRegisterObjectsNVX (pVkRegisterObjectsNVX (deviceCmds (device :: Device)))-  let ppObjectTableEntriesLength = Data.Vector.length $ (objectTableEntries)-  let pObjectIndicesLength = Data.Vector.length $ (objectIndices)-  lift $ unless (pObjectIndicesLength == ppObjectTableEntriesLength) $-    throwIO $ IOError Nothing InvalidArgument "" "pObjectIndices and ppObjectTableEntries must have the same length" Nothing Nothing-  pPpObjectTableEntries <- ContT $ allocaBytesAligned @(Ptr ObjectTableEntryNVX) ((Data.Vector.length (objectTableEntries)) * 8) 8-  Data.Vector.imapM_ (\i e -> do-    ppObjectTableEntries <- ContT $ withCStruct (e)-    lift $ poke (pPpObjectTableEntries `plusPtr` (8 * (i)) :: Ptr (Ptr ObjectTableEntryNVX)) ppObjectTableEntries) (objectTableEntries)-  pPObjectIndices <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (objectIndices)) * 4) 4-  lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectIndices `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (objectIndices)-  r <- lift $ vkRegisterObjectsNVX' (deviceHandle (device)) (objectTable) ((fromIntegral ppObjectTableEntriesLength :: Word32)) (pPpObjectTableEntries) (pPObjectIndices)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))---- | A safe wrapper for 'registerObjectsNVX' and 'unregisterObjectsNVX' using--- 'bracket_'-withRegisteredObjectsNVX :: forall r . Device -> ObjectTableNVX -> Vector ObjectTableEntryNVX -> Vector Word32 -> Vector ObjectEntryTypeNVX -> IO r -> IO r-withRegisteredObjectsNVX device objectTable ppObjectTableEntries pObjectIndices pObjectEntryTypes =-  bracket_-    (registerObjectsNVX device objectTable ppObjectTableEntries pObjectIndices)-    (unregisterObjectsNVX device objectTable pObjectEntryTypes pObjectIndices)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkUnregisterObjectsNVX-  :: FunPtr (Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr ObjectEntryTypeNVX -> Ptr Word32 -> IO Result) -> Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr ObjectEntryTypeNVX -> Ptr Word32 -> IO Result---- | vkUnregisterObjectsNVX - Unregister resource bindings in an object table------ = Parameters------ -   @device@ is the logical device that creates the object table.------ -   @objectTable@ is the table from which the resources are---     unregistered.------ -   @objectCount@ is the number of resources being removed from the---     object table.------ -   @pObjectEntryType@ provides an array of 'ObjectEntryTypeNVX' for the---     resources being removed.------ -   @pObjectIndices@ provides the array of object indices to be removed.------ == Valid Usage------ -   At any @pObjectIndices@ there /must/ be a registered resource---     already.------ -   The @pObjectEntryTypes@ of the resource at @pObjectIndices@ /must/---     match.------ -   All operations on the device using the registered resource /must/---     have been completed.------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @objectTable@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle------ -   @pObjectEntryTypes@ /must/ be a valid pointer to an array of---     @objectCount@ valid 'ObjectEntryTypeNVX' values------ -   @pObjectIndices@ /must/ be a valid pointer to an array of---     @objectCount@ @uint32_t@ values------ -   @objectCount@ /must/ be greater than @0@------ -   @objectTable@ /must/ have been created, allocated, or retrieved from---     @device@------ == Host Synchronization------ -   Host access to @objectTable@ /must/ be externally synchronized------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Device', 'ObjectEntryTypeNVX',--- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'-unregisterObjectsNVX :: forall io . MonadIO io => Device -> ObjectTableNVX -> ("objectEntryTypes" ::: Vector ObjectEntryTypeNVX) -> ("objectIndices" ::: Vector Word32) -> io ()-unregisterObjectsNVX device objectTable objectEntryTypes objectIndices = liftIO . evalContT $ do-  let vkUnregisterObjectsNVX' = mkVkUnregisterObjectsNVX (pVkUnregisterObjectsNVX (deviceCmds (device :: Device)))-  let pObjectEntryTypesLength = Data.Vector.length $ (objectEntryTypes)-  let pObjectIndicesLength = Data.Vector.length $ (objectIndices)-  lift $ unless (pObjectIndicesLength == pObjectEntryTypesLength) $-    throwIO $ IOError Nothing InvalidArgument "" "pObjectIndices and pObjectEntryTypes must have the same length" Nothing Nothing-  pPObjectEntryTypes <- ContT $ allocaBytesAligned @ObjectEntryTypeNVX ((Data.Vector.length (objectEntryTypes)) * 4) 4-  lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryTypes `plusPtr` (4 * (i)) :: Ptr ObjectEntryTypeNVX) (e)) (objectEntryTypes)-  pPObjectIndices <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (objectIndices)) * 4) 4-  lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectIndices `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (objectIndices)-  r <- lift $ vkUnregisterObjectsNVX' (deviceHandle (device)) (objectTable) ((fromIntegral pObjectEntryTypesLength :: Word32)) (pPObjectEntryTypes) (pPObjectIndices)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-  :: FunPtr (Ptr PhysicalDevice_T -> Ptr DeviceGeneratedCommandsFeaturesNVX -> Ptr DeviceGeneratedCommandsLimitsNVX -> IO ()) -> Ptr PhysicalDevice_T -> Ptr DeviceGeneratedCommandsFeaturesNVX -> Ptr DeviceGeneratedCommandsLimitsNVX -> IO ()---- | vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX - Returns--- device-generated commands related properties of a physical device------ = Parameters------ -   @physicalDevice@ is the handle to the physical device whose---     properties will be queried.------ -   @pFeatures@ is a pointer to a 'DeviceGeneratedCommandsFeaturesNVX'---     structure in which features are returned.------ -   @pLimits@ is a pointer to a 'DeviceGeneratedCommandsLimitsNVX'---     structure in which limitations are returned.------ == Valid Usage (Implicit)------ = See Also------ 'DeviceGeneratedCommandsFeaturesNVX',--- 'DeviceGeneratedCommandsLimitsNVX',--- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'-getPhysicalDeviceGeneratedCommandsPropertiesNVX :: forall io . MonadIO io => PhysicalDevice -> io (DeviceGeneratedCommandsFeaturesNVX, DeviceGeneratedCommandsLimitsNVX)-getPhysicalDeviceGeneratedCommandsPropertiesNVX physicalDevice = liftIO . evalContT $ do-  let vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX' = mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX (pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX (instanceCmds (physicalDevice :: PhysicalDevice)))-  pPFeatures <- ContT (withZeroCStruct @DeviceGeneratedCommandsFeaturesNVX)-  pPLimits <- ContT (withZeroCStruct @DeviceGeneratedCommandsLimitsNVX)-  lift $ vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX' (physicalDeviceHandle (physicalDevice)) (pPFeatures) (pPLimits)-  pFeatures <- lift $ peekCStruct @DeviceGeneratedCommandsFeaturesNVX pPFeatures-  pLimits <- lift $ peekCStruct @DeviceGeneratedCommandsLimitsNVX pPLimits-  pure $ (pFeatures, pLimits)----- | VkDeviceGeneratedCommandsFeaturesNVX - Structure specifying physical--- device support------ == Valid Usage (Implicit)------ = See Also------ 'Graphics.Vulkan.Core10.BaseType.Bool32',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'getPhysicalDeviceGeneratedCommandsPropertiesNVX'-data DeviceGeneratedCommandsFeaturesNVX = DeviceGeneratedCommandsFeaturesNVX-  { -- | @computeBindingPointSupport@ specifies whether the-    -- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' supports entries-    -- with 'OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX' bit set and-    -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' supports-    -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.-    computeBindingPointSupport :: Bool }-  deriving (Typeable)-deriving instance Show DeviceGeneratedCommandsFeaturesNVX--instance ToCStruct DeviceGeneratedCommandsFeaturesNVX where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DeviceGeneratedCommandsFeaturesNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (computeBindingPointSupport))-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))-    f--instance FromCStruct DeviceGeneratedCommandsFeaturesNVX where-  peekCStruct p = do-    computeBindingPointSupport <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))-    pure $ DeviceGeneratedCommandsFeaturesNVX-             (bool32ToBool computeBindingPointSupport)--instance Storable DeviceGeneratedCommandsFeaturesNVX where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero DeviceGeneratedCommandsFeaturesNVX where-  zero = DeviceGeneratedCommandsFeaturesNVX-           zero----- | VkDeviceGeneratedCommandsLimitsNVX - Structure specifying physical--- device limits------ == Valid Usage (Implicit)------ = See Also------ 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'getPhysicalDeviceGeneratedCommandsPropertiesNVX'-data DeviceGeneratedCommandsLimitsNVX = DeviceGeneratedCommandsLimitsNVX-  { -- | @maxIndirectCommandsLayoutTokenCount@ the maximum number of tokens in-    -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'.-    maxIndirectCommandsLayoutTokenCount :: Word32-  , -- | @maxObjectEntryCounts@ the maximum number of entries per resource type-    -- in 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'.-    maxObjectEntryCounts :: Word32-  , -- | @minSequenceCountBufferOffsetAlignment@ the minimum alignment for memory-    -- addresses optionally used in 'cmdProcessCommandsNVX'.-    minSequenceCountBufferOffsetAlignment :: Word32-  , -- | @minSequenceIndexBufferOffsetAlignment@ the minimum alignment for memory-    -- addresses optionally used in 'cmdProcessCommandsNVX'.-    minSequenceIndexBufferOffsetAlignment :: Word32-  , -- | @minCommandsTokenBufferOffsetAlignment@ the minimum alignment for memory-    -- addresses optionally used in 'cmdProcessCommandsNVX'.-    minCommandsTokenBufferOffsetAlignment :: Word32-  }-  deriving (Typeable)-deriving instance Show DeviceGeneratedCommandsLimitsNVX--instance ToCStruct DeviceGeneratedCommandsLimitsNVX where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p DeviceGeneratedCommandsLimitsNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxIndirectCommandsLayoutTokenCount)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxObjectEntryCounts)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (minSequenceCountBufferOffsetAlignment)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (minSequenceIndexBufferOffsetAlignment)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (minCommandsTokenBufferOffsetAlignment)-    f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    f--instance FromCStruct DeviceGeneratedCommandsLimitsNVX where-  peekCStruct p = do-    maxIndirectCommandsLayoutTokenCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    maxObjectEntryCounts <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    minSequenceCountBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    minSequenceIndexBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    minCommandsTokenBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pure $ DeviceGeneratedCommandsLimitsNVX-             maxIndirectCommandsLayoutTokenCount maxObjectEntryCounts minSequenceCountBufferOffsetAlignment minSequenceIndexBufferOffsetAlignment minCommandsTokenBufferOffsetAlignment--instance Storable DeviceGeneratedCommandsLimitsNVX where-  sizeOf ~_ = 40-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero DeviceGeneratedCommandsLimitsNVX where-  zero = DeviceGeneratedCommandsLimitsNVX-           zero-           zero-           zero-           zero-           zero----- | VkIndirectCommandsTokenNVX - Structure specifying parameters for the--- reservation of command buffer space------ == Valid Usage------ -   The @buffer@’s usage flag /must/ have the---     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'---     bit set.------ -   The @offset@ /must/ be aligned to---     'DeviceGeneratedCommandsLimitsNVX'::@minCommandsTokenBufferOffsetAlignment@.------ == Valid Usage (Implicit)------ -   @tokenType@ /must/ be a valid 'IndirectCommandsTokenTypeNVX' value------ -   @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'---     handle------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Buffer', 'CmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',--- 'IndirectCommandsTokenTypeNVX'-data IndirectCommandsTokenNVX = IndirectCommandsTokenNVX-  { -- | @tokenType@ specifies the token command type.-    tokenType :: IndirectCommandsTokenTypeNVX-  , -- | @buffer@ specifies the 'Graphics.Vulkan.Core10.Handles.Buffer' storing-    -- the functional arguments for each squence. These argumetns can be-    -- written by the device.-    buffer :: Buffer-  , -- | @offset@ specified an offset into @buffer@ where the arguments start.-    offset :: DeviceSize-  }-  deriving (Typeable)-deriving instance Show IndirectCommandsTokenNVX--instance ToCStruct IndirectCommandsTokenNVX where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p IndirectCommandsTokenNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (tokenType)-    poke ((p `plusPtr` 8 :: Ptr Buffer)) (buffer)-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (offset)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (zero)-    poke ((p `plusPtr` 8 :: Ptr Buffer)) (zero)-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)-    f--instance FromCStruct IndirectCommandsTokenNVX where-  peekCStruct p = do-    tokenType <- peek @IndirectCommandsTokenTypeNVX ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX))-    buffer <- peek @Buffer ((p `plusPtr` 8 :: Ptr Buffer))-    offset <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))-    pure $ IndirectCommandsTokenNVX-             tokenType buffer offset--instance Storable IndirectCommandsTokenNVX where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero IndirectCommandsTokenNVX where-  zero = IndirectCommandsTokenNVX-           zero-           zero-           zero----- | VkIndirectCommandsLayoutTokenNVX - Struct specifying the details of an--- indirect command layout token------ == Valid Usage (Implicit)------ = See Also------ 'IndirectCommandsLayoutCreateInfoNVX', 'IndirectCommandsTokenTypeNVX'-data IndirectCommandsLayoutTokenNVX = IndirectCommandsLayoutTokenNVX-  { -- | @tokenType@ /must/ be a valid 'IndirectCommandsTokenTypeNVX' value-    tokenType :: IndirectCommandsTokenTypeNVX-  , -- | @bindingUnit@ /must/ stay within device supported limits for the-    -- appropriate commands.-    bindingUnit :: Word32-  , -- | @dynamicCount@ /must/ stay within device supported limits for the-    -- appropriate commands.-    dynamicCount :: Word32-  , -- | @divisor@ /must/ be greater than @0@ and a power of two.-    divisor :: Word32-  }-  deriving (Typeable)-deriving instance Show IndirectCommandsLayoutTokenNVX--instance ToCStruct IndirectCommandsLayoutTokenNVX where-  withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p IndirectCommandsLayoutTokenNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (tokenType)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (bindingUnit)-    poke ((p `plusPtr` 8 :: Ptr Word32)) (dynamicCount)-    poke ((p `plusPtr` 12 :: Ptr Word32)) (divisor)-    f-  cStructSize = 16-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (zero)-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)-    f--instance FromCStruct IndirectCommandsLayoutTokenNVX where-  peekCStruct p = do-    tokenType <- peek @IndirectCommandsTokenTypeNVX ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX))-    bindingUnit <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))-    dynamicCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))-    divisor <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))-    pure $ IndirectCommandsLayoutTokenNVX-             tokenType bindingUnit dynamicCount divisor--instance Storable IndirectCommandsLayoutTokenNVX where-  sizeOf ~_ = 16-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero IndirectCommandsLayoutTokenNVX where-  zero = IndirectCommandsLayoutTokenNVX-           zero-           zero-           zero-           zero----- | VkIndirectCommandsLayoutCreateInfoNVX - Structure specifying the--- parameters of a newly created indirect commands layout object------ = Description------ The following code illustrates some of the key flags:------ > void cmdProcessAllSequences(cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferoffset)--- > {--- >   for (s = 0; s < sequencesCount; s++)--- >   {--- >     sequence = s;--- >--- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX) {--- >       sequence = incoherent_implementation_dependent_permutation[ sequence ];--- >     }--- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX) {--- >       sequence = indexbuffer.load_uint32( sequence * sizeof(uint32_t) + indexbufferoffset);--- >     }--- >--- >     cmdProcessSequence( cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequence );--- >   }--- > }------ == Valid Usage------ -   @tokenCount@ /must/ be greater than @0@ and below---     'DeviceGeneratedCommandsLimitsNVX'::@maxIndirectCommandsLayoutTokenCount@------ -   If the---     'DeviceGeneratedCommandsFeaturesNVX'::@computeBindingPointSupport@---     feature is not enabled, then @pipelineBindPoint@ /must/ not be---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'------ -   If @pTokens@ contains an entry of---     'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX' it /must/ be the first---     element of the array and there /must/ be only a single element of---     such token type.------ -   All state binding tokens in @pTokens@ /must/ occur prior work---     provoking tokens ('INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX',---     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX',---     'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX').------ -   The content of @pTokens@ /must/ include one single work provoking---     token that is compatible with the @pipelineBindPoint@.------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX'------ -   @pNext@ /must/ be @NULL@------ -   @pipelineBindPoint@ /must/ be a valid---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'---     value------ -   @flags@ /must/ be a valid combination of---     'IndirectCommandsLayoutUsageFlagBitsNVX' values------ -   @flags@ /must/ not be @0@------ -   @pTokens@ /must/ be a valid pointer to an array of @tokenCount@---     valid 'IndirectCommandsLayoutTokenNVX' structures------ -   @tokenCount@ /must/ be greater than @0@------ = See Also------ 'IndirectCommandsLayoutTokenNVX', 'IndirectCommandsLayoutUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'createIndirectCommandsLayoutNVX'-data IndirectCommandsLayoutCreateInfoNVX = IndirectCommandsLayoutCreateInfoNVX-  { -- | @pipelineBindPoint@ is the-    -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' that-    -- this layout targets.-    pipelineBindPoint :: PipelineBindPoint-  , -- | @flags@ is a bitmask of 'IndirectCommandsLayoutUsageFlagBitsNVX'-    -- specifying usage hints of this layout.-    flags :: IndirectCommandsLayoutUsageFlagsNVX-  , -- | @pTokens@ is an array describing each command token in detail. See-    -- 'IndirectCommandsTokenTypeNVX' and 'IndirectCommandsLayoutTokenNVX'-    -- below for details.-    tokens :: Vector IndirectCommandsLayoutTokenNVX-  }-  deriving (Typeable)-deriving instance Show IndirectCommandsLayoutCreateInfoNVX--instance ToCStruct IndirectCommandsLayoutCreateInfoNVX where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p IndirectCommandsLayoutCreateInfoNVX{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)-    lift $ poke ((p `plusPtr` 20 :: Ptr IndirectCommandsLayoutUsageFlagsNVX)) (flags)-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tokens)) :: Word32))-    pPTokens' <- ContT $ allocaBytesAligned @IndirectCommandsLayoutTokenNVX ((Data.Vector.length (tokens)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsLayoutTokenNVX) (e) . ($ ())) (tokens)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNVX))) (pPTokens')-    lift $ f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)-    lift $ poke ((p `plusPtr` 20 :: Ptr IndirectCommandsLayoutUsageFlagsNVX)) (zero)-    pPTokens' <- ContT $ allocaBytesAligned @IndirectCommandsLayoutTokenNVX ((Data.Vector.length (mempty)) * 16) 4-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsLayoutTokenNVX) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNVX))) (pPTokens')-    lift $ f--instance FromCStruct IndirectCommandsLayoutCreateInfoNVX where-  peekCStruct p = do-    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))-    flags <- peek @IndirectCommandsLayoutUsageFlagsNVX ((p `plusPtr` 20 :: Ptr IndirectCommandsLayoutUsageFlagsNVX))-    tokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    pTokens <- peek @(Ptr IndirectCommandsLayoutTokenNVX) ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNVX)))-    pTokens' <- generateM (fromIntegral tokenCount) (\i -> peekCStruct @IndirectCommandsLayoutTokenNVX ((pTokens `advancePtrBytes` (16 * (i)) :: Ptr IndirectCommandsLayoutTokenNVX)))-    pure $ IndirectCommandsLayoutCreateInfoNVX-             pipelineBindPoint flags pTokens'--instance Zero IndirectCommandsLayoutCreateInfoNVX where-  zero = IndirectCommandsLayoutCreateInfoNVX-           zero-           zero-           mempty----- | VkCmdProcessCommandsInfoNVX - Structure specifying parameters for the--- generation of commands------ == Valid Usage------ -   The provided @objectTable@ /must/ include all objects referenced by---     the generation process------ -   @indirectCommandsTokenCount@ /must/ match the---     @indirectCommandsLayout@’s @tokenCount@------ -   The @tokenType@ member of each entry in the---     @pIndirectCommandsTokens@ array /must/ match the values used at---     creation time of @indirectCommandsLayout@------ -   If @targetCommandBuffer@ is provided, it /must/ have reserved---     command space------ -   If @targetCommandBuffer@ is provided, the @objectTable@ /must/ match---     the reservation’s @objectTable@ and /must/ have had all referenced---     objects registered at reservation time------ -   If @targetCommandBuffer@ is provided, the @indirectCommandsLayout@---     /must/ match the reservation’s @indirectCommandsLayout@------ -   If @targetCommandBuffer@ is provided, the @maxSequencesCount@ /must/---     not exceed the reservation’s @maxSequencesCount@------ -   If @sequencesCountBuffer@ is used, its usage flag /must/ have the---     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'---     bit set------ -   If @sequencesCountBuffer@ is used, @sequencesCountOffset@ /must/ be---     aligned to---     'DeviceGeneratedCommandsLimitsNVX'::@minSequenceCountBufferOffsetAlignment@------ -   If @sequencesIndexBuffer@ is used, its usage flag /must/ have the---     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'---     bit set------ -   If @sequencesIndexBuffer@ is used, @sequencesIndexOffset@ /must/ be---     aligned to---     'DeviceGeneratedCommandsLimitsNVX'::@minSequenceIndexBufferOffsetAlignment@------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX'------ -   @pNext@ /must/ be @NULL@------ -   @objectTable@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle------ -   @indirectCommandsLayout@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'---     handle------ -   @pIndirectCommandsTokens@ /must/ be a valid pointer to an array of---     @indirectCommandsTokenCount@ valid 'IndirectCommandsTokenNVX'---     structures------ -   If @targetCommandBuffer@ is not @NULL@, @targetCommandBuffer@ /must/---     be a valid 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle------ -   If @sequencesCountBuffer@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @sequencesCountBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   If @sequencesIndexBuffer@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @sequencesIndexBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   @indirectCommandsTokenCount@ /must/ be greater than @0@------ -   Each of @indirectCommandsLayout@, @objectTable@,---     @sequencesCountBuffer@, @sequencesIndexBuffer@, and---     @targetCommandBuffer@ that are valid handles of non-ignored---     parameters /must/ have been created, allocated, or retrieved from---     the same 'Graphics.Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @objectTable@ /must/ be externally synchronized------ -   Host access to @targetCommandBuffer@ /must/ be externally---     synchronized------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Buffer',--- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',--- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX',--- 'IndirectCommandsTokenNVX',--- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'cmdProcessCommandsNVX'-data CmdProcessCommandsInfoNVX = CmdProcessCommandsInfoNVX-  { -- | @objectTable@ is the 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'-    -- to be used for the generation process. Only registered objects at the-    -- time 'cmdReserveSpaceForCommandsNVX' is called, will be taken into-    -- account for the reservation.-    objectTable :: ObjectTableNVX-  , -- | @indirectCommandsLayout@ is the-    -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' that-    -- provides the command sequence to generate.-    indirectCommandsLayout :: IndirectCommandsLayoutNVX-  , -- | @pIndirectCommandsTokens@ provides an array of-    -- 'IndirectCommandsTokenNVX' that reference the input data for each token-    -- command.-    indirectCommandsTokens :: Vector IndirectCommandsTokenNVX-  , -- | @maxSequencesCount@ is the maximum number of sequences for which command-    -- buffer space will be reserved. If @sequencesCountBuffer@ is-    -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', this is also the-    -- actual number of sequences generated.-    maxSequencesCount :: Word32-  , -- | @targetCommandBuffer@ /can/ be the secondary-    -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' in which the commands-    -- should be recorded. If @targetCommandBuffer@ is @NULL@ an implicit-    -- reservation as well as execution takes place on the processing-    -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'.-    targetCommandBuffer :: Ptr CommandBuffer_T-  , -- | @sequencesCountBuffer@ /can/ be 'Graphics.Vulkan.Core10.Handles.Buffer'-    -- from which the actual amount of sequences is sourced from as @uint32_t@-    -- value.-    sequencesCountBuffer :: Buffer-  , -- | @sequencesCountOffset@ is the byte offset into @sequencesCountBuffer@-    -- where the count value is stored.-    sequencesCountOffset :: DeviceSize-  , -- | @sequencesIndexBuffer@ /must/ be set if @indirectCommandsLayout@’s-    -- 'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX' is set and-    -- provides the used sequence indices as @uint32_t@ array. Otherwise it-    -- /must/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.-    sequencesIndexBuffer :: Buffer-  , -- | @sequencesIndexOffset@ is the byte offset into @sequencesIndexBuffer@-    -- where the index values start.-    sequencesIndexOffset :: DeviceSize-  }-  deriving (Typeable)-deriving instance Show CmdProcessCommandsInfoNVX--instance ToCStruct CmdProcessCommandsInfoNVX where-  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p CmdProcessCommandsInfoNVX{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (objectTable)-    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (indirectCommandsLayout)-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (indirectCommandsTokens)) :: Word32))-    pPIndirectCommandsTokens' <- ContT $ allocaBytesAligned @IndirectCommandsTokenNVX ((Data.Vector.length (indirectCommandsTokens)) * 24) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPIndirectCommandsTokens' `plusPtr` (24 * (i)) :: Ptr IndirectCommandsTokenNVX) (e) . ($ ())) (indirectCommandsTokens)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr IndirectCommandsTokenNVX))) (pPIndirectCommandsTokens')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxSequencesCount)-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr CommandBuffer_T))) (targetCommandBuffer)-    lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (sequencesCountBuffer)-    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (sequencesCountOffset)-    lift $ poke ((p `plusPtr` 80 :: Ptr Buffer)) (sequencesIndexBuffer)-    lift $ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (sequencesIndexOffset)-    lift $ f-  cStructSize = 96-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (zero)-    pPIndirectCommandsTokens' <- ContT $ allocaBytesAligned @IndirectCommandsTokenNVX ((Data.Vector.length (mempty)) * 24) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPIndirectCommandsTokens' `plusPtr` (24 * (i)) :: Ptr IndirectCommandsTokenNVX) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr IndirectCommandsTokenNVX))) (pPIndirectCommandsTokens')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    lift $ f--instance FromCStruct CmdProcessCommandsInfoNVX where-  peekCStruct p = do-    objectTable <- peek @ObjectTableNVX ((p `plusPtr` 16 :: Ptr ObjectTableNVX))-    indirectCommandsLayout <- peek @IndirectCommandsLayoutNVX ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX))-    indirectCommandsTokenCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pIndirectCommandsTokens <- peek @(Ptr IndirectCommandsTokenNVX) ((p `plusPtr` 40 :: Ptr (Ptr IndirectCommandsTokenNVX)))-    pIndirectCommandsTokens' <- generateM (fromIntegral indirectCommandsTokenCount) (\i -> peekCStruct @IndirectCommandsTokenNVX ((pIndirectCommandsTokens `advancePtrBytes` (24 * (i)) :: Ptr IndirectCommandsTokenNVX)))-    maxSequencesCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    targetCommandBuffer <- peek @(Ptr CommandBuffer_T) ((p `plusPtr` 56 :: Ptr (Ptr CommandBuffer_T)))-    sequencesCountBuffer <- peek @Buffer ((p `plusPtr` 64 :: Ptr Buffer))-    sequencesCountOffset <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))-    sequencesIndexBuffer <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))-    sequencesIndexOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))-    pure $ CmdProcessCommandsInfoNVX-             objectTable indirectCommandsLayout pIndirectCommandsTokens' maxSequencesCount targetCommandBuffer sequencesCountBuffer sequencesCountOffset sequencesIndexBuffer sequencesIndexOffset--instance Zero CmdProcessCommandsInfoNVX where-  zero = CmdProcessCommandsInfoNVX-           zero-           zero-           mempty-           zero-           zero-           zero-           zero-           zero-           zero----- | VkCmdReserveSpaceForCommandsInfoNVX - Structure specifying parameters--- for the reservation of command buffer space------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX'------ -   @pNext@ /must/ be @NULL@------ -   @objectTable@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle------ -   @indirectCommandsLayout@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'---     handle------ -   Both of @indirectCommandsLayout@, and @objectTable@ /must/ have been---     created, allocated, or retrieved from the same---     'Graphics.Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to @objectTable@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'cmdReserveSpaceForCommandsNVX'-data CmdReserveSpaceForCommandsInfoNVX = CmdReserveSpaceForCommandsInfoNVX-  { -- | @objectTable@ is the 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'-    -- to be used for the generation process. Only registered objects at the-    -- time 'cmdReserveSpaceForCommandsNVX' is called, will be taken into-    -- account for the reservation.-    objectTable :: ObjectTableNVX-  , -- | @indirectCommandsLayout@ is the-    -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' that-    -- /must/ also be used at generation time.-    indirectCommandsLayout :: IndirectCommandsLayoutNVX-  , -- | @maxSequencesCount@ is the maximum number of sequences for which command-    -- buffer space will be reserved.-    maxSequencesCount :: Word32-  }-  deriving (Typeable)-deriving instance Show CmdReserveSpaceForCommandsInfoNVX--instance ToCStruct CmdReserveSpaceForCommandsInfoNVX where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p CmdReserveSpaceForCommandsInfoNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (objectTable)-    poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (indirectCommandsLayout)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxSequencesCount)-    f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (zero)-    poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    f--instance FromCStruct CmdReserveSpaceForCommandsInfoNVX where-  peekCStruct p = do-    objectTable <- peek @ObjectTableNVX ((p `plusPtr` 16 :: Ptr ObjectTableNVX))-    indirectCommandsLayout <- peek @IndirectCommandsLayoutNVX ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX))-    maxSequencesCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pure $ CmdReserveSpaceForCommandsInfoNVX-             objectTable indirectCommandsLayout maxSequencesCount--instance Storable CmdReserveSpaceForCommandsInfoNVX where-  sizeOf ~_ = 40-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero CmdReserveSpaceForCommandsInfoNVX where-  zero = CmdReserveSpaceForCommandsInfoNVX-           zero-           zero-           zero----- | VkObjectTableCreateInfoNVX - Structure specifying the parameters of a--- newly created object table------ == Valid Usage------ -   If the---     'DeviceGeneratedCommandsFeaturesNVX'::@computeBindingPointSupport@---     feature is not enabled, @pObjectEntryUsageFlags@ /must/ not contain---     'OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX'------ -   Any value within @pObjectEntryCounts@ /must/ not exceed---     'DeviceGeneratedCommandsLimitsNVX'::@maxObjectEntryCounts@------ -   @maxUniformBuffersPerDescriptor@ /must/ be within the limits---     supported by the device.------ -   @maxStorageBuffersPerDescriptor@ /must/ be within the limits---     supported by the device.------ -   @maxStorageImagesPerDescriptor@ /must/ be within the limits---     supported by the device.------ -   @maxSampledImagesPerDescriptor@ /must/ be within the limits---     supported by the device.------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX'------ -   @pNext@ /must/ be @NULL@------ -   @pObjectEntryTypes@ /must/ be a valid pointer to an array of---     @objectCount@ valid 'ObjectEntryTypeNVX' values------ -   @pObjectEntryCounts@ /must/ be a valid pointer to an array of---     @objectCount@ @uint32_t@ values------ -   @pObjectEntryUsageFlags@ /must/ be a valid pointer to an array of---     @objectCount@ valid combinations of 'ObjectEntryUsageFlagBitsNVX'---     values------ -   Each element of @pObjectEntryUsageFlags@ /must/ not be @0@------ -   @objectCount@ /must/ be greater than @0@------ = See Also------ 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'createObjectTableNVX'-data ObjectTableCreateInfoNVX = ObjectTableCreateInfoNVX-  { -- | @pObjectEntryTypes@ is a pointer to an array of 'ObjectEntryTypeNVX'-    -- values providing the entry type of a given configuration.-    objectEntryTypes :: Vector ObjectEntryTypeNVX-  , -- | @pObjectEntryCounts@ is a pointer to an array of counts of how many-    -- objects can be registered in the table.-    objectEntryCounts :: Vector Word32-  , -- | @pObjectEntryUsageFlags@ is a pointer to an array of bitmasks of-    -- 'ObjectEntryUsageFlagBitsNVX' specifying the binding usage of the entry.-    objectEntryUsageFlags :: Vector ObjectEntryUsageFlagsNVX-  , -- | @maxUniformBuffersPerDescriptor@ is the maximum number of-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'-    -- or-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'-    -- used by any single registered-    -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.-    maxUniformBuffersPerDescriptor :: Word32-  , -- | @maxStorageBuffersPerDescriptor@ is the maximum number of-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'-    -- or-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'-    -- used by any single registered-    -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.-    maxStorageBuffersPerDescriptor :: Word32-  , -- | @maxStorageImagesPerDescriptor@ is the maximum number of-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'-    -- or-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'-    -- used by any single registered-    -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.-    maxStorageImagesPerDescriptor :: Word32-  , -- | @maxSampledImagesPerDescriptor@ is the maximum number of-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'-    -- or-    -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'-    -- used by any single registered-    -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.-    maxSampledImagesPerDescriptor :: Word32-  , -- | @maxPipelineLayouts@ is the maximum number of unique-    -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used by any registered-    -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' or-    -- 'Graphics.Vulkan.Core10.Handles.Pipeline' in this table.-    maxPipelineLayouts :: Word32-  }-  deriving (Typeable)-deriving instance Show ObjectTableCreateInfoNVX--instance ToCStruct ObjectTableCreateInfoNVX where-  withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ObjectTableCreateInfoNVX{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    let pObjectEntryTypesLength = Data.Vector.length $ (objectEntryTypes)-    let pObjectEntryCountsLength = Data.Vector.length $ (objectEntryCounts)-    lift $ unless (pObjectEntryCountsLength == pObjectEntryTypesLength) $-      throwIO $ IOError Nothing InvalidArgument "" "pObjectEntryCounts and pObjectEntryTypes must have the same length" Nothing Nothing-    let pObjectEntryUsageFlagsLength = Data.Vector.length $ (objectEntryUsageFlags)-    lift $ unless (pObjectEntryUsageFlagsLength == pObjectEntryTypesLength) $-      throwIO $ IOError Nothing InvalidArgument "" "pObjectEntryUsageFlags and pObjectEntryTypes must have the same length" Nothing Nothing-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral pObjectEntryTypesLength :: Word32))-    pPObjectEntryTypes' <- ContT $ allocaBytesAligned @ObjectEntryTypeNVX ((Data.Vector.length (objectEntryTypes)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryTypes' `plusPtr` (4 * (i)) :: Ptr ObjectEntryTypeNVX) (e)) (objectEntryTypes)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ObjectEntryTypeNVX))) (pPObjectEntryTypes')-    pPObjectEntryCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (objectEntryCounts)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (objectEntryCounts)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPObjectEntryCounts')-    pPObjectEntryUsageFlags' <- ContT $ allocaBytesAligned @ObjectEntryUsageFlagsNVX ((Data.Vector.length (objectEntryUsageFlags)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryUsageFlags' `plusPtr` (4 * (i)) :: Ptr ObjectEntryUsageFlagsNVX) (e)) (objectEntryUsageFlags)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ObjectEntryUsageFlagsNVX))) (pPObjectEntryUsageFlags')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxUniformBuffersPerDescriptor)-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (maxStorageBuffersPerDescriptor)-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (maxStorageImagesPerDescriptor)-    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (maxSampledImagesPerDescriptor)-    lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) (maxPipelineLayouts)-    lift $ f-  cStructSize = 72-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pPObjectEntryTypes' <- ContT $ allocaBytesAligned @ObjectEntryTypeNVX ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryTypes' `plusPtr` (4 * (i)) :: Ptr ObjectEntryTypeNVX) (e)) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ObjectEntryTypeNVX))) (pPObjectEntryTypes')-    pPObjectEntryCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPObjectEntryCounts')-    pPObjectEntryUsageFlags' <- ContT $ allocaBytesAligned @ObjectEntryUsageFlagsNVX ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryUsageFlags' `plusPtr` (4 * (i)) :: Ptr ObjectEntryUsageFlagsNVX) (e)) (mempty)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ObjectEntryUsageFlagsNVX))) (pPObjectEntryUsageFlags')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)-    lift $ f--instance FromCStruct ObjectTableCreateInfoNVX where-  peekCStruct p = do-    objectCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    pObjectEntryTypes <- peek @(Ptr ObjectEntryTypeNVX) ((p `plusPtr` 24 :: Ptr (Ptr ObjectEntryTypeNVX)))-    pObjectEntryTypes' <- generateM (fromIntegral objectCount) (\i -> peek @ObjectEntryTypeNVX ((pObjectEntryTypes `advancePtrBytes` (4 * (i)) :: Ptr ObjectEntryTypeNVX)))-    pObjectEntryCounts <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))-    pObjectEntryCounts' <- generateM (fromIntegral objectCount) (\i -> peek @Word32 ((pObjectEntryCounts `advancePtrBytes` (4 * (i)) :: Ptr Word32)))-    pObjectEntryUsageFlags <- peek @(Ptr ObjectEntryUsageFlagsNVX) ((p `plusPtr` 40 :: Ptr (Ptr ObjectEntryUsageFlagsNVX)))-    pObjectEntryUsageFlags' <- generateM (fromIntegral objectCount) (\i -> peek @ObjectEntryUsageFlagsNVX ((pObjectEntryUsageFlags `advancePtrBytes` (4 * (i)) :: Ptr ObjectEntryUsageFlagsNVX)))-    maxUniformBuffersPerDescriptor <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    maxStorageBuffersPerDescriptor <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))-    maxStorageImagesPerDescriptor <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))-    maxSampledImagesPerDescriptor <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))-    maxPipelineLayouts <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))-    pure $ ObjectTableCreateInfoNVX-             pObjectEntryTypes' pObjectEntryCounts' pObjectEntryUsageFlags' maxUniformBuffersPerDescriptor maxStorageBuffersPerDescriptor maxStorageImagesPerDescriptor maxSampledImagesPerDescriptor maxPipelineLayouts--instance Zero ObjectTableCreateInfoNVX where-  zero = ObjectTableCreateInfoNVX-           mempty-           mempty-           mempty-           zero-           zero-           zero-           zero-           zero----- | VkObjectTableEntryNVX - Common parameters of an object table resource--- entry------ == Valid Usage------ -   If the---     'DeviceGeneratedCommandsFeaturesNVX'::@computeBindingPointSupport@---     feature is not enabled, @flags@ /must/ not contain---     'OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX'------ == Valid Usage (Implicit)------ -   @type@ /must/ be a valid 'ObjectEntryTypeNVX' value------ -   @flags@ /must/ be a valid combination of---     'ObjectEntryUsageFlagBitsNVX' values------ -   @flags@ /must/ not be @0@------ = See Also------ 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX', 'registerObjectsNVX'-data ObjectTableEntryNVX = ObjectTableEntryNVX-  { -- | @type@ defines the entry type-    type' :: ObjectEntryTypeNVX-  , -- | @flags@ defines which-    -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' the-    -- resource can be used with. Some entry types allow only a single flag to-    -- be set.-    flags :: ObjectEntryUsageFlagsNVX-  }-  deriving (Typeable)-deriving instance Show ObjectTableEntryNVX--instance ToCStruct ObjectTableEntryNVX where-  withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ObjectTableEntryNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)-    f-  cStructSize = 8-  cStructAlignment = 4-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)-    f--instance FromCStruct ObjectTableEntryNVX where-  peekCStruct p = do-    type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))-    flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))-    pure $ ObjectTableEntryNVX-             type' flags--instance Storable ObjectTableEntryNVX where-  sizeOf ~_ = 8-  alignment ~_ = 4-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero ObjectTableEntryNVX where-  zero = ObjectTableEntryNVX-           zero-           zero----- | VkObjectTablePipelineEntryNVX - Parameters of an object table pipeline--- entry------ == Valid Usage (Implicit)------ = See Also------ 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Handles.Pipeline'-data ObjectTablePipelineEntryNVX = ObjectTablePipelineEntryNVX-  { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value-    type' :: ObjectEntryTypeNVX-  , -- | @flags@ /must/ not be @0@-    flags :: ObjectEntryUsageFlagsNVX-  , -- | @pipeline@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Pipeline'-    -- handle-    pipeline :: Pipeline-  }-  deriving (Typeable)-deriving instance Show ObjectTablePipelineEntryNVX--instance ToCStruct ObjectTablePipelineEntryNVX where-  withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ObjectTablePipelineEntryNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)-    poke ((p `plusPtr` 8 :: Ptr Pipeline)) (pipeline)-    f-  cStructSize = 16-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)-    poke ((p `plusPtr` 8 :: Ptr Pipeline)) (zero)-    f--instance FromCStruct ObjectTablePipelineEntryNVX where-  peekCStruct p = do-    type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))-    flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))-    pipeline <- peek @Pipeline ((p `plusPtr` 8 :: Ptr Pipeline))-    pure $ ObjectTablePipelineEntryNVX-             type' flags pipeline--instance Storable ObjectTablePipelineEntryNVX where-  sizeOf ~_ = 16-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero ObjectTablePipelineEntryNVX where-  zero = ObjectTablePipelineEntryNVX-           zero-           zero-           zero----- | VkObjectTableDescriptorSetEntryNVX - Parameters of an object table--- descriptor set entry------ == Valid Usage------ -   @type@ /must/ be 'OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX'------ == Valid Usage (Implicit)------ -   @type@ /must/ be a valid 'ObjectEntryTypeNVX' value------ -   @flags@ /must/ be a valid combination of---     'ObjectEntryUsageFlagBitsNVX' values------ -   @flags@ /must/ not be @0@------ -   @pipelineLayout@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle------ -   @descriptorSet@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.DescriptorSet' handle------ -   Both of @descriptorSet@, and @pipelineLayout@ /must/ have been---     created, allocated, or retrieved from the same---     'Graphics.Vulkan.Core10.Handles.Device'------ = See Also------ 'Graphics.Vulkan.Core10.Handles.DescriptorSet', 'ObjectEntryTypeNVX',--- 'ObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Handles.PipelineLayout'-data ObjectTableDescriptorSetEntryNVX = ObjectTableDescriptorSetEntryNVX-  { -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "type"-    type' :: ObjectEntryTypeNVX-  , -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "flags"-    flags :: ObjectEntryUsageFlagsNVX-  , -- | @pipelineLayout@ specifies the-    -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that the @descriptorSet@-    -- is used with.-    pipelineLayout :: PipelineLayout-  , -- | @descriptorSet@ specifies the-    -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' that can be bound with-    -- this entry.-    descriptorSet :: DescriptorSet-  }-  deriving (Typeable)-deriving instance Show ObjectTableDescriptorSetEntryNVX--instance ToCStruct ObjectTableDescriptorSetEntryNVX where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ObjectTableDescriptorSetEntryNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)-    poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (pipelineLayout)-    poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (descriptorSet)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)-    poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (zero)-    poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (zero)-    f--instance FromCStruct ObjectTableDescriptorSetEntryNVX where-  peekCStruct p = do-    type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))-    flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))-    pipelineLayout <- peek @PipelineLayout ((p `plusPtr` 8 :: Ptr PipelineLayout))-    descriptorSet <- peek @DescriptorSet ((p `plusPtr` 16 :: Ptr DescriptorSet))-    pure $ ObjectTableDescriptorSetEntryNVX-             type' flags pipelineLayout descriptorSet--instance Storable ObjectTableDescriptorSetEntryNVX where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero ObjectTableDescriptorSetEntryNVX where-  zero = ObjectTableDescriptorSetEntryNVX-           zero-           zero-           zero-           zero----- | VkObjectTableVertexBufferEntryNVX - Parameters of an object table vertex--- buffer entry------ == Valid Usage (Implicit)------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Buffer', 'ObjectEntryTypeNVX',--- 'ObjectEntryUsageFlagsNVX'-data ObjectTableVertexBufferEntryNVX = ObjectTableVertexBufferEntryNVX-  { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value-    type' :: ObjectEntryTypeNVX-  , -- | @flags@ /must/ not be @0@-    flags :: ObjectEntryUsageFlagsNVX-  , -- | @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'-    -- handle-    buffer :: Buffer-  }-  deriving (Typeable)-deriving instance Show ObjectTableVertexBufferEntryNVX--instance ToCStruct ObjectTableVertexBufferEntryNVX where-  withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ObjectTableVertexBufferEntryNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)-    poke ((p `plusPtr` 8 :: Ptr Buffer)) (buffer)-    f-  cStructSize = 16-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)-    poke ((p `plusPtr` 8 :: Ptr Buffer)) (zero)-    f--instance FromCStruct ObjectTableVertexBufferEntryNVX where-  peekCStruct p = do-    type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))-    flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))-    buffer <- peek @Buffer ((p `plusPtr` 8 :: Ptr Buffer))-    pure $ ObjectTableVertexBufferEntryNVX-             type' flags buffer--instance Storable ObjectTableVertexBufferEntryNVX where-  sizeOf ~_ = 16-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero ObjectTableVertexBufferEntryNVX where-  zero = ObjectTableVertexBufferEntryNVX-           zero-           zero-           zero----- | VkObjectTableIndexBufferEntryNVX - Parameters of an object table index--- buffer entry------ == Valid Usage (Implicit)------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Buffer',--- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',--- 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX'-data ObjectTableIndexBufferEntryNVX = ObjectTableIndexBufferEntryNVX-  { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value-    type' :: ObjectEntryTypeNVX-  , -- | @flags@ /must/ not be @0@-    flags :: ObjectEntryUsageFlagsNVX-  , -- | @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'-    -- handle-    buffer :: Buffer-  , -- | @indexType@ /must/ be a valid-    -- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value-    indexType :: IndexType-  }-  deriving (Typeable)-deriving instance Show ObjectTableIndexBufferEntryNVX--instance ToCStruct ObjectTableIndexBufferEntryNVX where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ObjectTableIndexBufferEntryNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)-    poke ((p `plusPtr` 8 :: Ptr Buffer)) (buffer)-    poke ((p `plusPtr` 16 :: Ptr IndexType)) (indexType)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)-    poke ((p `plusPtr` 8 :: Ptr Buffer)) (zero)-    poke ((p `plusPtr` 16 :: Ptr IndexType)) (zero)-    f--instance FromCStruct ObjectTableIndexBufferEntryNVX where-  peekCStruct p = do-    type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))-    flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))-    buffer <- peek @Buffer ((p `plusPtr` 8 :: Ptr Buffer))-    indexType <- peek @IndexType ((p `plusPtr` 16 :: Ptr IndexType))-    pure $ ObjectTableIndexBufferEntryNVX-             type' flags buffer indexType--instance Storable ObjectTableIndexBufferEntryNVX where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero ObjectTableIndexBufferEntryNVX where-  zero = ObjectTableIndexBufferEntryNVX-           zero-           zero-           zero-           zero----- | VkObjectTablePushConstantEntryNVX - Parameters of an object table push--- constant entry------ == Valid Usage (Implicit)------ = See Also------ 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',--- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'-data ObjectTablePushConstantEntryNVX = ObjectTablePushConstantEntryNVX-  { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value-    type' :: ObjectEntryTypeNVX-  , -- | @flags@ /must/ not be @0@-    flags :: ObjectEntryUsageFlagsNVX-  , -- | @pipelineLayout@ /must/ be a valid-    -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle-    pipelineLayout :: PipelineLayout-  , -- | @stageFlags@ /must/ not be @0@-    stageFlags :: ShaderStageFlags-  }-  deriving (Typeable)-deriving instance Show ObjectTablePushConstantEntryNVX--instance ToCStruct ObjectTablePushConstantEntryNVX where-  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p ObjectTablePushConstantEntryNVX{..} f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)-    poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (pipelineLayout)-    poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)-    f-  cStructSize = 24-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)-    poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)-    poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (zero)-    poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)-    f--instance FromCStruct ObjectTablePushConstantEntryNVX where-  peekCStruct p = do-    type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))-    flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))-    pipelineLayout <- peek @PipelineLayout ((p `plusPtr` 8 :: Ptr PipelineLayout))-    stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))-    pure $ ObjectTablePushConstantEntryNVX-             type' flags pipelineLayout stageFlags--instance Storable ObjectTablePushConstantEntryNVX where-  sizeOf ~_ = 24-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero ObjectTablePushConstantEntryNVX where-  zero = ObjectTablePushConstantEntryNVX-           zero-           zero-           zero-           zero----- | VkIndirectCommandsLayoutUsageFlagBitsNVX - Bitmask specifying allowed--- usage of an indirect commands layout------ = See Also------ 'IndirectCommandsLayoutUsageFlagsNVX'-newtype IndirectCommandsLayoutUsageFlagBitsNVX = IndirectCommandsLayoutUsageFlagBitsNVX Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits)---- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX' specifies--- that the processing of sequences /can/ happen at an--- implementation-dependent order, which is not guaranteed to be coherent--- across multiple invocations.-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000001--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX' specifies that--- there is likely a high difference between allocated number of sequences--- and actually used.-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000002--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX' specifies that--- there are likely many draw or dispatch calls that are zero-sized (zero--- grid dimension, no primitives to render).-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000004--- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX' specifies--- that the input data for the sequences is not implicitly indexed from--- 0..sequencesUsed but a user provided--- 'Graphics.Vulkan.Core10.Handles.Buffer' encoding the index is provided.-pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000008--type IndirectCommandsLayoutUsageFlagsNVX = IndirectCommandsLayoutUsageFlagBitsNVX--instance Show IndirectCommandsLayoutUsageFlagBitsNVX where-  showsPrec p = \case-    INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"-    INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"-    INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"-    INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"-    IndirectCommandsLayoutUsageFlagBitsNVX x -> showParen (p >= 11) (showString "IndirectCommandsLayoutUsageFlagBitsNVX 0x" . showHex x)--instance Read IndirectCommandsLayoutUsageFlagBitsNVX where-  readPrec = parens (choose [("INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX)-                            , ("INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX)-                            , ("INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX)-                            , ("INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX)]-                     +++-                     prec 10 (do-                       expectP (Ident "IndirectCommandsLayoutUsageFlagBitsNVX")-                       v <- step readPrec-                       pure (IndirectCommandsLayoutUsageFlagBitsNVX v)))----- | VkObjectEntryUsageFlagBitsNVX - Bitmask specifying allowed usage of an--- object entry------ = See Also------ 'ObjectEntryUsageFlagsNVX'-newtype ObjectEntryUsageFlagBitsNVX = ObjectEntryUsageFlagBitsNVX Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits)---- | 'OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX' specifies that the resource is--- bound to--- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'-pattern OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = ObjectEntryUsageFlagBitsNVX 0x00000001--- | 'OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX' specifies that the resource is--- bound to--- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'-pattern OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = ObjectEntryUsageFlagBitsNVX 0x00000002--type ObjectEntryUsageFlagsNVX = ObjectEntryUsageFlagBitsNVX--instance Show ObjectEntryUsageFlagBitsNVX where-  showsPrec p = \case-    OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX -> showString "OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"-    OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX -> showString "OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"-    ObjectEntryUsageFlagBitsNVX x -> showParen (p >= 11) (showString "ObjectEntryUsageFlagBitsNVX 0x" . showHex x)--instance Read ObjectEntryUsageFlagBitsNVX where-  readPrec = parens (choose [("OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX", pure OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX)-                            , ("OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX", pure OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX)]-                     +++-                     prec 10 (do-                       expectP (Ident "ObjectEntryUsageFlagBitsNVX")-                       v <- step readPrec-                       pure (ObjectEntryUsageFlagBitsNVX v)))----- | VkIndirectCommandsTokenTypeNVX - Enum specifying------ = Description------ \'------ +---------------------------------------------------+-----------------------------------------------------------------------+--- | Token type                                        | Equivalent command                                                    |--- +===================================================+=======================================================================+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX'       | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline'        |--- +---------------------------------------------------+-----------------------------------------------------------------------+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets'  |--- +---------------------------------------------------+-----------------------------------------------------------------------+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX'   | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'     |--- +---------------------------------------------------+-----------------------------------------------------------------------+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX'  | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'   |--- +---------------------------------------------------+-----------------------------------------------------------------------+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX'  | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPushConstants'       |--- +---------------------------------------------------+-----------------------------------------------------------------------+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX'   | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect' |--- +---------------------------------------------------+-----------------------------------------------------------------------+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX'           | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect'        |--- +---------------------------------------------------+-----------------------------------------------------------------------+--- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX'       | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'    |--- +---------------------------------------------------+-----------------------------------------------------------------------+------ Supported indirect command tokens------ = See Also------ 'IndirectCommandsLayoutTokenNVX', 'IndirectCommandsTokenNVX'-newtype IndirectCommandsTokenTypeNVX = IndirectCommandsTokenTypeNVX Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = IndirectCommandsTokenTypeNVX 0--- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = IndirectCommandsTokenTypeNVX 1--- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = IndirectCommandsTokenTypeNVX 2--- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = IndirectCommandsTokenTypeNVX 3--- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = IndirectCommandsTokenTypeNVX 4--- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = IndirectCommandsTokenTypeNVX 5--- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = IndirectCommandsTokenTypeNVX 6--- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"-pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = IndirectCommandsTokenTypeNVX 7-{-# complete INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,-             INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,-             INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,-             INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,-             INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,-             INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,-             INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,-             INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX :: IndirectCommandsTokenTypeNVX #-}--instance Show IndirectCommandsTokenTypeNVX where-  showsPrec p = \case-    INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"-    INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"-    INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"-    INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"-    INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"-    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"-    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"-    INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"-    IndirectCommandsTokenTypeNVX x -> showParen (p >= 11) (showString "IndirectCommandsTokenTypeNVX " . showsPrec 11 x)--instance Read IndirectCommandsTokenTypeNVX where-  readPrec = parens (choose [("INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX)-                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX)]-                     +++-                     prec 10 (do-                       expectP (Ident "IndirectCommandsTokenTypeNVX")-                       v <- step readPrec-                       pure (IndirectCommandsTokenTypeNVX v)))----- | VkObjectEntryTypeNVX - Enum specifying object table entry type------ = See Also------ 'ObjectTableCreateInfoNVX', 'ObjectTableDescriptorSetEntryNVX',--- 'ObjectTableEntryNVX', 'ObjectTableIndexBufferEntryNVX',--- 'ObjectTablePipelineEntryNVX', 'ObjectTablePushConstantEntryNVX',--- 'ObjectTableVertexBufferEntryNVX', 'unregisterObjectsNVX'-newtype ObjectEntryTypeNVX = ObjectEntryTypeNVX Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX' specifies a--- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' resource entry that is--- registered via 'ObjectTableDescriptorSetEntryNVX'.-pattern OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = ObjectEntryTypeNVX 0--- | 'OBJECT_ENTRY_TYPE_PIPELINE_NVX' specifies a--- 'Graphics.Vulkan.Core10.Handles.Pipeline' resource entry that is--- registered via 'ObjectTablePipelineEntryNVX'.-pattern OBJECT_ENTRY_TYPE_PIPELINE_NVX = ObjectEntryTypeNVX 1--- | 'OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX' specifies a--- 'Graphics.Vulkan.Core10.Handles.Buffer' resource entry that is--- registered via 'ObjectTableIndexBufferEntryNVX'.-pattern OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = ObjectEntryTypeNVX 2--- | 'OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX' specifies a--- 'Graphics.Vulkan.Core10.Handles.Buffer' resource entry that is--- registered via 'ObjectTableVertexBufferEntryNVX'.-pattern OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = ObjectEntryTypeNVX 3--- | 'OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX' specifies the resource entry is--- registered via 'ObjectTablePushConstantEntryNVX'.-pattern OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = ObjectEntryTypeNVX 4-{-# complete OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,-             OBJECT_ENTRY_TYPE_PIPELINE_NVX,-             OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,-             OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,-             OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX :: ObjectEntryTypeNVX #-}--instance Show ObjectEntryTypeNVX where-  showsPrec p = \case-    OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX -> showString "OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"-    OBJECT_ENTRY_TYPE_PIPELINE_NVX -> showString "OBJECT_ENTRY_TYPE_PIPELINE_NVX"-    OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX -> showString "OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"-    OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX -> showString "OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"-    OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX -> showString "OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"-    ObjectEntryTypeNVX x -> showParen (p >= 11) (showString "ObjectEntryTypeNVX " . showsPrec 11 x)--instance Read ObjectEntryTypeNVX where-  readPrec = parens (choose [("OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX", pure OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX)-                            , ("OBJECT_ENTRY_TYPE_PIPELINE_NVX", pure OBJECT_ENTRY_TYPE_PIPELINE_NVX)-                            , ("OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX", pure OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX)-                            , ("OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX", pure OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX)-                            , ("OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX", pure OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX)]-                     +++-                     prec 10 (do-                       expectP (Ident "ObjectEntryTypeNVX")-                       v <- step readPrec-                       pure (ObjectEntryTypeNVX v)))---type NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3---- No documentation found for TopLevel "VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"-pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall a . Integral a => a-pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3---type NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands"---- No documentation found for TopLevel "VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"-pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a-pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands"-
− src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs-boot
@@ -1,135 +0,0 @@-{-# language CPP #-}-module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands  ( CmdProcessCommandsInfoNVX-                                                                    , CmdReserveSpaceForCommandsInfoNVX-                                                                    , DeviceGeneratedCommandsFeaturesNVX-                                                                    , DeviceGeneratedCommandsLimitsNVX-                                                                    , IndirectCommandsLayoutCreateInfoNVX-                                                                    , IndirectCommandsLayoutTokenNVX-                                                                    , IndirectCommandsTokenNVX-                                                                    , ObjectTableCreateInfoNVX-                                                                    , ObjectTableDescriptorSetEntryNVX-                                                                    , ObjectTableEntryNVX-                                                                    , ObjectTableIndexBufferEntryNVX-                                                                    , ObjectTablePipelineEntryNVX-                                                                    , ObjectTablePushConstantEntryNVX-                                                                    , ObjectTableVertexBufferEntryNVX-                                                                    , ObjectEntryTypeNVX-                                                                    ) where--import Data.Kind (Type)-import Graphics.Vulkan.CStruct (FromCStruct)-import Graphics.Vulkan.CStruct (ToCStruct)-data CmdProcessCommandsInfoNVX--instance ToCStruct CmdProcessCommandsInfoNVX-instance Show CmdProcessCommandsInfoNVX--instance FromCStruct CmdProcessCommandsInfoNVX---data CmdReserveSpaceForCommandsInfoNVX--instance ToCStruct CmdReserveSpaceForCommandsInfoNVX-instance Show CmdReserveSpaceForCommandsInfoNVX--instance FromCStruct CmdReserveSpaceForCommandsInfoNVX---data DeviceGeneratedCommandsFeaturesNVX--instance ToCStruct DeviceGeneratedCommandsFeaturesNVX-instance Show DeviceGeneratedCommandsFeaturesNVX--instance FromCStruct DeviceGeneratedCommandsFeaturesNVX---data DeviceGeneratedCommandsLimitsNVX--instance ToCStruct DeviceGeneratedCommandsLimitsNVX-instance Show DeviceGeneratedCommandsLimitsNVX--instance FromCStruct DeviceGeneratedCommandsLimitsNVX---data IndirectCommandsLayoutCreateInfoNVX--instance ToCStruct IndirectCommandsLayoutCreateInfoNVX-instance Show IndirectCommandsLayoutCreateInfoNVX--instance FromCStruct IndirectCommandsLayoutCreateInfoNVX---data IndirectCommandsLayoutTokenNVX--instance ToCStruct IndirectCommandsLayoutTokenNVX-instance Show IndirectCommandsLayoutTokenNVX--instance FromCStruct IndirectCommandsLayoutTokenNVX---data IndirectCommandsTokenNVX--instance ToCStruct IndirectCommandsTokenNVX-instance Show IndirectCommandsTokenNVX--instance FromCStruct IndirectCommandsTokenNVX---data ObjectTableCreateInfoNVX--instance ToCStruct ObjectTableCreateInfoNVX-instance Show ObjectTableCreateInfoNVX--instance FromCStruct ObjectTableCreateInfoNVX---data ObjectTableDescriptorSetEntryNVX--instance ToCStruct ObjectTableDescriptorSetEntryNVX-instance Show ObjectTableDescriptorSetEntryNVX--instance FromCStruct ObjectTableDescriptorSetEntryNVX---data ObjectTableEntryNVX--instance ToCStruct ObjectTableEntryNVX-instance Show ObjectTableEntryNVX--instance FromCStruct ObjectTableEntryNVX---data ObjectTableIndexBufferEntryNVX--instance ToCStruct ObjectTableIndexBufferEntryNVX-instance Show ObjectTableIndexBufferEntryNVX--instance FromCStruct ObjectTableIndexBufferEntryNVX---data ObjectTablePipelineEntryNVX--instance ToCStruct ObjectTablePipelineEntryNVX-instance Show ObjectTablePipelineEntryNVX--instance FromCStruct ObjectTablePipelineEntryNVX---data ObjectTablePushConstantEntryNVX--instance ToCStruct ObjectTablePushConstantEntryNVX-instance Show ObjectTablePushConstantEntryNVX--instance FromCStruct ObjectTablePushConstantEntryNVX---data ObjectTableVertexBufferEntryNVX--instance ToCStruct ObjectTableVertexBufferEntryNVX-instance Show ObjectTableVertexBufferEntryNVX--instance FromCStruct ObjectTableVertexBufferEntryNVX---data ObjectEntryTypeNVX-
src/Graphics/Vulkan/Extensions/VK_NVX_image_view_handle.hs view
@@ -1,6 +1,8 @@ {-# language CPP #-} module Graphics.Vulkan.Extensions.VK_NVX_image_view_handle  ( getImageViewHandleNVX+                                                            , getImageViewAddressNVX                                                             , ImageViewHandleInfoNVX(..)+                                                            , ImageViewAddressPropertiesNVX(..)                                                             , NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION                                                             , pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION                                                             , NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME@@ -9,6 +11,8 @@  import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO) import Foreign.Ptr (nullPtr) import Foreign.Ptr (plusPtr) import Control.Monad.Trans.Class (lift)@@ -28,17 +32,26 @@ import Graphics.Vulkan.Core10.Enums.DescriptorType (DescriptorType) import Graphics.Vulkan.Core10.Handles (Device) import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Core10.BaseType (DeviceAddress)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageViewAddressNVX)) import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageViewHandleNVX))+import Graphics.Vulkan.Core10.BaseType (DeviceSize) import Graphics.Vulkan.Core10.Handles (Device_T) import Graphics.Vulkan.CStruct (FromCStruct) import Graphics.Vulkan.CStruct (FromCStruct(..)) import Graphics.Vulkan.Core10.Handles (ImageView)+import Graphics.Vulkan.Core10.Handles (ImageView(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..)) import Graphics.Vulkan.Core10.Handles (Sampler) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType) import Graphics.Vulkan.CStruct (ToCStruct) import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..)) import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX)) import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS)) foreign import ccall #if !defined(SAFE_FOREIGN_CALLS)   unsafe@@ -68,6 +81,49 @@   pure $ (r)  +foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetImageViewAddressNVX+  :: FunPtr (Ptr Device_T -> ImageView -> Ptr ImageViewAddressPropertiesNVX -> IO Result) -> Ptr Device_T -> ImageView -> Ptr ImageViewAddressPropertiesNVX -> IO Result++-- | vkGetImageViewAddressNVX - Get the device address of an image view+--+-- = Parameters+--+-- -   @device@ is the logical device that owns the image view.+--+-- -   @imageView@ is a handle to the image view.+--+-- -   @pProperties@ contains the device address and size when the call+--     returns.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.ImageView',+-- 'ImageViewAddressPropertiesNVX'+getImageViewAddressNVX :: forall io . MonadIO io => Device -> ImageView -> io (ImageViewAddressPropertiesNVX)+getImageViewAddressNVX device imageView = liftIO . evalContT $ do+  let vkGetImageViewAddressNVX' = mkVkGetImageViewAddressNVX (pVkGetImageViewAddressNVX (deviceCmds (device :: Device)))+  pPProperties <- ContT (withZeroCStruct @ImageViewAddressPropertiesNVX)+  r <- lift $ vkGetImageViewAddressNVX' (deviceHandle (device)) (imageView) (pPProperties)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pProperties <- lift $ peekCStruct @ImageViewAddressPropertiesNVX pPProperties+  pure $ (pProperties)++ -- | VkImageViewHandleInfoNVX - Structure specifying the image view for -- handle queries --@@ -178,11 +234,67 @@            zero  -type NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 1+-- | VkImageViewAddressPropertiesNVX - Structure specifying the image view+-- for handle queries+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceAddress',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getImageViewAddressNVX'+data ImageViewAddressPropertiesNVX = ImageViewAddressPropertiesNVX+  { -- | @deviceAddress@ is the device address of the image view.+    deviceAddress :: DeviceAddress+  , -- | @size@ is the size in bytes of the image view device memory.+    size :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show ImageViewAddressPropertiesNVX +instance ToCStruct ImageViewAddressPropertiesNVX where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p ImageViewAddressPropertiesNVX{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (deviceAddress)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (size)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (zero)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct ImageViewAddressPropertiesNVX where+  peekCStruct p = do+    deviceAddress <- peek @DeviceAddress ((p `plusPtr` 16 :: Ptr DeviceAddress))+    size <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+    pure $ ImageViewAddressPropertiesNVX+             deviceAddress size++instance Storable ImageViewAddressPropertiesNVX where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageViewAddressPropertiesNVX where+  zero = ImageViewAddressPropertiesNVX+           zero+           zero+++type NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2+ -- No documentation found for TopLevel "VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION" pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION :: forall a . Integral a => a-pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 1+pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2   type NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle"
src/Graphics/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot view
@@ -1,9 +1,19 @@ {-# language CPP #-}-module Graphics.Vulkan.Extensions.VK_NVX_image_view_handle  (ImageViewHandleInfoNVX) where+module Graphics.Vulkan.Extensions.VK_NVX_image_view_handle  ( ImageViewAddressPropertiesNVX+                                                            , ImageViewHandleInfoNVX+                                                            ) where  import Data.Kind (Type) import Graphics.Vulkan.CStruct (FromCStruct) import Graphics.Vulkan.CStruct (ToCStruct)+data ImageViewAddressPropertiesNVX++instance ToCStruct ImageViewAddressPropertiesNVX+instance Show ImageViewAddressPropertiesNVX++instance FromCStruct ImageViewAddressPropertiesNVX++ data ImageViewHandleInfoNVX  instance ToCStruct ImageViewHandleInfoNVX
src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs view
@@ -185,13 +185,13 @@ --     and 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a --     memory import operation, the memory being imported /must/ also be a --     dedicated image allocation and @image@ /must/ be identical to the---     image associated with the imported memory.+--     image associated with the imported memory -- -- -   If @buffer@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' --     and 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a --     memory import operation, the memory being imported /must/ also be a --     dedicated buffer allocation and @buffer@ /must/ be identical to the---     buffer associated with the imported memory.+--     buffer associated with the imported memory -- -- == Valid Usage (Implicit) --
+ src/Graphics/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs view
@@ -0,0 +1,219 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config  ( PhysicalDeviceDiagnosticsConfigFeaturesNV(..)+                                                                   , DeviceDiagnosticsConfigCreateInfoNV(..)+                                                                   , DeviceDiagnosticsConfigFlagBitsNV( DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV+                                                                                                      , DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV+                                                                                                      , DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV+                                                                                                      , ..+                                                                                                      )+                                                                   , DeviceDiagnosticsConfigFlagsNV+                                                                   , NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION+                                                                   , pattern NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION+                                                                   , NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME+                                                                   , pattern NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME+                                                                   ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV))+-- | VkPhysicalDeviceDiagnosticsConfigFeaturesNV - Structure describing the+-- device-generated diagnostic configuration features that can be supported+-- by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceDiagnosticsConfigFeaturesNV' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceDiagnosticsConfigFeaturesNV' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceDiagnosticsConfigFeaturesNV' /can/ also be used in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDiagnosticsConfigFeaturesNV = PhysicalDeviceDiagnosticsConfigFeaturesNV+  { -- | @diagnosticsConfig@ indicates whether the implementation supports the+    -- ability to configure diagnostic tools.+    diagnosticsConfig :: Bool }+  deriving (Typeable)+deriving instance Show PhysicalDeviceDiagnosticsConfigFeaturesNV++instance ToCStruct PhysicalDeviceDiagnosticsConfigFeaturesNV where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceDiagnosticsConfigFeaturesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (diagnosticsConfig))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceDiagnosticsConfigFeaturesNV where+  peekCStruct p = do+    diagnosticsConfig <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceDiagnosticsConfigFeaturesNV+             (bool32ToBool diagnosticsConfig)++instance Storable PhysicalDeviceDiagnosticsConfigFeaturesNV where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDiagnosticsConfigFeaturesNV where+  zero = PhysicalDeviceDiagnosticsConfigFeaturesNV+           zero+++-- | VkDeviceDiagnosticsConfigCreateInfoNV - Specify diagnostics config for a+-- Vulkan device+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DeviceDiagnosticsConfigFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceDiagnosticsConfigCreateInfoNV = DeviceDiagnosticsConfigCreateInfoNV+  { -- | @flags@ /must/ be a valid combination of+    -- 'DeviceDiagnosticsConfigFlagBitsNV' values+    flags :: DeviceDiagnosticsConfigFlagsNV }+  deriving (Typeable)+deriving instance Show DeviceDiagnosticsConfigCreateInfoNV++instance ToCStruct DeviceDiagnosticsConfigCreateInfoNV where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p DeviceDiagnosticsConfigCreateInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr DeviceDiagnosticsConfigFlagsNV)) (flags)+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    f++instance FromCStruct DeviceDiagnosticsConfigCreateInfoNV where+  peekCStruct p = do+    flags <- peek @DeviceDiagnosticsConfigFlagsNV ((p `plusPtr` 16 :: Ptr DeviceDiagnosticsConfigFlagsNV))+    pure $ DeviceDiagnosticsConfigCreateInfoNV+             flags++instance Storable DeviceDiagnosticsConfigCreateInfoNV where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceDiagnosticsConfigCreateInfoNV where+  zero = DeviceDiagnosticsConfigCreateInfoNV+           zero+++-- | VkDeviceDiagnosticsConfigFlagBitsNV - Bitmask specifying diagnostics+-- flags+--+-- = See Also+--+-- 'DeviceDiagnosticsConfigFlagsNV'+newtype DeviceDiagnosticsConfigFlagBitsNV = DeviceDiagnosticsConfigFlagBitsNV Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV' enables the+-- generation of debug information for shaders.+pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000001+-- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV' enables+-- driver side tracking of resources (images, buffers, etc.) used to+-- augment the device fault information.+pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000002+-- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV' enables+-- automatic insertion of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-diagnostic-checkpoints diagnostic checkpoints>+-- for draw calls, dispatches, trace rays, and copies. The CPU call stack+-- at the time of the command will be associated as the marker data for the+-- automatically inserted checkpoints.+pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = DeviceDiagnosticsConfigFlagBitsNV 0x00000004++type DeviceDiagnosticsConfigFlagsNV = DeviceDiagnosticsConfigFlagBitsNV++instance Show DeviceDiagnosticsConfigFlagBitsNV where+  showsPrec p = \case+    DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV -> showString "DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"+    DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV -> showString "DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"+    DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV -> showString "DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"+    DeviceDiagnosticsConfigFlagBitsNV x -> showParen (p >= 11) (showString "DeviceDiagnosticsConfigFlagBitsNV 0x" . showHex x)++instance Read DeviceDiagnosticsConfigFlagBitsNV where+  readPrec = parens (choose [("DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV", pure DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV)+                            , ("DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV", pure DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV)+                            , ("DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV", pure DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV)]+                     ++++                     prec 10 (do+                       expectP (Ident "DeviceDiagnosticsConfigFlagBitsNV")+                       v <- step readPrec+                       pure (DeviceDiagnosticsConfigFlagBitsNV v)))+++type NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION"+pattern NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION :: forall a . Integral a => a+pattern NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1+++type NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config"++-- No documentation found for TopLevel "VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME"+pattern NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config"+
+ src/Graphics/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config  ( DeviceDiagnosticsConfigCreateInfoNV+                                                                   , PhysicalDeviceDiagnosticsConfigFeaturesNV+                                                                   ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeviceDiagnosticsConfigCreateInfoNV++instance ToCStruct DeviceDiagnosticsConfigCreateInfoNV+instance Show DeviceDiagnosticsConfigCreateInfoNV++instance FromCStruct DeviceDiagnosticsConfigCreateInfoNV+++data PhysicalDeviceDiagnosticsConfigFeaturesNV++instance ToCStruct PhysicalDeviceDiagnosticsConfigFeaturesNV+instance Show PhysicalDeviceDiagnosticsConfigFeaturesNV++instance FromCStruct PhysicalDeviceDiagnosticsConfigFeaturesNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_device_generated_commands.hs view
@@ -0,0 +1,2470 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_device_generated_commands  ( cmdExecuteGeneratedCommandsNV+                                                                   , cmdPreprocessGeneratedCommandsNV+                                                                   , cmdBindPipelineShaderGroupNV+                                                                   , getGeneratedCommandsMemoryRequirementsNV+                                                                   , createIndirectCommandsLayoutNV+                                                                   , withIndirectCommandsLayoutNV+                                                                   , destroyIndirectCommandsLayoutNV+                                                                   , PhysicalDeviceDeviceGeneratedCommandsFeaturesNV(..)+                                                                   , PhysicalDeviceDeviceGeneratedCommandsPropertiesNV(..)+                                                                   , GraphicsShaderGroupCreateInfoNV(..)+                                                                   , GraphicsPipelineShaderGroupsCreateInfoNV(..)+                                                                   , BindShaderGroupIndirectCommandNV(..)+                                                                   , BindIndexBufferIndirectCommandNV(..)+                                                                   , BindVertexBufferIndirectCommandNV(..)+                                                                   , SetStateFlagsIndirectCommandNV(..)+                                                                   , IndirectCommandsStreamNV(..)+                                                                   , IndirectCommandsLayoutTokenNV(..)+                                                                   , IndirectCommandsLayoutCreateInfoNV(..)+                                                                   , GeneratedCommandsInfoNV(..)+                                                                   , GeneratedCommandsMemoryRequirementsInfoNV(..)+                                                                   , IndirectCommandsLayoutUsageFlagBitsNV( INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV+                                                                                                          , INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV+                                                                                                          , INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV+                                                                                                          , ..+                                                                                                          )+                                                                   , IndirectCommandsLayoutUsageFlagsNV+                                                                   , IndirectStateFlagBitsNV( INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV+                                                                                            , ..+                                                                                            )+                                                                   , IndirectStateFlagsNV+                                                                   , IndirectCommandsTokenTypeNV( INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV+                                                                                                , INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV+                                                                                                , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV+                                                                                                , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV+                                                                                                , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV+                                                                                                , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV+                                                                                                , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV+                                                                                                , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV+                                                                                                , ..+                                                                                                )+                                                                   , NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION+                                                                   , pattern NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION+                                                                   , NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME+                                                                   , pattern NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME+                                                                   , IndirectCommandsLayoutNV(..)+                                                                   ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Control.Monad.IO.Class (liftIO)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Control.Monad.IO.Class (MonadIO)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (withSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Core10.BaseType (DeviceAddress)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBindPipelineShaderGroupNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteGeneratedCommandsNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdPreprocessGeneratedCommandsNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetGeneratedCommandsMemoryRequirementsNV))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)+import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNV)+import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNV(..))+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)+import Graphics.Vulkan.Core10.Pipeline (PipelineTessellationStateCreateInfo)+import Graphics.Vulkan.Core10.Pipeline (PipelineVertexInputStateCreateInfo)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNV(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdExecuteGeneratedCommandsNV+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> Ptr GeneratedCommandsInfoNV -> IO ()++-- | vkCmdExecuteGeneratedCommandsNV - Performs the generation and execution+-- of commands on the device+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command is+--     recorded.+--+-- -   @isPreprocessed@ represents whether the input data has already been+--     preprocessed on the device. If it is+--     'Graphics.Vulkan.Core10.BaseType.FALSE' this command will implicitly+--     trigger the preprocessing step, otherwise not.+--+-- -   @pGeneratedCommandsInfo@ is a pointer to an instance of the+--     'GeneratedCommandsInfoNV' structure containing parameters affecting+--     the generation of commands.+--+-- == Valid Usage+--+-- -   [[VUID-{refpage}-None-02690]] If a+--     'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   [[VUID-{refpage}-None-02691]] If a+--     'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using atomic+--     operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   [[VUID-{refpage}-None-02692]] If a+--     'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   [[VUID-{refpage}-filterCubic-02694]] Any+--     'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering, as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   [[VUID-{refpage}-filterCubicMinmax-02695]] Any+--     'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+--     with a reduction mode of either+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering together with minmax filtering,+--     as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   [[VUID-{refpage}-flags-02696]] Any+--     'Graphics.Vulkan.Core10.Handles.Image' created with a+--     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+--     of+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   [[VUID-{refpage}-None-02697]] For each set /n/ that is statically+--     used by the 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the+--     pipeline bind point used by this command, a descriptor set /must/+--     have been bound to /n/ at the same pipeline bind point, with a+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+--     for set /n/, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   [[VUID-{refpage}-None-02698]] For each push constant that is+--     statically used by the 'Graphics.Vulkan.Core10.Handles.Pipeline'+--     bound to the pipeline bind point used by this command, a push+--     constant value /must/ have been set for the same pipeline bind+--     point, with a 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that+--     is compatible for push constants, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   [[VUID-{refpage}-None-02699]] Descriptors in each bound descriptor+--     set, specified via+--     'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+--     /must/ be valid if they are statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command+--+-- -   [[VUID-{refpage}-None-02700]] A valid pipeline /must/ be bound to+--     the pipeline bind point used by this command+--+-- -   [[VUID-{refpage}-commandBuffer-02701]] If the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command requires any dynamic state,+--     that state /must/ have been set for @commandBuffer@, and done so+--     after any previously bound pipeline with the corresponding state not+--     specified as dynamic+--+-- -   [[VUID-{refpage}-None-02859]] There /must/ not have been any calls+--     to dynamic state setting commands for any state not specified as+--     dynamic in the 'Graphics.Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command, since that+--     pipeline was bound+--+-- -   [[VUID-{refpage}-None-02702]] If the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used to sample+--     from any 'Graphics.Vulkan.Core10.Handles.Image' with a+--     'Graphics.Vulkan.Core10.Handles.ImageView' of the type+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+--     or+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+--     in any shader stage+--+-- -   [[VUID-{refpage}-None-02703]] If the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+--     any shader stage+--+-- -   [[VUID-{refpage}-None-02704]] If the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions that includes a LOD bias or any offset values, in any+--     shader stage+--+-- -   [[VUID-{refpage}-None-02705]] If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a uniform buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   [[VUID-{refpage}-None-02706]] If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a storage buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   [[VUID-{refpage}-commandBuffer-02707]] If @commandBuffer@ is an+--     unprotected command buffer, any resource accessed by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command /must/ not be a protected+--     resource+--+-- -   [[VUID-{refpage}-renderPass-02684]] The current render pass /must/+--     be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+--     with the @renderPass@ member of the+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+--     structure specified when creating the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   [[VUID-{refpage}-subpass-02685]] The subpass index of the current+--     render pass /must/ be equal to the @subpass@ member of the+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+--     structure specified when creating the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   [[VUID-{refpage}-None-02686]] Every input attachment used by the+--     current subpass /must/ be bound to the pipeline via a descriptor set+--+-- -   [[VUID-{refpage}-None-02687]] Image subresources used as attachments+--     in the current render pass /must/ not be accessed in any way other+--     than as an attachment by this command+--+-- -   [[VUID-{refpage}-maxMultiviewInstanceIndex-02688]] If the draw is+--     recorded in a render pass instance with multiview enabled, the+--     maximum instance index /must/ be less than or equal to+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@+--+-- -   [[VUID-{refpage}-sampleLocationsEnable-02689]] If the bound graphics+--     pipeline was created with+--     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+--     set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+--     subpass has a depth\/stencil attachment, then that attachment /must/+--     have been created with the+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+--     bit set+--+-- -   [[VUID-{refpage}-None-04007]] All vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ have either valid or+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound+--+-- -   [[VUID-{refpage}-None-04008]] If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>+--     feature is not enabled, all vertex input bindings accessed via+--     vertex input variables declared in the vertex shader entry point’s+--     interface /must/ not be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   [[VUID-{refpage}-None-02721]] For a given vertex buffer binding, any+--     attribute data fetched /must/ be entirely contained within the+--     corresponding vertex buffer binding, as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- -   @commandBuffer@ /must/ not be a protected command buffer+--+-- -   If @isPreprocessed@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' then+--     'cmdPreprocessGeneratedCommandsNV' /must/ have already been executed+--     on the device, using the same @pGeneratedCommandsInfo@ content as+--     well as the content of the input buffers it references (all except+--     'GeneratedCommandsInfoNV'::@preprocessBuffer@). Furthermore+--     @pGeneratedCommandsInfo@\`s @indirectCommandsLayout@ /must/ have+--     been created with the+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' bit set+--+-- -   'GeneratedCommandsInfoNV'::@pipeline@ /must/ match the current bound+--     pipeline at 'GeneratedCommandsInfoNV'::@pipelineBindPoint@+--+-- -   Transform feedback /must/ not be active+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid+--     'GeneratedCommandsInfoNV' structure+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support graphics, or+--     compute operations+--+-- -   This command /must/ only be called inside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'GeneratedCommandsInfoNV'+cmdExecuteGeneratedCommandsNV :: forall io . MonadIO io => CommandBuffer -> ("isPreprocessed" ::: Bool) -> GeneratedCommandsInfoNV -> io ()+cmdExecuteGeneratedCommandsNV commandBuffer isPreprocessed generatedCommandsInfo = liftIO . evalContT $ do+  let vkCmdExecuteGeneratedCommandsNV' = mkVkCmdExecuteGeneratedCommandsNV (pVkCmdExecuteGeneratedCommandsNV (deviceCmds (commandBuffer :: CommandBuffer)))+  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)+  lift $ vkCmdExecuteGeneratedCommandsNV' (commandBufferHandle (commandBuffer)) (boolToBool32 (isPreprocessed)) pGeneratedCommandsInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdPreprocessGeneratedCommandsNV+  :: FunPtr (Ptr CommandBuffer_T -> Ptr GeneratedCommandsInfoNV -> IO ()) -> Ptr CommandBuffer_T -> Ptr GeneratedCommandsInfoNV -> IO ()++-- | vkCmdPreprocessGeneratedCommandsNV - Performs preprocessing for+-- generated commands+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer which does the preprocessing.+--+-- -   @pGeneratedCommandsInfo@ is a pointer to an instance of the+--     'GeneratedCommandsInfoNV' structure containing parameters affecting+--     the preprocessing step.+--+-- == Valid Usage+--+-- -   @commandBuffer@ /must/ not be a protected command buffer+--+-- -   @pGeneratedCommandsInfo@\`s @indirectCommandsLayout@ /must/ have+--     been created with the+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' bit set+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pGeneratedCommandsInfo@ /must/ be a valid pointer to a valid+--     'GeneratedCommandsInfoNV' structure+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support graphics, or+--     compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'GeneratedCommandsInfoNV'+cmdPreprocessGeneratedCommandsNV :: forall io . MonadIO io => CommandBuffer -> GeneratedCommandsInfoNV -> io ()+cmdPreprocessGeneratedCommandsNV commandBuffer generatedCommandsInfo = liftIO . evalContT $ do+  let vkCmdPreprocessGeneratedCommandsNV' = mkVkCmdPreprocessGeneratedCommandsNV (pVkCmdPreprocessGeneratedCommandsNV (deviceCmds (commandBuffer :: CommandBuffer)))+  pGeneratedCommandsInfo <- ContT $ withCStruct (generatedCommandsInfo)+  lift $ vkCmdPreprocessGeneratedCommandsNV' (commandBufferHandle (commandBuffer)) pGeneratedCommandsInfo+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBindPipelineShaderGroupNV+  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> Word32 -> IO ()++-- | vkCmdBindPipelineShaderGroupNV - Bind a pipeline object+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer that the pipeline will be+--     bound to.+--+-- -   @pipelineBindPoint@ is a+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+--     value specifying to which bind point the pipeline is bound.+--+-- -   @pipeline@ is the pipeline to be bound.+--+-- -   @groupIndex@ is the shader group to be bound.+--+-- == Valid Usage+--+-- -   @groupIndex@ /must/ be @0@ or less than the effective+--     'GraphicsPipelineShaderGroupsCreateInfoNV'::@groupCount@ including+--     the referenced pipelines+--+-- -   The @pipelineBindPoint@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   The same restrictions as+--     'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline' apply+--     as if the bound pipeline was created only with the Shader Group from+--     the @groupIndex@ information+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pipelineBindPoint@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+--     value+--+-- -   @pipeline@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support graphics, or+--     compute operations+--+-- -   Both of @commandBuffer@, and @pipeline@ /must/ have been created,+--     allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to @commandBuffer@ /must/ be externally synchronized+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+cmdBindPipelineShaderGroupNV :: forall io . MonadIO io => CommandBuffer -> PipelineBindPoint -> Pipeline -> ("groupIndex" ::: Word32) -> io ()+cmdBindPipelineShaderGroupNV commandBuffer pipelineBindPoint pipeline groupIndex = liftIO $ do+  let vkCmdBindPipelineShaderGroupNV' = mkVkCmdBindPipelineShaderGroupNV (pVkCmdBindPipelineShaderGroupNV (deviceCmds (commandBuffer :: CommandBuffer)))+  vkCmdBindPipelineShaderGroupNV' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (pipeline) (groupIndex)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetGeneratedCommandsMemoryRequirementsNV+  :: FunPtr (Ptr Device_T -> Ptr GeneratedCommandsMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2 a) -> IO ()) -> Ptr Device_T -> Ptr GeneratedCommandsMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2 a) -> IO ()++-- | vkGetGeneratedCommandsMemoryRequirementsNV - Retrieve the buffer+-- allocation requirements for generated commands+--+-- = Parameters+--+-- -   @device@ is the logical device that owns the buffer.+--+-- -   @pInfo@ is a pointer to an instance of the+--     'GeneratedCommandsMemoryRequirementsInfoNV' structure containing+--     parameters required for the memory requirements query.+--+-- -   @pMemoryRequirements@ points to an instance of the+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+--     structure in which the memory requirements of the buffer object are+--     returned.+--+-- == Valid Usage+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'GeneratedCommandsMemoryRequirementsInfoNV' structure+--+-- -   @pMemoryRequirements@ /must/ be a valid pointer to a+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+--     structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'GeneratedCommandsMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+getGeneratedCommandsMemoryRequirementsNV :: forall a io . (PokeChain a, PeekChain a, MonadIO io) => Device -> GeneratedCommandsMemoryRequirementsInfoNV -> io (MemoryRequirements2 a)+getGeneratedCommandsMemoryRequirementsNV device info = liftIO . evalContT $ do+  let vkGetGeneratedCommandsMemoryRequirementsNV' = mkVkGetGeneratedCommandsMemoryRequirementsNV (pVkGetGeneratedCommandsMemoryRequirementsNV (deviceCmds (device :: Device)))+  pInfo <- ContT $ withCStruct (info)+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))+  lift $ vkGetGeneratedCommandsMemoryRequirementsNV' (deviceHandle (device)) pInfo (pPMemoryRequirements)+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements+  pure $ (pMemoryRequirements)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateIndirectCommandsLayoutNV+  :: FunPtr (Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNV -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNV -> IO Result) -> Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNV -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNV -> IO Result++-- | vkCreateIndirectCommandsLayoutNV - Create an indirect command layout+-- object+--+-- = Parameters+--+-- -   @device@ is the logical device that creates the indirect command+--     layout.+--+-- -   @pCreateInfo@ is a pointer to an instance of the+--     'IndirectCommandsLayoutCreateInfoNV' structure containing parameters+--     affecting creation of the indirect command layout.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- -   @pIndirectCommandsLayout@ points to a+--     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle+--     in which the resulting indirect command layout is returned.+--+-- == Valid Usage+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pCreateInfo@ /must/ be a valid pointer to a valid+--     'IndirectCommandsLayoutCreateInfoNV' structure+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @pIndirectCommandsLayout@ /must/ be a valid pointer to a+--     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'IndirectCommandsLayoutCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'+createIndirectCommandsLayoutNV :: forall io . MonadIO io => Device -> IndirectCommandsLayoutCreateInfoNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io (IndirectCommandsLayoutNV)+createIndirectCommandsLayoutNV device createInfo allocator = liftIO . evalContT $ do+  let vkCreateIndirectCommandsLayoutNV' = mkVkCreateIndirectCommandsLayoutNV (pVkCreateIndirectCommandsLayoutNV (deviceCmds (device :: Device)))+  pCreateInfo <- ContT $ withCStruct (createInfo)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPIndirectCommandsLayout <- ContT $ bracket (callocBytes @IndirectCommandsLayoutNV 8) free+  r <- lift $ vkCreateIndirectCommandsLayoutNV' (deviceHandle (device)) pCreateInfo pAllocator (pPIndirectCommandsLayout)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pIndirectCommandsLayout <- lift $ peek @IndirectCommandsLayoutNV pPIndirectCommandsLayout+  pure $ (pIndirectCommandsLayout)++-- | A convenience wrapper to make a compatible pair of calls to+-- 'createIndirectCommandsLayoutNV' and 'destroyIndirectCommandsLayoutNV'+--+-- To ensure that 'destroyIndirectCommandsLayoutNV' is always called: pass+-- 'Control.Exception.bracket' (or the allocate function from your+-- favourite resource management library) as the first argument.+-- To just extract the pair pass '(,)' as the first argument.+--+withIndirectCommandsLayoutNV :: forall io r . MonadIO io => (io (IndirectCommandsLayoutNV) -> ((IndirectCommandsLayoutNV) -> io ()) -> r) -> Device -> IndirectCommandsLayoutCreateInfoNV -> Maybe AllocationCallbacks -> r+withIndirectCommandsLayoutNV b device pCreateInfo pAllocator =+  b (createIndirectCommandsLayoutNV device pCreateInfo pAllocator)+    (\(o0) -> destroyIndirectCommandsLayoutNV device o0 pAllocator)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkDestroyIndirectCommandsLayoutNV+  :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutNV -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyIndirectCommandsLayoutNV - Destroy an indirect commands layout+--+-- = Parameters+--+-- -   @device@ is the logical device that destroys the layout.+--+-- -   @indirectCommandsLayout@ is the layout to destroy.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- == Valid Usage+--+-- -   All submitted commands that refer to @indirectCommandsLayout@ /must/+--     have completed execution+--+-- -   If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     were provided when @indirectCommandsLayout@ was created, a+--     compatible set of callbacks /must/ be provided here+--+-- -   If no+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     were provided when @indirectCommandsLayout@ was created,+--     @pAllocator@ /must/ be @NULL@+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @indirectCommandsLayout@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @indirectCommandsLayout@ /must/ have been created, allocated, or+--     retrieved from @device@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV'+destroyIndirectCommandsLayoutNV :: forall io . MonadIO io => Device -> IndirectCommandsLayoutNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()+destroyIndirectCommandsLayoutNV device indirectCommandsLayout allocator = liftIO . evalContT $ do+  let vkDestroyIndirectCommandsLayoutNV' = mkVkDestroyIndirectCommandsLayoutNV (pVkDestroyIndirectCommandsLayoutNV (deviceCmds (device :: Device)))+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  lift $ vkDestroyIndirectCommandsLayoutNV' (deviceHandle (device)) (indirectCommandsLayout) pAllocator+  pure $ ()+++-- | VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - Structure describing+-- the device-generated commands features that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceDeviceGeneratedCommandsFeaturesNV' /can/ also be used in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV+  { -- | @deviceGeneratedCommands@ indicates whether the implementation supports+    -- functionality to generate commands on the device. See+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.+    deviceGeneratedCommands :: Bool }+  deriving (Typeable)+deriving instance Show PhysicalDeviceDeviceGeneratedCommandsFeaturesNV++instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where+  withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsFeaturesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (deviceGeneratedCommands))+    f+  cStructSize = 24+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+    f++instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where+  peekCStruct p = do+    deviceGeneratedCommands <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+    pure $ PhysicalDeviceDeviceGeneratedCommandsFeaturesNV+             (bool32ToBool deviceGeneratedCommands)++instance Storable PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where+  sizeOf ~_ = 24+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDeviceGeneratedCommandsFeaturesNV where+  zero = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV+           zero+++-- | VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - Structure+-- describing push descriptor limits that can be supported by an+-- implementation+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDeviceGeneratedCommandsPropertiesNV = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+  { -- | @maxGraphicsShaderGroupCount@ is the maximum number of shader groups in+    -- 'GraphicsPipelineShaderGroupsCreateInfoNV'.+    maxGraphicsShaderGroupCount :: Word32+  , -- | @maxIndirectSequenceCount@ is the maximum number of sequences in+    -- 'GeneratedCommandsInfoNV' and in+    -- 'GeneratedCommandsMemoryRequirementsInfoNV'.+    maxIndirectSequenceCount :: Word32+  , -- No documentation found for Nested "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV" "maxIndirectCommandsTokenCount"+    maxIndirectCommandsTokenCount :: Word32+  , -- | @maxIndirectCommandsStreamCount@ is the maximum number of streams in+    -- 'IndirectCommandsLayoutCreateInfoNV'.+    maxIndirectCommandsStreamCount :: Word32+  , -- | @maxIndirectCommandsTokenOffset@ is the maximum offset in+    -- 'IndirectCommandsLayoutTokenNV'.+    maxIndirectCommandsTokenOffset :: Word32+  , -- | @maxIndirectCommandsStreamStride@ is the maximum stream stride in+    -- 'IndirectCommandsLayoutCreateInfoNV'.+    maxIndirectCommandsStreamStride :: Word32+  , -- No documentation found for Nested "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV" "minSequencesCountBufferOffsetAlignment"+    minSequencesCountBufferOffsetAlignment :: Word32+  , -- No documentation found for Nested "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV" "minSequencesIndexBufferOffsetAlignment"+    minSequencesIndexBufferOffsetAlignment :: Word32+  , -- | @minIndirectCommandsBufferOffsetAlignment@ is the minimum alignment for+    -- memory addresses used in 'IndirectCommandsStreamNV' and as preprocess+    -- buffer in 'GeneratedCommandsInfoNV'.+    minIndirectCommandsBufferOffsetAlignment :: Word32+  }+  deriving (Typeable)+deriving instance Show PhysicalDeviceDeviceGeneratedCommandsPropertiesNV++instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceDeviceGeneratedCommandsPropertiesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxGraphicsShaderGroupCount)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxIndirectSequenceCount)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxIndirectCommandsTokenCount)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxIndirectCommandsStreamCount)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxIndirectCommandsTokenOffset)+    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxIndirectCommandsStreamStride)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (minSequencesCountBufferOffsetAlignment)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (minSequencesIndexBufferOffsetAlignment)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (minIndirectCommandsBufferOffsetAlignment)+    f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    f++instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where+  peekCStruct p = do+    maxGraphicsShaderGroupCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    maxIndirectSequenceCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    maxIndirectCommandsTokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    maxIndirectCommandsStreamCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    maxIndirectCommandsTokenOffset <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    maxIndirectCommandsStreamStride <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+    minSequencesCountBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    minSequencesIndexBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+    minIndirectCommandsBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    pure $ PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+             maxGraphicsShaderGroupCount maxIndirectSequenceCount maxIndirectCommandsTokenCount maxIndirectCommandsStreamCount maxIndirectCommandsTokenOffset maxIndirectCommandsStreamStride minSequencesCountBufferOffsetAlignment minSequencesIndexBufferOffsetAlignment minIndirectCommandsBufferOffsetAlignment++instance Storable PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where+  sizeOf ~_ = 56+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDeviceGeneratedCommandsPropertiesNV where+  zero = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkGraphicsShaderGroupCreateInfoNV - Structure specifying override+-- parameters for each shader group+--+-- == Valid Usage+--+-- -   For @stageCount@, the same restrictions as in+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@stageCount@+--     apply+--+-- -   For @pStages@, the same restrictions as in+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@+--     apply+--+-- -   For @pVertexInputState@, the same restrictions as in+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pVertexInputState@+--     apply+--+-- -   For @pTessellationState@, the same restrictions as in+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pTessellationState@+--     apply+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @pStages@ /must/ be a valid pointer to an array of @stageCount@+--     valid+--     'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+--     structures+--+-- -   @stageCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'GraphicsPipelineShaderGroupsCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GraphicsShaderGroupCreateInfoNV = GraphicsShaderGroupCreateInfoNV+  { -- | @pStages@ is an array of size @stageCount@ structures of type+    -- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+    -- describing the set of the shader stages to be included in this shader+    -- group.+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+  , -- | @pVertexInputState@ is a pointer to an instance of the+    -- 'Graphics.Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'+    -- structure.+    vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)+  , -- | @pTessellationState@ is a pointer to an instance of the+    -- 'Graphics.Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo'+    -- structure, and is ignored if the shader group does not include a+    -- tessellation control shader stage and tessellation evaluation shader+    -- stage.+    tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)+  }+  deriving (Typeable)+deriving instance Show GraphicsShaderGroupCreateInfoNV++instance ToCStruct GraphicsShaderGroupCreateInfoNV where+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GraphicsShaderGroupCreateInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    pVertexInputState'' <- case (vertexInputState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''+    pTessellationState'' <- case (tessellationState) of+      Nothing -> pure nullPtr+      Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''+    lift $ f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    lift $ f++instance FromCStruct GraphicsShaderGroupCreateInfoNV where+  peekCStruct p = do+    stageCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+    pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo a))))+    pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState+    pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 40 :: Ptr (Ptr (PipelineTessellationStateCreateInfo a))))+    pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState+    pure $ GraphicsShaderGroupCreateInfoNV+             pStages' pVertexInputState' pTessellationState'++instance Zero GraphicsShaderGroupCreateInfoNV where+  zero = GraphicsShaderGroupCreateInfoNV+           mempty+           Nothing+           Nothing+++-- | VkGraphicsPipelineShaderGroupsCreateInfoNV - Structure specifying+-- parameters of a newly created multi shader group pipeline+--+-- = Description+--+-- When referencing shader groups by index, groups defined in the+-- referenced pipelines are treated as if they were defined as additional+-- entries in @pGroups@. They are appended in the order they appear in the+-- @pPipelines@ array and in the @pGroups@ array when those pipelines were+-- defined.+--+-- The application /must/ maintain the lifetime of all such referenced+-- pipelines based on the pipelines that make use of them.+--+-- == Valid Usage+--+-- -   @groupCount@ /must/ be at least @1@ and as maximum+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxGraphicsShaderGroupCount@+--+-- -   The sum of @groupCount@ including those groups added from referenced+--     @pPipelines@ /must/ also be as maximum+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxGraphicsShaderGroupCount@+--+-- -   The state of the first element of @pGroups@ /must/ match its+--     equivalent within the parent’s+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+--+-- -   Each element of @pGroups@ /must/ in combination with the rest of the+--     pipeline state yield a valid state configuration+--+-- -   All elements of @pGroups@ /must/ use the same shader stage+--     combinations unless any mesh shader stage is used, then either+--     combination of task and mesh or just mesh shader is valid+--+-- -   Mesh and regular primitive shading stages cannot be mixed across+--     @pGroups@+--+-- -   Each element of the @pPipelines@ member of @libraries@ /must/ have+--     been created with identical state to the pipeline currently created+--     except the state that can be overriden by+--     'GraphicsShaderGroupCreateInfoNV'+--+-- -   The+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#feature-device-generated-commands ::deviceGeneratedCommands>+--     feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV'+--+-- -   @pGroups@ /must/ be a valid pointer to an array of @groupCount@+--     valid 'GraphicsShaderGroupCreateInfoNV' structures+--+-- -   If @pipelineCount@ is not @0@, @pPipelines@ /must/ be a valid+--     pointer to an array of @pipelineCount@ valid+--     'Graphics.Vulkan.Core10.Handles.Pipeline' handles+--+-- -   @groupCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'GraphicsShaderGroupCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GraphicsPipelineShaderGroupsCreateInfoNV = GraphicsPipelineShaderGroupsCreateInfoNV+  { -- | @pGroups@ is an array of 'GraphicsShaderGroupCreateInfoNV' values+    -- specifying which state of the original+    -- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' each shader+    -- group overrides.+    groups :: Vector GraphicsShaderGroupCreateInfoNV+  , -- | @pPipelines@ is an array of graphics+    -- 'Graphics.Vulkan.Core10.Handles.Pipeline', which are referenced within+    -- the created pipeline, including all their shader groups.+    pipelines :: Vector Pipeline+  }+  deriving (Typeable)+deriving instance Show GraphicsPipelineShaderGroupsCreateInfoNV++instance ToCStruct GraphicsPipelineShaderGroupsCreateInfoNV where+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GraphicsPipelineShaderGroupsCreateInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))+    pPGroups' <- ContT $ allocaBytesAligned @GraphicsShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr GraphicsShaderGroupCreateInfoNV) (e) . ($ ())) (groups)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr GraphicsShaderGroupCreateInfoNV))) (pPGroups')+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (pipelines)) :: Word32))+    pPPipelines' <- ContT $ allocaBytesAligned @Pipeline ((Data.Vector.length (pipelines)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPipelines' `plusPtr` (8 * (i)) :: Ptr Pipeline) (e)) (pipelines)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Pipeline))) (pPPipelines')+    lift $ f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    pPGroups' <- ContT $ allocaBytesAligned @GraphicsShaderGroupCreateInfoNV ((Data.Vector.length (mempty)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (48 * (i)) :: Ptr GraphicsShaderGroupCreateInfoNV) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr GraphicsShaderGroupCreateInfoNV))) (pPGroups')+    pPPipelines' <- ContT $ allocaBytesAligned @Pipeline ((Data.Vector.length (mempty)) * 8) 8+    lift $ Data.Vector.imapM_ (\i e -> poke (pPPipelines' `plusPtr` (8 * (i)) :: Ptr Pipeline) (e)) (mempty)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Pipeline))) (pPPipelines')+    lift $ f++instance FromCStruct GraphicsPipelineShaderGroupsCreateInfoNV where+  peekCStruct p = do+    groupCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    pGroups <- peek @(Ptr GraphicsShaderGroupCreateInfoNV) ((p `plusPtr` 24 :: Ptr (Ptr GraphicsShaderGroupCreateInfoNV)))+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @GraphicsShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (48 * (i)) :: Ptr GraphicsShaderGroupCreateInfoNV)))+    pipelineCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pPipelines <- peek @(Ptr Pipeline) ((p `plusPtr` 40 :: Ptr (Ptr Pipeline)))+    pPipelines' <- generateM (fromIntegral pipelineCount) (\i -> peek @Pipeline ((pPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+    pure $ GraphicsPipelineShaderGroupsCreateInfoNV+             pGroups' pPipelines'++instance Zero GraphicsPipelineShaderGroupsCreateInfoNV where+  zero = GraphicsPipelineShaderGroupsCreateInfoNV+           mempty+           mempty+++-- | VkBindShaderGroupIndirectCommandNV - Structure specifying input data for+-- a single shader group command token+--+-- == Valid Usage+--+-- -   The current bound graphics pipeline, as well as the pipelines it may+--     reference, /must/ have been created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   The @index@ /must/ be within range of the accessible shader groups+--     of the current bound graphics pipeline. See+--     'cmdBindPipelineShaderGroupNV' for further details+--+-- = See Also+--+-- No cross-references are available+data BindShaderGroupIndirectCommandNV = BindShaderGroupIndirectCommandNV+  { -- No documentation found for Nested "VkBindShaderGroupIndirectCommandNV" "groupIndex"+    groupIndex :: Word32 }+  deriving (Typeable)+deriving instance Show BindShaderGroupIndirectCommandNV++instance ToCStruct BindShaderGroupIndirectCommandNV where+  withCStruct x f = allocaBytesAligned 4 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p BindShaderGroupIndirectCommandNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (groupIndex)+    f+  cStructSize = 4+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    f++instance FromCStruct BindShaderGroupIndirectCommandNV where+  peekCStruct p = do+    groupIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    pure $ BindShaderGroupIndirectCommandNV+             groupIndex++instance Storable BindShaderGroupIndirectCommandNV where+  sizeOf ~_ = 4+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BindShaderGroupIndirectCommandNV where+  zero = BindShaderGroupIndirectCommandNV+           zero+++-- | VkBindIndexBufferIndirectCommandNV - Structure specifying input data for+-- a single index buffer command token+--+-- == Valid Usage+--+-- -   The buffer’s usage flag from which the address was acquired /must/+--     have the+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'+--     bit set+--+-- -   The @bufferAddress@ /must/ be aligned to the @indexType@ used+--+-- -   Each element of the buffer from which the address was acquired and+--     that is non-sparse /must/ be bound completely and contiguously to a+--     single 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- == Valid Usage (Implicit)+--+-- -   @indexType@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceAddress',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'+data BindIndexBufferIndirectCommandNV = BindIndexBufferIndirectCommandNV+  { -- | @bufferAddress@ specifies a physical address of the+    -- 'Graphics.Vulkan.Core10.Handles.Buffer' used as index buffer.+    bufferAddress :: DeviceAddress+  , -- | @size@ is the byte size range which is available for this operation from+    -- the provided address.+    size :: Word32+  , -- | @indexType@ is a 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'+    -- value specifying how indices are treated. Instead of the Vulkan enum+    -- values, a custom @uint32_t@ value /can/ be mapped to an+    -- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' by specifying the+    -- 'IndirectCommandsLayoutTokenNV'::@pIndexTypes@ and+    -- 'IndirectCommandsLayoutTokenNV'::@pIndexTypeValues@ arrays.+    indexType :: IndexType+  }+  deriving (Typeable)+deriving instance Show BindIndexBufferIndirectCommandNV++instance ToCStruct BindIndexBufferIndirectCommandNV where+  withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p BindIndexBufferIndirectCommandNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)+    poke ((p `plusPtr` 12 :: Ptr IndexType)) (indexType)+    f+  cStructSize = 16+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 12 :: Ptr IndexType)) (zero)+    f++instance FromCStruct BindIndexBufferIndirectCommandNV where+  peekCStruct p = do+    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))+    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+    indexType <- peek @IndexType ((p `plusPtr` 12 :: Ptr IndexType))+    pure $ BindIndexBufferIndirectCommandNV+             bufferAddress size indexType++instance Storable BindIndexBufferIndirectCommandNV where+  sizeOf ~_ = 16+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BindIndexBufferIndirectCommandNV where+  zero = BindIndexBufferIndirectCommandNV+           zero+           zero+           zero+++-- | VkBindVertexBufferIndirectCommandNV - Structure specifying input data+-- for a single vertex buffer command token+--+-- == Valid Usage+--+-- -   The buffer’s usage flag from which the address was acquired /must/+--     have the+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'+--     bit set+--+-- -   Each element of the buffer from which the address was acquired and+--     that is non-sparse /must/ be bound completely and contiguously to a+--     single 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceAddress'+data BindVertexBufferIndirectCommandNV = BindVertexBufferIndirectCommandNV+  { -- | @bufferAddress@ specifies a physical address of the+    -- 'Graphics.Vulkan.Core10.Handles.Buffer' used as vertex input binding.+    bufferAddress :: DeviceAddress+  , -- | @size@ is the byte size range which is available for this operation from+    -- the provided address.+    size :: Word32+  , -- | @stride@ is the byte size stride for this vertex input binding as in+    -- 'Graphics.Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@stride@.+    -- It is only used if+    -- 'IndirectCommandsLayoutTokenNV'::@vertexDynamicStride@ was set,+    -- otherwise the stride is inherited from the current bound graphics+    -- pipeline.+    stride :: Word32+  }+  deriving (Typeable)+deriving instance Show BindVertexBufferIndirectCommandNV++instance ToCStruct BindVertexBufferIndirectCommandNV where+  withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p BindVertexBufferIndirectCommandNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (bufferAddress)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (size)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (stride)+    f+  cStructSize = 16+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr DeviceAddress)) (zero)+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+    f++instance FromCStruct BindVertexBufferIndirectCommandNV where+  peekCStruct p = do+    bufferAddress <- peek @DeviceAddress ((p `plusPtr` 0 :: Ptr DeviceAddress))+    size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+    stride <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+    pure $ BindVertexBufferIndirectCommandNV+             bufferAddress size stride++instance Storable BindVertexBufferIndirectCommandNV where+  sizeOf ~_ = 16+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BindVertexBufferIndirectCommandNV where+  zero = BindVertexBufferIndirectCommandNV+           zero+           zero+           zero+++-- | VkSetStateFlagsIndirectCommandNV - Structure specifying input data for a+-- single state flag command token+--+-- = See Also+--+-- No cross-references are available+data SetStateFlagsIndirectCommandNV = SetStateFlagsIndirectCommandNV+  { -- | @data@ encodes packed state that this command alters.+    --+    -- -   Bit @0@: If set represents+    --     'Graphics.Vulkan.Core10.Enums.FrontFace.FRONT_FACE_CLOCKWISE',+    --     otherwise+    --     'Graphics.Vulkan.Core10.Enums.FrontFace.FRONT_FACE_COUNTER_CLOCKWISE'+    data' :: Word32 }+  deriving (Typeable)+deriving instance Show SetStateFlagsIndirectCommandNV++instance ToCStruct SetStateFlagsIndirectCommandNV where+  withCStruct x f = allocaBytesAligned 4 4 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p SetStateFlagsIndirectCommandNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (data')+    f+  cStructSize = 4+  cStructAlignment = 4+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+    f++instance FromCStruct SetStateFlagsIndirectCommandNV where+  peekCStruct p = do+    data' <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+    pure $ SetStateFlagsIndirectCommandNV+             data'++instance Storable SetStateFlagsIndirectCommandNV where+  sizeOf ~_ = 4+  alignment ~_ = 4+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SetStateFlagsIndirectCommandNV where+  zero = SetStateFlagsIndirectCommandNV+           zero+++-- | VkIndirectCommandsStreamNV - Structure specifying input streams for+-- generated command tokens+--+-- == Valid Usage+--+-- -   The @buffer@’s usage flag /must/ have the+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   The @offset@ /must/ be aligned to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@+--+-- -   If @buffer@ is non-sparse then it /must/ be bound completely and+--     contiguously to a single+--     'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- == Valid Usage (Implicit)+--+-- -   @buffer@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'+--     handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'GeneratedCommandsInfoNV'+data IndirectCommandsStreamNV = IndirectCommandsStreamNV+  { -- | @buffer@ specifies the 'Graphics.Vulkan.Core10.Handles.Buffer' storing+    -- the functional arguments for each sequence. These arguments /can/ be+    -- written by the device.+    buffer :: Buffer+  , -- | @offset@ specified an offset into @buffer@ where the arguments start.+    offset :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show IndirectCommandsStreamNV++instance ToCStruct IndirectCommandsStreamNV where+  withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p IndirectCommandsStreamNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (offset)+    f+  cStructSize = 16+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr Buffer)) (zero)+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct IndirectCommandsStreamNV where+  peekCStruct p = do+    buffer <- peek @Buffer ((p `plusPtr` 0 :: Ptr Buffer))+    offset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+    pure $ IndirectCommandsStreamNV+             buffer offset++instance Storable IndirectCommandsStreamNV where+  sizeOf ~_ = 16+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero IndirectCommandsStreamNV where+  zero = IndirectCommandsStreamNV+           zero+           zero+++-- | VkIndirectCommandsLayoutTokenNV - Struct specifying the details of an+-- indirect command layout token+--+-- == Valid Usage+--+-- -   @stream@ /must/ be smaller than+--     'IndirectCommandsLayoutCreateInfoNV'::@streamCount@+--+-- -   @offset@ /must/ be less than or equal to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsTokenOffset@+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV',+--     @vertexBindingUnit@ /must/ stay within device supported limits for+--     the appropriate commands+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',+--     @pushconstantPipelineLayout@ /must/ be valid+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',+--     @pushconstantOffset@ /must/ be a multiple of @4@+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',+--     @pushconstantSize@ /must/ be a multiple of @4@+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',+--     @pushconstantOffset@ /must/ be less than+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',+--     @pushconstantSize@ /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@+--     minus @pushconstantOffset@+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',+--     for each byte in the range specified by @pushconstantOffset@ and+--     @pushconstantSize@ and for each shader stage in+--     @pushconstantShaderStageFlags@, there /must/ be a push constant+--     range in @pushconstantPipelineLayout@ that includes that byte and+--     that stage+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV',+--     for each byte in the range specified by @pushconstantOffset@ and+--     @pushconstantSize@ and for each push constant range that overlaps+--     that byte, @pushconstantShaderStageFlags@ /must/ include all stages+--     in that push constant range’s+--     'Graphics.Vulkan.Core10.PipelineLayout.PushConstantRange'::@pushconstantShaderStageFlags@+--+-- -   If @tokenType@ is 'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV',+--     @indirectStateFlags@ /must/ not be ´0´+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @tokenType@ /must/ be a valid 'IndirectCommandsTokenTypeNV' value+--+-- -   If @pushconstantPipelineLayout@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @pushconstantPipelineLayout@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   @pushconstantShaderStageFlags@ /must/ be a valid combination of+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+--     values+--+-- -   @indirectStateFlags@ /must/ be a valid combination of+--     'IndirectStateFlagBitsNV' values+--+-- -   If @indexTypeCount@ is not @0@, @pIndexTypes@ /must/ be a valid+--     pointer to an array of @indexTypeCount@ valid+--     'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' values+--+-- -   If @indexTypeCount@ is not @0@, @pIndexTypeValues@ /must/ be a valid+--     pointer to an array of @indexTypeCount@ @uint32_t@ values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',+-- 'IndirectCommandsLayoutCreateInfoNV', 'IndirectCommandsTokenTypeNV',+-- 'IndirectStateFlagsNV', 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data IndirectCommandsLayoutTokenNV = IndirectCommandsLayoutTokenNV+  { -- | @tokenType@ specifies the token command type.+    tokenType :: IndirectCommandsTokenTypeNV+  , -- | @stream@ is the index of the input stream that contains the token+    -- argument data.+    stream :: Word32+  , -- | @offset@ is a relative starting offset within the input stream memory+    -- for the token argument data.+    offset :: Word32+  , -- | @vertexBindingUnit@ is used for the vertex buffer binding command.+    vertexBindingUnit :: Word32+  , -- | @vertexDynamicStride@ sets if the vertex buffer stride is provided by+    -- the binding command rather than the current bound graphics pipeline+    -- state.+    vertexDynamicStride :: Bool+  , -- | @pushconstantPipelineLayout@ is the+    -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used for the push+    -- constant command.+    pushconstantPipelineLayout :: PipelineLayout+  , -- | @pushconstantShaderStageFlags@ are the shader stage flags used for the+    -- push constant command.+    pushconstantShaderStageFlags :: ShaderStageFlags+  , -- | @pushconstantOffset@ is the offset used for the push constant command.+    pushconstantOffset :: Word32+  , -- | @pushconstantSize@ is the size used for the push constant command.+    pushconstantSize :: Word32+  , -- | @indirectStateFlags@ are the active states for the state flag command.+    indirectStateFlags :: IndirectStateFlagsNV+  , -- | @pIndexTypes@ is the used+    -- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' for the corresponding+    -- @uint32_t@ value entry in @pIndexTypeValues@.+    indexTypes :: Vector IndexType+  , -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNV" "pIndexTypeValues"+    indexTypeValues :: Vector Word32+  }+  deriving (Typeable)+deriving instance Show IndirectCommandsLayoutTokenNV++instance ToCStruct IndirectCommandsLayoutTokenNV where+  withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p IndirectCommandsLayoutTokenNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV)) (tokenType)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (stream)+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (offset)+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (vertexBindingUnit)+    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (vertexDynamicStride))+    lift $ poke ((p `plusPtr` 40 :: Ptr PipelineLayout)) (pushconstantPipelineLayout)+    lift $ poke ((p `plusPtr` 48 :: Ptr ShaderStageFlags)) (pushconstantShaderStageFlags)+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (pushconstantOffset)+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (pushconstantSize)+    lift $ poke ((p `plusPtr` 60 :: Ptr IndirectStateFlagsNV)) (indirectStateFlags)+    let pIndexTypesLength = Data.Vector.length $ (indexTypes)+    let pIndexTypeValuesLength = Data.Vector.length $ (indexTypeValues)+    lift $ unless (pIndexTypeValuesLength == pIndexTypesLength) $+      throwIO $ IOError Nothing InvalidArgument "" "pIndexTypeValues and pIndexTypes must have the same length" Nothing Nothing+    lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral pIndexTypesLength :: Word32))+    pPIndexTypes' <- ContT $ allocaBytesAligned @IndexType ((Data.Vector.length (indexTypes)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypes' `plusPtr` (4 * (i)) :: Ptr IndexType) (e)) (indexTypes)+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr IndexType))) (pPIndexTypes')+    pPIndexTypeValues' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (indexTypeValues)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypeValues' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (indexTypeValues)+    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr Word32))) (pPIndexTypeValues')+    lift $ f+  cStructSize = 88+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV)) (zero)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+    lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+    pPIndexTypes' <- ContT $ allocaBytesAligned @IndexType ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypes' `plusPtr` (4 * (i)) :: Ptr IndexType) (e)) (mempty)+    lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr IndexType))) (pPIndexTypes')+    pPIndexTypeValues' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPIndexTypeValues' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr Word32))) (pPIndexTypeValues')+    lift $ f++instance FromCStruct IndirectCommandsLayoutTokenNV where+  peekCStruct p = do+    tokenType <- peek @IndirectCommandsTokenTypeNV ((p `plusPtr` 16 :: Ptr IndirectCommandsTokenTypeNV))+    stream <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    offset <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    vertexBindingUnit <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    vertexDynamicStride <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+    pushconstantPipelineLayout <- peek @PipelineLayout ((p `plusPtr` 40 :: Ptr PipelineLayout))+    pushconstantShaderStageFlags <- peek @ShaderStageFlags ((p `plusPtr` 48 :: Ptr ShaderStageFlags))+    pushconstantOffset <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+    pushconstantSize <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+    indirectStateFlags <- peek @IndirectStateFlagsNV ((p `plusPtr` 60 :: Ptr IndirectStateFlagsNV))+    indexTypeCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+    pIndexTypes <- peek @(Ptr IndexType) ((p `plusPtr` 72 :: Ptr (Ptr IndexType)))+    pIndexTypes' <- generateM (fromIntegral indexTypeCount) (\i -> peek @IndexType ((pIndexTypes `advancePtrBytes` (4 * (i)) :: Ptr IndexType)))+    pIndexTypeValues <- peek @(Ptr Word32) ((p `plusPtr` 80 :: Ptr (Ptr Word32)))+    pIndexTypeValues' <- generateM (fromIntegral indexTypeCount) (\i -> peek @Word32 ((pIndexTypeValues `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    pure $ IndirectCommandsLayoutTokenNV+             tokenType stream offset vertexBindingUnit (bool32ToBool vertexDynamicStride) pushconstantPipelineLayout pushconstantShaderStageFlags pushconstantOffset pushconstantSize indirectStateFlags pIndexTypes' pIndexTypeValues'++instance Zero IndirectCommandsLayoutTokenNV where+  zero = IndirectCommandsLayoutTokenNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           mempty+           mempty+++-- | VkIndirectCommandsLayoutCreateInfoNV - Structure specifying the+-- parameters of a newly created indirect commands layout object+--+-- = Description+--+-- The following code illustrates some of the flags:+--+-- > void cmdProcessAllSequences(cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferOffset)+-- > {+-- >   for (s = 0; s < sequencesCount; s++)+-- >   {+-- >     sUsed = s;+-- >+-- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV) {+-- >       sUsed = indexbuffer.load_uint32( sUsed * sizeof(uint32_t) + indexbufferOffset);+-- >     }+-- >+-- >     if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV) {+-- >       sUsed = incoherent_implementation_dependent_permutation[ sUsed ];+-- >     }+-- >+-- >     cmdProcessSequence( cmd, pipeline, indirectCommandsLayout, pIndirectCommandsTokens, sUsed );+-- >   }+-- > }+--+-- == Valid Usage+--+-- -   The @pipelineBindPoint@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- -   @tokenCount@ /must/ be greater than @0@ and less than or equal to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsTokenCount@+--+-- -   If @pTokens@ contains an entry of+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV' it /must/ be the+--     first element of the array and there /must/ be only a single element+--     of such token type+--+-- -   If @pTokens@ contains an entry of+--     'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV' there /must/ be only a+--     single element of such token type+--+-- -   All state tokens in @pTokens@ /must/ occur prior work provoking+--     tokens ('INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV',+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV',+--     'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV')+--+-- -   The content of @pTokens@ /must/ include one single work provoking+--     token that is compatible with the @pipelineBindPoint@+--+-- -   @streamCount@ /must/ be greater than @0@ and less or equal to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsStreamCount@+--+-- -   each element of @pStreamStrides@ /must/ be greater than \`0\`and+--     less than or equal to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectCommandsStreamStride@.+--     Furthermore the alignment of each token input /must/ be ensured+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @flags@ /must/ be a valid combination of+--     'IndirectCommandsLayoutUsageFlagBitsNV' values+--+-- -   @flags@ /must/ not be @0@+--+-- -   @pipelineBindPoint@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+--     value+--+-- -   @pTokens@ /must/ be a valid pointer to an array of @tokenCount@+--     valid 'IndirectCommandsLayoutTokenNV' structures+--+-- -   @pStreamStrides@ /must/ be a valid pointer to an array of+--     @streamCount@ @uint32_t@ values+--+-- -   @tokenCount@ /must/ be greater than @0@+--+-- -   @streamCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'IndirectCommandsLayoutTokenNV', 'IndirectCommandsLayoutUsageFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createIndirectCommandsLayoutNV'+data IndirectCommandsLayoutCreateInfoNV = IndirectCommandsLayoutCreateInfoNV+  { -- | @flags@ is a bitmask of 'IndirectCommandsLayoutUsageFlagBitsNV'+    -- specifying usage hints of this layout.+    flags :: IndirectCommandsLayoutUsageFlagsNV+  , -- | @pipelineBindPoint@ is the+    -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' that+    -- this layout targets.+    pipelineBindPoint :: PipelineBindPoint+  , -- | @pTokens@ is an array describing each command token in detail. See+    -- 'IndirectCommandsTokenTypeNV' and 'IndirectCommandsLayoutTokenNV' below+    -- for details.+    tokens :: Vector IndirectCommandsLayoutTokenNV+  , -- | @pStreamStrides@ is an array defining the byte stride for each input+    -- stream.+    streamStrides :: Vector Word32+  }+  deriving (Typeable)+deriving instance Show IndirectCommandsLayoutCreateInfoNV++instance ToCStruct IndirectCommandsLayoutCreateInfoNV where+  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p IndirectCommandsLayoutCreateInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (pipelineBindPoint)+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tokens)) :: Word32))+    pPTokens' <- ContT $ allocaBytesAligned @IndirectCommandsLayoutTokenNV ((Data.Vector.length (tokens)) * 88) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (88 * (i)) :: Ptr IndirectCommandsLayoutTokenNV) (e) . ($ ())) (tokens)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNV))) (pPTokens')+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (streamStrides)) :: Word32))+    pPStreamStrides' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (streamStrides)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreamStrides' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (streamStrides)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPStreamStrides')+    lift $ f+  cStructSize = 56+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV)) (zero)+    lift $ poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (zero)+    pPTokens' <- ContT $ allocaBytesAligned @IndirectCommandsLayoutTokenNV ((Data.Vector.length (mempty)) * 88) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (88 * (i)) :: Ptr IndirectCommandsLayoutTokenNV) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNV))) (pPTokens')+    pPStreamStrides' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+    lift $ Data.Vector.imapM_ (\i e -> poke (pPStreamStrides' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPStreamStrides')+    lift $ f++instance FromCStruct IndirectCommandsLayoutCreateInfoNV where+  peekCStruct p = do+    flags <- peek @IndirectCommandsLayoutUsageFlagsNV ((p `plusPtr` 16 :: Ptr IndirectCommandsLayoutUsageFlagsNV))+    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 20 :: Ptr PipelineBindPoint))+    tokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    pTokens <- peek @(Ptr IndirectCommandsLayoutTokenNV) ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNV)))+    pTokens' <- generateM (fromIntegral tokenCount) (\i -> peekCStruct @IndirectCommandsLayoutTokenNV ((pTokens `advancePtrBytes` (88 * (i)) :: Ptr IndirectCommandsLayoutTokenNV)))+    streamCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    pStreamStrides <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))+    pStreamStrides' <- generateM (fromIntegral streamCount) (\i -> peek @Word32 ((pStreamStrides `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+    pure $ IndirectCommandsLayoutCreateInfoNV+             flags pipelineBindPoint pTokens' pStreamStrides'++instance Zero IndirectCommandsLayoutCreateInfoNV where+  zero = IndirectCommandsLayoutCreateInfoNV+           zero+           zero+           mempty+           mempty+++-- | VkGeneratedCommandsInfoNV - Structure specifying parameters for the+-- generation of commands+--+-- == Valid Usage+--+-- -   The provided @pipeline@ /must/ match the pipeline bound at execution+--     time+--+-- -   If the @indirectCommandsLayout@ uses a token of+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV', then the @pipeline@+--     /must/ have been created with multiple shader groups+--+-- -   If the @indirectCommandsLayout@ uses a token of+--     'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV', then the @pipeline@+--     /must/ have been created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--     set in+--     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@flags@+--+-- -   If the @indirectCommandsLayout@ uses a token of+--     'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV', then the+--     @pipeline@\`s 'Graphics.Vulkan.Core10.Handles.PipelineLayout' /must/+--     match the+--     'IndirectCommandsLayoutTokenNV'::@pushconstantPipelineLayout@+--+-- -   @streamCount@ /must/ match the @indirectCommandsLayout@’s+--     @streamCount@+--+-- -   @sequencesCount@ /must/ be less or equal to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectSequenceCount@+--     and 'GeneratedCommandsMemoryRequirementsInfoNV'::@maxSequencesCount@+--     that was used to determine the @preprocessSize@+--+-- -   @preprocessBuffer@ /must/ have the+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set in its usage flag+--+-- -   @preprocessOffset@ /must/ be aligned to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minIndirectCommandsBufferOffsetAlignment@+--+-- -   If @preprocessBuffer@ is non-sparse then it /must/ be bound+--     completely and contiguously to a single+--     'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   @preprocessSize@ /must/ be at least equal to the memory+--     requirement\`s size returned by+--     'getGeneratedCommandsMemoryRequirementsNV' using the matching inputs+--     (@indirectCommandsLayout@, …​) as within this structure+--+-- -   @sequencesCountBuffer@ /can/ be set if the actual used count of+--     sequences is sourced from the provided buffer. In that case the+--     @sequencesCount@ serves as upper bound+--+-- -   If @sequencesCountBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', its usage flag+--     /must/ have the+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   If @sequencesCountBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @sequencesCountOffset@ /must/ be aligned to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minSequencesCountBufferOffsetAlignment@+--+-- -   If @sequencesCountBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- -   If @indirectCommandsLayout@’s+--     'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV' is set,+--     @sequencesIndexBuffer@ /must/ be set otherwise it /must/ be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @sequencesIndexBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', its usage flag+--     /must/ have the+--     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+--     bit set+--+-- -   If @sequencesIndexBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @sequencesIndexOffset@ /must/ be aligned to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@minSequencesIndexBufferOffsetAlignment@+--+-- -   If @sequencesIndexBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and is non-sparse+--     then it /must/ be bound completely and contiguously to a single+--     'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @pipelineBindPoint@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+--     value+--+-- -   @pipeline@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- -   @indirectCommandsLayout@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle+--+-- -   @pStreams@ /must/ be a valid pointer to an array of @streamCount@+--     valid 'IndirectCommandsStreamNV' structures+--+-- -   @preprocessBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   If @sequencesCountBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @sequencesCountBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   If @sequencesIndexBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @sequencesIndexBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   @streamCount@ /must/ be greater than @0@+--+-- -   Each of @indirectCommandsLayout@, @pipeline@, @preprocessBuffer@,+--     @sequencesCountBuffer@, and @sequencesIndexBuffer@ that are valid+--     handles of non-ignored parameters /must/ have been created,+--     allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',+-- 'IndirectCommandsStreamNV', 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdExecuteGeneratedCommandsNV', 'cmdPreprocessGeneratedCommandsNV'+data GeneratedCommandsInfoNV = GeneratedCommandsInfoNV+  { -- | @pipelineBindPoint@ is the+    -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' used+    -- for the @pipeline@.+    pipelineBindPoint :: PipelineBindPoint+  , -- | @pipeline@ is the 'Graphics.Vulkan.Core10.Handles.Pipeline' used in the+    -- generation and execution process.+    pipeline :: Pipeline+  , -- | @indirectCommandsLayout@ is the+    -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' that+    -- provides the command sequence to generate.+    indirectCommandsLayout :: IndirectCommandsLayoutNV+  , -- | @pStreams@ provides an array of 'IndirectCommandsStreamNV' that provide+    -- the input data for the tokens used in @indirectCommandsLayout@.+    streams :: Vector IndirectCommandsStreamNV+  , -- | @sequencesCount@ is the maximum number of sequences to reserve. If+    -- @sequencesCountBuffer@ is+    -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', this is also the+    -- actual number of sequences generated.+    sequencesCount :: Word32+  , -- | @preprocessBuffer@ is the 'Graphics.Vulkan.Core10.Handles.Buffer' that+    -- is used for preprocessing the input data for execution. If this+    -- structure is used with 'cmdExecuteGeneratedCommandsNV' with its+    -- @isPreprocessed@ set to 'Graphics.Vulkan.Core10.BaseType.TRUE', then the+    -- preprocessing step is skipped and data is only read from this buffer.+    preprocessBuffer :: Buffer+  , -- | @preprocessOffset@ is the byte offset into @preprocessBuffer@ where the+    -- preprocessed data is stored.+    preprocessOffset :: DeviceSize+  , -- | @preprocessSize@ is the maximum byte size within the @preprocessBuffer@+    -- after the @preprocessOffset@ that is available for preprocessing.+    preprocessSize :: DeviceSize+  , -- | @sequencesCountBuffer@ is a 'Graphics.Vulkan.Core10.Handles.Buffer' in+    -- which the actual number of sequences is provided as single @uint32_t@+    -- value.+    sequencesCountBuffer :: Buffer+  , -- | @sequencesCountOffset@ is the byte offset into @sequencesCountBuffer@+    -- where the count value is stored.+    sequencesCountOffset :: DeviceSize+  , -- | @sequencesIndexBuffer@ is a 'Graphics.Vulkan.Core10.Handles.Buffer' that+    -- encodes the used sequence indices as @uint32_t@ array.+    sequencesIndexBuffer :: Buffer+  , -- | @sequencesIndexOffset@ is the byte offset into @sequencesIndexBuffer@+    -- where the index values start.+    sequencesIndexOffset :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show GeneratedCommandsInfoNV++instance ToCStruct GeneratedCommandsInfoNV where+  withCStruct x f = allocaBytesAligned 120 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeneratedCommandsInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)+    lift $ poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)+    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (indirectCommandsLayout)+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (streams)) :: Word32))+    pPStreams' <- ContT $ allocaBytesAligned @IndirectCommandsStreamNV ((Data.Vector.length (streams)) * 16) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e) . ($ ())) (streams)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV))) (pPStreams')+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (sequencesCount)+    lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (preprocessBuffer)+    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (preprocessOffset)+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (preprocessSize)+    lift $ poke ((p `plusPtr` 88 :: Ptr Buffer)) (sequencesCountBuffer)+    lift $ poke ((p `plusPtr` 96 :: Ptr DeviceSize)) (sequencesCountOffset)+    lift $ poke ((p `plusPtr` 104 :: Ptr Buffer)) (sequencesIndexBuffer)+    lift $ poke ((p `plusPtr` 112 :: Ptr DeviceSize)) (sequencesIndexOffset)+    lift $ f+  cStructSize = 120+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)+    lift $ poke ((p `plusPtr` 24 :: Ptr Pipeline)) (zero)+    lift $ poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (zero)+    pPStreams' <- ContT $ allocaBytesAligned @IndirectCommandsStreamNV ((Data.Vector.length (mempty)) * 16) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPStreams' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsStreamNV) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV))) (pPStreams')+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (zero)+    lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)+    lift $ poke ((p `plusPtr` 80 :: Ptr DeviceSize)) (zero)+    lift $ f++instance FromCStruct GeneratedCommandsInfoNV where+  peekCStruct p = do+    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))+    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))+    indirectCommandsLayout <- peek @IndirectCommandsLayoutNV ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV))+    streamCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    pStreams <- peek @(Ptr IndirectCommandsStreamNV) ((p `plusPtr` 48 :: Ptr (Ptr IndirectCommandsStreamNV)))+    pStreams' <- generateM (fromIntegral streamCount) (\i -> peekCStruct @IndirectCommandsStreamNV ((pStreams `advancePtrBytes` (16 * (i)) :: Ptr IndirectCommandsStreamNV)))+    sequencesCount <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+    preprocessBuffer <- peek @Buffer ((p `plusPtr` 64 :: Ptr Buffer))+    preprocessOffset <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))+    preprocessSize <- peek @DeviceSize ((p `plusPtr` 80 :: Ptr DeviceSize))+    sequencesCountBuffer <- peek @Buffer ((p `plusPtr` 88 :: Ptr Buffer))+    sequencesCountOffset <- peek @DeviceSize ((p `plusPtr` 96 :: Ptr DeviceSize))+    sequencesIndexBuffer <- peek @Buffer ((p `plusPtr` 104 :: Ptr Buffer))+    sequencesIndexOffset <- peek @DeviceSize ((p `plusPtr` 112 :: Ptr DeviceSize))+    pure $ GeneratedCommandsInfoNV+             pipelineBindPoint pipeline indirectCommandsLayout pStreams' sequencesCount preprocessBuffer preprocessOffset preprocessSize sequencesCountBuffer sequencesCountOffset sequencesIndexBuffer sequencesIndexOffset++instance Zero GeneratedCommandsInfoNV where+  zero = GeneratedCommandsInfoNV+           zero+           zero+           zero+           mempty+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkGeneratedCommandsMemoryRequirementsInfoNV - Structure specifying+-- parameters for the reservation of preprocess buffer space+--+-- == Valid Usage+--+-- -   @maxSequencesCount@ /must/ be less or equal to+--     'PhysicalDeviceDeviceGeneratedCommandsPropertiesNV'::@maxIndirectSequenceCount@+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @pipelineBindPoint@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+--     value+--+-- -   @pipeline@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- -   @indirectCommandsLayout@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' handle+--+-- -   Both of @indirectCommandsLayout@, and @pipeline@ /must/ have been+--     created, allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getGeneratedCommandsMemoryRequirementsNV'+data GeneratedCommandsMemoryRequirementsInfoNV = GeneratedCommandsMemoryRequirementsInfoNV+  { -- | @pipelineBindPoint@ is the+    -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' of+    -- the @pipeline@ that this buffer memory is intended to be used with+    -- during the execution.+    pipelineBindPoint :: PipelineBindPoint+  , -- | @pipeline@ is the 'Graphics.Vulkan.Core10.Handles.Pipeline' that this+    -- buffer memory is intended to be used with during the execution.+    pipeline :: Pipeline+  , -- | @indirectCommandsLayout@ is the+    -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNV' that this+    -- buffer memory is intended to be used with.+    indirectCommandsLayout :: IndirectCommandsLayoutNV+  , -- | @maxSequencesCount@ is the maximum number of sequences that this buffer+    -- memory in combination with the other state provided /can/ be used with.+    maxSequencesCount :: Word32+  }+  deriving (Typeable)+deriving instance Show GeneratedCommandsMemoryRequirementsInfoNV++instance ToCStruct GeneratedCommandsMemoryRequirementsInfoNV where+  withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeneratedCommandsMemoryRequirementsInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)+    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (pipeline)+    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (indirectCommandsLayout)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxSequencesCount)+    f+  cStructSize = 48+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Pipeline)) (zero)+    poke ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+    f++instance FromCStruct GeneratedCommandsMemoryRequirementsInfoNV where+  peekCStruct p = do+    pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))+    pipeline <- peek @Pipeline ((p `plusPtr` 24 :: Ptr Pipeline))+    indirectCommandsLayout <- peek @IndirectCommandsLayoutNV ((p `plusPtr` 32 :: Ptr IndirectCommandsLayoutNV))+    maxSequencesCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+    pure $ GeneratedCommandsMemoryRequirementsInfoNV+             pipelineBindPoint pipeline indirectCommandsLayout maxSequencesCount++instance Storable GeneratedCommandsMemoryRequirementsInfoNV where+  sizeOf ~_ = 48+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeneratedCommandsMemoryRequirementsInfoNV where+  zero = GeneratedCommandsMemoryRequirementsInfoNV+           zero+           zero+           zero+           zero+++-- | VkIndirectCommandsLayoutUsageFlagBitsNV - Bitmask specifying allowed+-- usage of an indirect commands layout+--+-- = See Also+--+-- 'IndirectCommandsLayoutUsageFlagsNV'+newtype IndirectCommandsLayoutUsageFlagBitsNV = IndirectCommandsLayoutUsageFlagBitsNV Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV' specifies+-- that the layout is always used with the manual preprocessing step+-- through calling 'cmdPreprocessGeneratedCommandsNV' and executed by+-- 'cmdExecuteGeneratedCommandsNV' with @isPreprocessed@ set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE'.+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000001+-- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV' specifies that+-- the input data for the sequences is not implicitly indexed from+-- 0..sequencesUsed but a user provided+-- 'Graphics.Vulkan.Core10.Handles.Buffer' encoding the index is provided.+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000002+-- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV' specifies+-- that the processing of sequences /can/ happen at an+-- implementation-dependent order, which is not: guaranteed to be coherent+-- using the same input data.+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = IndirectCommandsLayoutUsageFlagBitsNV 0x00000004++type IndirectCommandsLayoutUsageFlagsNV = IndirectCommandsLayoutUsageFlagBitsNV++instance Show IndirectCommandsLayoutUsageFlagBitsNV where+  showsPrec p = \case+    INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"+    INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"+    INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"+    IndirectCommandsLayoutUsageFlagBitsNV x -> showParen (p >= 11) (showString "IndirectCommandsLayoutUsageFlagBitsNV 0x" . showHex x)++instance Read IndirectCommandsLayoutUsageFlagBitsNV where+  readPrec = parens (choose [("INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV", pure INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV)+                            , ("INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV", pure INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV)+                            , ("INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV", pure INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV)]+                     ++++                     prec 10 (do+                       expectP (Ident "IndirectCommandsLayoutUsageFlagBitsNV")+                       v <- step readPrec+                       pure (IndirectCommandsLayoutUsageFlagBitsNV v)))+++-- | VkIndirectStateFlagBitsNV - Bitmask specifiying state that can be+-- altered on the device+--+-- = See Also+--+-- 'IndirectStateFlagsNV'+newtype IndirectStateFlagBitsNV = IndirectStateFlagBitsNV Flags+  deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV' allows to toggle the+-- 'Graphics.Vulkan.Core10.Enums.FrontFace.FrontFace' rasterization state+-- for subsequent draw operations.+pattern INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = IndirectStateFlagBitsNV 0x00000001++type IndirectStateFlagsNV = IndirectStateFlagBitsNV++instance Show IndirectStateFlagBitsNV where+  showsPrec p = \case+    INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV -> showString "INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"+    IndirectStateFlagBitsNV x -> showParen (p >= 11) (showString "IndirectStateFlagBitsNV 0x" . showHex x)++instance Read IndirectStateFlagBitsNV where+  readPrec = parens (choose [("INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV", pure INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV)]+                     ++++                     prec 10 (do+                       expectP (Ident "IndirectStateFlagBitsNV")+                       v <- step readPrec+                       pure (IndirectStateFlagBitsNV v)))+++-- | VkIndirectCommandsTokenTypeNV - Enum specifying token commands+--+-- = Description+--+-- \'+--+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | Token type                                      | Equivalent command                                                        |+-- +=================================================+===========================================================================++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV'  | 'cmdBindPipelineShaderGroupNV'                                            |+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV'   | -                                                                         |+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV'  | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'         |+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'       |+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPushConstants'           |+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV'  | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'     |+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV'          | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect'            |+-- +-------------------------------------------------+---------------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV'    | 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV' |+-- +-------------------------------------------------+---------------------------------------------------------------------------++--+-- Supported indirect command tokens+--+-- = See Also+--+-- 'IndirectCommandsLayoutTokenNV'+newtype IndirectCommandsTokenTypeNV = IndirectCommandsTokenTypeNV Int32+  deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = IndirectCommandsTokenTypeNV 0+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = IndirectCommandsTokenTypeNV 1+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = IndirectCommandsTokenTypeNV 2+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = IndirectCommandsTokenTypeNV 3+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = IndirectCommandsTokenTypeNV 4+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = IndirectCommandsTokenTypeNV 5+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = IndirectCommandsTokenTypeNV 6+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNV" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = IndirectCommandsTokenTypeNV 7+{-# complete INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV,+             INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV,+             INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV,+             INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV,+             INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV,+             INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV,+             INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV,+             INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV :: IndirectCommandsTokenTypeNV #-}++instance Show IndirectCommandsTokenTypeNV where+  showsPrec p = \case+    INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV"+    INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV"+    INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV"+    INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV"+    INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV"+    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV"+    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV"+    INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV"+    IndirectCommandsTokenTypeNV x -> showParen (p >= 11) (showString "IndirectCommandsTokenTypeNV " . showsPrec 11 x)++instance Read IndirectCommandsTokenTypeNV where+  readPrec = parens (choose [("INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV)+                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV)+                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV)+                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV)+                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV)+                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV)+                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV)+                            , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV)]+                     ++++                     prec 10 (do+                       expectP (Ident "IndirectCommandsTokenTypeNV")+                       v <- step readPrec+                       pure (IndirectCommandsTokenTypeNV v)))+++type NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"+pattern NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall a . Integral a => a+pattern NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3+++type NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands"++-- No documentation found for TopLevel "VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"+pattern NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands"+
+ src/Graphics/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot view
@@ -0,0 +1,122 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_device_generated_commands  ( BindIndexBufferIndirectCommandNV+                                                                   , BindShaderGroupIndirectCommandNV+                                                                   , BindVertexBufferIndirectCommandNV+                                                                   , GeneratedCommandsInfoNV+                                                                   , GeneratedCommandsMemoryRequirementsInfoNV+                                                                   , GraphicsPipelineShaderGroupsCreateInfoNV+                                                                   , GraphicsShaderGroupCreateInfoNV+                                                                   , IndirectCommandsLayoutCreateInfoNV+                                                                   , IndirectCommandsLayoutTokenNV+                                                                   , IndirectCommandsStreamNV+                                                                   , PhysicalDeviceDeviceGeneratedCommandsFeaturesNV+                                                                   , PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+                                                                   , SetStateFlagsIndirectCommandNV+                                                                   ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data BindIndexBufferIndirectCommandNV++instance ToCStruct BindIndexBufferIndirectCommandNV+instance Show BindIndexBufferIndirectCommandNV++instance FromCStruct BindIndexBufferIndirectCommandNV+++data BindShaderGroupIndirectCommandNV++instance ToCStruct BindShaderGroupIndirectCommandNV+instance Show BindShaderGroupIndirectCommandNV++instance FromCStruct BindShaderGroupIndirectCommandNV+++data BindVertexBufferIndirectCommandNV++instance ToCStruct BindVertexBufferIndirectCommandNV+instance Show BindVertexBufferIndirectCommandNV++instance FromCStruct BindVertexBufferIndirectCommandNV+++data GeneratedCommandsInfoNV++instance ToCStruct GeneratedCommandsInfoNV+instance Show GeneratedCommandsInfoNV++instance FromCStruct GeneratedCommandsInfoNV+++data GeneratedCommandsMemoryRequirementsInfoNV++instance ToCStruct GeneratedCommandsMemoryRequirementsInfoNV+instance Show GeneratedCommandsMemoryRequirementsInfoNV++instance FromCStruct GeneratedCommandsMemoryRequirementsInfoNV+++data GraphicsPipelineShaderGroupsCreateInfoNV++instance ToCStruct GraphicsPipelineShaderGroupsCreateInfoNV+instance Show GraphicsPipelineShaderGroupsCreateInfoNV++instance FromCStruct GraphicsPipelineShaderGroupsCreateInfoNV+++data GraphicsShaderGroupCreateInfoNV++instance ToCStruct GraphicsShaderGroupCreateInfoNV+instance Show GraphicsShaderGroupCreateInfoNV++instance FromCStruct GraphicsShaderGroupCreateInfoNV+++data IndirectCommandsLayoutCreateInfoNV++instance ToCStruct IndirectCommandsLayoutCreateInfoNV+instance Show IndirectCommandsLayoutCreateInfoNV++instance FromCStruct IndirectCommandsLayoutCreateInfoNV+++data IndirectCommandsLayoutTokenNV++instance ToCStruct IndirectCommandsLayoutTokenNV+instance Show IndirectCommandsLayoutTokenNV++instance FromCStruct IndirectCommandsLayoutTokenNV+++data IndirectCommandsStreamNV++instance ToCStruct IndirectCommandsStreamNV+instance Show IndirectCommandsStreamNV++instance FromCStruct IndirectCommandsStreamNV+++data PhysicalDeviceDeviceGeneratedCommandsFeaturesNV++instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV+instance Show PhysicalDeviceDeviceGeneratedCommandsFeaturesNV++instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV+++data PhysicalDeviceDeviceGeneratedCommandsPropertiesNV++instance ToCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+instance Show PhysicalDeviceDeviceGeneratedCommandsPropertiesNV++instance FromCStruct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV+++data SetStateFlagsIndirectCommandNV++instance ToCStruct SetStateFlagsIndirectCommandNV+instance Show SetStateFlagsIndirectCommandNV++instance FromCStruct SetStateFlagsIndirectCommandNV+
src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs view
@@ -136,7 +136,7 @@     -- values     handleType :: ExternalMemoryHandleTypeFlagsNV   , -- | @handle@ /must/ be a valid handle to memory, obtained as specified by-    -- @handleType@.+    -- @handleType@     handle :: HANDLE   }   deriving (Typeable)
src/Graphics/Vulkan/Extensions/VK_NV_mesh_shader.hs view
@@ -11,6 +11,7 @@                                                      , pattern NV_MESH_SHADER_EXTENSION_NAME                                                      ) where +import Graphics.Vulkan.CStruct.Utils (FixedArray) import Control.Monad.IO.Class (liftIO) import Foreign.Marshal.Alloc (allocaBytesAligned) import Foreign.Ptr (nullPtr)@@ -26,7 +27,6 @@ import Foreign.Ptr (Ptr) import Data.Word (Word32) import Data.Kind (Type)-import qualified Data.Vector.Storable.Sized (Vector) import Graphics.Vulkan.CStruct.Utils (advancePtrBytes) import Graphics.Vulkan.Core10.BaseType (bool32ToBool) import Graphics.Vulkan.Core10.BaseType (boolToBool32)@@ -125,7 +125,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -227,25 +227,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -385,7 +385,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -487,25 +487,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -687,7 +687,7 @@ --     sampled as a result of this command /must/ only be sampled using a --     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' --     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' -- -- -   For each set /n/ that is statically used by the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind@@ -789,25 +789,25 @@ --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   The subpass index of the current render pass /must/ be equal to the --     @subpass@ member of the --     'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' --     structure specified when creating the --     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to---     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--     'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS' -- -- -   Every input attachment used by the current subpass /must/ be bound --     to the pipeline via a descriptor set -- -- -   Image subresources used as attachments in the current render pass --     /must/ not be accessed in any way other than as an attachment by---     this command.+--     this command -- -- -   If the draw is recorded in a render pass instance with multiview --     enabled, the maximum instance index /must/ be less than or equal to---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@ -- -- -   If the bound graphics pipeline was created with --     'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@@@ -1067,7 +1067,7 @@     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr Word32)) (maxDrawMeshTasksCount)     poke ((p `plusPtr` 20 :: Ptr Word32)) (maxTaskWorkGroupInvocations)-    let pMaxTaskWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxTaskWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray 3 Word32)))     case (maxTaskWorkGroupSize) of       (e0, e1, e2) -> do         poke (pMaxTaskWorkGroupSize' :: Ptr Word32) (e0)@@ -1076,7 +1076,7 @@     poke ((p `plusPtr` 36 :: Ptr Word32)) (maxTaskTotalMemorySize)     poke ((p `plusPtr` 40 :: Ptr Word32)) (maxTaskOutputCount)     poke ((p `plusPtr` 44 :: Ptr Word32)) (maxMeshWorkGroupInvocations)-    let pMaxMeshWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxMeshWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 48 :: Ptr (FixedArray 3 Word32)))     case (maxMeshWorkGroupSize) of       (e0, e1, e2) -> do         poke (pMaxMeshWorkGroupSize' :: Ptr Word32) (e0)@@ -1096,7 +1096,7 @@     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)     poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    let pMaxTaskWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxTaskWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (FixedArray 3 Word32)))     case ((zero, zero, zero)) of       (e0, e1, e2) -> do         poke (pMaxTaskWorkGroupSize' :: Ptr Word32) (e0)@@ -1105,7 +1105,7 @@     poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)     poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)-    let pMaxMeshWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pMaxMeshWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 48 :: Ptr (FixedArray 3 Word32)))     case ((zero, zero, zero)) of       (e0, e1, e2) -> do         poke (pMaxMeshWorkGroupSize' :: Ptr Word32) (e0)@@ -1123,14 +1123,14 @@   peekCStruct p = do     maxDrawMeshTasksCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))     maxTaskWorkGroupInvocations <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    let pmaxTaskWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pmaxTaskWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 24 :: Ptr (FixedArray 3 Word32)))     maxTaskWorkGroupSize0 <- peek @Word32 ((pmaxTaskWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))     maxTaskWorkGroupSize1 <- peek @Word32 ((pmaxTaskWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))     maxTaskWorkGroupSize2 <- peek @Word32 ((pmaxTaskWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))     maxTaskTotalMemorySize <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))     maxTaskOutputCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))     maxMeshWorkGroupInvocations <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))-    let pmaxMeshWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+    let pmaxMeshWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 48 :: Ptr (FixedArray 3 Word32)))     maxMeshWorkGroupSize0 <- peek @Word32 ((pmaxMeshWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))     maxMeshWorkGroupSize1 <- peek @Word32 ((pmaxMeshWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))     maxMeshWorkGroupSize2 <- peek @Word32 ((pmaxMeshWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))
src/Graphics/Vulkan/Extensions/VK_NV_ray_tracing.hs view
@@ -1,3024 +1,2624 @@ {-# language CPP #-} module Graphics.Vulkan.Extensions.VK_NV_ray_tracing  ( compileDeferredNV                                                      , createAccelerationStructureNV-                                                     , withAccelerationStructureNV-                                                     , destroyAccelerationStructureNV-                                                     , getAccelerationStructureMemoryRequirementsNV-                                                     , bindAccelerationStructureMemoryNV-                                                     , cmdCopyAccelerationStructureNV-                                                     , cmdWriteAccelerationStructuresPropertiesNV-                                                     , cmdBuildAccelerationStructureNV-                                                     , cmdTraceRaysNV-                                                     , getRayTracingShaderGroupHandlesNV-                                                     , getAccelerationStructureHandleNV-                                                     , createRayTracingPipelinesNV-                                                     , RayTracingShaderGroupCreateInfoNV(..)-                                                     , RayTracingPipelineCreateInfoNV(..)-                                                     , GeometryTrianglesNV(..)-                                                     , GeometryAABBNV(..)-                                                     , GeometryDataNV(..)-                                                     , GeometryNV(..)-                                                     , AccelerationStructureInfoNV(..)-                                                     , AccelerationStructureCreateInfoNV(..)-                                                     , BindAccelerationStructureMemoryInfoNV(..)-                                                     , WriteDescriptorSetAccelerationStructureNV(..)-                                                     , AccelerationStructureMemoryRequirementsInfoNV(..)-                                                     , PhysicalDeviceRayTracingPropertiesNV(..)-                                                     , GeometryInstanceFlagBitsNV( GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV-                                                                                 , GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV-                                                                                 , GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV-                                                                                 , GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV-                                                                                 , ..-                                                                                 )-                                                     , GeometryInstanceFlagsNV-                                                     , GeometryFlagBitsNV( GEOMETRY_OPAQUE_BIT_NV-                                                                         , GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV-                                                                         , ..-                                                                         )-                                                     , GeometryFlagsNV-                                                     , BuildAccelerationStructureFlagBitsNV( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV-                                                                                           , BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV-                                                                                           , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV-                                                                                           , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV-                                                                                           , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV-                                                                                           , ..-                                                                                           )-                                                     , BuildAccelerationStructureFlagsNV-                                                     , CopyAccelerationStructureModeNV( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV-                                                                                      , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV-                                                                                      , ..-                                                                                      )-                                                     , AccelerationStructureTypeNV( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV-                                                                                  , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV-                                                                                  , ..-                                                                                  )-                                                     , GeometryTypeNV( GEOMETRY_TYPE_TRIANGLES_NV-                                                                     , GEOMETRY_TYPE_AABBS_NV-                                                                     , ..-                                                                     )-                                                     , AccelerationStructureMemoryRequirementsTypeNV( ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV-                                                                                                    , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV-                                                                                                    , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV-                                                                                                    , ..-                                                                                                    )-                                                     , RayTracingShaderGroupTypeNV( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV-                                                                                  , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV-                                                                                  , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV-                                                                                  , ..-                                                                                  )-                                                     , NV_RAY_TRACING_SPEC_VERSION-                                                     , pattern NV_RAY_TRACING_SPEC_VERSION-                                                     , NV_RAY_TRACING_EXTENSION_NAME-                                                     , pattern NV_RAY_TRACING_EXTENSION_NAME-                                                     , AccelerationStructureNV(..)-                                                     , DebugReportObjectTypeEXT(..)-                                                     , SHADER_UNUSED_NV-                                                     , pattern SHADER_UNUSED_NV-                                                     ) where--import Control.Exception.Base (bracket)-import Control.Monad.IO.Class (liftIO)-import Data.Typeable (eqT)-import Foreign.Marshal.Alloc (allocaBytesAligned)-import Foreign.Marshal.Alloc (callocBytes)-import Foreign.Marshal.Alloc (free)-import GHC.Base (when)-import GHC.IO (throwIO)-import GHC.Ptr (castPtr)-import Foreign.Ptr (nullPtr)-import Foreign.Ptr (plusPtr)-import GHC.Read (choose)-import GHC.Read (expectP)-import GHC.Read (parens)-import GHC.Show (showParen)-import GHC.Show (showString)-import GHC.Show (showsPrec)-import Numeric (showHex)-import Text.ParserCombinators.ReadPrec ((+++))-import Text.ParserCombinators.ReadPrec (prec)-import Text.ParserCombinators.ReadPrec (step)-import Control.Monad.Trans.Class (lift)-import Control.Monad.Trans.Cont (evalContT)-import Data.Vector (generateM)-import qualified Data.Vector (imapM_)-import qualified Data.Vector (length)-import Foreign.C.Types (CSize(..))-import Control.Monad.IO.Class (MonadIO)-import Data.Bits (Bits)-import Data.String (IsString)-import Data.Type.Equality ((:~:)(Refl))-import Data.Typeable (Typeable)-import Foreign.C.Types (CSize)-import Foreign.C.Types (CSize(CSize))-import Foreign.Storable (Storable)-import Foreign.Storable (Storable(peek))-import Foreign.Storable (Storable(poke))-import qualified Foreign.Storable (Storable(..))-import Data.Int (Int32)-import Foreign.Ptr (FunPtr)-import Foreign.Ptr (Ptr)-import GHC.Read (Read(readPrec))-import Data.Word (Word32)-import Data.Word (Word64)-import Text.Read.Lex (Lexeme(Ident))-import Data.Kind (Type)-import Control.Monad.Trans.Cont (ContT(..))-import Data.Vector (Vector)-import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)-import Graphics.Vulkan.Core10.BaseType (boolToBool32)-import Graphics.Vulkan.CStruct.Extends (forgetExtensions)-import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)-import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)-import Graphics.Vulkan.NamedType ((:::))-import Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV)-import Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV(..))-import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)-import Graphics.Vulkan.Core10.BaseType (Bool32)-import Graphics.Vulkan.Core10.BaseType (Bool32(..))-import Graphics.Vulkan.Core10.Handles (Buffer)-import Graphics.Vulkan.Core10.Handles (Buffer(..))-import Graphics.Vulkan.CStruct.Extends (Chain)-import Graphics.Vulkan.Core10.Handles (CommandBuffer)-import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))-import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)-import Graphics.Vulkan.Core10.Handles (Device)-import Graphics.Vulkan.Core10.Handles (Device(..))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))-import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesNV))-import Graphics.Vulkan.Core10.Handles (DeviceMemory)-import Graphics.Vulkan.Core10.BaseType (DeviceSize)-import Graphics.Vulkan.Core10.Handles (Device_T)-import Graphics.Vulkan.CStruct.Extends (Extends)-import Graphics.Vulkan.CStruct.Extends (Extensible(..))-import Graphics.Vulkan.Core10.BaseType (Flags)-import Graphics.Vulkan.Core10.Enums.Format (Format)-import Graphics.Vulkan.CStruct (FromCStruct)-import Graphics.Vulkan.CStruct (FromCStruct(..))-import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)-import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)-import Graphics.Vulkan.CStruct.Extends (PeekChain)-import Graphics.Vulkan.CStruct.Extends (PeekChain(..))-import Graphics.Vulkan.Core10.Handles (Pipeline)-import Graphics.Vulkan.Core10.Handles (Pipeline(..))-import Graphics.Vulkan.Core10.Handles (PipelineCache)-import Graphics.Vulkan.Core10.Handles (PipelineCache(..))-import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)-import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)-import Graphics.Vulkan.Core10.Handles (PipelineLayout)-import Graphics.Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)-import Graphics.Vulkan.CStruct.Extends (PokeChain)-import Graphics.Vulkan.CStruct.Extends (PokeChain(..))-import Graphics.Vulkan.Core10.Handles (QueryPool)-import Graphics.Vulkan.Core10.Handles (QueryPool(..))-import Graphics.Vulkan.Core10.Enums.QueryType (QueryType)-import Graphics.Vulkan.Core10.Enums.QueryType (QueryType(..))-import Graphics.Vulkan.Core10.Enums.Result (Result)-import Graphics.Vulkan.Core10.Enums.Result (Result(..))-import Graphics.Vulkan.CStruct.Extends (SomeStruct)-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)-import Graphics.Vulkan.CStruct (ToCStruct)-import Graphics.Vulkan.CStruct (ToCStruct(..))-import Graphics.Vulkan.Exception (VulkanException(..))-import Graphics.Vulkan.Zero (Zero)-import Graphics.Vulkan.Zero (Zero(..))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))-import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV))-import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))-import Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV(..))-import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))-import Graphics.Vulkan.Core10.APIConstants (SHADER_UNUSED_NV)-import Graphics.Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_NV)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCompileDeferredNV-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result---- | vkCompileDeferredNV - Deferred compilation of shaders------ = Parameters------ -   @device@ is the logical device containing the ray tracing pipeline.------ -   @pipeline@ is the ray tracing pipeline object containing the---     shaders.------ -   @shader@ is the index of the shader to compile.------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Device',--- 'Graphics.Vulkan.Core10.Handles.Pipeline'-compileDeferredNV :: forall io . MonadIO io => Device -> Pipeline -> ("shader" ::: Word32) -> io ()-compileDeferredNV device pipeline shader = liftIO $ do-  let vkCompileDeferredNV' = mkVkCompileDeferredNV (pVkCompileDeferredNV (deviceCmds (device :: Device)))-  r <- vkCompileDeferredNV' (deviceHandle (device)) (pipeline) (shader)-  when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateAccelerationStructureNV-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result---- | vkCreateAccelerationStructureNV - Create a new acceleration structure--- object------ = Parameters------ -   @device@ is the logical device that creates the buffer object.------ -   @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'---     structure containing parameters affecting creation of the---     acceleration structure.------ -   @pAllocator@ controls host memory allocation as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>---     chapter.------ -   @pAccelerationStructure@ is a pointer to a---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle---     in which the resulting acceleration structure object is returned.------ = Description------ Similar to other objects in Vulkan, the acceleration structure creation--- merely creates an object with a specific “shape” as specified by the--- information in 'AccelerationStructureInfoNV' and @compactedSize@ in--- @pCreateInfo@. Populating the data in the object after allocating and--- binding memory is done with 'cmdBuildAccelerationStructureNV' and--- 'cmdCopyAccelerationStructureNV'.------ Acceleration structure creation uses the count and type information from--- the geometries, but does not use the data references in the structures.------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @pCreateInfo@ /must/ be a valid pointer to a valid---     'AccelerationStructureCreateInfoNV' structure------ -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid---     pointer to a valid---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   @pAccelerationStructure@ /must/ be a valid pointer to a---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------ = See Also------ 'AccelerationStructureCreateInfoNV',--- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Graphics.Vulkan.Core10.Handles.Device'-createAccelerationStructureNV :: forall io . MonadIO io => Device -> AccelerationStructureCreateInfoNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io (AccelerationStructureNV)-createAccelerationStructureNV device createInfo allocator = liftIO . evalContT $ do-  let vkCreateAccelerationStructureNV' = mkVkCreateAccelerationStructureNV (pVkCreateAccelerationStructureNV (deviceCmds (device :: Device)))-  pCreateInfo <- ContT $ withCStruct (createInfo)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free-  r <- lift $ vkCreateAccelerationStructureNV' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pAccelerationStructure <- lift $ peek @AccelerationStructureNV pPAccelerationStructure-  pure $ (pAccelerationStructure)---- | A safe wrapper for 'createAccelerationStructureNV' and--- 'destroyAccelerationStructureNV' using 'bracket'------ The allocated value must not be returned from the provided computation-withAccelerationStructureNV :: forall r . Device -> AccelerationStructureCreateInfoNV -> Maybe AllocationCallbacks -> ((AccelerationStructureNV) -> IO r) -> IO r-withAccelerationStructureNV device pCreateInfo pAllocator =-  bracket-    (createAccelerationStructureNV device pCreateInfo pAllocator)-    (\(o0) -> destroyAccelerationStructureNV device o0 pAllocator)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkDestroyAccelerationStructureNV-  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()---- | vkDestroyAccelerationStructureNV - Destroy an acceleration structure--- object------ = Parameters------ -   @device@ is the logical device that destroys the buffer.------ -   @accelerationStructure@ is the acceleration structure to destroy.------ -   @pAllocator@ controls host memory allocation as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>---     chapter.------ == Valid Usage------ -   All submitted commands that refer to @accelerationStructure@ /must/---     have completed execution------ -   If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     were provided when @accelerationStructure@ was created, a compatible---     set of callbacks /must/ be provided here------ -   If no---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     were provided when @accelerationStructure@ was created, @pAllocator@---     /must/ be @NULL@------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @accelerationStructure@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle------ -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid---     pointer to a valid---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   @accelerationStructure@ /must/ have been created, allocated, or---     retrieved from @device@------ = See Also------ 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Graphics.Vulkan.Core10.Handles.Device'-destroyAccelerationStructureNV :: forall io . MonadIO io => Device -> AccelerationStructureNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()-destroyAccelerationStructureNV device accelerationStructure allocator = liftIO . evalContT $ do-  let vkDestroyAccelerationStructureNV' = mkVkDestroyAccelerationStructureNV (pVkDestroyAccelerationStructureNV (deviceCmds (device :: Device)))-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  lift $ vkDestroyAccelerationStructureNV' (deviceHandle (device)) (accelerationStructure) pAllocator-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV-  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()---- | vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration--- structure memory requirements------ = Parameters------ -   @device@ is the logical device on which the acceleration structure---     was created.------ -   @pInfo@ specifies the acceleration structure to get memory---     requirements for.------ -   @pMemoryRequirements@ returns the requested acceleration structure---     memory requirements.------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureMemoryRequirementsInfoNV',--- 'Graphics.Vulkan.Core10.Handles.Device',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'-getAccelerationStructureMemoryRequirementsNV :: forall a io . (PokeChain a, PeekChain a, MonadIO io) => Device -> AccelerationStructureMemoryRequirementsInfoNV -> io (MemoryRequirements2KHR a)-getAccelerationStructureMemoryRequirementsNV device info = liftIO . evalContT $ do-  let vkGetAccelerationStructureMemoryRequirementsNV' = mkVkGetAccelerationStructureMemoryRequirementsNV (pVkGetAccelerationStructureMemoryRequirementsNV (deviceCmds (device :: Device)))-  pInfo <- ContT $ withCStruct (info)-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2KHR _))-  lift $ vkGetAccelerationStructureMemoryRequirementsNV' (deviceHandle (device)) pInfo (pPMemoryRequirements)-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2KHR _) pPMemoryRequirements-  pure $ (pMemoryRequirements)---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkBindAccelerationStructureMemoryNV-  :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result---- | vkBindAccelerationStructureMemoryNV - Bind acceleration structure memory------ = Parameters------ -   @device@ is the logical device that owns the acceleration structures---     and memory.------ -   @bindInfoCount@ is the number of elements in @pBindInfos@.------ -   @pBindInfos@ is a pointer to an array of---     'BindAccelerationStructureMemoryInfoNV' structures describing images---     and memory to bind.------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'BindAccelerationStructureMemoryInfoNV',--- 'Graphics.Vulkan.Core10.Handles.Device'-bindAccelerationStructureMemoryNV :: forall io . MonadIO io => Device -> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoNV) -> io ()-bindAccelerationStructureMemoryNV device bindInfos = liftIO . evalContT $ do-  let vkBindAccelerationStructureMemoryNV' = mkVkBindAccelerationStructureMemoryNV (pVkBindAccelerationStructureMemoryNV (deviceCmds (device :: Device)))-  pPBindInfos <- ContT $ allocaBytesAligned @BindAccelerationStructureMemoryInfoNV ((Data.Vector.length (bindInfos)) * 56) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (56 * (i)) :: Ptr BindAccelerationStructureMemoryInfoNV) (e) . ($ ())) (bindInfos)-  r <- lift $ vkBindAccelerationStructureMemoryNV' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32)) (pPBindInfos)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdCopyAccelerationStructureNV-  :: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeNV -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeNV -> IO ()---- | vkCmdCopyAccelerationStructureNV - Copy an acceleration structure------ = Parameters------ -   @commandBuffer@ is the command buffer into which the command will be---     recorded.------ -   @dst@ is a pointer to the target acceleration structure for the---     copy.------ -   @src@ is a pointer to the source acceleration structure for the---     copy.------ -   @mode@ is a 'CopyAccelerationStructureModeNV' value specifying---     additional operations to perform during the copy.------ == Valid Usage------ -   @mode@ /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV' or---     'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV'------ -   @src@ /must/ have been built with---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' if @mode@ is---     'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV'------ == Valid Usage (Implicit)------ -   @commandBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle------ -   @dst@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle------ -   @src@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle------ -   @mode@ /must/ be a valid 'CopyAccelerationStructureModeNV' value------ -   @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ support compute operations------ -   This command /must/ only be called outside of a render pass instance------ -   Each of @commandBuffer@, @dst@, and @src@ /must/ have been created,---     allocated, or retrieved from the same---     'Graphics.Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',--- 'CopyAccelerationStructureModeNV'-cmdCopyAccelerationStructureNV :: forall io . MonadIO io => CommandBuffer -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeNV -> io ()-cmdCopyAccelerationStructureNV commandBuffer dst src mode = liftIO $ do-  let vkCmdCopyAccelerationStructureNV' = mkVkCmdCopyAccelerationStructureNV (pVkCmdCopyAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer)))-  vkCmdCopyAccelerationStructureNV' (commandBufferHandle (commandBuffer)) (dst) (src) (mode)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesNV-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()---- | vkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration--- structure result parameters to query results.------ = Parameters------ -   @commandBuffer@ is the command buffer into which the command will be---     recorded.------ -   @accelerationStructureCount@ is the count of acceleration structures---     for which to query the property.------ -   @pAccelerationStructures@ is a pointer to an array of existing---     previously built acceleration structures.------ -   @queryType@ is a 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'---     value specifying the type of queries managed by the pool.------ -   @queryPool@ is the query pool that will manage the results of the---     query.------ -   @firstQuery@ is the first query index within the query pool that---     will contain the @accelerationStructureCount@ number of results.------ == Valid Usage------ -   @queryType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'------ -   @queryPool@ /must/ have been created with a @queryType@ matching---     @queryType@------ -   The queries identified by @queryPool@ and @firstQuery@ /must/ be---     /unavailable/------ -   All acceleration structures in @accelerationStructures@ /must/ have---     been built with---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' if---     @queryType@ is---     'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'------ == Valid Usage (Implicit)------ -   @commandBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle------ -   @pAccelerationStructures@ /must/ be a valid pointer to an array of---     @accelerationStructureCount@ valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handles------ -   @queryType@ /must/ be a valid---     'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' value------ -   @queryPool@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.QueryPool' handle------ -   @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ support compute operations------ -   This command /must/ only be called outside of a render pass instance------ -   @accelerationStructureCount@ /must/ be greater than @0@------ -   Each of @commandBuffer@, @queryPool@, and the elements of---     @pAccelerationStructures@ /must/ have been created, allocated, or---     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',--- 'Graphics.Vulkan.Core10.Handles.QueryPool',--- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'-cmdWriteAccelerationStructuresPropertiesNV :: forall io . MonadIO io => CommandBuffer -> ("accelerationStructures" ::: Vector AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> io ()-cmdWriteAccelerationStructuresPropertiesNV commandBuffer accelerationStructures queryType queryPool firstQuery = liftIO . evalContT $ do-  let vkCmdWriteAccelerationStructuresPropertiesNV' = mkVkCmdWriteAccelerationStructuresPropertiesNV (pVkCmdWriteAccelerationStructuresPropertiesNV (deviceCmds (commandBuffer :: CommandBuffer)))-  pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8) 8-  lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)-  lift $ vkCmdWriteAccelerationStructuresPropertiesNV' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (queryPool) (firstQuery)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdBuildAccelerationStructureNV-  :: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()---- | vkCmdBuildAccelerationStructureNV - Build an acceleration structure------ = Parameters------ -   @commandBuffer@ is the command buffer into which the command will be---     recorded.------ -   @pInfo@ contains the shared information for the acceleration---     structure’s structure.------ -   @instanceData@ is the buffer containing instance data that will be---     used to build the acceleration structure as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-instance Accelerator structure instances.>---     This parameter /must/ be @NULL@ for bottom level acceleration---     structures.------ -   @instanceOffset@ is the offset in bytes (relative to the start of---     @instanceData@) at which the instance data is located.------ -   @update@ specifies whether to update the @dst@ acceleration---     structure with the data in @src@.------ -   @dst@ is a pointer to the target acceleration structure for the---     build.------ -   @src@ is a pointer to an existing acceleration structure that is to---     be used to update the @dst@ acceleration structure.------ -   @scratch@ is the 'Graphics.Vulkan.Core10.Handles.Buffer' that will---     be used as scratch memory for the build.------ -   @scratchOffset@ is the offset in bytes relative to the start of---     @scratch@ that will be used as a scratch memory.------ == Valid Usage------ -   @geometryCount@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@------ -   @dst@ /must/ have been created with compatible---     'AccelerationStructureInfoNV' where---     'AccelerationStructureInfoNV'::@type@ and---     'AccelerationStructureInfoNV'::@flags@ are identical,---     'AccelerationStructureInfoNV'::@instanceCount@ and---     'AccelerationStructureInfoNV'::@geometryCount@ for @dst@ are greater---     than or equal to the build size and each geometry in---     'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater---     than or equal to the number of vertices, indices, and AABBs.------ -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', @src@ /must/---     not be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', @src@ /must/---     have been built before with---     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set in---     'AccelerationStructureInfoNV'::@flags@------ -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.FALSE', The @size@---     member of the---     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'---     structure returned from a call to---     'getAccelerationStructureMemoryRequirementsNV' with---     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@---     set to @dst@ and---     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'---     /must/ be less than or equal to the size of @scratch@ minus---     @scratchOffset@------ -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', The @size@---     member of the---     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'---     structure returned from a call to---     'getAccelerationStructureMemoryRequirementsNV' with---     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@---     set to @dst@ and---     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'---     /must/ be less than or equal to the size of @scratch@ minus---     @scratchOffset@------ == Valid Usage (Implicit)------ -   @commandBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle------ -   @pInfo@ /must/ be a valid pointer to a valid---     'AccelerationStructureInfoNV' structure------ -   If @instanceData@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @instanceData@---     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   @dst@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle------ -   If @src@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @src@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle------ -   @scratch@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'---     handle------ -   @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ support compute operations------ -   This command /must/ only be called outside of a render pass instance------ -   Each of @commandBuffer@, @dst@, @instanceData@, @scratch@, and @src@---     that are valid handles of non-ignored parameters /must/ have been---     created, allocated, or retrieved from the same---     'Graphics.Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'AccelerationStructureInfoNV',--- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.BaseType.Bool32',--- 'Graphics.Vulkan.Core10.Handles.Buffer',--- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'-cmdBuildAccelerationStructureNV :: forall io . MonadIO io => CommandBuffer -> AccelerationStructureInfoNV -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> io ()-cmdBuildAccelerationStructureNV commandBuffer info instanceData instanceOffset update dst src scratch scratchOffset = liftIO . evalContT $ do-  let vkCmdBuildAccelerationStructureNV' = mkVkCmdBuildAccelerationStructureNV (pVkCmdBuildAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer)))-  pInfo <- ContT $ withCStruct (info)-  lift $ vkCmdBuildAccelerationStructureNV' (commandBufferHandle (commandBuffer)) pInfo (instanceData) (instanceOffset) (boolToBool32 (update)) (dst) (src) (scratch) (scratchOffset)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCmdTraceRaysNV-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()---- | vkCmdTraceRaysNV - Initialize a ray tracing dispatch------ = Parameters------ -   @commandBuffer@ is the command buffer into which the command will be---     recorded.------ -   @raygenShaderBindingTableBuffer@ is the buffer object that holds the---     shader binding table data for the ray generation shader stage.------ -   @raygenShaderBindingOffset@ is the offset in bytes (relative to---     @raygenShaderBindingTableBuffer@) of the ray generation shader being---     used for the trace.------ -   @missShaderBindingTableBuffer@ is the buffer object that holds the---     shader binding table data for the miss shader stage.------ -   @missShaderBindingOffset@ is the offset in bytes (relative to---     @missShaderBindingTableBuffer@) of the miss shader being used for---     the trace.------ -   @missShaderBindingStride@ is the size in bytes of each shader---     binding table record in @missShaderBindingTableBuffer@.------ -   @hitShaderBindingTableBuffer@ is the buffer object that holds the---     shader binding table data for the hit shader stages.------ -   @hitShaderBindingOffset@ is the offset in bytes (relative to---     @hitShaderBindingTableBuffer@) of the hit shader group being used---     for the trace.------ -   @hitShaderBindingStride@ is the size in bytes of each shader binding---     table record in @hitShaderBindingTableBuffer@.------ -   @callableShaderBindingTableBuffer@ is the buffer object that holds---     the shader binding table data for the callable shader stage.------ -   @callableShaderBindingOffset@ is the offset in bytes (relative to---     @callableShaderBindingTableBuffer@) of the callable shader being---     used for the trace.------ -   @callableShaderBindingStride@ is the size in bytes of each shader---     binding table record in @callableShaderBindingTableBuffer@.------ -   @width@ is the width of the ray trace query dimensions.------ -   @height@ is height of the ray trace query dimensions.------ -   @depth@ is depth of the ray trace query dimensions.------ = Description------ When the command is executed, a ray generation group of @width@ ×--- @height@ × @depth@ rays is assembled.------ == Valid Usage------ -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with---     'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of---     this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'------ -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using---     atomic operations as a result of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'------ -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with---     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as---     a result of this command, then the image view’s---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>---     /must/ contain---     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'------ -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with---     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as---     a result of this command /must/ have a---     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and---     format that supports cubic filtering, as specified by---     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@---     returned by---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with---     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'---     with a reduction mode of either---     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'---     or---     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'---     as a result of this command /must/ have a---     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and---     format that supports cubic filtering together with minmax filtering,---     as specified by---     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@---     returned by---     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'------ -   Any 'Graphics.Vulkan.Core10.Handles.Image' created with a---     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing---     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'---     sampled as a result of this command /must/ only be sampled using a---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'---     of---     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.------ -   For each set /n/ that is statically used by the---     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind---     point used by this command, a descriptor set /must/ have been bound---     to /n/ at the same pipeline bind point, with a---     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible---     for set /n/, with the---     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the---     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   For each push constant that is statically used by the---     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind---     point used by this command, a push constant value /must/ have been---     set for the same pipeline bind point, with a---     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible---     for push constants, with the---     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the---     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>------ -   Descriptors in each bound descriptor set, specified via---     'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',---     /must/ be valid if they are statically used by the---     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind---     point used by this command------ -   A valid pipeline /must/ be bound to the pipeline bind point used by---     this command------ -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command requires any dynamic state,---     that state /must/ have been set for @commandBuffer@, and done so---     after any previously bound pipeline with the corresponding state not---     specified as dynamic------ -   There /must/ not have been any calls to dynamic state setting---     commands for any state not specified as dynamic in the---     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command, since that pipeline was---     bound------ -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command accesses a---     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses---     unnormalized coordinates, that sampler /must/ not be used to sample---     from any 'Graphics.Vulkan.Core10.Handles.Image' with a---     'Graphics.Vulkan.Core10.Handles.ImageView' of the type---     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',---     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',---     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',---     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'---     or---     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',---     in any shader stage------ -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command accesses a---     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses---     unnormalized coordinates, that sampler /must/ not be used with any---     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@---     instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in---     any shader stage------ -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command accesses a---     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses---     unnormalized coordinates, that sampler /must/ not be used with any---     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@---     instructions that includes a LOD bias or any offset values, in any---     shader stage------ -   If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the---     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command accesses a uniform buffer,---     it /must/ not access values outside of the range of the buffer as---     specified in the descriptor set bound to the same pipeline bind---     point------ -   If the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>---     feature is not enabled, and if the---     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point used by this command accesses a storage buffer,---     it /must/ not access values outside of the range of the buffer as---     specified in the descriptor set bound to the same pipeline bind---     point------ -   If @commandBuffer@ is an unprotected command buffer, any resource---     accessed by the 'Graphics.Vulkan.Core10.Handles.Pipeline' object---     bound to the pipeline bind point used by this command /must/ not be---     a protected resource------ -   If @commandBuffer@ is a protected command buffer, any resource---     written to by the 'Graphics.Vulkan.Core10.Handles.Pipeline' object---     bound to the pipeline bind point used by this command /must/ not be---     an unprotected resource------ -   If @commandBuffer@ is a protected command buffer, pipeline stages---     other than the framebuffer-space and compute stages in the---     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the---     pipeline bind point /must/ not write to any resource------ -   @raygenShaderBindingOffset@ /must/ be less than the size of---     @raygenShaderBindingTableBuffer@------ -   @raygenShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   @missShaderBindingOffset@ /must/ be less than the size of---     @missShaderBindingTableBuffer@------ -   @missShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   @hitShaderBindingOffset@ /must/ be less than the size of---     @hitShaderBindingTableBuffer@------ -   @hitShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   @callableShaderBindingOffset@ /must/ be less than the size of---     @callableShaderBindingTableBuffer@------ -   @callableShaderBindingOffset@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@------ -   @missShaderBindingStride@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@------ -   @hitShaderBindingStride@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@------ -   @callableShaderBindingStride@ /must/ be a multiple of---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@------ -   @missShaderBindingStride@ /must/ be a less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@------ -   @hitShaderBindingStride@ /must/ be a less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@------ -   @callableShaderBindingStride@ /must/ be a less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@------ -   @width@ /must/ be less than or equal to---     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]------ -   @height@ /must/ be less than or equal to---     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]------ -   @depth@ /must/ be less than or equal to---     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]------ == Valid Usage (Implicit)------ -   @commandBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle------ -   @raygenShaderBindingTableBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   If @missShaderBindingTableBuffer@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @missShaderBindingTableBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   If @hitShaderBindingTableBuffer@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @hitShaderBindingTableBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   If @callableShaderBindingTableBuffer@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @callableShaderBindingTableBuffer@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   @commandBuffer@ /must/ be in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>------ -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ support compute operations------ -   This command /must/ only be called outside of a render pass instance------ -   Each of @callableShaderBindingTableBuffer@, @commandBuffer@,---     @hitShaderBindingTableBuffer@, @missShaderBindingTableBuffer@, and---     @raygenShaderBindingTableBuffer@ that are valid handles of---     non-ignored parameters /must/ have been created, allocated, or---     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'------ == Host Synchronization------ -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that---     @commandBuffer@ was allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================+--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Buffer',--- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'-cmdTraceRaysNV :: forall io . MonadIO io => CommandBuffer -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> io ()-cmdTraceRaysNV commandBuffer raygenShaderBindingTableBuffer raygenShaderBindingOffset missShaderBindingTableBuffer missShaderBindingOffset missShaderBindingStride hitShaderBindingTableBuffer hitShaderBindingOffset hitShaderBindingStride callableShaderBindingTableBuffer callableShaderBindingOffset callableShaderBindingStride width height depth = liftIO $ do-  let vkCmdTraceRaysNV' = mkVkCmdTraceRaysNV (pVkCmdTraceRaysNV (deviceCmds (commandBuffer :: CommandBuffer)))-  vkCmdTraceRaysNV' (commandBufferHandle (commandBuffer)) (raygenShaderBindingTableBuffer) (raygenShaderBindingOffset) (missShaderBindingTableBuffer) (missShaderBindingOffset) (missShaderBindingStride) (hitShaderBindingTableBuffer) (hitShaderBindingOffset) (hitShaderBindingStride) (callableShaderBindingTableBuffer) (callableShaderBindingOffset) (callableShaderBindingStride) (width) (height) (depth)-  pure $ ()---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetRayTracingShaderGroupHandlesNV-  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result---- | vkGetRayTracingShaderGroupHandlesNV - Query ray tracing pipeline shader--- group handles------ = Parameters------ -   @device@ is the logical device containing the ray tracing pipeline.------ -   @pipeline@ is the ray tracing pipeline object containing the---     shaders.------ -   @firstGroup@ is the index of the first group to retrieve a handle---     for from the 'RayTracingShaderGroupCreateInfoNV'::@pGroups@ array.------ -   @groupCount@ is the number of shader handles to retrieve.------ -   @dataSize@ is the size in bytes of the buffer pointed to by @pData@.------ -   @pData@ is a pointer to a user-allocated buffer where the results---     will be written.------ == Valid Usage------ -   The sum of @firstGroup@ and @groupCount@ /must/ be less than the---     number of shader groups in @pipeline@.------ -   @dataSize@ /must/ be at least---     'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@ ×---     @groupCount@------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   @pipeline@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Pipeline' handle------ -   @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes------ -   @dataSize@ /must/ be greater than @0@------ -   @pipeline@ /must/ have been created, allocated, or retrieved from---     @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Device',--- 'Graphics.Vulkan.Core10.Handles.Pipeline'-getRayTracingShaderGroupHandlesNV :: forall io . MonadIO io => Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()-getRayTracingShaderGroupHandlesNV device pipeline firstGroup groupCount dataSize data' = liftIO $ do-  let vkGetRayTracingShaderGroupHandlesNV' = mkVkGetRayTracingShaderGroupHandlesNV (pVkGetRayTracingShaderGroupHandlesNV (deviceCmds (device :: Device)))-  r <- vkGetRayTracingShaderGroupHandlesNV' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')-  when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkGetAccelerationStructureHandleNV-  :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result---- | vkGetAccelerationStructureHandleNV - Get opaque acceleration structure--- handle------ = Parameters------ -   @device@ is the logical device that owns the acceleration---     structures.------ -   @accelerationStructure@ is the acceleration structure.------ -   @dataSize@ is the size in bytes of the buffer pointed to by @pData@.------ -   @pData@ is a pointer to a user-allocated buffer where the results---     will be written.------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------ = See Also------ 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.Handles.Device'-getAccelerationStructureHandleNV :: forall io . MonadIO io => Device -> AccelerationStructureNV -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()-getAccelerationStructureHandleNV device accelerationStructure dataSize data' = liftIO $ do-  let vkGetAccelerationStructureHandleNV' = mkVkGetAccelerationStructureHandleNV (pVkGetAccelerationStructureHandleNV (deviceCmds (device :: Device)))-  r <- vkGetAccelerationStructureHandleNV' (deviceHandle (device)) (accelerationStructure) (CSize (dataSize)) (data')-  when (r < SUCCESS) (throwIO (VulkanException r))---foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)-  unsafe-#endif-  "dynamic" mkVkCreateRayTracingPipelinesNV-  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result---- | vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline--- object------ = Parameters------ -   @device@ is the logical device that creates the ray tracing---     pipelines.------ -   @pipelineCache@ is either---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', indicating that---     pipeline caching is disabled, or the handle of a valid---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>---     object, in which case use of that cache is enabled for the duration---     of the command.------ -   @createInfoCount@ is the length of the @pCreateInfos@ and---     @pPipelines@ arrays.------ -   @pCreateInfos@ is a pointer to an array of---     'RayTracingPipelineCreateInfoNV' structures.------ -   @pAllocator@ controls host memory allocation as described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>---     chapter.------ -   @pPipelines@ is a pointer to an array in which the resulting ray---     tracing pipeline objects are returned.------ == Valid Usage------ -   If the @flags@ member of any element of @pCreateInfos@ contains the---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and the @basePipelineIndex@ member of that same element is not---     @-1@, @basePipelineIndex@ /must/ be less than the index into---     @pCreateInfos@ that corresponds to that element------ -   If the @flags@ member of any element of @pCreateInfos@ contains the---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, the base pipeline /must/ have been created with the---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'---     flag set------ == Valid Usage (Implicit)------ -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'---     handle------ -   If @pipelineCache@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @pipelineCache@---     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.PipelineCache'---     handle------ -   @pCreateInfos@ /must/ be a valid pointer to an array of---     @createInfoCount@ valid 'RayTracingPipelineCreateInfoNV' structures------ -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid---     pointer to a valid---     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'---     structure------ -   @pPipelines@ /must/ be a valid pointer to an array of---     @createInfoCount@ 'Graphics.Vulkan.Core10.Handles.Pipeline' handles------ -   @createInfoCount@ /must/ be greater than @0@------ -   If @pipelineCache@ is a valid handle, it /must/ have been created,---     allocated, or retrieved from @device@------ == Return Codes------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]------     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'------ [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'------     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'------ = See Also------ 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',--- 'Graphics.Vulkan.Core10.Handles.Device',--- 'Graphics.Vulkan.Core10.Handles.Pipeline',--- 'Graphics.Vulkan.Core10.Handles.PipelineCache',--- 'RayTracingPipelineCreateInfoNV'-createRayTracingPipelinesNV :: forall a io . (PokeChain a, MonadIO io) => Device -> PipelineCache -> ("createInfos" ::: Vector (RayTracingPipelineCreateInfoNV a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (("pipelines" ::: Vector Pipeline))-createRayTracingPipelinesNV device pipelineCache createInfos allocator = liftIO . evalContT $ do-  let vkCreateRayTracingPipelinesNV' = mkVkCreateRayTracingPipelinesNV (pVkCreateRayTracingPipelinesNV (deviceCmds (device :: Device)))-  pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoNV _) ((Data.Vector.length (createInfos)) * 80) 8-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCreateInfos `plusPtr` (80 * (i)) :: Ptr (RayTracingPipelineCreateInfoNV _)) (e) . ($ ())) (createInfos)-  pAllocator <- case (allocator) of-    Nothing -> pure nullPtr-    Just j -> ContT $ withCStruct (j)-  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free-  r <- lift $ vkCreateRayTracingPipelinesNV' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))-  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))-  pure $ (pPipelines)----- | VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a--- shader group------ == Valid Usage------ -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then---     @generalShader@ /must/ be a valid index into @pStages@ referring to---     a shader of---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_NV',---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_NV',---     or---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_NV'------ -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then---     @closestHitShader@, @anyHitShader@, and @intersectionShader@ /must/---     be 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'------ -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV'---     then @intersectionShader@ /must/ be a valid index into @pStages@---     referring to a shader of---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_NV'------ -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV'---     then @intersectionShader@ /must/ be---     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'------ -   @closestHitShader@ /must/ be either---     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid---     index into @pStages@ referring to a shader of---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_NV'------ -   @anyHitShader@ /must/ be either---     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid---     index into @pStages@ referring to a shader of---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_NV'------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'------ -   @pNext@ /must/ be @NULL@------ -   @type@ /must/ be a valid 'RayTracingShaderGroupTypeNV' value------ = See Also------ 'RayTracingPipelineCreateInfoNV', 'RayTracingShaderGroupTypeNV',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'-data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV-  { -- | @type@ is the type of hit group specified in this structure.-    type' :: RayTracingShaderGroupTypeNV-  , -- | @generalShader@ is the index of the ray generation, miss, or callable-    -- shader from 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if-    -- the shader group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' and-    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    generalShader :: Word32-  , -- | @closestHitShader@ is the optional index of the closest hit shader from-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' and-    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    closestHitShader :: Word32-  , -- | @anyHitShader@ is the optional index of the any-hit shader from-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' and-    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    anyHitShader :: Word32-  , -- | @intersectionShader@ is the index of the intersection shader from-    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader-    -- group has @type@ of-    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' and-    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.-    intersectionShader :: Word32-  }-  deriving (Typeable)-deriving instance Show RayTracingShaderGroupCreateInfoNV--instance ToCStruct RayTracingShaderGroupCreateInfoNV where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RayTracingShaderGroupCreateInfoNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeNV)) (type')-    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)-    f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeNV)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    f--instance FromCStruct RayTracingShaderGroupCreateInfoNV where-  peekCStruct p = do-    type' <- peek @RayTracingShaderGroupTypeNV ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeNV))-    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pure $ RayTracingShaderGroupCreateInfoNV-             type' generalShader closestHitShader anyHitShader intersectionShader--instance Storable RayTracingShaderGroupCreateInfoNV where-  sizeOf ~_ = 40-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero RayTracingShaderGroupCreateInfoNV where-  zero = RayTracingShaderGroupCreateInfoNV-           zero-           zero-           zero-           zero-           zero----- | VkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a--- newly created ray tracing pipeline------ = Description------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.------ == Valid Usage------ -   If @flags@ contains the---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/---     be a valid handle to a ray tracing---     'Graphics.Vulkan.Core10.Handles.Pipeline'------ -   If @flags@ contains the---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @basePipelineIndex@ /must/ be a valid index into the calling---     command’s @pCreateInfos@ parameter------ -   If @flags@ contains the---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@---     /must/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'------ -   If @flags@ contains the---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'---     flag, and @basePipelineHandle@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',---     @basePipelineIndex@ /must/ be @-1@------ -   The @stage@ member of one element of @pStages@ /must/ be---     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_NV'------ -   The shader code for the entry points identified by @pStages@, and---     the rest of the state identified by this structure /must/ adhere to---     the pipeline linking rules described in the---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>---     chapter------ -   @layout@ /must/ be---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>---     with all shaders specified in @pStages@------ -   The number of resources in @layout@ accessible to each shader stage---     that is used by the pipeline /must/ be less than or equal to---     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@------ -   @maxRecursionDepth@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxRecursionDepth@------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'------ -   @pNext@ /must/ be @NULL@ or a pointer to a valid instance of---     'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'------ -   The @sType@ value of each struct in the @pNext@ chain /must/ be---     unique------ -   @flags@ /must/ be a valid combination of---     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'---     values------ -   @pStages@ /must/ be a valid pointer to an array of @stageCount@---     valid---     'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'---     structures------ -   @pGroups@ /must/ be a valid pointer to an array of @groupCount@---     valid 'RayTracingShaderGroupCreateInfoNV' structures------ -   @layout@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle------ -   @stageCount@ /must/ be greater than @0@------ -   @groupCount@ /must/ be greater than @0@------ -   Both of @basePipelineHandle@, and @layout@ that are valid handles of---     non-ignored parameters /must/ have been created, allocated, or---     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Pipeline',--- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',--- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',--- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',--- 'RayTracingShaderGroupCreateInfoNV',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'createRayTracingPipelinesNV'-data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV-  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.-    next :: Chain es-  , -- | @flags@ is a bitmask of-    -- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'-    -- specifying how the pipeline will be generated.-    flags :: PipelineCreateFlags-  , -- | @pStages@ is a pointer to an array of @stageCount@-    -- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'-    -- structures describing the set of the shader stages to be included in the-    -- ray tracing pipeline.-    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)-  , -- | @pGroups@ is a pointer to an array of @groupCount@-    -- 'RayTracingShaderGroupCreateInfoNV' structures describing the set of the-    -- shader stages to be included in each shader group in the ray tracing-    -- pipeline.-    groups :: Vector RayTracingShaderGroupCreateInfoNV-  , -- | @maxRecursionDepth@ is the maximum recursion that will be called from-    -- this pipeline.-    maxRecursionDepth :: Word32-  , -- | @layout@ is the description of binding locations used by both the-    -- pipeline and descriptor sets used with the pipeline.-    layout :: PipelineLayout-  , -- | @basePipelineHandle@ is a pipeline to derive from.-    basePipelineHandle :: Pipeline-  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use-    -- as a pipeline to derive from.-    basePipelineIndex :: Int32-  }-  deriving (Typeable)-deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)--instance Extensible RayTracingPipelineCreateInfoNV where-  extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV-  setNext x next = x{next = next}-  getNext RayTracingPipelineCreateInfoNV{..} = next-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b-  extends _ f-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f-    | otherwise = Nothing--instance PokeChain es => ToCStruct (RayTracingPipelineCreateInfoNV es) where-  withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p RayTracingPipelineCreateInfoNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)-    pNext'' <- fmap castPtr . ContT $ withChain (next)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))-    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))-    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (groups)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)-    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (layout)-    lift $ poke ((p `plusPtr` 64 :: Ptr Pipeline)) (basePipelineHandle)-    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (basePipelineIndex)-    lift $ f-  cStructSize = 80-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)-    pNext' <- fmap castPtr . ContT $ withZeroChain @es-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'-    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')-    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (mempty)) * 40) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)-    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (zero)-    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (zero)-    lift $ f--instance PeekChain es => FromCStruct (RayTracingPipelineCreateInfoNV es) where-  peekCStruct p = do-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))-    next <- peekChain (castPtr pNext)-    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))-    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))-    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))-    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))-    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))-    layout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))-    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 64 :: Ptr Pipeline))-    basePipelineIndex <- peek @Int32 ((p `plusPtr` 72 :: Ptr Int32))-    pure $ RayTracingPipelineCreateInfoNV-             next flags pStages' pGroups' maxRecursionDepth layout basePipelineHandle basePipelineIndex--instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where-  zero = RayTracingPipelineCreateInfoNV-           ()-           zero-           mempty-           mempty-           zero-           zero-           zero-           zero----- | VkGeometryTrianglesNV - Structure specifying a triangle geometry in a--- bottom-level acceleration structure------ = Description------ If @indexType@ is--- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV', then this--- structure describes a set of triangles determined by @vertexCount@.--- Otherwise, this structure describes a set of indexed triangles--- determined by @indexCount@.------ == Valid Usage------ -   @vertexOffset@ /must/ be less than the size of @vertexData@------ -   @vertexOffset@ /must/ be a multiple of the component size of---     @vertexFormat@------ -   @vertexFormat@ /must/ be one of---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32B32_SFLOAT',---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT',---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SFLOAT',---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT',---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM', or---     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SNORM'------ -   @indexOffset@ /must/ be less than the size of @indexData@------ -   @indexOffset@ /must/ be a multiple of the element size of---     @indexType@------ -   @indexType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',---     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or---     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'------ -   @indexData@ /must/ be---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' if @indexType@ is---     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'------ -   @indexData@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.Buffer' handle if @indexType@ is not---     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'------ -   @indexCount@ /must/ be @0@ if @indexType@ is---     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'------ -   @transformOffset@ /must/ be less than the size of @transformData@------ -   @transformOffset@ /must/ be a multiple of @16@------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'------ -   @pNext@ /must/ be @NULL@------ -   If @vertexData@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @vertexData@---     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   @vertexFormat@ /must/ be a valid---     'Graphics.Vulkan.Core10.Enums.Format.Format' value------ -   If @indexData@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @indexData@---     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   @indexType@ /must/ be a valid---     'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value------ -   If @transformData@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @transformData@---     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle------ -   Each of @indexData@, @transformData@, and @vertexData@ that are---     valid handles of non-ignored parameters /must/ have been created,---     allocated, or retrieved from the same---     'Graphics.Vulkan.Core10.Handles.Device'------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Buffer',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',--- 'Graphics.Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',--- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'-data GeometryTrianglesNV = GeometryTrianglesNV-  { -- | @vertexData@ is the buffer containing vertex data for this geometry.-    vertexData :: Buffer-  , -- | @vertexOffset@ is the offset in bytes within @vertexData@ containing-    -- vertex data for this geometry.-    vertexOffset :: DeviceSize-  , -- | @vertexCount@ is the number of valid vertices.-    vertexCount :: Word32-  , -- | @vertexStride@ is the stride in bytes between each vertex.-    vertexStride :: DeviceSize-  , -- | @vertexFormat@ is the format of each vertex element.-    vertexFormat :: Format-  , -- | @indexData@ is the buffer containing index data for this geometry.-    indexData :: Buffer-  , -- | @indexOffset@ is the offset in bytes within @indexData@ containing index-    -- data for this geometry.-    indexOffset :: DeviceSize-  , -- | @indexCount@ is the number of indices to include in this geometry.-    indexCount :: Word32-  , -- | @indexType@ is the format of each index.-    indexType :: IndexType-  , -- | @transformData@ is a buffer containing optional reference to an array of-    -- 32-bit floats representing a 3x4 row major affine transformation matrix-    -- for this geometry.-    transformData :: Buffer-  , -- | @transformOffset@ is the offset in bytes in @transformData@ of the-    -- transform information described above.-    transformOffset :: DeviceSize-  }-  deriving (Typeable)-deriving instance Show GeometryTrianglesNV--instance ToCStruct GeometryTrianglesNV where-  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryTrianglesNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (vertexData)-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (vertexOffset)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (vertexCount)-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (vertexStride)-    poke ((p `plusPtr` 48 :: Ptr Format)) (vertexFormat)-    poke ((p `plusPtr` 56 :: Ptr Buffer)) (indexData)-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (indexOffset)-    poke ((p `plusPtr` 72 :: Ptr Word32)) (indexCount)-    poke ((p `plusPtr` 76 :: Ptr IndexType)) (indexType)-    poke ((p `plusPtr` 80 :: Ptr Buffer)) (transformData)-    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (transformOffset)-    f-  cStructSize = 96-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 48 :: Ptr Format)) (zero)-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)-    poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 76 :: Ptr IndexType)) (zero)-    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)-    f--instance FromCStruct GeometryTrianglesNV where-  peekCStruct p = do-    vertexData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))-    vertexOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))-    vertexCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))-    vertexStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))-    vertexFormat <- peek @Format ((p `plusPtr` 48 :: Ptr Format))-    indexData <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))-    indexOffset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))-    indexCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))-    indexType <- peek @IndexType ((p `plusPtr` 76 :: Ptr IndexType))-    transformData <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))-    transformOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))-    pure $ GeometryTrianglesNV-             vertexData vertexOffset vertexCount vertexStride vertexFormat indexData indexOffset indexCount indexType transformData transformOffset--instance Storable GeometryTrianglesNV where-  sizeOf ~_ = 96-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero GeometryTrianglesNV where-  zero = GeometryTrianglesNV-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkGeometryAABBNV - Structure specifying axis-aligned bounding box--- geometry in a bottom-level acceleration structure------ = Description------ The AABB data in memory is six 32-bit floats consisting of the minimum--- x, y, and z values followed by the maximum x, y, and z values.------ == Valid Usage------ -   @offset@ /must/ be less than the size of @aabbData@------ -   @offset@ /must/ be a multiple of @8@------ -   @stride@ /must/ be a multiple of @8@------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'------ -   @pNext@ /must/ be @NULL@------ -   If @aabbData@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @aabbData@ /must/---     be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle------ = See Also------ 'Graphics.Vulkan.Core10.Handles.Buffer',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'GeometryDataNV',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'-data GeometryAABBNV = GeometryAABBNV-  { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.-    aabbData :: Buffer-  , -- | @numAABBs@ is the number of AABBs in this geometry.-    numAABBs :: Word32-  , -- | @stride@ is the stride in bytes between AABBs in @aabbData@.-    stride :: Word32-  , -- | @offset@ is the offset in bytes of the first AABB in @aabbData@.-    offset :: DeviceSize-  }-  deriving (Typeable)-deriving instance Show GeometryAABBNV--instance ToCStruct GeometryAABBNV where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryAABBNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (aabbData)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (numAABBs)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (stride)-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)-    f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)-    f--instance FromCStruct GeometryAABBNV where-  peekCStruct p = do-    aabbData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))-    numAABBs <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    stride <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))-    pure $ GeometryAABBNV-             aabbData numAABBs stride offset--instance Storable GeometryAABBNV where-  sizeOf ~_ = 40-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero GeometryAABBNV where-  zero = GeometryAABBNV-           zero-           zero-           zero-           zero----- | VkGeometryDataNV - Structure specifying geometry in a bottom-level--- acceleration structure------ == Valid Usage (Implicit)------ = See Also------ 'GeometryAABBNV', 'GeometryNV', 'GeometryTrianglesNV'-data GeometryDataNV = GeometryDataNV-  { -- | @triangles@ /must/ be a valid 'GeometryTrianglesNV' structure-    triangles :: GeometryTrianglesNV-  , -- | @aabbs@ /must/ be a valid 'GeometryAABBNV' structure-    aabbs :: GeometryAABBNV-  }-  deriving (Typeable)-deriving instance Show GeometryDataNV--instance ToCStruct GeometryDataNV where-  withCStruct x f = allocaBytesAligned 136 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryDataNV{..} f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (triangles) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (aabbs) . ($ ())-    lift $ f-  cStructSize = 136-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (zero) . ($ ())-    ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (zero) . ($ ())-    lift $ f--instance FromCStruct GeometryDataNV where-  peekCStruct p = do-    triangles <- peekCStruct @GeometryTrianglesNV ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV))-    aabbs <- peekCStruct @GeometryAABBNV ((p `plusPtr` 96 :: Ptr GeometryAABBNV))-    pure $ GeometryDataNV-             triangles aabbs--instance Zero GeometryDataNV where-  zero = GeometryDataNV-           zero-           zero----- | VkGeometryNV - Structure specifying a geometry in a bottom-level--- acceleration structure------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureInfoNV', 'GeometryDataNV', 'GeometryFlagsNV',--- 'GeometryTypeNV',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'-data GeometryNV = GeometryNV-  { -- | @geometryType@ /must/ be a valid 'GeometryTypeNV' value-    geometryType :: GeometryTypeNV-  , -- | @geometry@ /must/ be a valid 'GeometryDataNV' structure-    geometry :: GeometryDataNV-  , -- | @flags@ /must/ be a valid combination of 'GeometryFlagBitsNV' values-    flags :: GeometryFlagsNV-  }-  deriving (Typeable)-deriving instance Show GeometryNV--instance ToCStruct GeometryNV where-  withCStruct x f = allocaBytesAligned 168 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p GeometryNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeNV)) (geometryType)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (geometry) . ($ ())-    lift $ poke ((p `plusPtr` 160 :: Ptr GeometryFlagsNV)) (flags)-    lift $ f-  cStructSize = 168-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeNV)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (zero) . ($ ())-    lift $ f--instance FromCStruct GeometryNV where-  peekCStruct p = do-    geometryType <- peek @GeometryTypeNV ((p `plusPtr` 16 :: Ptr GeometryTypeNV))-    geometry <- peekCStruct @GeometryDataNV ((p `plusPtr` 24 :: Ptr GeometryDataNV))-    flags <- peek @GeometryFlagsNV ((p `plusPtr` 160 :: Ptr GeometryFlagsNV))-    pure $ GeometryNV-             geometryType geometry flags--instance Zero GeometryNV where-  zero = GeometryNV-           zero-           zero-           zero----- | VkAccelerationStructureInfoNV - Structure specifying the parameters of--- acceleration structure object------ = Description------ 'AccelerationStructureInfoNV' contains information that is used both for--- acceleration structure creation with 'createAccelerationStructureNV' and--- in combination with the actual geometric data to build the acceleration--- structure with 'cmdBuildAccelerationStructureNV'.------ == Valid Usage------ -   @geometryCount@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@------ -   @instanceCount@ /must/ be less than or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxInstanceCount@------ -   The total number of triangles in all geometries /must/ be less than---     or equal to---     'PhysicalDeviceRayTracingPropertiesNV'::@maxTriangleCount@------ -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' then---     @geometryCount@ /must/ be @0@------ -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then---     @instanceCount@ /must/ be @0@------ -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then the---     @geometryType@ member of each geometry in @pGeometries@ /must/ be---     the same------ -   If @flags@ has the---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,---     then it /must/ not have the---     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' bit set------ -   @scratch@ /must/ have been created with---     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_NV'---     usage flag------ -   If @instanceData@ is not---     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @instanceData@---     /must/ have been created with---     'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_NV'---     usage flag------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'------ -   @pNext@ /must/ be @NULL@------ -   @type@ /must/ be a valid 'AccelerationStructureTypeNV' value------ -   @flags@ /must/ be a valid combination of---     'BuildAccelerationStructureFlagBitsNV' values------ -   If @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid---     pointer to an array of @geometryCount@ valid 'GeometryNV' structures------ = See Also------ 'AccelerationStructureCreateInfoNV', 'AccelerationStructureTypeNV',--- 'BuildAccelerationStructureFlagsNV', 'GeometryNV',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'cmdBuildAccelerationStructureNV'-data AccelerationStructureInfoNV = AccelerationStructureInfoNV-  { -- | @type@ is a 'AccelerationStructureTypeNV' value specifying the type of-    -- acceleration structure that will be created.-    type' :: AccelerationStructureTypeNV-  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsNV'-    -- specifying additional parameters of the acceleration structure.-    flags :: BuildAccelerationStructureFlagsNV-  , -- | @instanceCount@ specifies the number of instances that will be in the-    -- new acceleration structure.-    instanceCount :: Word32-  , -- | @pGeometries@ is a pointer to an array of @geometryCount@ 'GeometryNV'-    -- structures containing the scene data being passed into the acceleration-    -- structure.-    geometries :: Vector GeometryNV-  }-  deriving (Typeable)-deriving instance Show AccelerationStructureInfoNV--instance ToCStruct AccelerationStructureInfoNV where-  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureInfoNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (type')-    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV)) (flags)-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (instanceCount)-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))-    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (geometries)) * 168) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (geometries)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')-    lift $ f-  cStructSize = 40-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (zero)-    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (mempty)) * 168) 8-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (mempty)-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')-    lift $ f--instance FromCStruct AccelerationStructureInfoNV where-  peekCStruct p = do-    type' <- peek @AccelerationStructureTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV))-    flags <- peek @BuildAccelerationStructureFlagsNV ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV))-    instanceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    geometryCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    pGeometries <- peek @(Ptr GeometryNV) ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV)))-    pGeometries' <- generateM (fromIntegral geometryCount) (\i -> peekCStruct @GeometryNV ((pGeometries `advancePtrBytes` (168 * (i)) :: Ptr GeometryNV)))-    pure $ AccelerationStructureInfoNV-             type' flags instanceCount pGeometries'--instance Zero AccelerationStructureInfoNV where-  zero = AccelerationStructureInfoNV-           zero-           zero-           zero-           mempty----- | VkAccelerationStructureCreateInfoNV - Structure specifying the--- parameters of a newly created acceleration structure object------ == Valid Usage------ -   If @compactedSize@ is not @0@ then both @info.geometryCount@ and---     @info.instanceCount@ /must/ be @0@------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'------ -   @pNext@ /must/ be @NULL@------ -   @info@ /must/ be a valid 'AccelerationStructureInfoNV' structure------ = See Also------ 'AccelerationStructureInfoNV',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'createAccelerationStructureNV'-data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV-  { -- | @compactedSize@ is the size from the result of-    -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration-    -- structure is going to be the target of a compacting copy.-    compactedSize :: DeviceSize-  , -- | @info@ is the 'AccelerationStructureInfoNV' structure specifying further-    -- parameters of the created acceleration structure.-    info :: AccelerationStructureInfoNV-  }-  deriving (Typeable)-deriving instance Show AccelerationStructureCreateInfoNV--instance ToCStruct AccelerationStructureCreateInfoNV where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())-    lift $ f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)-    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())-    lift $ f--instance FromCStruct AccelerationStructureCreateInfoNV where-  peekCStruct p = do-    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))-    info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))-    pure $ AccelerationStructureCreateInfoNV-             compactedSize info--instance Zero AccelerationStructureCreateInfoNV where-  zero = AccelerationStructureCreateInfoNV-           zero-           zero----- | VkBindAccelerationStructureMemoryInfoNV - Structure specifying--- acceleration structure memory binding------ == Valid Usage------ -   @accelerationStructure@ /must/ not already be backed by a memory---     object------ -   @memoryOffset@ /must/ be less than the size of @memory@------ -   @memory@ /must/ have been allocated using one of the memory types---     allowed in the @memoryTypeBits@ member of the---     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'---     structure returned from a call to---     'getAccelerationStructureMemoryRequirementsNV' with---     @accelerationStructure@ and @type@ of---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'------ -   @memoryOffset@ /must/ be an integer multiple of the @alignment@---     member of the---     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'---     structure returned from a call to---     'getAccelerationStructureMemoryRequirementsNV' with---     @accelerationStructure@ and @type@ of---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'------ -   The @size@ member of the---     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'---     structure returned from a call to---     'getAccelerationStructureMemoryRequirementsNV' with---     @accelerationStructure@ and @type@ of---     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' /must/---     be less than or equal to the size of @memory@ minus @memoryOffset@------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'------ -   @pNext@ /must/ be @NULL@------ -   @accelerationStructure@ /must/ be a valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle------ -   @memory@ /must/ be a valid---     'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle------ -   If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid---     pointer to an array of @deviceIndexCount@ @uint32_t@ values------ -   Both of @accelerationStructure@, and @memory@ /must/ have been---     created, allocated, or retrieved from the same---     'Graphics.Vulkan.Core10.Handles.Device'------ = See Also------ 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',--- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'bindAccelerationStructureMemoryNV'-data BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoNV-  { -- | @accelerationStructure@ is the acceleration structure to be attached to-    -- memory.-    accelerationStructure :: AccelerationStructureNV-  , -- | @memory@ is a 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object-    -- describing the device memory to attach.-    memory :: DeviceMemory-  , -- | @memoryOffset@ is the start offset of the region of memory that is to be-    -- bound to the acceleration structure. The number of bytes returned in the-    -- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@-    -- member in @memory@, starting from @memoryOffset@ bytes, will be bound to-    -- the specified acceleration structure.-    memoryOffset :: DeviceSize-  , -- | @pDeviceIndices@ is a pointer to an array of device indices.-    deviceIndices :: Vector Word32-  }-  deriving (Typeable)-deriving instance Show BindAccelerationStructureMemoryInfoNV--instance ToCStruct BindAccelerationStructureMemoryInfoNV where-  withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p BindAccelerationStructureMemoryInfoNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (accelerationStructure)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))-    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceIndices)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')-    lift $ f-  cStructSize = 56-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (zero)-    lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)-    lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)-    pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4-    lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')-    lift $ f--instance FromCStruct BindAccelerationStructureMemoryInfoNV where-  peekCStruct p = do-    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 16 :: Ptr AccelerationStructureNV))-    memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))-    memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))-    deviceIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))-    pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))-    pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))-    pure $ BindAccelerationStructureMemoryInfoNV-             accelerationStructure memory memoryOffset pDeviceIndices'--instance Zero BindAccelerationStructureMemoryInfoNV where-  zero = BindAccelerationStructureMemoryInfoNV-           zero-           zero-           zero-           mempty----- | VkWriteDescriptorSetAccelerationStructureNV - Structure specifying--- acceleration structure descriptor info------ == Valid Usage------ -   @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in---     the extended structure------ -   Each acceleration structure in @pAccelerationStructures@ must have---     been created with 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV'------ == Valid Usage (Implicit)------ -   @sType@ /must/ be---     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'------ -   @pAccelerationStructures@ /must/ be a valid pointer to an array of---     @accelerationStructureCount@ valid---     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handles------ -   @accelerationStructureCount@ /must/ be greater than @0@------ = See Also------ 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'-data WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureNV-  { -- | @pAccelerationStructures@ are the acceleration structures to update.-    accelerationStructures :: Vector AccelerationStructureNV }-  deriving (Typeable)-deriving instance Show WriteDescriptorSetAccelerationStructureNV--instance ToCStruct WriteDescriptorSetAccelerationStructureNV where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p WriteDescriptorSetAccelerationStructureNV{..} f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))-    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')-    lift $ f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = evalContT $ do-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (mempty)) * 8) 8-    lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (mempty)-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')-    lift $ f--instance FromCStruct WriteDescriptorSetAccelerationStructureNV where-  peekCStruct p = do-    accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    pAccelerationStructures <- peek @(Ptr AccelerationStructureNV) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV)))-    pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureNV ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureNV)))-    pure $ WriteDescriptorSetAccelerationStructureNV-             pAccelerationStructures'--instance Zero WriteDescriptorSetAccelerationStructureNV where-  zero = WriteDescriptorSetAccelerationStructureNV-           mempty----- | VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying--- acceleration to query for memory requirements------ == Valid Usage (Implicit)------ = See Also------ 'AccelerationStructureMemoryRequirementsTypeNV',--- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',--- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',--- 'getAccelerationStructureMemoryRequirementsNV'-data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV-  { -- | @type@ /must/ be a valid 'AccelerationStructureMemoryRequirementsTypeNV'-    -- value-    type' :: AccelerationStructureMemoryRequirementsTypeNV-  , -- | @accelerationStructure@ /must/ be a valid-    -- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle-    accelerationStructure :: AccelerationStructureNV-  }-  deriving (Typeable)-deriving instance Show AccelerationStructureMemoryRequirementsInfoNV--instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where-  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p AccelerationStructureMemoryRequirementsInfoNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (type')-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructure)-    f-  cStructSize = 32-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (zero)-    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (zero)-    f--instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where-  peekCStruct p = do-    type' <- peek @AccelerationStructureMemoryRequirementsTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))-    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))-    pure $ AccelerationStructureMemoryRequirementsInfoNV-             type' accelerationStructure--instance Storable AccelerationStructureMemoryRequirementsInfoNV where-  sizeOf ~_ = 32-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero AccelerationStructureMemoryRequirementsInfoNV where-  zero = AccelerationStructureMemoryRequirementsInfoNV-           zero-           zero----- | VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical--- device for ray tracing------ = Description------ If the 'PhysicalDeviceRayTracingPropertiesNV' structure is included in--- the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ == Valid Usage (Implicit)------ = See Also------ 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'-data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV-  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.-    shaderGroupHandleSize :: Word32-  , -- | @maxRecursionDepth@ is the maximum number of levels of recursion allowed-    -- in a trace command.-    maxRecursionDepth :: Word32-  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between-    -- shader groups in the SBT.-    maxShaderGroupStride :: Word32-  , -- | @shaderGroupBaseAlignment@ is the required alignment in bytes for the-    -- base of the SBTs.-    shaderGroupBaseAlignment :: Word32-  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom-    -- level acceleration structure.-    maxGeometryCount :: Word64-  , -- | @maxInstanceCount@ is the maximum number of instances in the top level-    -- acceleration structure.-    maxInstanceCount :: Word64-  , -- | @maxTriangleCount@ is the maximum number of triangles in all geometries-    -- in the bottom level acceleration structure.-    maxTriangleCount :: Word64-  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of-    -- acceleration structure descriptors that are allowed in a descriptor set.-    maxDescriptorSetAccelerationStructures :: Word32-  }-  deriving (Typeable)-deriving instance Show PhysicalDeviceRayTracingPropertiesNV--instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where-  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)-  pokeCStruct p PhysicalDeviceRayTracingPropertiesNV{..} f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)-    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)-    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)-    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTriangleCount)-    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)-    f-  cStructSize = 64-  cStructAlignment = 8-  pokeZeroCStruct p f = do-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)-    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)-    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)-    f--instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where-  peekCStruct p = do-    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))-    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))-    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))-    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))-    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))-    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))-    maxTriangleCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))-    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))-    pure $ PhysicalDeviceRayTracingPropertiesNV-             shaderGroupHandleSize maxRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment maxGeometryCount maxInstanceCount maxTriangleCount maxDescriptorSetAccelerationStructures--instance Storable PhysicalDeviceRayTracingPropertiesNV where-  sizeOf ~_ = 64-  alignment ~_ = 8-  peek = peekCStruct-  poke ptr poked = pokeCStruct ptr poked (pure ())--instance Zero PhysicalDeviceRayTracingPropertiesNV where-  zero = PhysicalDeviceRayTracingPropertiesNV-           zero-           zero-           zero-           zero-           zero-           zero-           zero-           zero----- | VkGeometryInstanceFlagBitsNV - Instance flag bits------ = Description------ 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV' and--- 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV' /must/ not be used in the same--- flag.------ = See Also------ 'GeometryInstanceFlagsNV'-newtype GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsNV Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits)---- | 'GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV' disables face culling--- for this instance.-pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000001--- | 'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV' indicates--- that the front face of the triangle for culling purposes is the face--- that is counter clockwise in object space relative to the ray origin.--- Because the facing is determined in object space, an instance transform--- matrix does not change the winding, but a geometry transform does.-pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000002--- | 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV' causes this instance to act as--- though 'GEOMETRY_OPAQUE_BIT_NV' were specified on all geometries--- referenced by this instance. This behavior /can/ be overridden by the--- ray flag @gl_RayFlagsNoOpaqueNV@.-pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000004--- | 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV' causes this instance to act--- as though 'GEOMETRY_OPAQUE_BIT_NV' were not specified on all geometries--- referenced by this instance. This behavior /can/ be overridden by the--- ray flag @gl_RayFlagsOpaqueNV@.-pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000008--type GeometryInstanceFlagsNV = GeometryInstanceFlagBitsNV--instance Show GeometryInstanceFlagBitsNV where-  showsPrec p = \case-    GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV -> showString "GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"-    GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV -> showString "GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"-    GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV -> showString "GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"-    GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV -> showString "GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"-    GeometryInstanceFlagBitsNV x -> showParen (p >= 11) (showString "GeometryInstanceFlagBitsNV 0x" . showHex x)--instance Read GeometryInstanceFlagBitsNV where-  readPrec = parens (choose [("GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV", pure GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV)-                            , ("GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV", pure GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV)-                            , ("GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV", pure GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV)-                            , ("GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV", pure GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "GeometryInstanceFlagBitsNV")-                       v <- step readPrec-                       pure (GeometryInstanceFlagBitsNV v)))----- | VkGeometryFlagBitsNV - Bitmask specifying additional parameters for a--- geometry------ = See Also------ 'GeometryFlagsNV'-newtype GeometryFlagBitsNV = GeometryFlagBitsNV Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits)---- | 'GEOMETRY_OPAQUE_BIT_NV' indicates that this geometry does not invoke--- the any-hit shaders even if present in a hit group.-pattern GEOMETRY_OPAQUE_BIT_NV = GeometryFlagBitsNV 0x00000001--- | 'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV' indicates that the--- implementation /must/ only call the any-hit shader a single time for--- each primitive in this geometry. If this bit is absent an implementation--- /may/ invoke the any-hit shader more than once for this geometry.-pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GeometryFlagBitsNV 0x00000002--type GeometryFlagsNV = GeometryFlagBitsNV--instance Show GeometryFlagBitsNV where-  showsPrec p = \case-    GEOMETRY_OPAQUE_BIT_NV -> showString "GEOMETRY_OPAQUE_BIT_NV"-    GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV -> showString "GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"-    GeometryFlagBitsNV x -> showParen (p >= 11) (showString "GeometryFlagBitsNV 0x" . showHex x)--instance Read GeometryFlagBitsNV where-  readPrec = parens (choose [("GEOMETRY_OPAQUE_BIT_NV", pure GEOMETRY_OPAQUE_BIT_NV)-                            , ("GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV", pure GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "GeometryFlagBitsNV")-                       v <- step readPrec-                       pure (GeometryFlagBitsNV v)))----- | VkBuildAccelerationStructureFlagBitsNV - Bitmask specifying additional--- parameters for acceleration structure builds------ = Description------ Note------ 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' and--- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' /may/ take more--- time and memory than a normal build, and so /should/ only be used when--- those features are used.------ = See Also------ 'BuildAccelerationStructureFlagsNV'-newtype BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsNV Flags-  deriving newtype (Eq, Ord, Storable, Zero, Bits)---- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' indicates that the--- specified acceleration structure /can/ be updated with @update@ of--- 'Graphics.Vulkan.Core10.BaseType.TRUE' in--- 'cmdBuildAccelerationStructureNV'.-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000001--- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' indicates that--- the specified acceleration structure /can/ act as the source for--- 'cmdCopyAccelerationStructureNV' with @mode@ of--- 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV' to produce a compacted--- acceleration structure.-pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000002--- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' indicates that--- the given acceleration structure build /should/ prioritize trace--- performance over build time.-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000004--- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' indicates that--- the given acceleration structure build /should/ prioritize build time--- over trace performance.-pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000008--- | 'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV' indicates that this--- acceleration structure /should/ minimize the size of the scratch memory--- and the final result build, potentially at the expense of build time or--- trace performance.-pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000010--type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagBitsNV--instance Show BuildAccelerationStructureFlagBitsNV where-  showsPrec p = \case-    BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"-    BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"-    BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"-    BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"-    BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"-    BuildAccelerationStructureFlagBitsNV x -> showParen (p >= 11) (showString "BuildAccelerationStructureFlagBitsNV 0x" . showHex x)--instance Read BuildAccelerationStructureFlagBitsNV where-  readPrec = parens (choose [("BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV)-                            , ("BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV)-                            , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV)-                            , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV)-                            , ("BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "BuildAccelerationStructureFlagBitsNV")-                       v <- step readPrec-                       pure (BuildAccelerationStructureFlagBitsNV v)))----- | VkCopyAccelerationStructureModeNV - Acceleration structure copy mode------ = See Also------ 'cmdCopyAccelerationStructureNV'-newtype CopyAccelerationStructureModeNV = CopyAccelerationStructureModeNV Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV' creates a direct copy of the--- acceleration structure specified in @src@ into the one specified by--- @dst@. The @dst@ acceleration structure /must/ have been created with--- the same parameters as @src@.-pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = CopyAccelerationStructureModeNV 0--- | 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV' creates a more compact--- version of an acceleration structure @src@ into @dst@. The acceleration--- structure @dst@ /must/ have been created with a @compactedSize@--- corresponding to the one returned by--- 'cmdWriteAccelerationStructuresPropertiesNV' after the build of the--- acceleration structure specified by @src@.-pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = CopyAccelerationStructureModeNV 1-{-# complete COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV,-             COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV :: CopyAccelerationStructureModeNV #-}--instance Show CopyAccelerationStructureModeNV where-  showsPrec p = \case-    COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV -> showString "COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV"-    COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV -> showString "COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV"-    CopyAccelerationStructureModeNV x -> showParen (p >= 11) (showString "CopyAccelerationStructureModeNV " . showsPrec 11 x)--instance Read CopyAccelerationStructureModeNV where-  readPrec = parens (choose [("COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV", pure COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV)-                            , ("COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV", pure COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "CopyAccelerationStructureModeNV")-                       v <- step readPrec-                       pure (CopyAccelerationStructureModeNV v)))----- | VkAccelerationStructureTypeNV - Type of acceleration structure------ = See Also------ 'AccelerationStructureInfoNV'-newtype AccelerationStructureTypeNV = AccelerationStructureTypeNV Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' is a top-level acceleration--- structure containing instance data referring to bottom-level level--- acceleration structures.-pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = AccelerationStructureTypeNV 0--- | 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' is a bottom-level--- acceleration structure containing the AABBs or geometry to be--- intersected.-pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = AccelerationStructureTypeNV 1-{-# complete ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV,-             ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV :: AccelerationStructureTypeNV #-}--instance Show AccelerationStructureTypeNV where-  showsPrec p = \case-    ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV -> showString "ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV"-    ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV -> showString "ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV"-    AccelerationStructureTypeNV x -> showParen (p >= 11) (showString "AccelerationStructureTypeNV " . showsPrec 11 x)--instance Read AccelerationStructureTypeNV where-  readPrec = parens (choose [("ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV", pure ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV)-                            , ("ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV", pure ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "AccelerationStructureTypeNV")-                       v <- step readPrec-                       pure (AccelerationStructureTypeNV v)))----- | VkGeometryTypeNV - Enum specifying which type of geometry is provided------ = See Also------ 'GeometryNV'-newtype GeometryTypeNV = GeometryTypeNV Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'GEOMETRY_TYPE_TRIANGLES_NV' indicates that the @triangles@ of--- 'GeometryDataNV' contains valid data.-pattern GEOMETRY_TYPE_TRIANGLES_NV = GeometryTypeNV 0--- | 'GEOMETRY_TYPE_AABBS_NV' indicates that the @aabbs@ of 'GeometryDataNV'--- contains valid data.-pattern GEOMETRY_TYPE_AABBS_NV = GeometryTypeNV 1-{-# complete GEOMETRY_TYPE_TRIANGLES_NV,-             GEOMETRY_TYPE_AABBS_NV :: GeometryTypeNV #-}--instance Show GeometryTypeNV where-  showsPrec p = \case-    GEOMETRY_TYPE_TRIANGLES_NV -> showString "GEOMETRY_TYPE_TRIANGLES_NV"-    GEOMETRY_TYPE_AABBS_NV -> showString "GEOMETRY_TYPE_AABBS_NV"-    GeometryTypeNV x -> showParen (p >= 11) (showString "GeometryTypeNV " . showsPrec 11 x)--instance Read GeometryTypeNV where-  readPrec = parens (choose [("GEOMETRY_TYPE_TRIANGLES_NV", pure GEOMETRY_TYPE_TRIANGLES_NV)-                            , ("GEOMETRY_TYPE_AABBS_NV", pure GEOMETRY_TYPE_AABBS_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "GeometryTypeNV")-                       v <- step readPrec-                       pure (GeometryTypeNV v)))----- | VkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure--- memory requirement type------ = See Also------ 'AccelerationStructureMemoryRequirementsInfoNV'-newtype AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeNV Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' requests the--- memory requirement for the--- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' backing--- store.-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = AccelerationStructureMemoryRequirementsTypeNV 0--- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'--- requests the memory requirement for scratch space during the initial--- build.-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = AccelerationStructureMemoryRequirementsTypeNV 1--- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'--- requests the memory requirement for scratch space during an update.-pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = AccelerationStructureMemoryRequirementsTypeNV 2-{-# complete ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV,-             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV,-             ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeNV #-}--instance Show AccelerationStructureMemoryRequirementsTypeNV where-  showsPrec p = \case-    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"-    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"-    ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"-    AccelerationStructureMemoryRequirementsTypeNV x -> showParen (p >= 11) (showString "AccelerationStructureMemoryRequirementsTypeNV " . showsPrec 11 x)--instance Read AccelerationStructureMemoryRequirementsTypeNV where-  readPrec = parens (choose [("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV)-                            , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV)-                            , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "AccelerationStructureMemoryRequirementsTypeNV")-                       v <- step readPrec-                       pure (AccelerationStructureMemoryRequirementsTypeNV v)))----- | VkRayTracingShaderGroupTypeNV - Shader group types------ = Description------ Note------ For current group types, the hit group type could be inferred from the--- presence or absence of the intersection shader, but we provide the type--- explicitly for future hit groups that do not have that property.------ = See Also------ 'RayTracingShaderGroupCreateInfoNV'-newtype RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeNV Int32-  deriving newtype (Eq, Ord, Storable, Zero)---- | 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' indicates a shader group with--- a single--- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_NV',--- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_NV',--- or--- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_NV'--- shader in it.-pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RayTracingShaderGroupTypeNV 0--- | 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' specifies a--- shader group that only hits triangles and /must/ not contain an--- intersection shader, only closest hit and any-hit.-pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RayTracingShaderGroupTypeNV 1--- | 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' specifies a--- shader group that only intersects with custom geometry and /must/--- contain an intersection shader and /may/ contain closest hit and any-hit--- shaders.-pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RayTracingShaderGroupTypeNV 2-{-# complete RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV,-             RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV,-             RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: RayTracingShaderGroupTypeNV #-}--instance Show RayTracingShaderGroupTypeNV where-  showsPrec p = \case-    RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV -> showString "RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV"-    RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV -> showString "RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV"-    RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV -> showString "RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV"-    RayTracingShaderGroupTypeNV x -> showParen (p >= 11) (showString "RayTracingShaderGroupTypeNV " . showsPrec 11 x)--instance Read RayTracingShaderGroupTypeNV where-  readPrec = parens (choose [("RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV", pure RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV)-                            , ("RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV", pure RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV)-                            , ("RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV", pure RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV)]-                     +++-                     prec 10 (do-                       expectP (Ident "RayTracingShaderGroupTypeNV")-                       v <- step readPrec-                       pure (RayTracingShaderGroupTypeNV v)))+                                                     , getAccelerationStructureMemoryRequirementsNV+                                                     , cmdCopyAccelerationStructureNV+                                                     , cmdBuildAccelerationStructureNV+                                                     , cmdTraceRaysNV+                                                     , getAccelerationStructureHandleNV+                                                     , createRayTracingPipelinesNV+                                                     , pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV+                                                     , pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV+                                                     , pattern SHADER_STAGE_RAYGEN_BIT_NV+                                                     , pattern SHADER_STAGE_ANY_HIT_BIT_NV+                                                     , pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV+                                                     , pattern SHADER_STAGE_MISS_BIT_NV+                                                     , pattern SHADER_STAGE_INTERSECTION_BIT_NV+                                                     , pattern SHADER_STAGE_CALLABLE_BIT_NV+                                                     , pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV+                                                     , pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV+                                                     , pattern BUFFER_USAGE_RAY_TRACING_BIT_NV+                                                     , pattern PIPELINE_BIND_POINT_RAY_TRACING_NV+                                                     , pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV+                                                     , pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV+                                                     , pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV+                                                     , pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV+                                                     , pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV+                                                     , pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT+                                                     , pattern INDEX_TYPE_NONE_NV+                                                     , pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV+                                                     , pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV+                                                     , pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV+                                                     , pattern GEOMETRY_TYPE_TRIANGLES_NV+                                                     , pattern GEOMETRY_TYPE_AABBS_NV+                                                     , pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV+                                                     , pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV+                                                     , pattern GEOMETRY_OPAQUE_BIT_NV+                                                     , pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV+                                                     , pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV+                                                     , pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV+                                                     , pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV+                                                     , pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV+                                                     , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV+                                                     , pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV+                                                     , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV+                                                     , pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV+                                                     , pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV+                                                     , pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV+                                                     , pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV+                                                     , pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV+                                                     , pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV+                                                     , pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV+                                                     , destroyAccelerationStructureNV+                                                     , bindAccelerationStructureMemoryNV+                                                     , cmdWriteAccelerationStructuresPropertiesNV+                                                     , getRayTracingShaderGroupHandlesNV+                                                     , pattern SHADER_UNUSED_NV+                                                     , RayTracingShaderGroupCreateInfoNV(..)+                                                     , RayTracingPipelineCreateInfoNV(..)+                                                     , GeometryTrianglesNV(..)+                                                     , GeometryAABBNV(..)+                                                     , GeometryDataNV(..)+                                                     , GeometryNV(..)+                                                     , AccelerationStructureInfoNV(..)+                                                     , AccelerationStructureCreateInfoNV(..)+                                                     , AccelerationStructureMemoryRequirementsInfoNV(..)+                                                     , PhysicalDeviceRayTracingPropertiesNV(..)+                                                     , GeometryFlagsNV+                                                     , GeometryInstanceFlagsNV+                                                     , BuildAccelerationStructureFlagsNV+                                                     , AccelerationStructureNV+                                                     , GeometryFlagBitsNV+                                                     , GeometryInstanceFlagBitsNV+                                                     , BuildAccelerationStructureFlagBitsNV+                                                     , CopyAccelerationStructureModeNV+                                                     , AccelerationStructureTypeNV+                                                     , GeometryTypeNV+                                                     , RayTracingShaderGroupTypeNV+                                                     , AccelerationStructureMemoryRequirementsTypeNV+                                                     , BindAccelerationStructureMemoryInfoNV+                                                     , WriteDescriptorSetAccelerationStructureNV+                                                     , AabbPositionsNV+                                                     , TransformMatrixNV+                                                     , AccelerationStructureInstanceNV+                                                     , NV_RAY_TRACING_SPEC_VERSION+                                                     , pattern NV_RAY_TRACING_SPEC_VERSION+                                                     , NV_RAY_TRACING_EXTENSION_NAME+                                                     , pattern NV_RAY_TRACING_EXTENSION_NAME+                                                     , AccelerationStructureKHR(..)+                                                     , BindAccelerationStructureMemoryInfoKHR(..)+                                                     , WriteDescriptorSetAccelerationStructureKHR(..)+                                                     , AabbPositionsKHR(..)+                                                     , TransformMatrixKHR(..)+                                                     , AccelerationStructureInstanceKHR(..)+                                                     , destroyAccelerationStructureKHR+                                                     , bindAccelerationStructureMemoryKHR+                                                     , cmdWriteAccelerationStructuresPropertiesKHR+                                                     , getRayTracingShaderGroupHandlesKHR+                                                     , DebugReportObjectTypeEXT(..)+                                                     , GeometryInstanceFlagBitsKHR(..)+                                                     , GeometryInstanceFlagsKHR+                                                     , GeometryFlagBitsKHR(..)+                                                     , GeometryFlagsKHR+                                                     , BuildAccelerationStructureFlagBitsKHR(..)+                                                     , BuildAccelerationStructureFlagsKHR+                                                     , CopyAccelerationStructureModeKHR(..)+                                                     , AccelerationStructureTypeKHR(..)+                                                     , GeometryTypeKHR(..)+                                                     , AccelerationStructureMemoryRequirementsTypeKHR(..)+                                                     , RayTracingShaderGroupTypeKHR(..)+                                                     , SHADER_UNUSED_KHR+                                                     , pattern SHADER_UNUSED_KHR+                                                     ) where++import Control.Exception.Base (bracket)+import Control.Monad.IO.Class (liftIO)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Foreign.C.Types (CSize(..))+import Control.Monad.IO.Class (MonadIO)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (bindAccelerationStructureMemoryKHR)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (cmdWriteAccelerationStructuresPropertiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (destroyAccelerationStructureKHR)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (getRayTracingShaderGroupHandlesKHR)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR)+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR)+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR)+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR)+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Handles (PipelineCache)+import Graphics.Vulkan.Core10.Handles (PipelineCache(..))+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR)+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR))+import Graphics.Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)+import Graphics.Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)+import Graphics.Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_RAY_TRACING_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR))+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT))+import Graphics.Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(GEOMETRY_OPAQUE_BIT_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(GEOMETRY_TYPE_AABBS_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(GEOMETRY_TYPE_TRIANGLES_KHR))+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType(INDEX_TYPE_NONE_KHR))+import Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR))+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(PIPELINE_BIND_POINT_RAY_TRACING_KHR))+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.QueryType (QueryType(QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_ANY_HIT_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CALLABLE_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_CLOSEST_HIT_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_INTERSECTION_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_MISS_BIT_KHR))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(SHADER_STAGE_RAYGEN_BIT_KHR))+import Graphics.Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (bindAccelerationStructureMemoryKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (cmdWriteAccelerationStructuresPropertiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (destroyAccelerationStructureKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (getRayTracingShaderGroupHandlesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AabbPositionsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureInstanceKHR(..))+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureMemoryRequirementsTypeKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (AccelerationStructureTypeKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BindAccelerationStructureMemoryInfoKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (BuildAccelerationStructureFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (CopyAccelerationStructureModeKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryInstanceFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (GeometryTypeKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (RayTracingShaderGroupTypeKHR(..))+import Graphics.Vulkan.Core10.APIConstants (SHADER_UNUSED_KHR)+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (TransformMatrixKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_ray_tracing (WriteDescriptorSetAccelerationStructureKHR(..))+import Graphics.Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_KHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCompileDeferredNV+  :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result++-- | vkCompileDeferredNV - Deferred compilation of shaders+--+-- = Parameters+--+-- -   @device@ is the logical device containing the ray tracing pipeline.+--+-- -   @pipeline@ is the ray tracing pipeline object containing the+--     shaders.+--+-- -   @shader@ is the index of the shader to compile.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+compileDeferredNV :: forall io . MonadIO io => Device -> Pipeline -> ("shader" ::: Word32) -> io ()+compileDeferredNV device pipeline shader = liftIO $ do+  let vkCompileDeferredNV' = mkVkCompileDeferredNV (pVkCompileDeferredNV (deviceCmds (device :: Device)))+  r <- vkCompileDeferredNV' (deviceHandle (device)) (pipeline) (shader)+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateAccelerationStructureNV+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result++-- | vkCreateAccelerationStructureNV - Create a new acceleration structure+-- object+--+-- = Parameters+--+-- -   @device@ is the logical device that creates the buffer object.+--+-- -   @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'+--     structure containing parameters affecting creation of the+--     acceleration structure.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- -   @pAccelerationStructure@ is a pointer to a 'AccelerationStructureNV'+--     handle in which the resulting acceleration structure object is+--     returned.+--+-- = Description+--+-- Similar to other objects in Vulkan, the acceleration structure creation+-- merely creates an object with a specific “shape” as specified by the+-- information in 'AccelerationStructureInfoNV' and @compactedSize@ in+-- @pCreateInfo@. Populating the data in the object after allocating and+-- binding memory is done with 'cmdBuildAccelerationStructureNV' and+-- 'cmdCopyAccelerationStructureNV'.+--+-- Acceleration structure creation uses the count and type information from+-- the geometries, but does not use the data references in the structures.+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   @pCreateInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureCreateInfoNV' structure+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @pAccelerationStructure@ /must/ be a valid pointer to a+--     'AccelerationStructureNV' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoNV', 'AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createAccelerationStructureNV :: forall io . MonadIO io => Device -> AccelerationStructureCreateInfoNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io (AccelerationStructureNV)+createAccelerationStructureNV device createInfo allocator = liftIO . evalContT $ do+  let vkCreateAccelerationStructureNV' = mkVkCreateAccelerationStructureNV (pVkCreateAccelerationStructureNV (deviceCmds (device :: Device)))+  pCreateInfo <- ContT $ withCStruct (createInfo)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free+  r <- lift $ vkCreateAccelerationStructureNV' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pAccelerationStructure <- lift $ peek @AccelerationStructureNV pPAccelerationStructure+  pure $ (pAccelerationStructure)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV+  :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()++-- | vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration+-- structure memory requirements+--+-- = Parameters+--+-- -   @device@ is the logical device on which the acceleration structure+--     was created.+--+-- -   @pInfo@ specifies the acceleration structure to get memory+--     requirements for.+--+-- -   @pMemoryRequirements@ returns the requested acceleration structure+--     memory requirements.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'+getAccelerationStructureMemoryRequirementsNV :: forall a io . (PokeChain a, PeekChain a, MonadIO io) => Device -> AccelerationStructureMemoryRequirementsInfoNV -> io (MemoryRequirements2KHR a)+getAccelerationStructureMemoryRequirementsNV device info = liftIO . evalContT $ do+  let vkGetAccelerationStructureMemoryRequirementsNV' = mkVkGetAccelerationStructureMemoryRequirementsNV (pVkGetAccelerationStructureMemoryRequirementsNV (deviceCmds (device :: Device)))+  pInfo <- ContT $ withCStruct (info)+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2KHR _))+  lift $ vkGetAccelerationStructureMemoryRequirementsNV' (deviceHandle (device)) pInfo (pPMemoryRequirements)+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2KHR _) pPMemoryRequirements+  pure $ (pMemoryRequirements)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdCopyAccelerationStructureNV+  :: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureKHR -> AccelerationStructureKHR -> CopyAccelerationStructureModeKHR -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureKHR -> AccelerationStructureKHR -> CopyAccelerationStructureModeKHR -> IO ()++-- | vkCmdCopyAccelerationStructureNV - Copy an acceleration structure+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @dst@ is a pointer to the target acceleration structure for the+--     copy.+--+-- -   @src@ is a pointer to the source acceleration structure for the+--     copy.+--+-- -   @mode@ is a+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureModeKHR'+--     value specifying additional operations to perform during the copy.+--+-- == Valid Usage+--+-- -   [[VUID-{refpage}-mode-03410]] @mode@ /must/ be+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'+--     or+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR'+--+-- -   [[VUID-{refpage}-src-03411]] @src@ /must/ have been built with+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR'+--     if @mode@ is+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR'+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @dst@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @src@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @mode@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureModeKHR'+--     value+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- -   Each of @commandBuffer@, @dst@, and @src@ /must/ have been created,+--     allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.CopyAccelerationStructureModeKHR'+cmdCopyAccelerationStructureNV :: forall io . MonadIO io => CommandBuffer -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> CopyAccelerationStructureModeKHR -> io ()+cmdCopyAccelerationStructureNV commandBuffer dst src mode = liftIO $ do+  let vkCmdCopyAccelerationStructureNV' = mkVkCmdCopyAccelerationStructureNV (pVkCmdCopyAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer)))+  vkCmdCopyAccelerationStructureNV' (commandBufferHandle (commandBuffer)) (dst) (src) (mode)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdBuildAccelerationStructureNV+  :: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureKHR -> AccelerationStructureKHR -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureKHR -> AccelerationStructureKHR -> Buffer -> DeviceSize -> IO ()++-- | vkCmdBuildAccelerationStructureNV - Build an acceleration structure+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @pInfo@ contains the shared information for the acceleration+--     structure’s structure.+--+-- -   @instanceData@ is the buffer containing an array of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.AccelerationStructureInstanceKHR'+--     structures defining acceleration structures. This parameter /must/+--     be @NULL@ for bottom level acceleration structures.+--+-- -   @instanceOffset@ is the offset in bytes (relative to the start of+--     @instanceData@) at which the instance data is located.+--+-- -   @update@ specifies whether to update the @dst@ acceleration+--     structure with the data in @src@.+--+-- -   @dst@ is a pointer to the target acceleration structure for the+--     build.+--+-- -   @src@ is a pointer to an existing acceleration structure that is to+--     be used to update the @dst@ acceleration structure.+--+-- -   @scratch@ is the 'Graphics.Vulkan.Core10.Handles.Buffer' that will+--     be used as scratch memory for the build.+--+-- -   @scratchOffset@ is the offset in bytes relative to the start of+--     @scratch@ that will be used as a scratch memory.+--+-- == Valid Usage+--+-- -   @geometryCount@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@+--+-- -   @dst@ /must/ have been created with compatible+--     'AccelerationStructureInfoNV' where+--     'AccelerationStructureInfoNV'::@type@ and+--     'AccelerationStructureInfoNV'::@flags@ are identical,+--     'AccelerationStructureInfoNV'::@instanceCount@ and+--     'AccelerationStructureInfoNV'::@geometryCount@ for @dst@ are greater+--     than or equal to the build size and each geometry in+--     'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater+--     than or equal to the number of vertices, indices, and AABBs+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', @src@ /must/+--     not be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', @src@ /must/+--     have been built before with+--     'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set in+--     'AccelerationStructureInfoNV'::@flags@+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.FALSE', the @size@+--     member of the+--     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsNV' with+--     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@+--     set to @dst@ and+--     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'+--     /must/ be less than or equal to the size of @scratch@ minus+--     @scratchOffset@+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', the @size@+--     member of the+--     'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+--     structure returned from a call to+--     'getAccelerationStructureMemoryRequirementsNV' with+--     'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@+--     set to @dst@ and+--     'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to+--     'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'+--     /must/ be less than or equal to the size of @scratch@ minus+--     @scratchOffset@+--+-- -   @scratch@ /must/ have been created with+--     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag+--+-- -   If @instanceData@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @instanceData@+--     /must/ have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV'+--     usage flag+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', then objects+--     that were previously active /must/ not be made inactive as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', then objects+--     that were previously inactive /must/ not be made active as per+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>+--+-- -   If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', the @src@ and+--     @dst@ objects /must/ either be the same object or not have any+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @pInfo@ /must/ be a valid pointer to a valid+--     'AccelerationStructureInfoNV' structure+--+-- -   If @instanceData@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @instanceData@+--     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   @dst@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   If @src@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @src@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR' handle+--+-- -   @scratch@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'+--     handle+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- -   Each of @commandBuffer@, @dst@, @instanceData@, @scratch@, and @src@+--     that are valid handles of non-ignored parameters /must/ have been+--     created, allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'AccelerationStructureInfoNV',+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdBuildAccelerationStructureNV :: forall io . MonadIO io => CommandBuffer -> AccelerationStructureInfoNV -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool) -> ("dst" ::: AccelerationStructureKHR) -> ("src" ::: AccelerationStructureKHR) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> io ()+cmdBuildAccelerationStructureNV commandBuffer info instanceData instanceOffset update dst src scratch scratchOffset = liftIO . evalContT $ do+  let vkCmdBuildAccelerationStructureNV' = mkVkCmdBuildAccelerationStructureNV (pVkCmdBuildAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer)))+  pInfo <- ContT $ withCStruct (info)+  lift $ vkCmdBuildAccelerationStructureNV' (commandBufferHandle (commandBuffer)) pInfo (instanceData) (instanceOffset) (boolToBool32 (update)) (dst) (src) (scratch) (scratchOffset)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCmdTraceRaysNV+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdTraceRaysNV - Initialize a ray tracing dispatch+--+-- = Parameters+--+-- -   @commandBuffer@ is the command buffer into which the command will be+--     recorded.+--+-- -   @raygenShaderBindingTableBuffer@ is the buffer object that holds the+--     shader binding table data for the ray generation shader stage.+--+-- -   @raygenShaderBindingOffset@ is the offset in bytes (relative to+--     @raygenShaderBindingTableBuffer@) of the ray generation shader being+--     used for the trace.+--+-- -   @missShaderBindingTableBuffer@ is the buffer object that holds the+--     shader binding table data for the miss shader stage.+--+-- -   @missShaderBindingOffset@ is the offset in bytes (relative to+--     @missShaderBindingTableBuffer@) of the miss shader being used for+--     the trace.+--+-- -   @missShaderBindingStride@ is the size in bytes of each shader+--     binding table record in @missShaderBindingTableBuffer@.+--+-- -   @hitShaderBindingTableBuffer@ is the buffer object that holds the+--     shader binding table data for the hit shader stages.+--+-- -   @hitShaderBindingOffset@ is the offset in bytes (relative to+--     @hitShaderBindingTableBuffer@) of the hit shader group being used+--     for the trace.+--+-- -   @hitShaderBindingStride@ is the size in bytes of each shader binding+--     table record in @hitShaderBindingTableBuffer@.+--+-- -   @callableShaderBindingTableBuffer@ is the buffer object that holds+--     the shader binding table data for the callable shader stage.+--+-- -   @callableShaderBindingOffset@ is the offset in bytes (relative to+--     @callableShaderBindingTableBuffer@) of the callable shader being+--     used for the trace.+--+-- -   @callableShaderBindingStride@ is the size in bytes of each shader+--     binding table record in @callableShaderBindingTableBuffer@.+--+-- -   @width@ is the width of the ray trace query dimensions.+--+-- -   @height@ is height of the ray trace query dimensions.+--+-- -   @depth@ is depth of the ray trace query dimensions.+--+-- = Description+--+-- When the command is executed, a ray generation group of @width@ ×+-- @height@ × @depth@ rays is assembled.+--+-- == Valid Usage+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+--     this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+--     atomic operations as a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- -   If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command, then the image view’s+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+--     /must/ contain+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+--     a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering, as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+--     with a reduction mode of either+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+--     or+--     'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+--     as a result of this command /must/ have a+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+--     format that supports cubic filtering together with minmax filtering,+--     as specified by+--     'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+--     returned by+--     'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- -   Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+--     'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing+--     'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+--     sampled as a result of this command /must/ only be sampled using a+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+--     of+--     'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+--+-- -   For each set /n/ that is statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command, a descriptor set /must/ have been bound+--     to /n/ at the same pipeline bind point, with a+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+--     for set /n/, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   For each push constant that is statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command, a push constant value /must/ have been+--     set for the same pipeline bind point, with a+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+--     for push constants, with the+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+--     current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- -   Descriptors in each bound descriptor set, specified via+--     'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+--     /must/ be valid if they are statically used by the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+--     point used by this command+--+-- -   A valid pipeline /must/ be bound to the pipeline bind point used by+--     this command+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command requires any dynamic state,+--     that state /must/ have been set for @commandBuffer@, and done so+--     after any previously bound pipeline with the corresponding state not+--     specified as dynamic+--+-- -   There /must/ not have been any calls to dynamic state setting+--     commands for any state not specified as dynamic in the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command, since that pipeline was+--     bound+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used to sample+--     from any 'Graphics.Vulkan.Core10.Handles.Image' with a+--     'Graphics.Vulkan.Core10.Handles.ImageView' of the type+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+--     or+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+--     in any shader stage+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+--     any shader stage+--+-- -   If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a+--     'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+--     unnormalized coordinates, that sampler /must/ not be used with any+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+--     instructions that includes a LOD bias or any offset values, in any+--     shader stage+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a uniform buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+--     feature is not enabled, and if the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point used by this command accesses a storage buffer,+--     it /must/ not access values outside of the range of the buffer as+--     specified in the descriptor set bound to the same pipeline bind+--     point+--+-- -   If @commandBuffer@ is an unprotected command buffer, any resource+--     accessed by the 'Graphics.Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command /must/ not be+--     a protected resource+--+-- -   @raygenShaderBindingOffset@ /must/ be less than the size of+--     @raygenShaderBindingTableBuffer@+--+-- -   @raygenShaderBindingOffset@ /must/ be a multiple of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @missShaderBindingOffset@ /must/ be less than the size of+--     @missShaderBindingTableBuffer@+--+-- -   @missShaderBindingOffset@ /must/ be a multiple of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @hitShaderBindingOffset@ /must/ be less than the size of+--     @hitShaderBindingTableBuffer@+--+-- -   @hitShaderBindingOffset@ /must/ be a multiple of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @callableShaderBindingOffset@ /must/ be less than the size of+--     @callableShaderBindingTableBuffer@+--+-- -   @callableShaderBindingOffset@ /must/ be a multiple of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupBaseAlignment@+--+-- -   @missShaderBindingStride@ /must/ be a multiple of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @hitShaderBindingStride@ /must/ be a multiple of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @callableShaderBindingStride@ /must/ be a multiple of+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@shaderGroupHandleSize@+--+-- -   @missShaderBindingStride@ /must/ be less than or equal to+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   @hitShaderBindingStride@ /must/ be less than or equal to+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   @callableShaderBindingStride@ /must/ be less than or equal to+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'::@maxShaderGroupStride@+--+-- -   Any shader group handle referenced by this call /must/ have been+--     queried from the currently bound ray tracing shader pipeline+--+-- -   This command /must/ not cause a shader call instruction to be+--     executed from a shader invocation with a+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>+--     greater than the value of @maxRecursionDepth@ used to create the+--     bound ray tracing pipeline+--+-- -   If @commandBuffer@ is a protected command buffer, any resource+--     written to by the 'Graphics.Vulkan.Core10.Handles.Pipeline' object+--     bound to the pipeline bind point used by this command /must/ not be+--     an unprotected resource+--+-- -   If @commandBuffer@ is a protected command buffer, pipeline stages+--     other than the framebuffer-space and compute stages in the+--     'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+--     pipeline bind point /must/ not write to any resource+--+-- -   @width@ /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--+-- -   @height@ /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--+-- -   @depth@ /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--+-- == Valid Usage (Implicit)+--+-- -   @commandBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- -   @raygenShaderBindingTableBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   If @missShaderBindingTableBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @missShaderBindingTableBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   If @hitShaderBindingTableBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @hitShaderBindingTableBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   If @callableShaderBindingTableBuffer@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @callableShaderBindingTableBuffer@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   @commandBuffer@ /must/ be in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- -   The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ support compute operations+--+-- -   This command /must/ only be called outside of a render pass instance+--+-- -   Each of @callableShaderBindingTableBuffer@, @commandBuffer@,+--     @hitShaderBindingTableBuffer@, @missShaderBindingTableBuffer@, and+--     @raygenShaderBindingTableBuffer@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- -   Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+--     @commandBuffer@ was allocated from /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |                                                                                                                                     |+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |                                                                                                                                     |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdTraceRaysNV :: forall io . MonadIO io => CommandBuffer -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> io ()+cmdTraceRaysNV commandBuffer raygenShaderBindingTableBuffer raygenShaderBindingOffset missShaderBindingTableBuffer missShaderBindingOffset missShaderBindingStride hitShaderBindingTableBuffer hitShaderBindingOffset hitShaderBindingStride callableShaderBindingTableBuffer callableShaderBindingOffset callableShaderBindingStride width height depth = liftIO $ do+  let vkCmdTraceRaysNV' = mkVkCmdTraceRaysNV (pVkCmdTraceRaysNV (deviceCmds (commandBuffer :: CommandBuffer)))+  vkCmdTraceRaysNV' (commandBufferHandle (commandBuffer)) (raygenShaderBindingTableBuffer) (raygenShaderBindingOffset) (missShaderBindingTableBuffer) (missShaderBindingOffset) (missShaderBindingStride) (hitShaderBindingTableBuffer) (hitShaderBindingOffset) (hitShaderBindingStride) (callableShaderBindingTableBuffer) (callableShaderBindingOffset) (callableShaderBindingStride) (width) (height) (depth)+  pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkGetAccelerationStructureHandleNV+  :: FunPtr (Ptr Device_T -> AccelerationStructureKHR -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureKHR -> CSize -> Ptr () -> IO Result++-- | vkGetAccelerationStructureHandleNV - Get opaque acceleration structure+-- handle+--+-- = Parameters+--+-- -   @device@ is the logical device that owns the acceleration+--     structures.+--+-- -   @accelerationStructure@ is the acceleration structure.+--+-- -   @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+--+-- -   @pData@ is a pointer to a user-allocated buffer where the results+--     will be written.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureKHR',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getAccelerationStructureHandleNV :: forall io . MonadIO io => Device -> AccelerationStructureKHR -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> io ()+getAccelerationStructureHandleNV device accelerationStructure dataSize data' = liftIO $ do+  let vkGetAccelerationStructureHandleNV' = mkVkGetAccelerationStructureHandleNV (pVkGetAccelerationStructureHandleNV (deviceCmds (device :: Device)))+  r <- vkGetAccelerationStructureHandleNV' (deviceHandle (device)) (accelerationStructure) (CSize (dataSize)) (data')+  when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+  unsafe+#endif+  "dynamic" mkVkCreateRayTracingPipelinesNV+  :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline+-- object+--+-- = Parameters+--+-- -   @device@ is the logical device that creates the ray tracing+--     pipelines.+--+-- -   @pipelineCache@ is either+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', indicating that+--     pipeline caching is disabled, or the handle of a valid+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>+--     object, in which case use of that cache is enabled for the duration+--     of the command.+--+-- -   @createInfoCount@ is the length of the @pCreateInfos@ and+--     @pPipelines@ arrays.+--+-- -   @pCreateInfos@ is a pointer to an array of+--     'RayTracingPipelineCreateInfoNV' structures.+--+-- -   @pAllocator@ controls host memory allocation as described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+--     chapter.+--+-- -   @pPipelines@ is a pointer to an array in which the resulting ray+--     tracing pipeline objects are returned.+--+-- == Valid Usage+--+-- -   If the @flags@ member of any element of @pCreateInfos@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and the @basePipelineIndex@ member of that same element is not+--     @-1@, @basePipelineIndex@ /must/ be less than the index into+--     @pCreateInfos@ that corresponds to that element+--+-- -   If the @flags@ member of any element of @pCreateInfos@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, the base pipeline /must/ have been created with the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+--     flag set+--+-- -   If @pipelineCache@ was created with+--     'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',+--     host access to @pipelineCache@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>+--+-- == Valid Usage (Implicit)+--+-- -   @device@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Device'+--     handle+--+-- -   If @pipelineCache@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @pipelineCache@+--     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.PipelineCache'+--     handle+--+-- -   @pCreateInfos@ /must/ be a valid pointer to an array of+--     @createInfoCount@ valid 'RayTracingPipelineCreateInfoNV' structures+--+-- -   If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+--     pointer to a valid+--     'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+--     structure+--+-- -   @pPipelines@ /must/ be a valid pointer to an array of+--     @createInfoCount@ 'Graphics.Vulkan.Core10.Handles.Pipeline' handles+--+-- -   @createInfoCount@ /must/ be greater than @0@+--+-- -   If @pipelineCache@ is a valid handle, it /must/ have been created,+--     allocated, or retrieved from @device@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+--     -   'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache',+-- 'RayTracingPipelineCreateInfoNV'+createRayTracingPipelinesNV :: forall a io . (PokeChain a, MonadIO io) => Device -> PipelineCache -> ("createInfos" ::: Vector (RayTracingPipelineCreateInfoNV a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> io (Result, ("pipelines" ::: Vector Pipeline))+createRayTracingPipelinesNV device pipelineCache createInfos allocator = liftIO . evalContT $ do+  let vkCreateRayTracingPipelinesNV' = mkVkCreateRayTracingPipelinesNV (pVkCreateRayTracingPipelinesNV (deviceCmds (device :: Device)))+  pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoNV _) ((Data.Vector.length (createInfos)) * 80) 8+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCreateInfos `plusPtr` (80 * (i)) :: Ptr (RayTracingPipelineCreateInfoNV _)) (e) . ($ ())) (createInfos)+  pAllocator <- case (allocator) of+    Nothing -> pure nullPtr+    Just j -> ContT $ withCStruct (j)+  pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+  r <- lift $ vkCreateRayTracingPipelinesNV' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))+  pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+  pure $ (r, pPipelines)+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"+pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_RAYGEN_BIT_NV"+pattern SHADER_STAGE_RAYGEN_BIT_NV = SHADER_STAGE_RAYGEN_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_ANY_HIT_BIT_NV"+pattern SHADER_STAGE_ANY_HIT_BIT_NV = SHADER_STAGE_ANY_HIT_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"+pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV = SHADER_STAGE_CLOSEST_HIT_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_MISS_BIT_NV"+pattern SHADER_STAGE_MISS_BIT_NV = SHADER_STAGE_MISS_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_INTERSECTION_BIT_NV"+pattern SHADER_STAGE_INTERSECTION_BIT_NV = SHADER_STAGE_INTERSECTION_BIT_KHR+++-- No documentation found for TopLevel "VK_SHADER_STAGE_CALLABLE_BIT_NV"+pattern SHADER_STAGE_CALLABLE_BIT_NV = SHADER_STAGE_CALLABLE_BIT_KHR+++-- No documentation found for TopLevel "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"+pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR+++-- No documentation found for TopLevel "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"+pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR+++-- No documentation found for TopLevel "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"+pattern BUFFER_USAGE_RAY_TRACING_BIT_NV = BUFFER_USAGE_RAY_TRACING_BIT_KHR+++-- No documentation found for TopLevel "VK_PIPELINE_BIND_POINT_RAY_TRACING_NV"+pattern PIPELINE_BIND_POINT_RAY_TRACING_NV = PIPELINE_BIND_POINT_RAY_TRACING_KHR+++-- No documentation found for TopLevel "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"+pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR+++-- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"+pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR+++-- No documentation found for TopLevel "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"+pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR+++-- No documentation found for TopLevel "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"+pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR+++-- No documentation found for TopLevel "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"+pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR+++-- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT+++-- No documentation found for TopLevel "VK_INDEX_TYPE_NONE_NV"+pattern INDEX_TYPE_NONE_NV = INDEX_TYPE_NONE_KHR+++-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV"+pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR+++-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV"+pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR+++-- No documentation found for TopLevel "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV"+pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_TYPE_TRIANGLES_NV"+pattern GEOMETRY_TYPE_TRIANGLES_NV = GEOMETRY_TYPE_TRIANGLES_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_TYPE_AABBS_NV"+pattern GEOMETRY_TYPE_AABBS_NV = GEOMETRY_TYPE_AABBS_KHR+++-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV"+pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR+++-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV"+pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_OPAQUE_BIT_NV"+pattern GEOMETRY_OPAQUE_BIT_NV = GEOMETRY_OPAQUE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"+pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"+pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"+pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"+pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR+++-- No documentation found for TopLevel "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"+pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR+++-- No documentation found for TopLevel "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"+pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR+++-- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV"+pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR+++-- No documentation found for TopLevel "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV"+pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR+++-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR+++-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR+++-- No documentation found for TopLevel "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR+++-- No documentation found for TopLevel "vkDestroyAccelerationStructureNV"+destroyAccelerationStructureNV = destroyAccelerationStructureKHR+++-- No documentation found for TopLevel "vkBindAccelerationStructureMemoryNV"+bindAccelerationStructureMemoryNV = bindAccelerationStructureMemoryKHR+++-- No documentation found for TopLevel "vkCmdWriteAccelerationStructuresPropertiesNV"+cmdWriteAccelerationStructuresPropertiesNV = cmdWriteAccelerationStructuresPropertiesKHR+++-- No documentation found for TopLevel "vkGetRayTracingShaderGroupHandlesNV"+getRayTracingShaderGroupHandlesNV = getRayTracingShaderGroupHandlesKHR+++-- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"+pattern SHADER_UNUSED_NV = SHADER_UNUSED_KHR+++-- | VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a+-- shader group+--+-- == Valid Usage+--+-- -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then+--     @generalShader@ /must/ be a valid index into+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of+--     'SHADER_STAGE_RAYGEN_BIT_NV', 'SHADER_STAGE_MISS_BIT_NV', or+--     'SHADER_STAGE_CALLABLE_BIT_NV'+--+-- -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then+--     @closestHitShader@, @anyHitShader@, and @intersectionShader@ /must/+--     be 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV'+--     then @intersectionShader@ /must/ be a valid index into+--     'RayTracingPipelineCreateInfoNV'::@pStages@ referring to a shader of+--     'SHADER_STAGE_INTERSECTION_BIT_NV'+--+-- -   If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV'+--     then @intersectionShader@ /must/ be+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- -   @closestHitShader@ /must/ be either+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid+--     index into 'RayTracingPipelineCreateInfoNV'::@pStages@ referring to+--     a shader of 'SHADER_STAGE_CLOSEST_HIT_BIT_NV'+--+-- -   @anyHitShader@ /must/ be either+--     'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid+--     index into 'RayTracingPipelineCreateInfoNV'::@pStages@ referring to+--     a shader of 'SHADER_STAGE_ANY_HIT_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @type@ /must/ be a valid+--     'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingShaderGroupTypeKHR'+--     value+--+-- = See Also+--+-- 'RayTracingPipelineCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.RayTracingShaderGroupTypeKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV+  { -- | @type@ is the type of hit group specified in this structure.+    type' :: RayTracingShaderGroupTypeKHR+  , -- | @generalShader@ is the index of the ray generation, miss, or callable+    -- shader from 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if+    -- the shader group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    generalShader :: Word32+  , -- | @closestHitShader@ is the optional index of the closest hit shader from+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    closestHitShader :: Word32+  , -- | @anyHitShader@ is the optional index of the any-hit shader from+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    anyHitShader :: Word32+  , -- | @intersectionShader@ is the index of the intersection shader from+    -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+    -- group has @type@ of+    -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV', and+    -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+    intersectionShader :: Word32+  }+  deriving (Typeable)+deriving instance Show RayTracingShaderGroupCreateInfoNV++instance ToCStruct RayTracingShaderGroupCreateInfoNV where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingShaderGroupCreateInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (type')+    poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    f++instance FromCStruct RayTracingShaderGroupCreateInfoNV where+  peekCStruct p = do+    type' <- peek @RayTracingShaderGroupTypeKHR ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeKHR))+    generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pure $ RayTracingShaderGroupCreateInfoNV+             type' generalShader closestHitShader anyHitShader intersectionShader++instance Storable RayTracingShaderGroupCreateInfoNV where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RayTracingShaderGroupCreateInfoNV where+  zero = RayTracingShaderGroupCreateInfoNV+           zero+           zero+           zero+           zero+           zero+++-- | VkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a+-- newly created ray tracing pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- == Valid Usage+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/+--     be a valid handle to a ray tracing+--     'Graphics.Vulkan.Core10.Handles.Pipeline'+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @basePipelineIndex@ /must/ be a valid index into the calling+--     command’s @pCreateInfos@ parameter+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@+--     /must/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- -   If @flags@ contains the+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+--     flag, and @basePipelineHandle@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+--     @basePipelineIndex@ /must/ be @-1@+--+-- -   The @stage@ member of at least one element of @pStages@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_KHR'+--+-- -   The shader code for the entry points identified by @pStages@, and+--     the rest of the state identified by this structure /must/ adhere to+--     the pipeline linking rules described in the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>+--     chapter+--+-- -   @layout@ /must/ be+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+--     with all shaders specified in @pStages@+--+-- -   The number of resources in @layout@ accessible to each shader stage+--     that is used by the pipeline /must/ be less than or equal to+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV'+--+-- -   If the+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>+--     feature is not enabled, @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     or+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'+--+-- -   @maxRecursionDepth@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxRecursionDepth@+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'+--+-- -   @flags@ /must/ not include+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'+--+-- -   @flags@ /must/ not include both+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'+--     and+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'+--     at the same time+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+--     'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'+--+-- -   The @sType@ value of each struct in the @pNext@ chain /must/ be+--     unique+--+-- -   @flags@ /must/ be a valid combination of+--     'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+--     values+--+-- -   @pStages@ /must/ be a valid pointer to an array of @stageCount@+--     valid+--     'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+--     structures+--+-- -   @pGroups@ /must/ be a valid pointer to an array of @groupCount@+--     valid 'RayTracingShaderGroupCreateInfoNV' structures+--+-- -   @layout@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- -   @stageCount@ /must/ be greater than @0@+--+-- -   @groupCount@ /must/ be greater than @0@+--+-- -   Both of @basePipelineHandle@, and @layout@ that are valid handles of+--     non-ignored parameters /must/ have been created, allocated, or+--     retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'RayTracingShaderGroupCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createRayTracingPipelinesNV'+data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV+  { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+    next :: Chain es+  , -- | @flags@ is a bitmask of+    -- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+    -- specifying how the pipeline will be generated.+    flags :: PipelineCreateFlags+  , -- | @pStages@ is an array of size @stageCount@ structures of type+    -- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+    -- describing the set of the shader stages to be included in the ray+    -- tracing pipeline.+    stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+  , -- | @pGroups@ is an array of size @groupCount@ structures of type+    -- 'RayTracingShaderGroupCreateInfoNV' describing the set of the shader+    -- stages to be included in each shader group in the ray tracing pipeline.+    groups :: Vector RayTracingShaderGroupCreateInfoNV+  , -- | @maxRecursionDepth@ is the+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>+    -- of shaders executed by this pipeline.+    maxRecursionDepth :: Word32+  , -- | @layout@ is the description of binding locations used by both the+    -- pipeline and descriptor sets used with the pipeline.+    layout :: PipelineLayout+  , -- | @basePipelineHandle@ is a pipeline to derive from.+    basePipelineHandle :: Pipeline+  , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+    -- as a pipeline to derive from.+    basePipelineIndex :: Int32+  }+  deriving (Typeable)+deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)++instance Extensible RayTracingPipelineCreateInfoNV where+  extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV+  setNext x next = x{next = next}+  getNext RayTracingPipelineCreateInfoNV{..} = next+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b+  extends _ f+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f+    | otherwise = Nothing++instance PokeChain es => ToCStruct (RayTracingPipelineCreateInfoNV es) where+  withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p RayTracingPipelineCreateInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)+    pNext'' <- fmap castPtr . ContT $ withChain (next)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 40) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (groups)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)+    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (layout)+    lift $ poke ((p `plusPtr` 64 :: Ptr Pipeline)) (basePipelineHandle)+    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (basePipelineIndex)+    lift $ f+  cStructSize = 80+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)+    pNext' <- fmap castPtr . ContT $ withZeroChain @es+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+    pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+    pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (mempty)) * 40) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+    lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (zero)+    lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (zero)+    lift $ f++instance PeekChain es => FromCStruct (RayTracingPipelineCreateInfoNV es) where+  peekCStruct p = do+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+    next <- peekChain (castPtr pNext)+    flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+    stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))+    pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+    groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))+    pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+    layout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))+    basePipelineHandle <- peek @Pipeline ((p `plusPtr` 64 :: Ptr Pipeline))+    basePipelineIndex <- peek @Int32 ((p `plusPtr` 72 :: Ptr Int32))+    pure $ RayTracingPipelineCreateInfoNV+             next flags pStages' pGroups' maxRecursionDepth layout basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where+  zero = RayTracingPipelineCreateInfoNV+           ()+           zero+           mempty+           mempty+           zero+           zero+           zero+           zero+++-- | VkGeometryTrianglesNV - Structure specifying a triangle geometry in a+-- bottom-level acceleration structure+--+-- = Description+--+-- If @indexType@ is 'INDEX_TYPE_NONE_NV', then this structure describes a+-- set of triangles determined by @vertexCount@. Otherwise, this structure+-- describes a set of indexed triangles determined by @indexCount@.+--+-- == Valid Usage+--+-- -   @vertexOffset@ /must/ be less than the size of @vertexData@+--+-- -   @vertexOffset@ /must/ be a multiple of the component size of+--     @vertexFormat@+--+-- -   @vertexFormat@ /must/ be one of+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32B32_SFLOAT',+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT',+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SFLOAT',+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT',+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM', or+--     'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SNORM'+--+-- -   @indexOffset@ /must/ be less than the size of @indexData@+--+-- -   @indexOffset@ /must/ be a multiple of the element size of+--     @indexType@+--+-- -   @indexType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',+--     'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or+--     'INDEX_TYPE_NONE_NV'+--+-- -   @indexData@ /must/ be+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' if @indexType@ is+--     'INDEX_TYPE_NONE_NV'+--+-- -   @indexData@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Handles.Buffer' handle if @indexType@ is not+--     'INDEX_TYPE_NONE_NV'+--+-- -   @indexCount@ /must/ be @0@ if @indexType@ is 'INDEX_TYPE_NONE_NV'+--+-- -   @transformOffset@ /must/ be less than the size of @transformData@+--+-- -   @transformOffset@ /must/ be a multiple of @16@+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   If @vertexData@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @vertexData@+--     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   @vertexFormat@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- -   If @indexData@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @indexData@+--     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   @indexType@ /must/ be a valid+--     'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- -   If @transformData@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @transformData@+--     /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- -   Each of @indexData@, @transformData@, and @vertexData@ that are+--     valid handles of non-ignored parameters /must/ have been created,+--     allocated, or retrieved from the same+--     'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryTrianglesNV = GeometryTrianglesNV+  { -- | @vertexData@ is the buffer containing vertex data for this geometry.+    vertexData :: Buffer+  , -- | @vertexOffset@ is the offset in bytes within @vertexData@ containing+    -- vertex data for this geometry.+    vertexOffset :: DeviceSize+  , -- | @vertexCount@ is the number of valid vertices.+    vertexCount :: Word32+  , -- | @vertexStride@ is the stride in bytes between each vertex.+    vertexStride :: DeviceSize+  , -- | @vertexFormat@ is a 'Graphics.Vulkan.Core10.Enums.Format.Format'+    -- describing the format of each vertex element.+    vertexFormat :: Format+  , -- | @indexData@ is the buffer containing index data for this geometry.+    indexData :: Buffer+  , -- | @indexOffset@ is the offset in bytes within @indexData@ containing index+    -- data for this geometry.+    indexOffset :: DeviceSize+  , -- | @indexCount@ is the number of indices to include in this geometry.+    indexCount :: Word32+  , -- | @indexType@ is a 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'+    -- describing the format of each index.+    indexType :: IndexType+  , -- | @transformData@ is an optional buffer containing an 'TransformMatrixNV'+    -- structure defining a transformation to be applied to this geometry.+    transformData :: Buffer+  , -- | @transformOffset@ is the offset in bytes in @transformData@ of the+    -- transform information described above.+    transformOffset :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show GeometryTrianglesNV++instance ToCStruct GeometryTrianglesNV where+  withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryTrianglesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (vertexData)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (vertexOffset)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (vertexCount)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (vertexStride)+    poke ((p `plusPtr` 48 :: Ptr Format)) (vertexFormat)+    poke ((p `plusPtr` 56 :: Ptr Buffer)) (indexData)+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (indexOffset)+    poke ((p `plusPtr` 72 :: Ptr Word32)) (indexCount)+    poke ((p `plusPtr` 76 :: Ptr IndexType)) (indexType)+    poke ((p `plusPtr` 80 :: Ptr Buffer)) (transformData)+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (transformOffset)+    f+  cStructSize = 96+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Format)) (zero)+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)+    poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 76 :: Ptr IndexType)) (zero)+    poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct GeometryTrianglesNV where+  peekCStruct p = do+    vertexData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+    vertexOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+    vertexCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+    vertexStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))+    vertexFormat <- peek @Format ((p `plusPtr` 48 :: Ptr Format))+    indexData <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))+    indexOffset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))+    indexCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))+    indexType <- peek @IndexType ((p `plusPtr` 76 :: Ptr IndexType))+    transformData <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))+    transformOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))+    pure $ GeometryTrianglesNV+             vertexData vertexOffset vertexCount vertexStride vertexFormat indexData indexOffset indexCount indexType transformData transformOffset++instance Storable GeometryTrianglesNV where+  sizeOf ~_ = 96+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryTrianglesNV where+  zero = GeometryTrianglesNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- | VkGeometryAABBNV - Structure specifying axis-aligned bounding box+-- geometry in a bottom-level acceleration structure+--+-- = Description+--+-- The AABB data in memory is six 32-bit floats consisting of the minimum+-- x, y, and z values followed by the maximum x, y, and z values.+--+-- == Valid Usage+--+-- -   @offset@ /must/ be less than the size of @aabbData@+--+-- -   @offset@ /must/ be a multiple of @8@+--+-- -   @stride@ /must/ be a multiple of @8@+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   If @aabbData@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @aabbData@ /must/+--     be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'GeometryDataNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryAABBNV = GeometryAABBNV+  { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.+    aabbData :: Buffer+  , -- | @numAABBs@ is the number of AABBs in this geometry.+    numAABBs :: Word32+  , -- | @stride@ is the stride in bytes between AABBs in @aabbData@.+    stride :: Word32+  , -- | @offset@ is the offset in bytes of the first AABB in @aabbData@.+    offset :: DeviceSize+  }+  deriving (Typeable)+deriving instance Show GeometryAABBNV++instance ToCStruct GeometryAABBNV where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryAABBNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (aabbData)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (numAABBs)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (stride)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)+    f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+    f++instance FromCStruct GeometryAABBNV where+  peekCStruct p = do+    aabbData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+    numAABBs <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    stride <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+    pure $ GeometryAABBNV+             aabbData numAABBs stride offset++instance Storable GeometryAABBNV where+  sizeOf ~_ = 40+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryAABBNV where+  zero = GeometryAABBNV+           zero+           zero+           zero+           zero+++-- | VkGeometryDataNV - Structure specifying geometry in a bottom-level+-- acceleration structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'GeometryAABBNV', 'GeometryNV', 'GeometryTrianglesNV'+data GeometryDataNV = GeometryDataNV+  { -- | @triangles@ /must/ be a valid 'GeometryTrianglesNV' structure+    triangles :: GeometryTrianglesNV+  , -- | @aabbs@ /must/ be a valid 'GeometryAABBNV' structure+    aabbs :: GeometryAABBNV+  }+  deriving (Typeable)+deriving instance Show GeometryDataNV++instance ToCStruct GeometryDataNV where+  withCStruct x f = allocaBytesAligned 136 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryDataNV{..} f = evalContT $ do+    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (triangles) . ($ ())+    ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (aabbs) . ($ ())+    lift $ f+  cStructSize = 136+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (zero) . ($ ())+    ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (zero) . ($ ())+    lift $ f++instance FromCStruct GeometryDataNV where+  peekCStruct p = do+    triangles <- peekCStruct @GeometryTrianglesNV ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV))+    aabbs <- peekCStruct @GeometryAABBNV ((p `plusPtr` 96 :: Ptr GeometryAABBNV))+    pure $ GeometryDataNV+             triangles aabbs++instance Zero GeometryDataNV where+  zero = GeometryDataNV+           zero+           zero+++-- | VkGeometryNV - Structure specifying a geometry in a bottom-level+-- acceleration structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureInfoNV', 'GeometryDataNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.GeometryFlagsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.GeometryTypeKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryNV = GeometryNV+  { -- | @geometryType@ /must/ be a valid+    -- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.GeometryTypeKHR' value+    geometryType :: GeometryTypeKHR+  , -- | @geometry@ /must/ be a valid 'GeometryDataNV' structure+    geometry :: GeometryDataNV+  , -- | @flags@ /must/ be a valid combination of+    -- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.GeometryFlagBitsKHR'+    -- values+    flags :: GeometryFlagsKHR+  }+  deriving (Typeable)+deriving instance Show GeometryNV++instance ToCStruct GeometryNV where+  withCStruct x f = allocaBytesAligned 168 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p GeometryNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (geometryType)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (geometry) . ($ ())+    lift $ poke ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR)) (flags)+    lift $ f+  cStructSize = 168+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeKHR)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (zero) . ($ ())+    lift $ f++instance FromCStruct GeometryNV where+  peekCStruct p = do+    geometryType <- peek @GeometryTypeKHR ((p `plusPtr` 16 :: Ptr GeometryTypeKHR))+    geometry <- peekCStruct @GeometryDataNV ((p `plusPtr` 24 :: Ptr GeometryDataNV))+    flags <- peek @GeometryFlagsKHR ((p `plusPtr` 160 :: Ptr GeometryFlagsKHR))+    pure $ GeometryNV+             geometryType geometry flags++instance Zero GeometryNV where+  zero = GeometryNV+           zero+           zero+           zero+++-- | VkAccelerationStructureInfoNV - Structure specifying the parameters of+-- acceleration structure object+--+-- = Description+--+-- 'AccelerationStructureInfoNV' contains information that is used both for+-- acceleration structure creation with 'createAccelerationStructureNV' and+-- in combination with the actual geometric data to build the acceleration+-- structure with 'cmdBuildAccelerationStructureNV'.+--+-- == Valid Usage+--+-- -   @geometryCount@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@+--+-- -   @instanceCount@ /must/ be less than or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxInstanceCount@+--+-- -   The total number of triangles in all geometries /must/ be less than+--     or equal to+--     'PhysicalDeviceRayTracingPropertiesNV'::@maxTriangleCount@+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' then+--     @geometryCount@ /must/ be @0@+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then+--     @instanceCount@ /must/ be @0@+--+-- -   If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then the+--     @geometryType@ member of each geometry in @pGeometries@ /must/ be+--     the same+--+-- -   @flags@ /must/ be a valid combination of+--     'BuildAccelerationStructureFlagBitsNV' values+--+-- -   If @flags@ has the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,+--     then it /must/ not have the+--     'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' bit set+--+-- -   @scratch@ /must/ have been created with+--     'BUFFER_USAGE_RAY_TRACING_BIT_NV' usage flag+--+-- -   If @instanceData@ is not+--     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @instanceData@+--     /must/ have been created with 'BUFFER_USAGE_RAY_TRACING_BIT_NV'+--     usage flag+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @type@ /must/ be a valid 'AccelerationStructureTypeNV' value+--+-- -   @flags@ /must/ be @0@+--+-- -   If @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid+--     pointer to an array of @geometryCount@ valid 'GeometryNV' structures+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoNV', 'AccelerationStructureTypeNV',+-- 'BuildAccelerationStructureFlagsNV', 'GeometryNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdBuildAccelerationStructureNV'+data AccelerationStructureInfoNV = AccelerationStructureInfoNV+  { -- | @type@ is a 'AccelerationStructureTypeNV' value specifying the type of+    -- acceleration structure that will be created.+    type' :: AccelerationStructureTypeNV+  , -- | @flags@ is a bitmask of 'BuildAccelerationStructureFlagBitsNV'+    -- specifying additional parameters of the acceleration structure.+    flags :: BuildAccelerationStructureFlagsNV+  , -- | @instanceCount@ specifies the number of instances that will be in the+    -- new acceleration structure.+    instanceCount :: Word32+  , -- | @pGeometries@ is a pointer to an array of @geometryCount@ 'GeometryNV'+    -- structures containing the scene data being passed into the acceleration+    -- structure.+    geometries :: Vector GeometryNV+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureInfoNV++instance ToCStruct AccelerationStructureInfoNV where+  withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (type')+    lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV)) (flags)+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (instanceCount)+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))+    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (geometries)) * 168) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (geometries)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')+    lift $ f+  cStructSize = 40+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (zero)+    pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (mempty)) * 168) 8+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (mempty)+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')+    lift $ f++instance FromCStruct AccelerationStructureInfoNV where+  peekCStruct p = do+    type' <- peek @AccelerationStructureTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV))+    flags <- peek @BuildAccelerationStructureFlagsNV ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV))+    instanceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    geometryCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    pGeometries <- peek @(Ptr GeometryNV) ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV)))+    pGeometries' <- generateM (fromIntegral geometryCount) (\i -> peekCStruct @GeometryNV ((pGeometries `advancePtrBytes` (168 * (i)) :: Ptr GeometryNV)))+    pure $ AccelerationStructureInfoNV+             type' flags instanceCount pGeometries'++instance Zero AccelerationStructureInfoNV where+  zero = AccelerationStructureInfoNV+           zero+           zero+           zero+           mempty+++-- | VkAccelerationStructureCreateInfoNV - Structure specifying the+-- parameters of a newly created acceleration structure object+--+-- == Valid Usage+--+-- -   If @compactedSize@ is not @0@ then both @info.geometryCount@ and+--     @info.instanceCount@ /must/ be @0@+--+-- == Valid Usage (Implicit)+--+-- -   @sType@ /must/ be+--     'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'+--+-- -   @pNext@ /must/ be @NULL@+--+-- -   @info@ /must/ be a valid 'AccelerationStructureInfoNV' structure+--+-- = See Also+--+-- 'AccelerationStructureInfoNV',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createAccelerationStructureNV'+data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV+  { -- | @compactedSize@ is the size from the result of+    -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration+    -- structure is going to be the target of a compacting copy.+    compactedSize :: DeviceSize+  , -- | @info@ is the 'AccelerationStructureInfoNV' structure specifying further+    -- parameters of the created acceleration structure.+    info :: AccelerationStructureInfoNV+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureCreateInfoNV++instance ToCStruct AccelerationStructureCreateInfoNV where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())+    lift $ f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = evalContT $ do+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+    ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())+    lift $ f++instance FromCStruct AccelerationStructureCreateInfoNV where+  peekCStruct p = do+    compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+    info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))+    pure $ AccelerationStructureCreateInfoNV+             compactedSize info++instance Zero AccelerationStructureCreateInfoNV where+  zero = AccelerationStructureCreateInfoNV+           zero+           zero+++-- | VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying+-- acceleration to query for memory requirements+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsTypeNV',+-- 'AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAccelerationStructureMemoryRequirementsNV'+data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV+  { -- | @type@ /must/ be a valid 'AccelerationStructureMemoryRequirementsTypeNV'+    -- value+    type' :: AccelerationStructureMemoryRequirementsTypeNV+  , -- | @accelerationStructure@ /must/ be a valid 'AccelerationStructureNV'+    -- handle+    accelerationStructure :: AccelerationStructureNV+  }+  deriving (Typeable)+deriving instance Show AccelerationStructureMemoryRequirementsInfoNV++instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where+  withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p AccelerationStructureMemoryRequirementsInfoNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (type')+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructure)+    f+  cStructSize = 32+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (zero)+    poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (zero)+    f++instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where+  peekCStruct p = do+    type' <- peek @AccelerationStructureMemoryRequirementsTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))+    accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))+    pure $ AccelerationStructureMemoryRequirementsInfoNV+             type' accelerationStructure++instance Storable AccelerationStructureMemoryRequirementsInfoNV where+  sizeOf ~_ = 32+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureMemoryRequirementsInfoNV where+  zero = AccelerationStructureMemoryRequirementsInfoNV+           zero+           zero+++-- | VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical+-- device for ray tracing+--+-- = Description+--+-- If the 'PhysicalDeviceRayTracingPropertiesNV' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- Limits specified by this structure /must/ match those specified with the+-- same name in+-- 'Graphics.Vulkan.Extensions.VK_KHR_ray_tracing.PhysicalDeviceRayTracingPropertiesKHR'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV+  { -- | @shaderGroupHandleSize@ size in bytes of the shader header.+    shaderGroupHandleSize :: Word32+  , -- | @maxRecursionDepth@ is the maximum number of levels of recursion allowed+    -- in a trace command.+    maxRecursionDepth :: Word32+  , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between+    -- shader groups in the SBT.+    maxShaderGroupStride :: Word32+  , -- | @shaderGroupBaseAlignment@ is the required alignment in bytes for the+    -- base of the SBTs.+    shaderGroupBaseAlignment :: Word32+  , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom+    -- level acceleration structure.+    maxGeometryCount :: Word64+  , -- | @maxInstanceCount@ is the maximum number of instances in the top level+    -- acceleration structure.+    maxInstanceCount :: Word64+  , -- | @maxTriangleCount@ is the maximum number of triangles in all geometries+    -- in the bottom level acceleration structure.+    maxTriangleCount :: Word64+  , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of+    -- acceleration structure descriptors that are allowed in a descriptor set.+    maxDescriptorSetAccelerationStructures :: Word32+  }+  deriving (Typeable)+deriving instance Show PhysicalDeviceRayTracingPropertiesNV++instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where+  withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+  pokeCStruct p PhysicalDeviceRayTracingPropertiesNV{..} f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)+    poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)+    poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTriangleCount)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)+    f+  cStructSize = 64+  cStructAlignment = 8+  pokeZeroCStruct p f = do+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+    poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)+    poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+    f++instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where+  peekCStruct p = do+    shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+    maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+    maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+    shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+    maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+    maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))+    maxTriangleCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))+    maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+    pure $ PhysicalDeviceRayTracingPropertiesNV+             shaderGroupHandleSize maxRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment maxGeometryCount maxInstanceCount maxTriangleCount maxDescriptorSetAccelerationStructures++instance Storable PhysicalDeviceRayTracingPropertiesNV where+  sizeOf ~_ = 64+  alignment ~_ = 8+  peek = peekCStruct+  poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingPropertiesNV where+  zero = PhysicalDeviceRayTracingPropertiesNV+           zero+           zero+           zero+           zero+           zero+           zero+           zero+           zero+++-- No documentation found for TopLevel "VkGeometryFlagsNV"+type GeometryFlagsNV = GeometryFlagsKHR+++-- No documentation found for TopLevel "VkGeometryInstanceFlagsNV"+type GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR+++-- No documentation found for TopLevel "VkBuildAccelerationStructureFlagsNV"+type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR+++-- No documentation found for TopLevel "VkAccelerationStructureNV"+type AccelerationStructureNV = AccelerationStructureKHR+++-- No documentation found for TopLevel "VkGeometryFlagBitsNV"+type GeometryFlagBitsNV = GeometryFlagBitsKHR+++-- No documentation found for TopLevel "VkGeometryInstanceFlagBitsNV"+type GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR+++-- No documentation found for TopLevel "VkBuildAccelerationStructureFlagBitsNV"+type BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR+++-- No documentation found for TopLevel "VkCopyAccelerationStructureModeNV"+type CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR+++-- No documentation found for TopLevel "VkAccelerationStructureTypeNV"+type AccelerationStructureTypeNV = AccelerationStructureTypeKHR+++-- No documentation found for TopLevel "VkGeometryTypeNV"+type GeometryTypeNV = GeometryTypeKHR+++-- No documentation found for TopLevel "VkRayTracingShaderGroupTypeNV"+type RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR+++-- No documentation found for TopLevel "VkAccelerationStructureMemoryRequirementsTypeNV"+type AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeKHR+++-- No documentation found for TopLevel "VkBindAccelerationStructureMemoryInfoNV"+type BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoKHR+++-- No documentation found for TopLevel "VkWriteDescriptorSetAccelerationStructureNV"+type WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureKHR+++-- No documentation found for TopLevel "VkAabbPositionsNV"+type AabbPositionsNV = AabbPositionsKHR+++-- No documentation found for TopLevel "VkTransformMatrixNV"+type TransformMatrixNV = TransformMatrixKHR+++-- No documentation found for TopLevel "VkAccelerationStructureInstanceNV"+type AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR   type NV_RAY_TRACING_SPEC_VERSION = 3
src/Graphics/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot view
@@ -2,7 +2,6 @@ module Graphics.Vulkan.Extensions.VK_NV_ray_tracing  ( AccelerationStructureCreateInfoNV                                                      , AccelerationStructureInfoNV                                                      , AccelerationStructureMemoryRequirementsInfoNV-                                                     , BindAccelerationStructureMemoryInfoNV                                                      , GeometryAABBNV                                                      , GeometryDataNV                                                      , GeometryNV@@ -10,11 +9,11 @@                                                      , PhysicalDeviceRayTracingPropertiesNV                                                      , RayTracingPipelineCreateInfoNV                                                      , RayTracingShaderGroupCreateInfoNV-                                                     , WriteDescriptorSetAccelerationStructureNV-                                                     , CopyAccelerationStructureModeNV+                                                     , AccelerationStructureNV                                                      ) where  import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (AccelerationStructureKHR) import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain) import Graphics.Vulkan.CStruct (FromCStruct) import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)@@ -44,14 +43,6 @@ instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV  -data BindAccelerationStructureMemoryInfoNV--instance ToCStruct BindAccelerationStructureMemoryInfoNV-instance Show BindAccelerationStructureMemoryInfoNV--instance FromCStruct BindAccelerationStructureMemoryInfoNV-- data GeometryAABBNV  instance ToCStruct GeometryAABBNV@@ -109,13 +100,6 @@ instance FromCStruct RayTracingShaderGroupCreateInfoNV  -data WriteDescriptorSetAccelerationStructureNV--instance ToCStruct WriteDescriptorSetAccelerationStructureNV-instance Show WriteDescriptorSetAccelerationStructureNV--instance FromCStruct WriteDescriptorSetAccelerationStructureNV---data CopyAccelerationStructureModeNV+-- No documentation found for TopLevel "VkAccelerationStructureNV"+type AccelerationStructureNV = AccelerationStructureKHR 
src/Graphics/Vulkan/Extensions/VK_NV_scissor_exclusive.hs view
@@ -91,7 +91,7 @@ -- -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusive scissor>---     feature /must/ be enabled.+--     feature /must/ be enabled -- -- -   @firstExclusiveScissor@ /must/ be less than --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@
src/Graphics/Vulkan/Extensions/VK_NV_shading_rate_image.hs view
@@ -125,17 +125,17 @@ -- -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature /must/ be enabled.+--     feature /must/ be enabled -- -- -   If @imageView@ is not --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ be a --     valid 'Graphics.Vulkan.Core10.Handles.ImageView' handle of type --     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or---     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'.+--     'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' -- -- -   If @imageView@ is not --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have a---     format of 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'.+--     format of 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_UINT' -- -- -   If @imageView@ is not --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have@@ -147,13 +147,13 @@ --     /must/ match the actual --     'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' of each --     subresource accessible from @imageView@ at the time the subresource---     is accessed.+--     is accessed -- -- -   If @imageView@ is not --     'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @imageLayout@ --     /must/ be --     'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'---     or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'.+--     or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' -- -- == Valid Usage (Implicit) --@@ -237,7 +237,7 @@ -- -- -   The --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>---     feature /must/ be enabled.+--     feature /must/ be enabled -- -- -   @firstViewport@ /must/ be less than --     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@@@ -342,7 +342,7 @@ -- -- -   The array @pCustomSampleOrders@ /must/ not contain two structures --     with matching values for both the @shadingRate@ and @sampleCount@---     members.+--     members -- -- == Valid Usage (Implicit) --@@ -693,12 +693,12 @@ -- -- 'CoarseSampleOrderCustomNV' data CoarseSampleLocationNV = CoarseSampleLocationNV-  { -- | @pixelX@ /must/ be less than the width (in pixels) of the fragment.+  { -- | @pixelX@ /must/ be less than the width (in pixels) of the fragment     pixelX :: Word32-  , -- | @pixelY@ /must/ be less than the height (in pixels) of the fragment.+  , -- | @pixelY@ /must/ be less than the height (in pixels) of the fragment     pixelY :: Word32   , -- | @sample@ /must/ be less than the number of coverage samples in each-    -- pixel belonging to the fragment.+    -- pixel belonging to the fragment     sample :: Word32   }   deriving (Typeable)@@ -753,23 +753,23 @@ -- == Valid Usage -- -- -   @shadingRate@ /must/ be a shading rate that generates fragments with---     more than one pixel.+--     more than one pixel -- -- -   @sampleCount@ /must/ correspond to a sample count enumerated in --     'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags' --     whose corresponding bit is set in---     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@framebufferNoAttachmentsSampleCounts@.+--     'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@framebufferNoAttachmentsSampleCounts@ -- -- -   @sampleLocationCount@ /must/ be equal to the product of --     @sampleCount@, the fragment width for @shadingRate@, and the---     fragment height for @shadingRate@.+--     fragment height for @shadingRate@ -- -- -   @sampleLocationCount@ /must/ be less than or equal to the value of---     'PhysicalDeviceShadingRateImagePropertiesNV'::@shadingRateMaxCoarseSamples@.+--     'PhysicalDeviceShadingRateImagePropertiesNV'::@shadingRateMaxCoarseSamples@ -- -- -   The array @pSampleLocations@ /must/ contain exactly one entry for --     every combination of valid values for @pixelX@, @pixelY@, and---     @sample@ in the structure 'CoarseSampleOrderCustomNV'.+--     @sample@ in the structure 'CoarseSampleOrderCustomNV' -- -- == Valid Usage (Implicit) --@@ -864,7 +864,7 @@ -- -- -   The array @pCustomSampleOrders@ /must/ not contain two structures --     with matching values for both the @shadingRate@ and @sampleCount@---     members.+--     members -- -- == Valid Usage (Implicit) --
+ src/Graphics/Vulkan/Extensions/VK_QCOM_render_pass_shader_resolve.hs view
@@ -0,0 +1,22 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve  ( QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION+                                                                      , pattern QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION+                                                                      , QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME+                                                                      , pattern QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME+                                                                      ) where++import Data.String (IsString)++type QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4++-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION"+pattern QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION :: forall a . Integral a => a+pattern QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4+++type QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve"++-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME"+pattern QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve"+
+ src/Graphics/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs view
@@ -0,0 +1,22 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_store_ops  ( QCOM_render_pass_store_ops_SPEC_VERSION+                                                                 , pattern QCOM_render_pass_store_ops_SPEC_VERSION+                                                                 , QCOM_render_pass_store_ops_EXTENSION_NAME+                                                                 , pattern QCOM_render_pass_store_ops_EXTENSION_NAME+                                                                 ) where++import Data.String (IsString)++type QCOM_render_pass_store_ops_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_QCOM_render_pass_store_ops_SPEC_VERSION"+pattern QCOM_render_pass_store_ops_SPEC_VERSION :: forall a . Integral a => a+pattern QCOM_render_pass_store_ops_SPEC_VERSION = 2+++type QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops"++-- No documentation found for TopLevel "VK_QCOM_render_pass_store_ops_EXTENSION_NAME"+pattern QCOM_render_pass_store_ops_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops"+
src/Graphics/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs view
@@ -40,14 +40,17 @@ -- -- == Valid Usage ----- -   @transform@ /must/ be VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,---     VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,---     VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, or---     VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR.+-- -   @transform@ /must/ be+--     'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',+--     'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',+--     'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',+--     or+--     'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' ----- -   The renderpass must have been created with+-- -   The @renderpass@ /must/ have been created with --     'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo'::@flags@---     containing VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM.+--     containing+--     'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM' -- -- == Valid Usage (Implicit) --@@ -59,8 +62,9 @@ -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType', -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR' data RenderPassTransformBeginInfoQCOM = RenderPassTransformBeginInfoQCOM-  { -- | @transform@ is a VkSurfaceTransformFlagBitsKHR value describing the-    -- transform to be applied applied to rasterization.+  { -- | @transform@ is a+    -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR'+    -- value describing the transform to be applied to rasterization.     transform :: SurfaceTransformFlagBitsKHR }   deriving (Typeable) deriving instance Show RenderPassTransformBeginInfoQCOM@@ -118,10 +122,12 @@ -- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType', -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR' data CommandBufferInheritanceRenderPassTransformInfoQCOM = CommandBufferInheritanceRenderPassTransformInfoQCOM-  { -- | @transform@ /must/ be VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,-    -- VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,-    -- VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, or-    -- VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR.+  { -- | @transform@ /must/ be+    -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_IDENTITY_BIT_KHR',+    -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_ROTATE_90_BIT_KHR',+    -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_ROTATE_180_BIT_KHR',+    -- or+    -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SURFACE_TRANSFORM_ROTATE_270_BIT_KHR'     transform :: SurfaceTransformFlagBitsKHR   , -- | @renderArea@ is the render area that is affected by the command buffer.     renderArea :: Rect2D
src/Graphics/Vulkan/Version.hs view
@@ -14,11 +14,11 @@ import Data.Word (Word32)  pattern HEADER_VERSION :: Word32-pattern HEADER_VERSION = 134+pattern HEADER_VERSION = 139   pattern HEADER_VERSION_COMPLETE :: Word32-pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 134+pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 139   pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32
src/Graphics/Vulkan/Zero.hs view
@@ -3,7 +3,6 @@  import GHC.Ptr (nullFunPtr) import Foreign.Ptr (nullPtr)-import qualified Data.Vector.Storable.Sized (replicate) import Foreign.C.Types (CChar) import Foreign.C.Types (CFloat) import Foreign.C.Types (CInt)@@ -20,7 +19,6 @@ import Data.Word (Word32) import Data.Word (Word64) import Data.Word (Word8)-import qualified Data.Vector.Storable.Sized (Vector)  -- | A class for initializing things with all zero data --@@ -33,9 +31,6 @@ -- class Zero a where   zero :: a--instance (KnownNat n, Storable a, Zero a) => Zero (Data.Vector.Storable.Sized.Vector n a) where-  zero = Data.Vector.Storable.Sized.replicate zero  instance Zero Bool where   zero = False
vulkan.cabal view
@@ -1,35 +1,29 @@-cabal-version: 1.12+cabal-version: 2.2  -- This file has been generated from package.yaml by hpack version 0.33.0. -- -- see: https://github.com/sol/hpack ----- hash: 7a4b71d18fa3aad08655db1fe0509bcdf84c82ee475ee3f205cfda3ddc5dc2ba+-- hash: 09c9cb1a661d3ed562d3fbc971b9dbd0074bc080e9bb0830d0d25d2b13443e67  name:           vulkan-version:        3.1.0.0+version:        3.2.0.0 synopsis:       Bindings to the Vulkan graphics API. category:       Graphics homepage:       https://github.com/expipiplus1/vulkan#readme bug-reports:    https://github.com/expipiplus1/vulkan/issues maintainer:     Joe Hermaszewski <live.long.and.prosper@monoid.al>-license:        BSD3+license:        BSD-3-Clause license-file:   LICENSE build-type:     Simple extra-source-files:     readme.md     changelog.md-    default.nix  source-repository head   type: git   location: https://github.com/expipiplus1/vulkan -flag build-examples-  description: Build example executables-  manual: True-  default: False- flag safe-foreign-calls   description: Do not mark foreign imports as 'unsafe'. This means that callbacks from Vulkan to Haskell will work. If you are using these then make sure this flag is enabled.   manual: True@@ -103,7 +97,7 @@       Graphics.Vulkan.Core10.Enums.ObjectType       Graphics.Vulkan.Core10.Enums.PhysicalDeviceType       Graphics.Vulkan.Core10.Enums.PipelineBindPoint-      Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags+      Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlagBits       Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion       Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags       Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits@@ -309,9 +303,11 @@       Graphics.Vulkan.Extensions.VK_EXT_memory_priority       Graphics.Vulkan.Extensions.VK_EXT_metal_surface       Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info+      Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control       Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback       Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage       Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign+      Graphics.Vulkan.Extensions.VK_EXT_robustness2       Graphics.Vulkan.Extensions.VK_EXT_sample_locations       Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax       Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout@@ -350,6 +346,7 @@       Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address       Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2       Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation+      Graphics.Vulkan.Extensions.VK_KHR_deferred_host_operations       Graphics.Vulkan.Extensions.VK_KHR_depth_stencil_resolve       Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template       Graphics.Vulkan.Extensions.VK_KHR_device_group@@ -383,7 +380,9 @@       Graphics.Vulkan.Extensions.VK_KHR_multiview       Graphics.Vulkan.Extensions.VK_KHR_performance_query       Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties+      Graphics.Vulkan.Extensions.VK_KHR_pipeline_library       Graphics.Vulkan.Extensions.VK_KHR_push_descriptor+      Graphics.Vulkan.Extensions.VK_KHR_ray_tracing       Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout       Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge       Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion@@ -422,6 +421,8 @@       Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation       Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing       Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints+      Graphics.Vulkan.Extensions.VK_NV_device_diagnostics_config+      Graphics.Vulkan.Extensions.VK_NV_device_generated_commands       Graphics.Vulkan.Extensions.VK_NV_external_memory       Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities       Graphics.Vulkan.Extensions.VK_NV_external_memory_win32@@ -443,16 +444,15 @@       Graphics.Vulkan.Extensions.VK_NV_viewport_array2       Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle       Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex-      Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands       Graphics.Vulkan.Extensions.VK_NVX_image_view_handle       Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes+      Graphics.Vulkan.Extensions.VK_QCOM_render_pass_shader_resolve+      Graphics.Vulkan.Extensions.VK_QCOM_render_pass_store_ops       Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform       Graphics.Vulkan.Extensions.WSITypes       Graphics.Vulkan.NamedType       Graphics.Vulkan.Version       Graphics.Vulkan.Zero-  other-modules:-      Paths_vulkan   hs-source-dirs:       src   default-extensions: AllowAmbiguousTypes CPP DataKinds DefaultSignatures DeriveAnyClass DerivingStrategies DuplicateRecordFields FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MagicHash NoMonomorphismRestriction OverloadedStrings PartialTypeSignatures PatternSynonyms PolyKinds QuantifiedConstraints RankNTypes RecordWildCards RoleAnnotations ScopedTypeVariables StandaloneDeriving Strict TypeApplications TypeFamilyDependencies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns@@ -462,7 +462,6 @@     , bytestring     , transformers     , vector-    , vector-sized   if os(windows)     extra-libraries:         vulkan-1@@ -471,54 +470,4 @@         vulkan   if flag(safe-foreign-calls)     cpp-options: -DSAFE_FOREIGN_CALLS-  default-language: Haskell2010--executable info-  main-is: Main.hs-  other-modules:-      Paths_vulkan-  hs-source-dirs:-      examples/info-  default-extensions: AllowAmbiguousTypes CPP DataKinds DefaultSignatures DeriveAnyClass DerivingStrategies DuplicateRecordFields FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MagicHash NoMonomorphismRestriction OverloadedStrings PartialTypeSignatures PatternSynonyms PolyKinds QuantifiedConstraints RankNTypes RecordWildCards RoleAnnotations ScopedTypeVariables StandaloneDeriving Strict TypeApplications TypeFamilyDependencies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns-  if flag(build-examples)-    build-depends:-        base <4.14-      , bytestring-      , pretty-simple-      , vulkan-    buildable: True-  else-    buildable: False-  default-language: Haskell2010--executable sdl-triangle-  main-is: Main.hs-  other-modules:-      ShaderQQ-      Paths_vulkan-  hs-source-dirs:-      examples/sdl-triangle-  default-extensions: AllowAmbiguousTypes CPP DataKinds DefaultSignatures DeriveAnyClass DerivingStrategies DuplicateRecordFields FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MagicHash NoMonomorphismRestriction OverloadedStrings PartialTypeSignatures PatternSynonyms PolyKinds QuantifiedConstraints RankNTypes RecordWildCards RoleAnnotations ScopedTypeVariables StandaloneDeriving Strict TypeApplications TypeFamilyDependencies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns-  c-sources:-      examples/sdl-triangle/DebugCallback.c-  if flag(build-examples)-    build-depends:-        base <4.14-      , bytestring-      , extra-      , file-embed-      , managed-      , pretty-show-      , say-      , sdl2-      , template-haskell-      , temporary-      , text-      , transformers-      , typed-process-      , vector-      , vulkan-    buildable: True-  else-    buildable: False   default-language: Haskell2010