| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 ASSERT_EQ(target, static_cast<WGC3Denum>(GL_TEXTURE_2D)); | 84 ASSERT_EQ(target, static_cast<WGC3Denum>(GL_TEXTURE_2D)); |
| 85 ASSERT_TRUE(m_textureSizes.contains(texture)); | 85 ASSERT_TRUE(m_textureSizes.contains(texture)); |
| 86 m_mostRecentlyProducedSize = m_textureSizes.get(texture); | 86 m_mostRecentlyProducedSize = m_textureSizes.get(texture); |
| 87 } | 87 } |
| 88 | 88 |
| 89 IntSize mostRecentlyProducedSize() | 89 IntSize mostRecentlyProducedSize() |
| 90 { | 90 { |
| 91 return m_mostRecentlyProducedSize; | 91 return m_mostRecentlyProducedSize; |
| 92 } | 92 } |
| 93 | 93 |
| 94 WGC3Duint64 insertFenceSyncCHROMIUM() override | 94 bool insertSyncPoint(WGC3Dbyte* syncToken) override |
| 95 { | 95 { |
| 96 static WGC3Duint64 syncPointGenerator = 0; | 96 static WGC3Duint syncPointGenerator = 0; |
| 97 return ++syncPointGenerator; | 97 WGC3Duint newSyncPoint = ++syncPointGenerator; |
| 98 } | 98 memcpy(syncToken, &newSyncPoint, sizeof(newSyncPoint)); |
| 99 | |
| 100 bool genSyncTokenCHROMIUM(WGC3Duint64 fenceSync, WGC3Dbyte* syncToken) overr
ide | |
| 101 { | |
| 102 memcpy(syncToken, &fenceSync, sizeof(fenceSync)); | |
| 103 return true; | 99 return true; |
| 104 } | 100 } |
| 105 | 101 |
| 106 void waitSyncTokenCHROMIUM(const WGC3Dbyte* syncToken) override | 102 void waitSyncToken(const WGC3Dbyte* syncToken) override |
| 107 { | 103 { |
| 108 memcpy(&m_mostRecentlyWaitedSyncToken, syncToken, sizeof(m_mostRecentlyW
aitedSyncToken)); | 104 memcpy(&m_mostRecentlyWaitedSyncToken, syncToken, sizeof(m_mostRecentlyW
aitedSyncToken)); |
| 109 } | 105 } |
| 110 | 106 |
| 111 WGC3Duint createGpuMemoryBufferImageCHROMIUM(WGC3Dsizei width, WGC3Dsizei he
ight, WGC3Denum internalformat, WGC3Denum usage) override | 107 WGC3Duint createGpuMemoryBufferImageCHROMIUM(WGC3Dsizei width, WGC3Dsizei he
ight, WGC3Denum internalformat, WGC3Denum usage) override |
| 112 { | 108 { |
| 113 m_imageSizes.set(m_currentImageId, IntSize(width, height)); | 109 m_imageSizes.set(m_currentImageId, IntSize(width, height)); |
| 114 return m_currentImageId++; | 110 return m_currentImageId++; |
| 115 } | 111 } |
| 116 | 112 |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 { | 394 { |
| 399 WebExternalTextureMailbox mailbox; | 395 WebExternalTextureMailbox mailbox; |
| 400 | 396 |
| 401 // Produce mailboxes. | 397 // Produce mailboxes. |
| 402 m_drawingBuffer->markContentsChanged(); | 398 m_drawingBuffer->markContentsChanged(); |
| 403 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); | 399 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
| 404 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); | 400 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
| 405 // prepareMailbox() does not wait for any sync point. | 401 // prepareMailbox() does not wait for any sync point. |
| 406 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); | 402 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
| 407 | 403 |
| 408 WGC3Duint64 waitSyncToken = 0; | 404 WGC3Duint waitSyncToken = 0; |
| 409 webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(),
reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); | 405 webContext()->insertSyncPoint(reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); |
| 410 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); | 406 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); |
| 411 mailbox.validSyncToken = true; | 407 mailbox.validSyncToken = true; |
| 412 m_drawingBuffer->mailboxReleased(mailbox, false); | 408 m_drawingBuffer->mailboxReleased(mailbox, false); |
| 413 // m_drawingBuffer will wait for the sync point when recycling. | 409 // m_drawingBuffer will wait for the sync point when recycling. |
| 414 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); | 410 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
| 415 | 411 |
| 416 m_drawingBuffer->markContentsChanged(); | 412 m_drawingBuffer->markContentsChanged(); |
| 417 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); | 413 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
| 418 // m_drawingBuffer waits for the sync point when recycling in prepareMailbox
(). | 414 // m_drawingBuffer waits for the sync point when recycling in prepareMailbox
(). |
| 419 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); | 415 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
| 420 | 416 |
| 421 m_drawingBuffer->beginDestruction(); | 417 m_drawingBuffer->beginDestruction(); |
| 422 webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(),
reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); | 418 webContext()->insertSyncPoint(reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); |
| 423 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); | 419 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); |
| 424 mailbox.validSyncToken = true; | 420 mailbox.validSyncToken = true; |
| 425 m_drawingBuffer->mailboxReleased(mailbox, false); | 421 m_drawingBuffer->mailboxReleased(mailbox, false); |
| 426 // m_drawingBuffer waits for the sync point because the destruction is in pr
ogress. | 422 // m_drawingBuffer waits for the sync point because the destruction is in pr
ogress. |
| 427 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); | 423 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
| 428 } | 424 } |
| 429 | 425 |
| 430 class DrawingBufferImageChromiumTest : public DrawingBufferTest { | 426 class DrawingBufferImageChromiumTest : public DrawingBufferTest { |
| 431 protected: | 427 protected: |
| 432 virtual void SetUp() | 428 virtual void SetUp() |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 } | 639 } |
| 644 | 640 |
| 645 TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes) | 641 TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes) |
| 646 { | 642 { |
| 647 blink::WebExternalTextureMailbox mailbox; | 643 blink::WebExternalTextureMailbox mailbox; |
| 648 | 644 |
| 649 // Produce mailboxes. | 645 // Produce mailboxes. |
| 650 m_drawingBuffer->markContentsChanged(); | 646 m_drawingBuffer->markContentsChanged(); |
| 651 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); | 647 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
| 652 | 648 |
| 653 mailbox.validSyncToken = webContext()->genSyncTokenCHROMIUM(webContext()->in
sertFenceSyncCHROMIUM(), mailbox.syncToken); | 649 mailbox.validSyncToken = webContext()->insertSyncPoint(mailbox.syncToken); |
| 654 m_drawingBuffer->setIsHidden(true); | 650 m_drawingBuffer->setIsHidden(true); |
| 655 m_drawingBuffer->mailboxReleased(mailbox); | 651 m_drawingBuffer->mailboxReleased(mailbox); |
| 656 // m_drawingBuffer deletes mailbox immediately when hidden. | 652 // m_drawingBuffer deletes mailbox immediately when hidden. |
| 657 | 653 |
| 658 WGC3Duint waitSyncToken = 0; | 654 WGC3Duint waitSyncToken = 0; |
| 659 memcpy(&waitSyncToken, mailbox.syncToken, sizeof(waitSyncToken)); | 655 memcpy(&waitSyncToken, mailbox.syncToken, sizeof(waitSyncToken)); |
| 660 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); | 656 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
| 661 | 657 |
| 662 m_drawingBuffer->beginDestruction(); | 658 m_drawingBuffer->beginDestruction(); |
| 663 } | 659 } |
| 664 | 660 |
| 665 } // namespace blink | 661 } // namespace blink |
| OLD | NEW |