summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp')
-rw-r--r--third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp86
1 files changed, 49 insertions, 37 deletions
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
index 2ced4a1..9b13f2e 100644
--- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
@@ -70,23 +70,8 @@ WGC3Denum drawingBufferTextureTarget(bool allowImageChromium)
} // namespace
class GLES2InterfaceForTests : public gpu::gles2::GLES2InterfaceStub {
-};
-
-class WebGraphicsContext3DForTests : public MockWebGraphicsContext3D {
public:
- WebGraphicsContext3DForTests(PassOwnPtr<GLES2InterfaceForTests> contextGL)
- : MockWebGraphicsContext3D()
- , m_boundTexture(0)
- , m_boundTextureTarget(0)
- , m_currentMailboxByte(0)
- , m_mostRecentlyWaitedSyncToken(0)
- , m_currentImageId(1)
- , m_allowImageChromium(true)
- , m_contextGL(std::move(contextGL))
- {
- }
-
- void bindTexture(WGC3Denum target, WebGLId texture) override
+ void BindTexture(GLenum target, GLuint texture) override
{
if (target != m_boundTextureTarget && texture == 0)
return;
@@ -97,10 +82,46 @@ public:
m_boundTexture = texture;
}
+ GLuint64 InsertFenceSyncCHROMIUM() override
+ {
+ static WGC3Duint64 syncPointGenerator = 0;
+ return ++syncPointGenerator;
+ }
+
+ void WaitSyncTokenCHROMIUM(const GLbyte* syncToken) override
+ {
+ memcpy(&m_mostRecentlyWaitedSyncToken, syncToken, sizeof(m_mostRecentlyWaitedSyncToken));
+ }
+
+ GLenum CheckFramebufferStatus(GLenum target) override
+ {
+ return GL_FRAMEBUFFER_COMPLETE;
+ }
+
+ uint32_t boundTexture() const { return m_boundTexture; }
+ uint32_t boundTextureTarget() const { return m_boundTextureTarget; }
+ uint32_t mostRecentlyWaitedSyncToken() const { return m_mostRecentlyWaitedSyncToken; }
+
+private:
+ uint32_t m_boundTexture = 0;
+ uint32_t m_boundTextureTarget = 0;
+ uint32_t m_mostRecentlyWaitedSyncToken = 0;
+};
+
+class WebGraphicsContext3DForTests : public MockWebGraphicsContext3D {
+public:
+ WebGraphicsContext3DForTests(PassOwnPtr<GLES2InterfaceForTests> contextGL)
+ : m_currentMailboxByte(0)
+ , m_currentImageId(1)
+ , m_allowImageChromium(true)
+ , m_contextGL(std::move(contextGL))
+ {
+ }
+
void texImage2D(WGC3Denum target, WGC3Dint level, WGC3Denum internalformat, WGC3Dsizei width, WGC3Dsizei height, WGC3Dint border, WGC3Denum format, WGC3Denum type, const void* pixels) override
{
if (target == GL_TEXTURE_2D && !level) {
- m_textureSizes.set(m_boundTexture, IntSize(width, height));
+ m_textureSizes.set(m_contextGL->boundTexture(), IntSize(width, height));
}
}
@@ -123,23 +144,12 @@ public:
return m_mostRecentlyProducedSize;
}
- WGC3Duint64 insertFenceSyncCHROMIUM() override
- {
- static WGC3Duint64 syncPointGenerator = 0;
- return ++syncPointGenerator;
- }
-
bool genSyncTokenCHROMIUM(WGC3Duint64 fenceSync, WGC3Dbyte* syncToken) override
{
memcpy(syncToken, &fenceSync, sizeof(fenceSync));
return true;
}
- void waitSyncTokenCHROMIUM(const WGC3Dbyte* syncToken) override
- {
- memcpy(&m_mostRecentlyWaitedSyncToken, syncToken, sizeof(m_mostRecentlyWaitedSyncToken));
- }
-
WGC3Duint createGpuMemoryBufferImageCHROMIUM(WGC3Dsizei width, WGC3Dsizei height, WGC3Denum internalformat, WGC3Denum usage) override
{
if (!m_allowImageChromium)
@@ -162,8 +172,8 @@ public:
void bindTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint imageId)
{
if (target == imageTextureTarget()) {
- m_textureSizes.set(m_boundTexture, m_imageSizes.find(imageId)->value);
- m_imageToTextureMap.set(imageId, m_boundTexture);
+ m_textureSizes.set(m_contextGL->boundTexture(), m_imageSizes.find(imageId)->value);
+ m_imageToTextureMap.set(imageId, m_contextGL->boundTexture());
bindTexImage2DMock(imageId);
}
}
@@ -180,7 +190,7 @@ public:
WGC3Duint mostRecentlyWaitedSyncToken()
{
- return m_mostRecentlyWaitedSyncToken;
+ return m_contextGL->mostRecentlyWaitedSyncToken();
}
WGC3Duint nextImageIdToBeCreated()
@@ -199,12 +209,9 @@ public:
}
private:
- WebGLId m_boundTexture;
- WGC3Denum m_boundTextureTarget;
HashMap<WebGLId, IntSize> m_textureSizes;
WGC3Dbyte m_currentMailboxByte;
IntSize m_mostRecentlyProducedSize;
- WGC3Duint m_mostRecentlyWaitedSyncToken;
WGC3Duint m_currentImageId;
HashMap<WGC3Duint, IntSize> m_imageSizes;
HashMap<WGC3Duint, WebGLId> m_imageToTextureMap;
@@ -451,7 +458,7 @@ TEST_F(DrawingBufferTest, verifyInsertAndWaitSyncTokenCorrectly)
EXPECT_EQ(0u, webContext()->mostRecentlyWaitedSyncToken());
WGC3Duint64 waitSyncToken = 0;
- webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(), reinterpret_cast<WGC3Dbyte*>(&waitSyncToken));
+ webContext()->genSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), reinterpret_cast<WGC3Dbyte*>(&waitSyncToken));
memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken));
mailbox.validSyncToken = true;
m_drawingBuffer->mailboxReleased(mailbox, false);
@@ -464,7 +471,7 @@ TEST_F(DrawingBufferTest, verifyInsertAndWaitSyncTokenCorrectly)
EXPECT_EQ(waitSyncToken, webContext()->mostRecentlyWaitedSyncToken());
m_drawingBuffer->beginDestruction();
- webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(), reinterpret_cast<WGC3Dbyte*>(&waitSyncToken));
+ webContext()->genSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), reinterpret_cast<WGC3Dbyte*>(&waitSyncToken));
memcpy(mailbox.syncToken, &waitSyncToken, sizeof(waitSyncToken));
mailbox.validSyncToken = true;
m_drawingBuffer->mailboxReleased(mailbox, false);
@@ -587,6 +594,11 @@ public:
}
}
+ GLenum CheckFramebufferStatus(GLenum target) override
+ {
+ return GL_FRAMEBUFFER_COMPLETE;
+ }
+
uint32_t stencilAttachment() const { return m_stencilAttachment; }
uint32_t depthAttachment() const { return m_depthAttachment; }
uint32_t depthStencilAttachment() const { return m_depthStencilAttachment; }
@@ -717,7 +729,7 @@ TEST_F(DrawingBufferTest, verifySetIsHiddenProperlyAffectsMailboxes)
m_drawingBuffer->markContentsChanged();
EXPECT_TRUE(m_drawingBuffer->prepareMailbox(&mailbox, 0));
- mailbox.validSyncToken = webContext()->genSyncTokenCHROMIUM(webContext()->insertFenceSyncCHROMIUM(), mailbox.syncToken);
+ mailbox.validSyncToken = webContext()->genSyncTokenCHROMIUM(m_gl->InsertFenceSyncCHROMIUM(), mailbox.syncToken);
m_drawingBuffer->setIsHidden(true);
m_drawingBuffer->mailboxReleased(mailbox);
// m_drawingBuffer deletes mailbox immediately when hidden.