[webkit-changes] [WebKit/WebKit] 7e3bfb: [Shape Detection] Plumb ImageBitmapSource to the G...

Myles C. Maxfield noreply at github.com
Thu Apr 20 21:20:36 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7e3bfb4cf39ac035dfec7f0d4b12384f22a3d484
      https://github.com/WebKit/WebKit/commit/7e3bfb4cf39ac035dfec7f0d4b12384f22a3d484
  Author: Myles C. Maxfield <mmaxfield at apple.com>
  Date:   2023-04-20 (Thu, 20 Apr 2023)

  Changed paths:
    M Source/WebCore/Modules/ShapeDetection/BarcodeDetector.cpp
    M Source/WebCore/Modules/ShapeDetection/BarcodeDetector.h
    M Source/WebCore/Modules/ShapeDetection/BarcodeDetector.idl
    M Source/WebCore/Modules/ShapeDetection/FaceDetector.cpp
    M Source/WebCore/Modules/ShapeDetection/FaceDetector.h
    M Source/WebCore/Modules/ShapeDetection/FaceDetector.idl
    M Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/BarcodeDetectorImplementation.h
    M Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/BarcodeDetectorImplementation.mm
    M Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/FaceDetectorImplementation.h
    M Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/FaceDetectorImplementation.mm
    M Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/TextDetectorImplementation.h
    M Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/TextDetectorImplementation.mm
    M Source/WebCore/Modules/ShapeDetection/Interfaces/BarcodeDetectorInterface.h
    M Source/WebCore/Modules/ShapeDetection/Interfaces/FaceDetectorInterface.h
    M Source/WebCore/Modules/ShapeDetection/Interfaces/TextDetectorInterface.h
    M Source/WebCore/Modules/ShapeDetection/TextDetector.cpp
    M Source/WebCore/Modules/ShapeDetection/TextDetector.h
    M Source/WebCore/Modules/ShapeDetection/TextDetector.idl
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteBarcodeDetector.cpp
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteBarcodeDetector.h
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteBarcodeDetector.messages.in
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteFaceDetector.cpp
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteFaceDetector.h
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteFaceDetector.messages.in
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteTextDetector.cpp
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteTextDetector.h
    M Source/WebKit/GPUProcess/ShapeDetection/RemoteTextDetector.messages.in
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
    M Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteBarcodeDetectorProxy.cpp
    M Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteBarcodeDetectorProxy.h
    M Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteFaceDetectorProxy.cpp
    M Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteFaceDetectorProxy.h
    M Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteTextDetectorProxy.cpp
    M Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteTextDetectorProxy.h

  Log Message:
  -----------
  [Shape Detection] Plumb ImageBitmapSource to the GPU process
https://bugs.webkit.org/show_bug.cgi?id=255633
rdar://108232629

Reviewed by Dean Jackson.

This patch plumbs ImageBitmapSource to the GPU process by using the same technique as ImageBitmap uses.
When you say createImageBitmap(), what that actually does is it creates a new ImageBuffer and draws the
source object into the ImageBuffer's graphics context. The ImageBitmap is backed by the ImageBuffer.
The cool part about this is that sending the ImageBuffer to the GPU process is actually free, because
the context that draw into it is a remote context that actually performs the draw in the GPU process -
so the ImageBitmap is _already_ in the GPU process. If you want to send it to a new API call in the GPU
process, all you need to send is its identifier, and have the GPU process look it up from the
RemoteRenderingBackend.

No tests because there is no behavior change - I haven't actually hooked up the Vision framework to
actually implement any of the calls yet.

