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