Commit 1439b6d5 by Laurie Hedge Committed by Commit Bot

Vulkan: Fix integer overflow for max per stage and combined uniform buffers.

This was causing dEQP-GLES3.functional.implementation_limits.max_fragment_uniform_blocks and dEQP-GLES3.functional.implementation_limits.max_combined_uniform_blocks to fail on Vulkan drivers that expose > INT_MAX maxPerStageDescriptorUniformBuffers or maxDescriptorSetUniformBuffers limits. Bug: angleproject:3824 Change-Id: I6c5a328ddefa43fedb2361448fe4cbe6c405ef4e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1734786Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 4fdeb8d2
...@@ -34,11 +34,11 @@ enum ...@@ -34,11 +34,11 @@ enum
IMPLEMENTATION_MAX_DRAW_BUFFERS + 2, // 2 extra for depth and/or stencil buffers IMPLEMENTATION_MAX_DRAW_BUFFERS + 2, // 2 extra for depth and/or stencil buffers
IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS = 16, IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS = 16,
IMPLEMENTATION_MAX_GEOMETRY_SHADER_UNIFORM_BUFFERS = 16,
IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS = 16, IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS = 16,
IMPLEMENTATION_MAX_COMPUTE_SHADER_UNIFORM_BUFFERS = 16, IMPLEMENTATION_MAX_COMPUTE_SHADER_UNIFORM_BUFFERS = 16,
IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS = // GL_EXT_geometry_shader increases the minimum value of GL_MAX_COMBINED_UNIFORM_BLOCKS to 36.
IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS + IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS = 36,
IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS,
// GL_EXT_geometry_shader increases the minimum value of GL_MAX_UNIFORM_BUFFER_BINDINGS to 48. // GL_EXT_geometry_shader increases the minimum value of GL_MAX_UNIFORM_BUFFER_BINDINGS to 48.
IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = 48, IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = 48,
......
...@@ -3404,6 +3404,14 @@ void Context::initCaps() ...@@ -3404,6 +3404,14 @@ void Context::initCaps()
LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Vertex], LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Vertex],
IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS); IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS);
LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Geometry],
IMPLEMENTATION_MAX_GEOMETRY_SHADER_UNIFORM_BUFFERS);
LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Fragment],
IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS);
LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Compute],
IMPLEMENTATION_MAX_COMPUTE_SHADER_UNIFORM_BUFFERS);
LimitCap(&mState.mCaps.maxCombinedUniformBlocks,
IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS);
LimitCap(&mState.mCaps.maxUniformBufferBindings, IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS); LimitCap(&mState.mCaps.maxUniformBufferBindings, IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS);
LimitCap(&mState.mCaps.maxVertexOutputComponents, IMPLEMENTATION_MAX_VARYING_VECTORS * 4); LimitCap(&mState.mCaps.maxVertexOutputComponents, IMPLEMENTATION_MAX_VARYING_VECTORS * 4);
......
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