blob: 08d93354640ed03f02c9f682c08401dfd1dad130 [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_DEVICE_ANGLE 0x34A8
EGL_VULKAN_EXTENSIONS_ANGLE 0x34A9
EGL_VULKAN_PHYSICAL_DEVICE_ANGLE 0x34AA
EGL_VULKAN_QUEUE_ANGLE 0x34AB
EGL_VULKAN_QUEUE_FAMILIY_INDEX_ANGLE 0x34AC
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_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_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_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_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.
Issues
None
Revision History
Version 1, Oct 28, 2021 (Peng Huang)
- Initial Draft