Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 1bce7e57fc29e682b95cfa4b27114ed6b1f4be94
      
https://github.com/WebKit/WebKit/commit/1bce7e57fc29e682b95cfa4b27114ed6b1f4be94
  Author: Kimmo Kinnunen <kkinnu...@apple.com>
  Date:   2023-08-15 (Tue, 15 Aug 2023)

  Changed paths:
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.order
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/html/canvas/EXTDisjointTimerQuery.cpp
    M Source/WebCore/html/canvas/OESVertexArrayObject.cpp
    M Source/WebCore/html/canvas/WebGL2RenderingContext.cpp
    M Source/WebCore/html/canvas/WebGLBuffer.cpp
    M Source/WebCore/html/canvas/WebGLBuffer.h
    R Source/WebCore/html/canvas/WebGLContextGroup.cpp
    R Source/WebCore/html/canvas/WebGLContextGroup.h
    R Source/WebCore/html/canvas/WebGLContextObject.cpp
    R Source/WebCore/html/canvas/WebGLContextObject.h
    M Source/WebCore/html/canvas/WebGLFramebuffer.cpp
    M Source/WebCore/html/canvas/WebGLFramebuffer.h
    M Source/WebCore/html/canvas/WebGLObject.cpp
    M Source/WebCore/html/canvas/WebGLObject.h
    M Source/WebCore/html/canvas/WebGLProgram.cpp
    M Source/WebCore/html/canvas/WebGLProgram.h
    M Source/WebCore/html/canvas/WebGLQuery.cpp
    M Source/WebCore/html/canvas/WebGLQuery.h
    M Source/WebCore/html/canvas/WebGLRenderbuffer.cpp
    M Source/WebCore/html/canvas/WebGLRenderbuffer.h
    M Source/WebCore/html/canvas/WebGLRenderingContext.cpp
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
    M Source/WebCore/html/canvas/WebGLRenderingContextBase.h
    M Source/WebCore/html/canvas/WebGLSampler.cpp
    M Source/WebCore/html/canvas/WebGLSampler.h
    M Source/WebCore/html/canvas/WebGLShader.cpp
    M Source/WebCore/html/canvas/WebGLShader.h
    R Source/WebCore/html/canvas/WebGLSharedObject.cpp
    R Source/WebCore/html/canvas/WebGLSharedObject.h
    M Source/WebCore/html/canvas/WebGLSync.cpp
    M Source/WebCore/html/canvas/WebGLSync.h
    M Source/WebCore/html/canvas/WebGLTexture.cpp
    M Source/WebCore/html/canvas/WebGLTexture.h
    M Source/WebCore/html/canvas/WebGLTimerQueryEXT.cpp
    M Source/WebCore/html/canvas/WebGLTimerQueryEXT.h
    M Source/WebCore/html/canvas/WebGLTransformFeedback.cpp
    M Source/WebCore/html/canvas/WebGLTransformFeedback.h
    M Source/WebCore/html/canvas/WebGLVertexArrayObject.cpp
    M Source/WebCore/html/canvas/WebGLVertexArrayObjectBase.cpp
    M Source/WebCore/html/canvas/WebGLVertexArrayObjectBase.h
    M Source/WebCore/platform/graphics/GraphicsContextGLAttributes.h
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in

  Log Message:
  -----------
  WebGL has unfinished context sharing feature
https://bugs.webkit.org/show_bug.cgi?id=260062
rdar://113735088

Reviewed by Dan Glastonbury.

WebGL rendering context code was organized as if multiple contexts could
share the same objects via the context group. This was feature never
fully specified due to technical difficulties and never implemented.
The objects always belong to a single context.

The partial support makes the code overly complex. This commit removes
the feature.

Remove WebGLContextObject, WebGLSharedObject subclasses. Just have one
WebGLObject base class for the rendering context subobjects.

The rendering context held the subobjects in two lists:
 - Context object list in WebGLRenderingContextBase
 - Shared object list in WebGLContextGroup

The purpose of these lists were:
 1. Destroy the underlying GL objects when the rendering context
    is destroyed.
 2. Mark the subobjects as detached when the owning rendering context is
    lost.

