Commit c1d770e8 by Jamie Madill Committed by Commit Bot

Refactor remaining GLES 2.0 entry points.

This will pave the way for several features, like auto-generation. BUG=angleproject:747 Change-Id: Ic390ac412f4e6b61346629093f185a4c07ea0284 Reviewed-on: https://chromium-review.googlesource.com/474118 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
parent 3c68079c
...@@ -237,8 +237,11 @@ class Context final : public ValidationContext ...@@ -237,8 +237,11 @@ class Context final : public ValidationContext
bool isTransformFeedbackGenerated(GLuint vertexArray); bool isTransformFeedbackGenerated(GLuint vertexArray);
void getBooleanv(GLenum pname, GLboolean *params); void getBooleanv(GLenum pname, GLboolean *params);
void getBooleanvImpl(GLenum pname, GLboolean *params);
void getFloatv(GLenum pname, GLfloat *params); void getFloatv(GLenum pname, GLfloat *params);
void getFloatvImpl(GLenum pname, GLfloat *params);
void getIntegerv(GLenum pname, GLint *params); void getIntegerv(GLenum pname, GLint *params);
void getIntegervImpl(GLenum pname, GLint *params);
void getInteger64v(GLenum pname, GLint64 *params); void getInteger64v(GLenum pname, GLint64 *params);
void getPointerv(GLenum pname, void **params) const; void getPointerv(GLenum pname, void **params) const;
void getBooleani_v(GLenum target, GLuint index, GLboolean *data); void getBooleani_v(GLenum target, GLuint index, GLboolean *data);
...@@ -669,6 +672,87 @@ class Context final : public ValidationContext ...@@ -669,6 +672,87 @@ class Context final : public ValidationContext
GLintptr writeOffset, GLintptr writeOffset,
GLsizeiptr size); GLsizeiptr size);
GLenum checkFramebufferStatus(GLenum target);
void compileShader(GLuint shader);
void deleteBuffers(GLsizei n, const GLuint *buffers);
void deleteFramebuffers(GLsizei n, const GLuint *framebuffers);
void deleteRenderbuffers(GLsizei n, const GLuint *renderbuffers);
void deleteTextures(GLsizei n, const GLuint *textures);
void detachShader(GLuint program, GLuint shader);
void genBuffers(GLsizei n, GLuint *buffers);
void genFramebuffers(GLsizei n, GLuint *framebuffers);
void genRenderbuffers(GLsizei n, GLuint *renderbuffers);
void genTextures(GLsizei n, GLuint *textures);
void getActiveAttrib(GLuint program,
GLuint index,
GLsizei bufsize,
GLsizei *length,
GLint *size,
GLenum *type,
GLchar *name);
void getActiveUniform(GLuint program,
GLuint index,
GLsizei bufsize,
GLsizei *length,
GLint *size,
GLenum *type,
GLchar *name);
void getAttachedShaders(GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders);
GLint getAttribLocation(GLuint program, const GLchar *name);
void getProgramiv(GLuint program, GLenum pname, GLint *params);
void getInfoLog(GLuint program, GLsizei bufsize, GLsizei *length, GLchar *infolog);
void getShaderiv(GLuint shader, GLenum pname, GLint *params);
void getShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *infolog);
void getShaderPrecisionFormat(GLenum shadertype,
GLenum precisiontype,
GLint *range,
GLint *precision);
void getShaderSource(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source);
void getUniformfv(GLuint program, GLint location, GLfloat *params);
void getUniformiv(GLuint program, GLint location, GLint *params);
GLint getUniformLocation(GLuint program, const GLchar *name);
GLboolean isBuffer(GLuint buffer);
GLboolean isEnabled(GLenum cap);
GLboolean isFramebuffer(GLuint framebuffer);
GLboolean isProgram(GLuint program);
GLboolean isRenderbuffer(GLuint renderbuffer);
GLboolean isShader(GLuint shader);
GLboolean isTexture(GLuint texture);
void linkProgram(GLuint program);
void releaseShaderCompiler();
void shaderBinary(GLsizei n,
const GLuint *shaders,
GLenum binaryformat,
const GLvoid *binary,
GLsizei length);
void shaderSource(GLuint shader,
GLsizei count,
const GLchar *const *string,
const GLint *length);
void stencilFunc(GLenum func, GLint ref, GLuint mask);
void stencilMask(GLuint mask);
void stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
void uniform1f(GLint location, GLfloat x);
void uniform1fv(GLint location, GLsizei count, const GLfloat *v);
void uniform1i(GLint location, GLint x);
void uniform1iv(GLint location, GLsizei count, const GLint *v);
void uniform2f(GLint location, GLfloat x, GLfloat y);
void uniform2fv(GLint location, GLsizei count, const GLfloat *v);
void uniform2i(GLint location, GLint x, GLint y);
void uniform2iv(GLint location, GLsizei count, const GLint *v);
void uniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z);
void uniform3fv(GLint location, GLsizei count, const GLfloat *v);
void uniform3i(GLint location, GLint x, GLint y, GLint z);
void uniform3iv(GLint location, GLsizei count, const GLint *v);
void uniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void uniform4fv(GLint location, GLsizei count, const GLfloat *v);
void uniform4i(GLint location, GLint x, GLint y, GLint z, GLint w);
void uniform4iv(GLint location, GLsizei count, const GLint *v);
void uniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void uniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void uniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void validateProgram(GLuint program);
void handleError(const Error &error) override; void handleError(const Error &error) override;
GLenum getError(); GLenum getError();
......
...@@ -490,39 +490,27 @@ void Program::attachShader(Shader *shader) ...@@ -490,39 +490,27 @@ void Program::attachShader(Shader *shader)
} }
} }
bool Program::detachShader(const Context *context, Shader *shader) void Program::detachShader(const Context *context, Shader *shader)
{ {
switch (shader->getType()) switch (shader->getType())
{ {
case GL_VERTEX_SHADER: case GL_VERTEX_SHADER:
{ {
if (mState.mAttachedVertexShader != shader) ASSERT(mState.mAttachedVertexShader == shader);
{
return false;
}
shader->release(context); shader->release(context);
mState.mAttachedVertexShader = nullptr; mState.mAttachedVertexShader = nullptr;
break; break;
} }
case GL_FRAGMENT_SHADER: case GL_FRAGMENT_SHADER:
{ {
if (mState.mAttachedFragmentShader != shader) ASSERT(mState.mAttachedFragmentShader == shader);
{
return false;
}
shader->release(context); shader->release(context);
mState.mAttachedFragmentShader = nullptr; mState.mAttachedFragmentShader = nullptr;
break; break;
} }
case GL_COMPUTE_SHADER: case GL_COMPUTE_SHADER:
{ {
if (mState.mAttachedComputeShader != shader) ASSERT(mState.mAttachedComputeShader == shader);
{
return false;
}
shader->release(context); shader->release(context);
mState.mAttachedComputeShader = nullptr; mState.mAttachedComputeShader = nullptr;
break; break;
...@@ -530,8 +518,6 @@ bool Program::detachShader(const Context *context, Shader *shader) ...@@ -530,8 +518,6 @@ bool Program::detachShader(const Context *context, Shader *shader)
default: default:
UNREACHABLE(); UNREACHABLE();
} }
return true;
} }
int Program::getAttachedShadersCount() const int Program::getAttachedShadersCount() const
......
...@@ -298,7 +298,7 @@ class Program final : angle::NonCopyable, public LabeledObject ...@@ -298,7 +298,7 @@ class Program final : angle::NonCopyable, public LabeledObject
rx::ProgramImpl *getImplementation() const { return mProgram; } rx::ProgramImpl *getImplementation() const { return mProgram; }
void attachShader(Shader *shader); void attachShader(Shader *shader);
bool detachShader(const Context *context, Shader *shader); void detachShader(const Context *context, Shader *shader);
int getAttachedShadersCount() const; int getAttachedShadersCount() const;
const Shader *getAttachedVertexShader() const { return mState.mAttachedVertexShader; } const Shader *getAttachedVertexShader() const { return mState.mAttachedVertexShader; }
......
...@@ -93,7 +93,7 @@ void CastStateValues(Context *context, GLenum nativeType, GLenum pname, ...@@ -93,7 +93,7 @@ void CastStateValues(Context *context, GLenum nativeType, GLenum pname,
if (nativeType == GL_INT) if (nativeType == GL_INT)
{ {
std::vector<GLint> intParams(numParams, 0); std::vector<GLint> intParams(numParams, 0);
context->getIntegerv(pname, intParams.data()); context->getIntegervImpl(pname, intParams.data());
for (unsigned int i = 0; i < numParams; ++i) for (unsigned int i = 0; i < numParams; ++i)
{ {
...@@ -103,7 +103,7 @@ void CastStateValues(Context *context, GLenum nativeType, GLenum pname, ...@@ -103,7 +103,7 @@ void CastStateValues(Context *context, GLenum nativeType, GLenum pname,
else if (nativeType == GL_BOOL) else if (nativeType == GL_BOOL)
{ {
std::vector<GLboolean> boolParams(numParams, GL_FALSE); std::vector<GLboolean> boolParams(numParams, GL_FALSE);
context->getBooleanv(pname, boolParams.data()); context->getBooleanvImpl(pname, boolParams.data());
for (unsigned int i = 0; i < numParams; ++i) for (unsigned int i = 0; i < numParams; ++i)
{ {
...@@ -113,7 +113,7 @@ void CastStateValues(Context *context, GLenum nativeType, GLenum pname, ...@@ -113,7 +113,7 @@ void CastStateValues(Context *context, GLenum nativeType, GLenum pname,
else if (nativeType == GL_FLOAT) else if (nativeType == GL_FLOAT)
{ {
std::vector<GLfloat> floatParams(numParams, 0.0f); std::vector<GLfloat> floatParams(numParams, 0.0f);
context->getFloatv(pname, floatParams.data()); context->getFloatvImpl(pname, floatParams.data());
for (unsigned int i = 0; i < numParams; ++i) for (unsigned int i = 0; i < numParams; ++i)
{ {
......
...@@ -214,9 +214,9 @@ bool ValidateProgramUniformMatrix(Context *context, ...@@ -214,9 +214,9 @@ bool ValidateProgramUniformMatrix(Context *context,
GLsizei count, GLsizei count,
GLboolean transpose); GLboolean transpose);
bool ValidateUniform(Context *context, GLenum uniformType, GLint location, GLsizei count); bool ValidateUniform(ValidationContext *context, GLenum uniformType, GLint location, GLsizei count);
bool ValidateUniform1iv(Context *context, GLint location, GLsizei count, const GLint *value); bool ValidateUniform1iv(Context *context, GLint location, GLsizei count, const GLint *value);
bool ValidateUniformMatrix(Context *context, bool ValidateUniformMatrix(ValidationContext *context,
GLenum matrixType, GLenum matrixType,
GLint location, GLint location,
GLsizei count, GLsizei count,
...@@ -249,7 +249,7 @@ bool ValidateCopyTexImageParametersBase(ValidationContext *context, ...@@ -249,7 +249,7 @@ bool ValidateCopyTexImageParametersBase(ValidationContext *context,
Format *textureFormatOut); Format *textureFormatOut);
bool ValidateDrawBase(ValidationContext *context, GLenum mode, GLsizei count); bool ValidateDrawBase(ValidationContext *context, GLenum mode, GLsizei count);
bool ValidateDrawArrays(ValidationContext *context, bool ValidateDrawArraysCommon(ValidationContext *context,
GLenum mode, GLenum mode,
GLint first, GLint first,
GLsizei count, GLsizei count,
......
...@@ -1982,15 +1982,7 @@ ANGLE_EXPORT void GL_APIENTRY GetBooleanvRobustANGLE(GLenum pname, ...@@ -1982,15 +1982,7 @@ ANGLE_EXPORT void GL_APIENTRY GetBooleanvRobustANGLE(GLenum pname,
return; return;
} }
if (nativeType == GL_BOOL)
{
context->getBooleanv(pname, params); context->getBooleanv(pname, params);
}
else
{
CastStateValues(context, nativeType, pname, numParams, params);
}
SetRobustLengthParam(length, numParams); SetRobustLengthParam(length, numParams);
} }
} }
...@@ -2040,15 +2032,7 @@ ANGLE_EXPORT void GL_APIENTRY GetFloatvRobustANGLE(GLenum pname, ...@@ -2040,15 +2032,7 @@ ANGLE_EXPORT void GL_APIENTRY GetFloatvRobustANGLE(GLenum pname,
return; return;
} }
if (nativeType == GL_FLOAT)
{
context->getFloatv(pname, params); context->getFloatv(pname, params);
}
else
{
CastStateValues(context, nativeType, pname, numParams, params);
}
SetRobustLengthParam(length, numParams); SetRobustLengthParam(length, numParams);
} }
} }
...@@ -2101,14 +2085,7 @@ ANGLE_EXPORT void GL_APIENTRY GetIntegervRobustANGLE(GLenum pname, ...@@ -2101,14 +2085,7 @@ ANGLE_EXPORT void GL_APIENTRY GetIntegervRobustANGLE(GLenum pname,
return; return;
} }
if (nativeType == GL_INT)
{
context->getIntegerv(pname, data); context->getIntegerv(pname, data);
}
else
{
CastStateValues(context, nativeType, pname, numParams, data);
}
SetRobustLengthParam(length, numParams); SetRobustLengthParam(length, numParams);
} }
} }
......
...@@ -500,6 +500,9 @@ TEST_P(StateChangeRenderTest, RecreateTexture) ...@@ -500,6 +500,9 @@ TEST_P(StateChangeRenderTest, RecreateTexture)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTextures[0], 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTextures[0], 0);
// Explictly check FBO status sync in some versions of ANGLE no_error skips FBO checks.
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
// Draw with red to the FBO. // Draw with red to the FBO.
GLColor red(255, 0, 0, 255); GLColor red(255, 0, 0, 255);
setUniformColor(red); setUniformColor(red);
...@@ -513,6 +516,9 @@ TEST_P(StateChangeRenderTest, RecreateTexture) ...@@ -513,6 +516,9 @@ TEST_P(StateChangeRenderTest, RecreateTexture)
greenPixels.data()); greenPixels.data());
EXPECT_PIXEL_COLOR_EQ(0, 0, green); EXPECT_PIXEL_COLOR_EQ(0, 0, green);
// Explictly check FBO status sync in some versions of ANGLE no_error skips FBO checks.
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
// Verify drawing blue gives blue. This covers the FBO sync with D3D dirty bits. // Verify drawing blue gives blue. This covers the FBO sync with D3D dirty bits.
GLColor blue(0, 0, 255, 255); GLColor blue(0, 0, 255, 255);
setUniformColor(blue); setUniformColor(blue);
...@@ -531,6 +537,9 @@ TEST_P(StateChangeRenderTest, RecreateRenderbuffer) ...@@ -531,6 +537,9 @@ TEST_P(StateChangeRenderTest, RecreateRenderbuffer)
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, 16, 16); glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, 16, 16);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mRenderbuffer); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, mRenderbuffer);
// Explictly check FBO status sync in some versions of ANGLE no_error skips FBO checks.
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
// Draw with red to the FBO. // Draw with red to the FBO.
GLColor red(255, 0, 0, 255); GLColor red(255, 0, 0, 255);
setUniformColor(red); setUniformColor(red);
...@@ -544,6 +553,9 @@ TEST_P(StateChangeRenderTest, RecreateRenderbuffer) ...@@ -544,6 +553,9 @@ TEST_P(StateChangeRenderTest, RecreateRenderbuffer)
GLColor green(0, 255, 0, 255); GLColor green(0, 255, 0, 255);
EXPECT_PIXEL_COLOR_EQ(0, 0, green); EXPECT_PIXEL_COLOR_EQ(0, 0, green);
// Explictly check FBO status sync in some versions of ANGLE no_error skips FBO checks.
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
// Verify drawing blue gives blue. This covers the FBO sync with D3D dirty bits. // Verify drawing blue gives blue. This covers the FBO sync with D3D dirty bits.
GLColor blue(0, 0, 255, 255); GLColor blue(0, 0, 255, 255);
setUniformColor(blue); setUniformColor(blue);
...@@ -564,6 +576,9 @@ TEST_P(StateChangeRenderTest, GenerateMipmap) ...@@ -564,6 +576,9 @@ TEST_P(StateChangeRenderTest, GenerateMipmap)
glTexImage2D(GL_TEXTURE_2D, 2, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); glTexImage2D(GL_TEXTURE_2D, 2, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTextures[0], 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mTextures[0], 0);
// Explictly check FBO status sync in some versions of ANGLE no_error skips FBO checks.
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
// Draw once to set the RenderTarget in D3D11 // Draw once to set the RenderTarget in D3D11
GLColor red(255, 0, 0, 255); GLColor red(255, 0, 0, 255);
setUniformColor(red); setUniformColor(red);
...@@ -573,6 +588,9 @@ TEST_P(StateChangeRenderTest, GenerateMipmap) ...@@ -573,6 +588,9 @@ TEST_P(StateChangeRenderTest, GenerateMipmap)
// This will trigger the texture to be re-created on FL9_3. // This will trigger the texture to be re-created on FL9_3.
glGenerateMipmap(GL_TEXTURE_2D); glGenerateMipmap(GL_TEXTURE_2D);
// Explictly check FBO status sync in some versions of ANGLE no_error skips FBO checks.
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
// Now ensure we don't have a stale render target. // Now ensure we don't have a stale render target.
GLColor blue(0, 0, 255, 255); GLColor blue(0, 0, 255, 255);
setUniformColor(blue); setUniformColor(blue);
......
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