Hash :
a9b01747
Author :
Date :
2023-10-25T10:49:56
Metal: Add fall back to from-source shader compilation We can't compile Metal shaders at build time without the chromium build directory and mac_sdk.gni. Add a graceful fallback to building the shaders from source at runtime in this case. Also detect the iOS simulator in gn and disable shader compilation. We don't have all the Mac SDK files needed to build shaders for this target yet. Bug: chromium:1385510 Change-Id: Ibd1b36f9d97e7340a9742cba0c9c5f2221cd9a8d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4974918 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
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 83 84
# 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)
if (metal_internal_shader_compilation_supported) {
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
}