Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

[Windows] Introduce egl::Surface and egl::WindowSurface #49983

Merged
merged 1 commit into from
Jan 25, 2024

Conversation

loic-sharma
Copy link
Member

@loic-sharma loic-sharma commented Jan 23, 2024

This introduces the egl::Surface and egl::WindowSurface types to abstract a raw EGLSurface. This also removes some - but not all - EGL surface logic out from EGLManager.

Subsequent pull requests will be necessary to:

  1. Move ownership of the egl::WindowSurface from egl::Manager to FlutterWindowsView
  2. Refactor external texture's off-screen EGL surface to use egl::Surface

Part of flutter/flutter#141996

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Copy link
Contributor

@yaakovschectman yaakovschectman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@@ -14,7 +14,7 @@ namespace egl {

// An EGL context to interact with OpenGL.
//
// This enables automatic eror logging and mocking.
// This enables automatic error logging and mocking.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work catching this eror.

Copy link
Member

@cbracken cbracken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm - much cleaner. Reviewing these is a joy.

LGTM stamp from a Japanese personal seal

@loic-sharma loic-sharma added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 25, 2024
@auto-submit auto-submit bot merged commit e8213ab into flutter:main Jan 25, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jan 25, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jan 25, 2024
…142202)

flutter/engine@4880592...499ed00

2024-01-25 [email protected] Roll Skia from 3b7accdf8ed8 to 571873c31056 (1 revision) (flutter/engine#50026)
2024-01-25 [email protected] [Impeller] round up subpass coverage when it is close to (and smaller) than root pass size. (flutter/engine#49925)
2024-01-25 [email protected] Adding DDC module system targets to web SDK artifacts. (flutter/engine#47783)
2024-01-25 [email protected] [Windows] Set cursor immediately when framework requests update (flutter/engine#49784)
2024-01-25 [email protected] [Windows] Introduce `egl::Surface` and `egl::WindowSurface` (flutter/engine#49983)
2024-01-25 [email protected] Roll Skia from 588caf1ceddd to 3b7accdf8ed8 (1 revision) (flutter/engine#50025)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
@loic-sharma loic-sharma added the revert Label used to revert changes in a closed and merged pull request. label Jan 26, 2024
Copy link
Contributor

auto-submit bot commented Jan 26, 2024

Time to revert pull request flutter/engine/49983 has elapsed.
You need to open the revert manually and process as a regular pull request.

@auto-submit auto-submit bot removed the revert Label used to revert changes in a closed and merged pull request. label Jan 26, 2024
CaseyHillers pushed a commit to CaseyHillers/engine that referenced this pull request Jan 28, 2024
auto-submit bot pushed a commit that referenced this pull request Feb 1, 2024
)

# Original pull request description

This introduces the `egl::Surface` and `egl::WindowSurface` types to abstract a raw `EGLSurface`. This also removes some - but not all - EGL surface logic out from `EGLManager`.

Subsequent pull requests will be necessary to:

1. Move ownership of the `egl::WindowSurface` from `egl::Manager` to `FlutterWindowsView`
2. Refactor external texture's off-screen EGL surface to use `egl::Surface`

Part of flutter/flutter#141996

# Reland

#49983 was reverted as it introduced a crash if the render surface fails to be created even though EGL was initialized successfully.

This pull request is split into the following commits:

1. c0b11be is the original pull request unchanged
2. 1dc7813 is the fix: it checks a surface is valid before using it. This also adds several tests to prevent this kind of regression.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
affects: desktop autosubmit Merge PR when tree becomes green via auto submit App platform-windows
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants