Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Surface API #203

Merged
merged 10 commits into from
Nov 17, 2024
Merged

Surface API #203

merged 10 commits into from
Nov 17, 2024

Conversation

kvark
Copy link
Owner

@kvark kvark commented Nov 15, 2024

Closes #82
TODO:

Begone the init_windowed method. There is only one init now. The other one is replaced by create_surface.

@kvark kvark marked this pull request as ready for review November 15, 2024 08:34
@kvark kvark changed the title Surface API, implementation in Vulkan Surface API Nov 15, 2024
@kvark kvark enabled auto-merge (rebase) November 17, 2024 08:54
@kvark kvark merged commit 2a22fc6 into main Nov 17, 2024
5 checks passed
@kvark kvark deleted the surface branch November 17, 2024 09:01
ConradIrwin added a commit to zed-industries/zed that referenced this pull request Dec 18, 2024
Closes #17005

Release Notes:

- Improved GPU context management: share a single context with multiple
surfaces.

### High Level

Blade got a proper support for Surface objects in
kvark/blade#203.
That was mainly motivated by Zed needing to draw multiple windows. With
the Surface API, Zed is now able to have the GPU context tied to the
"Platform" instead of "Window". Practically speaking, this means:
  - architecture more sound
  - faster to open/close windows
  - less surprises, more robust

### Concerns

1. Zed has been using a temporary workaround for the platform bug on
some Intel+Nvidia machines that makes us unable to present -
kvark/blade#144 . This workaround is no longer
available with the new architecture. I'm looking for ideas on how to
approach this better.
- we are now picking up the change in
kvark/blade#210, which allows forcing a specific
Device ID. This should allow Zed users to work around the issue. We
could help them to automate it, too.
2. ~~Metal-rs dependency is switched to
https://github.com/kvark/metal-rs/tree/blade, since upstream isn't
responsive in merging changes that are required for Blade. Hopefully,
temporary.~~
- ~~we can also hack around it by just transmuting the texture
references, since we know those are unchanged in the branch. That would
allow Blade to use it's own version of Metal, temporarily, if switching
metal-rs in the workspace is a concern.~~
- merged my metal-rs changes and updated Zed to use the upstream github
reference

---------

Co-authored-by: Mikayla Maki <[email protected]>
Co-authored-by: Mikayla Maki <[email protected]>
Co-authored-by: Conrad Irwin <[email protected]>
@someone13574
Copy link

someone13574 commented Jan 13, 2025

I bisected the BadNativeWindow issue on gles wayland to this PR using bunnymark. Haven't tested X11 or or my nvidia system yet.

Edit: X11 fails as well

@kvark
Copy link
Owner Author

kvark commented Jan 19, 2025

Yes, GLES support is a bit more difficult with this new API

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support multiple windows
2 participants