Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
index 6437648ac00ae793b707568c9a32af96b9f5127a..16783b8e6fd08a6c33859cdecca099297e5057fd 100644 |
--- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
+++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc |
@@ -71,15 +71,14 @@ class GLES2DecoderTestWithExtensionsOnGLES2 |
GLES2DecoderTestWithExtensionsOnGLES2() {} |
virtual void SetUp() { |
- InitDecoder(GetParam(), // extensions |
- "opengl es 2.0", // gl version |
- true, // has alpha |
- true, // has depth |
- false, // has stencil |
- true, // request alpha |
- true, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = GetParam(); |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_alpha = true; |
+ init.has_depth = true; |
+ init.request_alpha = true; |
+ init.request_depth = true; |
+ InitDecoder(init); |
} |
}; |
@@ -100,16 +99,15 @@ class GLES2DecoderGeometryInstancingTest : public GLES2DecoderWithShaderTest { |
} |
virtual void SetUp() { |
- InitDecoder( |
- "GL_ANGLE_instanced_arrays", // extensions |
- "opengl es 2.0", // gl version |
- true, // has alpha |
- true, // has depth |
- false, // has stencil |
- true, // request alpha |
- true, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ANGLE_instanced_arrays"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_alpha = true; |
+ init.has_depth = true; |
+ init.request_alpha = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
SetupDefaultProgram(); |
} |
}; |
@@ -125,17 +123,10 @@ class GLES2DecoderRGBBackbufferTest : public GLES2DecoderWithShaderTest { |
command_line.AppendSwitchASCII( |
switches::kGpuDriverBugWorkarounds, |
base::IntToString(gpu::CLEAR_ALPHA_IN_READPIXELS)); |
- InitDecoderWithCommandLine( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true, // bind generates resource |
- &command_line); |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoderWithCommandLine(init, &command_line); |
SetupDefaultProgram(); |
} |
}; |
@@ -215,6 +206,7 @@ TEST_F(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0OverflowFails) { |
cmd.Init(GL_TRIANGLES, 0, kLargeCount); |
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
+ EXPECT_FALSE(GetDecoder()->WasContextLost()); |
} |
// Tests when the math overflows (0x7FFFFFFF + 1 = 0x8000000 verts) |
@@ -228,6 +220,7 @@ TEST_F(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0PosToNegFails) { |
cmd.Init(GL_TRIANGLES, 0, kLargeCount); |
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
+ EXPECT_FALSE(GetDecoder()->WasContextLost()); |
} |
// Tests when the driver returns an error |
@@ -243,6 +236,37 @@ TEST_F(GLES2DecoderWithShaderTest, DrawArraysSimulatedAttrib0OOMFails) { |
cmd.Init(GL_TRIANGLES, 0, kFakeLargeCount); |
EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
+ EXPECT_FALSE(GetDecoder()->WasContextLost()); |
+} |
+ |
+// Test that we lose context. |
+TEST_F(GLES2DecoderManualInitTest, LoseContextWhenOOM) { |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_alpha = true; |
+ init.has_depth = true; |
+ init.request_alpha = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ init.lose_context_when_out_of_memory = true; |
+ InitDecoder(init); |
+ SetupDefaultProgram(); |
+ |
+ const GLsizei kFakeLargeCount = 0x1234; |
+ SetupTexture(); |
+ AddExpectationsForSimulatedAttrib0WithError( |
+ kFakeLargeCount, 0, GL_OUT_OF_MEMORY); |
+ EXPECT_CALL(*gl_, DrawArrays(_, _, _)).Times(0).RetiresOnSaturation(); |
+ // Other contexts in the group should be lost also. |
+ EXPECT_CALL(*mock_decoder_, LoseContext(GL_UNKNOWN_CONTEXT_RESET_ARB)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ DrawArrays cmd; |
+ cmd.Init(GL_TRIANGLES, 0, kFakeLargeCount); |
+ // This context should be lost. |
+ EXPECT_EQ(error::kLostContext, ExecuteCmd(cmd)); |
+ EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
+ EXPECT_TRUE(decoder_->WasContextLost()); |
} |
TEST_F(GLES2DecoderWithShaderTest, DrawArraysBadTextureUsesBlack) { |
@@ -328,17 +352,14 @@ TEST_F(GLES2DecoderManualInitTest, InitVertexAttributes) { |
command_line.AppendSwitchASCII( |
switches::kGpuDriverBugWorkarounds, |
base::IntToString(gpu::INIT_VERTEX_ATTRIBUTES)); |
- InitDecoderWithCommandLine( |
- "", // extensions |
- "3.0", // gl version |
- true, // has alpha |
- true, // has depth |
- false, // has stencil |
- true, // request alpha |
- true, // request depth |
- false, // request stencil |
- true, // bind generates resource |
- &command_line); |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_alpha = true; |
+ init.has_depth = true; |
+ init.request_alpha = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoderWithCommandLine(init, &command_line); |
SetupDefaultProgram(); |
SetupTexture(); |
SetupVertexBuffer(); |
@@ -1928,17 +1949,10 @@ TEST_F(GLES2DecoderManualInitTest, SetTextureFiltersBeforeGenerateMipmap) { |
command_line.AppendSwitchASCII( |
switches::kGpuDriverBugWorkarounds, |
base::IntToString(gpu::SET_TEXTURE_FILTER_BEFORE_GENERATING_MIPMAP)); |
- InitDecoderWithCommandLine( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true, // bind generates resource |
- &command_line); |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoderWithCommandLine(init, &command_line); |
EXPECT_CALL(*gl_, GenerateMipmapEXT(_)) |
.Times(0); |
@@ -2604,16 +2618,13 @@ TEST_F(GLES2DecoderTest, ReadPixelsInvalidArgs) { |
} |
TEST_F(GLES2DecoderManualInitTest, ReadPixelsAsyncError) { |
- InitDecoder( |
- "GL_ARB_sync", // extensions |
- "opengl es 3.0", // gl version |
- true, // has alpha |
- false, // has depth |
- false, // has stencil |
- true, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_sync"; |
+ init.gl_version = "opengl es 3.0"; |
+ init.has_alpha = true; |
+ init.request_alpha = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
typedef ReadPixels::Result Result; |
Result* result = GetSharedMemoryAs<Result*>(); |
@@ -3892,16 +3903,12 @@ TEST_F(GLES2DecoderRGBBackbufferTest, RGBBackbufferColorMaskFBO) { |
} |
TEST_F(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- true, // has alpha |
- false, // has depth |
- false, // has stencil |
- true, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_alpha = true; |
+ init.request_alpha = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -3924,16 +3931,11 @@ TEST_F(GLES2DecoderManualInitTest, ActualAlphaMatchesRequestedAlpha) { |
} |
TEST_F(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- true, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_alpha = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -3956,16 +3958,12 @@ TEST_F(GLES2DecoderManualInitTest, ActualAlphaDoesNotMatchRequestedAlpha) { |
} |
TEST_F(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- true, // has depth |
- false, // has stencil |
- false, // request alpha |
- true, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_depth = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -3988,16 +3986,11 @@ TEST_F(GLES2DecoderManualInitTest, ActualDepthMatchesRequestedDepth) { |
} |
TEST_F(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- true, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -4020,16 +4013,12 @@ TEST_F(GLES2DecoderManualInitTest, ActualDepthDoesNotMatchRequestedDepth) { |
} |
TEST_F(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- true, // has stencil |
- false, // request alpha |
- false, // request depth |
- true, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_stencil = true; |
+ init.request_stencil = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -4052,16 +4041,11 @@ TEST_F(GLES2DecoderManualInitTest, ActualStencilMatchesRequestedStencil) { |
} |
TEST_F(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- true, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_stencil = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -4084,16 +4068,12 @@ TEST_F(GLES2DecoderManualInitTest, ActualStencilDoesNotMatchRequestedStencil) { |
} |
TEST_F(GLES2DecoderManualInitTest, DepthEnableWithDepth) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- true, // has depth |
- false, // has stencil |
- false, // request alpha |
- true, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_depth = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
Enable cmd; |
cmd.Init(GL_DEPTH_TEST); |
@@ -4147,16 +4127,11 @@ TEST_F(GLES2DecoderManualInitTest, DepthEnableWithDepth) { |
} |
TEST_F(GLES2DecoderManualInitTest, DepthEnableWithoutRequestedDepth) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- true, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
Enable cmd; |
cmd.Init(GL_DEPTH_TEST); |
@@ -4209,16 +4184,12 @@ TEST_F(GLES2DecoderManualInitTest, DepthEnableWithoutRequestedDepth) { |
} |
TEST_F(GLES2DecoderManualInitTest, StencilEnableWithStencil) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- true, // has stencil |
- false, // request alpha |
- false, // request depth |
- true, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_stencil = true; |
+ init.request_stencil = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
Enable cmd; |
cmd.Init(GL_STENCIL_TEST); |
@@ -4271,16 +4242,11 @@ TEST_F(GLES2DecoderManualInitTest, StencilEnableWithStencil) { |
} |
TEST_F(GLES2DecoderManualInitTest, StencilEnableWithoutRequestedStencil) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- true, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_stencil = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
Enable cmd; |
cmd.Init(GL_STENCIL_TEST); |
@@ -4333,16 +4299,15 @@ TEST_F(GLES2DecoderManualInitTest, StencilEnableWithoutRequestedStencil) { |
} |
TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilReportsCorrectValues) { |
- InitDecoder( |
- "GL_OES_packed_depth_stencil", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- true, // has depth |
- true, // has stencil |
- false, // request alpha |
- true, // request depth |
- true, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_packed_depth_stencil"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_depth = true; |
+ init.has_stencil = true; |
+ init.request_depth = true; |
+ init.request_stencil = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -4378,16 +4343,14 @@ TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilReportsCorrectValues) { |
} |
TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) { |
- InitDecoder( |
- "GL_OES_packed_depth_stencil", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- true, // has depth |
- true, // has stencil |
- false, // request alpha |
- true, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_packed_depth_stencil"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_depth = true; |
+ init.has_stencil = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -4423,16 +4386,11 @@ TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilNoRequestedStencil) { |
} |
TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) { |
- InitDecoder( |
- "GL_OES_packed_depth_stencil", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_packed_depth_stencil"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
kServiceRenderbufferId); |
DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
@@ -4495,16 +4453,11 @@ TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferDepth) { |
} |
TEST_F(GLES2DecoderManualInitTest, PackedDepthStencilRenderbufferStencil) { |
- InitDecoder( |
- "GL_OES_packed_depth_stencil", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_packed_depth_stencil"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
kServiceRenderbufferId); |
DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
@@ -4899,16 +4852,11 @@ TEST_F(GLES2DecoderTest, RenderbufferStorageBadArgs) { |
TEST_F(GLES2DecoderManualInitTest, |
RenderbufferStorageMultisampleCHROMIUMGLError) { |
- InitDecoder( |
- "GL_EXT_framebuffer_multisample", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_framebuffer_multisample"; |
+ init.gl_version = "2.1"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
kServiceRenderbufferId); |
EXPECT_CALL(*gl_, GetError()) |
@@ -4927,16 +4875,11 @@ TEST_F(GLES2DecoderManualInitTest, |
TEST_F(GLES2DecoderManualInitTest, |
RenderbufferStorageMultisampleCHROMIUMBadArgs) { |
- InitDecoder( |
- "GL_EXT_framebuffer_multisample", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_framebuffer_multisample"; |
+ init.gl_version = "2.1"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
kServiceRenderbufferId); |
EXPECT_CALL(*gl_, RenderbufferStorageMultisampleEXT(_, _, _, _, _)) |
@@ -4958,16 +4901,10 @@ TEST_F(GLES2DecoderManualInitTest, |
} |
TEST_F(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) { |
- InitDecoder( |
- "GL_EXT_framebuffer_multisample", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_framebuffer_multisample"; |
+ init.gl_version = "2.1"; |
+ InitDecoder(init); |
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
kServiceRenderbufferId); |
InSequence sequence; |
@@ -4995,16 +4932,11 @@ TEST_F(GLES2DecoderManualInitTest, RenderbufferStorageMultisampleCHROMIUM) { |
TEST_F(GLES2DecoderManualInitTest, |
RenderbufferStorageMultisampleEXTNotSupported) { |
- InitDecoder( |
- "GL_EXT_framebuffer_multisample", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_framebuffer_multisample"; |
+ init.gl_version = "2.1"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
kServiceRenderbufferId); |
InSequence sequence; |
@@ -5114,16 +5046,11 @@ static bool ValueInArray(GLint value, GLint* array, GLint count) { |
} |
TEST_F(GLES2DecoderManualInitTest, GetCompressedTextureFormats) { |
- InitDecoder( |
- "GL_EXT_texture_compression_s3tc", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_texture_compression_s3tc"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -5172,16 +5099,10 @@ TEST_F(GLES2DecoderManualInitTest, GetCompressedTextureFormats) { |
} |
TEST_F(GLES2DecoderManualInitTest, GetNoCompressedTextureFormats) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -5217,16 +5138,11 @@ TEST_F(GLES2DecoderManualInitTest, GetNoCompressedTextureFormats) { |
} |
TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DBucketBadBucket) { |
- InitDecoder( |
- "GL_EXT_texture_compression_s3tc", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_texture_compression_s3tc"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
const uint32 kBadBucketId = 123; |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
@@ -5252,16 +5168,11 @@ struct S3TCTestData { |
} // anonymous namespace. |
TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DS3TC) { |
- InitDecoder( |
- "GL_EXT_texture_compression_s3tc", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_texture_compression_s3tc"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
const uint32 kBucketId = 123; |
CommonDecoder::Bucket* bucket = decoder_->CreateBucket(kBucketId); |
ASSERT_TRUE(bucket != NULL); |
@@ -5407,16 +5318,11 @@ TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DS3TC) { |
} |
TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DETC1) { |
- InitDecoder( |
- "GL_OES_compressed_ETC1_RGB8_texture", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_compressed_ETC1_RGB8_texture"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
const uint32 kBucketId = 123; |
CommonDecoder::Bucket* bucket = decoder_->CreateBucket(kBucketId); |
ASSERT_TRUE(bucket != NULL); |
@@ -5480,16 +5386,11 @@ TEST_F(GLES2DecoderManualInitTest, CompressedTexImage2DETC1) { |
} |
TEST_F(GLES2DecoderManualInitTest, GetCompressedTextureFormatsETC1) { |
- InitDecoder( |
- "GL_OES_compressed_ETC1_RGB8_texture", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_compressed_ETC1_RGB8_texture"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -5556,16 +5457,11 @@ TEST_F(GLES2DecoderWithShaderTest, GetProgramInfoCHROMIUMInvalidArgs) { |
} |
TEST_F(GLES2DecoderManualInitTest, EGLImageExternalBindTexture) { |
- InitDecoder( |
- "GL_OES_EGL_image_external", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_EGL_image_external"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_EXTERNAL_OES, kNewServiceId)); |
EXPECT_CALL(*gl_, GenTextures(1, _)) |
.WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
@@ -5579,16 +5475,11 @@ TEST_F(GLES2DecoderManualInitTest, EGLImageExternalBindTexture) { |
} |
TEST_F(GLES2DecoderManualInitTest, EGLImageExternalGetBinding) { |
- InitDecoder( |
- "GL_OES_EGL_image_external", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_EGL_image_external"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
EXPECT_CALL(*gl_, GetError()) |
@@ -5613,16 +5504,11 @@ TEST_F(GLES2DecoderManualInitTest, EGLImageExternalGetBinding) { |
} |
TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureDefaults) { |
- InitDecoder( |
- "GL_OES_EGL_image_external", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_EGL_image_external"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
TextureRef* texture_ref = GetTexture(client_texture_id_); |
@@ -5635,17 +5521,11 @@ TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureDefaults) { |
} |
TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureParam) { |
- InitDecoder( |
- "GL_OES_EGL_image_external", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
- |
+ InitState init; |
+ init.extensions = "GL_OES_EGL_image_external"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
EXPECT_CALL(*gl_, TexParameteri(GL_TEXTURE_EXTERNAL_OES, |
@@ -5695,17 +5575,11 @@ TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureParam) { |
} |
TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureParamInvalid) { |
- InitDecoder( |
- "GL_OES_EGL_image_external", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
- |
+ InitState init; |
+ init.extensions = "GL_OES_EGL_image_external"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_EXTERNAL_OES, client_texture_id_, kServiceTextureId); |
TexParameteri cmd; |
@@ -5737,16 +5611,11 @@ TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTextureParamInvalid) { |
} |
TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTexImage2DError) { |
- InitDecoder( |
- "GL_OES_EGL_image_external", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_EGL_image_external"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
GLenum target = GL_TEXTURE_EXTERNAL_OES; |
GLint level = 0; |
@@ -5768,16 +5637,9 @@ TEST_F(GLES2DecoderManualInitTest, EGLImageExternalTexImage2DError) { |
} |
TEST_F(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ InitDecoder(init); |
BindTexture cmd1; |
cmd1.Init(GL_TEXTURE_2D, kInvalidClientId); |
@@ -5801,16 +5663,11 @@ TEST_F(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { |
} |
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) { |
- InitDecoder( |
- "GL_ARB_texture_rectangle", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_rectangle"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, BindTexture(GL_TEXTURE_RECTANGLE_ARB, kNewServiceId)); |
EXPECT_CALL(*gl_, GenTextures(1, _)) |
.WillOnce(SetArgumentPointee<1>(kNewServiceId)); |
@@ -5824,16 +5681,11 @@ TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleBindTexture) { |
} |
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleGetBinding) { |
- InitDecoder( |
- "GL_ARB_texture_rectangle", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_rectangle"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture( |
GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
@@ -5859,16 +5711,11 @@ TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleGetBinding) { |
} |
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureDefaults) { |
- InitDecoder( |
- "GL_ARB_texture_rectangle", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_rectangle"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture( |
GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
@@ -5881,16 +5728,11 @@ TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureDefaults) { |
} |
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParam) { |
- InitDecoder( |
- "GL_ARB_texture_rectangle", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_rectangle"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture( |
GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
@@ -5941,16 +5783,11 @@ TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParam) { |
} |
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParamInvalid) { |
- InitDecoder( |
- "GL_ARB_texture_rectangle", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_rectangle"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture( |
GL_TEXTURE_RECTANGLE_ARB, client_texture_id_, kServiceTextureId); |
@@ -5983,16 +5820,11 @@ TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTextureParamInvalid) { |
} |
TEST_F(GLES2DecoderManualInitTest, ARBTextureRectangleTexImage2DError) { |
- InitDecoder( |
- "GL_ARB_texture_rectangle", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_rectangle"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
GLenum target = GL_TEXTURE_RECTANGLE_ARB; |
GLint level = 0; |
@@ -6087,17 +5919,10 @@ TEST_F( |
command_line.AppendSwitchASCII( |
switches::kGpuDriverBugWorkarounds, |
base::IntToString(gpu::TEXSUBIMAGE2D_FASTER_THAN_TEXIMAGE2D)); |
- InitDecoderWithCommandLine( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true, // bind generates resource |
- &command_line); |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoderWithCommandLine(init, &command_line); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, |
0, 0); |
@@ -6379,16 +6204,11 @@ TEST_F(GLES2DecoderTest, CopyTexSubImage2DClearsUnclearedTexture) { |
} |
TEST_F(GLES2DecoderManualInitTest, CompressedImage2DMarksTextureAsCleared) { |
- InitDecoder( |
- "GL_EXT_texture_compression_s3tc", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_texture_compression_s3tc"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
EXPECT_CALL(*gl_, GetError()) |
@@ -6519,16 +6339,11 @@ TEST_F(GLES2DecoderWithShaderTest, UnClearedAttachmentsGetClearedOnReadPixels) { |
TEST_F(GLES2DecoderManualInitTest, |
UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { |
- InitDecoder( |
- "GL_EXT_framebuffer_multisample", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_framebuffer_multisample"; |
+ init.gl_version = "2.1"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
const GLuint kFBOClientTextureId = 4100; |
const GLuint kFBOServiceTextureId = 4101; |
@@ -6974,16 +6789,13 @@ TEST_F(GLES2DecoderTest, BeginQueryEXTDisabled) { |
} |
TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXT) { |
- InitDecoder( |
- "GL_EXT_occlusion_query_boolean", // extensions |
- "opengl es 2.0", // gl version |
- true, // has alpha |
- false, // has depth |
- false, // has stencil |
- true, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_occlusion_query_boolean"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_alpha = true; |
+ init.request_alpha = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
// Test end fails if no begin. |
EndQueryEXT end_cmd; |
@@ -7066,16 +6878,13 @@ static void CheckBeginEndQueryBadMemoryFails( |
uint32 shm_offset) { |
// We need to reset the decoder on each iteration, because we lose the |
// context every time. |
- test->InitDecoder( |
- "GL_EXT_occlusion_query_boolean", // extensions |
- "opengl es 2.0", // gl version |
- true, // has alpha |
- false, // has depth |
- false, // has stencil |
- true, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ GLES2DecoderTestBase::InitState init; |
+ init.extensions = "GL_EXT_occlusion_query_boolean"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_alpha = true; |
+ init.request_alpha = true; |
+ init.bind_generates_resource = true; |
+ test->InitDecoder(init); |
::testing::StrictMock< ::gfx::MockGLInterface>* gl = test->GetGLMock(); |
BeginQueryEXT begin_cmd; |
@@ -7341,16 +7150,15 @@ TEST_F(GLES2DecoderTest, IsEnabledReturnsCachedValue) { |
} |
TEST_F(GLES2DecoderManualInitTest, DepthTextureBadArgs) { |
- InitDecoder( |
- "GL_ANGLE_depth_texture", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- true, // has depth |
- true, // has stencil |
- false, // request alpha |
- true, // request depth |
- true, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ANGLE_depth_texture"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_depth = true; |
+ init.has_stencil = true; |
+ init.request_depth = true; |
+ init.request_stencil = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
// Check trying to upload data fails. |
@@ -7394,16 +7202,15 @@ TEST_F(GLES2DecoderManualInitTest, DepthTextureBadArgs) { |
} |
TEST_F(GLES2DecoderManualInitTest, GenerateMipmapDepthTexture) { |
- InitDecoder( |
- "GL_ANGLE_depth_texture", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- true, // has depth |
- true, // has stencil |
- false, // request alpha |
- true, // request depth |
- true, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ANGLE_depth_texture"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_depth = true; |
+ init.has_stencil = true; |
+ init.request_depth = true; |
+ init.request_stencil = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
DoTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, |
2, 2, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, |
@@ -7415,16 +7222,15 @@ TEST_F(GLES2DecoderManualInitTest, GenerateMipmapDepthTexture) { |
} |
TEST_F(GLES2DecoderManualInitTest, DrawClearsDepthTexture) { |
- InitDecoder( |
- "GL_ANGLE_depth_texture", // extensions |
- "opengl es 2.0", // gl version |
- true, // has alpha |
- true, // has depth |
- false, // has stencil |
- true, // request alpha |
- true, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ANGLE_depth_texture"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_alpha = true; |
+ init.has_depth = true; |
+ init.request_alpha = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
SetupDefaultProgram(); |
SetupAllNeededVertexBuffers(); |
@@ -7547,16 +7353,11 @@ class GLES2DecoderVertexArraysOESTest : public GLES2DecoderWithShaderTest { |
bool vertex_array_deleted_manually_; |
virtual void SetUp() { |
- InitDecoder( |
- "GL_OES_vertex_array_object", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_vertex_array_object"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
SetupDefaultProgram(); |
AddExpectationsForGenVertexArraysOES(); |
@@ -7698,16 +7499,10 @@ class GLES2DecoderEmulatedVertexArraysOESTest |
GLES2DecoderEmulatedVertexArraysOESTest() { } |
virtual void SetUp() { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
SetupDefaultProgram(); |
AddExpectationsForGenVertexArraysOES(); |
@@ -8085,16 +7880,15 @@ TEST_F(GLES2DecoderWithShaderTest, UseTexImage) { |
} |
TEST_F(GLES2DecoderManualInitTest, DrawWithGLImageExternal) { |
- InitDecoder( |
- "GL_OES_EGL_image_external", // extensions |
- "opengl es 2.0", // gl version |
- true, // has alpha |
- true, // has depth |
- false, // has stencil |
- true, // request alpha |
- true, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_EGL_image_external"; |
+ init.gl_version = "opengl es 2.0"; |
+ init.has_alpha = true; |
+ init.has_depth = true; |
+ init.request_alpha = true; |
+ init.request_depth = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
TextureRef* texture_ref = GetTexture(client_texture_id_); |
scoped_refptr<MockGLImage> image(new MockGLImage); |
@@ -8160,16 +7954,11 @@ TEST_F(GLES2DecoderManualInitTest, DrawWithGLImageExternal) { |
} |
TEST_F(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) { |
- InitDecoder( |
- "GL_ARB_texture_rectangle", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_rectangle"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
Texture* texture = GetTexture(client_texture_id_)->texture(); |
EXPECT_TRUE(texture != NULL); |
@@ -8201,12 +7990,11 @@ TEST_F(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) { |
} |
TEST_F(GLES2DecoderManualInitTest, AsyncPixelTransfers) { |
- InitDecoder( |
- "GL_CHROMIUM_async_pixel_transfers", // extensions |
- "3.0", // gl version |
- false, false, false, // has alpha/depth/stencil |
- false, false, false, // request alpha/depth/stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_CHROMIUM_async_pixel_transfers"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
// Set up the texture. |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
@@ -8439,12 +8227,11 @@ TEST_F(GLES2DecoderManualInitTest, AsyncPixelTransfers) { |
} |
TEST_F(GLES2DecoderManualInitTest, AsyncPixelTransferManager) { |
- InitDecoder( |
- "GL_CHROMIUM_async_pixel_transfers", // extensions |
- "3.0", // gl version |
- false, false, false, // has alpha/depth/stencil |
- false, false, false, // request alpha/depth/stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_CHROMIUM_async_pixel_transfers"; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
// Set up the texture. |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
@@ -8544,16 +8331,10 @@ TEST_F(GLES2DecoderManualInitTest, MemoryTrackerInitialSize) { |
scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
new SizeOnlyMemoryTracker(); |
set_memory_tracker(memory_tracker.get()); |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
// Expect that initial size - size is 0. |
EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); |
EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); |
@@ -8563,16 +8344,10 @@ TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { |
scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
new SizeOnlyMemoryTracker(); |
set_memory_tracker(memory_tracker.get()); |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) |
.WillOnce(Return(true)).RetiresOnSaturation(); |
@@ -8600,16 +8375,10 @@ TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) { |
scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
new SizeOnlyMemoryTracker(); |
set_memory_tracker(memory_tracker.get()); |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
// Check we get out of memory and no call to glTexStorage2DEXT |
// if Ensure fails. |
@@ -8632,16 +8401,12 @@ TEST_F(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) { |
scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
new SizeOnlyMemoryTracker(); |
set_memory_tracker(memory_tracker.get()); |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- true, // has alpha |
- false, // has depth |
- false, // has stencil |
- true, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_alpha = true; |
+ init.request_alpha = true; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) |
.WillOnce(Return(true)).RetiresOnSaturation(); |
@@ -8670,16 +8435,10 @@ TEST_F(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { |
scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
new SizeOnlyMemoryTracker(); |
set_memory_tracker(memory_tracker.get()); |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
kServiceRenderbufferId); |
EXPECT_CALL(*gl_, GetError()) |
@@ -8710,16 +8469,10 @@ TEST_F(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { |
scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = |
new SizeOnlyMemoryTracker(); |
set_memory_tracker(memory_tracker.get()); |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, |
kServiceBufferId); |
EXPECT_CALL(*gl_, GetError()) |
@@ -8801,15 +8554,9 @@ TEST_F(GLES2DecoderTest, DrawBuffersEXTImmediateBackbuffer) { |
} |
TEST_F(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) { |
- InitDecoder("", // extensions |
- "opengl es 3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.gl_version = "opengl es 3.0"; |
+ InitDecoder(init); |
// EXPECT_EQ can't be used to compare function pointers |
EXPECT_TRUE( |
@@ -8821,15 +8568,10 @@ TEST_F(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) { |
} |
TEST_F(GLES2DecoderManualInitTest, DiscardFramebufferEXT) { |
- InitDecoder("GL_EXT_discard_framebuffer", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_EXT_discard_framebuffer"; |
+ init.gl_version = "opengl es 2.0"; |
+ InitDecoder(init); |
// EXPECT_EQ can't be used to compare function pointers |
EXPECT_TRUE( |
@@ -8883,16 +8625,9 @@ TEST_F(GLES2DecoderTest, DiscardFramebufferEXTUnsupported) { |
} |
TEST_F(GLES2DecoderRestoreStateTest, NullPreviousState) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ InitDecoder(init); |
SetupTexture(); |
InSequence sequence; |
@@ -8918,21 +8653,14 @@ TEST_F(GLES2DecoderRestoreStateTest, NullPreviousState) { |
} |
TEST_F(GLES2DecoderRestoreStateTest, WithPreviousState) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ InitDecoder(init); |
SetupTexture(); |
// Construct a previous ContextState with all texture bindings |
// set to default textures. |
- ContextState prev_state(NULL, NULL); |
+ ContextState prev_state(NULL, NULL, NULL); |
InitializeContextState(&prev_state, std::numeric_limits<uint32>::max(), 0); |
InSequence sequence; |
@@ -8949,16 +8677,9 @@ TEST_F(GLES2DecoderRestoreStateTest, WithPreviousState) { |
} |
TEST_F(GLES2DecoderRestoreStateTest, ActiveUnit1) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ InitDecoder(init); |
// Bind a non-default texture to GL_TEXTURE1 unit. |
EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); |
@@ -8970,7 +8691,7 @@ TEST_F(GLES2DecoderRestoreStateTest, ActiveUnit1) { |
// Construct a previous ContextState with all texture bindings |
// set to default textures. |
- ContextState prev_state(NULL, NULL); |
+ ContextState prev_state(NULL, NULL, NULL); |
InitializeContextState(&prev_state, std::numeric_limits<uint32>::max(), 0); |
InSequence sequence; |
@@ -8987,16 +8708,9 @@ TEST_F(GLES2DecoderRestoreStateTest, ActiveUnit1) { |
} |
TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit0) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ InitDecoder(init); |
// Bind a non-default texture to GL_TEXTURE1 unit. |
EXPECT_CALL(*gl_, ActiveTexture(GL_TEXTURE1)); |
@@ -9010,7 +8724,7 @@ TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit0) { |
// Construct a previous ContextState with GL_TEXTURE_2D target in |
// GL_TEXTURE0 unit bound to a non-default texture and the rest |
// set to default textures. |
- ContextState prev_state(NULL, NULL); |
+ ContextState prev_state(NULL, NULL, NULL); |
InitializeContextState(&prev_state, 0, kServiceTextureId); |
InSequence sequence; |
@@ -9032,16 +8746,9 @@ TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit0) { |
} |
TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit1) { |
- InitDecoder( |
- "", // extensions |
- "3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ InitDecoder(init); |
// Bind a non-default texture to GL_TEXTURE0 unit. |
SetupTexture(); |
@@ -9049,7 +8756,7 @@ TEST_F(GLES2DecoderRestoreStateTest, NonDefaultUnit1) { |
// Construct a previous ContextState with GL_TEXTURE_2D target in |
// GL_TEXTURE1 unit bound to a non-default texture and the rest |
// set to default textures. |
- ContextState prev_state(NULL, NULL); |
+ ContextState prev_state(NULL, NULL, NULL); |
InitializeContextState(&prev_state, 1, kServiceTextureId); |
InSequence sequence; |
@@ -9075,17 +8782,12 @@ TEST_F(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { |
command_line.AppendSwitchASCII( |
switches::kGpuDriverBugWorkarounds, |
base::IntToString(gpu::CLEAR_UNIFORMS_BEFORE_FIRST_PROGRAM_USE)); |
- InitDecoderWithCommandLine( |
- "", // extensions |
- "3.0", // gl version |
- true, // has alpha |
- false, // has depth |
- false, // has stencil |
- true, // request alpha |
- false, // request depth |
- false, // request stencil |
- true, // bind generates resource |
- &command_line); |
+ InitState init; |
+ init.gl_version = "3.0"; |
+ init.has_alpha = true; |
+ init.request_alpha = true; |
+ init.bind_generates_resource = true; |
+ InitDecoderWithCommandLine(init, &command_line); |
{ |
static AttribInfo attribs[] = { |
{ kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, }, |
@@ -9122,15 +8824,10 @@ TEST_F(GLES2DecoderManualInitTest, ClearUniformsBeforeFirstProgramUse) { |
} |
TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES2) { |
- InitDecoder("GL_OES_texture_float", // extensions |
- "opengl es 2.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_texture_float"; |
+ init.gl_version = "opengl es 2.0"; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, 0); |
DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); |
@@ -9143,15 +8840,10 @@ TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES2) { |
} |
TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES3) { |
- InitDecoder("GL_OES_texture_float GL_EXT_color_buffer_float", // extensions |
- "opengl es 3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; |
+ init.gl_version = "opengl es 3.0"; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, 0); |
DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 17, 0, GL_RGB, GL_FLOAT, 0, 0); |
@@ -9166,15 +8858,10 @@ TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatOnGLES3) { |
} |
TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatOnGLES3) { |
- InitDecoder("GL_OES_texture_float GL_EXT_color_buffer_float", // extensions |
- "opengl es 3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; |
+ init.gl_version = "opengl es 3.0"; |
+ InitDecoder(init); |
const int kWidth = 8; |
const int kHeight = 4; |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
@@ -9194,15 +8881,10 @@ TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatOnGLES3) { |
} |
TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatDoesClearOnGLES3) { |
- InitDecoder("GL_OES_texture_float GL_EXT_color_buffer_float", // extensions |
- "opengl es 3.0", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_texture_float GL_EXT_color_buffer_float"; |
+ init.gl_version = "opengl es 3.0"; |
+ InitDecoder(init); |
const int kWidth = 8; |
const int kHeight = 4; |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
@@ -9225,15 +8907,10 @@ TEST_F(GLES2DecoderManualInitTest, TexSubImage2DFloatDoesClearOnGLES3) { |
} |
TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatConvertsFormatDesktop) { |
- InitDecoder("GL_ARB_texture_float", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- false); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_ARB_texture_float"; |
+ init.gl_version = "2.1"; |
+ InitDecoder(init); |
DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
DoTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, 16, 17, 0, GL_RGBA, GL_FLOAT, 0, |
0); |
@@ -9253,16 +8930,11 @@ TEST_F(GLES2DecoderManualInitTest, TexImage2DFloatConvertsFormatDesktop) { |
} |
TEST_F(GLES2DecoderManualInitTest, ReadFormatExtension) { |
- InitDecoder( |
- "GL_OES_read_format", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.extensions = "GL_OES_read_format"; |
+ init.gl_version = "2.1"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |
@@ -9320,16 +8992,10 @@ TEST_F(GLES2DecoderManualInitTest, ReadFormatExtension) { |
} |
TEST_F(GLES2DecoderManualInitTest, NoReadFormatExtension) { |
- InitDecoder( |
- "", // extensions |
- "2.1", // gl version |
- false, // has alpha |
- false, // has depth |
- false, // has stencil |
- false, // request alpha |
- false, // request depth |
- false, // request stencil |
- true); // bind generates resource |
+ InitState init; |
+ init.gl_version = "2.1"; |
+ init.bind_generates_resource = true; |
+ InitDecoder(init); |
EXPECT_CALL(*gl_, GetError()) |
.WillOnce(Return(GL_NO_ERROR)) |