OLD | NEW |
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 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1386 .RetiresOnSaturation(); | 1386 .RetiresOnSaturation(); |
1387 RenderbufferStorage cmd; | 1387 RenderbufferStorage cmd; |
1388 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1); | 1388 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, TestHelper::kMaxRenderbufferSize + 1, 1); |
1389 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1389 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1390 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1390 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
1391 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); | 1391 cmd.Init(GL_RENDERBUFFER, GL_RGBA4, 1, TestHelper::kMaxRenderbufferSize + 1); |
1392 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 1392 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
1393 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 1393 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
1394 } | 1394 } |
1395 | 1395 |
| 1396 TEST_P(GLES3DecoderTest, ClearBufferivImmediateValidArgs) { |
| 1397 DoBindFramebuffer( |
| 1398 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 1399 DoBindRenderbuffer( |
| 1400 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1401 DoRenderbufferStorage( |
| 1402 GL_RENDERBUFFER, GL_RGBA8I, GL_RGBA8I, 1, 1, GL_NO_ERROR); |
| 1403 DoFramebufferRenderbuffer( |
| 1404 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 1405 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
| 1406 |
| 1407 cmds::ClearBufferivImmediate& cmd = |
| 1408 *GetImmediateAs<cmds::ClearBufferivImmediate>(); |
| 1409 GLint temp[4] = { 0 }; |
| 1410 cmd.Init(GL_COLOR, 0, &temp[0]); |
| 1411 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
| 1412 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 1413 .RetiresOnSaturation(); |
| 1414 SetupExpectationsForApplyingDirtyState( |
| 1415 false, false, false, 0x1111, false, false, 0, 0, false); |
| 1416 EXPECT_CALL(*gl_, ClearBufferiv( |
| 1417 GL_COLOR, 0, |
| 1418 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); |
| 1419 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1420 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1421 } |
| 1422 |
| 1423 TEST_P(GLES3DecoderTest, ClearBufferuivImmediateValidArgs) { |
| 1424 DoBindFramebuffer( |
| 1425 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 1426 DoBindRenderbuffer( |
| 1427 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1428 DoRenderbufferStorage( |
| 1429 GL_RENDERBUFFER, GL_RGBA8UI, GL_RGBA8UI, 1, 1, GL_NO_ERROR); |
| 1430 DoFramebufferRenderbuffer( |
| 1431 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
| 1432 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
| 1433 |
| 1434 cmds::ClearBufferuivImmediate& cmd = |
| 1435 *GetImmediateAs<cmds::ClearBufferuivImmediate>(); |
| 1436 GLuint temp[4] = { 0u }; |
| 1437 cmd.Init(GL_COLOR, 0, &temp[0]); |
| 1438 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
| 1439 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 1440 .RetiresOnSaturation(); |
| 1441 SetupExpectationsForApplyingDirtyState( |
| 1442 false, false, false, 0x1111, false, false, 0, 0, false); |
| 1443 EXPECT_CALL(*gl_, ClearBufferuiv( |
| 1444 GL_COLOR, 0, |
| 1445 reinterpret_cast<GLuint*>( |
| 1446 ImmediateDataAddress(&cmd)))); |
| 1447 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1448 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1449 } |
| 1450 |
| 1451 TEST_P(GLES3DecoderTest, ClearBufferfvImmediateValidArgs) { |
| 1452 DoBindFramebuffer( |
| 1453 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 1454 DoBindRenderbuffer( |
| 1455 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1456 DoRenderbufferStorage( |
| 1457 GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT32F, |
| 1458 1, 1, GL_NO_ERROR); |
| 1459 DoFramebufferRenderbuffer( |
| 1460 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, |
| 1461 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
| 1462 |
| 1463 Enable cmd_enable; |
| 1464 cmd_enable.Init(GL_DEPTH_TEST); |
| 1465 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); |
| 1466 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1467 |
| 1468 cmds::ClearBufferfvImmediate& cmd = |
| 1469 *GetImmediateAs<cmds::ClearBufferfvImmediate>(); |
| 1470 GLfloat temp[4] = { 1.0f }; |
| 1471 cmd.Init(GL_DEPTH, 0, &temp[0]); |
| 1472 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
| 1473 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 1474 .RetiresOnSaturation(); |
| 1475 SetupExpectationsForApplyingDirtyState( |
| 1476 true, true, false, 0x1110, true, true, 0, 0, false); |
| 1477 EXPECT_CALL(*gl_, ClearBufferfv( |
| 1478 GL_DEPTH, 0, |
| 1479 reinterpret_cast<GLfloat*>( |
| 1480 ImmediateDataAddress(&cmd)))); |
| 1481 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
| 1482 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1483 } |
| 1484 |
| 1485 TEST_P(GLES3DecoderTest, ClearBufferfiValidArgs) { |
| 1486 DoBindFramebuffer( |
| 1487 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
| 1488 DoBindRenderbuffer( |
| 1489 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
| 1490 DoRenderbufferStorage( |
| 1491 GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, GL_DEPTH24_STENCIL8, |
| 1492 1, 1, GL_NO_ERROR); |
| 1493 DoFramebufferRenderbuffer( |
| 1494 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, |
| 1495 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
| 1496 |
| 1497 Enable cmd_enable; |
| 1498 cmd_enable.Init(GL_STENCIL_TEST); |
| 1499 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); |
| 1500 cmd_enable.Init(GL_DEPTH_TEST); |
| 1501 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); |
| 1502 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1503 |
| 1504 cmds::ClearBufferfi cmd; |
| 1505 cmd.Init(GL_DEPTH_STENCIL, 0, 1.0f, 0); |
| 1506 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
| 1507 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 1508 .RetiresOnSaturation(); |
| 1509 SetupExpectationsForApplyingDirtyState( |
| 1510 true, true, true, 0x1110, true, true, |
| 1511 GLES2Decoder::kDefaultStencilMask, GLES2Decoder::kDefaultStencilMask, |
| 1512 true); |
| 1513 EXPECT_CALL(*gl_, ClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0f, 0)); |
| 1514 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 1515 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 1516 } |
| 1517 |
1396 TEST_P(GLES2DecoderManualInitTest, | 1518 TEST_P(GLES2DecoderManualInitTest, |
1397 RenderbufferStorageMultisampleCHROMIUMGLError) { | 1519 RenderbufferStorageMultisampleCHROMIUMGLError) { |
1398 InitState init; | 1520 InitState init; |
1399 init.extensions = "GL_EXT_framebuffer_multisample"; | 1521 init.extensions = "GL_EXT_framebuffer_multisample"; |
1400 init.bind_generates_resource = true; | 1522 init.bind_generates_resource = true; |
1401 InitDecoder(init); | 1523 InitDecoder(init); |
1402 DoBindRenderbuffer( | 1524 DoBindRenderbuffer( |
1403 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1525 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
1404 EnsureRenderbufferBound(false); | 1526 EnsureRenderbufferBound(false); |
1405 EXPECT_CALL(*gl_, GetError()) | 1527 EXPECT_CALL(*gl_, GetError()) |
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2381 EXPECT_EQ(1, result->GetNumResults()); | 2503 EXPECT_EQ(1, result->GetNumResults()); |
2382 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2504 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2383 } | 2505 } |
2384 | 2506 |
2385 // TODO(gman): PixelStorei | 2507 // TODO(gman): PixelStorei |
2386 | 2508 |
2387 // TODO(gman): SwapBuffers | 2509 // TODO(gman): SwapBuffers |
2388 | 2510 |
2389 } // namespace gles2 | 2511 } // namespace gles2 |
2390 } // namespace gpu | 2512 } // namespace gpu |
OLD | NEW |