| 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 9b13f2e85f9cb6e46ee03bc9a4b195f037e0811f..86f5d4165c6b75160ca86e9bb0465afeadfdc538 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
|
| @@ -98,22 +98,50 @@ public:
|
| return GL_FRAMEBUFFER_COMPLETE;
|
| }
|
|
|
| + void GetIntegerv(GLenum pname, GLint* value) override
|
| + {
|
| + if (pname == GL_MAX_TEXTURE_SIZE)
|
| + *value = 1024;
|
| + }
|
| +
|
| + void GenMailboxCHROMIUM(GLbyte* mailbox) override
|
| + {
|
| + ++m_currentMailboxByte;
|
| + WebExternalTextureMailbox temp;
|
| + memset(mailbox, m_currentMailboxByte, sizeof(temp.name));
|
| + }
|
| +
|
| + void ProduceTextureDirectCHROMIUM(GLuint texture, GLenum target, const GLbyte* mailbox) override
|
| + {
|
| + ASSERT_EQ(target, drawingBufferTextureTarget(m_allowImageChromium));
|
| + ASSERT_TRUE(m_textureSizes.contains(texture));
|
| + m_mostRecentlyProducedSize = m_textureSizes.get(texture);
|
| + }
|
| +
|
| uint32_t boundTexture() const { return m_boundTexture; }
|
| uint32_t boundTextureTarget() const { return m_boundTextureTarget; }
|
| uint32_t mostRecentlyWaitedSyncToken() const { return m_mostRecentlyWaitedSyncToken; }
|
| + IntSize mostRecentlyProducedSize() const { return m_mostRecentlyProducedSize; }
|
| + bool allowImageChromium() const { return m_allowImageChromium; }
|
| + HashMap<WebGLId, IntSize>& textureSizes() { return m_textureSizes; }
|
| + const HashMap<WebGLId, IntSize>& textureSizes() const { return m_textureSizes; }
|
| +
|
| + void setAllowImageChromium(bool allow) { m_allowImageChromium = allow; }
|
|
|
| private:
|
| uint32_t m_boundTexture = 0;
|
| uint32_t m_boundTextureTarget = 0;
|
| uint32_t m_mostRecentlyWaitedSyncToken = 0;
|
| + HashMap<WebGLId, IntSize> m_textureSizes;
|
| + WGC3Dbyte m_currentMailboxByte = 0;
|
| + IntSize m_mostRecentlyProducedSize;
|
| + bool m_allowImageChromium = true;
|
| };
|
|
|
| class WebGraphicsContext3DForTests : public MockWebGraphicsContext3D {
|
| public:
|
| WebGraphicsContext3DForTests(PassOwnPtr<GLES2InterfaceForTests> contextGL)
|
| - : m_currentMailboxByte(0)
|
| - , m_currentImageId(1)
|
| - , m_allowImageChromium(true)
|
| + : m_currentImageId(1)
|
| , m_contextGL(std::move(contextGL))
|
| {
|
| }
|
| @@ -121,29 +149,10 @@ public:
|
| 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_contextGL->boundTexture(), IntSize(width, height));
|
| + m_contextGL->textureSizes().set(m_contextGL->boundTexture(), IntSize(width, height));
|
| }
|
| }
|
|
|
| - void genMailboxCHROMIUM(WGC3Dbyte* mailbox) override
|
| - {
|
| - ++m_currentMailboxByte;
|
| - WebExternalTextureMailbox temp;
|
| - memset(mailbox, m_currentMailboxByte, sizeof(temp.name));
|
| - }
|
| -
|
| - void produceTextureDirectCHROMIUM(WebGLId texture, WGC3Denum target, const WGC3Dbyte* mailbox) override
|
| - {
|
| - ASSERT_EQ(target, drawingBufferTextureTarget(m_allowImageChromium));
|
| - ASSERT_TRUE(m_textureSizes.contains(texture));
|
| - m_mostRecentlyProducedSize = m_textureSizes.get(texture);
|
| - }
|
| -
|
| - IntSize mostRecentlyProducedSize()
|
| - {
|
| - return m_mostRecentlyProducedSize;
|
| - }
|
| -
|
| bool genSyncTokenCHROMIUM(WGC3Duint64 fenceSync, WGC3Dbyte* syncToken) override
|
| {
|
| memcpy(syncToken, &fenceSync, sizeof(fenceSync));
|
| @@ -152,7 +161,7 @@ public:
|
|
|
| WGC3Duint createGpuMemoryBufferImageCHROMIUM(WGC3Dsizei width, WGC3Dsizei height, WGC3Denum internalformat, WGC3Denum usage) override
|
| {
|
| - if (!m_allowImageChromium)
|
| + if (!m_contextGL->allowImageChromium())
|
| return false;
|
| m_imageSizes.set(m_currentImageId, IntSize(width, height));
|
| return m_currentImageId++;
|
| @@ -172,7 +181,7 @@ public:
|
| void bindTexImage2DCHROMIUM(WGC3Denum target, WGC3Dint imageId)
|
| {
|
| if (target == imageTextureTarget()) {
|
| - m_textureSizes.set(m_contextGL->boundTexture(), m_imageSizes.find(imageId)->value);
|
| + m_contextGL->textureSizes().set(m_contextGL->boundTexture(), m_imageSizes.find(imageId)->value);
|
| m_imageToTextureMap.set(imageId, m_contextGL->boundTexture());
|
| bindTexImage2DMock(imageId);
|
| }
|
| @@ -193,14 +202,15 @@ public:
|
| return m_contextGL->mostRecentlyWaitedSyncToken();
|
| }
|
|
|
| - WGC3Duint nextImageIdToBeCreated()
|
| + IntSize mostRecentlyProducedSize()
|
| {
|
| - return m_currentImageId;
|
| + return m_contextGL->mostRecentlyProducedSize();
|
| }
|
|
|
| - void setAllowImageChromium(bool allow)
|
| +
|
| + WGC3Duint nextImageIdToBeCreated()
|
| {
|
| - m_allowImageChromium = allow;
|
| + return m_currentImageId;
|
| }
|
|
|
| gpu::gles2::GLES2Interface* getGLES2Interface() override
|
| @@ -209,13 +219,9 @@ public:
|
| }
|
|
|
| private:
|
| - HashMap<WebGLId, IntSize> m_textureSizes;
|
| - WGC3Dbyte m_currentMailboxByte;
|
| - IntSize m_mostRecentlyProducedSize;
|
| WGC3Duint m_currentImageId;
|
| HashMap<WGC3Duint, IntSize> m_imageSizes;
|
| HashMap<WGC3Duint, WebGLId> m_imageToTextureMap;
|
| - bool m_allowImageChromium;
|
| OwnPtr<GLES2InterfaceForTests> m_contextGL;
|
| };
|
|
|
| @@ -599,6 +605,21 @@ public:
|
| return GL_FRAMEBUFFER_COMPLETE;
|
| }
|
|
|
| + void GetIntegerv(GLenum ptype, GLint* value) override
|
| + {
|
| + switch (ptype) {
|
| + case GL_DEPTH_BITS:
|
| + *value = (m_depthAttachment || m_depthStencilAttachment) ? 24 : 0;
|
| + return;
|
| + case GL_STENCIL_BITS:
|
| + *value = (m_stencilAttachment || m_depthStencilAttachment) ? 8 : 0;
|
| + return;
|
| + case GL_MAX_TEXTURE_SIZE:
|
| + *value = 1024;
|
| + return;
|
| + }
|
| + }
|
| +
|
| uint32_t stencilAttachment() const { return m_stencilAttachment; }
|
| uint32_t depthAttachment() const { return m_depthAttachment; }
|
| uint32_t depthStencilAttachment() const { return m_depthStencilAttachment; }
|
| @@ -632,19 +653,6 @@ public:
|
| return ++m_nextRenderBufferId;
|
| }
|
|
|
| - void getIntegerv(WGC3Denum ptype, WGC3Dint* value) override
|
| - {
|
| - switch (ptype) {
|
| - case GL_DEPTH_BITS:
|
| - *value = (depthAttachment() || depthStencilAttachment()) ? 24 : 0;
|
| - return;
|
| - case GL_STENCIL_BITS:
|
| - *value = (stencilAttachment() || depthStencilAttachment()) ? 8 : 0;
|
| - return;
|
| - }
|
| - MockWebGraphicsContext3D::getIntegerv(ptype, value);
|
| - }
|
| -
|
| gpu::gles2::GLES2Interface* getGLES2Interface() override { return &m_contextGL; }
|
|
|
| private:
|
| @@ -746,9 +754,9 @@ protected:
|
| void SetUp() override
|
| {
|
| OwnPtr<GLES2InterfaceForTests> gl = adoptPtr(new GLES2InterfaceForTests);
|
| + gl->setAllowImageChromium(false);
|
| m_gl = gl.get();
|
| OwnPtr<WebGraphicsContext3DForTests> context = adoptPtr(new WebGraphicsContext3DForTests(gl.release()));
|
| - context->setAllowImageChromium(false);
|
| m_context = context.get();
|
| RuntimeEnabledFeatures::setWebGLImageChromiumEnabled(true);
|
| m_drawingBuffer = DrawingBufferForTests::create(context.release(), m_gl,
|
|
|