Commit e8cda371 by Shannon Woods

Revert "Move more draw call validation to the API."

BUG=390412 This reverts commit 9efa581d. Conflicts: src/libGLESv2/validationES.cpp Change-Id: I78457e1dfec8b75fecef8dc40c549adbde680a2a Reviewed-on: https://chromium-review.googlesource.com/206340Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Reviewed-by: 's avatarKenneth Russell <kbr@chromium.org> Tested-by: 's avatarShannon Woods <shannonwoods@chromium.org>
parent ce505553
...@@ -1354,11 +1354,6 @@ void Context::setProgramBinary(GLuint program, const void *binary, GLint length) ...@@ -1354,11 +1354,6 @@ void Context::setProgramBinary(GLuint program, const void *binary, GLint length)
} }
GLuint Context::getCurrentProgram() const
{
return mState.currentProgram;
}
void Context::bindTransformFeedback(GLuint transformFeedback) void Context::bindTransformFeedback(GLuint transformFeedback)
{ {
TransformFeedback *transformFeedbackObject = getTransformFeedback(transformFeedback); TransformFeedback *transformFeedbackObject = getTransformFeedback(transformFeedback);
...@@ -1502,7 +1497,7 @@ Buffer *Context::getElementArrayBuffer() const ...@@ -1502,7 +1497,7 @@ Buffer *Context::getElementArrayBuffer() const
return getCurrentVertexArray()->getElementArrayBuffer(); return getCurrentVertexArray()->getElementArrayBuffer();
} }
ProgramBinary *Context::getCurrentProgramBinary() const ProgramBinary *Context::getCurrentProgramBinary()
{ {
return mCurrentProgramBinary.get(); return mCurrentProgramBinary.get();
} }
...@@ -2852,7 +2847,10 @@ void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, ...@@ -2852,7 +2847,10 @@ void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instances) void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instances)
{ {
ASSERT(mState.currentProgram); if (!mState.currentProgram)
{
return gl::error(GL_INVALID_OPERATION);
}
ProgramBinary *programBinary = getCurrentProgramBinary(); ProgramBinary *programBinary = getCurrentProgramBinary();
programBinary->applyUniforms(); programBinary->applyUniforms();
...@@ -2903,6 +2901,11 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instan ...@@ -2903,6 +2901,11 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instan
return; return;
} }
if (!programBinary->validateSamplers(NULL))
{
return gl::error(GL_INVALID_OPERATION);
}
if (!skipDraw(mode)) if (!skipDraw(mode))
{ {
mRenderer->drawArrays(mode, count, instances, transformFeedbackActive); mRenderer->drawArrays(mode, count, instances, transformFeedbackActive);
...@@ -2916,7 +2919,16 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instan ...@@ -2916,7 +2919,16 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count, GLsizei instan
void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instances) void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instances)
{ {
ASSERT(mState.currentProgram); if (!mState.currentProgram)
{
return gl::error(GL_INVALID_OPERATION);
}
VertexArray *vao = getCurrentVertexArray();
if (!indices && !vao->getElementArrayBuffer())
{
return gl::error(GL_INVALID_OPERATION);
}
ProgramBinary *programBinary = getCurrentProgramBinary(); ProgramBinary *programBinary = getCurrentProgramBinary();
programBinary->applyUniforms(); programBinary->applyUniforms();
...@@ -2946,7 +2958,6 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid ...@@ -2946,7 +2958,6 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid
applyState(mode); applyState(mode);
VertexArray *vao = getCurrentVertexArray();
rx::TranslatedIndexData indexInfo; rx::TranslatedIndexData indexInfo;
GLenum err = mRenderer->applyIndexBuffer(indices, vao->getElementArrayBuffer(), count, mode, type, &indexInfo); GLenum err = mRenderer->applyIndexBuffer(indices, vao->getElementArrayBuffer(), count, mode, type, &indexInfo);
if (err != GL_NO_ERROR) if (err != GL_NO_ERROR)
...@@ -2979,6 +2990,11 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid ...@@ -2979,6 +2990,11 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid
return; return;
} }
if (!programBinary->validateSamplers(NULL))
{
return gl::error(GL_INVALID_OPERATION);
}
if (!skipDraw(mode)) if (!skipDraw(mode))
{ {
mRenderer->drawElements(mode, count, type, indices, vao->getElementArrayBuffer(), indexInfo, instances); mRenderer->drawElements(mode, count, type, indices, vao->getElementArrayBuffer(), indexInfo, instances);
......
...@@ -306,7 +306,6 @@ class Context ...@@ -306,7 +306,6 @@ class Context
void useProgram(GLuint program); void useProgram(GLuint program);
void linkProgram(GLuint program); void linkProgram(GLuint program);
void setProgramBinary(GLuint program, const void *binary, GLint length); void setProgramBinary(GLuint program, const void *binary, GLint length);
GLuint getCurrentProgram() const;
void bindTransformFeedback(GLuint transformFeedback); void bindTransformFeedback(GLuint transformFeedback);
void beginQuery(GLenum target, GLuint query); void beginQuery(GLenum target, GLuint query);
...@@ -342,7 +341,7 @@ class Context ...@@ -342,7 +341,7 @@ class Context
Buffer *getTargetBuffer(GLenum target) const; Buffer *getTargetBuffer(GLenum target) const;
Buffer *getArrayBuffer(); Buffer *getArrayBuffer();
Buffer *getElementArrayBuffer() const; Buffer *getElementArrayBuffer() const;
ProgramBinary *getCurrentProgramBinary() const; ProgramBinary *getCurrentProgramBinary();
Texture *getTargetTexture(GLenum target) const; Texture *getTargetTexture(GLenum target) const;
Texture2D *getTexture2D() const; Texture2D *getTexture2D() const;
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include "libGLESv2/Query.h" #include "libGLESv2/Query.h"
#include "libGLESv2/ProgramBinary.h" #include "libGLESv2/ProgramBinary.h"
#include "libGLESv2/TransformFeedback.h" #include "libGLESv2/TransformFeedback.h"
#include "libGLESv2/VertexArray.h"
#include "common/mathutil.h" #include "common/mathutil.h"
#include "common/utilities.h" #include "common/utilities.h"
...@@ -1327,17 +1326,6 @@ static bool ValidateDrawBase(const gl::Context *context, GLenum mode, GLsizei co ...@@ -1327,17 +1326,6 @@ static bool ValidateDrawBase(const gl::Context *context, GLenum mode, GLsizei co
return gl::error(GL_INVALID_OPERATION, false); return gl::error(GL_INVALID_OPERATION, false);
} }
if (!context->getCurrentProgram())
{
return gl::error(GL_INVALID_OPERATION, false);
}
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary->validateSamplers(NULL))
{
return gl::error(GL_INVALID_OPERATION, false);
}
const gl::Framebuffer *fbo = context->getDrawFramebuffer(); const gl::Framebuffer *fbo = context->getDrawFramebuffer();
if (!fbo || fbo->completeness() != GL_FRAMEBUFFER_COMPLETE) if (!fbo || fbo->completeness() != GL_FRAMEBUFFER_COMPLETE)
{ {
...@@ -1420,12 +1408,6 @@ bool ValidateDrawElements(const gl::Context *context, GLenum mode, GLsizei count ...@@ -1420,12 +1408,6 @@ bool ValidateDrawElements(const gl::Context *context, GLenum mode, GLsizei count
return gl::error(GL_INVALID_OPERATION, false); return gl::error(GL_INVALID_OPERATION, false);
} }
gl::VertexArray *vao = context->getCurrentVertexArray();
if (!indices && !vao->getElementArrayBuffer())
{
return gl::error(GL_INVALID_OPERATION, false);
}
if (!ValidateDrawBase(context, mode, count)) if (!ValidateDrawBase(context, mode, count))
{ {
return false; return false;
......
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