diff options
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.cpp | 28 |
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; |