Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf99c445 authored by Stan Iliev's avatar Stan Iliev
Browse files

Invalidate Skia shader cache if Vulkan driver has changed

Test: Ran apps several time and observed shader cache validation
Change-Id: I7c2620b9a0eefcb7acedc86647ecf44805518b2f
parent dece92b2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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;
+3 −0
Original line number Diff line number Diff line
@@ -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 */