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 |