Move implementation of hasMappedBuffer to State.
Refactoring patch only.
BUG=angle:571
Change-Id: Ib9f3145eaa457d94e488fd42eb4c4b9133768996
Reviewed-on: https://chromium-review.googlesource.com/210643
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index e6db5a1..a16a13f 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -2453,33 +2453,6 @@
}
}
-bool Context::hasMappedBuffer(GLenum target) const
-{
- if (target == GL_ARRAY_BUFFER)
- {
- for (unsigned int attribIndex = 0; attribIndex < gl::MAX_VERTEX_ATTRIBS; attribIndex++)
- {
- const gl::VertexAttribute &vertexAttrib = mState.getVertexAttribState(attribIndex);
- gl::Buffer *boundBuffer = vertexAttrib.buffer.get();
- if (vertexAttrib.enabled && boundBuffer && boundBuffer->isMapped())
- {
- return true;
- }
- }
- }
- else if (target == GL_ELEMENT_ARRAY_BUFFER)
- {
- Buffer *elementBuffer = mState.getTargetBuffer(target);
- return (elementBuffer && elementBuffer->isMapped());
- }
- else if (target == GL_TRANSFORM_FEEDBACK_BUFFER)
- {
- UNIMPLEMENTED();
- }
- else UNREACHABLE();
- return false;
-}
-
void Context::initCaps(GLuint clientVersion)
{
mCaps = mRenderer->getRendererCaps();
diff --git a/src/libGLESv2/Context.h b/src/libGLESv2/Context.h
index 9ad4320..eb2e287 100644
--- a/src/libGLESv2/Context.h
+++ b/src/libGLESv2/Context.h
@@ -230,8 +230,6 @@
void invalidateFrameBuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments,
GLint x, GLint y, GLsizei width, GLsizei height);
- bool hasMappedBuffer(GLenum target) const;
-
rx::Renderer *getRenderer() { return mRenderer; }
State &getState() { return mState; }
diff --git a/src/libGLESv2/State.cpp b/src/libGLESv2/State.cpp
index 19b5189..07e198c 100644
--- a/src/libGLESv2/State.cpp
+++ b/src/libGLESv2/State.cpp
@@ -1412,4 +1412,27 @@
return true;
}
+bool State::hasMappedBuffer(GLenum target) const
+{
+ if (target == GL_ARRAY_BUFFER)
+ {
+ for (unsigned int attribIndex = 0; attribIndex < gl::MAX_VERTEX_ATTRIBS; attribIndex++)
+ {
+ const gl::VertexAttribute &vertexAttrib = getVertexAttribState(attribIndex);
+ gl::Buffer *boundBuffer = vertexAttrib.buffer.get();
+ if (vertexAttrib.enabled && boundBuffer && boundBuffer->isMapped())
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ else
+ {
+ Buffer *buffer = getTargetBuffer(target);
+ return (buffer && buffer->isMapped());
+ }
+}
+
}
diff --git a/src/libGLESv2/State.h b/src/libGLESv2/State.h
index 09be0b3..d3b3edc 100644
--- a/src/libGLESv2/State.h
+++ b/src/libGLESv2/State.h
@@ -238,6 +238,8 @@
bool getIndexedIntegerv(GLenum target, GLuint index, GLint *data);
bool getIndexedInteger64v(GLenum target, GLuint index, GLint64 *data);
+ bool hasMappedBuffer(GLenum target) const;
+
private:
DISALLOW_COPY_AND_ASSIGN(State);
diff --git a/src/libGLESv2/validationES.cpp b/src/libGLESv2/validationES.cpp
index d608ee6..7688780 100644
--- a/src/libGLESv2/validationES.cpp
+++ b/src/libGLESv2/validationES.cpp
@@ -1301,7 +1301,7 @@
return true;
}
-static bool ValidateDrawBase(const gl::Context *context, GLenum mode, GLsizei count)
+static bool ValidateDrawBase(const gl::State &state, GLenum mode, GLsizei count)
{
switch (mode)
{
@@ -1323,14 +1323,14 @@
}
// Check for mapped buffers
- if (context->hasMappedBuffer(GL_ARRAY_BUFFER))
+ if (state.hasMappedBuffer(GL_ARRAY_BUFFER))
{
return gl::error(GL_INVALID_OPERATION, false);
}
- const gl::DepthStencilState &depthStencilState = context->getState().getDepthStencilState();
+ const gl::DepthStencilState &depthStencilState = state.getDepthStencilState();
if (depthStencilState.stencilWritemask != depthStencilState.stencilBackWritemask ||
- context->getState().getStencilRef() != context->getState().getStencilBackRef() ||
+ state.getStencilRef() != state.getStencilBackRef() ||
depthStencilState.stencilMask != depthStencilState.stencilBackMask)
{
// Note: these separate values are not supported in WebGL, due to D3D's limitations.
@@ -1340,18 +1340,18 @@
return gl::error(GL_INVALID_OPERATION, false);
}
- const gl::Framebuffer *fbo = context->getState().getDrawFramebuffer();
+ const gl::Framebuffer *fbo = state.getDrawFramebuffer();
if (!fbo || fbo->completeness() != GL_FRAMEBUFFER_COMPLETE)
{
return gl::error(GL_INVALID_FRAMEBUFFER_OPERATION, false);
}
- if (context->getState().getCurrentProgramId() == 0)
+ if (state.getCurrentProgramId() == 0)
{
return gl::error(GL_INVALID_OPERATION, false);
}
- gl::ProgramBinary *programBinary = context->getState().getCurrentProgramBinary();
+ gl::ProgramBinary *programBinary = state.getCurrentProgramBinary();
if (!programBinary->validateSamplers(NULL))
{
return gl::error(GL_INVALID_OPERATION, false);
@@ -1368,7 +1368,8 @@
return gl::error(GL_INVALID_VALUE, false);
}
- gl::TransformFeedback *curTransformFeedback = context->getState().getCurrentTransformFeedback();
+ const State &state = context->getState();
+ gl::TransformFeedback *curTransformFeedback = state.getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isStarted() && !curTransformFeedback->isPaused() &&
curTransformFeedback->getDrawMode() != mode)
{
@@ -1378,7 +1379,7 @@
return gl::error(GL_INVALID_OPERATION, false);
}
- if (!ValidateDrawBase(context, mode, count))
+ if (!ValidateDrawBase(state, mode, count))
{
return false;
}
@@ -1419,7 +1420,9 @@
return gl::error(GL_INVALID_ENUM, false);
}
- gl::TransformFeedback *curTransformFeedback = context->getState().getCurrentTransformFeedback();
+ const State &state = context->getState();
+
+ gl::TransformFeedback *curTransformFeedback = state.getCurrentTransformFeedback();
if (curTransformFeedback && curTransformFeedback->isStarted() && !curTransformFeedback->isPaused())
{
// It is an invalid operation to call DrawElements, DrawRangeElements or DrawElementsInstanced
@@ -1428,18 +1431,18 @@
}
// Check for mapped buffers
- if (context->hasMappedBuffer(GL_ELEMENT_ARRAY_BUFFER))
+ if (state.hasMappedBuffer(GL_ELEMENT_ARRAY_BUFFER))
{
return gl::error(GL_INVALID_OPERATION, false);
}
- gl::VertexArray *vao = context->getState().getVertexArray();
+ gl::VertexArray *vao = state.getVertexArray();
if (!indices && !vao->getElementArrayBuffer())
{
return gl::error(GL_INVALID_OPERATION, false);
}
- if (!ValidateDrawBase(context, mode, count))
+ if (!ValidateDrawBase(state, mode, count))
{
return false;
}