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 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: may be EGL_VULKAN_VERSION_ANGLE. On success, EGL_TRUE is returned, and the Vulkan versionbcorresponding to the EGL device is returned in . If the EGL device is not currently associated with a Vulkan device and is EGL_VULKAN_VERSION_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . This handle is compatible with Vulkan API functions. If the EGL device is not currently associated with a Vulkan device and is EGL_VULKAN_INSTANCE_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . 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 is EGL_VULKAN_INSTANCE_EXTENSIONS_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . This handle is compatible with Vulkan API functions. If the EGL device is not currently associated with a Vulkan device and is EGL_VULKAN_PHYSICAL_DEVICE_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . This handle is compatible with Vulkan API functions. If the EGL device is not currently associated with a Vulkan device and is EGL_VULKAN_DEVICE_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . 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 is EGL_VULKAN_DEVICE_EXTENSIONS_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. may be EGL_VULKAN_FEATURES_ANGLE. On success, EGL_TRUE is returned, and a pointer to a static VkPhysicalDeviceFeatures2KHR struct is returned in . 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 is EGL_VULKAN_FEATURES_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . This handle is compatible with Vulkan API functions. If the EGL device is not currently associated with a Vulkan device and is EGL_VULKAN_QUEUE_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . If the EGL device is not currently associated with a Vulkan device and is EGL_VULKAN_QUEUE_FAMILIY_INDEX_ANGLE, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. 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 . If the EGL device is not currently associated with a Vulkan device and is EGL_VULKAN_GET_INSTANCE_PROC_ADDR, EGL_BAD_ATTRIBUTE is returned, and is left unchanged. Issues None Revision History Version 1, Oct 28, 2021 (Peng Huang) - Initial Draft