WebKit Bugzilla
Attachment 347703 Details for
Bug 188812
: WebGL 2 conformance: framebuffer-test
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188812-20180821144601.patch (text/plain), 21.31 KB, created by
Justin Fan
on 2018-08-21 14:46:02 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Justin Fan
Created:
2018-08-21 14:46:02 PDT
Size:
21.31 KB
patch
obsolete
>Subversion Revision: 235007 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 8fb28801f4f7777299f1b51ba15ced73ac1bb73f..ff947acae6197862c03ac91d2b56de0fe9dcdbde 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,42 @@ >+2018-08-21 Justin Fan <justin_fan@apple.com> >+ >+ WebGL 2 conformance: framebuffer-test >+ https://bugs.webkit.org/show_bug.cgi?id=188812 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Update WebGL 2 implementation to handle READ_FRAMEBUFFER and default framebuffer conformance. Also taking this >+ chance to fix memory leak in PlatformScreenMac/gpuIDForDisplayMask(). >+ >+ Covered by existing WebGL tests as well as newly-enabled webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html. >+ >+ * html/canvas/WebGL2RenderingContext.cpp: >+ (WebCore::WebGL2RenderingContext::blitFramebuffer): >+ (WebCore::WebGL2RenderingContext::framebufferTextureLayer): >+ (WebCore::validateDefaultFramebufferAttachment): >+ (WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter): >+ (WebCore::WebGL2RenderingContext::validateFramebufferFuncParameters): >+ (WebCore::WebGL2RenderingContext::validateFramebufferTarget): >+ (WebCore::WebGL2RenderingContext::validateNonDefaultFramebufferAttachment): >+ (WebCore::WebGL2RenderingContext::getParameter): >+ * html/canvas/WebGL2RenderingContext.h: >+ * html/canvas/WebGLFramebuffer.cpp: >+ (WebCore::WebGLFramebuffer::isBound const): >+ * html/canvas/WebGLRenderingContextBase.cpp: >+ (WebCore::WebGLRenderingContextBase::initializeNewContext): >+ (WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase): >+ (WebCore::WebGLRenderingContextBase::bindFramebuffer): >+ (WebCore::WebGLRenderingContextBase::checkFramebufferStatus): >+ (WebCore::WebGLRenderingContextBase::deleteFramebuffer): >+ (WebCore::WebGLRenderingContextBase::framebufferRenderbuffer): >+ (WebCore::WebGLRenderingContextBase::framebufferTexture2D): >+ * html/canvas/WebGLRenderingContextBase.h: >+ * platform/graphics/GraphicsContext3D.h: >+ * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: >+ (WebCore::GraphicsContext3D::blitFramebuffer): >+ * platform/mac/PlatformScreenMac.mm: >+ (WebCore::gpuIDForDisplayMask): >+ > 2018-08-17 Aditya Keerthi <akeerthi@apple.com> > > [Datalist][iOS] Display suggestions for input[type=color] >diff --git a/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp b/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp >index b87f9fdfcd694be9c971a79b709d2725006aa7e4..e0a5eaad158fdfaecd556ac5415f18929eac578b 100644 >--- a/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp >+++ b/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp >@@ -1178,24 +1178,67 @@ std::optional<Vector<String>> WebGL2RenderingContext::getSupportedExtensions() > return result; > } > >+static bool validateDefaultFramebufferAttachment(GC3Denum& attachment) >+{ >+ switch (attachment) { >+ case GraphicsContext3D::BACK: >+#if USE(OPENGL) >+ // On non-ES platforms, we must emulate the BACK buffer attachment with COLOR_ATTACHMENT0 for the default framebuffer. >+ attachment = GraphicsContext3D::COLOR_ATTACHMENT0; >+ return true; >+#endif >+ case GraphicsContext3D::DEPTH: >+ case GraphicsContext3D::STENCIL: >+ return true; >+ } >+ >+ return false; >+} >+ > WebGLAny WebGL2RenderingContext::getFramebufferAttachmentParameter(GC3Denum target, GC3Denum attachment, GC3Denum pname) > { >- if (isContextLostOrPending() || !validateFramebufferFuncParameters("getFramebufferAttachmentParameter", target, attachment)) >- return nullptr; >- >- if (!m_framebufferBinding || !m_framebufferBinding->object()) { >- synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, "getFramebufferAttachmentParameter", "no framebuffer bound"); >+ const char* functionName = "getFramebufferAttachmentParameter"; >+ if (isContextLostOrPending() || !validateFramebufferTarget(functionName, target)) > return nullptr; >+ >+ auto targetFramebuffer = (target == GraphicsContext3D::READ_FRAMEBUFFER) ? m_readFramebufferBinding : m_framebufferBinding; >+ >+ if (!targetFramebuffer) { >+ // Open GL ES 3: Default framebuffer is bound. >+ if (!validateDefaultFramebufferAttachment(attachment)) { >+ synthesizeGLError(GraphicsContext3D::INVALID_ENUM, functionName, "invalid attachment"); >+ return nullptr; >+ } >+ GC3Dint value = 0; >+ m_context->getFramebufferAttachmentParameteriv(target, attachment, pname, &value); >+ return value; > } >- >- auto object = makeRefPtr(m_framebufferBinding->getAttachmentObject(attachment)); >+ if (!validateNonDefaultFramebufferAttachment(functionName, attachment)) >+ return nullptr; >+ >+ auto object = makeRefPtr(targetFramebuffer->getAttachmentObject(attachment)); > if (!object) { > if (pname == GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) > return static_cast<unsigned>(GraphicsContext3D::NONE); >- // OpenGL ES 2.0 specifies INVALID_ENUM in this case, while desktop GL specifies INVALID_OPERATION. >- synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name"); >+ synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, functionName, "invalid parameter name"); > return nullptr; > } >+ >+ switch (pname) { >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_RED_SIZE: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: >+ case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: { >+ GC3Dint value = 0; >+ m_context->getFramebufferAttachmentParameteriv(target, attachment, pname, &value); >+ return value; >+ } >+ } > > if (object->isTexture()) { > switch (pname) { >@@ -1203,15 +1246,13 @@ WebGLAny WebGL2RenderingContext::getFramebufferAttachmentParameter(GC3Denum targ > return static_cast<unsigned>(GraphicsContext3D::TEXTURE); > case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: > return makeRefPtr(reinterpret_cast<WebGLTexture&>(*object)); >- case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: >- case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: > case GraphicsContext3D::FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: { > GC3Dint value = 0; > m_context->getFramebufferAttachmentParameteriv(target, attachment, pname, &value); > return value; > } > default: >- synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name for texture attachment"); >+ synthesizeGLError(GraphicsContext3D::INVALID_ENUM, functionName, "invalid parameter name for texture attachment"); > return nullptr; > } > } else { >@@ -1233,7 +1274,7 @@ WebGLAny WebGL2RenderingContext::getFramebufferAttachmentParameter(GC3Denum targ > return static_cast<unsigned>(GraphicsContext3D::LINEAR); > } > default: >- synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name for renderbuffer attachment"); >+ synthesizeGLError(GraphicsContext3D::INVALID_ENUM, functionName, "invalid parameter name for renderbuffer attachment"); > return nullptr; > } > } >@@ -1241,10 +1282,24 @@ WebGLAny WebGL2RenderingContext::getFramebufferAttachmentParameter(GC3Denum targ > > bool WebGL2RenderingContext::validateFramebufferFuncParameters(const char* functionName, GC3Denum target, GC3Denum attachment) > { >- if (target != GraphicsContext3D::FRAMEBUFFER) { >- synthesizeGLError(GraphicsContext3D::INVALID_ENUM, functionName, "invalid target"); >- return false; >+ return validateFramebufferTarget(functionName, target) && validateNonDefaultFramebufferAttachment(functionName, attachment); >+} >+ >+bool WebGL2RenderingContext::validateFramebufferTarget(const char* functionName, GC3Denum target) >+{ >+ switch (target) { >+ case GraphicsContext3D::FRAMEBUFFER: >+ case GraphicsContext3D::DRAW_FRAMEBUFFER: >+ case GraphicsContext3D::READ_FRAMEBUFFER: >+ return true; > } >+ >+ synthesizeGLError(GraphicsContext3D::INVALID_ENUM, functionName, "invalid target"); >+ return false; >+} >+ >+bool WebGL2RenderingContext::validateNonDefaultFramebufferAttachment(const char* functionName, GC3Denum attachment) >+{ > switch (attachment) { > case GraphicsContext3D::DEPTH_ATTACHMENT: > case GraphicsContext3D::STENCIL_ATTACHMENT: >@@ -1253,9 +1308,10 @@ bool WebGL2RenderingContext::validateFramebufferFuncParameters(const char* funct > default: > if (attachment >= GraphicsContext3D::COLOR_ATTACHMENT0 && attachment < static_cast<GC3Denum>(GraphicsContext3D::COLOR_ATTACHMENT0 + getMaxColorAttachments())) > return true; >- synthesizeGLError(GraphicsContext3D::INVALID_ENUM, functionName, "invalid attachment"); >- return false; > } >+ >+ synthesizeGLError(GraphicsContext3D::INVALID_ENUM, functionName, "invalid attachment"); >+ return false; > } > > GC3Dint WebGL2RenderingContext::getMaxDrawBuffers() >@@ -1772,6 +1828,7 @@ WebGLAny WebGL2RenderingContext::getParameter(GC3Denum pname) > case GraphicsContext3D::TEXTURE_BINDING_2D_ARRAY: > case GraphicsContext3D::TEXTURE_BINDING_3D: > case GraphicsContext3D::READ_FRAMEBUFFER_BINDING: >+ return m_readFramebufferBinding; > case GraphicsContext3D::TRANSFORM_FEEDBACK_BUFFER_BINDING: > case GraphicsContext3D::UNIFORM_BUFFER_BINDING: > synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "getParameter", "parameter name not yet supported"); >diff --git a/Source/WebCore/html/canvas/WebGL2RenderingContext.h b/Source/WebCore/html/canvas/WebGL2RenderingContext.h >index 655285d118e5ad51abf23ac6f381a88dc52847a3..2f85d1a992cf793d0ba2fe5fb898c05259c068f9 100644 >--- a/Source/WebCore/html/canvas/WebGL2RenderingContext.h >+++ b/Source/WebCore/html/canvas/WebGL2RenderingContext.h >@@ -217,6 +217,8 @@ private: > bool validateBlendEquation(const char* functionName, GC3Denum mode) final; > bool validateCapability(const char* functionName, GC3Denum cap) final; > bool validateFramebufferFuncParameters(const char* functionName, GC3Denum target, GC3Denum attachment) final; >+ bool validateFramebufferTarget(const char* functionName, GC3Denum target); >+ bool validateNonDefaultFramebufferAttachment(const char* functionName, GC3Denum attachment); > > GC3Denum baseInternalFormatFromInternalFormat(GC3Denum internalformat); > bool isIntegerFormat(GC3Denum internalformat); >diff --git a/Source/WebCore/html/canvas/WebGLFramebuffer.cpp b/Source/WebCore/html/canvas/WebGLFramebuffer.cpp >index 6ada33ca1fe037f8308413a5e07e12898091f42e..02749ef359e436e824572e09f46716c62af7fbf1 100644 >--- a/Source/WebCore/html/canvas/WebGLFramebuffer.cpp >+++ b/Source/WebCore/html/canvas/WebGLFramebuffer.cpp >@@ -586,7 +586,7 @@ bool WebGLFramebuffer::initializeAttachments(GraphicsContext3D* g3d, const char* > > bool WebGLFramebuffer::isBound() const > { >- return (context()->m_framebufferBinding.get() == this); >+ return (context()->m_framebufferBinding.get() == this) || (context()->m_readFramebufferBinding.get() == this); > } > > void WebGLFramebuffer::drawBuffers(const Vector<GC3Denum>& bufs) >diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp b/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp >index cdef7cc1c69a9f52e769cb5ca49698baa9cc076a..e262293e861356245500c5ea28652305117a36e9 100644 >--- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp >+++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp >@@ -744,6 +744,7 @@ void WebGLRenderingContextBase::initializeNewContext() > m_boundArrayBuffer = nullptr; > m_currentProgram = nullptr; > m_framebufferBinding = nullptr; >+ m_readFramebufferBinding = nullptr; > m_renderbufferBinding = nullptr; > m_depthMask = true; > m_stencilEnabled = false; >@@ -873,6 +874,7 @@ WebGLRenderingContextBase::~WebGLRenderingContextBase() > m_vertexAttrib0Buffer = nullptr; > m_currentProgram = nullptr; > m_framebufferBinding = nullptr; >+ m_readFramebufferBinding = nullptr; > m_renderbufferBinding = nullptr; > > for (auto& textureUnit : m_textureUnits) { >@@ -1264,11 +1266,29 @@ void WebGLRenderingContextBase::bindFramebuffer(GC3Denum target, WebGLFramebuffe > return; > if (deleted) > buffer = 0; >- if (target != GraphicsContext3D::FRAMEBUFFER) { >+ >+ bool success = false; >+ >+ if (target == GraphicsContext3D::FRAMEBUFFER >+#if ENABLE(WEBGL2) >+ || (isWebGL2() && target == GraphicsContext3D::DRAW_FRAMEBUFFER) >+#endif >+ ) { >+ m_framebufferBinding = buffer; >+ success = true; >+ } >+#if ENABLE(WEBGL2) >+ if (isWebGL2() && (target == GraphicsContext3D::FRAMEBUFFER || target == GraphicsContext3D::READ_FRAMEBUFFER)) { >+ m_readFramebufferBinding = buffer; >+ success = true; >+ } >+#endif >+ >+ if (!success) { > synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "bindFramebuffer", "invalid target"); > return; > } >- m_framebufferBinding = buffer; >+ > m_context->bindFramebuffer(target, objectOrZero(buffer)); > if (buffer) > buffer->setHasEverBeenBound(); >@@ -1463,13 +1483,22 @@ GC3Denum WebGLRenderingContextBase::checkFramebufferStatus(GC3Denum target) > if (isContextLostOrPending()) > return GraphicsContext3D::FRAMEBUFFER_UNSUPPORTED; > if (target != GraphicsContext3D::FRAMEBUFFER) { >- synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "checkFramebufferStatus", "invalid target"); >- return 0; >+#if ENABLE(WEBGL2) >+ if (isWebGL2() && target != GraphicsContext3D::DRAW_FRAMEBUFFER && target != GraphicsContext3D::READ_FRAMEBUFFER) { >+#endif >+ synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "checkFramebufferStatus", "invalid target"); >+ return 0; >+#if ENABLE(WEBGL2) >+ } >+#endif > } >- if (!m_framebufferBinding || !m_framebufferBinding->object()) >+ >+ auto targetFramebuffer = (target == GraphicsContext3D::READ_FRAMEBUFFER) ? m_readFramebufferBinding : m_framebufferBinding; >+ >+ if (!targetFramebuffer || !targetFramebuffer->object()) > return GraphicsContext3D::FRAMEBUFFER_COMPLETE; > const char* reason = "framebuffer incomplete"; >- GC3Denum result = m_framebufferBinding->checkStatus(&reason); >+ GC3Denum result = targetFramebuffer->checkStatus(&reason); > if (result != GraphicsContext3D::FRAMEBUFFER_COMPLETE) { > String str = "WebGL: checkFramebufferStatus:" + String(reason); > printToConsole(MessageLevel::Warning, str); >@@ -1794,9 +1823,20 @@ void WebGLRenderingContextBase::deleteFramebuffer(WebGLFramebuffer* framebuffer) > { > if (!deleteObject(framebuffer)) > return; >+#if ENABLE(WEBGL2) >+ if (isWebGL2() && framebuffer == m_readFramebufferBinding) { >+ m_readFramebufferBinding = nullptr; >+ m_context->bindFramebuffer(GraphicsContext3D::READ_FRAMEBUFFER, 0); >+ } >+#endif > if (framebuffer == m_framebufferBinding) { > m_framebufferBinding = nullptr; >- m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, 0); >+#if ENABLE(WEBGL2) >+ if (isWebGL2()) >+ m_context->bindFramebuffer(GraphicsContext3D::DRAW_FRAMEBUFFER, 0); >+ else >+#endif >+ m_context->bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, 0); > } > } > >@@ -2361,10 +2401,13 @@ void WebGLRenderingContextBase::framebufferRenderbuffer(GC3Denum target, GC3Denu > synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, "framebufferRenderbuffer", "no buffer or buffer not from this context"); > return; > } >+ >+ auto targetFramebuffer = (target == GraphicsContext3D::READ_FRAMEBUFFER) ? m_readFramebufferBinding : m_framebufferBinding; >+ > // Don't allow the default framebuffer to be mutated; all current > // implementations use an FBO internally in place of the default > // FBO. >- if (!m_framebufferBinding || !m_framebufferBinding->object()) { >+ if (!targetFramebuffer || !targetFramebuffer->object()) { > synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, "framebufferRenderbuffer", "no framebuffer bound"); > return; > } >@@ -2377,7 +2420,7 @@ void WebGLRenderingContextBase::framebufferRenderbuffer(GC3Denum target, GC3Denu > default: > m_context->framebufferRenderbuffer(target, attachment, renderbuffertarget, bufferObject); > } >- m_framebufferBinding->setAttachmentForBoundFramebuffer(attachment, buffer); >+ targetFramebuffer->setAttachmentForBoundFramebuffer(attachment, buffer); > applyStencilTest(); > } > >@@ -2385,7 +2428,7 @@ void WebGLRenderingContextBase::framebufferTexture2D(GC3Denum target, GC3Denum a > { > if (isContextLostOrPending() || !validateFramebufferFuncParameters("framebufferTexture2D", target, attachment)) > return; >- if (level) { >+ if (level && isWebGL1()) { > synthesizeGLError(GraphicsContext3D::INVALID_VALUE, "framebufferTexture2D", "level not 0"); > return; > } >@@ -2393,10 +2436,13 @@ void WebGLRenderingContextBase::framebufferTexture2D(GC3Denum target, GC3Denum a > synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, "framebufferTexture2D", "no texture or texture not from this context"); > return; > } >+ >+ auto targetFramebuffer = (target == GraphicsContext3D::READ_FRAMEBUFFER) ? m_readFramebufferBinding : m_framebufferBinding; >+ > // Don't allow the default framebuffer to be mutated; all current > // implementations use an FBO internally in place of the default > // FBO. >- if (!m_framebufferBinding || !m_framebufferBinding->object()) { >+ if (!targetFramebuffer || !targetFramebuffer->object()) { > synthesizeGLError(GraphicsContext3D::INVALID_OPERATION, "framebufferTexture2D", "no framebuffer bound"); > return; > } >@@ -2415,7 +2461,7 @@ void WebGLRenderingContextBase::framebufferTexture2D(GC3Denum target, GC3Denum a > default: > m_context->framebufferTexture2D(target, attachment, textarget, textureObject, level); > } >- m_framebufferBinding->setAttachmentForBoundFramebuffer(attachment, textarget, texture, level); >+ targetFramebuffer->setAttachmentForBoundFramebuffer(attachment, textarget, texture, level); > applyStencilTest(); > } > >diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h >index cc3abc17385c6f95135f7ca2e4d23af5bf5db403..bade614df748c45373511995f37dfb5bacae94c2 100644 >--- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h >+++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h >@@ -497,6 +497,7 @@ protected: > > RefPtr<WebGLProgram> m_currentProgram; > RefPtr<WebGLFramebuffer> m_framebufferBinding; >+ RefPtr<WebGLFramebuffer> m_readFramebufferBinding; > RefPtr<WebGLRenderbuffer> m_renderbufferBinding; > struct TextureUnitState { > RefPtr<WebGLTexture> texture2DBinding; >diff --git a/Source/WebCore/platform/mac/PlatformScreenMac.mm b/Source/WebCore/platform/mac/PlatformScreenMac.mm >index b244f6d78846f4ab5a0926b7a4f9e30efcba71d1..8f77cfb9d4a3a9611929269df1015931eb933d77 100644 >--- a/Source/WebCore/platform/mac/PlatformScreenMac.mm >+++ b/Source/WebCore/platform/mac/PlatformScreenMac.mm >@@ -223,6 +223,8 @@ IORegistryGPUID gpuIDForDisplayMask(GLuint displayMask) > if (error != kCGLNoError) > return 0; > >+ CGLDestroyRendererInfo(rendererInfo); >+ > return (IORegistryGPUID) gpuIDHigh << 32 | gpuIDLow; > } > #endif // !__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 45f048a41a48d0440cbca18a435111203207d07f..ac1892f2e71c0b8f189dda9323bd74aacd03592f 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,14 @@ >+2018-08-21 Justin Fan <justin_fan@apple.com> >+ >+ WebGL 2 conformance: framebuffer-test >+ https://bugs.webkit.org/show_bug.cgi?id=188812 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Update WebGL 2 implementation to handle READ_FRAMEBUFFER and default framebuffer conformance. >+ >+ * TestExpectations: Unskipping webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html. >+ > 2018-08-17 John Wilander <wilander@apple.com> > > Resource Load Statistics: Add layout test for web workers importing cross-site scripts >diff --git a/LayoutTests/TestExpectations b/LayoutTests/TestExpectations >index e180442c05907687f7c0187ef9087d900719ac79..c2bbc36afa2ba5138e86339041c07fd1599538c0 100644 >--- a/LayoutTests/TestExpectations >+++ b/LayoutTests/TestExpectations >@@ -2059,6 +2059,7 @@ webkit.org/b/186574 media/video-buffering-allowed.html [ Pass Failure ] > webgl/2.0.0 [ Skip ] > webgl/2.0.0/conformance2/glsl3 [ Pass ] > webgl/2.0.0/conformance2/vertex_arrays [ Pass ] >+webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html [ Pass ] > > imported/w3c/web-platform-tests/css/css-display/run-in/run-in-contains-table-row-001.xht [ ImageOnlyFailure ] > imported/w3c/web-platform-tests/css/css-text-decor/text-emphasis-style-008.html [ ImageOnlyFailure ]
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188812
:
347703
|
347727
|
347734
|
347761
|
347784
|
347871
|
347882
|
347887
|
347889
|
347971