Hash :
db38707a
Author :
Date :
2023-10-19T18:08:51
Metal: Compile mtllib at build time. Reworks gen_mtl_internal_shaders.py to only generate the combined metal source file, mtl_internal_shaders_autogen.metal. metallibs are now compiled at build time using gn actions. This allows the Chrome and WebKit build process to use the same code for loading the builtin shaders even though they compile them in different ways. We now only build the mtllib for the OS we're currently building for. Bug: chromium:1385510 Change-Id: Ie3b4f66c48a7e0eccd5fe664f988e407f452795c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4583134 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
# Copyright 2022 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Define a list of source files that ANGLE_PROGRAM_VERSION hash value is
# generated from. When any of the files listed below changes, the
# ANGLE_PROGRAM_VERSION should change and we will invalidate shader program
# cache blobs: applications will compile shader programs from scratch and not
# loading from blob caches.
# The path of all the files added to angle_code_affecting_program_serialize
# must be relative to angle_root.
import("compiler.gni")
import("libANGLE/renderer/d3d/d3d_backend.gni")
import("libANGLE/renderer/gl/gl_backend.gni")
import("libANGLE/renderer/metal/metal_backend.gni")
import("libANGLE/renderer/null/null_backend.gni")
import("libANGLE/renderer/vulkan/vulkan_backend.gni")
import("libGLESv2.gni")
angle_code_affecting_program_serialize = libangle_common_sources
angle_code_affecting_program_serialize += libangle_headers
angle_code_affecting_program_serialize += libangle_sources
angle_code_affecting_program_serialize += libangle_gl_sources
angle_code_affecting_program_serialize += libangle_includes
angle_code_affecting_program_serialize += angle_translator_exported_headers
angle_code_affecting_program_serialize += angle_translator_sources
angle_code_affecting_program_serialize += angle_translator_glsl_base_sources
angle_code_affecting_program_serialize +=
angle_translator_glsl_and_vulkan_base_sources
angle_code_affecting_program_serialize += angle_translator_essl_sources
angle_code_affecting_program_serialize += angle_translator_glsl_sources
angle_code_affecting_program_serialize += angle_translator_glsl_apple_sources
angle_code_affecting_program_serialize += angle_translator_hlsl_sources
angle_code_affecting_program_serialize += angle_translator_lib_spirv_sources
angle_code_affecting_program_serialize +=
angle_translator_essl_symbol_table_sources
angle_code_affecting_program_serialize +=
angle_translator_glsl_symbol_table_sources
angle_code_affecting_program_serialize += angle_translator_lib_msl_sources
angle_code_affecting_program_serialize += angle_preprocessor_sources
angle_dependencies_affecting_program_serialize = []
vulkan_backend_dir = "libANGLE/renderer/vulkan/"
angle_code_affecting_program_serialize +=
rebase_path(vulkan_backend_sources, angle_root, vulkan_backend_dir)
gl_backend_dir = "libANGLE/renderer/gl/"
angle_code_affecting_program_serialize +=
rebase_path(gl_backend_sources, angle_root, gl_backend_dir)
d3d_backend_dir = "libANGLE/renderer/d3d/"
angle_code_affecting_program_serialize +=
rebase_path(d3d_shared_sources, angle_root, d3d_backend_dir)
if (angle_enable_d3d9) {
angle_code_affecting_program_serialize +=
rebase_path(d3d9_backend_sources, angle_root, d3d_backend_dir)
}
if (angle_enable_d3d11) {
angle_code_affecting_program_serialize +=
rebase_path(d3d11_backend_sources, angle_root, d3d_backend_dir)
}
null_backend_dir = "libANGLE/renderer/null/"
angle_code_affecting_program_serialize +=
rebase_path(null_backend_sources, angle_root, null_backend_dir)
if (angle_enable_metal) {
metal_backend_dir = "libANGLE/renderer/metal/"
angle_code_affecting_program_serialize +=
rebase_path(metal_backend_sources, angle_root, metal_backend_dir)
angle_dependencies_affecting_program_serialize +=
[ "src/libANGLE/renderer/metal:angle_metal_internal_shaders" ]
}
if (angle_has_frame_capture) {
angle_code_affecting_program_serialize += libangle_capture_sources
}