Increase the varying register count to what the feature level supports.
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@1775 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index f0d6ef9..287b23e 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -147,6 +147,7 @@
virtual unsigned int getMaxVertexTextureImageUnits() const = 0;
virtual int getMaxVertexUniformVectors() const = 0;
virtual int getMaxFragmentUniformVectors() const = 0;
+ virtual int getMaxVaryingVectors() const = 0;
virtual bool getNonPower2TextureSupport() const = 0;
virtual bool getDepthTextureSupport() const = 0;
virtual bool getOcclusionQuerySupport() const = 0;
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index fe19655..5e5cfd0 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -1884,6 +1884,21 @@
return MAX_FRAGMENT_UNIFORM_VECTORS_D3D11;
}
+int Renderer11::getMaxVaryingVectors() const
+{
+ META_ASSERT(gl::IMPLEMENTATION_MAX_VARYING_VECTORS == D3D11_VS_OUTPUT_REGISTER_COUNT);
+ switch (mFeatureLevel)
+ {
+ case D3D_FEATURE_LEVEL_11_0:
+ return D3D11_VS_OUTPUT_REGISTER_COUNT;
+ case D3D_FEATURE_LEVEL_10_1:
+ case D3D_FEATURE_LEVEL_10_0:
+ return D3D10_VS_OUTPUT_REGISTER_COUNT;
+ default: UNREACHABLE();
+ return 0;
+ }
+}
+
bool Renderer11::getNonPower2TextureSupport() const
{
// TODO
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index 8f37e6e..097d4c4 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -107,6 +107,7 @@
virtual unsigned int getMaxVertexTextureImageUnits() const;
virtual int getMaxVertexUniformVectors() const;
virtual int getMaxFragmentUniformVectors() const;
+ virtual int getMaxVaryingVectors() const;
virtual bool getNonPower2TextureSupport() const;
virtual bool getDepthTextureSupport() const;
virtual bool getOcclusionQuerySupport() const;
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index 107d8f2..312c0cc 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -2250,6 +2250,11 @@
return getMajorShaderModel() >= 3 ? MAX_FRAGMENT_UNIFORM_VECTORS_SM3 : MAX_FRAGMENT_UNIFORM_VECTORS_SM2;
}
+int Renderer9::getMaxVaryingVectors() const
+{
+ return getMajorShaderModel() >= 3 ? MAX_VARYING_VECTORS_SM3 : MAX_VARYING_VECTORS_SM2;
+}
+
bool Renderer9::getNonPower2TextureSupport() const
{
return mSupportsNonPower2Textures;
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index df026bf..9714b3e 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -41,6 +41,8 @@
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,
+ MAX_VARYING_VECTORS_SM2 = 8,
+ MAX_VARYING_VECTORS_SM3 = 10
};
class Renderer9 : public Renderer
@@ -134,6 +136,7 @@
virtual unsigned int getMaxVertexTextureImageUnits() const;
virtual int getMaxVertexUniformVectors() const;
virtual int getMaxFragmentUniformVectors() const;
+ virtual int getMaxVaryingVectors() const;
virtual bool getNonPower2TextureSupport() const;
virtual bool getDepthTextureSupport() const;
virtual bool getOcclusionQuerySupport() const;