[webkit-changes] [WebKit/WebKit] 035c61: OffscreenCanvas uses CanvasBase::buffer() directly

Kimmo Kinnunen noreply at github.com
Tue Jun 18 01:44:00 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 035c61acf6267e692884387c014892fda04f6bfd
      https://github.com/WebKit/WebKit/commit/035c61acf6267e692884387c014892fda04f6bfd
  Author: Kimmo Kinnunen <kkinnunen at apple.com>
  Date:   2024-06-18 (Tue, 18 Jun 2024)

  Changed paths:
    M Source/WebCore/Headers.cmake
    M Source/WebCore/SmartPointerExpectations/UncountedCallArgsCheckerExpectations
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/html/HTMLCanvasElement.cpp
    M Source/WebCore/html/HTMLCanvasElement.h
    M Source/WebCore/html/OffscreenCanvas.cpp
    M Source/WebCore/html/OffscreenCanvas.h
    M Source/WebCore/html/canvas/PlaceholderRenderingContext.cpp
    M Source/WebCore/html/canvas/PlaceholderRenderingContext.h
    M Source/WebCore/platform/SourcesNicosia.txt
    R Source/WebCore/platform/graphics/ImageBufferPipe.cpp
    R Source/WebCore/platform/graphics/ImageBufferPipe.h
    R Source/WebCore/platform/graphics/nicosia/NicosiaImageBufferPipe.cpp
    R Source/WebCore/platform/graphics/nicosia/NicosiaImageBufferPipe.h
    A Source/WebCore/platform/graphics/nicosia/NicosiaPlaceholderRenderingContextSource.cpp
    M Source/WebCore/platform/network/DNS.cpp

  Log Message:
  -----------
  OffscreenCanvas uses CanvasBase::buffer() directly
https://bugs.webkit.org/show_bug.cgi?id=275563
rdar://problem/129989623

Reviewed by Matt Woodrow.

OffscreenCanvas would use CanvasBase::buffer() to transfer the
offscreen canvas rendering to placeholder canvas.
The transfer is a draw operation from offscreen canvas and it changes
conceptually the placeholder *context*, not the placeholder canvas.

Implement this by adding PlaceholderRenderingContext::setPlaceholderBuffer().

Remove redundant ImageBufferPipe and OffscreenCanvasPlaceholderData
classes. PlaceholderRenderingContextSource is the thread-safe refcounted
interface to submit the placeholder buffer.

This is work towards making the rendering contexts be able to manage the
drawing and display buffers, by eventually removing the buffers from
CanvasBase.

* Source/WebCore/platform/graphics/nicosia/NicosiaPlaceholderRenderingContextSource.cpp: Renamed from Source/WebCore/platform/graphics/nicosia/NicosiaImageBufferPipe.cpp.
(Nicosia::NicosiaPlaceholderRenderingContextSource::NicosiaPlaceholderRenderingContextSource):
(Nicosia::NicosiaPlaceholderRenderingContextSource::~NicosiaPlaceholderRenderingContextSource):
(Nicosia::NicosiaPlaceholderRenderingContextSource::setPlaceholderBuffer):
(Nicosia::NicosiaPlaceholderRenderingContextSource::swapBuffersIfNeeded):
(Nicosia::NicosiaPlaceholderRenderingContextSource::setContentsToLayer):
(WebCore::PlaceholderRenderingContextSource::create):
* Source/WebCore/Headers.cmake:
* Source/WebCore/SmartPointerExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::transferControlToOffscreen):
* Source/WebCore/html/HTMLCanvasElement.h:
* Source/WebCore/html/OffscreenCanvas.cpp:
(WebCore::DetachedOffscreenCanvas::DetachedOffscreenCanvas):
(WebCore::DetachedOffscreenCanvas::takePlaceholderSource):
(WebCore::OffscreenCanvas::create):
(WebCore::OffscreenCanvas::OffscreenCanvas):
(WebCore::OffscreenCanvas::detach):
(WebCore::OffscreenCanvas::commitToPlaceholderCanvas):
(WebCore::OffscreenCanvas::scheduleCommitToPlaceholderCanvas):
(WebCore::OffscreenCanvasPlaceholderData::create): Deleted.
(WebCore::OffscreenCanvasPlaceholderData::placeholder const): Deleted.
(WebCore::OffscreenCanvasPlaceholderData::pipeSource const): Deleted.
(WebCore::OffscreenCanvasPlaceholderData::OffscreenCanvasPlaceholderData): Deleted.
(WebCore::DetachedOffscreenCanvas::takePlaceholderData): Deleted.
* Source/WebCore/html/OffscreenCanvas.h:
* Source/WebCore/html/canvas/PlaceholderRenderingContext.cpp:
(WebCore::PlaceholderRenderingContextSource::create):
(WebCore::PlaceholderRenderingContextSource::PlaceholderRenderingContextSource):
(WebCore::PlaceholderRenderingContextSource::setPlaceholderBuffer):
(WebCore::PlaceholderRenderingContext::create):
(WebCore::PlaceholderRenderingContext::PlaceholderRenderingContext):
(WebCore::PlaceholderRenderingContext::canvas const):
(WebCore::PlaceholderRenderingContext::size const):
(WebCore::PlaceholderRenderingContext::setContentsToLayer):
(WebCore::PlaceholderRenderingContext::setPlaceholderBuffer):
* Source/WebCore/html/canvas/PlaceholderRenderingContext.h:
* Source/WebCore/platform/SourcesNicosia.txt:
* Source/WebCore/platform/graphics/ImageBufferPipe.cpp: Removed.
* Source/WebCore/platform/graphics/ImageBufferPipe.h: Removed.
* Source/WebCore/platform/graphics/nicosia/NicosiaImageBufferPipe.h: Removed.

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list