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:
Stan Iliev
2019-03-29 11:09:11 -04:00
parent dece92b287
commit bf99c4450b
3 changed files with 6 additions and 2 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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 */