Ensure we have enough space in our reported max uniform buffer counts for our…

Ensure we have enough space in our reported max uniform buffer counts for our dedicated internal constant buffers. TRAC #22892 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods Author: Jamie Madill git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2337 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 7923dd2b
......@@ -173,6 +173,8 @@ class Renderer
virtual unsigned int getMaxVaryingVectors() const = 0;
virtual unsigned int getMaxVertexShaderUniformBuffers() const = 0;
virtual unsigned int getMaxFragmentShaderUniformBuffers() const = 0;
virtual unsigned int getReservedVertexUniformBuffers() const = 0;
virtual unsigned int getReservedFragmentUniformBuffers() const = 0;
virtual unsigned int getMaxTransformFeedbackBuffers() const = 0;
virtual unsigned int getMaxUniformBufferSize() const = 0;
virtual bool getNonPower2TextureSupport() const = 0;
......
......@@ -2187,10 +2187,10 @@ unsigned int Renderer11::getMaxVertexShaderUniformBuffers() const
switch (mFeatureLevel)
{
case D3D_FEATURE_LEVEL_11_0:
return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT;
return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - getReservedVertexUniformBuffers();
case D3D_FEATURE_LEVEL_10_1:
case D3D_FEATURE_LEVEL_10_0:
return D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT;
return D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - getReservedVertexUniformBuffers();
default: UNREACHABLE();
return 0;
}
......@@ -2204,15 +2204,27 @@ unsigned int Renderer11::getMaxFragmentShaderUniformBuffers() const
switch (mFeatureLevel)
{
case D3D_FEATURE_LEVEL_11_0:
return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT;
return D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - getReservedFragmentUniformBuffers();
case D3D_FEATURE_LEVEL_10_1:
case D3D_FEATURE_LEVEL_10_0:
return D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT;
return D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - getReservedFragmentUniformBuffers();
default: UNREACHABLE();
return 0;
}
}
unsigned int Renderer11::getReservedVertexUniformBuffers() const
{
// we reserve one buffer for the application uniforms, and one for driver uniforms
return 2;
}
unsigned int Renderer11::getReservedFragmentUniformBuffers() const
{
// we reserve one buffer for the application uniforms, and one for driver uniforms
return 2;
}
unsigned int Renderer11::getMaxTransformFeedbackBuffers() const
{
META_ASSERT(gl::IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_BUFFERS >= D3D11_SO_BUFFER_SLOT_COUNT &&
......
......@@ -114,6 +114,8 @@ class Renderer11 : public Renderer
virtual unsigned int getMaxVaryingVectors() const;
virtual unsigned int getMaxVertexShaderUniformBuffers() const;
virtual unsigned int getMaxFragmentShaderUniformBuffers() const;
virtual unsigned int getReservedVertexUniformBuffers() const;
virtual unsigned int getReservedFragmentUniformBuffers() const;
virtual unsigned int getMaxTransformFeedbackBuffers() const;
virtual unsigned int getMaxUniformBufferSize() const;
virtual bool getNonPower2TextureSupport() const;
......
......@@ -2331,6 +2331,16 @@ unsigned int Renderer9::getMaxFragmentShaderUniformBuffers() const
return 0;
}
unsigned int Renderer9::getReservedVertexUniformBuffers() const
{
return 0;
}
unsigned int Renderer9::getReservedFragmentUniformBuffers() const
{
return 0;
}
unsigned int Renderer9::getMaxTransformFeedbackBuffers() const
{
return 0;
......
......@@ -129,6 +129,8 @@ class Renderer9 : public Renderer
virtual unsigned int getMaxVaryingVectors() const;
virtual unsigned int getMaxVertexShaderUniformBuffers() const;
virtual unsigned int getMaxFragmentShaderUniformBuffers() const;
virtual unsigned int getReservedVertexUniformBuffers() const;
virtual unsigned int getReservedFragmentUniformBuffers() const;
virtual unsigned int getMaxTransformFeedbackBuffers() const;
virtual unsigned int getMaxUniformBufferSize() const;
virtual bool getNonPower2TextureSupport() const;
......
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