• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    ANGLE_vulkane_image
4
5Name Strings
6
7    GL_ANGLE_vulkane_image
8
9Contributors
10
11    Peng Huang, Google
12
13Contact
14
15    Peng Huang, Google (penghuang 'at' chromium.com)
16
17Status
18
19    Draft
20
21Version
22
23    Last Modified Date: Nov 19, 2021
24    Revision: 1
25
26Number
27
28    TBD
29
30Dependencies
31
32    Written against the OpenGL 4.5 and OpenGL ES 3.2 specifications
33
34    GL_ANGLE_vulkane_image requires GL_EXT_external_objects
35
36Overview
37
38    Building upon the OpenGL memory object and semaphore framework
39    defined in EXT_external_objects, this extension enables an OpenGL
40    application to share textures with an external API.
41
42New Procedures and Functions
43
44    If the GL_ANGLE_vulkane_image string is reported, the following commands
45    are added:
46
47    void AcquireTexturesANGLE(uint numTextures,
48                              const uint *textures,
49                              const GLenum *layouts);
50
51    void ReleaseTexturesANGLE(uint numTextures,
52                              const uint *textures,
53                              GLenum *layouts);
54
55New Tokens
56
57    None
58
59Additions to Chapter 4 of the OpenGL 4.5 Specification (Event Model)
60
61    The command
62        void AcquireTexturesANGLE(uint numTextures,
63                                  const uint *textures,
64                                  const GLenum *layouts);
65    will acquire ownership of textures. Since the texture layout state is
66    managed internally by the GL, but may have been modified by an external API,
67    the current layout of the textures must be specified to initialize internal
68    GL state prior to correspond to those specified by the Vulkan API as
69    described in table 4.4. However, the layouts do not necessarily correspond
70    to an optimal state for any particular GL operation. The GL will simply
71    perform appropriate transitions internally as necessary based on the
72    specified current layout of the texture.
73
74    The command
75        void ReleaseTexturesANGLE(uint numTextures,
76                                  const uint *textures,
77                                  GLenum *layouts);
78    will release ownership of textures. The current texture layouts will be
79    returned, so an external API can perform appropriate transitions as
80    necessary based on the returned current layout of the textures.
81
82Revision History
83
84    Revision 1, 2021-11-19 (Peng Huang)
85        - Initial draft based closely on EXT_external_objects_fd.
86