Safe Haskell | None |
---|---|
Language | Haskell2010 |
Name
VK_KHR_wayland_surface - instance extension
VK_KHR_wayland_surface
- Name String
VK_KHR_wayland_surface
- Extension Type
- Instance extension
- Registered Extension Number
- 7
- Revision
- 6
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires
VK_KHR_surface
- Contact
Other Extension Metadata
- Last Modified Date
- 2015-11-28
- IP Status
- No known IP claims.
- Contributors
- Patrick Doane, Blizzard
- Jason Ekstrand, Intel
- Ian Elliott, LunarG
- Courtney Goeltzenleuchter, LunarG
- Jesse Hall, Google
- James Jones, NVIDIA
- Antoine Labour, Google
- Jon Leech, Khronos
- David Mao, AMD
- Norbert Nopper, Freescale
- Alon Or-bach, Samsung
- Daniel Rakos, AMD
- Graham Sellers, AMD
- Ray Smith, ARM
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
Description
The VK_KHR_wayland_surface
extension is an instance extension. It
provides a mechanism to create a SurfaceKHR
object (defined by the VK_KHR_surface
extension) that refers to a
Wayland wl_surface
, as well as a query to determine support for
rendering to a Wayland compositor.
New Commands
New Structures
New Bitmasks
New Enum Constants
Issues
1) Does Wayland need a way to query for compatibility between a
particular physical device and a specific Wayland display? This would be
a more general query than
getPhysicalDeviceSurfaceSupportKHR
:
if the Wayland-specific query returned
TRUE
for a
(PhysicalDevice
, struct wl_display*
) pair,
then the physical device could be assumed to support presentation to any
SurfaceKHR
for surfaces on the display.
RESOLVED: Yes. getPhysicalDeviceWaylandPresentationSupportKHR
was
added to address this issue.
2) Should we require surfaces created with createWaylandSurfaceKHR
to
support the PRESENT_MODE_MAILBOX_KHR
present mode?
RESOLVED: Yes. Wayland is an inherently mailbox window system and
mailbox support is required for some Wayland compositor interactions to
work as expected. While handling these interactions may be possible with
PRESENT_MODE_FIFO_KHR
, it is much
more difficult to do without deadlock and requiring all Wayland
applications to be able to support implementations which only support
PRESENT_MODE_FIFO_KHR
would be an
onerous restriction on application developers.
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 vkGetPhysicalDeviceWaylandPresentationSupportKHR() to resolve issue #1.
- Adjusted wording of issue #1 to match the agreed-upon solution.
- Renamed "window" parameters to "surface" to match Wayland conventions.
Revision 3, 2015-10-26 (Ian Elliott)
- Renamed from VK_EXT_KHR_wayland_surface to VK_KHR_wayland_surface.
Revision 4, 2015-11-03 (Daniel Rakos)
- Added allocation callbacks to vkCreateWaylandSurfaceKHR.
Revision 5, 2015-11-28 (Daniel Rakos)
- Updated the surface create function to take a pCreateInfo structure.
Revision 6, 2017-02-08 (Jason Ekstrand)
- Added the requirement that implementations support
PRESENT_MODE_MAILBOX_KHR
. - Added wording about interactions between
queuePresentKHR
and the Wayland requests sent to the compositor.
- Added the requirement that implementations support
See Also
WaylandSurfaceCreateFlagsKHR
, WaylandSurfaceCreateInfoKHR
,
createWaylandSurfaceKHR
,
getPhysicalDeviceWaylandPresentationSupportKHR
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- createWaylandSurfaceKHR :: forall io. MonadIO io => Instance -> WaylandSurfaceCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> io SurfaceKHR
- getPhysicalDeviceWaylandPresentationSupportKHR :: forall io. MonadIO io => PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> Ptr Wl_display -> io Bool
- data WaylandSurfaceCreateInfoKHR = WaylandSurfaceCreateInfoKHR {}
- newtype WaylandSurfaceCreateFlagsKHR = WaylandSurfaceCreateFlagsKHR Flags
- type KHR_WAYLAND_SURFACE_SPEC_VERSION = 6
- pattern KHR_WAYLAND_SURFACE_SPEC_VERSION :: forall a. Integral a => a
- type KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface"
- pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- data Wl_display
- data Wl_surface
- newtype SurfaceKHR = SurfaceKHR Word64
Documentation
createWaylandSurfaceKHR Source #
:: forall io. MonadIO io | |
=> Instance |
|
-> WaylandSurfaceCreateInfoKHR |
|
-> ("allocator" ::: Maybe AllocationCallbacks) |
|
-> io SurfaceKHR |
vkCreateWaylandSurfaceKHR - Create a
SurfaceKHR
object for a Wayland window
Valid Usage (Implicit)
-
instance
must be a validInstance
handle
-
pCreateInfo
must be a valid pointer to a validWaylandSurfaceCreateInfoKHR
structure - If
pAllocator
is notNULL
,pAllocator
must be a valid pointer to a validAllocationCallbacks
structure -
pSurface
must be a valid pointer to aSurfaceKHR
handle
Return Codes
See Also
AllocationCallbacks
,
Instance
,
SurfaceKHR
, WaylandSurfaceCreateInfoKHR
getPhysicalDeviceWaylandPresentationSupportKHR Source #
:: forall io. MonadIO io | |
=> PhysicalDevice |
|
-> ("queueFamilyIndex" ::: Word32) |
|
-> Ptr Wl_display |
|
-> io Bool |
vkGetPhysicalDeviceWaylandPresentationSupportKHR - Query physical device for presentation to Wayland
Description
This platform-specific function can be called prior to creating a surface.
Valid Usage (Implicit)
See Also
data WaylandSurfaceCreateInfoKHR Source #
VkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Wayland surface object
Valid Usage (Implicit)
See Also
StructureType
,
WaylandSurfaceCreateFlagsKHR
, createWaylandSurfaceKHR
Instances
newtype WaylandSurfaceCreateFlagsKHR Source #
VkWaylandSurfaceCreateFlagsKHR - Reserved for future use
Description
WaylandSurfaceCreateFlagsKHR
is a bitmask type for setting a mask, but
is currently reserved for future use.
See Also
Instances
type KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 Source #
pattern KHR_WAYLAND_SURFACE_SPEC_VERSION :: forall a. Integral a => a Source #
type KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" Source #
pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
data Wl_display Source #
data Wl_surface Source #
newtype SurfaceKHR Source #
VkSurfaceKHR - Opaque handle to a surface object
Description
The VK_KHR_surface
extension declares the SurfaceKHR
object, and
provides a function for destroying SurfaceKHR
objects. Separate
platform-specific extensions each provide a function for creating a
SurfaceKHR
object for the respective platform. From the application’s
perspective this is an opaque handle, just like the handles of other
Vulkan objects.
See Also
PhysicalDeviceSurfaceInfo2KHR
,
SwapchainCreateInfoKHR
,
createAndroidSurfaceKHR
,
createDirectFBSurfaceEXT
,
createDisplayPlaneSurfaceKHR
,
createHeadlessSurfaceEXT
,
createIOSSurfaceMVK
,
createImagePipeSurfaceFUCHSIA
,
createMacOSSurfaceMVK
,
createMetalSurfaceEXT
,
createStreamDescriptorSurfaceGGP
,
createViSurfaceNN
,
createWaylandSurfaceKHR
,
createWin32SurfaceKHR
,
createXcbSurfaceKHR
,
createXlibSurfaceKHR
,
destroySurfaceKHR
,
getDeviceGroupSurfacePresentModesKHR
,
getPhysicalDevicePresentRectanglesKHR
,
getPhysicalDeviceSurfaceCapabilities2EXT
,
getPhysicalDeviceSurfaceCapabilitiesKHR
,
getPhysicalDeviceSurfaceFormatsKHR
,
getPhysicalDeviceSurfacePresentModesKHR
,
getPhysicalDeviceSurfaceSupportKHR