summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py52
-rw-r--r--gpu/command_buffer/client/gles2_cmd_helper_autogen.h5
-rw-r--r--gpu/command_buffer/client/gles2_implementation.cc5
-rw-r--r--gpu/command_buffer/client/gles2_implementation_autogen.h10
-rw-r--r--gpu/command_buffer/common/gles2_cmd_format_autogen.h23
-rw-r--r--gpu/command_buffer/common/gles2_cmd_format_test_autogen.h6
-rw-r--r--gpu/command_buffer/service/gl_interface.h1
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder.cc90
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_autogen.h14
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc87
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc31
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h167
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc6
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h78
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc20
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h2
16 files changed, 556 insertions, 41 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index e29ef07..ae96c63 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -370,12 +370,18 @@ _ENUM_LISTS = {
'valid': [
'GL_FRAMEBUFFER',
],
+ 'invalid': [
+ 'GL_RENDERBUFFER',
+ ],
},
'RenderBufferTarget': {
'type': 'GLenum',
'valid': [
'GL_RENDERBUFFER',
],
+ 'invalid': [
+ 'GL_FRAMEBUFFER',
+ ],
},
'BufferTarget': {
'type': 'GLenum',
@@ -430,6 +436,9 @@ _ENUM_LISTS = {
'GL_VERTEX_SHADER',
'GL_FRAGMENT_SHADER',
],
+ 'invalid': [
+ 'GL_GEOMETRY_SHADER',
+ ],
},
'FaceType': {
'type': 'GLenum',
@@ -842,7 +851,7 @@ _ENUM_LISTS = {
# expectation: If False the unit test will have no expected calls.
_FUNCTION_INFO = {
- 'ActiveTexture': {'decoder_func': 'DoActiveTexture', 'expectation': False},
+ 'ActiveTexture': {'decoder_func': 'DoActiveTexture', 'unit_test': False},
'BindAttribLocation': {'type': 'GLchar'},
'BindBuffer': {'decoder_func': 'DoBindBuffer'},
'BindFramebuffer': {
@@ -856,7 +865,12 @@ _FUNCTION_INFO = {
'BindTexture': {'decoder_func': 'DoBindTexture'},
'BufferData': {'type': 'Manual', 'immediate': True},
'BufferSubData': {'type': 'Data', 'decoder_func': 'DoBufferSubData'},
- 'CheckFramebufferStatus': {'decoder_func': 'glCheckFramebufferStatusEXT'},
+ 'CheckFramebufferStatus': {
+ 'type': 'Is',
+ 'decoder_func': 'DoCheckFramebufferStatus',
+ 'gl_test_func': 'glCheckFramebufferStatusEXT',
+ 'result': ['GLenum'],
+ },
'ClearDepthf': {'decoder_func': 'glClearDepth'},
'CompileShader': {'decoder_func': 'DoCompileShader', 'unit_test': False},
'CompressedTexImage2D': {'type': 'Manual','immediate': True},
@@ -885,8 +899,14 @@ _FUNCTION_INFO = {
'EnableVertexAttribArray': {'decoder_func': 'DoEnableVertexAttribArray'},
'Finish': {'impl_func': False},
'Flush': {'impl_func': False},
- 'FramebufferRenderbuffer': {'decoder_func': 'glFramebufferRenderbufferEXT'},
- 'FramebufferTexture2D': {'decoder_func': 'glFramebufferTexture2DEXT'},
+ 'FramebufferRenderbuffer': {
+ 'decoder_func': 'DoFramebufferRenderbuffer',
+ 'gl_test_func': 'glFramebufferRenderbufferEXT',
+ },
+ 'FramebufferTexture2D': {
+ 'decoder_func': 'DoFramebufferTexture2D',
+ 'gl_test_func': 'glFramebufferTexture2DEXT',
+ },
'GenerateMipmap': {
'decoder_func': 'DoGenerateMipmap',
'gl_test_func': 'glGenerateMipmapEXT',
@@ -937,15 +957,15 @@ _FUNCTION_INFO = {
'GetBufferParameteriv': {'type': 'GETn'},
'GetError': {
'type': 'Is',
- 'decoder_func':
- 'GetGLError',
+ 'decoder_func': 'GetGLError',
'impl_func': False,
'result': ['GLenum'],
},
'GetFloatv': {'type': 'GETn'},
'GetFramebufferAttachmentParameteriv': {
'type': 'GETn',
- 'decoder_func': 'glGetFramebufferAttachmentParameterivEXT',
+ 'decoder_func': 'DoGetFramebufferAttachmentParameteriv',
+ 'gl_test_func': 'glGetFramebufferAttachmentParameterivEXT',
},
'GetIntegerv': {'type': 'GETn'},
'GetProgramiv': {'type': 'GETn'},
@@ -956,7 +976,8 @@ _FUNCTION_INFO = {
},
'GetRenderbufferParameteriv': {
'type': 'GETn',
- 'decoder_func': 'glGetRenderbufferParameterivEXT',
+ 'decoder_func': 'DoGetRenderbufferParameteriv',
+ 'gl_test_func': 'glGetRenderbufferParameterivEXT',
},
'GetShaderiv': {'type': 'GETn', 'decoder_func': 'DoGetShaderiv'},
'GetShaderInfoLog': {
@@ -1024,7 +1045,10 @@ _FUNCTION_INFO = {
'IsTexture': {'type': 'Is'},
'LinkProgram': {'decoder_func': 'DoLinkProgram'},
'PixelStorei': {'type': 'Manual'},
- 'RenderbufferStorage': {'decoder_func': 'glRenderbufferStorageEXT'},
+ 'RenderbufferStorage': {
+ 'decoder_func': 'DoRenderbufferStorage',
+ 'gl_test_func': 'glRenderbufferStorageEXT',
+ },
'ReadPixels': {
'cmd_comment':
'// ReadPixels has the result separated from the pixel buffer so that\n'
@@ -1475,6 +1499,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
"""
self.WriteValidUnitTest(func, file, valid_test)
@@ -1867,6 +1892,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
"""
@@ -1897,6 +1923,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
"""
@@ -2032,6 +2059,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
%(name)s cmd;
cmd.Init(%(args)s%(comma)skNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
"""
@@ -2102,6 +2130,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
"""
@@ -2136,6 +2165,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
cmd.Init(1, &client_%(resource_name)s_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
"""
@@ -2355,6 +2385,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
cmd.Init(%(gl_args)s, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
"""
gl_arg_strings = []
@@ -2533,6 +2564,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
cmd.Init(%(gl_args)s, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
"""
gl_arg_strings = []
@@ -3073,6 +3105,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
%(name)s cmd;
cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
"""
comma = ""
@@ -3204,6 +3237,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
EXPECT_EQ(strlen(kInfo) + 1, bucket->size());
EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo,
bucket->size()));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
"""
args = func.GetOriginalArgs()
diff --git a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
index 6ae38f4..b450ba5 100644
--- a/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
+++ b/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
@@ -109,10 +109,11 @@
c.Init(target, offset, size);
}
- void CheckFramebufferStatus(GLenum target) {
+ void CheckFramebufferStatus(
+ GLenum target, uint32 result_shm_id, uint32 result_shm_offset) {
gles2::CheckFramebufferStatus& c =
GetCmdSpace<gles2::CheckFramebufferStatus>();
- c.Init(target);
+ c.Init(target, result_shm_id, result_shm_offset);
}
void Clear(GLbitfield mask) {
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index f7bf3ad..cded8bb 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -449,11 +449,6 @@ void GLES2Implementation::TexSubImage2D(
}
}
-GLenum GLES2Implementation::CheckFramebufferStatus(GLenum target) {
- // TODO(gman): implement.
- return 0;
-}
-
void GLES2Implementation::GetActiveAttrib(
GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size,
GLenum* type, char* name) {
diff --git a/gpu/command_buffer/client/gles2_implementation_autogen.h b/gpu/command_buffer/client/gles2_implementation_autogen.h
index ef6803d..1f78ead 100644
--- a/gpu/command_buffer/client/gles2_implementation_autogen.h
+++ b/gpu/command_buffer/client/gles2_implementation_autogen.h
@@ -65,7 +65,15 @@ void BufferData(
void BufferSubData(
GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
-GLenum CheckFramebufferStatus(GLenum target);
+GLenum CheckFramebufferStatus(GLenum target) {
+ typedef CheckFramebufferStatus::Result Result;
+ Result* result = GetResultAs<Result*>();
+ *result = 0;
+ helper_->CheckFramebufferStatus(
+ target, result_shm_id(), result_shm_offset());
+ WaitForCmd();
+ return *result;
+}
void Clear(GLbitfield mask) {
helper_->Clear(mask);
diff --git a/gpu/command_buffer/common/gles2_cmd_format_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
index 245a3c8..20db822 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_autogen.h
@@ -748,6 +748,8 @@ struct CheckFramebufferStatus {
static const CommandId kCmdId = kCheckFramebufferStatus;
static const cmd::ArgFlags kArgFlags = cmd::kFixed;
+ typedef GLenum Result;
+
static uint32 ComputeSize() {
return static_cast<uint32>(sizeof(ValueType)); // NOLINT
}
@@ -756,26 +758,37 @@ struct CheckFramebufferStatus {
header.SetCmd<ValueType>();
}
- void Init(GLenum _target) {
+ void Init(GLenum _target, uint32 _result_shm_id, uint32 _result_shm_offset) {
SetHeader();
target = _target;
+ result_shm_id = _result_shm_id;
+ result_shm_offset = _result_shm_offset;
}
- void* Set(void* cmd, GLenum _target) {
- static_cast<ValueType*>(cmd)->Init(_target);
+ void* Set(
+ void* cmd, GLenum _target, uint32 _result_shm_id,
+ uint32 _result_shm_offset) {
+ static_cast<ValueType*>(
+ cmd)->Init(_target, _result_shm_id, _result_shm_offset);
return NextCmdAddress<ValueType>(cmd);
}
gpu::CommandHeader header;
uint32 target;
+ uint32 result_shm_id;
+ uint32 result_shm_offset;
};
-COMPILE_ASSERT(sizeof(CheckFramebufferStatus) == 8,
- Sizeof_CheckFramebufferStatus_is_not_8);
+COMPILE_ASSERT(sizeof(CheckFramebufferStatus) == 16,
+ Sizeof_CheckFramebufferStatus_is_not_16);
COMPILE_ASSERT(offsetof(CheckFramebufferStatus, header) == 0,
OffsetOf_CheckFramebufferStatus_header_not_0);
COMPILE_ASSERT(offsetof(CheckFramebufferStatus, target) == 4,
OffsetOf_CheckFramebufferStatus_target_not_4);
+COMPILE_ASSERT(offsetof(CheckFramebufferStatus, result_shm_id) == 8,
+ OffsetOf_CheckFramebufferStatus_result_shm_id_not_8);
+COMPILE_ASSERT(offsetof(CheckFramebufferStatus, result_shm_offset) == 12,
+ OffsetOf_CheckFramebufferStatus_result_shm_offset_not_12);
struct Clear {
typedef Clear ValueType;
diff --git a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
index e53ac55..7cb1761 100644
--- a/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
+++ b/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
@@ -273,13 +273,17 @@ TEST(GLES2FormatTest, CheckFramebufferStatus) {
CheckFramebufferStatus cmd = { { 0 } };
void* next_cmd = cmd.Set(
&cmd,
- static_cast<GLenum>(11));
+ static_cast<GLenum>(11),
+ static_cast<uint32>(12),
+ static_cast<uint32>(13));
EXPECT_EQ(static_cast<uint32>(CheckFramebufferStatus::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<char*>(next_cmd),
reinterpret_cast<char*>(&cmd) + sizeof(cmd));
EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
+ EXPECT_EQ(static_cast<uint32>(12), cmd.result_shm_id);
+ EXPECT_EQ(static_cast<uint32>(13), cmd.result_shm_offset);
}
TEST(GLES2FormatTest, Clear) {
diff --git a/gpu/command_buffer/service/gl_interface.h b/gpu/command_buffer/service/gl_interface.h
index ddc2c99..32d2ae3 100644
--- a/gpu/command_buffer/service/gl_interface.h
+++ b/gpu/command_buffer/service/gl_interface.h
@@ -31,6 +31,7 @@
#define GL_TEXTURE_1D 0x0DE0
#define GL_TEXTURE_3D 0x806F
#define GL_DOUBLE 0x140A
+#define GL_GEOMETRY_SHADER 0x8DD9
namespace gles2 {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index 8c9be47..67e7433 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -440,14 +440,17 @@ class GLES2DecoderImpl : public GLES2Decoder {
// Wrapper for glBindTexture since we need to track the current targets.
void DoBindTexture(GLenum target, GLuint texture);
- // Wrapper for BufferData.
+ // Wrapper for glBufferData.
void DoBufferData(
GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);
- // Wrapper for BufferSubData.
+ // Wrapper for glBufferSubData.
void DoBufferSubData(
GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data);
+ // Wrapper for glCheckFramebufferStatus
+ GLenum DoCheckFramebufferStatus(GLenum target);
+
// Wrapper for glCompileShader.
void DoCompileShader(GLuint shader);
@@ -460,9 +463,27 @@ class GLES2DecoderImpl : public GLES2Decoder {
// Wrapper for glEnableVertexAttribArray.
void DoEnableVertexAttribArray(GLuint index);
+ // Wrapper for glFramebufferRenderbufffer.
+ void DoFramebufferRenderbuffer(
+ GLenum target, GLenum attachment, GLenum renderbuffertarget,
+ GLuint renderbuffer);
+
+ // Wrapper for glFramebufferTexture2D.
+ void DoFramebufferTexture2D(
+ GLenum target, GLenum attachment, GLenum textarget, GLuint texture,
+ GLint level);
+
// Wrapper for glGenerateMipmap
void DoGenerateMipmap(GLenum target);
+ // Wrapper for glGetFramebufferAttachmentParameteriv.
+ void DoGetFramebufferAttachmentParameteriv(
+ GLenum target, GLenum attachment, GLenum pname, GLint* params);
+
+ // Wrapper for glRenderbufferParameteriv.
+ void DoGetRenderbufferParameteriv(
+ GLenum target, GLenum pname, GLint* params);
+
// Wrapper for glGetShaderiv
void DoGetShaderiv(GLuint shader, GLenum pname, GLint* params);
@@ -473,6 +494,10 @@ class GLES2DecoderImpl : public GLES2Decoder {
// Wrapper for glLinkProgram
void DoLinkProgram(GLuint program);
+ // Wrapper for glRenderbufferStorage.
+ void DoRenderbufferStorage(
+ GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+
// Swaps the buffers (copies/renders to the current window).
void DoSwapBuffers();
@@ -1309,11 +1334,13 @@ bool GLES2DecoderImpl::ValidateGLenumCompressedTextureInternalFormat(GLenum) {
}
void GLES2DecoderImpl::DoActiveTexture(GLenum texture_unit) {
- if (texture_unit > group_->max_texture_units()) {
+ GLuint texture_index = texture_unit - GL_TEXTURE0;
+ if (texture_index > group_->max_texture_units()) {
SetGLError(GL_INVALID_ENUM);
return;
}
- active_texture_unit_ = texture_unit - GL_TEXTURE0;
+ active_texture_unit_ = texture_index;
+ glActiveTexture(texture_unit);
}
void GLES2DecoderImpl::DoBindBuffer(GLenum target, GLuint buffer) {
@@ -1451,6 +1478,61 @@ void GLES2DecoderImpl::DoDrawArrays(
}
}
+void GLES2DecoderImpl::DoFramebufferRenderbuffer(
+ GLenum target, GLenum attachment, GLenum renderbuffertarget,
+ GLuint renderbuffer) {
+ if (bound_framebuffer_ == 0) {
+ SetGLError(GL_INVALID_OPERATION);
+ return;
+ }
+ glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget,
+ renderbuffer);
+}
+
+GLenum GLES2DecoderImpl::DoCheckFramebufferStatus(GLenum target) {
+ if (bound_framebuffer_ == 0) {
+ return GL_FRAMEBUFFER_COMPLETE;
+ }
+ return glCheckFramebufferStatusEXT(target);
+}
+
+void GLES2DecoderImpl::DoFramebufferTexture2D(
+ GLenum target, GLenum attachment, GLenum textarget, GLuint texture,
+ GLint level) {
+ if (bound_framebuffer_ == 0) {
+ SetGLError(GL_INVALID_OPERATION);
+ return;
+ }
+ glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
+}
+
+void GLES2DecoderImpl::DoGetFramebufferAttachmentParameteriv(
+ GLenum target, GLenum attachment, GLenum pname, GLint* params) {
+ if (bound_framebuffer_ == 0) {
+ SetGLError(GL_INVALID_OPERATION);
+ return;
+ }
+ glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);
+}
+
+void GLES2DecoderImpl::DoGetRenderbufferParameteriv(
+ GLenum target, GLenum pname, GLint* params) {
+ if (bound_renderbuffer_ == 0) {
+ SetGLError(GL_INVALID_OPERATION);
+ return;
+ }
+ glGetRenderbufferParameterivEXT(target, pname, params);
+}
+
+void GLES2DecoderImpl::DoRenderbufferStorage(
+ GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
+ if (bound_renderbuffer_ == 0) {
+ SetGLError(GL_INVALID_OPERATION);
+ return;
+ }
+ glRenderbufferStorageEXT(target, internalformat, width, height);
+}
+
void GLES2DecoderImpl::DoLinkProgram(GLuint program) {
ProgramManager::ProgramInfo* info = GetProgramInfo(program);
if (!info) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index 7b123bc..3d866a3 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -265,11 +265,13 @@ error::Error GLES2DecoderImpl::HandleBufferSubDataImmediate(
error::Error GLES2DecoderImpl::HandleCheckFramebufferStatus(
uint32 immediate_data_size, const gles2::CheckFramebufferStatus& c) {
GLenum target = static_cast<GLenum>(c.target);
+ GLenum* result_dst = GetSharedMemoryAs<GLenum*>(
+ c.result_shm_id, c.result_shm_offset, sizeof(*result_dst));
if (!ValidateGLenumFrameBufferTarget(target)) {
SetGLError(GL_INVALID_ENUM);
return error::kNoError;
}
- glCheckFramebufferStatusEXT(target);
+ *result_dst = DoCheckFramebufferStatus(target);
return error::kNoError;
}
@@ -771,7 +773,7 @@ error::Error GLES2DecoderImpl::HandleFramebufferRenderbuffer(
SetGLError(GL_INVALID_ENUM);
return error::kNoError;
}
- glFramebufferRenderbufferEXT(
+ DoFramebufferRenderbuffer(
target, attachment, renderbuffertarget, renderbuffer);
return error::kNoError;
}
@@ -799,7 +801,7 @@ error::Error GLES2DecoderImpl::HandleFramebufferTexture2D(
SetGLError(GL_INVALID_ENUM);
return error::kNoError;
}
- glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);
+ DoFramebufferTexture2D(target, attachment, textarget, texture, level);
return error::kNoError;
}
@@ -1105,7 +1107,7 @@ error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv(
if (params == NULL) {
return error::kOutOfBounds;
}
- glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);
+ DoGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
return error::kNoError;
}
@@ -1197,7 +1199,7 @@ error::Error GLES2DecoderImpl::HandleGetRenderbufferParameteriv(
if (params == NULL) {
return error::kOutOfBounds;
}
- glGetRenderbufferParameterivEXT(target, pname, params);
+ DoGetRenderbufferParameteriv(target, pname, params);
return error::kNoError;
}
@@ -1522,7 +1524,7 @@ error::Error GLES2DecoderImpl::HandleRenderbufferStorage(
SetGLError(GL_INVALID_VALUE);
return error::kNoError;
}
- glRenderbufferStorageEXT(target, internalformat, width, height);
+ DoRenderbufferStorage(target, internalformat, width, height);
return error::kNoError;
}
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
index 9228165..11eef37 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
@@ -1014,6 +1014,93 @@ TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) {
EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
}
+TEST_F(GLES2DecoderTest, ActiveTextureValidArgs) {
+ EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1));
+ SpecializedSetup<ActiveTexture, 0>();
+ ActiveTexture cmd;
+ cmd.Init(GL_TEXTURE1);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest, ActiveTextureInalidArgs) {
+ EXPECT_CALL(*gl_, ActiveTexture(_)).Times(0);
+ SpecializedSetup<ActiveTexture, 0>();
+ ActiveTexture cmd;
+ cmd.Init(GL_TEXTURE0 - 1);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
+ cmd.Init(kNumTextureUnits);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest, CheckFramebufferStatusWithNoBoundTarget) {
+ EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_))
+ .Times(0);
+ CheckFramebufferStatus::Result* result =
+ static_cast<CheckFramebufferStatus::Result*>(shared_memory_address_);
+ *result = 0;
+ CheckFramebufferStatus cmd;
+ cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(*result, GL_FRAMEBUFFER_COMPLETE);
+}
+
+TEST_F(GLES2DecoderTest, FramebufferRenderbufferWithNoBoundTarget) {
+ EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _))
+ .Times(0);
+ FramebufferRenderbuffer cmd;
+ cmd.Init(
+ GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
+ client_renderbuffer_id_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest, FramebufferTexture2DWithNoBoundTarget) {
+ EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _))
+ .Times(0);
+ FramebufferTexture2D cmd;
+ cmd.Init(
+ GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_,
+ 5);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest, GetFramebufferAttachmentParameterivWithNoBoundTarget) {
+ EXPECT_CALL(*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _))
+ .Times(0);
+ GetFramebufferAttachmentParameteriv cmd;
+ cmd.Init(
+ GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
+ shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest, GetRenderbufferParameterivWithNoBoundTarget) {
+ EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _))
+ .Times(0);
+ GetRenderbufferParameteriv cmd;
+ cmd.Init(
+ GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, shared_memory_id_,
+ shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest, RenderbufferStorageWithNoBoundTarget) {
+ EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _))
+ .Times(0);
+ RenderbufferStorage cmd;
+ cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
+}
+
// TODO(gman): BindAttribLocation
// TODO(gman): BindAttribLocationImmediate
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
index 05f9b8a..cd78e98 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
@@ -40,6 +40,37 @@ void GLES2DecoderTestBase::SpecializedSetup<GenerateMipmap, 0>() {
0, 0);
};
+template <>
+void GLES2DecoderTestBase::SpecializedSetup<CheckFramebufferStatus, 0>() {
+ DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
+ kServiceFramebufferId);
+};
+
+template <>
+void GLES2DecoderTestBase::SpecializedSetup<FramebufferRenderbuffer, 0>() {
+ DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
+ kServiceFramebufferId);
+};
+
+template <>
+void GLES2DecoderTestBase::SpecializedSetup<FramebufferTexture2D, 0>() {
+ DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
+ kServiceFramebufferId);
+};
+
+template <>
+void GLES2DecoderTestBase::SpecializedSetup<GetFramebufferAttachmentParameteriv,
+ 0>() {
+ DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
+ kServiceFramebufferId);
+};
+
+template <>
+void GLES2DecoderTestBase::SpecializedSetup<GetRenderbufferParameteriv, 0>() {
+ DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_,
+ kServiceRenderbufferId);
+};
+
#include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h"
} // namespace gles2
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h
index 767505a..2cd8da8 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h
@@ -8,13 +8,7 @@
#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_
#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_1_AUTOGEN_H_
-
-TEST_F(GLES2DecoderTest1, ActiveTextureValidArgs) {
- SpecializedSetup<ActiveTexture, 0>();
- ActiveTexture cmd;
- cmd.Init(1);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
-}
+// TODO(gman): ActiveTexture
TEST_F(GLES2DecoderTest1, AttachShaderValidArgs) {
EXPECT_CALL(*gl_, AttachShader(kServiceProgramId, kServiceShaderId));
@@ -22,6 +16,7 @@ TEST_F(GLES2DecoderTest1, AttachShaderValidArgs) {
AttachShader cmd;
cmd.Init(client_program_id_, client_shader_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): BindAttribLocation
@@ -34,6 +29,7 @@ TEST_F(GLES2DecoderTest1, BindBufferValidArgs) {
BindBuffer cmd;
cmd.Init(GL_ARRAY_BUFFER, client_buffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, BindBufferInvalidArgs0_0) {
@@ -51,6 +47,16 @@ TEST_F(GLES2DecoderTest1, BindFramebufferValidArgs) {
BindFramebuffer cmd;
cmd.Init(GL_FRAMEBUFFER, client_framebuffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, BindFramebufferInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, BindFramebufferEXT(_, _)).Times(0);
+ SpecializedSetup<BindFramebuffer, 0>();
+ BindFramebuffer cmd;
+ cmd.Init(GL_RENDERBUFFER, client_framebuffer_id_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest1, BindRenderbufferValidArgs) {
@@ -60,6 +66,16 @@ TEST_F(GLES2DecoderTest1, BindRenderbufferValidArgs) {
BindRenderbuffer cmd;
cmd.Init(GL_RENDERBUFFER, client_renderbuffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, BindRenderbufferInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, BindRenderbufferEXT(_, _)).Times(0);
+ SpecializedSetup<BindRenderbuffer, 0>();
+ BindRenderbuffer cmd;
+ cmd.Init(GL_FRAMEBUFFER, client_renderbuffer_id_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest1, BindTextureValidArgs) {
@@ -68,6 +84,7 @@ TEST_F(GLES2DecoderTest1, BindTextureValidArgs) {
BindTexture cmd;
cmd.Init(GL_TEXTURE_2D, client_texture_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, BindTextureInvalidArgs0_0) {
@@ -94,6 +111,7 @@ TEST_F(GLES2DecoderTest1, BlendColorValidArgs) {
BlendColor cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, BlendEquationValidArgs) {
@@ -102,6 +120,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationValidArgs) {
BlendEquation cmd;
cmd.Init(GL_FUNC_ADD);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, BlendEquationInvalidArgs0_0) {
@@ -128,6 +147,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationSeparateValidArgs) {
BlendEquationSeparate cmd;
cmd.Init(GL_FUNC_ADD, GL_FUNC_ADD);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_0) {
@@ -172,6 +192,7 @@ TEST_F(GLES2DecoderTest1, BlendFuncValidArgs) {
BlendFunc cmd;
cmd.Init(GL_ZERO, GL_ZERO);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, BlendFuncSeparateValidArgs) {
@@ -180,6 +201,7 @@ TEST_F(GLES2DecoderTest1, BlendFuncSeparateValidArgs) {
BlendFuncSeparate cmd;
cmd.Init(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): BufferData
@@ -194,8 +216,18 @@ TEST_F(GLES2DecoderTest1, CheckFramebufferStatusValidArgs) {
EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER));
SpecializedSetup<CheckFramebufferStatus, 0>();
CheckFramebufferStatus cmd;
- cmd.Init(GL_FRAMEBUFFER);
+ cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0);
+ SpecializedSetup<CheckFramebufferStatus, 0>();
+ CheckFramebufferStatus cmd;
+ cmd.Init(GL_RENDERBUFFER, shared_memory_id_, shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest1, ClearValidArgs) {
@@ -204,6 +236,7 @@ TEST_F(GLES2DecoderTest1, ClearValidArgs) {
Clear cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, ClearColorValidArgs) {
@@ -212,6 +245,7 @@ TEST_F(GLES2DecoderTest1, ClearColorValidArgs) {
ClearColor cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, ClearDepthfValidArgs) {
@@ -220,6 +254,7 @@ TEST_F(GLES2DecoderTest1, ClearDepthfValidArgs) {
ClearDepthf cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, ClearStencilValidArgs) {
@@ -228,6 +263,7 @@ TEST_F(GLES2DecoderTest1, ClearStencilValidArgs) {
ClearStencil cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, ColorMaskValidArgs) {
@@ -236,6 +272,7 @@ TEST_F(GLES2DecoderTest1, ColorMaskValidArgs) {
ColorMask cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): CompileShader
// TODO(gman): CompressedTexImage2D
@@ -253,6 +290,7 @@ TEST_F(GLES2DecoderTest1, CopyTexImage2DValidArgs) {
CopyTexImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, CopyTexImage2DInvalidArgs0_0) {
@@ -288,6 +326,7 @@ TEST_F(GLES2DecoderTest1, CopyTexSubImage2DValidArgs) {
CopyTexSubImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs0_0) {
@@ -324,6 +363,7 @@ TEST_F(GLES2DecoderTest1, CreateProgramValidArgs) {
CreateProgram cmd;
cmd.Init(kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -334,15 +374,26 @@ TEST_F(GLES2DecoderTest1, CreateShaderValidArgs) {
CreateShader cmd;
cmd.Init(GL_VERTEX_SHADER, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
+TEST_F(GLES2DecoderTest1, CreateShaderInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, CreateShader(_)).Times(0);
+ SpecializedSetup<CreateShader, 0>();
+ CreateShader cmd;
+ cmd.Init(GL_GEOMETRY_SHADER, kNewClientId);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
+}
+
TEST_F(GLES2DecoderTest1, CullFaceValidArgs) {
EXPECT_CALL(*gl_, CullFace(GL_FRONT));
SpecializedSetup<CullFace, 0>();
CullFace cmd;
cmd.Init(GL_FRONT);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, DeleteBuffersValidArgs) {
@@ -355,6 +406,7 @@ TEST_F(GLES2DecoderTest1, DeleteBuffersValidArgs) {
DeleteBuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -378,6 +430,7 @@ TEST_F(GLES2DecoderTest1, DeleteBuffersImmediateValidArgs) {
cmd.Init(1, &client_buffer_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_buffer_id_)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -402,6 +455,7 @@ TEST_F(GLES2DecoderTest1, DeleteFramebuffersValidArgs) {
DeleteFramebuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -426,6 +480,7 @@ TEST_F(GLES2DecoderTest1, DeleteFramebuffersImmediateValidArgs) {
cmd.Init(1, &client_framebuffer_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_framebuffer_id_)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -453,6 +508,7 @@ TEST_F(GLES2DecoderTest1, DeleteRenderbuffersValidArgs) {
DeleteRenderbuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -477,6 +533,7 @@ TEST_F(GLES2DecoderTest1, DeleteRenderbuffersImmediateValidArgs) {
cmd.Init(1, &client_renderbuffer_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_renderbuffer_id_)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -504,6 +561,7 @@ TEST_F(GLES2DecoderTest1, DeleteTexturesValidArgs) {
DeleteTextures cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -527,6 +585,7 @@ TEST_F(GLES2DecoderTest1, DeleteTexturesImmediateValidArgs) {
cmd.Init(1, &client_texture_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_texture_id_)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), 0u);
}
@@ -547,6 +606,7 @@ TEST_F(GLES2DecoderTest1, DepthFuncValidArgs) {
DepthFunc cmd;
cmd.Init(GL_NEVER);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, DepthMaskValidArgs) {
@@ -555,6 +615,7 @@ TEST_F(GLES2DecoderTest1, DepthMaskValidArgs) {
DepthMask cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, DepthRangefValidArgs) {
@@ -563,6 +624,7 @@ TEST_F(GLES2DecoderTest1, DepthRangefValidArgs) {
DepthRangef cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, DetachShaderValidArgs) {
@@ -571,6 +633,7 @@ TEST_F(GLES2DecoderTest1, DetachShaderValidArgs) {
DetachShader cmd;
cmd.Init(client_program_id_, client_shader_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, DisableValidArgs) {
@@ -579,6 +642,7 @@ TEST_F(GLES2DecoderTest1, DisableValidArgs) {
Disable cmd;
cmd.Init(GL_BLEND);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, DisableInvalidArgs0_0) {
@@ -605,6 +669,7 @@ TEST_F(GLES2DecoderTest1, DisableVertexAttribArrayValidArgs) {
DisableVertexAttribArray cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): DrawArrays
// TODO(gman): DrawElements
@@ -616,6 +681,7 @@ TEST_F(GLES2DecoderTest1, EnableValidArgs) {
Enable cmd;
cmd.Init(GL_BLEND);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, EnableInvalidArgs0_0) {
@@ -642,6 +708,7 @@ TEST_F(GLES2DecoderTest1, EnableVertexAttribArrayValidArgs) {
EnableVertexAttribArray cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, FinishValidArgs) {
@@ -650,6 +717,7 @@ TEST_F(GLES2DecoderTest1, FinishValidArgs) {
Finish cmd;
cmd.Init();
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, FlushValidArgs) {
@@ -658,6 +726,7 @@ TEST_F(GLES2DecoderTest1, FlushValidArgs) {
Flush cmd;
cmd.Init();
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) {
@@ -671,6 +740,29 @@ TEST_F(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) {
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
client_renderbuffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
+ SpecializedSetup<FramebufferRenderbuffer, 0>();
+ FramebufferRenderbuffer cmd;
+ cmd.Init(
+ GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
+ client_renderbuffer_id_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs2_0) {
+ EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
+ SpecializedSetup<FramebufferRenderbuffer, 0>();
+ FramebufferRenderbuffer cmd;
+ cmd.Init(
+ GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER,
+ client_renderbuffer_id_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest1, FramebufferTexture2DValidArgs) {
@@ -684,6 +776,18 @@ TEST_F(GLES2DecoderTest1, FramebufferTexture2DValidArgs) {
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_,
5);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
+ SpecializedSetup<FramebufferTexture2D, 0>();
+ FramebufferTexture2D cmd;
+ cmd.Init(
+ GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_,
+ 5);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs2_0) {
@@ -703,6 +807,7 @@ TEST_F(GLES2DecoderTest1, FrontFaceValidArgs) {
FrontFace cmd;
cmd.Init(GL_CW);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GenBuffersValidArgs) {
@@ -713,6 +818,7 @@ TEST_F(GLES2DecoderTest1, GenBuffersValidArgs) {
GenBuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -734,6 +840,7 @@ TEST_F(GLES2DecoderTest1, GenBuffersImmediateValidArgs) {
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -752,6 +859,7 @@ TEST_F(GLES2DecoderTest1, GenerateMipmapValidArgs) {
GenerateMipmap cmd;
cmd.Init(GL_TEXTURE_2D);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_0) {
@@ -780,6 +888,7 @@ TEST_F(GLES2DecoderTest1, GenFramebuffersValidArgs) {
GenFramebuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -801,6 +910,7 @@ TEST_F(GLES2DecoderTest1, GenFramebuffersImmediateValidArgs) {
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -821,6 +931,7 @@ TEST_F(GLES2DecoderTest1, GenRenderbuffersValidArgs) {
GenRenderbuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -843,6 +954,7 @@ TEST_F(GLES2DecoderTest1, GenRenderbuffersImmediateValidArgs) {
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -864,6 +976,7 @@ TEST_F(GLES2DecoderTest1, GenTexturesValidArgs) {
GenTextures cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -885,6 +998,7 @@ TEST_F(GLES2DecoderTest1, GenTexturesImmediateValidArgs) {
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
EXPECT_EQ(GetServiceId(kNewClientId), kNewServiceId);
}
@@ -915,6 +1029,7 @@ TEST_F(GLES2DecoderTest1, GetBooleanvValidArgs) {
GetBooleanv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs1_0) {
@@ -944,6 +1059,7 @@ TEST_F(GLES2DecoderTest1, GetBufferParameterivValidArgs) {
GL_ARRAY_BUFFER, GL_BUFFER_SIZE, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs0_0) {
@@ -992,6 +1108,7 @@ TEST_F(GLES2DecoderTest1, GetErrorValidArgs) {
GetError cmd;
cmd.Init(shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetFloatvValidArgs) {
@@ -1001,6 +1118,7 @@ TEST_F(GLES2DecoderTest1, GetFloatvValidArgs) {
GetFloatv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs1_0) {
@@ -1032,6 +1150,20 @@ TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivValidArgs) {
GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_0) {
+ EXPECT_CALL(
+ *gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0);
+ SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>();
+ GetFramebufferAttachmentParameteriv cmd;
+ cmd.Init(
+ GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, shared_memory_id_,
+ shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_0) {
@@ -1064,6 +1196,7 @@ TEST_F(GLES2DecoderTest1, GetIntegervValidArgs) {
GetIntegerv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs1_0) {
@@ -1093,6 +1226,7 @@ TEST_F(GLES2DecoderTest1, GetProgramivValidArgs) {
client_program_id_, GL_DELETE_STATUS, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetProgramivInvalidArgs2_0) {
@@ -1131,6 +1265,7 @@ TEST_F(GLES2DecoderTest1, GetProgramInfoLogValidArgs) {
EXPECT_EQ(strlen(kInfo) + 1, bucket->size());
EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo,
bucket->size()));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetProgramInfoLogInvalidArgs) {
@@ -1154,6 +1289,18 @@ TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivValidArgs) {
GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
+ SpecializedSetup<GetRenderbufferParameteriv, 0>();
+ GetRenderbufferParameteriv cmd;
+ cmd.Init(
+ GL_FRAMEBUFFER, GL_RENDERBUFFER_WIDTH, shared_memory_id_,
+ shared_memory_offset_);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_0) {
@@ -1185,6 +1332,7 @@ TEST_F(GLES2DecoderTest1, GetShaderivValidArgs) {
client_shader_id_, GL_SHADER_TYPE, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetShaderivInvalidArgs2_0) {
@@ -1223,6 +1371,7 @@ TEST_F(GLES2DecoderTest1, GetShaderInfoLogValidArgs) {
EXPECT_EQ(strlen(kInfo) + 1, bucket->size());
EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()), kInfo,
bucket->size()));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetShaderInfoLogInvalidArgs) {
@@ -1251,6 +1400,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterfvValidArgs) {
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs0_0) {
@@ -1304,6 +1454,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterivValidArgs) {
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs0_0) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc
index 89cada4..caadef6 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc
@@ -54,6 +54,12 @@ void GLES2DecoderTestBase::SpecializedSetup<LinkProgram, 0>() {
};
template <>
+void GLES2DecoderTestBase::SpecializedSetup<RenderbufferStorage, 0>() {
+ DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_,
+ kServiceRenderbufferId);
+};
+
+template <>
void GLES2DecoderTestBase::SpecializedSetup<TexParameterf, 0>() {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
};
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
index ef5c231..f83c61a 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
@@ -28,6 +28,7 @@ TEST_F(GLES2DecoderTest2, GetVertexAttribfvValidArgs) {
1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, GetVertexAttribfvInvalidArgs2_0) {
@@ -60,6 +61,7 @@ TEST_F(GLES2DecoderTest2, GetVertexAttribivValidArgs) {
1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, GetVertexAttribivInvalidArgs2_0) {
@@ -89,6 +91,7 @@ TEST_F(GLES2DecoderTest2, HintValidArgs) {
Hint cmd;
cmd.Init(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, HintInvalidArgs0_0) {
@@ -106,6 +109,7 @@ TEST_F(GLES2DecoderTest2, IsBufferValidArgs) {
IsBuffer cmd;
cmd.Init(client_buffer_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, IsEnabledValidArgs) {
@@ -114,6 +118,7 @@ TEST_F(GLES2DecoderTest2, IsEnabledValidArgs) {
IsEnabled cmd;
cmd.Init(GL_BLEND, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, IsEnabledInvalidArgs0_0) {
@@ -140,6 +145,7 @@ TEST_F(GLES2DecoderTest2, IsFramebufferValidArgs) {
IsFramebuffer cmd;
cmd.Init(client_framebuffer_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, IsProgramValidArgs) {
@@ -148,6 +154,7 @@ TEST_F(GLES2DecoderTest2, IsProgramValidArgs) {
IsProgram cmd;
cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, IsRenderbufferValidArgs) {
@@ -156,6 +163,7 @@ TEST_F(GLES2DecoderTest2, IsRenderbufferValidArgs) {
IsRenderbuffer cmd;
cmd.Init(client_renderbuffer_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, IsShaderValidArgs) {
@@ -164,6 +172,7 @@ TEST_F(GLES2DecoderTest2, IsShaderValidArgs) {
IsShader cmd;
cmd.Init(client_shader_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, IsTextureValidArgs) {
@@ -172,6 +181,7 @@ TEST_F(GLES2DecoderTest2, IsTextureValidArgs) {
IsTexture cmd;
cmd.Init(client_texture_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, LineWidthValidArgs) {
@@ -180,6 +190,7 @@ TEST_F(GLES2DecoderTest2, LineWidthValidArgs) {
LineWidth cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, LinkProgramValidArgs) {
@@ -188,6 +199,7 @@ TEST_F(GLES2DecoderTest2, LinkProgramValidArgs) {
LinkProgram cmd;
cmd.Init(client_program_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): PixelStorei
@@ -198,6 +210,7 @@ TEST_F(GLES2DecoderTest2, PolygonOffsetValidArgs) {
PolygonOffset cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): ReadPixels
@@ -208,6 +221,16 @@ TEST_F(GLES2DecoderTest2, RenderbufferStorageValidArgs) {
RenderbufferStorage cmd;
cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
+}
+
+TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs0_0) {
+ EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
+ SpecializedSetup<RenderbufferStorage, 0>();
+ RenderbufferStorage cmd;
+ cmd.Init(GL_FRAMEBUFFER, GL_RGBA4, 3, 4);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_INVALID_ENUM, GetGLError());
}
TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs2_0) {
@@ -234,6 +257,7 @@ TEST_F(GLES2DecoderTest2, SampleCoverageValidArgs) {
SampleCoverage cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, ScissorValidArgs) {
@@ -242,6 +266,7 @@ TEST_F(GLES2DecoderTest2, ScissorValidArgs) {
Scissor cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, ScissorInvalidArgs2_0) {
@@ -272,6 +297,7 @@ TEST_F(GLES2DecoderTest2, StencilFuncValidArgs) {
StencilFunc cmd;
cmd.Init(GL_NEVER, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, StencilFuncSeparateValidArgs) {
@@ -280,6 +306,7 @@ TEST_F(GLES2DecoderTest2, StencilFuncSeparateValidArgs) {
StencilFuncSeparate cmd;
cmd.Init(GL_FRONT, GL_NEVER, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, StencilMaskValidArgs) {
@@ -288,6 +315,7 @@ TEST_F(GLES2DecoderTest2, StencilMaskValidArgs) {
StencilMask cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, StencilMaskSeparateValidArgs) {
@@ -296,6 +324,7 @@ TEST_F(GLES2DecoderTest2, StencilMaskSeparateValidArgs) {
StencilMaskSeparate cmd;
cmd.Init(GL_FRONT, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, StencilOpValidArgs) {
@@ -304,6 +333,7 @@ TEST_F(GLES2DecoderTest2, StencilOpValidArgs) {
StencilOp cmd;
cmd.Init(GL_KEEP, GL_KEEP, GL_KEEP);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, StencilOpSeparateValidArgs) {
@@ -312,6 +342,7 @@ TEST_F(GLES2DecoderTest2, StencilOpSeparateValidArgs) {
StencilOpSeparate cmd;
cmd.Init(GL_FRONT, GL_KEEP, GL_KEEP, GL_KEEP);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): TexImage2D
@@ -324,6 +355,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfValidArgs) {
TexParameterf cmd;
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs0_0) {
@@ -364,6 +396,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvValidArgs) {
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs0_0) {
@@ -428,6 +461,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) {
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_0) {
@@ -469,6 +503,7 @@ TEST_F(GLES2DecoderTest2, TexParameteriValidArgs) {
TexParameteri cmd;
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs0_0) {
@@ -509,6 +544,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivValidArgs) {
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs0_0) {
@@ -573,6 +609,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivImmediateValidArgs) {
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_0) {
@@ -618,6 +655,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fValidArgs) {
Uniform1f cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform1fvValidArgs) {
@@ -628,6 +666,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvValidArgs) {
Uniform1fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs1_0) {
@@ -666,6 +705,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) {
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): Uniform1i
// TODO(gman): Uniform1iv
@@ -677,6 +717,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fValidArgs) {
Uniform2f cmd;
cmd.Init(1, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform2fvValidArgs) {
@@ -687,6 +728,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvValidArgs) {
Uniform2fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs1_0) {
@@ -725,6 +767,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) {
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform2iValidArgs) {
@@ -733,6 +776,7 @@ TEST_F(GLES2DecoderTest2, Uniform2iValidArgs) {
Uniform2i cmd;
cmd.Init(1, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform2ivValidArgs) {
@@ -743,6 +787,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivValidArgs) {
Uniform2iv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs1_0) {
@@ -781,6 +826,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) {
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform3fValidArgs) {
@@ -789,6 +835,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fValidArgs) {
Uniform3f cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform3fvValidArgs) {
@@ -799,6 +846,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvValidArgs) {
Uniform3fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs1_0) {
@@ -837,6 +885,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) {
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform3iValidArgs) {
@@ -845,6 +894,7 @@ TEST_F(GLES2DecoderTest2, Uniform3iValidArgs) {
Uniform3i cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform3ivValidArgs) {
@@ -855,6 +905,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivValidArgs) {
Uniform3iv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs1_0) {
@@ -893,6 +944,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) {
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform4fValidArgs) {
@@ -901,6 +953,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fValidArgs) {
Uniform4f cmd;
cmd.Init(1, 2, 3, 4, 5);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform4fvValidArgs) {
@@ -911,6 +964,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvValidArgs) {
Uniform4fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs1_0) {
@@ -949,6 +1003,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) {
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform4iValidArgs) {
@@ -957,6 +1012,7 @@ TEST_F(GLES2DecoderTest2, Uniform4iValidArgs) {
Uniform4i cmd;
cmd.Init(1, 2, 3, 4, 5);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform4ivValidArgs) {
@@ -967,6 +1023,7 @@ TEST_F(GLES2DecoderTest2, Uniform4ivValidArgs) {
Uniform4iv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs1_0) {
@@ -1005,6 +1062,7 @@ TEST_F(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) {
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, UniformMatrix2fvValidArgs) {
@@ -1016,6 +1074,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvValidArgs) {
UniformMatrix2fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs1_0) {
@@ -1064,6 +1123,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) {
cmd.Init(1, 2, false, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, UniformMatrix2fvImmediateInvalidArgs2_0) {
@@ -1087,6 +1147,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvValidArgs) {
UniformMatrix3fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs1_0) {
@@ -1135,6 +1196,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) {
cmd.Init(1, 2, false, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, UniformMatrix3fvImmediateInvalidArgs2_0) {
@@ -1158,6 +1220,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvValidArgs) {
UniformMatrix4fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs1_0) {
@@ -1206,6 +1269,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) {
cmd.Init(1, 2, false, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, UniformMatrix4fvImmediateInvalidArgs2_0) {
@@ -1227,6 +1291,7 @@ TEST_F(GLES2DecoderTest2, ValidateProgramValidArgs) {
ValidateProgram cmd;
cmd.Init(client_program_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib1fValidArgs) {
@@ -1235,6 +1300,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fValidArgs) {
VertexAttrib1f cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib1fvValidArgs) {
@@ -1245,6 +1311,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fvValidArgs) {
VertexAttrib1fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_0) {
@@ -1274,6 +1341,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) {
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib2fValidArgs) {
@@ -1282,6 +1350,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fValidArgs) {
VertexAttrib2f cmd;
cmd.Init(1, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib2fvValidArgs) {
@@ -1292,6 +1361,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fvValidArgs) {
VertexAttrib2fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_0) {
@@ -1321,6 +1391,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) {
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib3fValidArgs) {
@@ -1329,6 +1400,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fValidArgs) {
VertexAttrib3f cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib3fvValidArgs) {
@@ -1339,6 +1411,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fvValidArgs) {
VertexAttrib3fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_0) {
@@ -1368,6 +1441,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) {
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib4fValidArgs) {
@@ -1376,6 +1450,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fValidArgs) {
VertexAttrib4f cmd;
cmd.Init(1, 2, 3, 4, 5);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib4fvValidArgs) {
@@ -1386,6 +1461,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fvValidArgs) {
VertexAttrib4fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_0) {
@@ -1415,6 +1491,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) {
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
// TODO(gman): VertexAttribPointer
@@ -1425,6 +1502,7 @@ TEST_F(GLES2DecoderTest2, ViewportValidArgs) {
Viewport cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+ EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, ViewportInvalidArgs2_0) {
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
index d0a7ceb..16acf9a 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
@@ -157,6 +157,26 @@ GLint GLES2DecoderTestBase::GetGLError() {
return static_cast<GLint>(*GetSharedMemoryAs<GLenum*>());
}
+void GLES2DecoderTestBase::DoBindFramebuffer(
+ GLenum target, GLuint client_id, GLuint service_id) {
+ EXPECT_CALL(*gl_, BindFramebufferEXT(target, service_id))
+ .Times(1)
+ .RetiresOnSaturation();
+ BindFramebuffer cmd;
+ cmd.Init(target, client_id);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+}
+
+void GLES2DecoderTestBase::DoBindRenderbuffer(
+ GLenum target, GLuint client_id, GLuint service_id) {
+ EXPECT_CALL(*gl_, BindRenderbufferEXT(target, service_id))
+ .Times(1)
+ .RetiresOnSaturation();
+ BindRenderbuffer cmd;
+ cmd.Init(target, client_id);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+}
+
void GLES2DecoderTestBase::DoBindTexture(
GLenum target, GLuint client_id, GLuint service_id) {
EXPECT_CALL(*gl_, BindTexture(target, service_id))
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
index c732a2c..4408e64 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
@@ -131,6 +131,8 @@ class GLES2DecoderTestBase : public testing::Test {
// EXPECT_EQ that expect both types to be the same.
GLint GetGLError();
+ void DoBindFramebuffer(GLenum target, GLuint client_id, GLuint service_id);
+ void DoBindRenderbuffer(GLenum target, GLuint client_id, GLuint service_id);
void DoBindTexture(GLenum target, GLuint client_id, GLuint service_id);
void DoTexImage2D(GLenum target, GLint level, GLenum internal_format,