OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/atomicops.h" | 7 #include "base/atomicops.h" |
8 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
10 #include "gpu/command_buffer/common/id_allocator.h" | 10 #include "gpu/command_buffer/common/id_allocator.h" |
(...skipping 2298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2309 *gl_, ReadPixels(read_x, yy, read_width, 1, | 2309 *gl_, ReadPixels(read_x, yy, read_width, 1, |
2310 kFormat, GL_UNSIGNED_BYTE, _)) | 2310 kFormat, GL_UNSIGNED_BYTE, _)) |
2311 .WillOnce(Invoke(&emu, &ReadPixelsEmulator::ReadPixels)) | 2311 .WillOnce(Invoke(&emu, &ReadPixelsEmulator::ReadPixels)) |
2312 .RetiresOnSaturation(); | 2312 .RetiresOnSaturation(); |
2313 } | 2313 } |
2314 } | 2314 } |
2315 ReadPixels cmd; | 2315 ReadPixels cmd; |
2316 cmd.Init(in_read_x, in_read_y, in_read_width, in_read_height, | 2316 cmd.Init(in_read_x, in_read_y, in_read_width, in_read_height, |
2317 kFormat, GL_UNSIGNED_BYTE, | 2317 kFormat, GL_UNSIGNED_BYTE, |
2318 pixels_shm_id, pixels_shm_offset, | 2318 pixels_shm_id, pixels_shm_offset, |
2319 result_shm_id, result_shm_offset); | 2319 result_shm_id, result_shm_offset, |
| 2320 false); |
2320 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2321 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2321 | 2322 |
2322 GLint unpadded_row_size = emu.ComputeImageDataSize(in_read_width, 1); | 2323 GLint unpadded_row_size = emu.ComputeImageDataSize(in_read_width, 1); |
2323 scoped_ptr<int8[]> zero(new int8[unpadded_row_size]); | 2324 scoped_ptr<int8[]> zero(new int8[unpadded_row_size]); |
2324 scoped_ptr<int8[]> pack(new int8[kPackAlignment]); | 2325 scoped_ptr<int8[]> pack(new int8[kPackAlignment]); |
2325 memset(zero.get(), 0, unpadded_row_size); | 2326 memset(zero.get(), 0, unpadded_row_size); |
2326 memset(pack.get(), kInitialMemoryValue, kPackAlignment); | 2327 memset(pack.get(), kInitialMemoryValue, kPackAlignment); |
2327 for (GLint yy = 0; yy < in_read_height; ++yy) { | 2328 for (GLint yy = 0; yy < in_read_height; ++yy) { |
2328 const int8* row = static_cast<const int8*>( | 2329 const int8* row = static_cast<const int8*>( |
2329 emu.ComputePackAlignmentAddress(0, yy, in_read_width, dest)); | 2330 emu.ComputePackAlignmentAddress(0, yy, in_read_width, dest)); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2386 EXPECT_CALL(*gl_, GetError()) | 2387 EXPECT_CALL(*gl_, GetError()) |
2387 .WillOnce(Return(GL_NO_ERROR)) | 2388 .WillOnce(Return(GL_NO_ERROR)) |
2388 .WillOnce(Return(GL_NO_ERROR)) | 2389 .WillOnce(Return(GL_NO_ERROR)) |
2389 .RetiresOnSaturation(); | 2390 .RetiresOnSaturation(); |
2390 EXPECT_CALL( | 2391 EXPECT_CALL( |
2391 *gl_, ReadPixels(0, 0, kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, _)) | 2392 *gl_, ReadPixels(0, 0, kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, _)) |
2392 .WillOnce(Invoke(&emu, &ReadPixelsEmulator::ReadPixels)); | 2393 .WillOnce(Invoke(&emu, &ReadPixelsEmulator::ReadPixels)); |
2393 ReadPixels cmd; | 2394 ReadPixels cmd; |
2394 cmd.Init(0, 0, kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, | 2395 cmd.Init(0, 0, kWidth, kHeight, GL_RGB, GL_UNSIGNED_BYTE, |
2395 pixels_shm_id, pixels_shm_offset, | 2396 pixels_shm_id, pixels_shm_offset, |
2396 result_shm_id, result_shm_offset); | 2397 result_shm_id, result_shm_offset, |
| 2398 false); |
2397 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2399 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2398 for (GLint yy = 0; yy < kHeight; ++yy) { | 2400 for (GLint yy = 0; yy < kHeight; ++yy) { |
2399 EXPECT_TRUE(emu.CompareRowSegment( | 2401 EXPECT_TRUE(emu.CompareRowSegment( |
2400 0, yy, kWidth, | 2402 0, yy, kWidth, |
2401 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); | 2403 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); |
2402 } | 2404 } |
2403 } | 2405 } |
2404 | 2406 |
2405 TEST_F(GLES2DecoderRGBBackbufferTest, ReadPixelsNoAlphaBackbuffer) { | 2407 TEST_F(GLES2DecoderRGBBackbufferTest, ReadPixelsNoAlphaBackbuffer) { |
2406 const GLsizei kWidth = 3; | 2408 const GLsizei kWidth = 3; |
(...skipping 26 matching lines...) Expand all Loading... |
2433 EXPECT_CALL(*gl_, GetError()) | 2435 EXPECT_CALL(*gl_, GetError()) |
2434 .WillOnce(Return(GL_NO_ERROR)) | 2436 .WillOnce(Return(GL_NO_ERROR)) |
2435 .WillOnce(Return(GL_NO_ERROR)) | 2437 .WillOnce(Return(GL_NO_ERROR)) |
2436 .RetiresOnSaturation(); | 2438 .RetiresOnSaturation(); |
2437 EXPECT_CALL( | 2439 EXPECT_CALL( |
2438 *gl_, ReadPixels(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, _)) | 2440 *gl_, ReadPixels(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, _)) |
2439 .WillOnce(Invoke(&emu, &ReadPixelsEmulator::ReadPixels)); | 2441 .WillOnce(Invoke(&emu, &ReadPixelsEmulator::ReadPixels)); |
2440 ReadPixels cmd; | 2442 ReadPixels cmd; |
2441 cmd.Init(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, | 2443 cmd.Init(0, 0, kWidth, kHeight, GL_RGBA, GL_UNSIGNED_BYTE, |
2442 pixels_shm_id, pixels_shm_offset, | 2444 pixels_shm_id, pixels_shm_offset, |
2443 result_shm_id, result_shm_offset); | 2445 result_shm_id, result_shm_offset, |
| 2446 false); |
2444 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2447 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2445 for (GLint yy = 0; yy < kHeight; ++yy) { | 2448 for (GLint yy = 0; yy < kHeight; ++yy) { |
2446 EXPECT_TRUE(emu.CompareRowSegment( | 2449 EXPECT_TRUE(emu.CompareRowSegment( |
2447 0, yy, kWidth, | 2450 0, yy, kWidth, |
2448 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); | 2451 emu.ComputePackAlignmentAddress(0, yy, kWidth, dest))); |
2449 } | 2452 } |
2450 } | 2453 } |
2451 | 2454 |
2452 TEST_F(GLES2DecoderTest, ReadPixelsOutOfRange) { | 2455 TEST_F(GLES2DecoderTest, ReadPixelsOutOfRange) { |
2453 static GLint tests[][4] = { | 2456 static GLint tests[][4] = { |
(...skipping 16 matching lines...) Expand all Loading... |
2470 typedef ReadPixels::Result Result; | 2473 typedef ReadPixels::Result Result; |
2471 Result* result = GetSharedMemoryAs<Result*>(); | 2474 Result* result = GetSharedMemoryAs<Result*>(); |
2472 uint32 result_shm_id = kSharedMemoryId; | 2475 uint32 result_shm_id = kSharedMemoryId; |
2473 uint32 result_shm_offset = kSharedMemoryOffset; | 2476 uint32 result_shm_offset = kSharedMemoryOffset; |
2474 uint32 pixels_shm_id = kSharedMemoryId; | 2477 uint32 pixels_shm_id = kSharedMemoryId; |
2475 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); | 2478 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); |
2476 EXPECT_CALL(*gl_, ReadPixels(_, _, _, _, _, _, _)).Times(0); | 2479 EXPECT_CALL(*gl_, ReadPixels(_, _, _, _, _, _, _)).Times(0); |
2477 ReadPixels cmd; | 2480 ReadPixels cmd; |
2478 cmd.Init(0, 0, -1, 1, GL_RGB, GL_UNSIGNED_BYTE, | 2481 cmd.Init(0, 0, -1, 1, GL_RGB, GL_UNSIGNED_BYTE, |
2479 pixels_shm_id, pixels_shm_offset, | 2482 pixels_shm_id, pixels_shm_offset, |
2480 result_shm_id, result_shm_offset); | 2483 result_shm_id, result_shm_offset, |
| 2484 false); |
2481 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2485 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2482 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2486 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
2483 cmd.Init(0, 0, 1, -1, GL_RGB, GL_UNSIGNED_BYTE, | 2487 cmd.Init(0, 0, 1, -1, GL_RGB, GL_UNSIGNED_BYTE, |
2484 pixels_shm_id, pixels_shm_offset, | 2488 pixels_shm_id, pixels_shm_offset, |
2485 result_shm_id, result_shm_offset); | 2489 result_shm_id, result_shm_offset, |
| 2490 false); |
2486 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2491 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2487 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 2492 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
2488 cmd.Init(0, 0, 1, 1, GL_RGB, GL_INT, | 2493 cmd.Init(0, 0, 1, 1, GL_RGB, GL_INT, |
2489 pixels_shm_id, pixels_shm_offset, | 2494 pixels_shm_id, pixels_shm_offset, |
2490 result_shm_id, result_shm_offset); | 2495 result_shm_id, result_shm_offset, |
| 2496 false); |
2491 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 2497 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
2492 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); | 2498 EXPECT_EQ(GL_INVALID_ENUM, GetGLError()); |
2493 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, | 2499 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, |
2494 kInvalidSharedMemoryId, pixels_shm_offset, | 2500 kInvalidSharedMemoryId, pixels_shm_offset, |
2495 result_shm_id, result_shm_offset); | 2501 result_shm_id, result_shm_offset, |
| 2502 false); |
2496 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2503 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
2497 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, | 2504 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, |
2498 pixels_shm_id, kInvalidSharedMemoryOffset, | 2505 pixels_shm_id, kInvalidSharedMemoryOffset, |
2499 result_shm_id, result_shm_offset); | 2506 result_shm_id, result_shm_offset, |
| 2507 false); |
2500 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2508 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
2501 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, | 2509 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, |
2502 pixels_shm_id, pixels_shm_offset, | 2510 pixels_shm_id, pixels_shm_offset, |
2503 kInvalidSharedMemoryId, result_shm_offset); | 2511 kInvalidSharedMemoryId, result_shm_offset, |
| 2512 false); |
2504 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2513 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
2505 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, | 2514 cmd.Init(0, 0, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, |
2506 pixels_shm_id, pixels_shm_offset, | 2515 pixels_shm_id, pixels_shm_offset, |
2507 result_shm_id, kInvalidSharedMemoryOffset); | 2516 result_shm_id, kInvalidSharedMemoryOffset, |
| 2517 false); |
2508 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 2518 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
2509 } | 2519 } |
2510 | 2520 |
2511 TEST_F(GLES2DecoderTest, BindAttribLocation) { | 2521 TEST_F(GLES2DecoderTest, BindAttribLocation) { |
2512 const GLint kLocation = 2; | 2522 const GLint kLocation = 2; |
2513 const char* kName = "testing"; | 2523 const char* kName = "testing"; |
2514 const uint32 kNameSize = strlen(kName); | 2524 const uint32 kNameSize = strlen(kName); |
2515 EXPECT_CALL( | 2525 EXPECT_CALL( |
2516 *gl_, BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) | 2526 *gl_, BindAttribLocation(kServiceProgramId, kLocation, StrEq(kName))) |
2517 .Times(1); | 2527 .Times(1); |
(...skipping 2407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4925 .WillOnce(Return(GL_NO_ERROR)) | 4935 .WillOnce(Return(GL_NO_ERROR)) |
4926 .WillOnce(Return(GL_OUT_OF_MEMORY)) | 4936 .WillOnce(Return(GL_OUT_OF_MEMORY)) |
4927 .RetiresOnSaturation(); | 4937 .RetiresOnSaturation(); |
4928 EXPECT_CALL( | 4938 EXPECT_CALL( |
4929 *gl_, ReadPixels(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, _)) | 4939 *gl_, ReadPixels(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, _)) |
4930 .Times(1) | 4940 .Times(1) |
4931 .RetiresOnSaturation(); | 4941 .RetiresOnSaturation(); |
4932 ReadPixels cmd; | 4942 ReadPixels cmd; |
4933 cmd.Init(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, | 4943 cmd.Init(x, y, width, height, kFormat, GL_UNSIGNED_BYTE, |
4934 pixels_shm_id, pixels_shm_offset, | 4944 pixels_shm_id, pixels_shm_offset, |
4935 result_shm_id, result_shm_offset); | 4945 result_shm_id, result_shm_offset, |
| 4946 false); |
4936 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 4947 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
4937 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); | 4948 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); |
4938 } | 4949 } |
4939 | 4950 |
4940 static bool ValueInArray(GLint value, GLint* array, GLint count) { | 4951 static bool ValueInArray(GLint value, GLint* array, GLint count) { |
4941 for (GLint ii = 0; ii < count; ++ii) { | 4952 for (GLint ii = 0; ii < count; ++ii) { |
4942 if (array[ii] == value) { | 4953 if (array[ii] == value) { |
4943 return true; | 4954 return true; |
4944 } | 4955 } |
4945 } | 4956 } |
(...skipping 1711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6657 .Times(1) | 6668 .Times(1) |
6658 .RetiresOnSaturation(); | 6669 .RetiresOnSaturation(); |
6659 typedef ReadPixels::Result Result; | 6670 typedef ReadPixels::Result Result; |
6660 Result* result = GetSharedMemoryAs<Result*>(); | 6671 Result* result = GetSharedMemoryAs<Result*>(); |
6661 uint32 result_shm_id = kSharedMemoryId; | 6672 uint32 result_shm_id = kSharedMemoryId; |
6662 uint32 result_shm_offset = kSharedMemoryOffset; | 6673 uint32 result_shm_offset = kSharedMemoryOffset; |
6663 uint32 pixels_shm_id = kSharedMemoryId; | 6674 uint32 pixels_shm_id = kSharedMemoryId; |
6664 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); | 6675 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); |
6665 ReadPixels cmd; | 6676 ReadPixels cmd; |
6666 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6677 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
6667 pixels_shm_id, pixels_shm_offset, | 6678 pixels_shm_id, pixels_shm_offset, |
6668 result_shm_id, result_shm_offset); | 6679 result_shm_id, result_shm_offset, |
| 6680 false); |
6669 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6681 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6670 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6682 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
6671 } | 6683 } |
6672 | 6684 |
6673 TEST_F(GLES2DecoderManualInitTest, | 6685 TEST_F(GLES2DecoderManualInitTest, |
6674 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { | 6686 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { |
6675 InitDecoder( | 6687 InitDecoder( |
6676 "GL_EXT_framebuffer_multisample", // extensions | 6688 "GL_EXT_framebuffer_multisample", // extensions |
6677 false, // has alpha | 6689 false, // has alpha |
6678 false, // has depth | 6690 false, // has depth |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6717 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) | 6729 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) |
6718 .Times(1) | 6730 .Times(1) |
6719 .RetiresOnSaturation(); | 6731 .RetiresOnSaturation(); |
6720 typedef ReadPixels::Result Result; | 6732 typedef ReadPixels::Result Result; |
6721 uint32 result_shm_id = kSharedMemoryId; | 6733 uint32 result_shm_id = kSharedMemoryId; |
6722 uint32 result_shm_offset = kSharedMemoryOffset; | 6734 uint32 result_shm_offset = kSharedMemoryOffset; |
6723 uint32 pixels_shm_id = kSharedMemoryId; | 6735 uint32 pixels_shm_id = kSharedMemoryId; |
6724 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result); | 6736 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result); |
6725 ReadPixels cmd; | 6737 ReadPixels cmd; |
6726 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6738 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
6727 pixels_shm_id, pixels_shm_offset, | 6739 pixels_shm_id, pixels_shm_offset, |
6728 result_shm_id, result_shm_offset); | 6740 result_shm_id, result_shm_offset, |
| 6741 false); |
6729 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6742 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6730 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6743 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
6731 } | 6744 } |
6732 | 6745 |
6733 TEST_F(GLES2DecoderWithShaderTest, DrawClearsAfterRenderbufferStorageInFBO) { | 6746 TEST_F(GLES2DecoderWithShaderTest, DrawClearsAfterRenderbufferStorageInFBO) { |
6734 SetupTexture(); | 6747 SetupTexture(); |
6735 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 6748 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
6736 kServiceRenderbufferId); | 6749 kServiceRenderbufferId); |
6737 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 6750 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
6738 kServiceFramebufferId); | 6751 kServiceFramebufferId); |
(...skipping 1919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8658 // TODO(gman): TexImage2DImmediate | 8671 // TODO(gman): TexImage2DImmediate |
8659 | 8672 |
8660 // TODO(gman): TexSubImage2DImmediate | 8673 // TODO(gman): TexSubImage2DImmediate |
8661 | 8674 |
8662 // TODO(gman): UseProgram | 8675 // TODO(gman): UseProgram |
8663 | 8676 |
8664 // TODO(gman): SwapBuffers | 8677 // TODO(gman): SwapBuffers |
8665 | 8678 |
8666 } // namespace gles2 | 8679 } // namespace gles2 |
8667 } // namespace gpu | 8680 } // namespace gpu |
OLD | NEW |