Maintaining these lists is more a bit complex than current code leads
to believe. Upon failure to allocate the underlying GL object, the
subobject creation should fail and then the list append skipped.
The creation failure is not handled correctly. To simplify the upcoming
fix, just remove the lists altogether.

Instead of lists, just represent the subobject <-> rendering context
link via WeakPtr. Instead of traversing the lists upon destruction
and context loss, invalidate the weak pointers by revoking. This
changes the behavior of case 1., where before the underlying GL objects
were destroyed and now just abandoned. This is as intended, since
the GL context is being destroyed and this takes care of all the
underlying GL objects directly.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.order:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/canvas/EXTDisjointTimerQuery.cpp:
(WebCore::EXTDisjointTimerQuery::createQueryEXT):
(WebCore::EXTDisjointTimerQuery::deleteQueryEXT):
(WebCore::EXTDisjointTimerQuery::isQueryEXT):
* Source/WebCore/html/canvas/OESVertexArrayObject.cpp:
(WebCore::OESVertexArrayObject::createVertexArrayOES):
(WebCore::OESVertexArrayObject::deleteVertexArrayOES):
(WebCore::OESVertexArrayObject::isVertexArrayOES):
* Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::initializeVertexArrayObjects):
(WebCore::WebGL2RenderingContext::createQuery):
(WebCore::WebGL2RenderingContext::isQuery):
(WebCore::WebGL2RenderingContext::createSampler):
(WebCore::WebGL2RenderingContext::isSampler):
(WebCore::WebGL2RenderingContext::fenceSync):
(WebCore::WebGL2RenderingContext::isSync):
(WebCore::WebGL2RenderingContext::createTransformFeedback):
(WebCore::WebGL2RenderingContext::deleteTransformFeedback):
(WebCore::WebGL2RenderingContext::isTransformFeedback):
(WebCore::WebGL2RenderingContext::createVertexArray):
(WebCore::WebGL2RenderingContext::deleteVertexArray):
(WebCore::WebGL2RenderingContext::isVertexArray):
(WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter):
* Source/WebCore/html/canvas/WebGLBuffer.cpp:
(WebCore::WebGLBuffer::WebGLBuffer):
(WebCore::WebGLBuffer::~WebGLBuffer):
* Source/WebCore/html/canvas/WebGLBuffer.h:
* Source/WebCore/html/canvas/WebGLContextGroup.cpp: Removed.
* Source/WebCore/html/canvas/WebGLContextGroup.h: Removed.
* Source/WebCore/html/canvas/WebGLContextObject.cpp: Removed.
* Source/WebCore/html/canvas/WebGLContextObject.h: Removed.
* Source/WebCore/html/canvas/WebGLFramebuffer.cpp:
(WebCore::WebGLFramebuffer::WebGLFramebuffer):
(WebCore::WebGLFramebuffer::getAttachmentObject const):
(WebCore::WebGLFramebuffer::removeAttachmentFromBoundFramebuffer):
* Source/WebCore/html/canvas/WebGLFramebuffer.h:
* Source/WebCore/html/canvas/WebGLObject.cpp:
(WebCore::WebGLObject::WebGLObject):
(WebCore::WebGLObject::objectGraphLockForContext):
(WebCore::WebGLObject::graphicsContextGL const):
(WebCore::WebGLObject::deleteObject):
* Source/WebCore/html/canvas/WebGLObject.h:
(WebCore::WebGLObject::context const):
(WebCore::WebGLObject::validate const):
(WebCore::WebGLObject::isRenderbuffer const):
(WebCore::WebGLObject::isTexture const):
* Source/WebCore/html/canvas/WebGLProgram.cpp:
(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::~WebGLProgram):
(WebCore::WebGLProgram::cacheInfoIfNeeded):
* Source/WebCore/html/canvas/WebGLProgram.h:
* Source/WebCore/html/canvas/WebGLQuery.cpp:
(WebCore::WebGLQuery::~WebGLQuery):
(WebCore::WebGLQuery::WebGLQuery):
* Source/WebCore/html/canvas/WebGLQuery.h:
* Source/WebCore/html/canvas/WebGLRenderbuffer.cpp:
(WebCore::WebGLRenderbuffer::~WebGLRenderbuffer):
(WebCore::WebGLRenderbuffer::WebGLRenderbuffer):
* Source/WebCore/html/canvas/WebGLRenderbuffer.h:
* Source/WebCore/html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::initializeVertexArrayObjects):
* Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::createBuffer):
(WebCore::WebGLRenderingContextBase::createFramebuffer):
(WebCore::WebGLRenderingContextBase::createTexture):
(WebCore::WebGLRenderingContextBase::createProgram):
(WebCore::WebGLRenderingContextBase::createRenderbuffer):
(WebCore::WebGLRenderingContextBase::createShader):
(WebCore::WebGLRenderingContextBase::deleteObject):
(WebCore::WebGLRenderingContextBase::validateWebGLObject):
(WebCore::WebGLRenderingContextBase::validateWebGLProgramOrShader):
(WebCore::WebGLRenderingContextBase::isBuffer):
(WebCore::WebGLRenderingContextBase::isFramebuffer):
(WebCore::WebGLRenderingContextBase::isProgram):
(WebCore::WebGLRenderingContextBase::isRenderbuffer):
(WebCore::WebGLRenderingContextBase::isShader):
(WebCore::WebGLRenderingContextBase::isTexture):
(WebCore::WebGLRenderingContextBase::forceLostContext):
(WebCore::WebGLRenderingContextBase::createRefForContextObject):
(WebCore::WebGLRenderingContextBase::detachAndRemoveAllObjects):
(WebCore::WebGLRenderingContextBase::loseContextImpl): Deleted.
(WebCore::WebGLRenderingContextBase::removeSharedObject): Deleted.
(WebCore::WebGLRenderingContextBase::addSharedObject): Deleted.
(WebCore::WebGLRenderingContextBase::removeContextObject): Deleted.
(WebCore::WebGLRenderingContextBase::addContextObject): Deleted.
* Source/WebCore/html/canvas/WebGLRenderingContextBase.h:
(WebCore::WebGLRenderingContextBase::graphicsContextGL const):
(WebCore::WebGLRenderingContextBase::contextGroup const): Deleted.
* Source/WebCore/html/canvas/WebGLSampler.cpp:
(WebCore::WebGLSampler::~WebGLSampler):
(WebCore::WebGLSampler::WebGLSampler):
* Source/WebCore/html/canvas/WebGLSampler.h:
* Source/WebCore/html/canvas/WebGLShader.cpp:
(WebCore::WebGLShader::WebGLShader):
(WebCore::WebGLShader::~WebGLShader):
* Source/WebCore/html/canvas/WebGLShader.h:
* Source/WebCore/html/canvas/WebGLSharedObject.cpp: Removed.
* Source/WebCore/html/canvas/WebGLSharedObject.h: Removed.
* Source/WebCore/html/canvas/WebGLSync.cpp:
(WebCore::WebGLSync::~WebGLSync):
(WebCore::WebGLSync::WebGLSync):
* Source/WebCore/html/canvas/WebGLSync.h:
* Source/WebCore/html/canvas/WebGLTexture.cpp:
(WebCore::WebGLTexture::WebGLTexture):
(WebCore::WebGLTexture::~WebGLTexture):
* Source/WebCore/html/canvas/WebGLTexture.h:
* Source/WebCore/html/canvas/WebGLTimerQueryEXT.cpp:
(WebCore::WebGLTimerQueryEXT::WebGLTimerQueryEXT):
* Source/WebCore/html/canvas/WebGLTimerQueryEXT.h:
* Source/WebCore/html/canvas/WebGLTransformFeedback.cpp:
(WebCore::WebGLTransformFeedback::~WebGLTransformFeedback):
(WebCore::WebGLTransformFeedback::WebGLTransformFeedback):
* Source/WebCore/html/canvas/WebGLTransformFeedback.h:
* Source/WebCore/html/canvas/WebGLVertexArrayObject.cpp:
* Source/WebCore/html/canvas/WebGLVertexArrayObjectBase.cpp:
(WebCore::WebGLVertexArrayObjectBase::WebGLVertexArrayObjectBase):
* Source/WebCore/html/canvas/WebGLVertexArrayObjectBase.h:
* Source/WebCore/platform/graphics/GraphicsContextGLAttributes.h:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

Canonical link: https://commits.webkit.org/266910@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to