Increase DX11 uniform count to 1024.

TRAC #22243 Signed-off-by: Jamie Madill Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1774 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 254317da
...@@ -58,10 +58,7 @@ class Query; ...@@ -58,10 +58,7 @@ class Query;
enum enum
{ {
D3D9_MAX_FLOAT_CONSTANTS = 256,
MAX_VERTEX_ATTRIBS = 16, MAX_VERTEX_ATTRIBS = 16,
MAX_VERTEX_UNIFORM_VECTORS = D3D9_MAX_FLOAT_CONSTANTS - 2, // Reserve space for dx_HalfPixelSize and dx_DepthRange.
MAX_VARYING_VECTORS_SM2 = 8, MAX_VARYING_VECTORS_SM2 = 8,
MAX_VARYING_VECTORS_SM3 = 10, MAX_VARYING_VECTORS_SM3 = 10,
MAX_TEXTURE_IMAGE_UNITS = 16, MAX_TEXTURE_IMAGE_UNITS = 16,
...@@ -71,8 +68,6 @@ enum ...@@ -71,8 +68,6 @@ enum
IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16, IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16,
IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS, IMPLEMENTATION_MAX_COMBINED_TEXTURE_IMAGE_UNITS = MAX_TEXTURE_IMAGE_UNITS + IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
MAX_FRAGMENT_UNIFORM_VECTORS_SM2 = 32 - 3, // Reserve space for dx_Coord, dx_DepthFront and dx_DepthRange.
MAX_FRAGMENT_UNIFORM_VECTORS_SM3 = 224 - 3,
MAX_DRAW_BUFFERS = 1 MAX_DRAW_BUFFERS = 1
}; };
......
...@@ -236,7 +236,7 @@ void Shader::initializeCompiler() ...@@ -236,7 +236,7 @@ void Shader::initializeCompiler()
ShInitBuiltInResources(&resources); ShInitBuiltInResources(&resources);
resources.MaxVertexAttribs = MAX_VERTEX_ATTRIBS; resources.MaxVertexAttribs = MAX_VERTEX_ATTRIBS;
resources.MaxVertexUniformVectors = MAX_VERTEX_UNIFORM_VECTORS; resources.MaxVertexUniformVectors = mRenderer->getMaxVertexUniformVectors();
resources.MaxVaryingVectors = context->getMaximumVaryingVectors(); resources.MaxVaryingVectors = context->getMaximumVaryingVectors();
resources.MaxVertexTextureImageUnits = mRenderer->getMaxVertexTextureImageUnits(); resources.MaxVertexTextureImageUnits = mRenderer->getMaxVertexTextureImageUnits();
resources.MaxCombinedTextureImageUnits = context->getMaximumCombinedTextureImageUnits(); resources.MaxCombinedTextureImageUnits = context->getMaximumCombinedTextureImageUnits();
......
...@@ -1872,12 +1872,16 @@ unsigned int Renderer11::getMaxVertexTextureImageUnits() const ...@@ -1872,12 +1872,16 @@ unsigned int Renderer11::getMaxVertexTextureImageUnits() const
int Renderer11::getMaxVertexUniformVectors() const int Renderer11::getMaxVertexUniformVectors() const
{ {
return gl::MAX_VERTEX_UNIFORM_VECTORS; META_ASSERT(MAX_VERTEX_UNIFORM_VECTORS_D3D11 <= D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT);
ASSERT(mFeatureLevel >= D3D_FEATURE_LEVEL_10_0);
return MAX_VERTEX_UNIFORM_VECTORS_D3D11;
} }
int Renderer11::getMaxFragmentUniformVectors() const int Renderer11::getMaxFragmentUniformVectors() const
{ {
return getMajorShaderModel() >= 3 ? gl::MAX_FRAGMENT_UNIFORM_VECTORS_SM3 : gl::MAX_FRAGMENT_UNIFORM_VECTORS_SM2; META_ASSERT(MAX_FRAGMENT_UNIFORM_VECTORS_D3D11 <= D3D10_REQ_CONSTANT_BUFFER_ELEMENT_COUNT);
ASSERT(mFeatureLevel >= D3D_FEATURE_LEVEL_10_0);
return MAX_FRAGMENT_UNIFORM_VECTORS_D3D11;
} }
bool Renderer11::getNonPower2TextureSupport() const bool Renderer11::getNonPower2TextureSupport() const
......
...@@ -33,6 +33,12 @@ class VertexDataManager; ...@@ -33,6 +33,12 @@ class VertexDataManager;
class IndexDataManager; class IndexDataManager;
class StreamingIndexBufferInterface; class StreamingIndexBufferInterface;
enum
{
MAX_VERTEX_UNIFORM_VECTORS_D3D11 = 1024,
MAX_FRAGMENT_UNIFORM_VECTORS_D3D11 = 1024
};
class Renderer11 : public Renderer class Renderer11 : public Renderer
{ {
public: public:
......
...@@ -1658,11 +1658,11 @@ void Renderer9::applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray ...@@ -1658,11 +1658,11 @@ void Renderer9::applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray
void Renderer9::applyUniformnbv(gl::Uniform *targetUniform, GLsizei count, int width, const GLboolean *v) void Renderer9::applyUniformnbv(gl::Uniform *targetUniform, GLsizei count, int width, const GLboolean *v)
{ {
float vector[gl::D3D9_MAX_FLOAT_CONSTANTS * 4]; float vector[D3D9_MAX_FLOAT_CONSTANTS * 4];
if (targetUniform->psRegisterIndex >= 0 || targetUniform->vsRegisterIndex >= 0) if (targetUniform->psRegisterIndex >= 0 || targetUniform->vsRegisterIndex >= 0)
{ {
ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS); ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
for (int j = 0; j < 4; j++) for (int j = 0; j < 4; j++)
...@@ -1697,8 +1697,8 @@ void Renderer9::applyUniformnfv(gl::Uniform *targetUniform, const GLfloat *v) ...@@ -1697,8 +1697,8 @@ void Renderer9::applyUniformnfv(gl::Uniform *targetUniform, const GLfloat *v)
void Renderer9::applyUniform1iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v) void Renderer9::applyUniform1iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{ {
ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS); ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS]; gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
...@@ -1710,8 +1710,8 @@ void Renderer9::applyUniform1iv(gl::Uniform *targetUniform, GLsizei count, const ...@@ -1710,8 +1710,8 @@ void Renderer9::applyUniform1iv(gl::Uniform *targetUniform, GLsizei count, const
void Renderer9::applyUniform2iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v) void Renderer9::applyUniform2iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{ {
ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS); ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS]; gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
...@@ -1725,8 +1725,8 @@ void Renderer9::applyUniform2iv(gl::Uniform *targetUniform, GLsizei count, const ...@@ -1725,8 +1725,8 @@ void Renderer9::applyUniform2iv(gl::Uniform *targetUniform, GLsizei count, const
void Renderer9::applyUniform3iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v) void Renderer9::applyUniform3iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{ {
ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS); ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS]; gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
...@@ -1740,8 +1740,8 @@ void Renderer9::applyUniform3iv(gl::Uniform *targetUniform, GLsizei count, const ...@@ -1740,8 +1740,8 @@ void Renderer9::applyUniform3iv(gl::Uniform *targetUniform, GLsizei count, const
void Renderer9::applyUniform4iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v) void Renderer9::applyUniform4iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{ {
ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS); ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS]; gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
...@@ -2242,12 +2242,12 @@ unsigned int Renderer9::getMaxVertexTextureImageUnits() const ...@@ -2242,12 +2242,12 @@ unsigned int Renderer9::getMaxVertexTextureImageUnits() const
int Renderer9::getMaxVertexUniformVectors() const int Renderer9::getMaxVertexUniformVectors() const
{ {
return gl::MAX_VERTEX_UNIFORM_VECTORS; return MAX_VERTEX_UNIFORM_VECTORS;
} }
int Renderer9::getMaxFragmentUniformVectors() const int Renderer9::getMaxFragmentUniformVectors() const
{ {
return getMajorShaderModel() >= 3 ? gl::MAX_FRAGMENT_UNIFORM_VECTORS_SM3 : gl::MAX_FRAGMENT_UNIFORM_VECTORS_SM2; return getMajorShaderModel() >= 3 ? MAX_FRAGMENT_UNIFORM_VECTORS_SM3 : MAX_FRAGMENT_UNIFORM_VECTORS_SM2;
} }
bool Renderer9::getNonPower2TextureSupport() const bool Renderer9::getNonPower2TextureSupport() const
......
...@@ -35,6 +35,14 @@ class VertexDataManager; ...@@ -35,6 +35,14 @@ class VertexDataManager;
class StreamingIndexBufferInterface; class StreamingIndexBufferInterface;
struct TranslatedAttribute; struct TranslatedAttribute;
enum
{
D3D9_MAX_FLOAT_CONSTANTS = 256,
MAX_VERTEX_UNIFORM_VECTORS = D3D9_MAX_FLOAT_CONSTANTS - 2, // Reserve space for dx_HalfPixelSize and dx_DepthRange.
MAX_FRAGMENT_UNIFORM_VECTORS_SM2 = 32 - 3, // Reserve space for dx_Coord, dx_DepthFront and dx_DepthRange.
MAX_FRAGMENT_UNIFORM_VECTORS_SM3 = 224 - 3,
};
class Renderer9 : public Renderer class Renderer9 : public Renderer
{ {
public: public:
......
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