| 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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 MOCK_METHOD1(ReleaseTexImage2DMock, void(GLint imageId)); | 156 MOCK_METHOD1(ReleaseTexImage2DMock, void(GLint imageId)); |
| 157 void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) | 157 void ReleaseTexImage2DCHROMIUM(GLenum target, GLint imageId) |
| 158 { | 158 { |
| 159 if (target == imageTextureTarget()) { | 159 if (target == imageTextureTarget()) { |
| 160 m_imageSizes.set(m_currentImageId, IntSize()); | 160 m_imageSizes.set(m_currentImageId, IntSize()); |
| 161 m_imageToTextureMap.remove(imageId); | 161 m_imageToTextureMap.remove(imageId); |
| 162 ReleaseTexImage2DMock(imageId); | 162 ReleaseTexImage2DMock(imageId); |
| 163 } | 163 } |
| 164 } | 164 } |
| 165 | 165 |
| 166 void GenSyncTokenCHROMIUM(GLuint64 fenceSync, GLbyte* syncToken) override |
| 167 { |
| 168 memcpy(syncToken, &fenceSync, sizeof(fenceSync)); |
| 169 } |
| 170 |
| 166 uint32_t boundTexture() const { return m_boundTexture; } | 171 uint32_t boundTexture() const { return m_boundTexture; } |
| 167 uint32_t boundTextureTarget() const { return m_boundTextureTarget; } | 172 uint32_t boundTextureTarget() const { return m_boundTextureTarget; } |
| 168 uint32_t mostRecentlyWaitedSyncToken() const { return m_mostRecentlyWaitedSy
ncToken; } | 173 uint32_t mostRecentlyWaitedSyncToken() const { return m_mostRecentlyWaitedSy
ncToken; } |
| 169 uint32_t currentImageId() const { return m_currentImageId; } | 174 uint32_t currentImageId() const { return m_currentImageId; } |
| 170 IntSize mostRecentlyProducedSize() const { return m_mostRecentlyProducedSize
; } | 175 IntSize mostRecentlyProducedSize() const { return m_mostRecentlyProducedSize
; } |
| 171 bool allowImageChromium() const { return m_allowImageChromium; } | 176 bool allowImageChromium() const { return m_allowImageChromium; } |
| 172 | 177 |
| 173 void setAllowImageChromium(bool allow) { m_allowImageChromium = allow; } | 178 void setAllowImageChromium(bool allow) { m_allowImageChromium = allow; } |
| 174 | 179 |
| 175 private: | 180 private: |
| 176 uint32_t m_boundTexture = 0; | 181 uint32_t m_boundTexture = 0; |
| 177 uint32_t m_boundTextureTarget = 0; | 182 uint32_t m_boundTextureTarget = 0; |
| 178 uint32_t m_mostRecentlyWaitedSyncToken = 0; | 183 uint32_t m_mostRecentlyWaitedSyncToken = 0; |
| 179 WGC3Dbyte m_currentMailboxByte = 0; | 184 WGC3Dbyte m_currentMailboxByte = 0; |
| 180 IntSize m_mostRecentlyProducedSize; | 185 IntSize m_mostRecentlyProducedSize; |
| 181 bool m_allowImageChromium = true; | 186 bool m_allowImageChromium = true; |
| 182 uint32_t m_currentImageId = 1; | 187 uint32_t m_currentImageId = 1; |
| 183 HashMap<uint32_t, IntSize> m_textureSizes; | 188 HashMap<uint32_t, IntSize> m_textureSizes; |
| 184 HashMap<uint32_t, IntSize> m_imageSizes; | 189 HashMap<uint32_t, IntSize> m_imageSizes; |
| 185 HashMap<uint32_t, uint32_t> m_imageToTextureMap; | 190 HashMap<uint32_t, uint32_t> m_imageToTextureMap; |
| 186 }; | 191 }; |
| 187 | 192 |
| 188 class WebGraphicsContext3DForTests : public MockWebGraphicsContext3D { | 193 class WebGraphicsContext3DForTests : public MockWebGraphicsContext3D { |
| 189 public: | 194 public: |
| 190 WebGraphicsContext3DForTests(PassOwnPtr<GLES2InterfaceForTests> contextGL) | 195 WebGraphicsContext3DForTests(PassOwnPtr<GLES2InterfaceForTests> contextGL) |
| 191 : m_contextGL(std::move(contextGL)) | 196 : m_contextGL(std::move(contextGL)) |
| 192 { | 197 { |
| 193 } | 198 } |
| 194 | 199 |
| 195 bool genSyncTokenCHROMIUM(WGC3Duint64 fenceSync, WGC3Dbyte* syncToken) overr
ide | |
| 196 { | |
| 197 memcpy(syncToken, &fenceSync, sizeof(fenceSync)); | |
| 198 return true; | |
| 199 } | |
| 200 | |
| 201 WGC3Duint mostRecentlyWaitedSyncToken() | 200 WGC3Duint mostRecentlyWaitedSyncToken() |
| 202 { | 201 { |
| 203 return m_contextGL->mostRecentlyWaitedSyncToken(); | 202 return m_contextGL->mostRecentlyWaitedSyncToken(); |
| 204 } | 203 } |
| 205 | 204 |
| 206 IntSize mostRecentlyProducedSize() | 205 IntSize mostRecentlyProducedSize() |
| 207 { | 206 { |
| 208 return m_contextGL->mostRecentlyProducedSize(); | 207 return m_contextGL->mostRecentlyProducedSize(); |
| 209 } | 208 } |
| 210 | 209 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 WebExternalTextureMailbox mailbox; | 454 WebExternalTextureMailbox mailbox; |
| 456 | 455 |
| 457 // Produce mailboxes. | 456 // Produce mailboxes. |
| 458 m_drawingBuffer->markContentsChanged(); | 457 m_drawingBuffer->markContentsChanged(); |
| 459 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); | 458 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
| 460 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); | 459 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
| 461 // prepareMailbox() does not wait for any sync point. | 460 // prepareMailbox() does not wait for any sync point. |
| 462 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); | 461 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
| 463 | 462 |
| 464 WGC3Duint64 waitSyncToken = 0; | 463 WGC3Duint64 waitSyncToken = 0; |
| 465 webContext()->genSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), reinterp
ret_cast<WGC3Dbyte*>(&waitSyncToken)); | 464 m_gl->GenSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), reinterpret_cast
<WGC3Dbyte*>(&waitSyncToken)); |
| 466 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); | 465 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); |
| 467 mailbox.validSyncToken = true; | 466 mailbox.validSyncToken = true; |
| 468 m_drawingBuffer->mailboxReleased(mailbox, false); | 467 m_drawingBuffer->mailboxReleased(mailbox, false); |
| 469 // m_drawingBuffer will wait for the sync point when recycling. | 468 // m_drawingBuffer will wait for the sync point when recycling. |
| 470 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); | 469 EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
| 471 | 470 |
| 472 m_drawingBuffer->markContentsChanged(); | 471 m_drawingBuffer->markContentsChanged(); |
| 473 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); | 472 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
| 474 // m_drawingBuffer waits for the sync point when recycling in prepareMailbox
(). | 473 // m_drawingBuffer waits for the sync point when recycling in prepareMailbox
(). |
| 475 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); | 474 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
| 476 | 475 |
| 477 m_drawingBuffer->beginDestruction(); | 476 m_drawingBuffer->beginDestruction(); |
| 478 webContext()->genSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), reinterp
ret_cast<WGC3Dbyte*>(&waitSyncToken)); | 477 m_gl->GenSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), reinterpret_cast
<WGC3Dbyte*>(&waitSyncToken)); |
| 479 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); | 478 memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); |
| 480 mailbox.validSyncToken = true; | 479 mailbox.validSyncToken = true; |
| 481 m_drawingBuffer->mailboxReleased(mailbox, false); | 480 m_drawingBuffer->mailboxReleased(mailbox, false); |
| 482 // m_drawingBuffer waits for the sync point because the destruction is in pr
ogress. | 481 // m_drawingBuffer waits for the sync point because the destruction is in pr
ogress. |
| 483 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); | 482 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
| 484 } | 483 } |
| 485 | 484 |
| 486 class DrawingBufferImageChromiumTest : public DrawingBufferTest { | 485 class DrawingBufferImageChromiumTest : public DrawingBufferTest { |
| 487 protected: | 486 protected: |
| 488 void SetUp() override | 487 void SetUp() override |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 } | 728 } |
| 730 | 729 |
| 731 TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes) | 730 TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes) |
| 732 { | 731 { |
| 733 blink::WebExternalTextureMailbox mailbox; | 732 blink::WebExternalTextureMailbox mailbox; |
| 734 | 733 |
| 735 // Produce mailboxes. | 734 // Produce mailboxes. |
| 736 m_drawingBuffer->markContentsChanged(); | 735 m_drawingBuffer->markContentsChanged(); |
| 737 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); | 736 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
| 738 | 737 |
| 739 mailbox.validSyncToken = webContext()->genSyncTokenCHROMIUM(m_gl->InsertFenc
eSyncCHROMIUM(), mailbox.syncToken); | 738 m_gl->GenSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), mailbox.syncToke
n); |
| 739 mailbox.validSyncToken = true; |
| 740 m_drawingBuffer->setIsHidden(true); | 740 m_drawingBuffer->setIsHidden(true); |
| 741 m_drawingBuffer->mailboxReleased(mailbox); | 741 m_drawingBuffer->mailboxReleased(mailbox); |
| 742 // m_drawingBuffer deletes mailbox immediately when hidden. | 742 // m_drawingBuffer deletes mailbox immediately when hidden. |
| 743 | 743 |
| 744 WGC3Duint waitSyncToken = 0; | 744 WGC3Duint waitSyncToken = 0; |
| 745 memcpy(&waitSyncToken, mailbox.syncToken, sizeof(waitSyncToken)); | 745 memcpy(&waitSyncToken, mailbox.syncToken, sizeof(waitSyncToken)); |
| 746 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); | 746 EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
| 747 | 747 |
| 748 m_drawingBuffer->beginDestruction(); | 748 m_drawingBuffer->beginDestruction(); |
| 749 } | 749 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 776 m_drawingBuffer->markContentsChanged(); | 776 m_drawingBuffer->markContentsChanged(); |
| 777 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); | 777 EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
| 778 EXPECT_EQ(initialSize, webContext()->mostRecentlyProducedSize()); | 778 EXPECT_EQ(initialSize, webContext()->mostRecentlyProducedSize()); |
| 779 EXPECT_FALSE(mailbox.allowOverlay); | 779 EXPECT_FALSE(mailbox.allowOverlay); |
| 780 | 780 |
| 781 m_drawingBuffer->mailboxReleased(mailbox, false); | 781 m_drawingBuffer->mailboxReleased(mailbox, false); |
| 782 m_drawingBuffer->beginDestruction(); | 782 m_drawingBuffer->beginDestruction(); |
| 783 } | 783 } |
| 784 | 784 |
| 785 } // namespace blink | 785 } // namespace blink |
| OLD | NEW |