Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d6ae2528a9f3819005e08f9d5091ceff8b880fa8 https://github.com/WebKit/WebKit/commit/d6ae2528a9f3819005e08f9d5091ceff8b880fa8 Author: Dean Jackson <d...@apple.com> Date: 2023-06-02 (Fri, 02 Jun 2023)
Changed paths: M Source/WebCore/Modules/webxr/WebXROpaqueFramebuffer.cpp M Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp M Source/WebCore/platform/graphics/GraphicsContextGL.h M Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp M Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.h M Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp Log Message: ----------- WebXR: Severe aliasing in WebXR experiences (with WebGL1 contexts) https://bugs.webkit.org/show_bug.cgi?id=256861 rdar://109424254 Reviewed by Dan Glastonbury. WebXR sessions using WebGL1 contexts are unable to turn on multisampling. I'm pretty sure this was my fault, but I can't remember if it was intentional or a mistake. Either way it is a bug. Fix this by implementing the multisample renderbuffer creation and resolution steps. Since we're doing this on a WebGL1 context, the normal API will be invalid (it requires GLES3), so call the extension API instead. This means we need to expose some extra methods on GraphicsContextGL. Lastly, the framebuffer textures we get are SRGB8_ALPHA8 which requires an extension to be enabled with a WebGL1 context when we're talking to an XR-compatible context. Similarly, we enable the extension to allow multisampled framebuffers. * Source/WebCore/Modules/webxr/WebXROpaqueFramebuffer.cpp: (WebCore::WebXROpaqueFramebuffer::endFrame): call blitFramebufferANGLE. (WebCore::WebXROpaqueFramebuffer::setupFramebuffer): Implement logic for WebGL 1. * Source/WebCore/platform/graphics/GraphicsContextGL.h: * Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp: Implement the extension API/ (WebCore::GraphicsContextGLANGLE::renderbufferStorageMultisampleANGLE): (WebCore::GraphicsContextGLANGLE::blitFramebufferANGLE): * Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.h: * Source/WebCore/platform/graphics/cocoa/GraphicsContextGLCocoa.mm: (WebCore::GraphicsContextGLCocoa::platformInitialize): Turn on the sRGB extension. * Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in: * Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLFunctionsGenerated.h: (renderbufferStorageMultisampleANGLE): (blitFramebufferANGLE): * Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxyFunctionsGenerated.cpp: (WebKit::RemoteGraphicsContextGLProxy::renderbufferStorageMultisampleANGLE): (WebKit::RemoteGraphicsContextGLProxy::blitFramebufferANGLE): Canonical link: https://commits.webkit.org/264838@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes