Invalidate Skia shader cache if Vulkan driver has changed
Test: Ran apps several time and observed shader cache validation Change-Id: I7c2620b9a0eefcb7acedc86647ecf44805518b2f
This commit is contained in:
@@ -209,8 +209,8 @@ void RenderThread::requireVkContext() {
|
||||
mVkManager->initialize();
|
||||
GrContextOptions options;
|
||||
initGrContextOptions(options);
|
||||
// TODO: get a string describing the SPIR-V compiler version and use it here
|
||||
cacheManager().configureContext(&options, nullptr, 0);
|
||||
auto vkDriverVersion = mVkManager->getDriverVersion();
|
||||
cacheManager().configureContext(&options, &vkDriverVersion, sizeof(vkDriverVersion));
|
||||
sk_sp<GrContext> grContext = mVkManager->createContext(options);
|
||||
LOG_ALWAYS_FATAL_IF(!grContext.get());
|
||||
setGrContext(grContext);
|
||||
|
||||
@@ -170,6 +170,7 @@ void VulkanManager::setupDevice(GrVkExtensions& grExtensions, VkPhysicalDeviceFe
|
||||
VkPhysicalDeviceProperties physDeviceProperties;
|
||||
mGetPhysicalDeviceProperties(mPhysicalDevice, &physDeviceProperties);
|
||||
LOG_ALWAYS_FATAL_IF(physDeviceProperties.apiVersion < VK_MAKE_VERSION(1, 1, 0));
|
||||
mDriverVersion = physDeviceProperties.driverVersion;
|
||||
|
||||
// query to get the initial queue props size
|
||||
uint32_t queueCount;
|
||||
|
||||
@@ -82,6 +82,8 @@ public:
|
||||
|
||||
sk_sp<GrContext> createContext(const GrContextOptions& options);
|
||||
|
||||
uint32_t getDriverVersion() const { return mDriverVersion; }
|
||||
|
||||
private:
|
||||
friend class VulkanSurface;
|
||||
// Sets up the VkInstance and VkDevice objects. Also fills out the passed in
|
||||
@@ -178,6 +180,7 @@ private:
|
||||
};
|
||||
SwapBehavior mSwapBehavior = SwapBehavior::Discard;
|
||||
GrVkExtensions mExtensions;
|
||||
uint32_t mDriverVersion = 0;
|
||||
};
|
||||
|
||||
} /* namespace renderthread */
|
||||
|
||||
Reference in New Issue
Block a user