Commit ff60abaf by Tobin Ehlis Committed by Commit Bot

Vulkan:Disable FramebufferVk cache on Apple

Currently hitting a crash on Apple so disabling FramebufferVk cache. Bug: angleproject:4442 Change-Id: I3824252210aeeaf9919c8d17730395b394a50862 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080661Reviewed-by: 's avatarJonah Ryan-Davis <jonahr@google.com> Commit-Queue: Tobin Ehlis <tobine@google.com>
parent dd19d554
...@@ -252,6 +252,11 @@ struct FeaturesVk : FeatureSetBase ...@@ -252,6 +252,11 @@ struct FeaturesVk : FeatureSetBase
FeatureCategory::VulkanFeatures, FeatureCategory::VulkanFeatures,
"Enable Android pre-rotation for landscape applications", "Enable Android pre-rotation for landscape applications",
&members, "http://anglebug.com/3502"}; &members, "http://anglebug.com/3502"};
// Cache FramebufferVk objects. Currently hitting a bug on Apple: http://anglebug.com/4442
Feature enableFramebufferVkCache = {
"enable_framebuffer_vk_cache", FeatureCategory::VulkanFeatures,
"Enable FramebufferVk objects to be cached", &members, "http://anglebug.com/4442"};
}; };
inline FeaturesVk::FeaturesVk() = default; inline FeaturesVk::FeaturesVk() = default;
......
...@@ -1177,8 +1177,16 @@ angle::Result FramebufferVk::getFramebuffer(ContextVk *contextVk, vk::Framebuffe ...@@ -1177,8 +1177,16 @@ angle::Result FramebufferVk::getFramebuffer(ContextVk *contextVk, vk::Framebuffe
auto iter = mFramebufferCache.find(mCurrentFramebufferDesc); auto iter = mFramebufferCache.find(mCurrentFramebufferDesc);
if (iter != mFramebufferCache.end()) if (iter != mFramebufferCache.end())
{ {
*framebufferOut = &iter->second.getFramebuffer(); if (contextVk->getRenderer()->getFeatures().enableFramebufferVkCache.enabled)
return angle::Result::Continue; {
*framebufferOut = &iter->second.getFramebuffer();
return angle::Result::Continue;
}
else
{
// When cache is off just release previous entry, it will be recreated below
iter->second.release(contextVk);
}
} }
vk::RenderPass *compatibleRenderPass = nullptr; vk::RenderPass *compatibleRenderPass = nullptr;
ANGLE_TRY(contextVk->getCompatibleRenderPass(mRenderPassDesc, &compatibleRenderPass)); ANGLE_TRY(contextVk->getCompatibleRenderPass(mRenderPassDesc, &compatibleRenderPass));
......
...@@ -1649,6 +1649,9 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev ...@@ -1649,6 +1649,9 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev
// Pre-rotation support is not fully ready to be enabled. // Pre-rotation support is not fully ready to be enabled.
ANGLE_FEATURE_CONDITION((&mFeatures), enablePreRotateSurfaces, false); ANGLE_FEATURE_CONDITION((&mFeatures), enablePreRotateSurfaces, false);
// Currently disable FramebufferVk cache on Apple: http://anglebug.com/4442
ANGLE_FEATURE_CONDITION((&mFeatures), enableFramebufferVkCache, !IsApple());
angle::PlatformMethods *platform = ANGLEPlatformCurrent(); angle::PlatformMethods *platform = ANGLEPlatformCurrent();
platform->overrideFeaturesVk(platform, &mFeatures); platform->overrideFeaturesVk(platform, &mFeatures);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment