xref: /aosp_15_r20/external/mesa3d/bin/khronos-update.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker#!/usr/bin/env python3
2*61046927SAndroid Build Coastguard Worker
3*61046927SAndroid Build Coastguard Workerimport argparse
4*61046927SAndroid Build Coastguard Workerimport base64
5*61046927SAndroid Build Coastguard Workerimport pathlib
6*61046927SAndroid Build Coastguard Workerimport requests
7*61046927SAndroid Build Coastguard Workerimport subprocess
8*61046927SAndroid Build Coastguard Workerimport typing
9*61046927SAndroid Build Coastguard Worker
10*61046927SAndroid Build Coastguard Worker
11*61046927SAndroid Build Coastguard Workerdef error(msg: str) -> None:
12*61046927SAndroid Build Coastguard Worker    print('\033[31m' + msg + '\033[0m')
13*61046927SAndroid Build Coastguard Worker
14*61046927SAndroid Build Coastguard Worker
15*61046927SAndroid Build Coastguard Workerclass Source:
16*61046927SAndroid Build Coastguard Worker    def __init__(self, filename: str, url: typing.Optional[str],
17*61046927SAndroid Build Coastguard Worker                 template: typing.Optional[str] = None, remove:
18*61046927SAndroid Build Coastguard Worker                 typing.Optional[str] = None):
19*61046927SAndroid Build Coastguard Worker        self.file = pathlib.Path(filename)
20*61046927SAndroid Build Coastguard Worker        self.url = url
21*61046927SAndroid Build Coastguard Worker        self.template = template
22*61046927SAndroid Build Coastguard Worker        self.remove = remove
23*61046927SAndroid Build Coastguard Worker
24*61046927SAndroid Build Coastguard Worker    def sync(self) -> None:
25*61046927SAndroid Build Coastguard Worker        if self.url is None:
26*61046927SAndroid Build Coastguard Worker            return
27*61046927SAndroid Build Coastguard Worker
28*61046927SAndroid Build Coastguard Worker        print('Syncing {}...'.format(self.file), end=' ', flush=True)
29*61046927SAndroid Build Coastguard Worker        req = requests.get(self.url)
30*61046927SAndroid Build Coastguard Worker
31*61046927SAndroid Build Coastguard Worker        if not req.ok:
32*61046927SAndroid Build Coastguard Worker            error('Failed to retrieve file: {} {}'.format(req.status_code, req.reason))
33*61046927SAndroid Build Coastguard Worker            return
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Worker        # Gitiles returns base64-encoded strings.
36*61046927SAndroid Build Coastguard Worker        # Google has been resisting for years to the idea of allowing plain text: https://github.com/google/gitiles/issues/7
37*61046927SAndroid Build Coastguard Worker        if 'format=TEXT' in self.url:
38*61046927SAndroid Build Coastguard Worker            content = base64.b64decode(req.content)
39*61046927SAndroid Build Coastguard Worker        else:
40*61046927SAndroid Build Coastguard Worker            content = req.content
41*61046927SAndroid Build Coastguard Worker
42*61046927SAndroid Build Coastguard Worker        content = str(content, encoding='utf-8')
43*61046927SAndroid Build Coastguard Worker        if self.remove is not None:
44*61046927SAndroid Build Coastguard Worker            content = content.replace(self.remove, '')
45*61046927SAndroid Build Coastguard Worker        if self.template is not None:
46*61046927SAndroid Build Coastguard Worker            content = self.template % content
47*61046927SAndroid Build Coastguard Worker
48*61046927SAndroid Build Coastguard Worker        with open(self.file, 'w') as f:
49*61046927SAndroid Build Coastguard Worker            f.write(content)
50*61046927SAndroid Build Coastguard Worker
51*61046927SAndroid Build Coastguard Worker        print('Done')
52*61046927SAndroid Build Coastguard Worker
53*61046927SAndroid Build Coastguard Worker
54*61046927SAndroid Build Coastguard WorkerVK_ANDROID_NATIVE_BUFFER_TEMPLATE = """\
55*61046927SAndroid Build Coastguard Worker/* MESA: A hack to avoid #ifdefs in driver code. */
56*61046927SAndroid Build Coastguard Worker#ifdef __ANDROID__
57*61046927SAndroid Build Coastguard Worker
58*61046927SAndroid Build Coastguard Worker#include <cutils/native_handle.h>
59*61046927SAndroid Build Coastguard Worker#if ANDROID_API_LEVEL < 28
60*61046927SAndroid Build Coastguard Worker/* buffer_handle_t was defined in the deprecated system/window.h */
61*61046927SAndroid Build Coastguard Workertypedef const native_handle_t *buffer_handle_t;
62*61046927SAndroid Build Coastguard Worker#endif
63*61046927SAndroid Build Coastguard Worker
64*61046927SAndroid Build Coastguard Worker#else
65*61046927SAndroid Build Coastguard Worker
66*61046927SAndroid Build Coastguard Workertypedef void *buffer_handle_t;
67*61046927SAndroid Build Coastguard Worker
68*61046927SAndroid Build Coastguard Worker#endif
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard Worker%s\
71*61046927SAndroid Build Coastguard Worker"""
72*61046927SAndroid Build Coastguard Worker
73*61046927SAndroid Build Coastguard Worker# a URL of `None` means there is no upstream, because *we* are the upstream
74*61046927SAndroid Build Coastguard WorkerSOURCES = [
75*61046927SAndroid Build Coastguard Worker    {
76*61046927SAndroid Build Coastguard Worker        'api': 'khr',
77*61046927SAndroid Build Coastguard Worker        'inc_folder': 'KHR',
78*61046927SAndroid Build Coastguard Worker        'sources': [
79*61046927SAndroid Build Coastguard Worker            Source('include/KHR/khrplatform.h',    'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/KHR/khrplatform.h'),
80*61046927SAndroid Build Coastguard Worker        ],
81*61046927SAndroid Build Coastguard Worker    },
82*61046927SAndroid Build Coastguard Worker
83*61046927SAndroid Build Coastguard Worker    {
84*61046927SAndroid Build Coastguard Worker        'api': 'egl',
85*61046927SAndroid Build Coastguard Worker        'inc_folder': 'EGL',
86*61046927SAndroid Build Coastguard Worker        'sources': [
87*61046927SAndroid Build Coastguard Worker            Source('src/egl/generate/egl.xml',     'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/egl.xml'),
88*61046927SAndroid Build Coastguard Worker            Source('include/EGL/egl.h',            'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/EGL/egl.h'),
89*61046927SAndroid Build Coastguard Worker            Source('include/EGL/eglplatform.h',    'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/EGL/eglplatform.h'),
90*61046927SAndroid Build Coastguard Worker            Source('include/EGL/eglext.h',         'https://github.com/KhronosGroup/EGL-Registry/raw/main/api/EGL/eglext.h'),
91*61046927SAndroid Build Coastguard Worker            Source('include/EGL/eglext_angle.h',   'https://chromium.googlesource.com/angle/angle/+/refs/heads/main/include/EGL/eglext_angle.h?format=TEXT'),
92*61046927SAndroid Build Coastguard Worker            Source('include/EGL/eglmesaext.h',     None),
93*61046927SAndroid Build Coastguard Worker        ],
94*61046927SAndroid Build Coastguard Worker    },
95*61046927SAndroid Build Coastguard Worker
96*61046927SAndroid Build Coastguard Worker    {
97*61046927SAndroid Build Coastguard Worker        'api': 'gl',
98*61046927SAndroid Build Coastguard Worker        'inc_folder': 'GL',
99*61046927SAndroid Build Coastguard Worker        'sources': [
100*61046927SAndroid Build Coastguard Worker            Source('src/mapi/glapi/registry/gl.xml', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/xml/gl.xml'),
101*61046927SAndroid Build Coastguard Worker            Source('include/GL/glcorearb.h',         'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/glcorearb.h'),
102*61046927SAndroid Build Coastguard Worker            Source('include/GL/glext.h',             'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/glext.h'),
103*61046927SAndroid Build Coastguard Worker            Source('include/GL/glxext.h',            'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/glxext.h'),
104*61046927SAndroid Build Coastguard Worker            Source('include/GL/wglext.h',            'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GL/wglext.h'),
105*61046927SAndroid Build Coastguard Worker            Source('include/GL/gl.h',                None),  # FIXME: I don't know what the canonical source is
106*61046927SAndroid Build Coastguard Worker            Source('include/GL/glx.h',               None),  # FIXME: I don't know what the canonical source is
107*61046927SAndroid Build Coastguard Worker            Source('include/GL/internal/',           None),
108*61046927SAndroid Build Coastguard Worker            Source('include/GL/mesa_glinterop.h',    None),
109*61046927SAndroid Build Coastguard Worker            Source('include/GL/osmesa.h',            None),
110*61046927SAndroid Build Coastguard Worker        ],
111*61046927SAndroid Build Coastguard Worker    },
112*61046927SAndroid Build Coastguard Worker
113*61046927SAndroid Build Coastguard Worker    {
114*61046927SAndroid Build Coastguard Worker        'api': 'gles1',
115*61046927SAndroid Build Coastguard Worker        'inc_folder': 'GLES',
116*61046927SAndroid Build Coastguard Worker        'sources': [
117*61046927SAndroid Build Coastguard Worker            Source('include/GLES/gl.h',         'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/gl.h'),
118*61046927SAndroid Build Coastguard Worker            Source('include/GLES/glplatform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/glplatform.h'),
119*61046927SAndroid Build Coastguard Worker            Source('include/GLES/glext.h',      'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/glext.h'),
120*61046927SAndroid Build Coastguard Worker            Source('include/GLES/egl.h',        'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES/egl.h'),
121*61046927SAndroid Build Coastguard Worker        ],
122*61046927SAndroid Build Coastguard Worker    },
123*61046927SAndroid Build Coastguard Worker
124*61046927SAndroid Build Coastguard Worker    {
125*61046927SAndroid Build Coastguard Worker        'api': 'gles2',
126*61046927SAndroid Build Coastguard Worker        'inc_folder': 'GLES2',
127*61046927SAndroid Build Coastguard Worker        'sources': [
128*61046927SAndroid Build Coastguard Worker            Source('include/GLES2/gl2.h',         'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES2/gl2.h'),
129*61046927SAndroid Build Coastguard Worker            Source('include/GLES2/gl2platform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES2/gl2platform.h'),
130*61046927SAndroid Build Coastguard Worker            Source('include/GLES2/gl2ext.h',      'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES2/gl2ext.h'),
131*61046927SAndroid Build Coastguard Worker        ],
132*61046927SAndroid Build Coastguard Worker    },
133*61046927SAndroid Build Coastguard Worker
134*61046927SAndroid Build Coastguard Worker    {
135*61046927SAndroid Build Coastguard Worker        'api': 'gles3',
136*61046927SAndroid Build Coastguard Worker        'inc_folder': 'GLES3',
137*61046927SAndroid Build Coastguard Worker        'sources': [
138*61046927SAndroid Build Coastguard Worker            Source('include/GLES3/gl3.h',         'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl3.h'),
139*61046927SAndroid Build Coastguard Worker            Source('include/GLES3/gl31.h',        'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl31.h'),
140*61046927SAndroid Build Coastguard Worker            Source('include/GLES3/gl32.h',        'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl32.h'),
141*61046927SAndroid Build Coastguard Worker            Source('include/GLES3/gl3platform.h', 'https://github.com/KhronosGroup/OpenGL-Registry/raw/main/api/GLES3/gl3platform.h'),
142*61046927SAndroid Build Coastguard Worker            Source('include/GLES3/gl3ext.h',      None),  # FIXME: I don't know what the canonical source is
143*61046927SAndroid Build Coastguard Worker        ],
144*61046927SAndroid Build Coastguard Worker    },
145*61046927SAndroid Build Coastguard Worker
146*61046927SAndroid Build Coastguard Worker    {
147*61046927SAndroid Build Coastguard Worker        'api': 'opencl',
148*61046927SAndroid Build Coastguard Worker        'inc_folder': 'CL',
149*61046927SAndroid Build Coastguard Worker        'sources': [
150*61046927SAndroid Build Coastguard Worker            Source('include/CL/opencl.h',                        'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/opencl.h'),
151*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl.h',                            'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl.h'),
152*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_platform.h',                   'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_platform.h'),
153*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_gl.h',                         'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_gl.h'),
154*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_gl_ext.h',                     'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_gl_ext.h'),
155*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_ext.h',                        'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_ext.h'),
156*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_version.h',                    'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_version.h'),
157*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_icd.h',                        'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_icd.h'),
158*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_egl.h',                        'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_egl.h'),
159*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_d3d10.h',                      'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_d3d10.h'),
160*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_d3d11.h',                      'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_d3d11.h'),
161*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_dx9_media_sharing.h',          'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_dx9_media_sharing.h'),
162*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_dx9_media_sharing_intel.h',    'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_dx9_media_sharing_intel.h'),
163*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_ext_intel.h',                  'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_ext_intel.h'),
164*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl_va_api_media_sharing_intel.h', 'https://github.com/KhronosGroup/OpenCL-Headers/raw/main/CL/cl_va_api_media_sharing_intel.h'),
165*61046927SAndroid Build Coastguard Worker
166*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl.hpp',                          'https://github.com/KhronosGroup/OpenCL-CLHPP/raw/5f3cc41df821a3e5988490232082a3e3b82c0283/include/CL/cl.hpp'),
167*61046927SAndroid Build Coastguard Worker            Source('include/CL/cl2.hpp',                         'https://github.com/KhronosGroup/OpenCL-CLHPP/raw/main/include/CL/cl2.hpp'),
168*61046927SAndroid Build Coastguard Worker            Source('include/CL/opencl.hpp',                      'https://github.com/KhronosGroup/OpenCL-CLHPP/raw/main/include/CL/opencl.hpp'),
169*61046927SAndroid Build Coastguard Worker        ],
170*61046927SAndroid Build Coastguard Worker    },
171*61046927SAndroid Build Coastguard Worker
172*61046927SAndroid Build Coastguard Worker    {
173*61046927SAndroid Build Coastguard Worker        'api': 'spirv',
174*61046927SAndroid Build Coastguard Worker        'sources': [
175*61046927SAndroid Build Coastguard Worker            Source('src/compiler/spirv/spirv.h',                    'https://github.com/KhronosGroup/SPIRV-Headers/raw/main/include/spirv/unified1/spirv.h'),
176*61046927SAndroid Build Coastguard Worker            Source('src/compiler/spirv/spirv.core.grammar.json',    'https://github.com/KhronosGroup/SPIRV-Headers/raw/main/include/spirv/unified1/spirv.core.grammar.json'),
177*61046927SAndroid Build Coastguard Worker            Source('src/compiler/spirv/OpenCL.std.h',               'https://github.com/KhronosGroup/SPIRV-Headers/raw/main/include/spirv/unified1/OpenCL.std.h'),
178*61046927SAndroid Build Coastguard Worker            Source('src/compiler/spirv/GLSL.std.450.h',             'https://github.com/KhronosGroup/SPIRV-Headers/raw/main/include/spirv/unified1/GLSL.std.450.h'),
179*61046927SAndroid Build Coastguard Worker            Source('src/compiler/spirv/GLSL.ext.AMD.h',             'https://github.com/KhronosGroup/glslang/raw/main/SPIRV/GLSL.ext.AMD.h'),  # FIXME: is this the canonical source?
180*61046927SAndroid Build Coastguard Worker        ],
181*61046927SAndroid Build Coastguard Worker    },
182*61046927SAndroid Build Coastguard Worker
183*61046927SAndroid Build Coastguard Worker    {
184*61046927SAndroid Build Coastguard Worker        'api': 'vulkan',
185*61046927SAndroid Build Coastguard Worker        'inc_folder': 'vulkan',
186*61046927SAndroid Build Coastguard Worker        'sources': [
187*61046927SAndroid Build Coastguard Worker            Source('src/vulkan/registry/vk.xml',                'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/registry/vk.xml'),
188*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan.h',                   'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan.h'),
189*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_core.h',              'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_core.h'),
190*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_beta.h',              'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_beta.h'),
191*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vk_icd.h',                   'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vk_icd.h'),
192*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vk_layer.h',                 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vk_layer.h'),
193*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vk_platform.h',              'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vk_platform.h'),
194*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_android.h',           'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_android.h'),
195*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_directfb.h',          'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_directfb.h'),
196*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_fuchsia.h',           'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_fuchsia.h'),
197*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_ggp.h',               'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_ggp.h'),
198*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_ios.h',               'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_ios.h'),
199*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_macos.h',             'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_macos.h'),
200*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_metal.h',             'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_metal.h'),
201*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_screen.h',            'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_screen.h'),
202*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_vi.h',                'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_vi.h'),
203*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_wayland.h',           'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_wayland.h'),
204*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_win32.h',             'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_win32.h'),
205*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_xcb.h',               'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xcb.h'),
206*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_xlib.h',              'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib.h'),
207*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vulkan_xlib_xrandr.h',       'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vulkan/vulkan_xlib_xrandr.h'),
208*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/vk_android_native_buffer.h', 'https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/include/vulkan/vk_android_native_buffer.h?format=TEXT',
209*61046927SAndroid Build Coastguard Worker                   template=VK_ANDROID_NATIVE_BUFFER_TEMPLATE, remove='#include <cutils/native_handle.h>\n'),
210*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_av1std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_av1std.h'),
211*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_av1std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_av1std_decode.h'),
212*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_h264std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std.h'),
213*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_h264std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_decode.h'),
214*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_h264std_encode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h264std_encode.h'),
215*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_h265std.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h265std.h'),
216*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_h265std_decode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h265std_decode.h'),
217*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codec_h265std_encode.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codec_h265std_encode.h'),
218*61046927SAndroid Build Coastguard Worker            Source('include/vk_video/vulkan_video_codecs_common.h', 'https://github.com/KhronosGroup/Vulkan-Headers/raw/main/include/vk_video/vulkan_video_codecs_common.h'),
219*61046927SAndroid Build Coastguard Worker            Source('include/vulkan/.editorconfig',              None),
220*61046927SAndroid Build Coastguard Worker        ],
221*61046927SAndroid Build Coastguard Worker    },
222*61046927SAndroid Build Coastguard Worker]
223*61046927SAndroid Build Coastguard Worker
224*61046927SAndroid Build Coastguard Worker
225*61046927SAndroid Build Coastguard Workerif __name__ == '__main__':
226*61046927SAndroid Build Coastguard Worker    git_toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'],
227*61046927SAndroid Build Coastguard Worker                                           stderr=subprocess.DEVNULL).decode("ascii").strip()
228*61046927SAndroid Build Coastguard Worker    if not pathlib.Path(git_toplevel).resolve() == pathlib.Path('.').resolve():
229*61046927SAndroid Build Coastguard Worker        error('Please run this script from the root folder ({})'.format(git_toplevel))
230*61046927SAndroid Build Coastguard Worker        exit(1)
231*61046927SAndroid Build Coastguard Worker
232*61046927SAndroid Build Coastguard Worker    parser = argparse.ArgumentParser()
233*61046927SAndroid Build Coastguard Worker    parser.add_argument('apis', nargs='*',
234*61046927SAndroid Build Coastguard Worker                        # the `[[]]` here is a workaround for python bug 9625
235*61046927SAndroid Build Coastguard Worker                        # where having `choices` breaks `nargs='*'`:
236*61046927SAndroid Build Coastguard Worker                        # https://bugs.python.org/issue9625
237*61046927SAndroid Build Coastguard Worker                        choices=[group['api'] for group in SOURCES] + [[]],
238*61046927SAndroid Build Coastguard Worker                        help='Only update the APIs specified.')
239*61046927SAndroid Build Coastguard Worker    args = parser.parse_args()
240*61046927SAndroid Build Coastguard Worker
241*61046927SAndroid Build Coastguard Worker    # These APIs all depend on the KHR header
242*61046927SAndroid Build Coastguard Worker    depend_on_khr = set(['egl', 'gl', 'gles', 'gles2', 'gles3'])
243*61046927SAndroid Build Coastguard Worker    if args.apis and 'khr' not in args.apis and depend_on_khr.intersection(set(args.apis)):
244*61046927SAndroid Build Coastguard Worker        args.apis = ['khr'] + args.apis
245*61046927SAndroid Build Coastguard Worker
246*61046927SAndroid Build Coastguard Worker    for group in SOURCES:
247*61046927SAndroid Build Coastguard Worker        if args.apis and group['api'] not in args.apis:
248*61046927SAndroid Build Coastguard Worker            continue
249*61046927SAndroid Build Coastguard Worker
250*61046927SAndroid Build Coastguard Worker        for source in group['sources']:
251*61046927SAndroid Build Coastguard Worker            source.sync()
252*61046927SAndroid Build Coastguard Worker
253*61046927SAndroid Build Coastguard Worker        # Make sure all the API files are handled by this script
254*61046927SAndroid Build Coastguard Worker        if 'inc_folder' in group:
255*61046927SAndroid Build Coastguard Worker            for file in pathlib.Path('include/' + group['inc_folder']).iterdir():
256*61046927SAndroid Build Coastguard Worker                if file not in [source.file for source in group['sources']]:
257*61046927SAndroid Build Coastguard Worker                    error('{} is unknown, please add it to SOURCES'.format(file))
258