Hash :
c303758f
Author :
Date :
2022-12-14T15:29:15
Make ANGLE program version only dependent on data that matters 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>
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
//
// Copyright 2021 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.
//
// angle_version_info.cpp: ANGLE version queries.
#include "GLSLANG/ShaderLang.h"
#include "common/angle_version.h"
namespace angle
{
int GetANGLERevision()
{
return ANGLE_REVISION;
}
const char *GetANGLEVersionString()
{
return ANGLE_VERSION_STRING;
}
const char *GetANGLECommitHash()
{
return ANGLE_COMMIT_HASH;
}
int GetANGLECommitHashSize()
{
return ANGLE_COMMIT_HASH_SIZE;
}
const char *GetANGLEShaderProgramVersion()
{
return ANGLE_PROGRAM_VERSION;
}
int GetANGLEShaderProgramVersionHashSize()
{
return ANGLE_PROGRAM_VERSION_HASH_SIZE;
}
int GetANGLESHVersion()
{
return ANGLE_SH_VERSION;
}
bool GetANGLEHasBinaryLoading()
{
#ifdef ANGLE_HAS_BINARY_LOADING
return true;
#else
return false;
#endif // #ifndef ANGLE_HAS_BINARY_LOADING
}
} // namespace angle