summaryrefslogtreecommitdiff
path: root/chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp')
-rw-r--r--chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp b/chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
index 85d2d59c870..253f9307a1f 100644
--- a/chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
+++ b/chromium/third_party/angle/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
@@ -83,12 +83,17 @@ void RendererVk::ensureCapsInitialized() const
mNativeExtensions.fragDepth = true;
mNativeExtensions.framebufferBlit = true;
mNativeExtensions.framebufferMultisample = true;
- mNativeExtensions.copyTexture = true;
- mNativeExtensions.copyTexture3d = true;
- mNativeExtensions.copyCompressedTexture = true;
- mNativeExtensions.debugMarker = true;
+ mNativeExtensions.multisampledRenderToTexture =
+ getFeatures().enableMultisampledRenderToTexture.enabled;
+ mNativeExtensions.multisampledRenderToTexture2 =
+ getFeatures().enableMultisampledRenderToTexture.enabled;
+ mNativeExtensions.copyTexture = true;
+ mNativeExtensions.copyTexture3d = true;
+ mNativeExtensions.copyCompressedTexture = true;
+ mNativeExtensions.debugMarker = true;
mNativeExtensions.robustness =
- !IsSwiftshader(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID);
+ !IsSwiftshader(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID) &&
+ !IsARM(mPhysicalDeviceProperties.vendorID);
mNativeExtensions.textureBorderClampOES = false; // not implemented yet
mNativeExtensions.translatedShaderSource = true;
mNativeExtensions.discardFramebuffer = true;
@@ -113,6 +118,7 @@ void RendererVk::ensureCapsInitialized() const
mNativeExtensions.eglImageArray = true;
mNativeExtensions.memoryObject = true;
mNativeExtensions.memoryObjectFd = getFeatures().supportsExternalMemoryFd.enabled;
+ mNativeExtensions.memoryObjectFlagsANGLE = true;
mNativeExtensions.memoryObjectFuchsiaANGLE =
getFeatures().supportsExternalMemoryFuchsia.enabled;
@@ -163,6 +169,9 @@ void RendererVk::ensureCapsInitialized() const
// Vulkan natively supports standard derivatives
mNativeExtensions.standardDerivativesOES = true;
+ // Vulkan natively supports texture LOD
+ mNativeExtensions.shaderTextureLOD = true;
+
// Vulkan natively supports noperspective interpolation
mNativeExtensions.noperspectiveInterpolationNV = true;
@@ -446,10 +455,13 @@ void RendererVk::ensureCapsInitialized() const
// There is no additional limit to the combined number of components. We can have up to a
// maximum number of uniform buffers, each having the maximum number of components. Note that
// this limit includes both components in and out of uniform buffers.
+ //
+ // This value is limited to INT_MAX to avoid overflow when queried from glGetIntegerv().
const uint64_t maxCombinedUniformComponents =
- static_cast<uint64_t>(maxPerStageUniformBuffers +
- kReservedPerStageDefaultUniformBindingCount) *
- maxUniformComponents;
+ std::min<uint64_t>(static_cast<uint64_t>(maxPerStageUniformBuffers +
+ kReservedPerStageDefaultUniformBindingCount) *
+ maxUniformComponents,
+ std::numeric_limits<GLint>::max());
for (gl::ShaderType shaderType : gl::AllShaderTypes())
{
mNativeCaps.maxCombinedShaderUniformComponents[shaderType] = maxCombinedUniformComponents;