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
diff --git a/src/libGLESv2/Context.h b/src/libGLESv2/Context.h
index 1aa102f..2ce9943 100644
--- a/src/libGLESv2/Context.h
+++ b/src/libGLESv2/Context.h
@@ -58,10 +58,7 @@
enum
{
- D3D9_MAX_FLOAT_CONSTANTS = 256,
-
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_SM3 = 10,
MAX_TEXTURE_IMAGE_UNITS = 16,
@@ -71,8 +68,6 @@
IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 16,
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
};
diff --git a/src/libGLESv2/Shader.cpp b/src/libGLESv2/Shader.cpp
index 4146c5d..3390a75 100644
--- a/src/libGLESv2/Shader.cpp
+++ b/src/libGLESv2/Shader.cpp
@@ -236,7 +236,7 @@
ShInitBuiltInResources(&resources);
resources.MaxVertexAttribs = MAX_VERTEX_ATTRIBS;
- resources.MaxVertexUniformVectors = MAX_VERTEX_UNIFORM_VECTORS;
+ resources.MaxVertexUniformVectors = mRenderer->getMaxVertexUniformVectors();
resources.MaxVaryingVectors = context->getMaximumVaryingVectors();
resources.MaxVertexTextureImageUnits = mRenderer->getMaxVertexTextureImageUnits();
resources.MaxCombinedTextureImageUnits = context->getMaximumCombinedTextureImageUnits();
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index fbf0c99..fe19655 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -1872,12 +1872,16 @@
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
{
- 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
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index 756694c..8f37e6e 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -33,6 +33,12 @@
class IndexDataManager;
class StreamingIndexBufferInterface;
+enum
+{
+ MAX_VERTEX_UNIFORM_VECTORS_D3D11 = 1024,
+ MAX_FRAGMENT_UNIFORM_VECTORS_D3D11 = 1024
+};
+
class Renderer11 : public Renderer
{
public:
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index f3c949e..107d8f2 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -1658,11 +1658,11 @@
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)
{
- ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS);
+ ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
for (int i = 0; i < count; i++)
{
for (int j = 0; j < 4; j++)
@@ -1697,8 +1697,8 @@
void Renderer9::applyUniform1iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{
- ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS);
- gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS];
+ ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
+ gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++)
{
@@ -1710,8 +1710,8 @@
void Renderer9::applyUniform2iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{
- ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS);
- gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS];
+ ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
+ gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++)
{
@@ -1725,8 +1725,8 @@
void Renderer9::applyUniform3iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{
- ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS);
- gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS];
+ ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
+ gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++)
{
@@ -1740,8 +1740,8 @@
void Renderer9::applyUniform4iv(gl::Uniform *targetUniform, GLsizei count, const GLint *v)
{
- ASSERT(count <= gl::D3D9_MAX_FLOAT_CONSTANTS);
- gl::Vector4 vector[gl::D3D9_MAX_FLOAT_CONSTANTS];
+ ASSERT(count <= D3D9_MAX_FLOAT_CONSTANTS);
+ gl::Vector4 vector[D3D9_MAX_FLOAT_CONSTANTS];
for (int i = 0; i < count; i++)
{
@@ -2242,12 +2242,12 @@
int Renderer9::getMaxVertexUniformVectors() const
{
- return gl::MAX_VERTEX_UNIFORM_VECTORS;
+ return MAX_VERTEX_UNIFORM_VECTORS;
}
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
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index 4eb582e..df026bf 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -35,6 +35,14 @@
class StreamingIndexBufferInterface;
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
{
public: