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