| Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc
|
| index 8349ffaaa93d1a9d6b69b98e72f4582c0a209296..685f30d48d35b3ed0daed9a72b7dfb16edd00d23 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc
|
| @@ -1393,6 +1393,128 @@ TEST_P(GLES2DecoderTest, RenderbufferStorageBadArgs) {
|
| EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
|
| }
|
|
|
| +TEST_P(GLES3DecoderTest, ClearBufferivImmediateValidArgs) {
|
| + DoBindFramebuffer(
|
| + GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
|
| + DoBindRenderbuffer(
|
| + GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
|
| + DoRenderbufferStorage(
|
| + GL_RENDERBUFFER, GL_RGBA8I, GL_RGBA8I, 1, 1, GL_NO_ERROR);
|
| + DoFramebufferRenderbuffer(
|
| + GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
|
| + client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR);
|
| +
|
| + cmds::ClearBufferivImmediate& cmd =
|
| + *GetImmediateAs<cmds::ClearBufferivImmediate>();
|
| + GLint temp[4] = { 0 };
|
| + cmd.Init(GL_COLOR, 0, &temp[0]);
|
| + EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER))
|
| + .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
|
| + .RetiresOnSaturation();
|
| + SetupExpectationsForApplyingDirtyState(
|
| + false, false, false, 0x1111, false, false, 0, 0, false);
|
| + EXPECT_CALL(*gl_, ClearBufferiv(
|
| + GL_COLOR, 0,
|
| + reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
|
| + EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +}
|
| +
|
| +TEST_P(GLES3DecoderTest, ClearBufferuivImmediateValidArgs) {
|
| + DoBindFramebuffer(
|
| + GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
|
| + DoBindRenderbuffer(
|
| + GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
|
| + DoRenderbufferStorage(
|
| + GL_RENDERBUFFER, GL_RGBA8UI, GL_RGBA8UI, 1, 1, GL_NO_ERROR);
|
| + DoFramebufferRenderbuffer(
|
| + GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
|
| + client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR);
|
| +
|
| + cmds::ClearBufferuivImmediate& cmd =
|
| + *GetImmediateAs<cmds::ClearBufferuivImmediate>();
|
| + GLuint temp[4] = { 0u };
|
| + cmd.Init(GL_COLOR, 0, &temp[0]);
|
| + EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER))
|
| + .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
|
| + .RetiresOnSaturation();
|
| + SetupExpectationsForApplyingDirtyState(
|
| + false, false, false, 0x1111, false, false, 0, 0, false);
|
| + EXPECT_CALL(*gl_, ClearBufferuiv(
|
| + GL_COLOR, 0,
|
| + reinterpret_cast<GLuint*>(
|
| + ImmediateDataAddress(&cmd))));
|
| + EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +}
|
| +
|
| +TEST_P(GLES3DecoderTest, ClearBufferfvImmediateValidArgs) {
|
| + DoBindFramebuffer(
|
| + GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
|
| + DoBindRenderbuffer(
|
| + GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
|
| + DoRenderbufferStorage(
|
| + GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT32F,
|
| + 1, 1, GL_NO_ERROR);
|
| + DoFramebufferRenderbuffer(
|
| + GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER,
|
| + client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR);
|
| +
|
| + Enable cmd_enable;
|
| + cmd_enable.Init(GL_DEPTH_TEST);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +
|
| + cmds::ClearBufferfvImmediate& cmd =
|
| + *GetImmediateAs<cmds::ClearBufferfvImmediate>();
|
| + GLfloat temp[4] = { 1.0f };
|
| + cmd.Init(GL_DEPTH, 0, &temp[0]);
|
| + EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER))
|
| + .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
|
| + .RetiresOnSaturation();
|
| + SetupExpectationsForApplyingDirtyState(
|
| + true, true, false, 0x1110, true, true, 0, 0, false);
|
| + EXPECT_CALL(*gl_, ClearBufferfv(
|
| + GL_DEPTH, 0,
|
| + reinterpret_cast<GLfloat*>(
|
| + ImmediateDataAddress(&cmd))));
|
| + EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +}
|
| +
|
| +TEST_P(GLES3DecoderTest, ClearBufferfiValidArgs) {
|
| + DoBindFramebuffer(
|
| + GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
|
| + DoBindRenderbuffer(
|
| + GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
|
| + DoRenderbufferStorage(
|
| + GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, GL_DEPTH24_STENCIL8,
|
| + 1, 1, GL_NO_ERROR);
|
| + DoFramebufferRenderbuffer(
|
| + GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER,
|
| + client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR);
|
| +
|
| + Enable cmd_enable;
|
| + cmd_enable.Init(GL_STENCIL_TEST);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable));
|
| + cmd_enable.Init(GL_DEPTH_TEST);
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +
|
| + cmds::ClearBufferfi cmd;
|
| + cmd.Init(GL_DEPTH_STENCIL, 0, 1.0f, 0);
|
| + EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER))
|
| + .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE))
|
| + .RetiresOnSaturation();
|
| + SetupExpectationsForApplyingDirtyState(
|
| + true, true, true, 0x1110, true, true,
|
| + GLES2Decoder::kDefaultStencilMask, GLES2Decoder::kDefaultStencilMask,
|
| + true);
|
| + EXPECT_CALL(*gl_, ClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0f, 0));
|
| + EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +}
|
| +
|
| TEST_P(GLES2DecoderManualInitTest,
|
| RenderbufferStorageMultisampleCHROMIUMGLError) {
|
| InitState init;
|
|
|