Commit 1dcb3eb2 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Don't expose MSRTT on Mac/SwiftShader

Frequently causes failures as such: [...:ERROR:drawing_buffer.cc(854)] Initialization failed to allocate backbuffer. [...:INFO:CONSOLE(197)] "Unable to initialize webgl context.", source: (197) Bug: chromium:1112986 Bug: angleproject:4937 Change-Id: I5058f78434c0ac49345fe1167043f2dca759b1b9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2341350Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent 91a03bd4
...@@ -369,6 +369,13 @@ struct FeaturesVk : FeatureSetBase ...@@ -369,6 +369,13 @@ struct FeaturesVk : FeatureSetBase
"force_max_uniform_buffer_size_16K", FeatureCategory::VulkanWorkarounds, "force_max_uniform_buffer_size_16K", FeatureCategory::VulkanWorkarounds,
"Force max uniform buffer size to 16K on some device due to bug", &members, "Force max uniform buffer size to 16K on some device due to bug", &members,
"https://issuetracker.google.com/161903006"}; "https://issuetracker.google.com/161903006"};
// Swiftshader on mac fails to initialize WebGL context when EXT_multisampled_render_to_texture
// is used by Chromium.
// http://anglebug.com/4937
Feature enableMultisampledRenderToTexture = {
"enable_multisampled_render_to_texture", FeatureCategory::VulkanWorkarounds,
"Expose EXT_multisampled_render_to_texture", &members, "http://anglebug.com/4937"};
}; };
inline FeaturesVk::FeaturesVk() = default; inline FeaturesVk::FeaturesVk() = default;
......
...@@ -1628,7 +1628,7 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev ...@@ -1628,7 +1628,7 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev
bool isNvidia = IsNvidia(mPhysicalDeviceProperties.vendorID); bool isNvidia = IsNvidia(mPhysicalDeviceProperties.vendorID);
bool isQualcomm = IsQualcomm(mPhysicalDeviceProperties.vendorID); bool isQualcomm = IsQualcomm(mPhysicalDeviceProperties.vendorID);
bool isARM = IsARM(mPhysicalDeviceProperties.vendorID); bool isARM = IsARM(mPhysicalDeviceProperties.vendorID);
bool isSwS = bool isSwiftShader =
IsSwiftshader(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID); IsSwiftshader(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID);
if (mLineRasterizationFeatures.bresenhamLines == VK_TRUE) if (mLineRasterizationFeatures.bresenhamLines == VK_TRUE)
...@@ -1775,7 +1775,8 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev ...@@ -1775,7 +1775,8 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev
ANGLE_FEATURE_CONDITION(&mFeatures, bindEmptyForUnusedDescriptorSets, ANGLE_FEATURE_CONDITION(&mFeatures, bindEmptyForUnusedDescriptorSets,
IsAndroid() && isQualcomm); IsAndroid() && isQualcomm);
ANGLE_FEATURE_CONDITION(&mFeatures, forceOldRewriteStructSamplers, IsAndroid() && !isSwS); ANGLE_FEATURE_CONDITION(&mFeatures, forceOldRewriteStructSamplers,
IsAndroid() && !isSwiftShader);
ANGLE_FEATURE_CONDITION(&mFeatures, perFrameWindowSizeQuery, ANGLE_FEATURE_CONDITION(&mFeatures, perFrameWindowSizeQuery,
isIntel || (IsWindows() && isAMD) || IsFuchsia() || isARM); isIntel || (IsWindows() && isAMD) || IsFuchsia() || isARM);
...@@ -1845,6 +1846,9 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev ...@@ -1845,6 +1846,9 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev
bool isAdreno540 = mPhysicalDeviceProperties.deviceID == angle::kDeviceID_Adreno540; bool isAdreno540 = mPhysicalDeviceProperties.deviceID == angle::kDeviceID_Adreno540;
ANGLE_FEATURE_CONDITION(&mFeatures, forceMaxUniformBufferSize16KB, isQualcomm && isAdreno540); ANGLE_FEATURE_CONDITION(&mFeatures, forceMaxUniformBufferSize16KB, isQualcomm && isAdreno540);
ANGLE_FEATURE_CONDITION(&mFeatures, enableMultisampledRenderToTexture,
!(IsApple() && isSwiftShader));
angle::PlatformMethods *platform = ANGLEPlatformCurrent(); angle::PlatformMethods *platform = ANGLEPlatformCurrent();
platform->overrideFeaturesVk(platform, &mFeatures); platform->overrideFeaturesVk(platform, &mFeatures);
......
...@@ -76,19 +76,21 @@ void RendererVk::ensureCapsInitialized() const ...@@ -76,19 +76,21 @@ void RendererVk::ensureCapsInitialized() const
// Enable this for simple buffer readback testing, but some functionality is missing. // Enable this for simple buffer readback testing, but some functionality is missing.
// TODO(jmadill): Support full mapBufferRange extension. // TODO(jmadill): Support full mapBufferRange extension.
mNativeExtensions.mapBufferOES = true; mNativeExtensions.mapBufferOES = true;
mNativeExtensions.mapBufferRange = true; mNativeExtensions.mapBufferRange = true;
mNativeExtensions.textureStorage = true; mNativeExtensions.textureStorage = true;
mNativeExtensions.drawBuffers = true; mNativeExtensions.drawBuffers = true;
mNativeExtensions.fragDepth = true; mNativeExtensions.fragDepth = true;
mNativeExtensions.framebufferBlit = true; mNativeExtensions.framebufferBlit = true;
mNativeExtensions.framebufferMultisample = true; mNativeExtensions.framebufferMultisample = true;
mNativeExtensions.multisampledRenderToTexture = true; mNativeExtensions.multisampledRenderToTexture =
mNativeExtensions.multisampledRenderToTexture2 = true; getFeatures().enableMultisampledRenderToTexture.enabled;
mNativeExtensions.copyTexture = true; mNativeExtensions.multisampledRenderToTexture2 =
mNativeExtensions.copyTexture3d = true; getFeatures().enableMultisampledRenderToTexture.enabled;
mNativeExtensions.copyCompressedTexture = true; mNativeExtensions.copyTexture = true;
mNativeExtensions.debugMarker = true; mNativeExtensions.copyTexture3d = true;
mNativeExtensions.copyCompressedTexture = true;
mNativeExtensions.debugMarker = true;
mNativeExtensions.robustness = mNativeExtensions.robustness =
!IsSwiftshader(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID) && !IsSwiftshader(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID) &&
!IsARM(mPhysicalDeviceProperties.vendorID); !IsARM(mPhysicalDeviceProperties.vendorID);
......
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