Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(589)

Unified Diff: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp

Issue 2065843003: Remove transform feedback validation in Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix transform feedback status query Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
index b469fd404e1cc4722b6625d87c81252bd79f791a..d5e7e4564c6d80ded84553fcb7317d1744f22790 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
@@ -1382,11 +1382,6 @@ void WebGL2RenderingContextBase::drawElementsInstanced(GLenum mode, GLsizei coun
return;
}
- if (transformFeedbackActive() && !transformFeedbackPaused()) {
- synthesizeGLError(GL_INVALID_OPERATION, "drawElementsInstanced", "transform feedback is active and not paused");
- return;
- }
-
ScopedRGBEmulationColorMask emulationColorMask(contextGL(), m_colorMask, m_drawingBuffer.get());
clearIfComposited();
contextGL()->DrawElementsInstancedANGLE(mode, count, type, reinterpret_cast<void*>(static_cast<intptr_t>(offset)), instanceCount);
@@ -1403,11 +1398,6 @@ void WebGL2RenderingContextBase::drawRangeElements(GLenum mode, GLuint start, GL
return;
}
- if (transformFeedbackActive() && !transformFeedbackPaused()) {
- synthesizeGLError(GL_INVALID_OPERATION, "drawRangeElements", "transform feedback is active and not paused");
- return;
- }
-
ScopedRGBEmulationColorMask emulationColorMask(contextGL(), m_colorMask, m_drawingBuffer.get());
clearIfComposited();
contextGL()->DrawRangeElements(mode, start, end, count, type, reinterpret_cast<void*>(static_cast<intptr_t>(offset)));
@@ -2007,10 +1997,6 @@ WebGLTransformFeedback* WebGL2RenderingContextBase::createTransformFeedback()
void WebGL2RenderingContextBase::deleteTransformFeedback(WebGLTransformFeedback* feedback)
{
- if (transformFeedbackActive()) {
- synthesizeGLError(GL_INVALID_OPERATION, "deleteTransformFeedback", "transform feedback is active");
- return;
- }
if (feedback == m_transformFeedbackBinding)
m_transformFeedbackBinding = nullptr;
@@ -2043,11 +2029,6 @@ void WebGL2RenderingContextBase::bindTransformFeedback(ScriptState* scriptState,
return;
}
- if (transformFeedbackActive() && !transformFeedbackPaused()) {
- synthesizeGLError(GL_INVALID_OPERATION, "bindTransformFeedback", "transform feedback is active and not paused");
- return;
- }
-
m_transformFeedbackBinding = feedback;
contextGL()->BindTransformFeedback(target, objectOrZero(feedback));
@@ -2065,19 +2046,8 @@ void WebGL2RenderingContextBase::beginTransformFeedback(GLenum primitiveMode)
if (!validateTransformFeedbackPrimitiveMode("beginTransformFeedback", primitiveMode))
return;
- if (transformFeedbackActive()) {
- synthesizeGLError(GL_INVALID_OPERATION, "beginTransformFeedback", "transform feedback is active");
- return;
- }
-
contextGL()->BeginTransformFeedback(primitiveMode);
- // TODO(kbr): there are many more reasons BeginTransformFeedback may fail, the most
- // problematic being "if any binding point used in transform feedback mode does not
- // have a buffer object bound", and "if no binding points would be used".
- // crbug.com/448164
- setTransformFeedbackActive(true);
-
if (m_currentProgram)
m_currentProgram->increaseActiveTransformFeedbackCount();
@@ -2090,16 +2060,8 @@ void WebGL2RenderingContextBase::endTransformFeedback()
if (isContextLost())
return;
- if (!transformFeedbackActive()) {
- synthesizeGLError(GL_INVALID_OPERATION, "endTransformFeedback", "transform feedback is not active");
- return;
- }
-
contextGL()->EndTransformFeedback();
- setTransformFeedbackPaused(false);
- setTransformFeedbackActive(false);
-
if (m_currentProgram)
m_currentProgram->decreaseActiveTransformFeedbackCount();
}
@@ -2172,14 +2134,7 @@ void WebGL2RenderingContextBase::pauseTransformFeedback()
if (isContextLost())
return;
- if (!transformFeedbackActive() || transformFeedbackPaused()) {
- synthesizeGLError(GL_INVALID_OPERATION, "pauseTransformFeedback", "transform feedback is not active or is paused");
- return;
- }
-
contextGL()->PauseTransformFeedback();
-
- setTransformFeedbackPaused(true);
}
void WebGL2RenderingContextBase::resumeTransformFeedback()
@@ -2187,19 +2142,12 @@ void WebGL2RenderingContextBase::resumeTransformFeedback()
if (isContextLost())
return;
- if (!transformFeedbackActive() || !transformFeedbackPaused()) {
- synthesizeGLError(GL_INVALID_OPERATION, "resumeTransformFeedback", "transform feedback is not active or is not paused");
- return;
- }
-
if (m_transformFeedbackBinding && m_transformFeedbackBinding->getProgram() != m_currentProgram) {
synthesizeGLError(GL_INVALID_OPERATION, "resumeTransformFeedback", "the program object is not active");
return;
}
contextGL()->ResumeTransformFeedback();
-
- setTransformFeedbackPaused(false);
}
bool WebGL2RenderingContextBase::validateTransformFeedbackPrimitiveMode(const char* functionName, GLenum primitiveMode)
@@ -2227,12 +2175,6 @@ void WebGL2RenderingContextBase::bindBufferBase(GLenum target, GLuint index, Web
if (!validateAndUpdateBufferBindBaseTarget("bindBufferBase", target, index, buffer))
return;
- // ES 3.0.4 spec section 2.15.2 "Transform Feedback Primitive Capture"
- if (target == GL_TRANSFORM_FEEDBACK_BUFFER && transformFeedbackActive()) {
- synthesizeGLError(GL_INVALID_OPERATION, "bindBufferBase", "target is TRANSFORM_FEEDBACK_BUFFER and transform feedback is active");
- return;
- }
-
contextGL()->BindBufferBase(target, index, objectOrZero(buffer));
}
@@ -2250,44 +2192,12 @@ void WebGL2RenderingContextBase::bindBufferRange(GLenum target, GLuint index, We
return;
}
- // ES 3.0.4 spec section 2.15.2 "Transform Feedback Primitive Capture"
- if (target == GL_TRANSFORM_FEEDBACK_BUFFER && transformFeedbackActive()) {
- synthesizeGLError(GL_INVALID_OPERATION, "bindBufferRange", "target is TRANSFORM_FEEDBACK_BUFFER and transform feedback is active");
- return;
- }
-
if (!validateAndUpdateBufferBindBaseTarget("bindBufferRange", target, index, buffer))
return;
contextGL()->BindBufferRange(target, index, objectOrZero(buffer), static_cast<GLintptr>(offset), static_cast<GLsizeiptr>(size));
}
-bool WebGL2RenderingContextBase::transformFeedbackActive() const
-{
- if (m_transformFeedbackBinding)
- return m_transformFeedbackBinding->isActive();
- return false;
-}
-
-bool WebGL2RenderingContextBase::transformFeedbackPaused() const
-{
- if (m_transformFeedbackBinding)
- return m_transformFeedbackBinding->isPaused();
- return false;
-}
-
-void WebGL2RenderingContextBase::setTransformFeedbackActive(bool transformFeedbackActive)
-{
- if (m_transformFeedbackBinding)
- m_transformFeedbackBinding->setActive(transformFeedbackActive);
-}
-
-void WebGL2RenderingContextBase::setTransformFeedbackPaused(bool transformFeedbackPaused)
-{
- if (m_transformFeedbackBinding)
- m_transformFeedbackBinding->setPaused(transformFeedbackPaused);
-}
-
ScriptValue WebGL2RenderingContextBase::getIndexedParameter(ScriptState* scriptState, GLenum target, GLuint index)
{
if (isContextLost())
@@ -2735,13 +2645,13 @@ ScriptValue WebGL2RenderingContextBase::getParameter(ScriptState* scriptState, G
case GL_TEXTURE_BINDING_3D:
return WebGLAny(scriptState, m_textureUnits[m_activeTextureUnit].m_texture3DBinding.get());
case GL_TRANSFORM_FEEDBACK_ACTIVE:
- return WebGLAny(scriptState, transformFeedbackActive());
+ return getBooleanParameter(scriptState, pname);
case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
return WebGLAny(scriptState, m_boundTransformFeedbackBuffer.get());
case GL_TRANSFORM_FEEDBACK_BINDING:
return WebGLAny(scriptState, m_transformFeedbackBinding.get());
case GL_TRANSFORM_FEEDBACK_PAUSED:
- return WebGLAny(scriptState, transformFeedbackPaused());
+ return getBooleanParameter(scriptState, pname);
case GL_UNIFORM_BUFFER_BINDING:
return WebGLAny(scriptState, m_boundUniformBuffer.get());
case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT:

Powered by Google App Engine
This is Rietveld 408576698