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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder_unittest_attribs.cc

Issue 245923008: Optimize GLES2DecoderImpl::ApplyDirtyState. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on refactored gles2_cmd_decoder_unittest.cc Created 6 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" 9 #include "gpu/command_buffer/common/gles2_cmd_format.h"
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 using ::testing::SetArgumentPointee; 47 using ::testing::SetArgumentPointee;
48 using ::testing::SetArgPointee; 48 using ::testing::SetArgPointee;
49 using ::testing::StrEq; 49 using ::testing::StrEq;
50 using ::testing::StrictMock; 50 using ::testing::StrictMock;
51 51
52 namespace gpu { 52 namespace gpu {
53 namespace gles2 { 53 namespace gles2 {
54 54
55 using namespace cmds; 55 using namespace cmds;
56 56
57 TEST_F(GLES2DecoderWithShaderTest, GetVertexAttribPointervSucceeds) { 57 TEST_P(GLES2DecoderWithShaderTest, GetVertexAttribPointervSucceeds) {
58 const float dummy = 0; 58 const float dummy = 0;
59 const GLuint kOffsetToTestFor = sizeof(dummy) * 4; 59 const GLuint kOffsetToTestFor = sizeof(dummy) * 4;
60 const GLuint kIndexToTest = 1; 60 const GLuint kIndexToTest = 1;
61 GetVertexAttribPointerv::Result* result = 61 GetVertexAttribPointerv::Result* result =
62 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_); 62 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_);
63 result->size = 0; 63 result->size = 0;
64 const GLuint* result_value = result->GetData(); 64 const GLuint* result_value = result->GetData();
65 // Test that initial value is 0. 65 // Test that initial value is 0.
66 GetVertexAttribPointerv cmd; 66 GetVertexAttribPointerv cmd;
67 cmd.Init(kIndexToTest, 67 cmd.Init(kIndexToTest,
68 GL_VERTEX_ATTRIB_ARRAY_POINTER, 68 GL_VERTEX_ATTRIB_ARRAY_POINTER,
69 shared_memory_id_, 69 shared_memory_id_,
70 shared_memory_offset_); 70 shared_memory_offset_);
71 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 71 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
72 EXPECT_EQ(sizeof(*result_value), result->size); 72 EXPECT_EQ(sizeof(*result_value), result->size);
73 EXPECT_EQ(0u, *result_value); 73 EXPECT_EQ(0u, *result_value);
74 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 74 EXPECT_EQ(GL_NO_ERROR, GetGLError());
75 75
76 // Set the value and see that we get it. 76 // Set the value and see that we get it.
77 SetupVertexBuffer(); 77 SetupVertexBuffer();
78 DoVertexAttribPointer(kIndexToTest, 2, GL_FLOAT, 0, kOffsetToTestFor); 78 DoVertexAttribPointer(kIndexToTest, 2, GL_FLOAT, 0, kOffsetToTestFor);
79 result->size = 0; 79 result->size = 0;
80 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 80 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
81 EXPECT_EQ(sizeof(*result_value), result->size); 81 EXPECT_EQ(sizeof(*result_value), result->size);
82 EXPECT_EQ(kOffsetToTestFor, *result_value); 82 EXPECT_EQ(kOffsetToTestFor, *result_value);
83 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 83 EXPECT_EQ(GL_NO_ERROR, GetGLError());
84 } 84 }
85 85
86 TEST_F(GLES2DecoderWithShaderTest, GetVertexAttribPointervBadArgsFails) { 86 TEST_P(GLES2DecoderWithShaderTest, GetVertexAttribPointervBadArgsFails) {
87 const GLuint kIndexToTest = 1; 87 const GLuint kIndexToTest = 1;
88 GetVertexAttribPointerv::Result* result = 88 GetVertexAttribPointerv::Result* result =
89 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_); 89 static_cast<GetVertexAttribPointerv::Result*>(shared_memory_address_);
90 result->size = 0; 90 result->size = 0;
91 const GLuint* result_value = result->GetData(); 91 const GLuint* result_value = result->GetData();
92 // Test pname invalid fails. 92 // Test pname invalid fails.
93 GetVertexAttribPointerv cmd; 93 GetVertexAttribPointerv cmd;
94 cmd.Init(kIndexToTest, 94 cmd.Init(kIndexToTest,
95 GL_VERTEX_ATTRIB_ARRAY_POINTER + 1, 95 GL_VERTEX_ATTRIB_ARRAY_POINTER + 1,
96 shared_memory_id_, 96 shared_memory_id_,
(...skipping 22 matching lines...) Expand all
119 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 119 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
120 120
121 // Test memory offset bad fails. 121 // Test memory offset bad fails.
122 cmd.Init(kIndexToTest, 122 cmd.Init(kIndexToTest,
123 GL_VERTEX_ATTRIB_ARRAY_POINTER, 123 GL_VERTEX_ATTRIB_ARRAY_POINTER,
124 shared_memory_id_, 124 shared_memory_id_,
125 kInvalidSharedMemoryOffset); 125 kInvalidSharedMemoryOffset);
126 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 126 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
127 } 127 }
128 128
129 TEST_F(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) { 129 TEST_P(GLES2DecoderWithShaderTest, BindBufferToDifferentTargetFails) {
130 // Bind the buffer to GL_ARRAY_BUFFER 130 // Bind the buffer to GL_ARRAY_BUFFER
131 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); 131 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
132 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER 132 // Attempt to rebind to GL_ELEMENT_ARRAY_BUFFER
133 // NOTE: Real GLES2 does not have this restriction but WebGL and we do. 133 // NOTE: Real GLES2 does not have this restriction but WebGL and we do.
134 // This can be restriction can be removed at runtime. 134 // This can be restriction can be removed at runtime.
135 EXPECT_CALL(*gl_, BindBuffer(_, _)).Times(0); 135 EXPECT_CALL(*gl_, BindBuffer(_, _)).Times(0);
136 BindBuffer cmd; 136 BindBuffer cmd;
137 cmd.Init(GL_ELEMENT_ARRAY_BUFFER, client_buffer_id_); 137 cmd.Init(GL_ELEMENT_ARRAY_BUFFER, client_buffer_id_);
138 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 138 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
139 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 139 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
140 } 140 }
141 141
142 TEST_F(GLES2DecoderWithShaderTest, VertexAttribPointer) { 142 TEST_P(GLES2DecoderWithShaderTest, VertexAttribPointer) {
143 SetupVertexBuffer(); 143 SetupVertexBuffer();
144 static const GLenum types[] = { 144 static const GLenum types[] = {
145 GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, 145 GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT,
146 GL_FLOAT, GL_FIXED, GL_INT, GL_UNSIGNED_INT, 146 GL_FLOAT, GL_FIXED, GL_INT, GL_UNSIGNED_INT,
147 }; 147 };
148 static const GLsizei sizes[] = { 148 static const GLsizei sizes[] = {
149 1, 1, 2, 2, 4, 4, 4, 4, 149 1, 1, 2, 2, 4, 4, 4, 4,
150 }; 150 };
151 static const GLuint indices[] = { 151 static const GLuint indices[] = {
152 0, 1, kNumVertexAttribs - 1, kNumVertexAttribs, 152 0, 1, kNumVertexAttribs - 1, kNumVertexAttribs,
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 } 378 }
379 379
380 void BindVertexArrayOESValidArgsNewId() { 380 void BindVertexArrayOESValidArgsNewId() {
381 BindVertexArrayOES cmd; 381 BindVertexArrayOES cmd;
382 cmd.Init(kNewClientId); 382 cmd.Init(kNewClientId);
383 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 383 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
384 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 384 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
385 } 385 }
386 }; 386 };
387 387
388 INSTANTIATE_TEST_CASE_P(Service,
389 GLES2DecoderVertexArraysOESTest,
390 ::testing::Bool());
391
388 class GLES2DecoderEmulatedVertexArraysOESTest 392 class GLES2DecoderEmulatedVertexArraysOESTest
389 : public GLES2DecoderVertexArraysOESTest { 393 : public GLES2DecoderVertexArraysOESTest {
390 public: 394 public:
391 GLES2DecoderEmulatedVertexArraysOESTest() {} 395 GLES2DecoderEmulatedVertexArraysOESTest() {}
392 396
393 virtual void SetUp() { 397 virtual void SetUp() {
394 InitState init; 398 InitState init;
395 init.gl_version = "3.0"; 399 init.gl_version = "3.0";
396 init.bind_generates_resource = true; 400 init.bind_generates_resource = true;
397 InitDecoder(init); 401 InitDecoder(init);
398 SetupDefaultProgram(); 402 SetupDefaultProgram();
399 403
400 AddExpectationsForGenVertexArraysOES(); 404 AddExpectationsForGenVertexArraysOES();
401 GenHelper<GenVertexArraysOESImmediate>(client_vertexarray_id_); 405 GenHelper<GenVertexArraysOESImmediate>(client_vertexarray_id_);
402 406
403 vertex_array_deleted_manually_ = false; 407 vertex_array_deleted_manually_ = false;
404 } 408 }
405 }; 409 };
406 410
411 INSTANTIATE_TEST_CASE_P(Service,
412 GLES2DecoderEmulatedVertexArraysOESTest,
413 ::testing::Bool());
414
407 // Test vertex array objects with native support 415 // Test vertex array objects with native support
408 TEST_F(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESValidArgs) { 416 TEST_P(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESValidArgs) {
409 GenVertexArraysOESValidArgs(); 417 GenVertexArraysOESValidArgs();
410 } 418 }
411 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, GenVertexArraysOESValidArgs) { 419 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, GenVertexArraysOESValidArgs) {
412 GenVertexArraysOESValidArgs(); 420 GenVertexArraysOESValidArgs();
413 } 421 }
414 422
415 TEST_F(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESInvalidArgs) { 423 TEST_P(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESInvalidArgs) {
416 GenVertexArraysOESInvalidArgs(); 424 GenVertexArraysOESInvalidArgs();
417 } 425 }
418 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, ) { 426 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, ) {
419 GenVertexArraysOESInvalidArgs(); 427 GenVertexArraysOESInvalidArgs();
420 } 428 }
421 429
422 TEST_F(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESImmediateValidArgs) { 430 TEST_P(GLES2DecoderVertexArraysOESTest, GenVertexArraysOESImmediateValidArgs) {
423 GenVertexArraysOESImmediateValidArgs(); 431 GenVertexArraysOESImmediateValidArgs();
424 } 432 }
425 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 433 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
426 GenVertexArraysOESImmediateValidArgs) { 434 GenVertexArraysOESImmediateValidArgs) {
427 GenVertexArraysOESImmediateValidArgs(); 435 GenVertexArraysOESImmediateValidArgs();
428 } 436 }
429 437
430 TEST_F(GLES2DecoderVertexArraysOESTest, 438 TEST_P(GLES2DecoderVertexArraysOESTest,
431 GenVertexArraysOESImmediateInvalidArgs) { 439 GenVertexArraysOESImmediateInvalidArgs) {
432 GenVertexArraysOESImmediateInvalidArgs(); 440 GenVertexArraysOESImmediateInvalidArgs();
433 } 441 }
434 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 442 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
435 GenVertexArraysOESImmediateInvalidArgs) { 443 GenVertexArraysOESImmediateInvalidArgs) {
436 GenVertexArraysOESImmediateInvalidArgs(); 444 GenVertexArraysOESImmediateInvalidArgs();
437 } 445 }
438 446
439 TEST_F(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESValidArgs) { 447 TEST_P(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESValidArgs) {
440 DeleteVertexArraysOESValidArgs(); 448 DeleteVertexArraysOESValidArgs();
441 } 449 }
442 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 450 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
443 DeleteVertexArraysOESValidArgs) { 451 DeleteVertexArraysOESValidArgs) {
444 DeleteVertexArraysOESValidArgs(); 452 DeleteVertexArraysOESValidArgs();
445 } 453 }
446 454
447 TEST_F(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESInvalidArgs) { 455 TEST_P(GLES2DecoderVertexArraysOESTest, DeleteVertexArraysOESInvalidArgs) {
448 DeleteVertexArraysOESInvalidArgs(); 456 DeleteVertexArraysOESInvalidArgs();
449 } 457 }
450 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 458 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
451 DeleteVertexArraysOESInvalidArgs) { 459 DeleteVertexArraysOESInvalidArgs) {
452 DeleteVertexArraysOESInvalidArgs(); 460 DeleteVertexArraysOESInvalidArgs();
453 } 461 }
454 462
455 TEST_F(GLES2DecoderVertexArraysOESTest, 463 TEST_P(GLES2DecoderVertexArraysOESTest,
456 DeleteVertexArraysOESImmediateValidArgs) { 464 DeleteVertexArraysOESImmediateValidArgs) {
457 DeleteVertexArraysOESImmediateValidArgs(); 465 DeleteVertexArraysOESImmediateValidArgs();
458 } 466 }
459 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 467 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
460 DeleteVertexArraysOESImmediateValidArgs) { 468 DeleteVertexArraysOESImmediateValidArgs) {
461 DeleteVertexArraysOESImmediateValidArgs(); 469 DeleteVertexArraysOESImmediateValidArgs();
462 } 470 }
463 471
464 TEST_F(GLES2DecoderVertexArraysOESTest, 472 TEST_P(GLES2DecoderVertexArraysOESTest,
465 DeleteVertexArraysOESImmediateInvalidArgs) { 473 DeleteVertexArraysOESImmediateInvalidArgs) {
466 DeleteVertexArraysOESImmediateInvalidArgs(); 474 DeleteVertexArraysOESImmediateInvalidArgs();
467 } 475 }
468 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 476 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
469 DeleteVertexArraysOESImmediateInvalidArgs) { 477 DeleteVertexArraysOESImmediateInvalidArgs) {
470 DeleteVertexArraysOESImmediateInvalidArgs(); 478 DeleteVertexArraysOESImmediateInvalidArgs();
471 } 479 }
472 480
473 TEST_F(GLES2DecoderVertexArraysOESTest, 481 TEST_P(GLES2DecoderVertexArraysOESTest,
474 DeleteBoundVertexArraysOESImmediateValidArgs) { 482 DeleteBoundVertexArraysOESImmediateValidArgs) {
475 DeleteBoundVertexArraysOESImmediateValidArgs(); 483 DeleteBoundVertexArraysOESImmediateValidArgs();
476 } 484 }
477 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 485 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
478 DeleteBoundVertexArraysOESImmediateValidArgs) { 486 DeleteBoundVertexArraysOESImmediateValidArgs) {
479 DeleteBoundVertexArraysOESImmediateValidArgs(); 487 DeleteBoundVertexArraysOESImmediateValidArgs();
480 } 488 }
481 489
482 TEST_F(GLES2DecoderVertexArraysOESTest, IsVertexArrayOESValidArgs) { 490 TEST_P(GLES2DecoderVertexArraysOESTest, IsVertexArrayOESValidArgs) {
483 IsVertexArrayOESValidArgs(); 491 IsVertexArrayOESValidArgs();
484 } 492 }
485 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, IsVertexArrayOESValidArgs) { 493 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, IsVertexArrayOESValidArgs) {
486 IsVertexArrayOESValidArgs(); 494 IsVertexArrayOESValidArgs();
487 } 495 }
488 496
489 TEST_F(GLES2DecoderVertexArraysOESTest, 497 TEST_P(GLES2DecoderVertexArraysOESTest,
490 IsVertexArrayOESInvalidArgsBadSharedMemoryId) { 498 IsVertexArrayOESInvalidArgsBadSharedMemoryId) {
491 IsVertexArrayOESInvalidArgsBadSharedMemoryId(); 499 IsVertexArrayOESInvalidArgsBadSharedMemoryId();
492 } 500 }
493 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 501 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
494 IsVertexArrayOESInvalidArgsBadSharedMemoryId) { 502 IsVertexArrayOESInvalidArgsBadSharedMemoryId) {
495 IsVertexArrayOESInvalidArgsBadSharedMemoryId(); 503 IsVertexArrayOESInvalidArgsBadSharedMemoryId();
496 } 504 }
497 505
498 TEST_F(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgs) { 506 TEST_P(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgs) {
499 BindVertexArrayOESValidArgs(); 507 BindVertexArrayOESValidArgs();
500 } 508 }
501 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, BindVertexArrayOESValidArgs) { 509 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest, BindVertexArrayOESValidArgs) {
502 BindVertexArrayOESValidArgs(); 510 BindVertexArrayOESValidArgs();
503 } 511 }
504 512
505 TEST_F(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgsNewId) { 513 TEST_P(GLES2DecoderVertexArraysOESTest, BindVertexArrayOESValidArgsNewId) {
506 BindVertexArrayOESValidArgsNewId(); 514 BindVertexArrayOESValidArgsNewId();
507 } 515 }
508 TEST_F(GLES2DecoderEmulatedVertexArraysOESTest, 516 TEST_P(GLES2DecoderEmulatedVertexArraysOESTest,
509 BindVertexArrayOESValidArgsNewId) { 517 BindVertexArrayOESValidArgsNewId) {
510 BindVertexArrayOESValidArgsNewId(); 518 BindVertexArrayOESValidArgsNewId();
511 } 519 }
512 520
513 TEST_F(GLES2DecoderTest, BufferDataGLError) { 521 TEST_P(GLES2DecoderTest, BufferDataGLError) {
514 GLenum target = GL_ARRAY_BUFFER; 522 GLenum target = GL_ARRAY_BUFFER;
515 GLsizeiptr size = 4; 523 GLsizeiptr size = 4;
516 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); 524 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
517 BufferManager* manager = group().buffer_manager(); 525 BufferManager* manager = group().buffer_manager();
518 Buffer* buffer = manager->GetBuffer(client_buffer_id_); 526 Buffer* buffer = manager->GetBuffer(client_buffer_id_);
519 ASSERT_TRUE(buffer != NULL); 527 ASSERT_TRUE(buffer != NULL);
520 EXPECT_EQ(0, buffer->size()); 528 EXPECT_EQ(0, buffer->size());
521 EXPECT_CALL(*gl_, GetError()) 529 EXPECT_CALL(*gl_, GetError())
522 .WillOnce(Return(GL_NO_ERROR)) 530 .WillOnce(Return(GL_NO_ERROR))
523 .WillOnce(Return(GL_OUT_OF_MEMORY)) 531 .WillOnce(Return(GL_OUT_OF_MEMORY))
(...skipping 11 matching lines...) Expand all
535 // TODO(gman): BufferData 543 // TODO(gman): BufferData
536 544
537 // TODO(gman): BufferDataImmediate 545 // TODO(gman): BufferDataImmediate
538 546
539 // TODO(gman): BufferSubData 547 // TODO(gman): BufferSubData
540 548
541 // TODO(gman): BufferSubDataImmediate 549 // TODO(gman): BufferSubDataImmediate
542 550
543 } // namespace gles2 551 } // namespace gles2
544 } // namespace gpu 552 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698