* Source/WebCore/Modules/ShapeDetection/BarcodeDetector.cpp:
(WebCore::BarcodeDetector::detect):
* Source/WebCore/Modules/ShapeDetection/BarcodeDetector.h:
* Source/WebCore/Modules/ShapeDetection/BarcodeDetector.idl:
* Source/WebCore/Modules/ShapeDetection/FaceDetector.cpp:
(WebCore::FaceDetector::detect):
* Source/WebCore/Modules/ShapeDetection/FaceDetector.h:
* Source/WebCore/Modules/ShapeDetection/FaceDetector.idl:
* Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/BarcodeDetectorImplementation.h:
* Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/BarcodeDetectorImplementation.mm:
(WebCore::ShapeDetection::BarcodeDetectorImpl::detect):
* Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/FaceDetectorImplementation.h:
* Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/FaceDetectorImplementation.mm:
(WebCore::ShapeDetection::FaceDetectorImpl::detect):
* Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/TextDetectorImplementation.h:
* Source/WebCore/Modules/ShapeDetection/Implementation/Cocoa/TextDetectorImplementation.mm:
(WebCore::ShapeDetection::TextDetectorImpl::detect):
* Source/WebCore/Modules/ShapeDetection/Interfaces/BarcodeDetectorInterface.h:
* Source/WebCore/Modules/ShapeDetection/Interfaces/FaceDetectorInterface.h:
* Source/WebCore/Modules/ShapeDetection/Interfaces/TextDetectorInterface.h:
* Source/WebCore/Modules/ShapeDetection/TextDetector.cpp:
(WebCore::TextDetector::detect):
* Source/WebCore/Modules/ShapeDetection/TextDetector.h:
* Source/WebCore/Modules/ShapeDetection/TextDetector.idl:
* Source/WebCore/html/ImageBitmap.cpp:
(WebCore::ImageBitmap::createCompletionHandler):
(WebCore::ImageBitmap::createPromise):
(WebCore::ImageBitmap::createBlankImageBuffer):
(WebCore::ImageBitmap::createFromBuffer):
(WebCore::ImageBitmap::resolveWithBlankImageBuffer): Deleted.
* Source/WebCore/html/ImageBitmap.h:
* Source/WebKit/GPUProcess/ShapeDetection/RemoteBarcodeDetector.cpp:
(WebKit::RemoteBarcodeDetector::RemoteBarcodeDetector):
(WebKit::RemoteBarcodeDetector::detect):
* Source/WebKit/GPUProcess/ShapeDetection/RemoteBarcodeDetector.h:
(WebKit::RemoteBarcodeDetector::create):
* Source/WebKit/GPUProcess/ShapeDetection/RemoteBarcodeDetector.messages.in:
* Source/WebKit/GPUProcess/ShapeDetection/RemoteFaceDetector.cpp:
(WebKit::RemoteFaceDetector::RemoteFaceDetector):
(WebKit::RemoteFaceDetector::detect):
* Source/WebKit/GPUProcess/ShapeDetection/RemoteFaceDetector.h:
(WebKit::RemoteFaceDetector::create):
* Source/WebKit/GPUProcess/ShapeDetection/RemoteFaceDetector.messages.in:
* Source/WebKit/GPUProcess/ShapeDetection/RemoteTextDetector.cpp:
(WebKit::RemoteTextDetector::RemoteTextDetector):
(WebKit::RemoteTextDetector::detect):
* Source/WebKit/GPUProcess/ShapeDetection/RemoteTextDetector.h:
(WebKit::RemoteTextDetector::create):
* Source/WebKit/GPUProcess/ShapeDetection/RemoteTextDetector.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::createRemoteBarcodeDetector):
(WebKit::RemoteRenderingBackend::createRemoteFaceDetector):
(WebKit::RemoteRenderingBackend::createRemoteTextDetector):
* Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteBarcodeDetectorProxy.cpp:
(WebKit::ShapeDetection::RemoteBarcodeDetectorProxy::detect):
* Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteBarcodeDetectorProxy.h:
* Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteFaceDetectorProxy.cpp:
(WebKit::ShapeDetection::RemoteFaceDetectorProxy::detect):
* Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteFaceDetectorProxy.h:
* Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteTextDetectorProxy.cpp:
(WebKit::ShapeDetection::RemoteTextDetectorProxy::detect):
* Source/WebKit/WebProcess/GPU/ShapeDetection/RemoteTextDetectorProxy.h:

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




More information about the webkit-changes mailing list