Add caps for transform feedback limits from table 6.34.
BUG=angle:658
Change-Id: Ifd8c620080c8de486ffb7c8f9e985be1aba516c1
Reviewed-on: https://chromium-review.googlesource.com/207376
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 8c2eb4a..8920d8e 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -2228,8 +2228,9 @@
std::vector<LinkedVarying> *outTransformFeedbackLinkedVaryings) const
{
size_t totalComponents = 0;
- const size_t maxSeparateComponents = mRenderer->getMaxTransformFeedbackSeparateComponents();
- const size_t maxInterleavedComponents = mRenderer->getMaxTransformFeedbackInterleavedComponents();
+
+ // TODO (geofflang): Use context's caps.
+ const gl::Caps &caps = mRenderer->getRendererCaps();
// Gather the linked varyings that are used for transform feedback, they should all exist.
outTransformFeedbackLinkedVaryings->clear();
@@ -2251,10 +2252,10 @@
size_t componentCount = linkedVaryings[j].semanticIndexCount * 4;
if (transformFeedbackBufferMode == GL_SEPARATE_ATTRIBS &&
- componentCount > maxSeparateComponents)
+ componentCount > caps.maxTransformFeedbackSeparateComponents)
{
infoLog.append("Transform feedback varying's %s components (%u) exceed the maximum separate components (%u).",
- linkedVaryings[j].name.c_str(), componentCount, maxSeparateComponents);
+ linkedVaryings[j].name.c_str(), componentCount, caps.maxTransformFeedbackSeparateComponents);
return false;
}
@@ -2270,10 +2271,10 @@
ASSERT(found);
}
- if (transformFeedbackBufferMode == GL_INTERLEAVED_ATTRIBS && totalComponents > maxInterleavedComponents)
+ if (transformFeedbackBufferMode == GL_INTERLEAVED_ATTRIBS && totalComponents > caps.maxTransformFeedbackInterleavedComponents)
{
infoLog.append("Transform feedback varying total components (%u) exceed the maximum interleaved components (%u).",
- totalComponents, maxInterleavedComponents);
+ totalComponents, caps.maxTransformFeedbackInterleavedComponents);
return false;
}