Vulkan: disable pipline cache serialization

In old NV drivers, Vulkan pipeline cache will only
generate one single huge cache for one process
shared by all graphics piplines in the same process,
which can be huge.

This is temp solution for nvidia driver cache issue.
after driver version 520. nvidia fix the cache issue.
this might affect second running performance.

Bug: b/258207403
Change-Id: I3ea3e9196ad18fb1cec16c931eb744300d6cfdb9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4713207
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
This commit is contained in:
Hailin zhang
2023-06-02 23:52:15 +00:00
committed by Angle LUCI CQ
parent 05707391dc
commit 4cae3b09ab

View File

@@ -4615,7 +4615,12 @@ void RendererVk::initFeatures(DisplayVk *displayVk,
// On SwiftShader, no data is retrieved from the pipeline cache, so there is no reason to
// serialize it or put it in the blob cache.
ANGLE_FEATURE_CONDITION(&mFeatures, hasEffectivePipelineCacheSerialization, !isSwiftShader);
// For Windows Nvidia Vulkan driver older than 520, Vulkan pipeline cache will only generate one
// single huge cache for one process shared by all graphics piplines in the same process, which
// can be huge.
const bool nvVersionLessThan520 = isNvidia && (nvidiaVersion.major < 520u);
ANGLE_FEATURE_CONDITION(&mFeatures, hasEffectivePipelineCacheSerialization,
!isSwiftShader && !nvVersionLessThan520);
// When the driver sets graphicsPipelineLibraryFastLinking, it means that monolithic pipelines
// are just a bundle of the libraries, and that there is no benefit in creating monolithic