Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5cc9e6ba6f0e23e0a3f39c43dd023c5c31ccdbb3
      
https://github.com/WebKit/WebKit/commit/5cc9e6ba6f0e23e0a3f39c43dd023c5c31ccdbb3
  Author: Mike Wyrzykowski <[email protected]>
  Date:   2026-10-01 (Thu, 01 Oct 2026)

  Changed paths:
    M Source/WebCore/Modules/WebGPU/GPUCompositorIntegration.h
    M 
Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.cpp
    M 
Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.h
    M 
Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.cpp
    M 
Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.h
    M Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUCompositorIntegration.h
    M Source/WebCore/html/canvas/GPUCanvasContextCocoa.mm
    M Source/WebCore/platform/graphics/WebGPUFramePacer.cpp
    M Source/WebCore/platform/graphics/WebGPUFramePacer.h
    M
Source/WebGPU/WebGPU/CommandBuffer.mm
    M Source/WebGPU/WebGPU/PresentationContext.h
    M Source/WebGPU/WebGPU/PresentationContext.mm
    M Source/WebGPU/WebGPU/PresentationContextIOSurface.h
    M Source/WebGPU/WebGPU/PresentationContextIOSurface.mm
    M Source/WebGPU/WebGPU/Texture.mm
    M Source/WebGPU/WebGPU/WebGPUExt.h
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.cpp
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.h
    M 
Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.messages.in
    M 
Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.cpp
    M 
Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.h
    M Tools/TestWebKitAPI/Tests/WebCore/WebGPUFramePacer.cpp

  Log Message:
  -----------
  REGRESSION (318799@main?): WebGPU frame rate permanently drops to integer 
divisions of refresh rate after a few slow
frames
https://bugs.webkit.org/show_bug.cgi?id=325095
rdar://188257377

Reviewed by Cameron McCormack.

Ensure framerate can be throttled up and not just down.

Test: Tools/TestWebKitAPI/Tests/WebCore/WebGPUFramePacer.cpp

* Source/WebCore/Modules/WebGPU/GPUCompositorIntegration.h:
(WebCore::GPUCompositorIntegration::lastFramePresentStall const):
* 
Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.cpp:
(WebCore::WebGPU::CompositorIntegrationImpl::lastFramePresentStall const):
* 
Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.h:
* 
Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.cpp:
(WebCore::WebGPU::PresentationContextImpl::lastFramePresentStall const):
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.h:
* Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUCompositorIntegration.h:
(WebCore::WebGPU::CompositorIntegration::lastFramePresentStall const):
*
Source/WebCore/html/canvas/GPUCanvasContextCocoa.mm:
(WebCore::GPUCanvasContextCocoa::updateFramePacing):
* Source/WebCore/platform/graphics/WebGPUFramePacer.cpp:
(WebCore::medianCost):
(WebCore::WebGPUFramePacer::reset):
(WebCore::WebGPUFramePacer::recordFrame):
(WebCore::WebGPUFramePacer::ladderIndexForCost const):
(WebCore::WebGPUFramePacer::stepDownForStalls):
(WebCore::WebGPUFramePacer::stepUpIfStallFree):
(WebCore::WebGPUFramePacer::preferredFramesPerSecond const):
(WebCore::WebGPUFramePacer::runController): Deleted.
* Source/WebCore/platform/graphics/WebGPUFramePacer.h:
* Source/WebGPU/WebGPU/CommandBuffer.mm:
(WebGPU::CommandBuffer::makeInvalidDueToCommit):
* Source/WebGPU/WebGPU/PresentationContext.h:
(WebGPU::PresentationContext::lastFramePresentStall const):
* Source/WebGPU/WebGPU/PresentationContext.mm:
(wgpuSurfaceGetLastFramePresentStallSeconds):
* Source/WebGPU/WebGPU/PresentationContextIOSurface.h:
*
Source/WebGPU/WebGPU/PresentationContextIOSurface.mm:
* Source/WebGPU/WebGPU/Texture.mm:
(WebGPU::Texture::recreateIfNeeded):
* Source/WebGPU/WebGPU/WebGPUExt.h:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.cpp:
(WebKit::RemoteCompositorIntegration::prepareForDisplay):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.h:
* 
Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.messages.in:
* 
Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.cpp:
(WebKit::WebGPU::RemoteCompositorIntegrationProxy::prepareForDisplay):
* 
Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.h:
* Tools/TestWebKitAPI/Tests/WebCore/WebGPUFramePacer.cpp:
(TestWebKitAPI::GPUTimeline::GPUTimeline):
(TestWebKitAPI::GPUTimeline::present):
(TestWebKitAPI::GPUTimeline::rate const):
(TestWebKitAPI::GPUTimeline::rateAfter
const):
(TestWebKitAPI::GPUTimeline::presentOnce):
(TestWebKitAPI::TEST(WebGPUFramePacer, CheapContentIsNotPaced)):
(TestWebKitAPI::TEST(WebGPUFramePacer, FullRefreshContentIsNotPaced)):
(TestWebKitAPI::TEST(WebGPUFramePacer, ConvergesTo20For45msFrames)):
(TestWebKitAPI::TEST(WebGPUFramePacer, ConvergesTo12For83msFrames)):
(TestWebKitAPI::TEST(WebGPUFramePacer, ConvergedRateIsStable)):
(TestWebKitAPI::TEST(WebGPUFramePacer, ClosedLoopDoesNotRatchet)):
(TestWebKitAPI::TEST(WebGPUFramePacer, SingleSpikeDoesNotPaceFullRateContent)):
(TestWebKitAPI::TEST(WebGPUFramePacer, SingleSpikeDoesNotStepDown)):
(TestWebKitAPI::TEST(WebGPUFramePacer, SustainedOverloadStepsDown)):
(TestWebKitAPI::TEST(WebGPUFramePacer, BurstOfSlowFramesRecovers)):
(TestWebKitAPI::TEST(WebGPUFramePacer, RecoversWhenWorkloadEases)):
(TestWebKitAPI::TEST(WebGPUFramePacer, ExpensiveFramesThatKeepUpAreNotPaced)):
(TestWebKitAPI::TEST(WebGPUFramePacer,
IdleCanvasStopsPacing)):
(TestWebKitAPI::TEST(WebGPUFramePacer, DivisorLadderFollows120HzDisplay)):
(TestWebKitAPI::TEST(WebGPUFramePacer, ResetReturnsToUnpaced)):
(TestWebKitAPI::feedFrames): Deleted.
(TestWebKitAPI::TEST(WebGPUFramePacer, NoRateBeforeWarmUp)): Deleted.
(TestWebKitAPI::TEST(WebGPUFramePacer, 
LocksInFirstRateImmediatelyAfterWarmUp)): Deleted.

Canonical link: 
https://flagged.apple.com:443/proxy?t2=DZ1c0M2yq3&o=aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMzIyNDM5QG1haW4=&emid=a9d60958-6726-41c9-b967-4fd04095a322&c=11



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

Reply via email to