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 1695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6641 .Times(1) | 6652 .Times(1) |
6642 .RetiresOnSaturation(); | 6653 .RetiresOnSaturation(); |
6643 typedef ReadPixels::Result Result; | 6654 typedef ReadPixels::Result Result; |
6644 Result* result = GetSharedMemoryAs<Result*>(); | 6655 Result* result = GetSharedMemoryAs<Result*>(); |
6645 uint32 result_shm_id = kSharedMemoryId; | 6656 uint32 result_shm_id = kSharedMemoryId; |
6646 uint32 result_shm_offset = kSharedMemoryOffset; | 6657 uint32 result_shm_offset = kSharedMemoryOffset; |
6647 uint32 pixels_shm_id = kSharedMemoryId; | 6658 uint32 pixels_shm_id = kSharedMemoryId; |
6648 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); | 6659 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(*result); |
6649 ReadPixels cmd; | 6660 ReadPixels cmd; |
6650 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6661 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
6651 pixels_shm_id, pixels_shm_offset, | 6662 pixels_shm_id, pixels_shm_offset, |
6652 result_shm_id, result_shm_offset); | 6663 result_shm_id, result_shm_offset, |
| 6664 false); |
6653 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6665 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6654 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6666 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
6655 } | 6667 } |
6656 | 6668 |
6657 TEST_F(GLES2DecoderManualInitTest, | 6669 TEST_F(GLES2DecoderManualInitTest, |
6658 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { | 6670 UnClearedAttachmentsGetClearedOnReadPixelsAndDrawBufferGetsRestored) { |
6659 InitDecoder( | 6671 InitDecoder( |
6660 "GL_EXT_framebuffer_multisample", // extensions | 6672 "GL_EXT_framebuffer_multisample", // extensions |
6661 false, // has alpha | 6673 false, // has alpha |
6662 false, // has depth | 6674 false, // has depth |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6701 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) | 6713 EXPECT_CALL(*gl_, ReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, _)) |
6702 .Times(1) | 6714 .Times(1) |
6703 .RetiresOnSaturation(); | 6715 .RetiresOnSaturation(); |
6704 typedef ReadPixels::Result Result; | 6716 typedef ReadPixels::Result Result; |
6705 uint32 result_shm_id = kSharedMemoryId; | 6717 uint32 result_shm_id = kSharedMemoryId; |
6706 uint32 result_shm_offset = kSharedMemoryOffset; | 6718 uint32 result_shm_offset = kSharedMemoryOffset; |
6707 uint32 pixels_shm_id = kSharedMemoryId; | 6719 uint32 pixels_shm_id = kSharedMemoryId; |
6708 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result); | 6720 uint32 pixels_shm_offset = kSharedMemoryOffset + sizeof(Result); |
6709 ReadPixels cmd; | 6721 ReadPixels cmd; |
6710 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, | 6722 cmd.Init(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, |
6711 pixels_shm_id, pixels_shm_offset, | 6723 pixels_shm_id, pixels_shm_offset, |
6712 result_shm_id, result_shm_offset); | 6724 result_shm_id, result_shm_offset, |
| 6725 false); |
6713 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 6726 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
6714 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 6727 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
6715 } | 6728 } |
6716 | 6729 |
6717 TEST_F(GLES2DecoderWithShaderTest, DrawClearsAfterRenderbufferStorageInFBO) { | 6730 TEST_F(GLES2DecoderWithShaderTest, DrawClearsAfterRenderbufferStorageInFBO) { |
6718 SetupTexture(); | 6731 SetupTexture(); |
6719 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, | 6732 DoBindRenderbuffer(GL_RENDERBUFFER, client_renderbuffer_id_, |
6720 kServiceRenderbufferId); | 6733 kServiceRenderbufferId); |
6721 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, | 6734 DoBindFramebuffer(GL_FRAMEBUFFER, client_framebuffer_id_, |
6722 kServiceFramebufferId); | 6735 kServiceFramebufferId); |
(...skipping 1919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8642 // TODO(gman): TexImage2DImmediate | 8655 // TODO(gman): TexImage2DImmediate |
8643 | 8656 |
8644 // TODO(gman): TexSubImage2DImmediate | 8657 // TODO(gman): TexSubImage2DImmediate |
8645 | 8658 |
8646 // TODO(gman): UseProgram | 8659 // TODO(gman): UseProgram |
8647 | 8660 |
8648 // TODO(gman): SwapBuffers | 8661 // TODO(gman): SwapBuffers |
8649 | 8662 |
8650 } // namespace gles2 | 8663 } // namespace gles2 |
8651 } // namespace gpu | 8664 } // namespace gpu |
OLD | NEW |