Hash :
61728827
Author :
Date :
2022-12-14T15:29:15
Reland "Make ANGLE program version only dependent on data that matters" This is a reland of commit c303758fbc8d23266be578fae246e5687656b4c6 Changes made on top of original commit 1. Enable execution permission on python script program_serialize_data_version.py 2. Remove unused list in libGLESv2.gni 3. In angle/BUILD.gn, change file path from "relative to angle_root", to "relative to root_build_dir", so that inside the script program_serialize_data_version.py, we don't have to find the absolute path of the code files for hashing. Original change's description > This change introduces a new variable ANGLE_PROGRAM_VERSION > to track the version of ANGLE source files that affect shader > program serialization/deserialization. This change include more > source files than necessary, to serve the purpose of a conservative > jumping off point. We will narrow down the list of files for > ANGLE_PROGRAM_VERSION hash generation in the future. > Add a new script program_serialize_data_version.py that will > be triggered during the build when the related source files changed. > The script will generate a hash and the hash size from the related > source files. In program serialization/deserialization and cache > key generation, we will use this hash value instead of the entire > ANGLE git hash. When the hash value changed, we know that the > related source files changed, and we should invalidate the program > cache and re-generate the blob cache / program binary. > Bug: angleproject:4981 > Change-Id: I2fb609416738d459d3289190c232c2d797ba58e3 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4072215 > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Jamie Madill <jmadill@chromium.org> > Commit-Queue: Yuxin Hu <yuxinhu@google.com> Bug: angleproject:4981 Change-Id: Iaa9eb0ab33439197bc30d03064fc245ea7ef1ea8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4113445 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Yuxin Hu <yuxinhu@google.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
# 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("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_includes
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)
metal_backend_dir = "libANGLE/renderer/metal/"
angle_code_affecting_program_serialize +=
rebase_path(metal_backend_sources, angle_root, metal_backend_dir)
if (angle_has_frame_capture) {
angle_code_affecting_program_serialize += libangle_capture_sources
}