blob: 15b419bc53e359f2870ca486955966bc03731aee [file] [log] [blame]
Name
ANGLE_device_vulkan
Name Strings
EGL_ANGLE_device_vulkan
Contributors
Peng Huang (penghuang 'at' google.com)
Contact
Peng Huang (penghuang 'at' google.com)
Status
Draft
Version
Version 1, Oct 28, 2021
Number
EGL Extension #XXX
Extension Type
EGL device extension
Dependencies
This extension is written against the language of EGL 1.5 as
modified by EGL_EXT_device_query.
EGL_EXT_device_query is required.
Overview
ANGLE has the ability to run GPU commands on a native Vulkan device.
This extension defines a mapping from an EGL device to a Vulkan
device, after it's queried from an EGL display.
IP Status
No known claims.
New Types
None.
New Procedures and Functions
None.
New Tokens
Accepted as a queried <attribute> in eglQueryDeviceAttribEXT:
EGL_VULKAN_VERSION_ANGLE 0x34A8
EGL_VULKAN_INSTANCE_ANGLE 0x34A9
EGL_VULKAN_INSTANCE_EXTENSIONS_ANGLE 0x34AA
EGL_VULKAN_PHYSICAL_DEVICE_ANGLE 0x34AB
EGL_VULKAN_DEVICE_ANGLE 0x34AC
EGL_VULKAN_DEVICE_EXTENSIONS_ANGLE 0x34AD
EGL_VULKAN_FEATURES_ANGLE 0x34AE
EGL_VULKAN_QUEUE_ANGLE 0x34AF
EGL_VULKAN_QUEUE_FAMILIY_INDEX_ANGLE 0x34D0
EGL_VULKAN_GET_INSTANCE_PROC_ADDR 0x34D1
Add a new section 2.1.3 (Vulkan Devices) after 2.1.2 (Devices)
Somewhat analogous to an EGL device, a Vulkan device establishes a
namespace for Vulkan operations. In the Vulkan APIs, such devices are
represented by pointers. For more details, see the Vulkan
documentation.
Changes to section 3.2 (Devices)
Replace the paragraph immediately following the prototype for
eglQueryDeviceAttribEXT:
<attribute> may be EGL_VULKAN_VERSION_ANGLE.
On success, EGL_TRUE is returned, and the Vulkan versionbcorresponding to
the EGL device is returned in <value>. If the EGL device is not currently
associated with a Vulkan device and <attribute> is EGL_VULKAN_VERSION_ANGLE,
EGL_BAD_ATTRIBUTE is returned, and <value> is left unchanged.
<attribute> may be EGL_VULKAN_INSTANCE_ANGLE.
On success, EGL_TRUE is returned, and a valid Vulkan instance handle
VkInstance corresponding to the EGL device is returned in <value>.
This handle is compatible with Vulkan API functions. If the EGL device is
not currently associated with a Vulkan device and <attribute> is
EGL_VULKAN_INSTANCE_ANGLE, EGL_BAD_ATTRIBUTE is returned, and <value> is
left unchanged.
<attribute> may be EGL_VULKAN_INSTANCE_EXTENSIONS_ANGLE.
On success, EGL_TRUE is returned, and a pointer to a null terminated static
string array is returned in <value>. The array contains enabled Vulkan
instance extensions for the Vulkan device used by the display.
If the EGL device is not currently associated with a Vulkan device and
<attribute> is EGL_VULKAN_INSTANCE_EXTENSIONS_ANGLE, EGL_BAD_ATTRIBUTE is
returned, and <value> is left unchanged.
<attribute> may be EGL_VULKAN_PHYSICAL_DEVICE_ANGLE.
On success, EGL_TRUE is returned, and a valid Vulkan physical device handle
VkPhysicalDevice corresponding to the EGL device is returned in <value>.
This handle is compatible with Vulkan API functions. If the EGL device is
not currently associated with a Vulkan device and <attribute> is
EGL_VULKAN_PHYSICAL_DEVICE_ANGLE, EGL_BAD_ATTRIBUTE is returned,
and <value> is left unchanged.
<attribute> may be EGL_VULKAN_DEVICE_ANGLE.
On success, EGL_TRUE is returned, and a valid Vulkan device handle VkDevice
corresponding to the EGL device is returned in <value>. This handle is
compatible with Vulkan API functions. If the EGL device is not currently
associated with a Vulkan device and <attribute> is EGL_VULKAN_DEVICE_ANGLE,
EGL_BAD_ATTRIBUTE is returned, and <value> is left unchanged.
<attribute> may be EGL_VULKAN_DEVICE_EXTENSIONS_ANGLE.
On success, EGL_TRUE is returned, and a pointer to a null terminated static
string array is returned in <value>. The array contains enabled Vulkan
device extensions for the Vulkan device used by the display. If the EGL
device is not currently associated with a Vulkan device and <attribute> is
EGL_VULKAN_DEVICE_EXTENSIONS_ANGLE, EGL_BAD_ATTRIBUTE is returned, and
<value> is left unchanged.
<attribute> may be EGL_VULKAN_FEATURES_ANGLE.
On success, EGL_TRUE is returned, and a pointer to a static
VkPhysicalDeviceFeatures2KHR struct is returned in <value>. The structure
contains enabled Vulkan device features for the Vulkan device used by the
display. If the EGL device is not currently associated with a Vulkan device
and <attribute> is EGL_VULKAN_FEATURES_ANGLE, EGL_BAD_ATTRIBUTE is returned,
and <value> is left unchanged.
<attribute> may be EGL_VULKAN_QUEUE_ANGLE.
On success, EGL_TRUE is returned, and a valid Vulkan device queue handle
VkQueue corresponding to the EGL device is returned in <value>. This handle
is compatible with Vulkan API functions. If the EGL device is not currently
associated with a Vulkan device and <attribute> is EGL_VULKAN_QUEUE_ANGLE,
EGL_BAD_ATTRIBUTE is returned, and <value> is left unchanged.
<attribute> may be EGL_VULKAN_QUEUE_FAMILIY_INDEX_ANGLE.
On success, EGL_TRUE is returned, and the Vulkan queue familiy index
corresponding to the EGL device is returned in <value>. If the EGL device
is not currently associated with a Vulkan device and <attribute> is
EGL_VULKAN_QUEUE_FAMILIY_INDEX_ANGLE, EGL_BAD_ATTRIBUTE is returned, and
<value> is left unchanged.
<attribute> may be EGL_VULKAN_GET_INSTANCE_PROC_ADDR.
On success, EGL_TRUE is returned, and the vkGetInstanceProcAddr function
pointer corresponding to the EGL device is returned in <value>. If the EGL
device is not currently associated with a Vulkan device and <attribute> is
EGL_VULKAN_GET_INSTANCE_PROC_ADDR, EGL_BAD_ATTRIBUTE is returned, and
<value> is left unchanged.
Issues
None
Revision History
Version 1, Oct 28, 2021 (Peng Huang)
- Initial Draft