Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
index 2a3dc20d2010ab8d4e6dd5efcde9a3b9272e7d58..f7f6e615548ad6c1336f3efe660f7b19afac7930 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc |
@@ -1738,6 +1738,17 @@ TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) { |
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
} |
+TEST_P(GLES2DecoderWithShaderTest, Uniform1uiValidArgs) { |
+ EXPECT_CALL(*gl_, Uniform1uiv(kUniform4RealLocation, 1, _)); |
+ cmds::Uniform1ui cmd; |
+ cmd.Init(kUniform4FakeLocation, 2); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
+} |
+ |
TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { |
Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); |
EXPECT_CALL(*gl_, |
@@ -1788,6 +1799,134 @@ TEST_P(GLES2DecoderWithShaderTest, Uniform1ivSamplerIsLimited) { |
EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
} |
+TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { |
+ cmds::Uniform1uivImmediate& cmd = |
+ *GetImmediateAs<cmds::Uniform1uivImmediate>(); |
+ EXPECT_CALL( |
+ *gl_, |
+ Uniform1uiv(kUniform4RealLocation, 1, |
+ reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd)))); |
+ GLuint temp[1 * 2] = { |
+ 0, |
+ }; |
+ cmd.Init(kUniform4FakeLocation, 1, &temp[0]); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { |
+ EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); |
+ Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); |
+ GLuint temp[1 * 2] = { |
+ 0, |
+ }; |
+ // uniform1 is SAMPLER type. |
+ cmd.Init(kUniform1FakeLocation, 1, &temp[0]); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+ EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform1uivZeroCount) { |
+ EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); |
+ Uniform1uivImmediate& cmd = *GetImmediateAs<Uniform1uivImmediate>(); |
+ GLuint temp = 0; |
+ cmd.Init(kUniform4FakeLocation, 0, &temp); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform2uiValidArgs) { |
+ EXPECT_CALL(*gl_, Uniform2uiv(kUniform5RealLocation, 1, _)); |
+ cmds::Uniform2ui cmd; |
+ cmd.Init(kUniform5FakeLocation, 2, 3); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { |
+ cmds::Uniform2uivImmediate& cmd = |
+ *GetImmediateAs<cmds::Uniform2uivImmediate>(); |
+ EXPECT_CALL( |
+ *gl_, |
+ Uniform2uiv(kUniform5RealLocation, 1, |
+ reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd)))); |
+ GLuint temp[2 * 1] = { |
+ 0, |
+ }; |
+ cmd.Init(kUniform5FakeLocation, 1, &temp[0]); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) { |
+ EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); |
+ cmds::Uniform3ui cmd; |
+ cmd.Init(kUniform6FakeLocation, 2, 3, 4); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { |
+ cmds::Uniform3uivImmediate& cmd = |
+ *GetImmediateAs<cmds::Uniform3uivImmediate>(); |
+ EXPECT_CALL( |
+ *gl_, |
+ Uniform3uiv(kUniform6RealLocation, 1, |
+ reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd)))); |
+ GLuint temp[3 * 1] = { |
+ 0, |
+ }; |
+ cmd.Init(kUniform6FakeLocation, 1, &temp[0]); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) { |
+ EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); |
+ cmds::Uniform4ui cmd; |
+ cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
+} |
+ |
+TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { |
+ cmds::Uniform4uivImmediate& cmd = |
+ *GetImmediateAs<cmds::Uniform4uivImmediate>(); |
+ EXPECT_CALL( |
+ *gl_, |
+ Uniform4uiv(kUniform7RealLocation, 1, |
+ reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd)))); |
+ GLuint temp[4 * 1] = { |
+ 0, |
+ }; |
+ cmd.Init(kUniform7FakeLocation, 1, &temp[0]); |
+ decoder_->set_unsafe_es3_apis_enabled(true); |
+ EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+ EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
+ decoder_->set_unsafe_es3_apis_enabled(false); |
+ EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); |
+} |
+ |
TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { |
const uint32 kBucketId = 123; |
const GLint kLocation = 2; |