Index: third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
index 574379e0151f9100919dd87bb9f9afecb1a8e549..214cb9efb2bf1c65ac8debe15e65064b95c7f0cc 100644 |
--- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp |
@@ -53,8 +53,10 @@ public: |
: MockWebGraphicsContext3D() |
, m_boundTexture(0) |
, m_currentMailboxByte(0) |
- , m_mostRecentlyWaitedSyncPoint(0) |
- , m_currentImageId(1) { } |
+ , m_mostRecentlyWaitedSyncToken(0) |
+ , m_currentImageId(1) |
+ { |
+ } |
void bindTexture(WGC3Denum target, WebGLId texture) override |
{ |
@@ -89,15 +91,17 @@ public: |
return m_mostRecentlyProducedSize; |
} |
- unsigned insertSyncPoint() override |
+ bool insertSyncPoint(WGC3Dbyte* syncToken) override |
{ |
- static unsigned syncPointGenerator = 0; |
- return ++syncPointGenerator; |
+ static WGC3Duint syncPointGenerator = 0; |
+ WGC3Duint newSyncPoint = ++syncPointGenerator; |
+ memcpy(syncToken, &newSyncPoint, sizeof(newSyncPoint)); |
+ return true; |
} |
- void waitSyncPoint(unsigned syncPoint) override |
+ void waitSyncToken(const WGC3Dbyte* syncToken) override |
{ |
- m_mostRecentlyWaitedSyncPoint = syncPoint; |
+ memcpy(&m_mostRecentlyWaitedSyncToken, syncToken, sizeof(m_mostRecentlyWaitedSyncToken)); |
} |
WGC3Duint createGpuMemoryBufferImageCHROMIUM(WGC3Dsizei width, WGC3Dsizei height, WGC3Denum internalformat, WGC3Denum usage) override |
@@ -136,9 +140,9 @@ public: |
} |
} |
- unsigned mostRecentlyWaitedSyncPoint() |
+ WGC3Duint mostRecentlyWaitedSyncToken() |
{ |
- return m_mostRecentlyWaitedSyncPoint; |
+ return m_mostRecentlyWaitedSyncToken; |
} |
WGC3Duint nextImageIdToBeCreated() |
@@ -151,7 +155,7 @@ private: |
HashMap<WebGLId, IntSize> m_textureSizes; |
WGC3Dbyte m_currentMailboxByte; |
IntSize m_mostRecentlyProducedSize; |
- unsigned m_mostRecentlyWaitedSyncPoint; |
+ WGC3Duint m_mostRecentlyWaitedSyncToken; |
WGC3Duint m_currentImageId; |
HashMap<WGC3Duint, IntSize> m_imageSizes; |
HashMap<WGC3Duint, WebGLId> m_imageToTextureMap; |
@@ -401,34 +405,37 @@ TEST_F(DrawingBufferTest, verifyOnlyOneRecycledMailboxMustBeKept) |
m_drawingBuffer->beginDestruction(); |
} |
-TEST_F(DrawingBufferTest, verifyInsertAndWaitSyncPointCorrectly) |
+TEST_F(DrawingBufferTest, verifyInsertAndWaitSyncTokenCorrectly) |
{ |
WebExternalTextureMailbox mailbox; |
// Produce mailboxes. |
m_drawingBuffer->markContentsChanged(); |
- EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncPoint()); |
+ EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
// prepareMailbox() does not wait for any sync point. |
- EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncPoint()); |
+ EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
- unsigned waitSyncPoint = webContext()->insertSyncPoint(); |
- mailbox.syncPoint = waitSyncPoint; |
+ WGC3Duint waitSyncToken = 0; |
+ webContext()->insertSyncPoint(reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); |
+ memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); |
+ mailbox.validSyncToken = true; |
m_drawingBuffer->mailboxReleased(mailbox, false); |
// m_drawingBuffer will wait for the sync point when recycling. |
- EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncPoint()); |
+ EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken()); |
m_drawingBuffer->markContentsChanged(); |
EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
// m_drawingBuffer waits for the sync point when recycling in prepareMailbox(). |
- EXPECT_EQ(waitSyncPoint, webContext()->mostRecentlyWaitedSyncPoint()); |
+ EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
m_drawingBuffer->beginDestruction(); |
- waitSyncPoint = webContext()->insertSyncPoint(); |
- mailbox.syncPoint = waitSyncPoint; |
+ webContext()->insertSyncPoint(reinterpret_cast<WGC3Dbyte*>(&waitSyncToken)); |
+ memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken)); |
+ mailbox.validSyncToken = true; |
m_drawingBuffer->mailboxReleased(mailbox, false); |
// m_drawingBuffer waits for the sync point because the destruction is in progress. |
- EXPECT_EQ(waitSyncPoint, webContext()->mostRecentlyWaitedSyncPoint()); |
+ EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
} |
class DrawingBufferImageChromiumTest : public DrawingBufferTest { |
@@ -654,12 +661,14 @@ TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes) |
m_drawingBuffer->markContentsChanged(); |
EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0)); |
- unsigned waitSyncPoint = webContext()->insertSyncPoint(); |
- mailbox.syncPoint = waitSyncPoint; |
+ mailbox.validSyncToken = webContext()->insertSyncPoint(mailbox.syncToken); |
m_drawingBuffer->setIsHidden(true); |
m_drawingBuffer->mailboxReleased(mailbox); |
// m_drawingBuffer deletes mailbox immediately when hidden. |
- EXPECT_EQ(waitSyncPoint, webContext()->mostRecentlyWaitedSyncPoint()); |
+ |
+ WGC3Duint waitSyncToken = 0; |
+ memcpy(&waitSyncToken, mailbox.syncToken, sizeof(waitSyncToken)); |
+ EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken()); |
m_drawingBuffer->beginDestruction(); |
} |