The blade graphics library is a mess and causes several issues for both Zed users as well as other 3rd party apps using GPUI. This PR removes blade and implements the linux platform using `wgpu` which is the de-facto standard in the rust UI and graphics ecosystem. This will not just fix [issues that Zed users have today](https://github.com/YaLTeR/niri/issues/2335), but also profit from wgpu improvements in the futures, from other projects contributing (such as the bevy game engine, Iced, or pretty much every other relevant project). This will close several related issues on the zed repo as well. See https://github.com/zed-industries/zed/issues?q=frozen%20nvidia%20linux (probably not all of them, have only tested the freeze on nvidia and Smithay-based wayland compositors). Some related issues: https://github.com/zed-industries/zed/issues/44814 https://github.com/zed-industries/zed/issues/40481 https://github.com/YaLTeR/niri/issues/2335 https://github.com/zortax/zlaunch/issues/15 Would appreciate feedback if this is something the zed maintainers would be interested in. Release Notes: - N/A --------- Co-authored-by: John Tur <john-tur@outlook.com>
316 lines
8.0 KiB
TOML
316 lines
8.0 KiB
TOML
[package]
|
|
name = "gpui"
|
|
version = "0.2.2"
|
|
edition.workspace = true
|
|
authors = ["Nathan Sobo <nathan@zed.dev>"]
|
|
description = "Zed's GPU-accelerated UI framework"
|
|
repository = "https://github.com/zed-industries/zed"
|
|
publish = true
|
|
license = "Apache-2.0"
|
|
homepage = "https://gpui.rs"
|
|
readme = "README.md"
|
|
keywords = ["desktop", "gui", "immediate"]
|
|
categories = ["gui"]
|
|
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[features]
|
|
default = ["font-kit", "wayland", "x11", "windows-manifest"]
|
|
test-support = [
|
|
"leak-detection",
|
|
"collections/test-support",
|
|
"util/test-support",
|
|
"http_client/test-support",
|
|
"wayland",
|
|
"x11",
|
|
]
|
|
inspector = ["gpui_macros/inspector"]
|
|
leak-detection = ["backtrace"]
|
|
runtime_shaders = []
|
|
wayland = [
|
|
"bitflags",
|
|
"wgpu",
|
|
"bytemuck",
|
|
"ashpd/wayland",
|
|
"cosmic-text",
|
|
"font-kit",
|
|
"calloop-wayland-source",
|
|
"wayland-backend",
|
|
"wayland-client",
|
|
"wayland-cursor",
|
|
"wayland-protocols",
|
|
"wayland-protocols-plasma",
|
|
"wayland-protocols-wlr",
|
|
"filedescriptor",
|
|
"xkbcommon",
|
|
"open",
|
|
]
|
|
x11 = [
|
|
"wgpu",
|
|
"bytemuck",
|
|
"ashpd",
|
|
"cosmic-text",
|
|
"font-kit",
|
|
"as-raw-xcb-connection",
|
|
"x11rb",
|
|
"xkbcommon",
|
|
"xim",
|
|
"x11-clipboard",
|
|
"filedescriptor",
|
|
"open",
|
|
"scap?/x11",
|
|
]
|
|
screen-capture = [
|
|
"scap",
|
|
]
|
|
windows-manifest = []
|
|
|
|
[lib]
|
|
path = "src/gpui.rs"
|
|
doctest = false
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
async-task = "4.7"
|
|
backtrace = { workspace = true, optional = true }
|
|
bitflags = { workspace = true, optional = true }
|
|
bytemuck = { version = "1", optional = true }
|
|
collections.workspace = true
|
|
ctor.workspace = true
|
|
derive_more.workspace = true
|
|
etagere = "0.2"
|
|
futures.workspace = true
|
|
gpui_macros.workspace = true
|
|
http_client.workspace = true
|
|
image.workspace = true
|
|
inventory.workspace = true
|
|
itertools.workspace = true
|
|
log.workspace = true
|
|
num_cpus = "1.13"
|
|
parking = "2.0.0"
|
|
parking_lot.workspace = true
|
|
postage.workspace = true
|
|
chrono.workspace = true
|
|
profiling.workspace = true
|
|
rand.workspace = true
|
|
raw-window-handle = "0.6"
|
|
refineable.workspace = true
|
|
scheduler.workspace = true
|
|
resvg = { version = "0.45.0", default-features = false, features = [
|
|
"text",
|
|
"system-fonts",
|
|
"memmap-fonts",
|
|
] }
|
|
usvg = { version = "0.45.0", default-features = false }
|
|
util_macros.workspace = true
|
|
schemars.workspace = true
|
|
seahash = "4.1"
|
|
semver.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
slotmap.workspace = true
|
|
smallvec.workspace = true
|
|
smol.workspace = true
|
|
stacksafe.workspace = true
|
|
strum.workspace = true
|
|
sum_tree.workspace = true
|
|
taffy = "=0.9.0"
|
|
thiserror.workspace = true
|
|
util.workspace = true
|
|
uuid.workspace = true
|
|
waker-fn = "1.2.0"
|
|
lyon = "1.0"
|
|
libc.workspace = true
|
|
pin-project = "1.1.10"
|
|
circular-buffer.workspace = true
|
|
spin = "0.10.0"
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
block = "0.1"
|
|
cocoa.workspace = true
|
|
cocoa-foundation.workspace = true
|
|
core-foundation.workspace = true
|
|
core-foundation-sys.workspace = true
|
|
core-graphics = "0.24"
|
|
core-video.workspace = true
|
|
core-text = "21"
|
|
# WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io
|
|
font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", optional = true }
|
|
foreign-types = "0.5"
|
|
log.workspace = true
|
|
media.workspace = true
|
|
objc.workspace = true
|
|
objc2 = { version = "0.6", optional = true }
|
|
objc2-metal = { version = "0.3", optional = true }
|
|
mach2.workspace = true
|
|
#TODO: replace with "objc2"
|
|
metal.workspace = true
|
|
|
|
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "macos"))'.dependencies]
|
|
pathfinder_geometry = "0.5"
|
|
|
|
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os = "windows"))'.dependencies]
|
|
scap = { workspace = true, optional = true }
|
|
|
|
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
|
|
# Always used
|
|
oo7 = { version = "0.5.0", default-features = false, features = [
|
|
"async-std",
|
|
"native_crypto",
|
|
] }
|
|
|
|
# Used in both windowing options
|
|
ashpd = { workspace = true, optional = true }
|
|
wgpu = { workspace = true, optional = true }
|
|
cosmic-text = { version = "0.17.0", optional = true }
|
|
swash = { version = "0.2.6" }
|
|
# WARNING: If you change this, you must also publish a new version of zed-font-kit to crates.io
|
|
font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "110523127440aefb11ce0cf280ae7c5071337ec5", package = "zed-font-kit", version = "0.14.1-zed", features = [
|
|
"source-fontconfig-dlopen",
|
|
], optional = true }
|
|
calloop = "0.14.3"
|
|
filedescriptor = { version = "0.8.2", optional = true }
|
|
open = { version = "5.2.0", optional = true }
|
|
xkbcommon = { version = "0.8.0", features = ["wayland", "x11"], optional = true }
|
|
|
|
# Wayland
|
|
calloop-wayland-source = { version = "0.4.1", optional = true }
|
|
wayland-backend = { version = "0.3.3", features = [
|
|
"client_system",
|
|
"dlopen",
|
|
], optional = true }
|
|
wayland-client = { version = "0.31.11", optional = true }
|
|
wayland-cursor = { version = "0.31.11", optional = true }
|
|
wayland-protocols = { version = "0.32.9", features = [
|
|
"client",
|
|
"staging",
|
|
"unstable",
|
|
], optional = true }
|
|
wayland-protocols-plasma = { version = "0.3.9", features = [
|
|
"client",
|
|
], optional = true }
|
|
wayland-protocols-wlr = { version = "0.3.9", features = [
|
|
"client",
|
|
], optional = true }
|
|
|
|
# X11
|
|
as-raw-xcb-connection = { version = "1", optional = true }
|
|
x11rb = { version = "0.13.1", features = [
|
|
"allow-unsafe-code",
|
|
"xkb",
|
|
"randr",
|
|
"xinput",
|
|
"cursor",
|
|
"resource_manager",
|
|
"sync",
|
|
], optional = true }
|
|
# WARNING: If you change this, you must also publish a new version of zed-xim to crates.io
|
|
xim = { git = "https://github.com/zed-industries/xim-rs.git", rev = "16f35a2c881b815a2b6cdfd6687988e84f8447d8" , features = [
|
|
"x11rb-xcb",
|
|
"x11rb-client",
|
|
], package = "zed-xim", version = "0.4.0-zed", optional = true }
|
|
x11-clipboard = { version = "0.9.3", optional = true }
|
|
|
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
rand.workspace = true
|
|
windows.workspace = true
|
|
windows-core.workspace = true
|
|
windows-numerics = "0.2"
|
|
windows-registry = "0.5"
|
|
|
|
[dev-dependencies]
|
|
backtrace.workspace = true
|
|
collections = { workspace = true, features = ["test-support"] }
|
|
env_logger.workspace = true
|
|
http_client = { workspace = true, features = ["test-support"] }
|
|
lyon = { version = "1.0", features = ["extra"] }
|
|
pretty_assertions.workspace = true
|
|
rand.workspace = true
|
|
reqwest_client = { workspace = true, features = ["test-support"] }
|
|
scheduler = { workspace = true, features = ["test-support"] }
|
|
unicode-segmentation.workspace = true
|
|
util = { workspace = true, features = ["test-support"] }
|
|
|
|
[target.'cfg(target_os = "windows")'.build-dependencies]
|
|
embed-resource = "3.0"
|
|
windows-registry = "0.5"
|
|
|
|
[target.'cfg(target_os = "macos")'.build-dependencies]
|
|
bindgen = "0.71"
|
|
cbindgen = { version = "0.28.0", default-features = false }
|
|
naga.workspace = true
|
|
|
|
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.build-dependencies]
|
|
naga.workspace = true
|
|
|
|
|
|
[[example]]
|
|
name = "hello_world"
|
|
path = "examples/hello_world.rs"
|
|
|
|
[[example]]
|
|
name = "image"
|
|
path = "examples/image/image.rs"
|
|
|
|
[[example]]
|
|
name = "input"
|
|
path = "examples/input.rs"
|
|
|
|
[[example]]
|
|
name = "on_window_close_quit"
|
|
path = "examples/on_window_close_quit.rs"
|
|
|
|
[[example]]
|
|
name = "opacity"
|
|
path = "examples/opacity.rs"
|
|
|
|
[[example]]
|
|
name = "pattern"
|
|
path = "examples/pattern.rs"
|
|
|
|
[[example]]
|
|
name = "set_menus"
|
|
path = "examples/set_menus.rs"
|
|
|
|
[[example]]
|
|
name = "shadow"
|
|
path = "examples/shadow.rs"
|
|
|
|
[[example]]
|
|
name = "svg"
|
|
path = "examples/svg/svg.rs"
|
|
|
|
[[example]]
|
|
name = "tab_stop"
|
|
path = "examples/tab_stop.rs"
|
|
|
|
[[example]]
|
|
name = "text"
|
|
path = "examples/text.rs"
|
|
|
|
[[example]]
|
|
name = "text_wrapper"
|
|
path = "examples/text_wrapper.rs"
|
|
|
|
[[example]]
|
|
name = "tree"
|
|
path = "examples/tree.rs"
|
|
|
|
[[example]]
|
|
name = "uniform_list"
|
|
path = "examples/uniform_list.rs"
|
|
|
|
[[example]]
|
|
name = "window_shadow"
|
|
path = "examples/window_shadow.rs"
|
|
|
|
[[example]]
|
|
name = "grid_layout"
|
|
path = "examples/grid_layout.rs"
|
|
|
|
[[example]]
|
|
name = "mouse_pressure"
|
|
path = "examples/mouse_pressure.rs"
|