Index: gpu/command_buffer/client/gles2_implementation_unittest.cc |
=================================================================== |
--- gpu/command_buffer/client/gles2_implementation_unittest.cc (revision 267947) |
+++ gpu/command_buffer/client/gles2_implementation_unittest.cc (working copy) |
@@ -392,11 +392,22 @@ |
public: |
TestContext() : commands_(NULL), token_(0) {} |
+#if defined(OS_CHROMEOS) |
+ bool Initialize(ShareGroup* share_group, |
+ bool bind_generates_resource, |
+ bool lose_context_when_out_of_memory) { |
+#else |
void Initialize(ShareGroup* share_group, |
bool bind_generates_resource, |
bool lose_context_when_out_of_memory) { |
+#endif |
command_buffer_.reset(new StrictMock<MockClientCommandBuffer>()); |
+#if defined(OS_CHROMEOS) |
+ if (!command_buffer_->Initialize()) |
+ return false; |
+#else |
ASSERT_TRUE(command_buffer_->Initialize()); |
+#endif |
transfer_buffer_.reset( |
new MockTransferBuffer(command_buffer_.get(), |
@@ -426,6 +437,10 @@ |
int_state.max_vertex_uniform_vectors = kMaxVertexUniformVectors; |
int_state.num_compressed_texture_formats = kNumCompressedTextureFormats; |
int_state.num_shader_binary_formats = kNumShaderBinaryFormats; |
+#if defined(OS_CHROMEOS) |
+ int_state.bind_generates_resource_chromium = |
+ bind_generates_resource ? 1 : 0; |
+#endif |
// This just happens to work for now because IntState has 1 GLint per |
// state. |
@@ -449,10 +464,18 @@ |
bind_generates_resource, |
lose_context_when_out_of_memory, |
gpu_control_.get())); |
+#if defined(OS_CHROMEOS) |
+ if (!gl_->Initialize(kTransferBufferSize, |
+ kTransferBufferSize, |
+ kTransferBufferSize, |
+ GLES2Implementation::kNoLimit)) |
+ return false; |
+#else |
ASSERT_TRUE(gl_->Initialize(kTransferBufferSize, |
kTransferBufferSize, |
kTransferBufferSize, |
GLES2Implementation::kNoLimit)); |
+#endif |
} |
EXPECT_CALL(*command_buffer_, OnFlush()).Times(1).RetiresOnSaturation(); |
@@ -466,6 +489,9 @@ |
EXPECT_TRUE(transfer_buffer_->InSync()); |
::testing::Mock::VerifyAndClearExpectations(command_buffer()); |
+#if defined(OS_CHROMEOS) |
+ return true; |
+#endif |
} |
void TearDown() { |
@@ -518,6 +544,7 @@ |
return gl_->query_tracker_->GetQuery(id); |
} |
+#if !defined(OS_CHROMEOS) |
void Initialize(bool bind_generates_resource, |
bool lose_context_when_out_of_memory) { |
share_group_ = new ShareGroup(bind_generates_resource); |
@@ -526,13 +553,40 @@ |
test_contexts_[i].Initialize(share_group_.get(), |
bind_generates_resource, |
lose_context_when_out_of_memory); |
+#else |
+ struct ContextInitOptions { |
+ ContextInitOptions() |
+ : bind_generates_resource_client(true), |
+ bind_generates_resource_service(true), |
+ lose_context_when_out_of_memory(false) {} |
+ bool bind_generates_resource_client; |
+ bool bind_generates_resource_service; |
+ bool lose_context_when_out_of_memory; |
+ }; |
+ |
+ bool Initialize(const ContextInitOptions& init_options) { |
+ bool success = true; |
+ share_group_ = new ShareGroup(init_options.bind_generates_resource_service); |
+ |
+ for (int i = 0; i < kNumTestContexts; i++) { |
+ if (!test_contexts_[i].Initialize( |
+ share_group_.get(), |
+ init_options.bind_generates_resource_client, |
+ init_options.lose_context_when_out_of_memory)) |
+ success = false; |
+ } |
+#endif |
+ |
// Default to test context 0. |
gpu_control_ = test_contexts_[0].gpu_control_.get(); |
helper_ = test_contexts_[0].helper_.get(); |
transfer_buffer_ = test_contexts_[0].transfer_buffer_.get(); |
gl_ = test_contexts_[0].gl_.get(); |
commands_ = test_contexts_[0].commands_; |
+#if defined(OS_CHROMEOS) |
+ return success; |
+#endif |
} |
MockClientCommandBuffer* command_buffer() const { |
@@ -592,9 +646,14 @@ |
}; |
void GLES2ImplementationTest::SetUp() { |
+#if defined(OS_CHROMEOS) |
+ ContextInitOptions init_options; |
+ ASSERT_TRUE(Initialize(init_options)); |
+#else |
bool bind_generates_resource = true; |
bool lose_context_when_out_of_memory = false; |
Initialize(bind_generates_resource, lose_context_when_out_of_memory); |
+#endif |
} |
void GLES2ImplementationTest::TearDown() { |
@@ -697,9 +756,16 @@ |
}; |
void GLES2ImplementationStrictSharedTest::SetUp() { |
+#if defined(OS_CHROMEOS) |
+ ContextInitOptions init_options; |
+ init_options.bind_generates_resource_client = false; |
+ init_options.bind_generates_resource_service = false; |
+ ASSERT_TRUE(Initialize(init_options)); |
+#else |
bool bind_generates_resource = false; |
bool lose_context_when_out_of_memory = false; |
Initialize(bind_generates_resource, lose_context_when_out_of_memory); |
+#endif |
} |
// GCC requires these declarations, but MSVC requires they not be present |
@@ -3117,9 +3183,15 @@ |
} |
TEST_F(GLES2ImplementationManualInitTest, LoseContextOnOOM) { |
+#if defined(OS_CHROMEOS) |
+ ContextInitOptions init_options; |
+ init_options.lose_context_when_out_of_memory = true; |
+ ASSERT_TRUE(Initialize(init_options)); |
+#else |
bool bind_generates_resource = false; |
bool lose_context_when_out_of_memory = true; |
Initialize(bind_generates_resource, lose_context_when_out_of_memory); |
+#endif |
struct Cmds { |
cmds::LoseContextCHROMIUM cmd; |
@@ -3136,10 +3208,14 @@ |
} |
TEST_F(GLES2ImplementationManualInitTest, NoLoseContextOnOOM) { |
+#if defined(OS_CHROMEOS) |
+ ContextInitOptions init_options; |
+ ASSERT_TRUE(Initialize(init_options)); |
+#else |
bool bind_generates_resource = false; |
bool lose_context_when_out_of_memory = false; |
Initialize(bind_generates_resource, lose_context_when_out_of_memory); |
- |
+#endif |
struct Cmds { |
cmds::LoseContextCHROMIUM cmd; |
}; |
@@ -3152,6 +3228,22 @@ |
EXPECT_TRUE(NoCommandsWritten()); |
} |
+#if defined(OS_CHROMEOS) |
+TEST_F(GLES2ImplementationManualInitTest, FailInitOnBGRMismatch1) { |
+ ContextInitOptions init_options; |
+ init_options.bind_generates_resource_client = false; |
+ init_options.bind_generates_resource_service = true; |
+ EXPECT_FALSE(Initialize(init_options)); |
+} |
+ |
+TEST_F(GLES2ImplementationManualInitTest, FailInitOnBGRMismatch2) { |
+ ContextInitOptions init_options; |
+ init_options.bind_generates_resource_client = true; |
+ init_options.bind_generates_resource_service = false; |
+ EXPECT_FALSE(Initialize(init_options)); |
+} |
+#endif |
+ |
#include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" |
} // namespace gles2 |