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

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

Issue 1309333003: Get ReadPixels to work with INT and UNSIGNED_INT format. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698