packages feed

vulkan-3.21: src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot

{-# language CPP #-}
-- | = Name
--
-- VK_KHR_win32_surface - instance extension
--
-- == VK_KHR_win32_surface
--
-- [__Name String__]
--     @VK_KHR_win32_surface@
--
-- [__Extension Type__]
--     Instance extension
--
-- [__Registered Extension Number__]
--     10
--
-- [__Revision__]
--     6
--
-- [__Extension and Version Dependencies__]
--
--     -   Requires support for Vulkan 1.0
--
--     -   Requires @VK_KHR_surface@ to be enabled
--
-- [__Contact__]
--
--     -   Jesse Hall
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_win32_surface] @critsec%0A<<Here describe the issue or question you have about the VK_KHR_win32_surface extension>> >
--
--     -   Ian Elliott
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_win32_surface] @ianelliottus%0A<<Here describe the issue or question you have about the VK_KHR_win32_surface extension>> >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2017-04-24
--
-- [__IP Status__]
--     No known IP claims.
--
-- [__Contributors__]
--
--     -   Patrick Doane, Blizzard
--
--     -   Jason Ekstrand, Intel
--
--     -   Ian Elliott, LunarG
--
--     -   Courtney Goeltzenleuchter, LunarG
--
--     -   Jesse Hall, Google
--
--     -   James Jones, NVIDIA
--
--     -   Antoine Labour, Google
--
--     -   Jon Leech, Khronos
--
--     -   David Mao, AMD
--
--     -   Norbert Nopper, Freescale
--
--     -   Alon Or-bach, Samsung
--
--     -   Daniel Rakos, AMD
--
--     -   Graham Sellers, AMD
--
--     -   Ray Smith, ARM
--
--     -   Jeff Vigil, Qualcomm
--
--     -   Chia-I Wu, LunarG
--
-- == Description
--
-- The @VK_KHR_win32_surface@ extension is an instance extension. It
-- provides a mechanism to create a 'Vulkan.Extensions.Handles.SurfaceKHR'
-- object (defined by the @VK_KHR_surface@ extension) that refers to a
-- Win32 'HWND', as well as a query to determine support for rendering to
-- the windows desktop.
--
-- == New Commands
--
-- -   'createWin32SurfaceKHR'
--
-- -   'getPhysicalDeviceWin32PresentationSupportKHR'
--
-- == New Structures
--
-- -   'Win32SurfaceCreateInfoKHR'
--
-- == New Bitmasks
--
-- -   'Win32SurfaceCreateFlagsKHR'
--
-- == New Enum Constants
--
-- -   'KHR_WIN32_SURFACE_EXTENSION_NAME'
--
-- -   'KHR_WIN32_SURFACE_SPEC_VERSION'
--
-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
--
--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'
--
-- == Issues
--
-- 1) Does Win32 need a way to query for compatibility between a particular
-- physical device and a specific screen? Compatibility between a physical
-- device and a window generally only depends on what screen the window is
-- on. However, there is not an obvious way to identify a screen without
-- already having a window on the screen.
--
-- __RESOLVED__: No. While it may be useful, there is not a clear way to do
-- this on Win32. However, a method was added to query support for
-- presenting to the windows desktop as a whole.
--
-- 2) If a native window object ('HWND') is used by one graphics API, and
-- then is later used by a different graphics API (one of which is Vulkan),
-- can these uses interfere with each other?
--
-- __RESOLVED__: Yes.
--
-- Uses of a window object by multiple graphics APIs results in undefined
-- behavior. Such behavior may succeed when using one Vulkan implementation
-- but fail when using a different Vulkan implementation. Potential
-- failures include:
--
-- -   Creating then destroying a flip presentation model DXGI swapchain on
--     a window object can prevent
--     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' from
--     succeeding on the same window object.
--
-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'
--     on a window object can prevent creation of a bitblt model DXGI
--     swapchain on the same window object.
--
-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'
--     on a window object can effectively @SetPixelFormat@ to a different
--     format than the format chosen by an OpenGL application.
--
-- -   Creating then destroying a 'Vulkan.Extensions.Handles.SwapchainKHR'
--     on a window object on one 'Vulkan.Core10.Handles.PhysicalDevice' can
--     prevent 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR' from
--     succeeding on the same window object, but on a different
--     'Vulkan.Core10.Handles.PhysicalDevice' that is associated with a
--     different Vulkan ICD.
--
-- In all cases the problem can be worked around by creating a new window
-- object.
--
-- Technical details include:
--
-- -   Creating a DXGI swapchain over a window object can alter the object
--     for the remainder of its lifetime. The alteration persists even
--     after the DXGI swapchain has been destroyed. This alteration can
--     make it impossible for a conformant Vulkan implementation to create
--     a 'Vulkan.Extensions.Handles.SwapchainKHR' over the same window
--     object. Mention of this alteration can be found in the remarks
--     section of the MSDN documentation for @DXGI_SWAP_EFFECT@.
--
-- -   Calling GDI’s @SetPixelFormat@ (needed by OpenGL’s WGL layer) on a
--     window object alters the object for the remainder of its lifetime.
--     The MSDN documentation for @SetPixelFormat@ explains that a window
--     object’s pixel format can be set only one time.
--
-- -   Creating a 'Vulkan.Extensions.Handles.SwapchainKHR' over a window
--     object can alter the object for its remaining lifetime. Either of
--     the above alterations may occur as a side effect of
--     'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
--
-- == Version History
--
-- -   Revision 1, 2015-09-23 (Jesse Hall)
--
--     -   Initial draft, based on the previous contents of
--         VK_EXT_KHR_swapchain (later renamed VK_EXT_KHR_surface).
--
-- -   Revision 2, 2015-10-02 (James Jones)
--
--     -   Added presentation support query for win32 desktops.
--
-- -   Revision 3, 2015-10-26 (Ian Elliott)
--
--     -   Renamed from VK_EXT_KHR_win32_surface to VK_KHR_win32_surface.
--
-- -   Revision 4, 2015-11-03 (Daniel Rakos)
--
--     -   Added allocation callbacks to vkCreateWin32SurfaceKHR.
--
-- -   Revision 5, 2015-11-28 (Daniel Rakos)
--
--     -   Updated the surface create function to take a pCreateInfo
--         structure.
--
-- -   Revision 6, 2017-04-24 (Jeff Juliano)
--
--     -   Add issue 2 addressing reuse of a native window object in a
--         different Graphics API, or by a different Vulkan ICD.
--
-- == See Also
--
-- 'Win32SurfaceCreateFlagsKHR', 'Win32SurfaceCreateInfoKHR',
-- 'createWin32SurfaceKHR', 'getPhysicalDeviceWin32PresentationSupportKHR'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_KHR_win32_surface  (Win32SurfaceCreateInfoKHR) where

import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (ToCStruct)
import Data.Kind (Type)

data Win32SurfaceCreateInfoKHR

instance ToCStruct Win32SurfaceCreateInfoKHR
instance Show Win32SurfaceCreateInfoKHR

instance FromCStruct Win32SurfaceCreateInfoKHR