Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ales-drnz/flutter
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: d45d937be61
Choose a base ref
...
head repository: ales-drnz/flutter
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: impeller-vulkan-linux
Choose a head ref
  • 3 commits
  • 19 files changed
  • 3 contributors

Commits on Aug 6, 2026

  1. [linux] Pace frames off Wayland frame callbacks

    Adds FlVsyncWaiter, wiring args.vsync_callback so the engine stops using
    VsyncWaiterFallback's hardcoded 60Hz timer.
    
    NOTE: on its own this is a regression - the engine produces frames faster
    than GTK paints them, because the paint is still scheduled on GDK's frame
    clock. Kept as groundwork for a presentation path that does not go through
    gdk_cairo_draw_from_gl.
    
    Co-Authored-By: Claude Opus 5 <[email protected]>
    ales-drnz and claude committed Aug 6, 2026
    Configuration menu
    Copy the full SHA
    7a5e28b View commit details
    Browse the repository at this point in the history

Commits on Aug 9, 2026

  1. [linux] Fix vsync waiter scope, first frame, and subsurface sizing

    Follow-ups from adversarial review of the frame pacing work:
    
    - Register the engine vsync callback only for the Vulkan backend. The
      OpenGL and software paths present through GTK's paint cycle, which GDK
      caps at 60Hz for GL windows (flutter#183703); pacing production
      above presentation only renders frames that are never shown (measured:
      93 produced vs 57 presented per second on the GL path).
    
    - Add a timeout guard to the frame clock path of the vsync waiter. The
      clock does not tick while the window is unmapped, and the runner maps
      the window on the first frame, which deadlocked X11 at startup.
    
    - Declare the subsurface size from realize. GTK allocates before it
      realizes, so the initial size_allocate ran before the Vulkan manager
      existed and the wp_viewport destination was never set: under a 1.5
      fractional scale the first frame rendered 1.5x too large, overflowing
      the window until the first manual resize.
    
    - Stop committing the child surface from the platform thread in
      set_surface_size. The viewport destination is double-buffered state
      that Impeller's raster thread commits on every present; committing
      from the platform thread interleaved with the WSI's attach/commit.
    
    - Announce the first frame from the embedder's SetNextFrameCallback
      (via a new FlRenderable.notify_first_frame) instead of an idle source
      that captured the widget unsafely and fired before any frame existed.
    
    - Fix a per-call FlRenderable reference leak in the vsync waiter.
    
    - Update RendererTypeVulkanEnvVar test to the new selection behaviour,
      drop dead APIs (set_subsurface_sync, get_extent), and rewrite the
      hand-written viewporter header in plain C.
    
    Co-Authored-By: Claude Fable 5 <[email protected]>
    ales-drnz and claude committed Aug 9, 2026
    Configuration menu
    Copy the full SHA
    ae3ef46 View commit details
    Browse the repository at this point in the history
  2. [linux] Drop stray executable bit from vulkan_native_surface_linux

    Formatting hook fix only; no content change.
    
    Co-Authored-By: Claude Fable 5 <[email protected]>
    ales-drnz and claude committed Aug 9, 2026
    Configuration menu
    Copy the full SHA
    64436b0 View commit details
    Browse the repository at this point in the history
Loading