summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-17 23:04:24 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-17 23:04:24 +0000
commitb112298f642b44d190d201a64cdc60963266551a (patch)
tree1520033decacec3f9a76945a55a07cdd0dd7e36c /gpu
parentb6139b9e6c79f6c6a608d66946a119396daa109c (diff)
downloadchromium_src-b112298f642b44d190d201a64cdc60963266551a.zip
chromium_src-b112298f642b44d190d201a64cdc60963266551a.tar.gz
chromium_src-b112298f642b44d190d201a64cdc60963266551a.tar.bz2
Enables vertex attrib 0 and assigns a buffer to it
and makes it impossible to disable. This makes most of the tests that were failing pass. The issue is OpenGL requires attrib 0 to be enabled or it doesn't render where as OpenGL ES 2.0 does not have this requirement. A bunch of the conformance tests that were failing were using only attrib 1. Since the command buffer can only render with vbos, no client side buffers, this seems like it works. TEST=a bunch more conformance tests pass BUG=none Review URL: http://codereview.chromium.org/2104004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47469 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu')
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py97
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder.cc398
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_autogen.h64
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc49
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc17
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h296
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc75
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h344
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc101
-rw-r--r--gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h24
-rw-r--r--gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h2
11 files changed, 992 insertions, 475 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index a211450..750dfdb 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -795,12 +795,14 @@ _ENUM_LISTS = {
'VertexAttribute': {
'type': 'GLenum',
'valid': [
+ # some enum that the decoder actually passes through to GL needs
+ # to be the first listed here since it's used in unit tests.
+ 'GL_VERTEX_ATTRIB_ARRAY_NORMALIZED',
'GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING',
'GL_VERTEX_ATTRIB_ARRAY_ENABLED',
'GL_VERTEX_ATTRIB_ARRAY_SIZE',
'GL_VERTEX_ATTRIB_ARRAY_STRIDE',
'GL_VERTEX_ATTRIB_ARRAY_TYPE',
- 'GL_VERTEX_ATTRIB_ARRAY_NORMALIZED',
'GL_CURRENT_VERTEX_ATTRIB',
],
},
@@ -1261,11 +1263,15 @@ _FUNCTION_INFO = {
'type': 'GETn',
'result': ['SizedResult<GLfloat>'],
'impl_decl': False,
+ 'decoder_func': 'DoGetVertexAttribfv',
+ 'expectation': False,
},
'GetVertexAttribiv': {
'type': 'GETn',
'result': ['SizedResult<GLint>'],
'impl_decl': False,
+ 'decoder_func': 'DoGetVertexAttribiv',
+ 'expectation': False,
},
'GetVertexAttribPointerv': {
'type': 'Custom',
@@ -1410,10 +1416,34 @@ _FUNCTION_INFO = {
'UniformMatrix4fv': {'type': 'PUTn', 'data_type': 'GLfloat', 'count': 16},
'UseProgram': {'decoder_func': 'DoUseProgram', 'unit_test': False},
'ValidateProgram': {'decoder_func': 'DoValidateProgram'},
- 'VertexAttrib1fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 1},
- 'VertexAttrib2fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 2},
- 'VertexAttrib3fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 3},
- 'VertexAttrib4fv': {'type': 'PUT', 'data_type': 'GLfloat', 'count': 4},
+ 'VertexAttrib1f': {'decoder_func': 'DoVertexAttrib1f'},
+ 'VertexAttrib1fv': {
+ 'type': 'PUT',
+ 'data_type': 'GLfloat',
+ 'count': 1,
+ 'decoder_func': 'DoVertexAttrib1fv',
+ },
+ 'VertexAttrib2f': {'decoder_func': 'DoVertexAttrib2f'},
+ 'VertexAttrib2fv': {
+ 'type': 'PUT',
+ 'data_type': 'GLfloat',
+ 'count': 2,
+ 'decoder_func': 'DoVertexAttrib2fv',
+ },
+ 'VertexAttrib3f': {'decoder_func': 'DoVertexAttrib3f'},
+ 'VertexAttrib3fv': {
+ 'type': 'PUT',
+ 'data_type': 'GLfloat',
+ 'count': 3,
+ 'decoder_func': 'DoVertexAttrib3fv',
+ },
+ 'VertexAttrib4f': {'decoder_func': 'DoVertexAttrib4f'},
+ 'VertexAttrib4fv': {
+ 'type': 'PUT',
+ 'data_type': 'GLfloat',
+ 'count': 4,
+ 'decoder_func': 'DoVertexAttrib4fv',
+ },
'VertexAttribPointer': {
'type': 'Manual',
'cmd_args': 'GLuint indx, GLint size, GLenum type, GLboolean normalized, '
@@ -1853,7 +1883,7 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d,
valid_test = """
TEST_F(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1865,7 +1895,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
@@ -2275,7 +2305,7 @@ class BindHandler(TypeHandler):
valid_test = """
TEST_F(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -2286,7 +2316,7 @@ TEST_F(%(test_name)s, %(name)sValidArgsNewId) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(first_gl_arg)s, kNewServiceId));
EXPECT_CALL(*gl_, %(gl_gen_func_name)s(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(first_arg)s, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -2306,7 +2336,7 @@ TEST_F(%(test_name)s, %(name)sValidArgsNewId) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
@@ -2407,7 +2437,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -2422,7 +2452,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
TEST_F(%(test_name)s, %(name)sInvalidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0);
GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_;
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
@@ -2440,7 +2470,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
%(name)s& cmd = *GetImmediateAs<%(name)s>();
GLuint temp = kNewClientId;
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
@@ -2455,7 +2485,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
TEST_F(%(test_name)s, %(name)sInvalidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0);
%(name)s& cmd = *GetImmediateAs<%(name)s>();
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
cmd.Init(1, &client_%(resource_name)s_id_);
EXPECT_EQ(error::kInvalidArguments,
ExecuteImmediateCmd(cmd, sizeof(&client_%(resource_name)s_id_)));
@@ -2578,7 +2608,7 @@ class CreateHandler(TypeHandler):
TEST_F(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s))
.WillOnce(Return(kNewServiceId));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(args)s%(comma)skNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -2596,7 +2626,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s%(comma)skNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));%(gl_error_test)s
@@ -2675,7 +2705,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
%(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId)))
.Times(1);
GetSharedMemoryAs<GLuint*>()[0] = client_%(resource_name)s_id_;
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -2692,7 +2722,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs) {
GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId;
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -2709,7 +2739,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
%(gl_func_name)s(1, Pointee(kService%(upper_resource_name)sId)))
.Times(1);
%(name)s& cmd = *GetImmediateAs<%(name)s>();
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
cmd.Init(1, &client_%(resource_name)s_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_%(resource_name)s_id_)));
@@ -2726,7 +2756,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs) {
%(name)s& cmd = *GetImmediateAs<%(name)s>();
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
GLuint temp = kInvalidClientId;
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
@@ -2888,7 +2918,8 @@ class GETnHandler(TypeHandler):
arg.WriteGetCode(file)
code = """ typedef %(func_name)s::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
%(last_arg_type)s params = result ? result->GetData() : NULL;
@@ -2950,7 +2981,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
typedef %(name)s::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(*gl_, %(gl_func_name)s(%(local_gl_args)s));
@@ -2986,7 +3017,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s::Result* result =
static_cast<%(name)s::Result*>(shared_memory_address_);
result->size = 0;
@@ -3014,7 +3045,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
*gl_,
%(gl_func_name)s(%(gl_args)s,
reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(data_type)s temp[%(data_count)s] = { 0, };
cmd.Init(%(gl_args)s, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -3041,7 +3072,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
%(name)s& cmd = *GetImmediateAs<%(name)s>();
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(data_type)s temp[%(data_count)s] = { 0, };
cmd.Init(%(all_but_last_args)s, &temp[0]);
EXPECT_EQ(error::%(parse_result)s,
@@ -3193,7 +3224,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
*gl_,
%(gl_func_name)s(%(gl_args)s,
reinterpret_cast<%(data_type)s*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(data_type)s temp[%(data_count)s * 2] = { 0, };
cmd.Init(%(gl_args)s, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -3220,7 +3251,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
%(name)s& cmd = *GetImmediateAs<%(name)s>();
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_any_args)s, _)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(data_type)s temp[%(data_count)s * 2] = { 0, };
cmd.Init(%(all_but_last_args)s, &temp[0]);
EXPECT_EQ(error::%(parse_result)s,
@@ -3386,7 +3417,7 @@ class PUTXnHandler(TypeHandler):
valid_test = """
TEST_F(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, Uniform%(count)sfv(%(local_args)s));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -3403,7 +3434,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
EXPECT_CALL(*gl_, Uniform%(count)s(_, _, _).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s);
EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
@@ -3545,7 +3576,7 @@ class IsHandler(TypeHandler):
valid_test = """
TEST_F(%(test_name)s, %(name)sValidArgs) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(name)s cmd;
cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -3562,7 +3593,7 @@ TEST_F(%(test_name)s, %(name)sValidArgs) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s%(comma)sshared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s
@@ -3575,7 +3606,7 @@ TEST_F(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
invalid_test = """
TEST_F(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) {
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0);
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(false);
%(name)s cmd;
cmd.Init(%(args)s%(comma)skInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -3687,7 +3718,7 @@ class STRnHandler(TypeHandler):
TEST_F(%(test_name)s, %(name)sValidArgs) {
const char* kInfo = "hello";
const uint32 kBucketId = 123;
- SpecializedSetup<%(name)s, 0>();
+ SpecializedSetup<%(name)s, 0>(true);
%(expect_len_code)s
EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s))
.WillOnce(DoAll(SetArgumentPointee<2>(strlen(kInfo)),
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index bc84352..3d68326 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -298,6 +298,9 @@ class VertexAttribManager {
class VertexAttribInfo {
public:
typedef std::list<VertexAttribInfo*> VertexAttribInfoList;
+ struct Vec4 {
+ float v[4];
+ };
VertexAttribInfo()
: index_(0),
@@ -305,8 +308,14 @@ class VertexAttribManager {
size_(4),
type_(GL_FLOAT),
offset_(0),
+ normalized_(GL_FALSE),
+ gl_stride_(0),
real_stride_(16),
list_(NULL) {
+ value_.v[0] = 0.0f;
+ value_.v[1] = 0.0f;
+ value_.v[2] = 0.0f;
+ value_.v[3] = 1.0f;
}
// Returns true if this VertexAttrib can access index.
@@ -324,16 +333,36 @@ class VertexAttribManager {
return index_;
}
+ GLint size() const {
+ return size_;
+ }
+
+ GLenum type() const {
+ return type_;
+ }
+
+ GLboolean normalized() const {
+ return normalized_;
+ }
+
+ GLsizei gl_stride() const {
+ return gl_stride_;
+ }
+
void SetInfo(
BufferManager::BufferInfo* buffer,
GLint size,
GLenum type,
+ GLboolean normalized,
+ GLsizei gl_stride,
GLsizei real_stride,
GLsizei offset) {
DCHECK_GT(real_stride, 0);
buffer_ = buffer;
size_ = size;
type_ = type;
+ normalized_ = normalized;
+ gl_stride_ = gl_stride;
real_stride_ = real_stride;
offset_ = offset;
}
@@ -346,6 +375,14 @@ class VertexAttribManager {
return enabled_;
}
+ void set_value(const Vec4& value) {
+ value_ = value;
+ }
+
+ const Vec4& value() const {
+ return value_;
+ }
+
private:
friend class VertexAttribManager;
@@ -383,11 +420,19 @@ class VertexAttribManager {
// The offset into the buffer.
GLsizei offset_;
+ GLboolean normalized_;
+
+ // The stride passed to glVertexAttribPointer.
+ GLsizei gl_stride_;
+
// The stride that will be used to access the buffer. This is the actual
// stide, NOT the GL bogus stride. In other words there is never a stride
// of 0.
GLsizei real_stride_;
+ // The current value of the attrib.
+ Vec4 value_;
+
// The buffer bound to this attribute.
BufferManager::BufferInfo::Ref buffer_;
@@ -413,8 +458,10 @@ class VertexAttribManager {
}
VertexAttribInfo* GetVertexAttribInfo(GLuint index) {
- DCHECK(index < max_vertex_attribs_);
- return &vertex_attrib_infos_[index];
+ if (index < max_vertex_attribs_) {
+ return &vertex_attrib_infos_[index];
+ }
+ return NULL;
}
private:
@@ -867,6 +914,10 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
// Wrapper for glGetShaderiv
void DoGetShaderiv(GLuint shader, GLenum pname, GLint* params);
+ // Wrappers for glGetVertexAttrib.
+ void DoGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params);
+ void DoGetVertexAttribiv(GLuint index, GLenum pname, GLint *params);
+
// Wrappers for glIsXXX functions.
bool DoIsBuffer(GLuint client_id);
bool DoIsFramebuffer(GLuint client_id);
@@ -906,6 +957,17 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
void DoUniform3fv(GLint location, GLsizei count, const GLfloat* value);
void DoUniform4fv(GLint location, GLsizei count, const GLfloat* value);
+ // Wrappers for glVertexAttrib??
+ void DoVertexAttrib1f(GLuint index, GLfloat v0);
+ void DoVertexAttrib2f(GLuint index, GLfloat v0, GLfloat v1);
+ void DoVertexAttrib3f(GLuint index, GLfloat v0, GLfloat v1, GLfloat v2);
+ void DoVertexAttrib4f(
+ GLuint index, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+ void DoVertexAttrib1fv(GLuint index, const GLfloat *v);
+ void DoVertexAttrib2fv(GLuint index, const GLfloat *v);
+ void DoVertexAttrib3fv(GLuint index, const GLfloat *v);
+ void DoVertexAttrib4fv(GLuint index, const GLfloat *v);
+
// Wrapper for glUseProgram
void DoUseProgram(GLuint program);
@@ -935,6 +997,10 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
// Checks if the current program and vertex attributes are valid for drawing.
bool IsDrawValid(GLuint max_vertex_accessed);
+ // Returns true if attrib0 was simulated.
+ bool SimulateAttrib0(GLuint max_vertex_accessed);
+ void RestoreStateForSimulatedAttrib0();
+
void SetBlackTextureForNonRenderableTextures(
bool* has_non_renderable_textures);
void RestoreStateForNonRenderableTextures();
@@ -1038,6 +1104,15 @@ class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
// Class that manages vertex attribs.
VertexAttribManager vertex_attrib_manager_;
+ // The buffer we bind to attrib 0 since OpenGL requires it (ES does not).
+ GLuint attrib_0_buffer_id_;
+
+ // The value currently in attrib_0.
+ VertexAttribManager::VertexAttribInfo::Vec4 attrib_0_value_;
+
+ // The size of attrib 0.
+ GLsizei attrib_0_size_;
+
// Current active texture by 0 - n index.
// In other words, if we call glActiveTexture(GL_TEXTURE2) this value would
// be 2.
@@ -1337,11 +1412,17 @@ GLES2DecoderImpl::GLES2DecoderImpl(ContextGroup* group)
util_(0), // TODO(gman): Set to actual num compress texture formats.
pack_alignment_(4),
unpack_alignment_(4),
+ attrib_0_buffer_id_(0),
+ attrib_0_size_(0),
active_texture_unit_(0),
black_2d_texture_id_(0),
black_cube_texture_id_(0),
anti_aliased_(false),
use_shader_translator_(true) {
+ attrib_0_value_.v[0] = 0.0f;
+ attrib_0_value_.v[1] = 0.0f;
+ attrib_0_value_.v[2] = 0.0f;
+ attrib_0_value_.v[3] = 1.0f;
}
bool GLES2DecoderImpl::Initialize(gfx::GLContext* context,
@@ -1379,6 +1460,13 @@ bool GLES2DecoderImpl::Initialize(gfx::GLContext* context,
}
vertex_attrib_manager_.Initialize(group_->max_vertex_attribs());
+ // We have to enable vertex array 0 on OpenGL or it won't render. Note that
+ // OpenGL ES 2.0 does not have this issue.
+ glEnableVertexAttribArray(0);
+ glGenBuffersARB(1, &attrib_0_buffer_id_);
+ glBindBuffer(GL_ARRAY_BUFFER, attrib_0_buffer_id_);
+ glVertexAttribPointer(0, 1, GL_FLOAT, GL_FALSE, 0, NULL);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
texture_units_.reset(
new TextureUnit[group_->max_texture_units()]);
@@ -1774,6 +1862,16 @@ void GLES2DecoderImpl::Destroy() {
if (context_) {
MakeCurrent();
+ if (black_2d_texture_id_) {
+ glDeleteTextures(1, &black_2d_texture_id_);
+ }
+ if (black_cube_texture_id_) {
+ glDeleteTextures(1, &black_cube_texture_id_);
+ }
+ if (attrib_0_buffer_id_) {
+ glDeleteBuffersARB(1, &attrib_0_buffer_id_);
+ }
+
// Remove the saved frame buffer mapping from the parent decoder. The
// parent pointer is a weak pointer so it will be null if the parent has
// already been destroyed.
@@ -2057,7 +2155,9 @@ void GLES2DecoderImpl::DoBindTexture(GLenum target, GLuint client_id) {
void GLES2DecoderImpl::DoDisableVertexAttribArray(GLuint index) {
if (vertex_attrib_manager_.Enable(index, false)) {
- glDisableVertexAttribArray(index);
+ if (index != 0) {
+ glDisableVertexAttribArray(index);
+ }
} else {
SetGLError(GL_INVALID_VALUE,
"glDisableVertexAttribArray: index out of range");
@@ -2499,11 +2599,15 @@ void GLES2DecoderImpl::DoDrawArrays(
GLenum mode, GLint first, GLsizei count) {
if (IsDrawValid(first + count - 1)) {
bool has_non_renderable_textures;
+ bool simulated_attrib_0 = SimulateAttrib0(first + count - 1);
SetBlackTextureForNonRenderableTextures(&has_non_renderable_textures);
glDrawArrays(mode, first, count);
if (has_non_renderable_textures) {
RestoreStateForNonRenderableTextures();
}
+ if (simulated_attrib_0) {
+ RestoreStateForSimulatedAttrib0();
+ }
}
}
@@ -2938,7 +3042,64 @@ bool GLES2DecoderImpl::IsDrawValid(GLuint max_vertex_accessed) {
}
}
return true;
-};
+}
+
+bool GLES2DecoderImpl::SimulateAttrib0(GLuint max_vertex_accessed) {
+#if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2)
+ const VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(0);
+ // If it's enabled or it's not used then we don't need to do anything.
+ if (info->enabled() || !current_program_->GetAttribInfoByLocation(0)) {
+ return false;
+ }
+
+ typedef VertexAttribManager::VertexAttribInfo::Vec4 Vec4;
+
+ glBindBuffer(GL_ARRAY_BUFFER, attrib_0_buffer_id_);
+
+ // Make a buffer with a single repeated vec4 value enough to
+ // simulate the constant value that is supposed to be here.
+ // This is required to emulate GLES2 on GL.
+ GLsizei num_vertices = max_vertex_accessed + 1;
+ GLsizei size_needed = num_vertices * sizeof(Vec4); // NOLINT
+ if (size_needed > attrib_0_size_ ||
+ info->value().v[0] != attrib_0_value_.v[0] ||
+ info->value().v[1] != attrib_0_value_.v[1] ||
+ info->value().v[2] != attrib_0_value_.v[2] ||
+ info->value().v[3] != attrib_0_value_.v[3]) {
+ scoped_array<Vec4> temp(new Vec4[num_vertices]);
+ for (GLsizei ii = 0; ii < num_vertices; ++ii) {
+ temp[ii] = info->value();
+ }
+ glBufferData(
+ GL_ARRAY_BUFFER,
+ size_needed,
+ &temp[0].v[0],
+ GL_DYNAMIC_DRAW);
+ attrib_0_value_ = info->value();
+ attrib_0_size_ = size_needed;
+ }
+
+ glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, NULL);
+
+ return true;
+#else // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2
+ return false;
+#endif // GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2
+}
+
+void GLES2DecoderImpl::RestoreStateForSimulatedAttrib0() {
+ const VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(0);
+ const void* ptr = reinterpret_cast<const void*>(info->offset());
+ BufferManager::BufferInfo* buffer_info = info->buffer();
+ glBindBuffer(GL_ARRAY_BUFFER, buffer_info ? buffer_info->service_id() : 0);
+ glVertexAttribPointer(
+ 0, info->size(), info->type(), info->normalized(), info->gl_stride(),
+ ptr);
+ glBindBuffer(GL_ARRAY_BUFFER,
+ bound_array_buffer_ ? bound_array_buffer_->service_id() : 0);
+}
error::Error GLES2DecoderImpl::HandleDrawElements(
uint32 immediate_data_size, const gles2::DrawElements& c) {
@@ -2980,6 +3141,7 @@ error::Error GLES2DecoderImpl::HandleDrawElements(
if (IsDrawValid(max_vertex_accessed)) {
bool has_non_renderable_textures;
+ bool simulated_attrib_0 = SimulateAttrib0(max_vertex_accessed);
SetBlackTextureForNonRenderableTextures(
&has_non_renderable_textures);
const GLvoid* indices = reinterpret_cast<const GLvoid*>(offset);
@@ -2987,6 +3149,9 @@ error::Error GLES2DecoderImpl::HandleDrawElements(
if (has_non_renderable_textures) {
RestoreStateForNonRenderableTextures();
}
+ if (simulated_attrib_0) {
+ RestoreStateForSimulatedAttrib0();
+ }
}
return error::kNoError;
}
@@ -3243,6 +3408,226 @@ void GLES2DecoderImpl::DoValidateProgram(GLuint program_client_id) {
glValidateProgram(info->service_id());
}
+void GLES2DecoderImpl::DoGetVertexAttribfv(
+ GLuint index, GLenum pname, GLfloat* params) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glGetVertexAttribfv: index out of range");
+ return;
+ }
+ switch (pname) {
+ case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: {
+ BufferManager::BufferInfo* buffer = info->buffer();
+ if (buffer && !buffer->IsDeleted()) {
+ GLuint client_id;
+ buffer_manager()->GetClientId(buffer->service_id(), &client_id);
+ *params = static_cast<GLfloat>(client_id);
+ }
+ break;
+ }
+ case GL_VERTEX_ATTRIB_ARRAY_ENABLED:
+ *params = static_cast<GLfloat>(info->enabled());
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_SIZE:
+ *params = static_cast<GLfloat>(info->size());
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_STRIDE:
+ *params = static_cast<GLfloat>(info->gl_stride());
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_TYPE:
+ *params = static_cast<GLfloat>(info->type());
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:
+ *params = static_cast<GLfloat>(info->normalized());
+ break;
+ case GL_CURRENT_VERTEX_ATTRIB:
+ params[0] = info->value().v[0];
+ params[1] = info->value().v[1];
+ params[2] = info->value().v[2];
+ params[3] = info->value().v[3];
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+}
+
+void GLES2DecoderImpl::DoGetVertexAttribiv(
+ GLuint index, GLenum pname, GLint* params) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glGetVertexAttribiv: index out of range");
+ return;
+ }
+ switch (pname) {
+ case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: {
+ BufferManager::BufferInfo* buffer = info->buffer();
+ if (buffer && !buffer->IsDeleted()) {
+ GLuint client_id;
+ buffer_manager()->GetClientId(buffer->service_id(), &client_id);
+ *params = client_id;
+ }
+ break;
+ }
+ case GL_VERTEX_ATTRIB_ARRAY_ENABLED:
+ *params = info->enabled();
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_SIZE:
+ *params = info->size();
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_STRIDE:
+ *params = info->gl_stride();
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_TYPE:
+ *params = info->type();
+ break;
+ case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:
+ *params = static_cast<GLint>(info->normalized());
+ break;
+ case GL_CURRENT_VERTEX_ATTRIB:
+ params[0] = static_cast<GLint>(info->value().v[0]);
+ params[1] = static_cast<GLint>(info->value().v[1]);
+ params[2] = static_cast<GLint>(info->value().v[2]);
+ params[3] = static_cast<GLint>(info->value().v[3]);
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+}
+
+void GLES2DecoderImpl::DoVertexAttrib1f(GLuint index, GLfloat v0) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib1f: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v0;
+ value.v[1] = 0.0f;
+ value.v[2] = 0.0f;
+ value.v[3] = 1.0f;
+ info->set_value(value);
+ glVertexAttrib1f(index, v0);
+}
+
+void GLES2DecoderImpl::DoVertexAttrib2f(GLuint index, GLfloat v0, GLfloat v1) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib2f: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v0;
+ value.v[1] = v1;
+ value.v[2] = 0.0f;
+ value.v[3] = 1.0f;
+ info->set_value(value);
+ glVertexAttrib2f(index, v0, v1);
+}
+
+void GLES2DecoderImpl::DoVertexAttrib3f(
+ GLuint index, GLfloat v0, GLfloat v1, GLfloat v2) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib3f: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v0;
+ value.v[1] = v1;
+ value.v[2] = v2;
+ value.v[3] = 1.0f;
+ info->set_value(value);
+ glVertexAttrib3f(index, v0, v1, v2);
+}
+
+void GLES2DecoderImpl::DoVertexAttrib4f(
+ GLuint index, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib4f: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v0;
+ value.v[1] = v1;
+ value.v[2] = v2;
+ value.v[3] = v3;
+ info->set_value(value);
+ glVertexAttrib4f(index, v0, v1, v2, v3);
+}
+
+void GLES2DecoderImpl::DoVertexAttrib1fv(GLuint index, const GLfloat* v) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib1fv: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v[0];
+ value.v[1] = 0.0f;
+ value.v[2] = 0.0f;
+ value.v[3] = 1.0f;
+ info->set_value(value);
+ glVertexAttrib1fv(index, v);
+}
+
+void GLES2DecoderImpl::DoVertexAttrib2fv(GLuint index, const GLfloat* v) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib2fv: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v[0];
+ value.v[1] = v[1];
+ value.v[2] = 0.0f;
+ value.v[3] = 1.0f;
+ info->set_value(value);
+ glVertexAttrib2fv(index, v);
+}
+
+void GLES2DecoderImpl::DoVertexAttrib3fv(GLuint index, const GLfloat* v) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib3fv: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v[0];
+ value.v[1] = v[1];
+ value.v[2] = v[2];
+ value.v[3] = 1.0f;
+ info->set_value(value);
+ glVertexAttrib3fv(index, v);
+}
+
+void GLES2DecoderImpl::DoVertexAttrib4fv(GLuint index, const GLfloat* v) {
+ VertexAttribManager::VertexAttribInfo* info =
+ vertex_attrib_manager_.GetVertexAttribInfo(index);
+ if (!info) {
+ SetGLError(GL_INVALID_VALUE, "glVertexAttrib4fv: index out of range");
+ return;
+ }
+ VertexAttribManager::VertexAttribInfo::Vec4 value;
+ value.v[0] = v[0];
+ value.v[1] = v[1];
+ value.v[2] = v[2];
+ value.v[3] = v[3];
+ info->set_value(value);
+ glVertexAttrib4fv(index, v);
+}
+
error::Error GLES2DecoderImpl::HandleVertexAttribPointer(
uint32 immediate_data_size, const gles2::VertexAttribPointer& c) {
if (!bound_array_buffer_ || bound_array_buffer_->IsDeleted()) {
@@ -3289,7 +3674,6 @@ error::Error GLES2DecoderImpl::HandleVertexAttribPointer(
}
GLsizei component_size =
GLES2Util::GetGLTypeSizeForTexturesAndBuffers(type);
- GLsizei real_stride = stride != 0 ? stride : component_size * size;
if (offset % component_size > 0) {
SetGLError(GL_INVALID_VALUE,
"glVertexAttribPointer: stride not valid for type");
@@ -3299,7 +3683,9 @@ error::Error GLES2DecoderImpl::HandleVertexAttribPointer(
bound_array_buffer_,
size,
type,
- real_stride,
+ normalized,
+ stride,
+ stride != 0 ? stride : component_size * size,
offset);
glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
return error::kNoError;
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
index 0b595e4..d6de595 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
@@ -954,7 +954,8 @@ error::Error GLES2DecoderImpl::HandleGetBooleanv(
uint32 immediate_data_size, const gles2::GetBooleanv& c) {
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetBooleanv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLboolean* params = result ? result->GetData() : NULL;
@@ -985,7 +986,8 @@ error::Error GLES2DecoderImpl::HandleGetBufferParameteriv(
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetBufferParameteriv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1033,7 +1035,8 @@ error::Error GLES2DecoderImpl::HandleGetFloatv(
uint32 immediate_data_size, const gles2::GetFloatv& c) {
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetFloatv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLfloat* params = result ? result->GetData() : NULL;
@@ -1066,7 +1069,8 @@ error::Error GLES2DecoderImpl::HandleGetFramebufferAttachmentParameteriv(
GLenum attachment = static_cast<GLenum>(c.attachment);
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetFramebufferAttachmentParameteriv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1110,7 +1114,8 @@ error::Error GLES2DecoderImpl::HandleGetIntegerv(
uint32 immediate_data_size, const gles2::GetIntegerv& c) {
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetIntegerv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1141,7 +1146,8 @@ error::Error GLES2DecoderImpl::HandleGetProgramiv(
GLuint program = c.program;
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetProgramiv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1172,7 +1178,8 @@ error::Error GLES2DecoderImpl::HandleGetRenderbufferParameteriv(
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetRenderbufferParameteriv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1211,7 +1218,8 @@ error::Error GLES2DecoderImpl::HandleGetShaderiv(
GLuint shader = c.shader;
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetShaderiv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1242,7 +1250,8 @@ error::Error GLES2DecoderImpl::HandleGetTexParameterfv(
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetTexParameterfv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLfloat* params = result ? result->GetData() : NULL;
@@ -1277,7 +1286,8 @@ error::Error GLES2DecoderImpl::HandleGetTexParameteriv(
GLenum target = static_cast<GLenum>(c.target);
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetTexParameteriv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1312,7 +1322,8 @@ error::Error GLES2DecoderImpl::HandleGetVertexAttribfv(
GLuint index = static_cast<GLuint>(c.index);
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetVertexAttribfv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLfloat* params = result ? result->GetData() : NULL;
@@ -1328,7 +1339,7 @@ error::Error GLES2DecoderImpl::HandleGetVertexAttribfv(
return error::kInvalidArguments;
}
CopyRealGLErrorsToWrapper();
- glGetVertexAttribfv(index, pname, params);
+ DoGetVertexAttribfv(index, pname, params);
GLenum error = glGetError();
if (error == GL_NO_ERROR) {
result->SetNumResults(num_values);
@@ -1343,7 +1354,8 @@ error::Error GLES2DecoderImpl::HandleGetVertexAttribiv(
GLuint index = static_cast<GLuint>(c.index);
GLenum pname = static_cast<GLenum>(c.pname);
typedef GetVertexAttribiv::Result Result;
- GLsizei num_values = GetNumValuesReturnedForGLGet(pname, &num_values);
+ GLsizei num_values = 0;
+ GetNumValuesReturnedForGLGet(pname, &num_values);
Result* result = GetSharedMemoryAs<Result*>(
c.params_shm_id, c.params_shm_offset, Result::ComputeSize(num_values));
GLint* params = result ? result->GetData() : NULL;
@@ -1359,7 +1371,7 @@ error::Error GLES2DecoderImpl::HandleGetVertexAttribiv(
return error::kInvalidArguments;
}
CopyRealGLErrorsToWrapper();
- glGetVertexAttribiv(index, pname, params);
+ DoGetVertexAttribiv(index, pname, params);
GLenum error = glGetError();
if (error == GL_NO_ERROR) {
result->SetNumResults(num_values);
@@ -2519,7 +2531,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib1f(
uint32 immediate_data_size, const gles2::VertexAttrib1f& c) {
GLuint indx = static_cast<GLuint>(c.indx);
GLfloat x = static_cast<GLfloat>(c.x);
- glVertexAttrib1f(indx, x);
+ DoVertexAttrib1f(indx, x);
return error::kNoError;
}
@@ -2535,7 +2547,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib1fv(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib1fv(indx, values);
+ DoVertexAttrib1fv(indx, values);
return error::kNoError;
}
@@ -2554,7 +2566,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib1fvImmediate(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib1fv(indx, values);
+ DoVertexAttrib1fv(indx, values);
return error::kNoError;
}
@@ -2563,7 +2575,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib2f(
GLuint indx = static_cast<GLuint>(c.indx);
GLfloat x = static_cast<GLfloat>(c.x);
GLfloat y = static_cast<GLfloat>(c.y);
- glVertexAttrib2f(indx, x, y);
+ DoVertexAttrib2f(indx, x, y);
return error::kNoError;
}
@@ -2579,7 +2591,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib2fv(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib2fv(indx, values);
+ DoVertexAttrib2fv(indx, values);
return error::kNoError;
}
@@ -2598,7 +2610,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib2fvImmediate(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib2fv(indx, values);
+ DoVertexAttrib2fv(indx, values);
return error::kNoError;
}
@@ -2608,7 +2620,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib3f(
GLfloat x = static_cast<GLfloat>(c.x);
GLfloat y = static_cast<GLfloat>(c.y);
GLfloat z = static_cast<GLfloat>(c.z);
- glVertexAttrib3f(indx, x, y, z);
+ DoVertexAttrib3f(indx, x, y, z);
return error::kNoError;
}
@@ -2624,7 +2636,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib3fv(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib3fv(indx, values);
+ DoVertexAttrib3fv(indx, values);
return error::kNoError;
}
@@ -2643,7 +2655,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib3fvImmediate(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib3fv(indx, values);
+ DoVertexAttrib3fv(indx, values);
return error::kNoError;
}
@@ -2654,7 +2666,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib4f(
GLfloat y = static_cast<GLfloat>(c.y);
GLfloat z = static_cast<GLfloat>(c.z);
GLfloat w = static_cast<GLfloat>(c.w);
- glVertexAttrib4f(indx, x, y, z, w);
+ DoVertexAttrib4f(indx, x, y, z, w);
return error::kNoError;
}
@@ -2670,7 +2682,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib4fv(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib4fv(indx, values);
+ DoVertexAttrib4fv(indx, values);
return error::kNoError;
}
@@ -2689,7 +2701,7 @@ error::Error GLES2DecoderImpl::HandleVertexAttrib4fvImmediate(
if (values == NULL) {
return error::kOutOfBounds;
}
- glVertexAttrib4fv(indx, values);
+ DoVertexAttrib4fv(indx, values);
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 7a5b708..766dfae 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc
@@ -45,10 +45,38 @@ class GLES2DecoderWithShaderTest : public GLES2DecoderWithShaderTestBase {
GLES2DecoderWithShaderTest()
: GLES2DecoderWithShaderTestBase() {
}
+
+ void AddExpectationsForSimulatedAttrib0(
+ GLsizei num_vertices, GLuint buffer_id) {
+#if !defined(GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2)
+ EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kServiceAttrib0BufferId))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, BufferData(GL_ARRAY_BUFFER,
+ num_vertices * sizeof(GLfloat) * 4,
+ _, GL_DYNAMIC_DRAW))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, VertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, NULL))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, 0))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, VertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, NULL))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, buffer_id))
+ .Times(1)
+ .RetiresOnSaturation();
+ }
+#endif // !GLES2_GPU_SERVICE_BACKEND_NATIVE_GLES2
};
TEST_F(GLES2DecoderWithShaderTest, DrawArraysNoAttributesSucceeds) {
SetupTexture();
+ AddExpectationsForSimulatedAttrib0(kNumVertices, 0);
+
EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices))
.Times(1)
.RetiresOnSaturation();
@@ -64,6 +92,7 @@ TEST_F(GLES2DecoderWithShaderTest, DrawArraysBadTextureUsesBlack) {
// this should trigger replacing with black textures before rendering.
DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 3, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
0, 0);
+ AddExpectationsForSimulatedAttrib0(kNumVertices, 0);
{
InSequence sequence;
EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE0))
@@ -106,6 +135,7 @@ TEST_F(GLES2DecoderWithShaderTest, DrawArraysValidAttributesSucceeds) {
SetupTexture();
SetupVertexBuffer();
DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0);
+ AddExpectationsForSimulatedAttrib0(kNumVertices, kServiceBufferId);
EXPECT_CALL(*gl_, DrawArrays(GL_TRIANGLES, 0, kNumVertices))
.Times(1)
@@ -200,6 +230,7 @@ TEST_F(GLES2DecoderWithShaderTest, DrawArraysInvalidCountFails) {
TEST_F(GLES2DecoderWithShaderTest, DrawElementsNoAttributesSucceeds) {
SetupTexture();
SetupIndexBuffer();
+ AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, 0);
EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount,
GL_UNSIGNED_SHORT,
BufferOffset(kValidIndexRangeStart * 2)))
@@ -243,6 +274,7 @@ TEST_F(GLES2DecoderWithShaderTest, DrawElementsValidAttributesSucceeds) {
SetupVertexBuffer();
SetupIndexBuffer();
DoVertexAttribPointer(1, 2, GL_FLOAT, 0, 0);
+ AddExpectationsForSimulatedAttrib0(kMaxValidIndex + 1, kServiceBufferId);
EXPECT_CALL(*gl_, DrawElements(GL_TRIANGLES, kValidIndexRangeCount,
GL_UNSIGNED_SHORT,
@@ -1026,7 +1058,7 @@ TEST_F(GLES2DecoderTest, GenerateMipmapWrongFormatsFails) {
TEST_F(GLES2DecoderWithShaderTest, Uniform1iValidArgs) {
EXPECT_CALL(*gl_, Uniform1i(kUniform1Location, 2));
- SpecializedSetup<Uniform1i, 0>();
+ SpecializedSetup<Uniform1i, 0>(true);
Uniform1i cmd;
cmd.Init(kUniform1Location, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1037,7 +1069,7 @@ TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) {
*gl_, Uniform1iv(
kUniform1Location, 2,
reinterpret_cast<const GLint*>(shared_memory_address_)));
- SpecializedSetup<Uniform1iv, 0>();
+ SpecializedSetup<Uniform1iv, 0>(true);
Uniform1iv cmd;
cmd.Init(kUniform1Location, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1045,7 +1077,7 @@ TEST_F(GLES2DecoderWithShaderTest, Uniform1ivValidArgs) {
TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform1iv, 0>();
+ SpecializedSetup<Uniform1iv, 0>(false);
Uniform1iv cmd;
cmd.Init(kUniform1Location, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1053,7 +1085,7 @@ TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_0) {
TEST_F(GLES2DecoderWithShaderTest, Uniform1ivInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform1iv, 0>();
+ SpecializedSetup<Uniform1iv, 0>(false);
Uniform1iv cmd;
cmd.Init(kUniform1Location, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1065,7 +1097,7 @@ TEST_F(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) {
*gl_,
Uniform1iv(kUniform1Location, 2,
reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform1ivImmediate, 0>();
+ SpecializedSetup<Uniform1ivImmediate, 0>(true);
GLint temp[1 * 2] = { 0, };
cmd.Init(kUniform1Location, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1077,6 +1109,7 @@ TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) {
DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
// Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER
// NOTE: Real GLES2 does not have this restriction but WebGL and we do.
+ // This can be restriction can be removed at runtime.
EXPECT_CALL(*gl_, BindBuffer(_, _))
.Times(0);
BindBuffer cmd;
@@ -1087,16 +1120,16 @@ TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) {
TEST_F(GLES2DecoderTest, ActiveTextureValidArgs) {
EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1));
- SpecializedSetup<ActiveTexture, 0>();
+ SpecializedSetup<ActiveTexture, 0>(true);
ActiveTexture cmd;
cmd.Init(GL_TEXTURE1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
-TEST_F(GLES2DecoderTest, ActiveTextureInalidArgs) {
+TEST_F(GLES2DecoderTest, ActiveTextureInvalidArgs) {
EXPECT_CALL(*gl_, ActiveTexture(_)).Times(0);
- SpecializedSetup<ActiveTexture, 0>();
+ SpecializedSetup<ActiveTexture, 0>(false);
ActiveTexture cmd;
cmd.Init(GL_TEXTURE0 - 1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
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 cd78e98..7be16d6 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc
@@ -33,7 +33,8 @@ class GLES2DecoderTest1 : public GLES2DecoderTestBase {
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<GenerateMipmap, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<GenerateMipmap, 0>(
+ bool /* valid */) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
DoTexImage2D(
GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE,
@@ -41,32 +42,36 @@ void GLES2DecoderTestBase::SpecializedSetup<GenerateMipmap, 0>() {
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<CheckFramebufferStatus, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<CheckFramebufferStatus, 0>(
+ bool /* valid */) {
DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
kServiceFramebufferId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<FramebufferRenderbuffer, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<FramebufferRenderbuffer, 0>(
+ bool /* valid */) {
DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
kServiceFramebufferId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<FramebufferTexture2D, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<FramebufferTexture2D, 0>(
+ bool /* valid */) {
DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
kServiceFramebufferId);
};
template <>
void GLES2DecoderTestBase::SpecializedSetup<GetFramebufferAttachmentParameteriv,
- 0>() {
+ 0>(bool /* valid */) {
DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_,
kServiceFramebufferId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<GetRenderbufferParameteriv, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<GetRenderbufferParameteriv, 0>(
+ bool /* valid */) {
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_,
kServiceRenderbufferId);
};
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 4379a10..824c051 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
@@ -12,7 +12,7 @@
TEST_F(GLES2DecoderTest1, AttachShaderValidArgs) {
EXPECT_CALL(*gl_, AttachShader(kServiceProgramId, kServiceShaderId));
- SpecializedSetup<AttachShader, 0>();
+ SpecializedSetup<AttachShader, 0>(true);
AttachShader cmd;
cmd.Init(client_program_id_, client_shader_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -26,7 +26,7 @@ TEST_F(GLES2DecoderTest1, AttachShaderValidArgs) {
TEST_F(GLES2DecoderTest1, BindBufferValidArgs) {
EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kServiceBufferId));
- SpecializedSetup<BindBuffer, 0>();
+ SpecializedSetup<BindBuffer, 0>(true);
BindBuffer cmd;
cmd.Init(GL_ARRAY_BUFFER, client_buffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -37,7 +37,7 @@ TEST_F(GLES2DecoderTest1, BindBufferValidArgsNewId) {
EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kNewServiceId));
EXPECT_CALL(*gl_, GenBuffersARB(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
- SpecializedSetup<BindBuffer, 0>();
+ SpecializedSetup<BindBuffer, 0>(true);
BindBuffer cmd;
cmd.Init(GL_ARRAY_BUFFER, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -47,7 +47,7 @@ TEST_F(GLES2DecoderTest1, BindBufferValidArgsNewId) {
TEST_F(GLES2DecoderTest1, BindBufferInvalidArgs0_0) {
EXPECT_CALL(*gl_, BindBuffer(_, _)).Times(0);
- SpecializedSetup<BindBuffer, 0>();
+ SpecializedSetup<BindBuffer, 0>(false);
BindBuffer cmd;
cmd.Init(GL_RENDERBUFFER, client_buffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -56,7 +56,7 @@ TEST_F(GLES2DecoderTest1, BindBufferInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, BindFramebufferValidArgs) {
EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kServiceFramebufferId));
- SpecializedSetup<BindFramebuffer, 0>();
+ SpecializedSetup<BindFramebuffer, 0>(true);
BindFramebuffer cmd;
cmd.Init(GL_FRAMEBUFFER, client_framebuffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -67,7 +67,7 @@ TEST_F(GLES2DecoderTest1, BindFramebufferValidArgsNewId) {
EXPECT_CALL(*gl_, BindFramebufferEXT(GL_FRAMEBUFFER, kNewServiceId));
EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
- SpecializedSetup<BindFramebuffer, 0>();
+ SpecializedSetup<BindFramebuffer, 0>(true);
BindFramebuffer cmd;
cmd.Init(GL_FRAMEBUFFER, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -77,7 +77,7 @@ TEST_F(GLES2DecoderTest1, BindFramebufferValidArgsNewId) {
TEST_F(GLES2DecoderTest1, BindFramebufferInvalidArgs0_0) {
EXPECT_CALL(*gl_, BindFramebufferEXT(_, _)).Times(0);
- SpecializedSetup<BindFramebuffer, 0>();
+ SpecializedSetup<BindFramebuffer, 0>(false);
BindFramebuffer cmd;
cmd.Init(GL_RENDERBUFFER, client_framebuffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -87,7 +87,7 @@ TEST_F(GLES2DecoderTest1, BindFramebufferInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, BindRenderbufferValidArgs) {
EXPECT_CALL(
*gl_, BindRenderbufferEXT(GL_RENDERBUFFER, kServiceRenderbufferId));
- SpecializedSetup<BindRenderbuffer, 0>();
+ SpecializedSetup<BindRenderbuffer, 0>(true);
BindRenderbuffer cmd;
cmd.Init(GL_RENDERBUFFER, client_renderbuffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -98,7 +98,7 @@ TEST_F(GLES2DecoderTest1, BindRenderbufferValidArgsNewId) {
EXPECT_CALL(*gl_, BindRenderbufferEXT(GL_RENDERBUFFER, kNewServiceId));
EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
- SpecializedSetup<BindRenderbuffer, 0>();
+ SpecializedSetup<BindRenderbuffer, 0>(true);
BindRenderbuffer cmd;
cmd.Init(GL_RENDERBUFFER, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -108,7 +108,7 @@ TEST_F(GLES2DecoderTest1, BindRenderbufferValidArgsNewId) {
TEST_F(GLES2DecoderTest1, BindRenderbufferInvalidArgs0_0) {
EXPECT_CALL(*gl_, BindRenderbufferEXT(_, _)).Times(0);
- SpecializedSetup<BindRenderbuffer, 0>();
+ SpecializedSetup<BindRenderbuffer, 0>(false);
BindRenderbuffer cmd;
cmd.Init(GL_FRAMEBUFFER, client_renderbuffer_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -117,7 +117,7 @@ TEST_F(GLES2DecoderTest1, BindRenderbufferInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, BindTextureValidArgs) {
EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceTextureId));
- SpecializedSetup<BindTexture, 0>();
+ SpecializedSetup<BindTexture, 0>(true);
BindTexture cmd;
cmd.Init(GL_TEXTURE_2D, client_texture_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -128,7 +128,7 @@ TEST_F(GLES2DecoderTest1, BindTextureValidArgsNewId) {
EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kNewServiceId));
EXPECT_CALL(*gl_, GenTextures(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
- SpecializedSetup<BindTexture, 0>();
+ SpecializedSetup<BindTexture, 0>(true);
BindTexture cmd;
cmd.Init(GL_TEXTURE_2D, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -138,7 +138,7 @@ TEST_F(GLES2DecoderTest1, BindTextureValidArgsNewId) {
TEST_F(GLES2DecoderTest1, BindTextureInvalidArgs0_0) {
EXPECT_CALL(*gl_, BindTexture(_, _)).Times(0);
- SpecializedSetup<BindTexture, 0>();
+ SpecializedSetup<BindTexture, 0>(false);
BindTexture cmd;
cmd.Init(GL_TEXTURE_1D, client_texture_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -147,7 +147,7 @@ TEST_F(GLES2DecoderTest1, BindTextureInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, BindTextureInvalidArgs0_1) {
EXPECT_CALL(*gl_, BindTexture(_, _)).Times(0);
- SpecializedSetup<BindTexture, 0>();
+ SpecializedSetup<BindTexture, 0>(false);
BindTexture cmd;
cmd.Init(GL_TEXTURE_3D, client_texture_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -156,7 +156,7 @@ TEST_F(GLES2DecoderTest1, BindTextureInvalidArgs0_1) {
TEST_F(GLES2DecoderTest1, BlendColorValidArgs) {
EXPECT_CALL(*gl_, BlendColor(1, 2, 3, 4));
- SpecializedSetup<BlendColor, 0>();
+ SpecializedSetup<BlendColor, 0>(true);
BlendColor cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -165,7 +165,7 @@ TEST_F(GLES2DecoderTest1, BlendColorValidArgs) {
TEST_F(GLES2DecoderTest1, BlendEquationValidArgs) {
EXPECT_CALL(*gl_, BlendEquation(GL_FUNC_ADD));
- SpecializedSetup<BlendEquation, 0>();
+ SpecializedSetup<BlendEquation, 0>(true);
BlendEquation cmd;
cmd.Init(GL_FUNC_ADD);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -174,7 +174,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationValidArgs) {
TEST_F(GLES2DecoderTest1, BlendEquationInvalidArgs0_0) {
EXPECT_CALL(*gl_, BlendEquation(_)).Times(0);
- SpecializedSetup<BlendEquation, 0>();
+ SpecializedSetup<BlendEquation, 0>(false);
BlendEquation cmd;
cmd.Init(GL_MIN);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -183,7 +183,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, BlendEquationInvalidArgs0_1) {
EXPECT_CALL(*gl_, BlendEquation(_)).Times(0);
- SpecializedSetup<BlendEquation, 0>();
+ SpecializedSetup<BlendEquation, 0>(false);
BlendEquation cmd;
cmd.Init(GL_MAX);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -192,7 +192,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationInvalidArgs0_1) {
TEST_F(GLES2DecoderTest1, BlendEquationSeparateValidArgs) {
EXPECT_CALL(*gl_, BlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD));
- SpecializedSetup<BlendEquationSeparate, 0>();
+ SpecializedSetup<BlendEquationSeparate, 0>(true);
BlendEquationSeparate cmd;
cmd.Init(GL_FUNC_ADD, GL_FUNC_ADD);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -201,7 +201,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationSeparateValidArgs) {
TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_0) {
EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0);
- SpecializedSetup<BlendEquationSeparate, 0>();
+ SpecializedSetup<BlendEquationSeparate, 0>(false);
BlendEquationSeparate cmd;
cmd.Init(GL_MIN, GL_FUNC_ADD);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -210,7 +210,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_1) {
EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0);
- SpecializedSetup<BlendEquationSeparate, 0>();
+ SpecializedSetup<BlendEquationSeparate, 0>(false);
BlendEquationSeparate cmd;
cmd.Init(GL_MAX, GL_FUNC_ADD);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -219,7 +219,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs0_1) {
TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_0) {
EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0);
- SpecializedSetup<BlendEquationSeparate, 0>();
+ SpecializedSetup<BlendEquationSeparate, 0>(false);
BlendEquationSeparate cmd;
cmd.Init(GL_FUNC_ADD, GL_MIN);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -228,7 +228,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_0) {
TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_1) {
EXPECT_CALL(*gl_, BlendEquationSeparate(_, _)).Times(0);
- SpecializedSetup<BlendEquationSeparate, 0>();
+ SpecializedSetup<BlendEquationSeparate, 0>(false);
BlendEquationSeparate cmd;
cmd.Init(GL_FUNC_ADD, GL_MAX);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -237,7 +237,7 @@ TEST_F(GLES2DecoderTest1, BlendEquationSeparateInvalidArgs1_1) {
TEST_F(GLES2DecoderTest1, BlendFuncValidArgs) {
EXPECT_CALL(*gl_, BlendFunc(GL_ZERO, GL_ZERO));
- SpecializedSetup<BlendFunc, 0>();
+ SpecializedSetup<BlendFunc, 0>(true);
BlendFunc cmd;
cmd.Init(GL_ZERO, GL_ZERO);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -246,7 +246,7 @@ TEST_F(GLES2DecoderTest1, BlendFuncValidArgs) {
TEST_F(GLES2DecoderTest1, BlendFuncSeparateValidArgs) {
EXPECT_CALL(*gl_, BlendFuncSeparate(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO));
- SpecializedSetup<BlendFuncSeparate, 0>();
+ SpecializedSetup<BlendFuncSeparate, 0>(true);
BlendFuncSeparate cmd;
cmd.Init(GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -263,7 +263,7 @@ TEST_F(GLES2DecoderTest1, BlendFuncSeparateValidArgs) {
TEST_F(GLES2DecoderTest1, CheckFramebufferStatusValidArgs) {
EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER));
- SpecializedSetup<CheckFramebufferStatus, 0>();
+ SpecializedSetup<CheckFramebufferStatus, 0>(true);
CheckFramebufferStatus cmd;
cmd.Init(GL_FRAMEBUFFER, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -272,7 +272,7 @@ TEST_F(GLES2DecoderTest1, CheckFramebufferStatusValidArgs) {
TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_0) {
EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(_)).Times(0);
- SpecializedSetup<CheckFramebufferStatus, 0>();
+ SpecializedSetup<CheckFramebufferStatus, 0>(false);
CheckFramebufferStatus cmd;
cmd.Init(GL_RENDERBUFFER, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -281,7 +281,7 @@ TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgsBadSharedMemoryId) {
EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)).Times(0);
- SpecializedSetup<CheckFramebufferStatus, 0>();
+ SpecializedSetup<CheckFramebufferStatus, 0>(false);
CheckFramebufferStatus cmd;
cmd.Init(GL_FRAMEBUFFER, kInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -291,7 +291,7 @@ TEST_F(GLES2DecoderTest1, CheckFramebufferStatusInvalidArgsBadSharedMemoryId) {
TEST_F(GLES2DecoderTest1, ClearValidArgs) {
EXPECT_CALL(*gl_, Clear(1));
- SpecializedSetup<Clear, 0>();
+ SpecializedSetup<Clear, 0>(true);
Clear cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -300,7 +300,7 @@ TEST_F(GLES2DecoderTest1, ClearValidArgs) {
TEST_F(GLES2DecoderTest1, ClearColorValidArgs) {
EXPECT_CALL(*gl_, ClearColor(1, 2, 3, 4));
- SpecializedSetup<ClearColor, 0>();
+ SpecializedSetup<ClearColor, 0>(true);
ClearColor cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -309,7 +309,7 @@ TEST_F(GLES2DecoderTest1, ClearColorValidArgs) {
TEST_F(GLES2DecoderTest1, ClearDepthfValidArgs) {
EXPECT_CALL(*gl_, ClearDepth(1));
- SpecializedSetup<ClearDepthf, 0>();
+ SpecializedSetup<ClearDepthf, 0>(true);
ClearDepthf cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -318,7 +318,7 @@ TEST_F(GLES2DecoderTest1, ClearDepthfValidArgs) {
TEST_F(GLES2DecoderTest1, ClearStencilValidArgs) {
EXPECT_CALL(*gl_, ClearStencil(1));
- SpecializedSetup<ClearStencil, 0>();
+ SpecializedSetup<ClearStencil, 0>(true);
ClearStencil cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -327,7 +327,7 @@ TEST_F(GLES2DecoderTest1, ClearStencilValidArgs) {
TEST_F(GLES2DecoderTest1, ColorMaskValidArgs) {
EXPECT_CALL(*gl_, ColorMask(1, 2, 3, 4));
- SpecializedSetup<ColorMask, 0>();
+ SpecializedSetup<ColorMask, 0>(true);
ColorMask cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -347,7 +347,7 @@ TEST_F(GLES2DecoderTest1, ColorMaskValidArgs) {
TEST_F(GLES2DecoderTest1, CopyTexImage2DValidArgs) {
EXPECT_CALL(*gl_, CopyTexImage2D(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8));
- SpecializedSetup<CopyTexImage2D, 0>();
+ SpecializedSetup<CopyTexImage2D, 0>(true);
CopyTexImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -356,7 +356,7 @@ TEST_F(GLES2DecoderTest1, CopyTexImage2DValidArgs) {
TEST_F(GLES2DecoderTest1, CopyTexImage2DInvalidArgs0_0) {
EXPECT_CALL(*gl_, CopyTexImage2D(_, _, _, _, _, _, _, _)).Times(0);
- SpecializedSetup<CopyTexImage2D, 0>();
+ SpecializedSetup<CopyTexImage2D, 0>(false);
CopyTexImage2D cmd;
cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, 2, 3, 4, 5, 6, 7, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -365,7 +365,7 @@ TEST_F(GLES2DecoderTest1, CopyTexImage2DInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, CopyTexImage2DInvalidArgs5_0) {
EXPECT_CALL(*gl_, CopyTexImage2D(_, _, _, _, _, _, _, _)).Times(0);
- SpecializedSetup<CopyTexImage2D, 0>();
+ SpecializedSetup<CopyTexImage2D, 0>(false);
CopyTexImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, -1, 7, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -374,7 +374,7 @@ TEST_F(GLES2DecoderTest1, CopyTexImage2DInvalidArgs5_0) {
TEST_F(GLES2DecoderTest1, CopyTexImage2DInvalidArgs6_0) {
EXPECT_CALL(*gl_, CopyTexImage2D(_, _, _, _, _, _, _, _)).Times(0);
- SpecializedSetup<CopyTexImage2D, 0>();
+ SpecializedSetup<CopyTexImage2D, 0>(false);
CopyTexImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, -1, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -383,7 +383,7 @@ TEST_F(GLES2DecoderTest1, CopyTexImage2DInvalidArgs6_0) {
TEST_F(GLES2DecoderTest1, CopyTexSubImage2DValidArgs) {
EXPECT_CALL(*gl_, CopyTexSubImage2D(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8));
- SpecializedSetup<CopyTexSubImage2D, 0>();
+ SpecializedSetup<CopyTexSubImage2D, 0>(true);
CopyTexSubImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -392,7 +392,7 @@ TEST_F(GLES2DecoderTest1, CopyTexSubImage2DValidArgs) {
TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs0_0) {
EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0);
- SpecializedSetup<CopyTexSubImage2D, 0>();
+ SpecializedSetup<CopyTexSubImage2D, 0>(false);
CopyTexSubImage2D cmd;
cmd.Init(GL_PROXY_TEXTURE_CUBE_MAP, 2, 3, 4, 5, 6, 7, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -401,7 +401,7 @@ TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs6_0) {
EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0);
- SpecializedSetup<CopyTexSubImage2D, 0>();
+ SpecializedSetup<CopyTexSubImage2D, 0>(false);
CopyTexSubImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, -1, 8);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -410,7 +410,7 @@ TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs6_0) {
TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs7_0) {
EXPECT_CALL(*gl_, CopyTexSubImage2D(_, _, _, _, _, _, _, _)).Times(0);
- SpecializedSetup<CopyTexSubImage2D, 0>();
+ SpecializedSetup<CopyTexSubImage2D, 0>(false);
CopyTexSubImage2D cmd;
cmd.Init(GL_TEXTURE_2D, 2, 3, 4, 5, 6, 7, -1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -420,7 +420,7 @@ TEST_F(GLES2DecoderTest1, CopyTexSubImage2DInvalidArgs7_0) {
TEST_F(GLES2DecoderTest1, CreateProgramValidArgs) {
EXPECT_CALL(*gl_, CreateProgram())
.WillOnce(Return(kNewServiceId));
- SpecializedSetup<CreateProgram, 0>();
+ SpecializedSetup<CreateProgram, 0>(true);
CreateProgram cmd;
cmd.Init(kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -431,7 +431,7 @@ TEST_F(GLES2DecoderTest1, CreateProgramValidArgs) {
TEST_F(GLES2DecoderTest1, CreateShaderValidArgs) {
EXPECT_CALL(*gl_, CreateShader(GL_VERTEX_SHADER))
.WillOnce(Return(kNewServiceId));
- SpecializedSetup<CreateShader, 0>();
+ SpecializedSetup<CreateShader, 0>(true);
CreateShader cmd;
cmd.Init(GL_VERTEX_SHADER, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -441,7 +441,7 @@ TEST_F(GLES2DecoderTest1, CreateShaderValidArgs) {
TEST_F(GLES2DecoderTest1, CreateShaderInvalidArgs0_0) {
EXPECT_CALL(*gl_, CreateShader(_)).Times(0);
- SpecializedSetup<CreateShader, 0>();
+ SpecializedSetup<CreateShader, 0>(false);
CreateShader cmd;
cmd.Init(GL_GEOMETRY_SHADER, kNewClientId);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -450,7 +450,7 @@ TEST_F(GLES2DecoderTest1, CreateShaderInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, CullFaceValidArgs) {
EXPECT_CALL(*gl_, CullFace(GL_FRONT));
- SpecializedSetup<CullFace, 0>();
+ SpecializedSetup<CullFace, 0>(true);
CullFace cmd;
cmd.Init(GL_FRONT);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -463,7 +463,7 @@ TEST_F(GLES2DecoderTest1, DeleteBuffersValidArgs) {
DeleteBuffersARB(1, Pointee(kServiceBufferId)))
.Times(1);
GetSharedMemoryAs<GLuint*>()[0] = client_buffer_id_;
- SpecializedSetup<DeleteBuffers, 0>();
+ SpecializedSetup<DeleteBuffers, 0>(true);
DeleteBuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -474,7 +474,7 @@ TEST_F(GLES2DecoderTest1, DeleteBuffersValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteBuffersInvalidArgs) {
GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId;
- SpecializedSetup<DeleteBuffers, 0>();
+ SpecializedSetup<DeleteBuffers, 0>(false);
DeleteBuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -486,7 +486,7 @@ TEST_F(GLES2DecoderTest1, DeleteBuffersImmediateValidArgs) {
DeleteBuffersARB(1, Pointee(kServiceBufferId)))
.Times(1);
DeleteBuffersImmediate& cmd = *GetImmediateAs<DeleteBuffersImmediate>();
- SpecializedSetup<DeleteBuffersImmediate, 0>();
+ SpecializedSetup<DeleteBuffersImmediate, 0>(true);
cmd.Init(1, &client_buffer_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_buffer_id_)));
@@ -497,7 +497,7 @@ TEST_F(GLES2DecoderTest1, DeleteBuffersImmediateValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteBuffersImmediateInvalidArgs) {
DeleteBuffersImmediate& cmd = *GetImmediateAs<DeleteBuffersImmediate>();
- SpecializedSetup<DeleteBuffersImmediate, 0>();
+ SpecializedSetup<DeleteBuffersImmediate, 0>(false);
GLuint temp = kInvalidClientId;
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
@@ -510,7 +510,7 @@ TEST_F(GLES2DecoderTest1, DeleteFramebuffersValidArgs) {
DeleteFramebuffersEXT(1, Pointee(kServiceFramebufferId)))
.Times(1);
GetSharedMemoryAs<GLuint*>()[0] = client_framebuffer_id_;
- SpecializedSetup<DeleteFramebuffers, 0>();
+ SpecializedSetup<DeleteFramebuffers, 0>(true);
DeleteFramebuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -521,7 +521,7 @@ TEST_F(GLES2DecoderTest1, DeleteFramebuffersValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteFramebuffersInvalidArgs) {
GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId;
- SpecializedSetup<DeleteFramebuffers, 0>();
+ SpecializedSetup<DeleteFramebuffers, 0>(false);
DeleteFramebuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -534,7 +534,7 @@ TEST_F(GLES2DecoderTest1, DeleteFramebuffersImmediateValidArgs) {
.Times(1);
DeleteFramebuffersImmediate& cmd =
*GetImmediateAs<DeleteFramebuffersImmediate>();
- SpecializedSetup<DeleteFramebuffersImmediate, 0>();
+ SpecializedSetup<DeleteFramebuffersImmediate, 0>(true);
cmd.Init(1, &client_framebuffer_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_framebuffer_id_)));
@@ -546,7 +546,7 @@ TEST_F(GLES2DecoderTest1, DeleteFramebuffersImmediateValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteFramebuffersImmediateInvalidArgs) {
DeleteFramebuffersImmediate& cmd =
*GetImmediateAs<DeleteFramebuffersImmediate>();
- SpecializedSetup<DeleteFramebuffersImmediate, 0>();
+ SpecializedSetup<DeleteFramebuffersImmediate, 0>(false);
GLuint temp = kInvalidClientId;
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
@@ -555,7 +555,7 @@ TEST_F(GLES2DecoderTest1, DeleteFramebuffersImmediateInvalidArgs) {
TEST_F(GLES2DecoderTest1, DeleteProgramValidArgs) {
EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId));
- SpecializedSetup<DeleteProgram, 0>();
+ SpecializedSetup<DeleteProgram, 0>(true);
DeleteProgram cmd;
cmd.Init(client_program_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -568,7 +568,7 @@ TEST_F(GLES2DecoderTest1, DeleteRenderbuffersValidArgs) {
DeleteRenderbuffersEXT(1, Pointee(kServiceRenderbufferId)))
.Times(1);
GetSharedMemoryAs<GLuint*>()[0] = client_renderbuffer_id_;
- SpecializedSetup<DeleteRenderbuffers, 0>();
+ SpecializedSetup<DeleteRenderbuffers, 0>(true);
DeleteRenderbuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -579,7 +579,7 @@ TEST_F(GLES2DecoderTest1, DeleteRenderbuffersValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteRenderbuffersInvalidArgs) {
GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId;
- SpecializedSetup<DeleteRenderbuffers, 0>();
+ SpecializedSetup<DeleteRenderbuffers, 0>(false);
DeleteRenderbuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -592,7 +592,7 @@ TEST_F(GLES2DecoderTest1, DeleteRenderbuffersImmediateValidArgs) {
.Times(1);
DeleteRenderbuffersImmediate& cmd =
*GetImmediateAs<DeleteRenderbuffersImmediate>();
- SpecializedSetup<DeleteRenderbuffersImmediate, 0>();
+ SpecializedSetup<DeleteRenderbuffersImmediate, 0>(true);
cmd.Init(1, &client_renderbuffer_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_renderbuffer_id_)));
@@ -604,7 +604,7 @@ TEST_F(GLES2DecoderTest1, DeleteRenderbuffersImmediateValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteRenderbuffersImmediateInvalidArgs) {
DeleteRenderbuffersImmediate& cmd =
*GetImmediateAs<DeleteRenderbuffersImmediate>();
- SpecializedSetup<DeleteRenderbuffersImmediate, 0>();
+ SpecializedSetup<DeleteRenderbuffersImmediate, 0>(false);
GLuint temp = kInvalidClientId;
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
@@ -613,7 +613,7 @@ TEST_F(GLES2DecoderTest1, DeleteRenderbuffersImmediateInvalidArgs) {
TEST_F(GLES2DecoderTest1, DeleteShaderValidArgs) {
EXPECT_CALL(*gl_, DeleteShader(kServiceShaderId));
- SpecializedSetup<DeleteShader, 0>();
+ SpecializedSetup<DeleteShader, 0>(true);
DeleteShader cmd;
cmd.Init(client_shader_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -626,7 +626,7 @@ TEST_F(GLES2DecoderTest1, DeleteTexturesValidArgs) {
DeleteTextures(1, Pointee(kServiceTextureId)))
.Times(1);
GetSharedMemoryAs<GLuint*>()[0] = client_texture_id_;
- SpecializedSetup<DeleteTextures, 0>();
+ SpecializedSetup<DeleteTextures, 0>(true);
DeleteTextures cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -637,7 +637,7 @@ TEST_F(GLES2DecoderTest1, DeleteTexturesValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteTexturesInvalidArgs) {
GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId;
- SpecializedSetup<DeleteTextures, 0>();
+ SpecializedSetup<DeleteTextures, 0>(false);
DeleteTextures cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -649,7 +649,7 @@ TEST_F(GLES2DecoderTest1, DeleteTexturesImmediateValidArgs) {
DeleteTextures(1, Pointee(kServiceTextureId)))
.Times(1);
DeleteTexturesImmediate& cmd = *GetImmediateAs<DeleteTexturesImmediate>();
- SpecializedSetup<DeleteTexturesImmediate, 0>();
+ SpecializedSetup<DeleteTexturesImmediate, 0>(true);
cmd.Init(1, &client_texture_id_);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(client_texture_id_)));
@@ -660,7 +660,7 @@ TEST_F(GLES2DecoderTest1, DeleteTexturesImmediateValidArgs) {
TEST_F(GLES2DecoderTest1, DeleteTexturesImmediateInvalidArgs) {
DeleteTexturesImmediate& cmd = *GetImmediateAs<DeleteTexturesImmediate>();
- SpecializedSetup<DeleteTexturesImmediate, 0>();
+ SpecializedSetup<DeleteTexturesImmediate, 0>(false);
GLuint temp = kInvalidClientId;
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
@@ -669,7 +669,7 @@ TEST_F(GLES2DecoderTest1, DeleteTexturesImmediateInvalidArgs) {
TEST_F(GLES2DecoderTest1, DepthFuncValidArgs) {
EXPECT_CALL(*gl_, DepthFunc(GL_NEVER));
- SpecializedSetup<DepthFunc, 0>();
+ SpecializedSetup<DepthFunc, 0>(true);
DepthFunc cmd;
cmd.Init(GL_NEVER);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -678,7 +678,7 @@ TEST_F(GLES2DecoderTest1, DepthFuncValidArgs) {
TEST_F(GLES2DecoderTest1, DepthMaskValidArgs) {
EXPECT_CALL(*gl_, DepthMask(1));
- SpecializedSetup<DepthMask, 0>();
+ SpecializedSetup<DepthMask, 0>(true);
DepthMask cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -687,7 +687,7 @@ TEST_F(GLES2DecoderTest1, DepthMaskValidArgs) {
TEST_F(GLES2DecoderTest1, DepthRangefValidArgs) {
EXPECT_CALL(*gl_, DepthRange(1, 2));
- SpecializedSetup<DepthRangef, 0>();
+ SpecializedSetup<DepthRangef, 0>(true);
DepthRangef cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -696,7 +696,7 @@ TEST_F(GLES2DecoderTest1, DepthRangefValidArgs) {
TEST_F(GLES2DecoderTest1, DetachShaderValidArgs) {
EXPECT_CALL(*gl_, DetachShader(kServiceProgramId, kServiceShaderId));
- SpecializedSetup<DetachShader, 0>();
+ SpecializedSetup<DetachShader, 0>(true);
DetachShader cmd;
cmd.Init(client_program_id_, client_shader_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -705,7 +705,7 @@ TEST_F(GLES2DecoderTest1, DetachShaderValidArgs) {
TEST_F(GLES2DecoderTest1, DisableValidArgs) {
EXPECT_CALL(*gl_, Disable(GL_BLEND));
- SpecializedSetup<Disable, 0>();
+ SpecializedSetup<Disable, 0>(true);
Disable cmd;
cmd.Init(GL_BLEND);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -714,7 +714,7 @@ TEST_F(GLES2DecoderTest1, DisableValidArgs) {
TEST_F(GLES2DecoderTest1, DisableInvalidArgs0_0) {
EXPECT_CALL(*gl_, Disable(_)).Times(0);
- SpecializedSetup<Disable, 0>();
+ SpecializedSetup<Disable, 0>(false);
Disable cmd;
cmd.Init(GL_CLIP_PLANE0);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -723,7 +723,7 @@ TEST_F(GLES2DecoderTest1, DisableInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, DisableInvalidArgs0_1) {
EXPECT_CALL(*gl_, Disable(_)).Times(0);
- SpecializedSetup<Disable, 0>();
+ SpecializedSetup<Disable, 0>(false);
Disable cmd;
cmd.Init(GL_POINT_SPRITE);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -732,7 +732,7 @@ TEST_F(GLES2DecoderTest1, DisableInvalidArgs0_1) {
TEST_F(GLES2DecoderTest1, DisableVertexAttribArrayValidArgs) {
EXPECT_CALL(*gl_, DisableVertexAttribArray(1));
- SpecializedSetup<DisableVertexAttribArray, 0>();
+ SpecializedSetup<DisableVertexAttribArray, 0>(true);
DisableVertexAttribArray cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -744,7 +744,7 @@ TEST_F(GLES2DecoderTest1, DisableVertexAttribArrayValidArgs) {
TEST_F(GLES2DecoderTest1, EnableValidArgs) {
EXPECT_CALL(*gl_, Enable(GL_BLEND));
- SpecializedSetup<Enable, 0>();
+ SpecializedSetup<Enable, 0>(true);
Enable cmd;
cmd.Init(GL_BLEND);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -753,7 +753,7 @@ TEST_F(GLES2DecoderTest1, EnableValidArgs) {
TEST_F(GLES2DecoderTest1, EnableInvalidArgs0_0) {
EXPECT_CALL(*gl_, Enable(_)).Times(0);
- SpecializedSetup<Enable, 0>();
+ SpecializedSetup<Enable, 0>(false);
Enable cmd;
cmd.Init(GL_CLIP_PLANE0);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -762,7 +762,7 @@ TEST_F(GLES2DecoderTest1, EnableInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, EnableInvalidArgs0_1) {
EXPECT_CALL(*gl_, Enable(_)).Times(0);
- SpecializedSetup<Enable, 0>();
+ SpecializedSetup<Enable, 0>(false);
Enable cmd;
cmd.Init(GL_POINT_SPRITE);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -771,7 +771,7 @@ TEST_F(GLES2DecoderTest1, EnableInvalidArgs0_1) {
TEST_F(GLES2DecoderTest1, EnableVertexAttribArrayValidArgs) {
EXPECT_CALL(*gl_, EnableVertexAttribArray(1));
- SpecializedSetup<EnableVertexAttribArray, 0>();
+ SpecializedSetup<EnableVertexAttribArray, 0>(true);
EnableVertexAttribArray cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -780,7 +780,7 @@ TEST_F(GLES2DecoderTest1, EnableVertexAttribArrayValidArgs) {
TEST_F(GLES2DecoderTest1, FinishValidArgs) {
EXPECT_CALL(*gl_, Flush());
- SpecializedSetup<Finish, 0>();
+ SpecializedSetup<Finish, 0>(true);
Finish cmd;
cmd.Init();
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -789,7 +789,7 @@ TEST_F(GLES2DecoderTest1, FinishValidArgs) {
TEST_F(GLES2DecoderTest1, FlushValidArgs) {
EXPECT_CALL(*gl_, Flush());
- SpecializedSetup<Flush, 0>();
+ SpecializedSetup<Flush, 0>(true);
Flush cmd;
cmd.Init();
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -801,7 +801,7 @@ TEST_F(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) {
*gl_, FramebufferRenderbufferEXT(
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
kServiceRenderbufferId));
- SpecializedSetup<FramebufferRenderbuffer, 0>();
+ SpecializedSetup<FramebufferRenderbuffer, 0>(true);
FramebufferRenderbuffer cmd;
cmd.Init(
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
@@ -812,7 +812,7 @@ TEST_F(GLES2DecoderTest1, FramebufferRenderbufferValidArgs) {
TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_0) {
EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
- SpecializedSetup<FramebufferRenderbuffer, 0>();
+ SpecializedSetup<FramebufferRenderbuffer, 0>(false);
FramebufferRenderbuffer cmd;
cmd.Init(
GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
@@ -823,7 +823,7 @@ TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, FramebufferRenderbufferInvalidArgs2_0) {
EXPECT_CALL(*gl_, FramebufferRenderbufferEXT(_, _, _, _)).Times(0);
- SpecializedSetup<FramebufferRenderbuffer, 0>();
+ SpecializedSetup<FramebufferRenderbuffer, 0>(false);
FramebufferRenderbuffer cmd;
cmd.Init(
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_FRAMEBUFFER,
@@ -837,7 +837,7 @@ TEST_F(GLES2DecoderTest1, FramebufferTexture2DValidArgs) {
*gl_, FramebufferTexture2DEXT(
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
kServiceTextureId, 5));
- SpecializedSetup<FramebufferTexture2D, 0>();
+ SpecializedSetup<FramebufferTexture2D, 0>(true);
FramebufferTexture2D cmd;
cmd.Init(
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_,
@@ -848,7 +848,7 @@ TEST_F(GLES2DecoderTest1, FramebufferTexture2DValidArgs) {
TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_0) {
EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
- SpecializedSetup<FramebufferTexture2D, 0>();
+ SpecializedSetup<FramebufferTexture2D, 0>(false);
FramebufferTexture2D cmd;
cmd.Init(
GL_RENDERBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, client_texture_id_,
@@ -859,7 +859,7 @@ TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs2_0) {
EXPECT_CALL(*gl_, FramebufferTexture2DEXT(_, _, _, _, _)).Times(0);
- SpecializedSetup<FramebufferTexture2D, 0>();
+ SpecializedSetup<FramebufferTexture2D, 0>(false);
FramebufferTexture2D cmd;
cmd.Init(
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_PROXY_TEXTURE_CUBE_MAP,
@@ -870,7 +870,7 @@ TEST_F(GLES2DecoderTest1, FramebufferTexture2DInvalidArgs2_0) {
TEST_F(GLES2DecoderTest1, FrontFaceValidArgs) {
EXPECT_CALL(*gl_, FrontFace(GL_CW));
- SpecializedSetup<FrontFace, 0>();
+ SpecializedSetup<FrontFace, 0>(true);
FrontFace cmd;
cmd.Init(GL_CW);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -881,7 +881,7 @@ TEST_F(GLES2DecoderTest1, GenBuffersValidArgs) {
EXPECT_CALL(*gl_, GenBuffersARB(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
- SpecializedSetup<GenBuffers, 0>();
+ SpecializedSetup<GenBuffers, 0>(true);
GenBuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -892,7 +892,7 @@ TEST_F(GLES2DecoderTest1, GenBuffersValidArgs) {
TEST_F(GLES2DecoderTest1, GenBuffersInvalidArgs) {
EXPECT_CALL(*gl_, GenBuffersARB(_, _)).Times(0);
GetSharedMemoryAs<GLuint*>()[0] = client_buffer_id_;
- SpecializedSetup<GenBuffers, 0>();
+ SpecializedSetup<GenBuffers, 0>(false);
GenBuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
@@ -903,7 +903,7 @@ TEST_F(GLES2DecoderTest1, GenBuffersImmediateValidArgs) {
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GenBuffersImmediate& cmd = *GetImmediateAs<GenBuffersImmediate>();
GLuint temp = kNewClientId;
- SpecializedSetup<GenBuffersImmediate, 0>();
+ SpecializedSetup<GenBuffersImmediate, 0>(true);
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
@@ -914,7 +914,7 @@ TEST_F(GLES2DecoderTest1, GenBuffersImmediateValidArgs) {
TEST_F(GLES2DecoderTest1, GenBuffersImmediateInvalidArgs) {
EXPECT_CALL(*gl_, GenBuffersARB(_, _)).Times(0);
GenBuffersImmediate& cmd = *GetImmediateAs<GenBuffersImmediate>();
- SpecializedSetup<GenBuffersImmediate, 0>();
+ SpecializedSetup<GenBuffersImmediate, 0>(false);
cmd.Init(1, &client_buffer_id_);
EXPECT_EQ(error::kInvalidArguments,
ExecuteImmediateCmd(cmd, sizeof(&client_buffer_id_)));
@@ -922,7 +922,7 @@ TEST_F(GLES2DecoderTest1, GenBuffersImmediateInvalidArgs) {
TEST_F(GLES2DecoderTest1, GenerateMipmapValidArgs) {
EXPECT_CALL(*gl_, GenerateMipmapEXT(GL_TEXTURE_2D));
- SpecializedSetup<GenerateMipmap, 0>();
+ SpecializedSetup<GenerateMipmap, 0>(true);
GenerateMipmap cmd;
cmd.Init(GL_TEXTURE_2D);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -931,7 +931,7 @@ TEST_F(GLES2DecoderTest1, GenerateMipmapValidArgs) {
TEST_F(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_0) {
EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0);
- SpecializedSetup<GenerateMipmap, 0>();
+ SpecializedSetup<GenerateMipmap, 0>(false);
GenerateMipmap cmd;
cmd.Init(GL_TEXTURE_1D);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -940,7 +940,7 @@ TEST_F(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GenerateMipmapInvalidArgs0_1) {
EXPECT_CALL(*gl_, GenerateMipmapEXT(_)).Times(0);
- SpecializedSetup<GenerateMipmap, 0>();
+ SpecializedSetup<GenerateMipmap, 0>(false);
GenerateMipmap cmd;
cmd.Init(GL_TEXTURE_3D);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -951,7 +951,7 @@ TEST_F(GLES2DecoderTest1, GenFramebuffersValidArgs) {
EXPECT_CALL(*gl_, GenFramebuffersEXT(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
- SpecializedSetup<GenFramebuffers, 0>();
+ SpecializedSetup<GenFramebuffers, 0>(true);
GenFramebuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -962,7 +962,7 @@ TEST_F(GLES2DecoderTest1, GenFramebuffersValidArgs) {
TEST_F(GLES2DecoderTest1, GenFramebuffersInvalidArgs) {
EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)).Times(0);
GetSharedMemoryAs<GLuint*>()[0] = client_framebuffer_id_;
- SpecializedSetup<GenFramebuffers, 0>();
+ SpecializedSetup<GenFramebuffers, 0>(false);
GenFramebuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
@@ -973,7 +973,7 @@ TEST_F(GLES2DecoderTest1, GenFramebuffersImmediateValidArgs) {
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GenFramebuffersImmediate& cmd = *GetImmediateAs<GenFramebuffersImmediate>();
GLuint temp = kNewClientId;
- SpecializedSetup<GenFramebuffersImmediate, 0>();
+ SpecializedSetup<GenFramebuffersImmediate, 0>(true);
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
@@ -984,7 +984,7 @@ TEST_F(GLES2DecoderTest1, GenFramebuffersImmediateValidArgs) {
TEST_F(GLES2DecoderTest1, GenFramebuffersImmediateInvalidArgs) {
EXPECT_CALL(*gl_, GenFramebuffersEXT(_, _)).Times(0);
GenFramebuffersImmediate& cmd = *GetImmediateAs<GenFramebuffersImmediate>();
- SpecializedSetup<GenFramebuffersImmediate, 0>();
+ SpecializedSetup<GenFramebuffersImmediate, 0>(false);
cmd.Init(1, &client_framebuffer_id_);
EXPECT_EQ(error::kInvalidArguments,
ExecuteImmediateCmd(cmd, sizeof(&client_framebuffer_id_)));
@@ -994,7 +994,7 @@ TEST_F(GLES2DecoderTest1, GenRenderbuffersValidArgs) {
EXPECT_CALL(*gl_, GenRenderbuffersEXT(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
- SpecializedSetup<GenRenderbuffers, 0>();
+ SpecializedSetup<GenRenderbuffers, 0>(true);
GenRenderbuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1005,7 +1005,7 @@ TEST_F(GLES2DecoderTest1, GenRenderbuffersValidArgs) {
TEST_F(GLES2DecoderTest1, GenRenderbuffersInvalidArgs) {
EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)).Times(0);
GetSharedMemoryAs<GLuint*>()[0] = client_renderbuffer_id_;
- SpecializedSetup<GenRenderbuffers, 0>();
+ SpecializedSetup<GenRenderbuffers, 0>(false);
GenRenderbuffers cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
@@ -1017,7 +1017,7 @@ TEST_F(GLES2DecoderTest1, GenRenderbuffersImmediateValidArgs) {
GenRenderbuffersImmediate& cmd =
*GetImmediateAs<GenRenderbuffersImmediate>();
GLuint temp = kNewClientId;
- SpecializedSetup<GenRenderbuffersImmediate, 0>();
+ SpecializedSetup<GenRenderbuffersImmediate, 0>(true);
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
@@ -1029,7 +1029,7 @@ TEST_F(GLES2DecoderTest1, GenRenderbuffersImmediateInvalidArgs) {
EXPECT_CALL(*gl_, GenRenderbuffersEXT(_, _)).Times(0);
GenRenderbuffersImmediate& cmd =
*GetImmediateAs<GenRenderbuffersImmediate>();
- SpecializedSetup<GenRenderbuffersImmediate, 0>();
+ SpecializedSetup<GenRenderbuffersImmediate, 0>(false);
cmd.Init(1, &client_renderbuffer_id_);
EXPECT_EQ(error::kInvalidArguments,
ExecuteImmediateCmd(cmd, sizeof(&client_renderbuffer_id_)));
@@ -1039,7 +1039,7 @@ TEST_F(GLES2DecoderTest1, GenTexturesValidArgs) {
EXPECT_CALL(*gl_, GenTextures(1, _))
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GetSharedMemoryAs<GLuint*>()[0] = kNewClientId;
- SpecializedSetup<GenTextures, 0>();
+ SpecializedSetup<GenTextures, 0>(true);
GenTextures cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1050,7 +1050,7 @@ TEST_F(GLES2DecoderTest1, GenTexturesValidArgs) {
TEST_F(GLES2DecoderTest1, GenTexturesInvalidArgs) {
EXPECT_CALL(*gl_, GenTextures(_, _)).Times(0);
GetSharedMemoryAs<GLuint*>()[0] = client_texture_id_;
- SpecializedSetup<GenTextures, 0>();
+ SpecializedSetup<GenTextures, 0>(false);
GenTextures cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
@@ -1061,7 +1061,7 @@ TEST_F(GLES2DecoderTest1, GenTexturesImmediateValidArgs) {
.WillOnce(SetArgumentPointee<1>(kNewServiceId));
GenTexturesImmediate& cmd = *GetImmediateAs<GenTexturesImmediate>();
GLuint temp = kNewClientId;
- SpecializedSetup<GenTexturesImmediate, 0>();
+ SpecializedSetup<GenTexturesImmediate, 0>(true);
cmd.Init(1, &temp);
EXPECT_EQ(error::kNoError,
ExecuteImmediateCmd(cmd, sizeof(temp)));
@@ -1072,7 +1072,7 @@ TEST_F(GLES2DecoderTest1, GenTexturesImmediateValidArgs) {
TEST_F(GLES2DecoderTest1, GenTexturesImmediateInvalidArgs) {
EXPECT_CALL(*gl_, GenTextures(_, _)).Times(0);
GenTexturesImmediate& cmd = *GetImmediateAs<GenTexturesImmediate>();
- SpecializedSetup<GenTexturesImmediate, 0>();
+ SpecializedSetup<GenTexturesImmediate, 0>(false);
cmd.Init(1, &client_texture_id_);
EXPECT_EQ(error::kInvalidArguments,
ExecuteImmediateCmd(cmd, sizeof(&client_texture_id_)));
@@ -1095,7 +1095,7 @@ TEST_F(GLES2DecoderTest1, GetBooleanvValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetBooleanv, 0>();
+ SpecializedSetup<GetBooleanv, 0>(true);
typedef GetBooleanv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, _));
@@ -1111,7 +1111,7 @@ TEST_F(GLES2DecoderTest1, GetBooleanvValidArgs) {
TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetBooleanv, 0>();
+ SpecializedSetup<GetBooleanv, 0>(false);
GetBooleanv::Result* result =
static_cast<GetBooleanv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1124,7 +1124,7 @@ TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs1_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetBooleanv, 0>();
+ SpecializedSetup<GetBooleanv, 0>(false);
GetBooleanv::Result* result =
static_cast<GetBooleanv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1136,7 +1136,7 @@ TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest1, GetBooleanvInvalidArgs1_1) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetBooleanv, 0>();
+ SpecializedSetup<GetBooleanv, 0>(false);
GetBooleanv::Result* result =
static_cast<GetBooleanv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1151,7 +1151,7 @@ TEST_F(GLES2DecoderTest1, GetBufferParameterivValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetBufferParameteriv, 0>();
+ SpecializedSetup<GetBufferParameteriv, 0>(true);
typedef GetBufferParameteriv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(
@@ -1171,7 +1171,7 @@ TEST_F(GLES2DecoderTest1, GetBufferParameterivValidArgs) {
TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetBufferParameteriv, 0>();
+ SpecializedSetup<GetBufferParameteriv, 0>(false);
GetBufferParameteriv::Result* result =
static_cast<GetBufferParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1186,7 +1186,7 @@ TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs1_0) {
EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetBufferParameteriv, 0>();
+ SpecializedSetup<GetBufferParameteriv, 0>(false);
GetBufferParameteriv::Result* result =
static_cast<GetBufferParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1201,7 +1201,7 @@ TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs1_0) {
TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetBufferParameteriv, 0>();
+ SpecializedSetup<GetBufferParameteriv, 0>(false);
GetBufferParameteriv::Result* result =
static_cast<GetBufferParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1213,7 +1213,7 @@ TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetBufferParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetBufferParameteriv, 0>();
+ SpecializedSetup<GetBufferParameteriv, 0>(false);
GetBufferParameteriv::Result* result =
static_cast<GetBufferParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1227,7 +1227,7 @@ TEST_F(GLES2DecoderTest1, GetBufferParameterivInvalidArgs2_1) {
TEST_F(GLES2DecoderTest1, GetErrorValidArgs) {
EXPECT_CALL(*gl_, GetError());
- SpecializedSetup<GetError, 0>();
+ SpecializedSetup<GetError, 0>(true);
GetError cmd;
cmd.Init(shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1236,7 +1236,7 @@ TEST_F(GLES2DecoderTest1, GetErrorValidArgs) {
TEST_F(GLES2DecoderTest1, GetErrorInvalidArgsBadSharedMemoryId) {
EXPECT_CALL(*gl_, GetError()).Times(0);
- SpecializedSetup<GetError, 0>();
+ SpecializedSetup<GetError, 0>(false);
GetError cmd;
cmd.Init(kInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1249,7 +1249,7 @@ TEST_F(GLES2DecoderTest1, GetFloatvValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetFloatv, 0>();
+ SpecializedSetup<GetFloatv, 0>(true);
typedef GetFloatv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, _));
@@ -1265,7 +1265,7 @@ TEST_F(GLES2DecoderTest1, GetFloatvValidArgs) {
TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetFloatv, 0>();
+ SpecializedSetup<GetFloatv, 0>(false);
GetFloatv::Result* result =
static_cast<GetFloatv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1278,7 +1278,7 @@ TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs1_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetFloatv, 0>();
+ SpecializedSetup<GetFloatv, 0>(false);
GetFloatv::Result* result =
static_cast<GetFloatv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1290,7 +1290,7 @@ TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest1, GetFloatvInvalidArgs1_1) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetFloatv, 0>();
+ SpecializedSetup<GetFloatv, 0>(false);
GetFloatv::Result* result =
static_cast<GetFloatv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1305,7 +1305,7 @@ TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>();
+ SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>(true);
typedef GetFramebufferAttachmentParameteriv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(
@@ -1328,7 +1328,7 @@ TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivValidArgs) {
TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_0) {
EXPECT_CALL(
*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0);
- SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>();
+ SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>(false);
GetFramebufferAttachmentParameteriv::Result* result =
static_cast<GetFramebufferAttachmentParameteriv::Result*>(
shared_memory_address_);
@@ -1346,7 +1346,7 @@ TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_0) {
EXPECT_CALL(
*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0);
- SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>();
+ SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>(false);
GetFramebufferAttachmentParameteriv::Result* result =
static_cast<GetFramebufferAttachmentParameteriv::Result*>(
shared_memory_address_);
@@ -1362,7 +1362,7 @@ TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_0) {
TEST_F(GLES2DecoderTest1, GetFramebufferAttachmentParameterivInvalidArgs3_1) {
EXPECT_CALL(
*gl_, GetFramebufferAttachmentParameterivEXT(_, _, _, _)).Times(0);
- SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>();
+ SpecializedSetup<GetFramebufferAttachmentParameteriv, 0>(false);
GetFramebufferAttachmentParameteriv::Result* result =
static_cast<GetFramebufferAttachmentParameteriv::Result*>(
shared_memory_address_);
@@ -1381,7 +1381,7 @@ TEST_F(GLES2DecoderTest1, GetIntegervValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetIntegerv, 0>();
+ SpecializedSetup<GetIntegerv, 0>(true);
typedef GetIntegerv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(*gl_, GetIntegerv(GL_ACTIVE_TEXTURE, result->GetData()));
@@ -1397,7 +1397,7 @@ TEST_F(GLES2DecoderTest1, GetIntegervValidArgs) {
TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetIntegerv, 0>();
+ SpecializedSetup<GetIntegerv, 0>(false);
GetIntegerv::Result* result =
static_cast<GetIntegerv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1410,7 +1410,7 @@ TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs1_0) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetIntegerv, 0>();
+ SpecializedSetup<GetIntegerv, 0>(false);
GetIntegerv::Result* result =
static_cast<GetIntegerv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1422,7 +1422,7 @@ TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs1_0) {
TEST_F(GLES2DecoderTest1, GetIntegervInvalidArgs1_1) {
EXPECT_CALL(*gl_, GetIntegerv(_, _)).Times(0);
- SpecializedSetup<GetIntegerv, 0>();
+ SpecializedSetup<GetIntegerv, 0>(false);
GetIntegerv::Result* result =
static_cast<GetIntegerv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1437,7 +1437,7 @@ TEST_F(GLES2DecoderTest1, GetProgramivValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetProgramiv, 0>();
+ SpecializedSetup<GetProgramiv, 0>(true);
typedef GetProgramiv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(
@@ -1457,7 +1457,7 @@ TEST_F(GLES2DecoderTest1, GetProgramivValidArgs) {
TEST_F(GLES2DecoderTest1, GetProgramivInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0);
- SpecializedSetup<GetProgramiv, 0>();
+ SpecializedSetup<GetProgramiv, 0>(false);
GetProgramiv::Result* result =
static_cast<GetProgramiv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1469,7 +1469,7 @@ TEST_F(GLES2DecoderTest1, GetProgramivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest1, GetProgramivInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetProgramiv(_, _, _)).Times(0);
- SpecializedSetup<GetProgramiv, 0>();
+ SpecializedSetup<GetProgramiv, 0>(false);
GetProgramiv::Result* result =
static_cast<GetProgramiv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1484,7 +1484,7 @@ TEST_F(GLES2DecoderTest1, GetProgramivInvalidArgs2_1) {
TEST_F(GLES2DecoderTest1, GetProgramInfoLogValidArgs) {
const char* kInfo = "hello";
const uint32 kBucketId = 123;
- SpecializedSetup<GetProgramInfoLog, 0>();
+ SpecializedSetup<GetProgramInfoLog, 0>(true);
EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_INFO_LOG_LENGTH, _))
.WillOnce(SetArgumentPointee<2>(strlen(kInfo)));
EXPECT_CALL(
@@ -1517,7 +1517,7 @@ TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetRenderbufferParameteriv, 0>();
+ SpecializedSetup<GetRenderbufferParameteriv, 0>(true);
typedef GetRenderbufferParameteriv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(
@@ -1537,7 +1537,7 @@ TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivValidArgs) {
TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
- SpecializedSetup<GetRenderbufferParameteriv, 0>();
+ SpecializedSetup<GetRenderbufferParameteriv, 0>(false);
GetRenderbufferParameteriv::Result* result =
static_cast<GetRenderbufferParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1552,7 +1552,7 @@ TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
- SpecializedSetup<GetRenderbufferParameteriv, 0>();
+ SpecializedSetup<GetRenderbufferParameteriv, 0>(false);
GetRenderbufferParameteriv::Result* result =
static_cast<GetRenderbufferParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1564,7 +1564,7 @@ TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest1, GetRenderbufferParameterivInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetRenderbufferParameterivEXT(_, _, _)).Times(0);
- SpecializedSetup<GetRenderbufferParameteriv, 0>();
+ SpecializedSetup<GetRenderbufferParameteriv, 0>(false);
GetRenderbufferParameteriv::Result* result =
static_cast<GetRenderbufferParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1581,7 +1581,7 @@ TEST_F(GLES2DecoderTest1, GetShaderivValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetShaderiv, 0>();
+ SpecializedSetup<GetShaderiv, 0>(true);
typedef GetShaderiv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(
@@ -1600,7 +1600,7 @@ TEST_F(GLES2DecoderTest1, GetShaderivValidArgs) {
TEST_F(GLES2DecoderTest1, GetShaderivInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0);
- SpecializedSetup<GetShaderiv, 0>();
+ SpecializedSetup<GetShaderiv, 0>(false);
GetShaderiv::Result* result =
static_cast<GetShaderiv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1612,7 +1612,7 @@ TEST_F(GLES2DecoderTest1, GetShaderivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest1, GetShaderivInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetShaderiv(_, _, _)).Times(0);
- SpecializedSetup<GetShaderiv, 0>();
+ SpecializedSetup<GetShaderiv, 0>(false);
GetShaderiv::Result* result =
static_cast<GetShaderiv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1627,7 +1627,7 @@ TEST_F(GLES2DecoderTest1, GetShaderivInvalidArgs2_1) {
TEST_F(GLES2DecoderTest1, GetShaderInfoLogValidArgs) {
const char* kInfo = "hello";
const uint32 kBucketId = 123;
- SpecializedSetup<GetShaderInfoLog, 0>();
+ SpecializedSetup<GetShaderInfoLog, 0>(true);
EXPECT_CALL(*gl_, GetShaderiv(kServiceShaderId, GL_INFO_LOG_LENGTH, _))
.WillOnce(SetArgumentPointee<2>(strlen(kInfo)));
EXPECT_CALL(
@@ -1665,7 +1665,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterfvValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetTexParameterfv, 0>();
+ SpecializedSetup<GetTexParameterfv, 0>(true);
typedef GetTexParameterfv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(
@@ -1685,7 +1685,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterfvValidArgs) {
TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameterfv, 0>();
+ SpecializedSetup<GetTexParameterfv, 0>(false);
GetTexParameterfv::Result* result =
static_cast<GetTexParameterfv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1700,7 +1700,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs1_0) {
EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameterfv, 0>();
+ SpecializedSetup<GetTexParameterfv, 0>(false);
GetTexParameterfv::Result* result =
static_cast<GetTexParameterfv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1715,7 +1715,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameterfv, 0>();
+ SpecializedSetup<GetTexParameterfv, 0>(false);
GetTexParameterfv::Result* result =
static_cast<GetTexParameterfv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1727,7 +1727,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest1, GetTexParameterfvInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetTexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameterfv, 0>();
+ SpecializedSetup<GetTexParameterfv, 0>(false);
GetTexParameterfv::Result* result =
static_cast<GetTexParameterfv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1744,7 +1744,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterivValidArgs) {
.WillOnce(Return(GL_NO_ERROR))
.WillOnce(Return(GL_NO_ERROR))
.RetiresOnSaturation();
- SpecializedSetup<GetTexParameteriv, 0>();
+ SpecializedSetup<GetTexParameteriv, 0>(true);
typedef GetTexParameteriv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
EXPECT_CALL(
@@ -1764,7 +1764,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterivValidArgs) {
TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs0_0) {
EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameteriv, 0>();
+ SpecializedSetup<GetTexParameteriv, 0>(false);
GetTexParameteriv::Result* result =
static_cast<GetTexParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1779,7 +1779,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs0_0) {
TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs1_0) {
EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameteriv, 0>();
+ SpecializedSetup<GetTexParameteriv, 0>(false);
GetTexParameteriv::Result* result =
static_cast<GetTexParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1794,7 +1794,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs1_0) {
TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameteriv, 0>();
+ SpecializedSetup<GetTexParameteriv, 0>(false);
GetTexParameteriv::Result* result =
static_cast<GetTexParameteriv::Result*>(shared_memory_address_);
result->size = 0;
@@ -1806,7 +1806,7 @@ TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest1, GetTexParameterivInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetTexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<GetTexParameteriv, 0>();
+ SpecializedSetup<GetTexParameteriv, 0>(false);
GetTexParameteriv::Result* result =
static_cast<GetTexParameteriv::Result*>(shared_memory_address_);
result->size = 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 5d7540c..bf89ac7 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2.cc
@@ -33,7 +33,7 @@ class GLES2DecoderTest2 : public GLES2DecoderTestBase {
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<LinkProgram, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<LinkProgram, 0>(bool /* valid */) {
InSequence dummy;
EXPECT_CALL(*gl_, GetProgramiv(kServiceProgramId, GL_LINK_STATUS, _))
.WillOnce(SetArgumentPointee<2>(1));
@@ -52,101 +52,136 @@ void GLES2DecoderTestBase::SpecializedSetup<LinkProgram, 0>() {
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform1f, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform1f, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform1fv, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform1fv, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform1fvImmediate, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform1fvImmediate, 0>(
+ bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform2f, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform2f, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform2fv, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform2fv, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform2fvImmediate, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform2fvImmediate, 0>(
+ bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform3f, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform3f, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform3fv, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform3fv, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform3fvImmediate, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform3fvImmediate, 0>(
+ bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform4f, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform4f, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform4fv, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform4fv, 0>(bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<Uniform4fvImmediate, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<Uniform4fvImmediate, 0>(
+ bool /* valid */) {
SetupShaderForUniform();
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<RenderbufferStorage, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<RenderbufferStorage, 0>(
+ bool /* valid */) {
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_,
kServiceRenderbufferId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<TexParameterf, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<TexParameterf, 0>(
+ bool /* valid */) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<TexParameteri, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<TexParameteri, 0>(
+ bool /* valid */) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<TexParameterfv, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<TexParameterfv, 0>(
+ bool /* valid */) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<TexParameterfvImmediate, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<TexParameterfvImmediate, 0>(
+ bool /* valid */) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<TexParameteriv, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<TexParameteriv, 0>(
+ bool /* valid */) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
};
template <>
-void GLES2DecoderTestBase::SpecializedSetup<TexParameterivImmediate, 0>() {
+void GLES2DecoderTestBase::SpecializedSetup<TexParameterivImmediate, 0>(
+ bool /* valid */) {
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
};
+template <>
+void GLES2DecoderTestBase::SpecializedSetup<GetVertexAttribfv, 0>(bool valid) {
+ DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
+ DoVertexAttribPointer(1, 1, GL_FLOAT, 0, 0);
+ if (valid) {
+ EXPECT_CALL(*gl_, GetError())
+ .WillOnce(Return(GL_NO_ERROR))
+ .WillOnce(Return(GL_NO_ERROR))
+ .RetiresOnSaturation();
+ }
+};
+
+template <>
+void GLES2DecoderTestBase::SpecializedSetup<GetVertexAttribiv, 0>(bool valid) {
+ DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
+ DoVertexAttribPointer(1, 1, GL_FLOAT, 0, 0);
+ if (valid) {
+ EXPECT_CALL(*gl_, GetError())
+ .WillOnce(Return(GL_NO_ERROR))
+ .WillOnce(Return(GL_NO_ERROR))
+ .RetiresOnSaturation();
+ }
+};
+
#include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h"
} // namespace gles2
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 75f237c..6bf4b6d 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
@@ -14,100 +14,84 @@
TEST_F(GLES2DecoderTest2, GetVertexAttribfvValidArgs) {
- EXPECT_CALL(*gl_, GetError())
- .WillOnce(Return(GL_NO_ERROR))
- .WillOnce(Return(GL_NO_ERROR))
- .RetiresOnSaturation();
- SpecializedSetup<GetVertexAttribfv, 0>();
+ SpecializedSetup<GetVertexAttribfv, 0>(true);
typedef GetVertexAttribfv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
- EXPECT_CALL(
- *gl_, GetVertexAttribfv(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, result->GetData()));
result->size = 0;
GetVertexAttribfv cmd;
cmd.Init(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, shared_memory_id_,
+ 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
- GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING),
+ GL_VERTEX_ATTRIB_ARRAY_NORMALIZED),
result->GetNumResults());
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, GetVertexAttribfvInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0);
- SpecializedSetup<GetVertexAttribfv, 0>();
+ SpecializedSetup<GetVertexAttribfv, 0>(false);
GetVertexAttribfv::Result* result =
static_cast<GetVertexAttribfv::Result*>(shared_memory_address_);
result->size = 0;
GetVertexAttribfv cmd;
- cmd.Init(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, kInvalidSharedMemoryId, 0);
+ cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
EXPECT_EQ(0u, result->size);
}
TEST_F(GLES2DecoderTest2, GetVertexAttribfvInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetVertexAttribfv(_, _, _)).Times(0);
- SpecializedSetup<GetVertexAttribfv, 0>();
+ SpecializedSetup<GetVertexAttribfv, 0>(false);
GetVertexAttribfv::Result* result =
static_cast<GetVertexAttribfv::Result*>(shared_memory_address_);
result->size = 0;
GetVertexAttribfv cmd;
cmd.Init(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, shared_memory_id_,
+ 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
EXPECT_EQ(0u, result->size);
}
TEST_F(GLES2DecoderTest2, GetVertexAttribivValidArgs) {
- EXPECT_CALL(*gl_, GetError())
- .WillOnce(Return(GL_NO_ERROR))
- .WillOnce(Return(GL_NO_ERROR))
- .RetiresOnSaturation();
- SpecializedSetup<GetVertexAttribiv, 0>();
+ SpecializedSetup<GetVertexAttribiv, 0>(true);
typedef GetVertexAttribiv::Result Result;
Result* result = static_cast<Result*>(shared_memory_address_);
- EXPECT_CALL(
- *gl_, GetVertexAttribiv(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, result->GetData()));
result->size = 0;
GetVertexAttribiv cmd;
cmd.Init(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, shared_memory_id_,
+ 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(
- GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING),
+ GL_VERTEX_ATTRIB_ARRAY_NORMALIZED),
result->GetNumResults());
EXPECT_EQ(GL_NO_ERROR, GetGLError());
}
TEST_F(GLES2DecoderTest2, GetVertexAttribivInvalidArgs2_0) {
EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0);
- SpecializedSetup<GetVertexAttribiv, 0>();
+ SpecializedSetup<GetVertexAttribiv, 0>(false);
GetVertexAttribiv::Result* result =
static_cast<GetVertexAttribiv::Result*>(shared_memory_address_);
result->size = 0;
GetVertexAttribiv cmd;
- cmd.Init(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, kInvalidSharedMemoryId, 0);
+ cmd.Init(1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
EXPECT_EQ(0u, result->size);
}
TEST_F(GLES2DecoderTest2, GetVertexAttribivInvalidArgs2_1) {
EXPECT_CALL(*gl_, GetVertexAttribiv(_, _, _)).Times(0);
- SpecializedSetup<GetVertexAttribiv, 0>();
+ SpecializedSetup<GetVertexAttribiv, 0>(false);
GetVertexAttribiv::Result* result =
static_cast<GetVertexAttribiv::Result*>(shared_memory_address_);
result->size = 0;
GetVertexAttribiv cmd;
cmd.Init(
- 1, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, shared_memory_id_,
+ 1, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED, shared_memory_id_,
kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
EXPECT_EQ(0u, result->size);
@@ -117,7 +101,7 @@ TEST_F(GLES2DecoderTest2, GetVertexAttribivInvalidArgs2_1) {
TEST_F(GLES2DecoderTest2, HintValidArgs) {
EXPECT_CALL(*gl_, Hint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST));
- SpecializedSetup<Hint, 0>();
+ SpecializedSetup<Hint, 0>(true);
Hint cmd;
cmd.Init(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -126,7 +110,7 @@ TEST_F(GLES2DecoderTest2, HintValidArgs) {
TEST_F(GLES2DecoderTest2, HintInvalidArgs0_0) {
EXPECT_CALL(*gl_, Hint(_, _)).Times(0);
- SpecializedSetup<Hint, 0>();
+ SpecializedSetup<Hint, 0>(false);
Hint cmd;
cmd.Init(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -134,7 +118,7 @@ TEST_F(GLES2DecoderTest2, HintInvalidArgs0_0) {
}
TEST_F(GLES2DecoderTest2, IsBufferValidArgs) {
- SpecializedSetup<IsBuffer, 0>();
+ SpecializedSetup<IsBuffer, 0>(true);
IsBuffer cmd;
cmd.Init(client_buffer_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -142,7 +126,7 @@ TEST_F(GLES2DecoderTest2, IsBufferValidArgs) {
}
TEST_F(GLES2DecoderTest2, IsBufferInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<IsBuffer, 0>();
+ SpecializedSetup<IsBuffer, 0>(false);
IsBuffer cmd;
cmd.Init(client_buffer_id_, kInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -152,7 +136,7 @@ TEST_F(GLES2DecoderTest2, IsBufferInvalidArgsBadSharedMemoryId) {
TEST_F(GLES2DecoderTest2, IsEnabledValidArgs) {
EXPECT_CALL(*gl_, IsEnabled(GL_BLEND));
- SpecializedSetup<IsEnabled, 0>();
+ SpecializedSetup<IsEnabled, 0>(true);
IsEnabled cmd;
cmd.Init(GL_BLEND, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -161,7 +145,7 @@ TEST_F(GLES2DecoderTest2, IsEnabledValidArgs) {
TEST_F(GLES2DecoderTest2, IsEnabledInvalidArgs0_0) {
EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
- SpecializedSetup<IsEnabled, 0>();
+ SpecializedSetup<IsEnabled, 0>(false);
IsEnabled cmd;
cmd.Init(GL_CLIP_PLANE0, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -170,7 +154,7 @@ TEST_F(GLES2DecoderTest2, IsEnabledInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, IsEnabledInvalidArgs0_1) {
EXPECT_CALL(*gl_, IsEnabled(_)).Times(0);
- SpecializedSetup<IsEnabled, 0>();
+ SpecializedSetup<IsEnabled, 0>(false);
IsEnabled cmd;
cmd.Init(GL_POINT_SPRITE, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -179,7 +163,7 @@ TEST_F(GLES2DecoderTest2, IsEnabledInvalidArgs0_1) {
TEST_F(GLES2DecoderTest2, IsEnabledInvalidArgsBadSharedMemoryId) {
EXPECT_CALL(*gl_, IsEnabled(GL_BLEND)).Times(0);
- SpecializedSetup<IsEnabled, 0>();
+ SpecializedSetup<IsEnabled, 0>(false);
IsEnabled cmd;
cmd.Init(GL_BLEND, kInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -188,7 +172,7 @@ TEST_F(GLES2DecoderTest2, IsEnabledInvalidArgsBadSharedMemoryId) {
}
TEST_F(GLES2DecoderTest2, IsFramebufferValidArgs) {
- SpecializedSetup<IsFramebuffer, 0>();
+ SpecializedSetup<IsFramebuffer, 0>(true);
IsFramebuffer cmd;
cmd.Init(client_framebuffer_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -196,7 +180,7 @@ TEST_F(GLES2DecoderTest2, IsFramebufferValidArgs) {
}
TEST_F(GLES2DecoderTest2, IsFramebufferInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<IsFramebuffer, 0>();
+ SpecializedSetup<IsFramebuffer, 0>(false);
IsFramebuffer cmd;
cmd.Init(
client_framebuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_);
@@ -207,7 +191,7 @@ TEST_F(GLES2DecoderTest2, IsFramebufferInvalidArgsBadSharedMemoryId) {
}
TEST_F(GLES2DecoderTest2, IsProgramValidArgs) {
- SpecializedSetup<IsProgram, 0>();
+ SpecializedSetup<IsProgram, 0>(true);
IsProgram cmd;
cmd.Init(client_program_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -215,7 +199,7 @@ TEST_F(GLES2DecoderTest2, IsProgramValidArgs) {
}
TEST_F(GLES2DecoderTest2, IsProgramInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<IsProgram, 0>();
+ SpecializedSetup<IsProgram, 0>(false);
IsProgram cmd;
cmd.Init(client_program_id_, kInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -224,7 +208,7 @@ TEST_F(GLES2DecoderTest2, IsProgramInvalidArgsBadSharedMemoryId) {
}
TEST_F(GLES2DecoderTest2, IsRenderbufferValidArgs) {
- SpecializedSetup<IsRenderbuffer, 0>();
+ SpecializedSetup<IsRenderbuffer, 0>(true);
IsRenderbuffer cmd;
cmd.Init(client_renderbuffer_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -232,7 +216,7 @@ TEST_F(GLES2DecoderTest2, IsRenderbufferValidArgs) {
}
TEST_F(GLES2DecoderTest2, IsRenderbufferInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<IsRenderbuffer, 0>();
+ SpecializedSetup<IsRenderbuffer, 0>(false);
IsRenderbuffer cmd;
cmd.Init(
client_renderbuffer_id_, kInvalidSharedMemoryId, shared_memory_offset_);
@@ -243,7 +227,7 @@ TEST_F(GLES2DecoderTest2, IsRenderbufferInvalidArgsBadSharedMemoryId) {
}
TEST_F(GLES2DecoderTest2, IsShaderValidArgs) {
- SpecializedSetup<IsShader, 0>();
+ SpecializedSetup<IsShader, 0>(true);
IsShader cmd;
cmd.Init(client_shader_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -251,7 +235,7 @@ TEST_F(GLES2DecoderTest2, IsShaderValidArgs) {
}
TEST_F(GLES2DecoderTest2, IsShaderInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<IsShader, 0>();
+ SpecializedSetup<IsShader, 0>(false);
IsShader cmd;
cmd.Init(client_shader_id_, kInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -260,7 +244,7 @@ TEST_F(GLES2DecoderTest2, IsShaderInvalidArgsBadSharedMemoryId) {
}
TEST_F(GLES2DecoderTest2, IsTextureValidArgs) {
- SpecializedSetup<IsTexture, 0>();
+ SpecializedSetup<IsTexture, 0>(true);
IsTexture cmd;
cmd.Init(client_texture_id_, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -268,7 +252,7 @@ TEST_F(GLES2DecoderTest2, IsTextureValidArgs) {
}
TEST_F(GLES2DecoderTest2, IsTextureInvalidArgsBadSharedMemoryId) {
- SpecializedSetup<IsTexture, 0>();
+ SpecializedSetup<IsTexture, 0>(false);
IsTexture cmd;
cmd.Init(client_texture_id_, kInvalidSharedMemoryId, shared_memory_offset_);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -278,7 +262,7 @@ TEST_F(GLES2DecoderTest2, IsTextureInvalidArgsBadSharedMemoryId) {
TEST_F(GLES2DecoderTest2, LineWidthValidArgs) {
EXPECT_CALL(*gl_, LineWidth(1));
- SpecializedSetup<LineWidth, 0>();
+ SpecializedSetup<LineWidth, 0>(true);
LineWidth cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -287,7 +271,7 @@ TEST_F(GLES2DecoderTest2, LineWidthValidArgs) {
TEST_F(GLES2DecoderTest2, LinkProgramValidArgs) {
EXPECT_CALL(*gl_, LinkProgram(kServiceProgramId));
- SpecializedSetup<LinkProgram, 0>();
+ SpecializedSetup<LinkProgram, 0>(true);
LinkProgram cmd;
cmd.Init(client_program_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -298,7 +282,7 @@ TEST_F(GLES2DecoderTest2, LinkProgramValidArgs) {
TEST_F(GLES2DecoderTest2, PolygonOffsetValidArgs) {
EXPECT_CALL(*gl_, PolygonOffset(1, 2));
- SpecializedSetup<PolygonOffset, 0>();
+ SpecializedSetup<PolygonOffset, 0>(true);
PolygonOffset cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -310,7 +294,7 @@ TEST_F(GLES2DecoderTest2, PolygonOffsetValidArgs) {
TEST_F(GLES2DecoderTest2, RenderbufferStorageValidArgs) {
EXPECT_CALL(*gl_, RenderbufferStorageEXT(GL_RENDERBUFFER, GL_RGBA4, 3, 4));
- SpecializedSetup<RenderbufferStorage, 0>();
+ SpecializedSetup<RenderbufferStorage, 0>(true);
RenderbufferStorage cmd;
cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -319,7 +303,7 @@ TEST_F(GLES2DecoderTest2, RenderbufferStorageValidArgs) {
TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs0_0) {
EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
- SpecializedSetup<RenderbufferStorage, 0>();
+ SpecializedSetup<RenderbufferStorage, 0>(false);
RenderbufferStorage cmd;
cmd.Init(GL_FRAMEBUFFER, GL_RGBA4, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -328,7 +312,7 @@ TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs2_0) {
EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
- SpecializedSetup<RenderbufferStorage, 0>();
+ SpecializedSetup<RenderbufferStorage, 0>(false);
RenderbufferStorage cmd;
cmd.Init(GL_RENDERBUFFER, GL_RGBA4, -1, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -337,7 +321,7 @@ TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs3_0) {
EXPECT_CALL(*gl_, RenderbufferStorageEXT(_, _, _, _)).Times(0);
- SpecializedSetup<RenderbufferStorage, 0>();
+ SpecializedSetup<RenderbufferStorage, 0>(false);
RenderbufferStorage cmd;
cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 3, -1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -346,7 +330,7 @@ TEST_F(GLES2DecoderTest2, RenderbufferStorageInvalidArgs3_0) {
TEST_F(GLES2DecoderTest2, SampleCoverageValidArgs) {
EXPECT_CALL(*gl_, SampleCoverage(1, 2));
- SpecializedSetup<SampleCoverage, 0>();
+ SpecializedSetup<SampleCoverage, 0>(true);
SampleCoverage cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -355,7 +339,7 @@ TEST_F(GLES2DecoderTest2, SampleCoverageValidArgs) {
TEST_F(GLES2DecoderTest2, ScissorValidArgs) {
EXPECT_CALL(*gl_, Scissor(1, 2, 3, 4));
- SpecializedSetup<Scissor, 0>();
+ SpecializedSetup<Scissor, 0>(true);
Scissor cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -364,7 +348,7 @@ TEST_F(GLES2DecoderTest2, ScissorValidArgs) {
TEST_F(GLES2DecoderTest2, ScissorInvalidArgs2_0) {
EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
- SpecializedSetup<Scissor, 0>();
+ SpecializedSetup<Scissor, 0>(false);
Scissor cmd;
cmd.Init(1, 2, -1, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -373,7 +357,7 @@ TEST_F(GLES2DecoderTest2, ScissorInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, ScissorInvalidArgs3_0) {
EXPECT_CALL(*gl_, Scissor(_, _, _, _)).Times(0);
- SpecializedSetup<Scissor, 0>();
+ SpecializedSetup<Scissor, 0>(false);
Scissor cmd;
cmd.Init(1, 2, 3, -1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -389,7 +373,7 @@ TEST_F(GLES2DecoderTest2, ScissorInvalidArgs3_0) {
TEST_F(GLES2DecoderTest2, StencilFuncValidArgs) {
EXPECT_CALL(*gl_, StencilFunc(GL_NEVER, 2, 3));
- SpecializedSetup<StencilFunc, 0>();
+ SpecializedSetup<StencilFunc, 0>(true);
StencilFunc cmd;
cmd.Init(GL_NEVER, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -398,7 +382,7 @@ TEST_F(GLES2DecoderTest2, StencilFuncValidArgs) {
TEST_F(GLES2DecoderTest2, StencilFuncSeparateValidArgs) {
EXPECT_CALL(*gl_, StencilFuncSeparate(GL_FRONT, GL_NEVER, 3, 4));
- SpecializedSetup<StencilFuncSeparate, 0>();
+ SpecializedSetup<StencilFuncSeparate, 0>(true);
StencilFuncSeparate cmd;
cmd.Init(GL_FRONT, GL_NEVER, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -407,7 +391,7 @@ TEST_F(GLES2DecoderTest2, StencilFuncSeparateValidArgs) {
TEST_F(GLES2DecoderTest2, StencilMaskValidArgs) {
EXPECT_CALL(*gl_, StencilMask(1));
- SpecializedSetup<StencilMask, 0>();
+ SpecializedSetup<StencilMask, 0>(true);
StencilMask cmd;
cmd.Init(1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -416,7 +400,7 @@ TEST_F(GLES2DecoderTest2, StencilMaskValidArgs) {
TEST_F(GLES2DecoderTest2, StencilMaskSeparateValidArgs) {
EXPECT_CALL(*gl_, StencilMaskSeparate(GL_FRONT, 2));
- SpecializedSetup<StencilMaskSeparate, 0>();
+ SpecializedSetup<StencilMaskSeparate, 0>(true);
StencilMaskSeparate cmd;
cmd.Init(GL_FRONT, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -425,7 +409,7 @@ TEST_F(GLES2DecoderTest2, StencilMaskSeparateValidArgs) {
TEST_F(GLES2DecoderTest2, StencilOpValidArgs) {
EXPECT_CALL(*gl_, StencilOp(GL_KEEP, GL_KEEP, GL_KEEP));
- SpecializedSetup<StencilOp, 0>();
+ SpecializedSetup<StencilOp, 0>(true);
StencilOp cmd;
cmd.Init(GL_KEEP, GL_KEEP, GL_KEEP);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -434,7 +418,7 @@ TEST_F(GLES2DecoderTest2, StencilOpValidArgs) {
TEST_F(GLES2DecoderTest2, StencilOpSeparateValidArgs) {
EXPECT_CALL(*gl_, StencilOpSeparate(GL_FRONT, GL_KEEP, GL_KEEP, GL_KEEP));
- SpecializedSetup<StencilOpSeparate, 0>();
+ SpecializedSetup<StencilOpSeparate, 0>(true);
StencilOpSeparate cmd;
cmd.Init(GL_FRONT, GL_KEEP, GL_KEEP, GL_KEEP);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -447,7 +431,7 @@ TEST_F(GLES2DecoderTest2, StencilOpSeparateValidArgs) {
TEST_F(GLES2DecoderTest2, TexParameterfValidArgs) {
EXPECT_CALL(*gl_, TexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 3));
- SpecializedSetup<TexParameterf, 0>();
+ SpecializedSetup<TexParameterf, 0>(true);
TexParameterf cmd;
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -456,7 +440,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfValidArgs) {
TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs0_0) {
EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
- SpecializedSetup<TexParameterf, 0>();
+ SpecializedSetup<TexParameterf, 0>(false);
TexParameterf cmd;
cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -465,7 +449,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs0_1) {
EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
- SpecializedSetup<TexParameterf, 0>();
+ SpecializedSetup<TexParameterf, 0>(false);
TexParameterf cmd;
cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -474,7 +458,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs0_1) {
TEST_F(GLES2DecoderTest2, TexParameterfInvalidArgs1_0) {
EXPECT_CALL(*gl_, TexParameterf(_, _, _)).Times(0);
- SpecializedSetup<TexParameterf, 0>();
+ SpecializedSetup<TexParameterf, 0>(false);
TexParameterf cmd;
cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -486,7 +470,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvValidArgs) {
*gl_, TexParameterfv(
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<TexParameterfv, 0>();
+ SpecializedSetup<TexParameterfv, 0>(true);
TexParameterfv cmd;
cmd.Init(
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -497,7 +481,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvValidArgs) {
TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs0_0) {
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfv, 0>();
+ SpecializedSetup<TexParameterfv, 0>(false);
TexParameterfv cmd;
cmd.Init(
GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -508,7 +492,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs0_1) {
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfv, 0>();
+ SpecializedSetup<TexParameterfv, 0>(false);
TexParameterfv cmd;
cmd.Init(
GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -519,7 +503,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs0_1) {
TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs1_0) {
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfv, 0>();
+ SpecializedSetup<TexParameterfv, 0>(false);
TexParameterfv cmd;
cmd.Init(
GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_,
@@ -530,7 +514,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs2_0) {
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfv, 0>();
+ SpecializedSetup<TexParameterfv, 0>(false);
TexParameterfv cmd;
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -538,7 +522,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, TexParameterfvInvalidArgs2_1) {
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfv, 0>();
+ SpecializedSetup<TexParameterfv, 0>(false);
TexParameterfv cmd;
cmd.Init(
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -552,7 +536,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) {
*gl_,
TexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<TexParameterfvImmediate, 0>();
+ SpecializedSetup<TexParameterfvImmediate, 0>(true);
GLfloat temp[1] = { 0, };
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -563,7 +547,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_0) {
TexParameterfvImmediate& cmd = *GetImmediateAs<TexParameterfvImmediate>();
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfvImmediate, 0>();
+ SpecializedSetup<TexParameterfvImmediate, 0>(false);
GLfloat temp[1] = { 0, };
cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -574,7 +558,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_1) {
TexParameterfvImmediate& cmd = *GetImmediateAs<TexParameterfvImmediate>();
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfvImmediate, 0>();
+ SpecializedSetup<TexParameterfvImmediate, 0>(false);
GLfloat temp[1] = { 0, };
cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -585,7 +569,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs0_1) {
TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs1_0) {
TexParameterfvImmediate& cmd = *GetImmediateAs<TexParameterfvImmediate>();
EXPECT_CALL(*gl_, TexParameterfv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterfvImmediate, 0>();
+ SpecializedSetup<TexParameterfvImmediate, 0>(false);
GLfloat temp[1] = { 0, };
cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -595,7 +579,7 @@ TEST_F(GLES2DecoderTest2, TexParameterfvImmediateInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, TexParameteriValidArgs) {
EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 3));
- SpecializedSetup<TexParameteri, 0>();
+ SpecializedSetup<TexParameteri, 0>(true);
TexParameteri cmd;
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -604,7 +588,7 @@ TEST_F(GLES2DecoderTest2, TexParameteriValidArgs) {
TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs0_0) {
EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
- SpecializedSetup<TexParameteri, 0>();
+ SpecializedSetup<TexParameteri, 0>(false);
TexParameteri cmd;
cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -613,7 +597,7 @@ TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs0_1) {
EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
- SpecializedSetup<TexParameteri, 0>();
+ SpecializedSetup<TexParameteri, 0>(false);
TexParameteri cmd;
cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -622,7 +606,7 @@ TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs0_1) {
TEST_F(GLES2DecoderTest2, TexParameteriInvalidArgs1_0) {
EXPECT_CALL(*gl_, TexParameteri(_, _, _)).Times(0);
- SpecializedSetup<TexParameteri, 0>();
+ SpecializedSetup<TexParameteri, 0>(false);
TexParameteri cmd;
cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -634,7 +618,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivValidArgs) {
*gl_, TexParameteriv(
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, reinterpret_cast<const GLint*>(
shared_memory_address_)));
- SpecializedSetup<TexParameteriv, 0>();
+ SpecializedSetup<TexParameteriv, 0>(true);
TexParameteriv cmd;
cmd.Init(
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -645,7 +629,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivValidArgs) {
TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs0_0) {
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameteriv, 0>();
+ SpecializedSetup<TexParameteriv, 0>(false);
TexParameteriv cmd;
cmd.Init(
GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -656,7 +640,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs0_1) {
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameteriv, 0>();
+ SpecializedSetup<TexParameteriv, 0>(false);
TexParameteriv cmd;
cmd.Init(
GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -667,7 +651,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs0_1) {
TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs1_0) {
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameteriv, 0>();
+ SpecializedSetup<TexParameteriv, 0>(false);
TexParameteriv cmd;
cmd.Init(
GL_TEXTURE_2D, GL_GENERATE_MIPMAP, shared_memory_id_,
@@ -678,7 +662,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs2_0) {
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameteriv, 0>();
+ SpecializedSetup<TexParameteriv, 0>(false);
TexParameteriv cmd;
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -686,7 +670,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, TexParameterivInvalidArgs2_1) {
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameteriv, 0>();
+ SpecializedSetup<TexParameteriv, 0>(false);
TexParameteriv cmd;
cmd.Init(
GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, shared_memory_id_,
@@ -700,7 +684,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivImmediateValidArgs) {
*gl_,
TexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<TexParameterivImmediate, 0>();
+ SpecializedSetup<TexParameterivImmediate, 0>(true);
GLint temp[1] = { 0, };
cmd.Init(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -711,7 +695,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_0) {
TexParameterivImmediate& cmd = *GetImmediateAs<TexParameterivImmediate>();
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterivImmediate, 0>();
+ SpecializedSetup<TexParameterivImmediate, 0>(false);
GLint temp[1] = { 0, };
cmd.Init(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -722,7 +706,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_0) {
TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_1) {
TexParameterivImmediate& cmd = *GetImmediateAs<TexParameterivImmediate>();
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterivImmediate, 0>();
+ SpecializedSetup<TexParameterivImmediate, 0>(false);
GLint temp[1] = { 0, };
cmd.Init(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -733,7 +717,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs0_1) {
TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs1_0) {
TexParameterivImmediate& cmd = *GetImmediateAs<TexParameterivImmediate>();
EXPECT_CALL(*gl_, TexParameteriv(_, _, _)).Times(0);
- SpecializedSetup<TexParameterivImmediate, 0>();
+ SpecializedSetup<TexParameterivImmediate, 0>(false);
GLint temp[1] = { 0, };
cmd.Init(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -747,7 +731,7 @@ TEST_F(GLES2DecoderTest2, TexParameterivImmediateInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform1fValidArgs) {
EXPECT_CALL(*gl_, Uniform1fv(1, 1, _));
- SpecializedSetup<Uniform1f, 0>();
+ SpecializedSetup<Uniform1f, 0>(true);
Uniform1f cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -758,7 +742,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvValidArgs) {
EXPECT_CALL(
*gl_, Uniform1fv(
1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<Uniform1fv, 0>();
+ SpecializedSetup<Uniform1fv, 0>(true);
Uniform1fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -767,7 +751,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform1fv, 0>();
+ SpecializedSetup<Uniform1fv, 0>(false);
Uniform1fv cmd;
cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -776,7 +760,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform1fv, 0>();
+ SpecializedSetup<Uniform1fv, 0>(false);
Uniform1fv cmd;
cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -784,7 +768,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, Uniform1fvInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform1fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform1fv, 0>();
+ SpecializedSetup<Uniform1fv, 0>(false);
Uniform1fv cmd;
cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -796,7 +780,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) {
*gl_,
Uniform1fv(1, 2,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform1fvImmediate, 0>();
+ SpecializedSetup<Uniform1fvImmediate, 0>(true);
GLfloat temp[1 * 2] = { 0, };
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -809,7 +793,7 @@ TEST_F(GLES2DecoderTest2, Uniform1fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform2fValidArgs) {
EXPECT_CALL(*gl_, Uniform2fv(1, 1, _));
- SpecializedSetup<Uniform2f, 0>();
+ SpecializedSetup<Uniform2f, 0>(true);
Uniform2f cmd;
cmd.Init(1, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -820,7 +804,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvValidArgs) {
EXPECT_CALL(
*gl_, Uniform2fv(
1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<Uniform2fv, 0>();
+ SpecializedSetup<Uniform2fv, 0>(true);
Uniform2fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -829,7 +813,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform2fv, 0>();
+ SpecializedSetup<Uniform2fv, 0>(false);
Uniform2fv cmd;
cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -838,7 +822,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform2fv, 0>();
+ SpecializedSetup<Uniform2fv, 0>(false);
Uniform2fv cmd;
cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -846,7 +830,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, Uniform2fvInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform2fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform2fv, 0>();
+ SpecializedSetup<Uniform2fv, 0>(false);
Uniform2fv cmd;
cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -858,7 +842,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) {
*gl_,
Uniform2fv(1, 2,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform2fvImmediate, 0>();
+ SpecializedSetup<Uniform2fvImmediate, 0>(true);
GLfloat temp[2 * 2] = { 0, };
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -868,7 +852,7 @@ TEST_F(GLES2DecoderTest2, Uniform2fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform2iValidArgs) {
EXPECT_CALL(*gl_, Uniform2i(1, 2, 3));
- SpecializedSetup<Uniform2i, 0>();
+ SpecializedSetup<Uniform2i, 0>(true);
Uniform2i cmd;
cmd.Init(1, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -879,7 +863,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivValidArgs) {
EXPECT_CALL(
*gl_, Uniform2iv(
1, 2, reinterpret_cast<const GLint*>(shared_memory_address_)));
- SpecializedSetup<Uniform2iv, 0>();
+ SpecializedSetup<Uniform2iv, 0>(true);
Uniform2iv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -888,7 +872,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs1_0) {
EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform2iv, 0>();
+ SpecializedSetup<Uniform2iv, 0>(false);
Uniform2iv cmd;
cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -897,7 +881,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform2iv, 0>();
+ SpecializedSetup<Uniform2iv, 0>(false);
Uniform2iv cmd;
cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -905,7 +889,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, Uniform2ivInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform2iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform2iv, 0>();
+ SpecializedSetup<Uniform2iv, 0>(false);
Uniform2iv cmd;
cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -917,7 +901,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) {
*gl_,
Uniform2iv(1, 2,
reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform2ivImmediate, 0>();
+ SpecializedSetup<Uniform2ivImmediate, 0>(true);
GLint temp[2 * 2] = { 0, };
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -927,7 +911,7 @@ TEST_F(GLES2DecoderTest2, Uniform2ivImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform3fValidArgs) {
EXPECT_CALL(*gl_, Uniform3fv(1, 1, _));
- SpecializedSetup<Uniform3f, 0>();
+ SpecializedSetup<Uniform3f, 0>(true);
Uniform3f cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -938,7 +922,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvValidArgs) {
EXPECT_CALL(
*gl_, Uniform3fv(
1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<Uniform3fv, 0>();
+ SpecializedSetup<Uniform3fv, 0>(true);
Uniform3fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -947,7 +931,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform3fv, 0>();
+ SpecializedSetup<Uniform3fv, 0>(false);
Uniform3fv cmd;
cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -956,7 +940,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform3fv, 0>();
+ SpecializedSetup<Uniform3fv, 0>(false);
Uniform3fv cmd;
cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -964,7 +948,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, Uniform3fvInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform3fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform3fv, 0>();
+ SpecializedSetup<Uniform3fv, 0>(false);
Uniform3fv cmd;
cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -976,7 +960,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) {
*gl_,
Uniform3fv(1, 2,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform3fvImmediate, 0>();
+ SpecializedSetup<Uniform3fvImmediate, 0>(true);
GLfloat temp[3 * 2] = { 0, };
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -986,7 +970,7 @@ TEST_F(GLES2DecoderTest2, Uniform3fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform3iValidArgs) {
EXPECT_CALL(*gl_, Uniform3i(1, 2, 3, 4));
- SpecializedSetup<Uniform3i, 0>();
+ SpecializedSetup<Uniform3i, 0>(true);
Uniform3i cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -997,7 +981,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivValidArgs) {
EXPECT_CALL(
*gl_, Uniform3iv(
1, 2, reinterpret_cast<const GLint*>(shared_memory_address_)));
- SpecializedSetup<Uniform3iv, 0>();
+ SpecializedSetup<Uniform3iv, 0>(true);
Uniform3iv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1006,7 +990,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs1_0) {
EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform3iv, 0>();
+ SpecializedSetup<Uniform3iv, 0>(false);
Uniform3iv cmd;
cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1015,7 +999,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform3iv, 0>();
+ SpecializedSetup<Uniform3iv, 0>(false);
Uniform3iv cmd;
cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1023,7 +1007,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, Uniform3ivInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform3iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform3iv, 0>();
+ SpecializedSetup<Uniform3iv, 0>(false);
Uniform3iv cmd;
cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1035,7 +1019,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) {
*gl_,
Uniform3iv(1, 2,
reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform3ivImmediate, 0>();
+ SpecializedSetup<Uniform3ivImmediate, 0>(true);
GLint temp[3 * 2] = { 0, };
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1045,7 +1029,7 @@ TEST_F(GLES2DecoderTest2, Uniform3ivImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform4fValidArgs) {
EXPECT_CALL(*gl_, Uniform4fv(1, 1, _));
- SpecializedSetup<Uniform4f, 0>();
+ SpecializedSetup<Uniform4f, 0>(true);
Uniform4f cmd;
cmd.Init(1, 2, 3, 4, 5);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1056,7 +1040,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvValidArgs) {
EXPECT_CALL(
*gl_, Uniform4fv(
1, 2, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<Uniform4fv, 0>();
+ SpecializedSetup<Uniform4fv, 0>(true);
Uniform4fv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1065,7 +1049,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform4fv, 0>();
+ SpecializedSetup<Uniform4fv, 0>(false);
Uniform4fv cmd;
cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1074,7 +1058,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform4fv, 0>();
+ SpecializedSetup<Uniform4fv, 0>(false);
Uniform4fv cmd;
cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1082,7 +1066,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, Uniform4fvInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform4fv(_, _, _)).Times(0);
- SpecializedSetup<Uniform4fv, 0>();
+ SpecializedSetup<Uniform4fv, 0>(false);
Uniform4fv cmd;
cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1094,7 +1078,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) {
*gl_,
Uniform4fv(1, 2,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform4fvImmediate, 0>();
+ SpecializedSetup<Uniform4fvImmediate, 0>(true);
GLfloat temp[4 * 2] = { 0, };
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1104,7 +1088,7 @@ TEST_F(GLES2DecoderTest2, Uniform4fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform4iValidArgs) {
EXPECT_CALL(*gl_, Uniform4i(1, 2, 3, 4, 5));
- SpecializedSetup<Uniform4i, 0>();
+ SpecializedSetup<Uniform4i, 0>(true);
Uniform4i cmd;
cmd.Init(1, 2, 3, 4, 5);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1115,7 +1099,7 @@ TEST_F(GLES2DecoderTest2, Uniform4ivValidArgs) {
EXPECT_CALL(
*gl_, Uniform4iv(
1, 2, reinterpret_cast<const GLint*>(shared_memory_address_)));
- SpecializedSetup<Uniform4iv, 0>();
+ SpecializedSetup<Uniform4iv, 0>(true);
Uniform4iv cmd;
cmd.Init(1, 2, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1124,7 +1108,7 @@ TEST_F(GLES2DecoderTest2, Uniform4ivValidArgs) {
TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs1_0) {
EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform4iv, 0>();
+ SpecializedSetup<Uniform4iv, 0>(false);
Uniform4iv cmd;
cmd.Init(1, -1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1133,7 +1117,7 @@ TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs2_0) {
EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform4iv, 0>();
+ SpecializedSetup<Uniform4iv, 0>(false);
Uniform4iv cmd;
cmd.Init(1, 2, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1141,7 +1125,7 @@ TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, Uniform4ivInvalidArgs2_1) {
EXPECT_CALL(*gl_, Uniform4iv(_, _, _)).Times(0);
- SpecializedSetup<Uniform4iv, 0>();
+ SpecializedSetup<Uniform4iv, 0>(false);
Uniform4iv cmd;
cmd.Init(1, 2, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1153,7 +1137,7 @@ TEST_F(GLES2DecoderTest2, Uniform4ivImmediateValidArgs) {
*gl_,
Uniform4iv(1, 2,
reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<Uniform4ivImmediate, 0>();
+ SpecializedSetup<Uniform4ivImmediate, 0>(true);
GLint temp[4 * 2] = { 0, };
cmd.Init(1, 2, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1166,7 +1150,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvValidArgs) {
*gl_, UniformMatrix2fv(
1, 2, false, reinterpret_cast<const GLfloat*>(
shared_memory_address_)));
- SpecializedSetup<UniformMatrix2fv, 0>();
+ SpecializedSetup<UniformMatrix2fv, 0>(true);
UniformMatrix2fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1175,7 +1159,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvValidArgs) {
TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix2fv, 0>();
+ SpecializedSetup<UniformMatrix2fv, 0>(false);
UniformMatrix2fv cmd;
cmd.Init(1, -1, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1184,7 +1168,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs2_0) {
EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix2fv, 0>();
+ SpecializedSetup<UniformMatrix2fv, 0>(false);
UniformMatrix2fv cmd;
cmd.Init(1, 2, true, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1193,7 +1177,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs3_0) {
EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix2fv, 0>();
+ SpecializedSetup<UniformMatrix2fv, 0>(false);
UniformMatrix2fv cmd;
cmd.Init(1, 2, false, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1201,7 +1185,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs3_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix2fvInvalidArgs3_1) {
EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix2fv, 0>();
+ SpecializedSetup<UniformMatrix2fv, 0>(false);
UniformMatrix2fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1214,7 +1198,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvImmediateValidArgs) {
*gl_,
UniformMatrix2fv(1, 2, false,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<UniformMatrix2fvImmediate, 0>();
+ SpecializedSetup<UniformMatrix2fvImmediate, 0>(true);
GLfloat temp[4 * 2] = { 0, };
cmd.Init(1, 2, false, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1226,7 +1210,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix2fvImmediateInvalidArgs2_0) {
UniformMatrix2fvImmediate& cmd =
*GetImmediateAs<UniformMatrix2fvImmediate>();
EXPECT_CALL(*gl_, UniformMatrix2fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix2fvImmediate, 0>();
+ SpecializedSetup<UniformMatrix2fvImmediate, 0>(false);
GLfloat temp[4 * 2] = { 0, };
cmd.Init(1, 2, true, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1239,7 +1223,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvValidArgs) {
*gl_, UniformMatrix3fv(
1, 2, false, reinterpret_cast<const GLfloat*>(
shared_memory_address_)));
- SpecializedSetup<UniformMatrix3fv, 0>();
+ SpecializedSetup<UniformMatrix3fv, 0>(true);
UniformMatrix3fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1248,7 +1232,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvValidArgs) {
TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix3fv, 0>();
+ SpecializedSetup<UniformMatrix3fv, 0>(false);
UniformMatrix3fv cmd;
cmd.Init(1, -1, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1257,7 +1241,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs2_0) {
EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix3fv, 0>();
+ SpecializedSetup<UniformMatrix3fv, 0>(false);
UniformMatrix3fv cmd;
cmd.Init(1, 2, true, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1266,7 +1250,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs3_0) {
EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix3fv, 0>();
+ SpecializedSetup<UniformMatrix3fv, 0>(false);
UniformMatrix3fv cmd;
cmd.Init(1, 2, false, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1274,7 +1258,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs3_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix3fvInvalidArgs3_1) {
EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix3fv, 0>();
+ SpecializedSetup<UniformMatrix3fv, 0>(false);
UniformMatrix3fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1287,7 +1271,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvImmediateValidArgs) {
*gl_,
UniformMatrix3fv(1, 2, false,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<UniformMatrix3fvImmediate, 0>();
+ SpecializedSetup<UniformMatrix3fvImmediate, 0>(true);
GLfloat temp[9 * 2] = { 0, };
cmd.Init(1, 2, false, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1299,7 +1283,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix3fvImmediateInvalidArgs2_0) {
UniformMatrix3fvImmediate& cmd =
*GetImmediateAs<UniformMatrix3fvImmediate>();
EXPECT_CALL(*gl_, UniformMatrix3fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix3fvImmediate, 0>();
+ SpecializedSetup<UniformMatrix3fvImmediate, 0>(false);
GLfloat temp[9 * 2] = { 0, };
cmd.Init(1, 2, true, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1312,7 +1296,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvValidArgs) {
*gl_, UniformMatrix4fv(
1, 2, false, reinterpret_cast<const GLfloat*>(
shared_memory_address_)));
- SpecializedSetup<UniformMatrix4fv, 0>();
+ SpecializedSetup<UniformMatrix4fv, 0>(true);
UniformMatrix4fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1321,7 +1305,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvValidArgs) {
TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix4fv, 0>();
+ SpecializedSetup<UniformMatrix4fv, 0>(false);
UniformMatrix4fv cmd;
cmd.Init(1, -1, false, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1330,7 +1314,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs2_0) {
EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix4fv, 0>();
+ SpecializedSetup<UniformMatrix4fv, 0>(false);
UniformMatrix4fv cmd;
cmd.Init(1, 2, true, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1339,7 +1323,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs3_0) {
EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix4fv, 0>();
+ SpecializedSetup<UniformMatrix4fv, 0>(false);
UniformMatrix4fv cmd;
cmd.Init(1, 2, false, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1347,7 +1331,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs3_0) {
TEST_F(GLES2DecoderTest2, UniformMatrix4fvInvalidArgs3_1) {
EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix4fv, 0>();
+ SpecializedSetup<UniformMatrix4fv, 0>(false);
UniformMatrix4fv cmd;
cmd.Init(1, 2, false, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1360,7 +1344,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvImmediateValidArgs) {
*gl_,
UniformMatrix4fv(1, 2, false,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<UniformMatrix4fvImmediate, 0>();
+ SpecializedSetup<UniformMatrix4fvImmediate, 0>(true);
GLfloat temp[16 * 2] = { 0, };
cmd.Init(1, 2, false, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1372,7 +1356,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvImmediateInvalidArgs2_0) {
UniformMatrix4fvImmediate& cmd =
*GetImmediateAs<UniformMatrix4fvImmediate>();
EXPECT_CALL(*gl_, UniformMatrix4fv(_, _, _, _)).Times(0);
- SpecializedSetup<UniformMatrix4fvImmediate, 0>();
+ SpecializedSetup<UniformMatrix4fvImmediate, 0>(false);
GLfloat temp[16 * 2] = { 0, };
cmd.Init(1, 2, true, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1383,7 +1367,7 @@ TEST_F(GLES2DecoderTest2, UniformMatrix4fvImmediateInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, ValidateProgramValidArgs) {
EXPECT_CALL(*gl_, ValidateProgram(kServiceProgramId));
- SpecializedSetup<ValidateProgram, 0>();
+ SpecializedSetup<ValidateProgram, 0>(true);
ValidateProgram cmd;
cmd.Init(client_program_id_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1392,7 +1376,7 @@ TEST_F(GLES2DecoderTest2, ValidateProgramValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib1fValidArgs) {
EXPECT_CALL(*gl_, VertexAttrib1f(1, 2));
- SpecializedSetup<VertexAttrib1f, 0>();
+ SpecializedSetup<VertexAttrib1f, 0>(true);
VertexAttrib1f cmd;
cmd.Init(1, 2);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1403,7 +1387,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fvValidArgs) {
EXPECT_CALL(
*gl_, VertexAttrib1fv(
1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<VertexAttrib1fv, 0>();
+ SpecializedSetup<VertexAttrib1fv, 0>(true);
VertexAttrib1fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1412,7 +1396,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fvValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, VertexAttrib1fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib1fv, 0>();
+ SpecializedSetup<VertexAttrib1fv, 0>(false);
VertexAttrib1fv cmd;
cmd.Init(1, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1420,7 +1404,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, VertexAttrib1fvInvalidArgs1_1) {
EXPECT_CALL(*gl_, VertexAttrib1fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib1fv, 0>();
+ SpecializedSetup<VertexAttrib1fv, 0>(false);
VertexAttrib1fv cmd;
cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1432,7 +1416,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) {
*gl_,
VertexAttrib1fv(1,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<VertexAttrib1fvImmediate, 0>();
+ SpecializedSetup<VertexAttrib1fvImmediate, 0>(true);
GLfloat temp[1] = { 0, };
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1442,7 +1426,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib1fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib2fValidArgs) {
EXPECT_CALL(*gl_, VertexAttrib2f(1, 2, 3));
- SpecializedSetup<VertexAttrib2f, 0>();
+ SpecializedSetup<VertexAttrib2f, 0>(true);
VertexAttrib2f cmd;
cmd.Init(1, 2, 3);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1453,7 +1437,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fvValidArgs) {
EXPECT_CALL(
*gl_, VertexAttrib2fv(
1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<VertexAttrib2fv, 0>();
+ SpecializedSetup<VertexAttrib2fv, 0>(true);
VertexAttrib2fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1462,7 +1446,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fvValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, VertexAttrib2fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib2fv, 0>();
+ SpecializedSetup<VertexAttrib2fv, 0>(false);
VertexAttrib2fv cmd;
cmd.Init(1, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1470,7 +1454,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, VertexAttrib2fvInvalidArgs1_1) {
EXPECT_CALL(*gl_, VertexAttrib2fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib2fv, 0>();
+ SpecializedSetup<VertexAttrib2fv, 0>(false);
VertexAttrib2fv cmd;
cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1482,7 +1466,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) {
*gl_,
VertexAttrib2fv(1,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<VertexAttrib2fvImmediate, 0>();
+ SpecializedSetup<VertexAttrib2fvImmediate, 0>(true);
GLfloat temp[2] = { 0, };
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1492,7 +1476,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib2fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib3fValidArgs) {
EXPECT_CALL(*gl_, VertexAttrib3f(1, 2, 3, 4));
- SpecializedSetup<VertexAttrib3f, 0>();
+ SpecializedSetup<VertexAttrib3f, 0>(true);
VertexAttrib3f cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1503,7 +1487,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fvValidArgs) {
EXPECT_CALL(
*gl_, VertexAttrib3fv(
1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<VertexAttrib3fv, 0>();
+ SpecializedSetup<VertexAttrib3fv, 0>(true);
VertexAttrib3fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1512,7 +1496,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fvValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, VertexAttrib3fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib3fv, 0>();
+ SpecializedSetup<VertexAttrib3fv, 0>(false);
VertexAttrib3fv cmd;
cmd.Init(1, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1520,7 +1504,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, VertexAttrib3fvInvalidArgs1_1) {
EXPECT_CALL(*gl_, VertexAttrib3fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib3fv, 0>();
+ SpecializedSetup<VertexAttrib3fv, 0>(false);
VertexAttrib3fv cmd;
cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1532,7 +1516,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) {
*gl_,
VertexAttrib3fv(1,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<VertexAttrib3fvImmediate, 0>();
+ SpecializedSetup<VertexAttrib3fvImmediate, 0>(true);
GLfloat temp[3] = { 0, };
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1542,7 +1526,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib3fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib4fValidArgs) {
EXPECT_CALL(*gl_, VertexAttrib4f(1, 2, 3, 4, 5));
- SpecializedSetup<VertexAttrib4f, 0>();
+ SpecializedSetup<VertexAttrib4f, 0>(true);
VertexAttrib4f cmd;
cmd.Init(1, 2, 3, 4, 5);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1553,7 +1537,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fvValidArgs) {
EXPECT_CALL(
*gl_, VertexAttrib4fv(
1, reinterpret_cast<const GLfloat*>(shared_memory_address_)));
- SpecializedSetup<VertexAttrib4fv, 0>();
+ SpecializedSetup<VertexAttrib4fv, 0>(true);
VertexAttrib4fv cmd;
cmd.Init(1, shared_memory_id_, shared_memory_offset_);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1562,7 +1546,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fvValidArgs) {
TEST_F(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_0) {
EXPECT_CALL(*gl_, VertexAttrib4fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib4fv, 0>();
+ SpecializedSetup<VertexAttrib4fv, 0>(false);
VertexAttrib4fv cmd;
cmd.Init(1, kInvalidSharedMemoryId, 0);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1570,7 +1554,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_0) {
TEST_F(GLES2DecoderTest2, VertexAttrib4fvInvalidArgs1_1) {
EXPECT_CALL(*gl_, VertexAttrib4fv(_, _)).Times(0);
- SpecializedSetup<VertexAttrib4fv, 0>();
+ SpecializedSetup<VertexAttrib4fv, 0>(false);
VertexAttrib4fv cmd;
cmd.Init(1, shared_memory_id_, kInvalidSharedMemoryOffset);
EXPECT_EQ(error::kOutOfBounds, ExecuteCmd(cmd));
@@ -1582,7 +1566,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) {
*gl_,
VertexAttrib4fv(1,
reinterpret_cast<GLfloat*>(ImmediateDataAddress(&cmd))));
- SpecializedSetup<VertexAttrib4fvImmediate, 0>();
+ SpecializedSetup<VertexAttrib4fvImmediate, 0>(true);
GLfloat temp[4] = { 0, };
cmd.Init(1, &temp[0]);
EXPECT_EQ(error::kNoError,
@@ -1594,7 +1578,7 @@ TEST_F(GLES2DecoderTest2, VertexAttrib4fvImmediateValidArgs) {
TEST_F(GLES2DecoderTest2, ViewportValidArgs) {
EXPECT_CALL(*gl_, Viewport(1, 2, 3, 4));
- SpecializedSetup<Viewport, 0>();
+ SpecializedSetup<Viewport, 0>(true);
Viewport cmd;
cmd.Init(1, 2, 3, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1603,7 +1587,7 @@ TEST_F(GLES2DecoderTest2, ViewportValidArgs) {
TEST_F(GLES2DecoderTest2, ViewportInvalidArgs2_0) {
EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0);
- SpecializedSetup<Viewport, 0>();
+ SpecializedSetup<Viewport, 0>(false);
Viewport cmd;
cmd.Init(1, 2, -1, 4);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
@@ -1612,7 +1596,7 @@ TEST_F(GLES2DecoderTest2, ViewportInvalidArgs2_0) {
TEST_F(GLES2DecoderTest2, ViewportInvalidArgs3_0) {
EXPECT_CALL(*gl_, Viewport(_, _, _, _)).Times(0);
- SpecializedSetup<Viewport, 0>();
+ SpecializedSetup<Viewport, 0>(false);
Viewport cmd;
cmd.Init(1, 2, 3, -1);
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
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 e8a91e8..33fbf54 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
@@ -45,12 +45,34 @@ void GLES2DecoderTestBase::SetUp() {
EXPECT_CALL(*gl_, GetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, _))
.WillOnce(SetArgumentPointee<1>(kMaxCubeMapTextureSize))
.RetiresOnSaturation();
+
+ EXPECT_CALL(*gl_, EnableVertexAttribArray(0))
+ .Times(1)
+ .RetiresOnSaturation();
+ static GLuint attrib_ids[] = {
+ kServiceAttrib0BufferId,
+ };
+ EXPECT_CALL(*gl_, GenBuffersARB(arraysize(attrib_ids), _))
+ .WillOnce(SetArrayArgument<1>(attrib_ids,
+ attrib_ids + arraysize(attrib_ids)))
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, kServiceAttrib0BufferId))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, VertexAttribPointer(0, 1, GL_FLOAT, GL_FALSE, 0, NULL))
+ .Times(1)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, BindBuffer(GL_ARRAY_BUFFER, 0))
+ .Times(1)
+ .RetiresOnSaturation();
+
static GLuint black_ids[] = {
kServiceBlackTexture2dId,
kServiceBlackTextureCubemapId,
};
- EXPECT_CALL(*gl_, GenTextures(2, _))
- .WillOnce(SetArrayArgument<1>(black_ids, black_ids + 2))
+ EXPECT_CALL(*gl_, GenTextures(arraysize(black_ids), _))
+ .WillOnce(SetArrayArgument<1>(black_ids,
+ black_ids + arraysize(black_ids)))
.RetiresOnSaturation();
EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_2D, kServiceBlackTexture2dId))
.Times(1)
@@ -147,6 +169,12 @@ void GLES2DecoderTestBase::SetUp() {
void GLES2DecoderTestBase::TearDown() {
// All Tests should have read all their GLErrors before getting here.
EXPECT_EQ(GL_NO_ERROR, GetGLError());
+ EXPECT_CALL(*gl_, DeleteTextures(1, _))
+ .Times(2)
+ .RetiresOnSaturation();
+ EXPECT_CALL(*gl_, DeleteBuffersARB(1, _))
+ .Times(1)
+ .RetiresOnSaturation();
decoder_->Destroy();
decoder_.reset();
engine_.reset();
@@ -197,6 +225,27 @@ void GLES2DecoderTestBase::SetupShaderForUniform() {
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
}
+void GLES2DecoderTestBase::DoBindBuffer(
+ GLenum target, GLuint client_id, GLuint service_id) {
+ EXPECT_CALL(*gl_, BindBuffer(target, service_id))
+ .Times(1)
+ .RetiresOnSaturation();
+ BindBuffer cmd;
+ cmd.Init(target, client_id);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+}
+
+void GLES2DecoderTestBase::DoDeleteBuffer(
+ GLuint client_id, GLuint service_id) {
+ EXPECT_CALL(*gl_, DeleteBuffersARB(1, Pointee(service_id)))
+ .Times(1)
+ .RetiresOnSaturation();
+ DeleteBuffers cmd;
+ cmd.Init(1, shared_memory_id_, shared_memory_offset_);
+ memcpy(shared_memory_address_, &client_id, sizeof(client_id));
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+}
+
void GLES2DecoderTestBase::DoBindFramebuffer(
GLenum target, GLuint client_id, GLuint service_id) {
EXPECT_CALL(*gl_, BindFramebufferEXT(target, service_id))
@@ -242,6 +291,18 @@ void GLES2DecoderTestBase::DoTexImage2D(
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
}
+void GLES2DecoderTestBase::DoVertexAttribPointer(
+ GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset) {
+ EXPECT_CALL(*gl_,
+ VertexAttribPointer(index, size, type, GL_FALSE, stride,
+ BufferOffset(offset)))
+ .Times(1)
+ .RetiresOnSaturation();
+ VertexAttribPointer cmd;
+ cmd.Init(index, size, GL_FLOAT, GL_FALSE, stride, offset);
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
+}
+
// GCC requires these declarations, but MSVC requires they not be present
#ifndef COMPILER_MSVC
const GLint GLES2DecoderTestBase::kMaxTextureSize;
@@ -252,6 +313,8 @@ const GLint GLES2DecoderTestBase::kNumTextureUnits;
const GLuint GLES2DecoderTestBase::kServiceBlackTexture2dId;
const GLuint GLES2DecoderTestBase::kServiceBlackTextureCubemapId;
+const GLuint GLES2DecoderTestBase::kServiceAttrib0BufferId;
+
const GLuint GLES2DecoderTestBase::kServiceBufferId;
const GLuint GLES2DecoderTestBase::kServiceFramebufferId;
const GLuint GLES2DecoderTestBase::kServiceRenderbufferId;
@@ -406,16 +469,6 @@ void GLES2DecoderWithShaderTestBase::DoEnableVertexAttribArray(GLint index) {
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
}
-void GLES2DecoderWithShaderTestBase::DoBindBuffer(
- GLenum target, GLuint client_id, GLuint service_id) {
- EXPECT_CALL(*gl_, BindBuffer(target, service_id))
- .Times(1)
- .RetiresOnSaturation();
- BindBuffer cmd;
- cmd.Init(target, client_id);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
-}
-
void GLES2DecoderWithShaderTestBase::DoBufferData(GLenum target, GLsizei size) {
EXPECT_CALL(*gl_, GetError())
.WillOnce(Return(GL_NO_ERROR))
@@ -443,17 +496,6 @@ void GLES2DecoderWithShaderTestBase::DoBufferSubData(
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
}
-void GLES2DecoderWithShaderTestBase::DoDeleteBuffer(
- GLuint client_id, GLuint service_id) {
- EXPECT_CALL(*gl_, DeleteBuffersARB(1, Pointee(service_id)))
- .Times(1)
- .RetiresOnSaturation();
- DeleteBuffers cmd;
- cmd.Init(1, shared_memory_id_, shared_memory_offset_);
- memcpy(shared_memory_address_, &client_id, sizeof(client_id));
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
-}
-
void GLES2DecoderWithShaderTestBase::DoDeleteProgram(
GLuint client_id, GLuint service_id) {
EXPECT_CALL(*gl_, DeleteProgram(service_id))
@@ -464,18 +506,6 @@ void GLES2DecoderWithShaderTestBase::DoDeleteProgram(
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
}
-void GLES2DecoderWithShaderTestBase::DoVertexAttribPointer(
- GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset) {
- EXPECT_CALL(*gl_,
- VertexAttribPointer(index, size, type, GL_FALSE, stride,
- BufferOffset(offset)))
- .Times(1)
- .RetiresOnSaturation();
- VertexAttribPointer cmd;
- cmd.Init(index, size, GL_FLOAT, GL_FALSE, stride, offset);
- EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
-}
-
void GLES2DecoderWithShaderTestBase::SetupVertexBuffer() {
DoEnableVertexAttribArray(1);
DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
@@ -516,6 +546,7 @@ const int GLES2DecoderWithShaderTestBase::kValidIndexRangeCount;
const int GLES2DecoderWithShaderTestBase::kInvalidIndexRangeStart;
const int GLES2DecoderWithShaderTestBase::kInvalidIndexRangeCount;
const int GLES2DecoderWithShaderTestBase::kOutOfRangeIndexRangeEnd;
+const GLuint GLES2DecoderWithShaderTestBase::kMaxValidIndex;
const GLint GLES2DecoderWithShaderTestBase::kMaxAttribLength;
const GLint GLES2DecoderWithShaderTestBase::kAttrib1Size;
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 e1279fc..f18b598 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h
@@ -46,6 +46,8 @@ class GLES2DecoderTestBase : public testing::Test {
static const GLuint kServiceBlackTexture2dId = 701;
static const GLuint kServiceBlackTextureCubemapId = 702;
+ static const GLuint kServiceAttrib0BufferId = 801;
+
static const GLuint kServiceBufferId = 301;
static const GLuint kServiceFramebufferId = 302;
static const GLuint kServiceRenderbufferId = 303;
@@ -79,7 +81,7 @@ class GLES2DecoderTestBase : public testing::Test {
// This template exists solely so we can specialize it for
// certain commands.
template <typename T, int id>
- void SpecializedSetup() {
+ void SpecializedSetup(bool valid) {
}
template <typename T>
@@ -186,13 +188,21 @@ class GLES2DecoderTestBase : public testing::Test {
// EXPECT_EQ that expect both types to be the same.
GLint GetGLError();
+ void DoBindBuffer(GLenum target, GLuint client_id, GLuint service_id);
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 DoDeleteBuffer(GLuint client_id, GLuint service_id);
void DoTexImage2D(GLenum target, GLint level, GLenum internal_format,
GLsizei width, GLsizei height, GLint border,
GLenum format, GLenum type,
uint32 shared_memory_id, uint32 shared_memory_offset);
+ void DoVertexAttribPointer(
+ GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset);
+
+ GLvoid* BufferOffset(unsigned i) {
+ return static_cast<int8 *>(NULL)+(i);
+ }
// Use StrictMock to make 100% sure we know how GL will be called.
scoped_ptr< ::testing::StrictMock< ::gles2::MockGLInterface> > gl_;
@@ -273,6 +283,7 @@ class GLES2DecoderWithShaderTestBase : public GLES2DecoderTestBase {
static const int kInvalidIndexRangeStart = 0;
static const int kInvalidIndexRangeCount = 7;
static const int kOutOfRangeIndexRangeEnd = 10;
+ static const GLuint kMaxValidIndex = 7;
static const GLint kMaxAttribLength = 10;
static const char* kAttrib1Name;
@@ -313,26 +324,15 @@ class GLES2DecoderWithShaderTestBase : public GLES2DecoderTestBase {
void SetupTexture();
- GLvoid* BufferOffset(unsigned i) {
- return static_cast<int8 *>(NULL)+(i);
- }
-
void DoEnableVertexAttribArray(GLint index);
- void DoBindBuffer(GLenum target, GLuint client_id, GLuint service_id);
-
void DoBufferData(GLenum target, GLsizei size);
void DoBufferSubData(
GLenum target, GLint offset, GLsizei size, const void* data);
- void DoDeleteBuffer(GLuint client_id, GLuint service_id);
-
void DoDeleteProgram(GLuint client_id, GLuint service_id);
- void DoVertexAttribPointer(
- GLuint index, GLint size, GLenum type, GLsizei stride, GLuint offset);
-
void SetupVertexBuffer();
void SetupIndexBuffer();
diff --git a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
index d28f7f1..4d3ab19 100644
--- a/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
+++ b/gpu/command_buffer/service/gles2_cmd_validation_implementation_autogen.h
@@ -600,12 +600,12 @@ bool ValidateGLenumVertexAttribType(GLenum value) {
bool ValidateGLenumVertexAttribute(GLenum value) {
switch (value) {
+ case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:
case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
case GL_VERTEX_ATTRIB_ARRAY_ENABLED:
case GL_VERTEX_ATTRIB_ARRAY_SIZE:
case GL_VERTEX_ATTRIB_ARRAY_STRIDE:
case GL_VERTEX_ATTRIB_ARRAY_TYPE:
- case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:
case GL_CURRENT_VERTEX_ATTRIB:
return true;
default: