Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Unified Diff: gpu/command_buffer/client/gles2_implementation_unittest.cc

Issue 863253002: Update from https://crrev.com/312600 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/client/gles2_implementation_unittest.cc
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest.cc b/gpu/command_buffer/client/gles2_implementation_unittest.cc
index 29e86df716865e07a4381942f6a908db3ea57e11..c69886ae50f810ca274d312a4793af899a4e121e 100644
--- a/gpu/command_buffer/client/gles2_implementation_unittest.cc
+++ b/gpu/command_buffer/client/gles2_implementation_unittest.cc
@@ -901,51 +901,92 @@ TEST_F(GLES2ImplementationTest, ShaderSource) {
const GLuint kShaderId = 456;
const char* kString1 = "foobar";
const char* kString2 = "barfoo";
- const size_t kString1Size = strlen(kString1);
- const size_t kString2Size = strlen(kString2);
- const size_t kString3Size = 1; // Want the NULL;
- const size_t kSourceSize = kString1Size + kString2Size + kString3Size;
+ const size_t kString1Size = strlen(kString1) + 1;
+ const size_t kString2Size = strlen(kString2) + 1;
+ const size_t kHeaderSize = sizeof(GLint) * 3;
+ const size_t kSourceSize = kHeaderSize + kString1Size + kString2Size;
+ const size_t kPaddedHeaderSize =
+ transfer_buffer_->RoundToAlignment(kHeaderSize);
const size_t kPaddedString1Size =
transfer_buffer_->RoundToAlignment(kString1Size);
const size_t kPaddedString2Size =
transfer_buffer_->RoundToAlignment(kString2Size);
- const size_t kPaddedString3Size =
- transfer_buffer_->RoundToAlignment(kString3Size);
struct Cmds {
cmd::SetBucketSize set_bucket_size;
- cmd::SetBucketData set_bucket_data1;
+ cmd::SetBucketData set_bucket_header;
cmd::SetToken set_token1;
- cmd::SetBucketData set_bucket_data2;
+ cmd::SetBucketData set_bucket_data1;
cmd::SetToken set_token2;
- cmd::SetBucketData set_bucket_data3;
+ cmd::SetBucketData set_bucket_data2;
cmd::SetToken set_token3;
cmds::ShaderSourceBucket shader_source_bucket;
cmd::SetBucketSize clear_bucket_size;
};
+ ExpectedMemoryInfo mem0 = GetExpectedMemory(kPaddedHeaderSize);
ExpectedMemoryInfo mem1 = GetExpectedMemory(kPaddedString1Size);
ExpectedMemoryInfo mem2 = GetExpectedMemory(kPaddedString2Size);
- ExpectedMemoryInfo mem3 = GetExpectedMemory(kPaddedString3Size);
Cmds expected;
expected.set_bucket_size.Init(kBucketId, kSourceSize);
- expected.set_bucket_data1.Init(
- kBucketId, 0, kString1Size, mem1.id, mem1.offset);
+ expected.set_bucket_header.Init(
+ kBucketId, 0, kHeaderSize, mem0.id, mem0.offset);
expected.set_token1.Init(GetNextToken());
- expected.set_bucket_data2.Init(
- kBucketId, kString1Size, kString2Size, mem2.id, mem2.offset);
+ expected.set_bucket_data1.Init(
+ kBucketId, kHeaderSize, kString1Size, mem1.id, mem1.offset);
expected.set_token2.Init(GetNextToken());
- expected.set_bucket_data3.Init(
- kBucketId, kString1Size + kString2Size,
- kString3Size, mem3.id, mem3.offset);
+ expected.set_bucket_data2.Init(
+ kBucketId, kHeaderSize + kString1Size, kString2Size, mem2.id,
+ mem2.offset);
expected.set_token3.Init(GetNextToken());
expected.shader_source_bucket.Init(kShaderId, kBucketId);
expected.clear_bucket_size.Init(kBucketId, 0);
- const char* strings[] = {
+ const char* kStrings[] = {
kString1,
kString2,
};
- gl_->ShaderSource(kShaderId, 2, strings, NULL);
+ gl_->ShaderSource(kShaderId, 2, kStrings, NULL);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+}
+
+TEST_F(GLES2ImplementationTest, ShaderSourceWithLength) {
+ const uint32 kBucketId = GLES2Implementation::kResultBucketId;
+ const GLuint kShaderId = 456;
+ const char* kString = "foobar******";
+ const size_t kStringSize = 6; // We only need "foobar".
+ const size_t kHeaderSize = sizeof(GLint) * 2;
+ const size_t kSourceSize = kHeaderSize + kStringSize + 1;
+ const size_t kPaddedHeaderSize =
+ transfer_buffer_->RoundToAlignment(kHeaderSize);
+ const size_t kPaddedStringSize =
+ transfer_buffer_->RoundToAlignment(kStringSize + 1);
+
+ struct Cmds {
+ cmd::SetBucketSize set_bucket_size;
+ cmd::SetBucketData set_bucket_header;
+ cmd::SetToken set_token1;
+ cmd::SetBucketData set_bucket_data;
+ cmd::SetToken set_token2;
+ cmds::ShaderSourceBucket shader_source_bucket;
+ cmd::SetBucketSize clear_bucket_size;
+ };
+
+ ExpectedMemoryInfo mem0 = GetExpectedMemory(kPaddedHeaderSize);
+ ExpectedMemoryInfo mem1 = GetExpectedMemory(kPaddedStringSize);
+
+ Cmds expected;
+ expected.set_bucket_size.Init(kBucketId, kSourceSize);
+ expected.set_bucket_header.Init(
+ kBucketId, 0, kHeaderSize, mem0.id, mem0.offset);
+ expected.set_token1.Init(GetNextToken());
+ expected.set_bucket_data.Init(
+ kBucketId, kHeaderSize, kStringSize + 1, mem1.id, mem1.offset);
+ expected.set_token2.Init(GetNextToken());
+ expected.shader_source_bucket.Init(kShaderId, kBucketId);
+ expected.clear_bucket_size.Init(kBucketId, 0);
+ const char* kStrings[] = { kString };
+ const GLint kLength[] = { kStringSize };
+ gl_->ShaderSource(kShaderId, 1, kStrings, kLength);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
}
@@ -3514,6 +3555,29 @@ TEST_F(GLES2ImplementationTest, AllowNestedTracesCHROMIUM) {
EXPECT_EQ(GL_INVALID_OPERATION, CheckError());
}
+TEST_F(GLES2ImplementationTest, IsEnabled) {
+ // If we use a valid enum, its state is cached on client side, so no command
+ // is actually generated, and this test will fail.
+ // TODO(zmo): it seems we never need the command. Maybe remove it.
+ GLenum kCap = 1;
+ struct Cmds {
+ cmds::IsEnabled cmd;
+ };
+
+ Cmds expected;
+ ExpectedMemoryInfo result1 =
+ GetExpectedResultMemory(sizeof(cmds::IsEnabled::Result));
+ expected.cmd.Init(kCap, result1.id, result1.offset);
+
+ EXPECT_CALL(*command_buffer(), OnFlush())
+ .WillOnce(SetMemory(result1.ptr, uint32_t(kCap)))
+ .RetiresOnSaturation();
+
+ GLboolean result = gl_->IsEnabled(kCap);
+ EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
+ EXPECT_TRUE(result);
+}
+
TEST_F(GLES2ImplementationManualInitTest, LoseContextOnOOM) {
ContextInitOptions init_options;
init_options.lose_context_when_out_of_memory = true;

Powered by Google App Engine
This is Rietveld 408576698