mirror of
https://github.com/emilk/egui.git
synced 2026-09-02 06:40:06 -04:00
Update wgpu to 0.19 (#3824)
* Closes https://github.com/emilk/egui/issues/3675 --------- Co-authored-by: Andreas Reich <r_andreas2@web.de> Co-authored-by: Mingun <Alexander_Sergey@mail.ru>
This commit is contained in:
@@ -29,7 +29,7 @@ serde = ["dep:serde", "egui_demo_lib/serde", "egui/serde"]
|
||||
syntect = ["egui_demo_lib/syntect"]
|
||||
|
||||
glow = ["eframe/glow"]
|
||||
wgpu = ["eframe/wgpu", "bytemuck"]
|
||||
wgpu = ["eframe/wgpu", "bytemuck", "dep:wgpu"]
|
||||
|
||||
[dependencies]
|
||||
chrono = { version = "0.4", default-features = false, features = [
|
||||
@@ -57,6 +57,8 @@ log = { version = "0.4", features = ["std"] }
|
||||
bytemuck = { version = "1.7.1", optional = true }
|
||||
puffin = { version = "0.18", optional = true }
|
||||
puffin_http = { version = "0.15", optional = true }
|
||||
# Enable both WebGL & WebGPU when targeting the web (these features have no effect when not targeting wasm32)
|
||||
wgpu = { workspace = true, features = ["webgpu", "webgl"], optional = true }
|
||||
|
||||
|
||||
# feature "http":
|
||||
@@ -81,6 +83,6 @@ rfd = { version = "0.11", optional = true }
|
||||
|
||||
# web:
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
wasm-bindgen = "=0.2.89"
|
||||
wasm-bindgen = "=0.2.90"
|
||||
wasm-bindgen-futures = "0.4"
|
||||
web-sys = "0.3"
|
||||
|
||||
@@ -184,6 +184,103 @@ fn integration_ui(ui: &mut egui::Ui, _frame: &mut eframe::Frame) {
|
||||
ui.monospace(format!("{:#?}", _frame.info().web_info.location));
|
||||
});
|
||||
|
||||
#[cfg(feature = "glow")]
|
||||
if _frame.gl().is_some() {
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Renderer:");
|
||||
ui.hyperlink_to("glow", "https://github.com/grovesNL/glow");
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(feature = "wgpu")]
|
||||
if let Some(render_state) = _frame.wgpu_render_state() {
|
||||
let wgpu_adapter_details_ui = |ui: &mut egui::Ui, adapter: &eframe::wgpu::Adapter| {
|
||||
let info = &adapter.get_info();
|
||||
|
||||
let wgpu::AdapterInfo {
|
||||
name,
|
||||
vendor,
|
||||
device,
|
||||
device_type,
|
||||
driver,
|
||||
driver_info,
|
||||
backend,
|
||||
} = &info;
|
||||
|
||||
// Example values:
|
||||
// > name: "llvmpipe (LLVM 16.0.6, 256 bits)", device_type: Cpu, backend: Vulkan, driver: "llvmpipe", driver_info: "Mesa 23.1.6-arch1.4 (LLVM 16.0.6)"
|
||||
// > name: "Apple M1 Pro", device_type: IntegratedGpu, backend: Metal, driver: "", driver_info: ""
|
||||
// > name: "ANGLE (Apple, Apple M1 Pro, OpenGL 4.1)", device_type: IntegratedGpu, backend: Gl, driver: "", driver_info: ""
|
||||
|
||||
egui::Grid::new("adapter_info").show(ui, |ui| {
|
||||
ui.label("Backend:");
|
||||
ui.label(format!("{backend:?}"));
|
||||
ui.end_row();
|
||||
|
||||
ui.label("Device Type:");
|
||||
ui.label(format!("{device_type:?}"));
|
||||
ui.end_row();
|
||||
|
||||
if !name.is_empty() {
|
||||
ui.label("Name:");
|
||||
ui.label(format!("{name:?}"));
|
||||
ui.end_row();
|
||||
}
|
||||
if !driver.is_empty() {
|
||||
ui.label("Driver:");
|
||||
ui.label(format!("{driver:?}"));
|
||||
ui.end_row();
|
||||
}
|
||||
if !driver_info.is_empty() {
|
||||
ui.label("Driver info:");
|
||||
ui.label(format!("{driver_info:?}"));
|
||||
ui.end_row();
|
||||
}
|
||||
if *vendor != 0 {
|
||||
// TODO(emilk): decode using https://github.com/gfx-rs/wgpu/blob/767ac03245ee937d3dc552edc13fe7ab0a860eec/wgpu-hal/src/auxil/mod.rs#L7
|
||||
ui.label("Vendor:");
|
||||
ui.label(format!("0x{vendor:04X}"));
|
||||
ui.end_row();
|
||||
}
|
||||
if *device != 0 {
|
||||
ui.label("Device:");
|
||||
ui.label(format!("0x{device:02X}"));
|
||||
ui.end_row();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
let wgpu_adapter_ui = |ui: &mut egui::Ui, adapter: &eframe::wgpu::Adapter| {
|
||||
let info = &adapter.get_info();
|
||||
ui.label(format!("{:?}", info.backend)).on_hover_ui(|ui| {
|
||||
wgpu_adapter_details_ui(ui, adapter);
|
||||
});
|
||||
};
|
||||
|
||||
egui::Grid::new("wgpu_info").num_columns(2).show(ui, |ui| {
|
||||
ui.label("Renderer:");
|
||||
ui.hyperlink_to("wgpu", "https://wgpu.rs/");
|
||||
ui.end_row();
|
||||
|
||||
ui.label("Backend:");
|
||||
wgpu_adapter_ui(ui, &render_state.adapter);
|
||||
ui.end_row();
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
if 1 < render_state.available_adapters.len() {
|
||||
ui.label("Others:");
|
||||
ui.vertical(|ui| {
|
||||
for adapter in &*render_state.available_adapters {
|
||||
if adapter.get_info() != render_state.adapter.get_info() {
|
||||
wgpu_adapter_ui(ui, adapter);
|
||||
}
|
||||
}
|
||||
});
|
||||
ui.end_row();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
{
|
||||
ui.horizontal(|ui| {
|
||||
@@ -214,15 +311,6 @@ fn integration_ui(ui: &mut egui::Ui, _frame: &mut eframe::Frame) {
|
||||
ui.close_menu();
|
||||
}
|
||||
});
|
||||
|
||||
let fullscreen = ui.input(|i| i.viewport().fullscreen.unwrap_or(false));
|
||||
if !fullscreen
|
||||
&& ui
|
||||
.button("Drag me to drag window")
|
||||
.is_pointer_button_down_on()
|
||||
{
|
||||
ui.ctx().send_viewport_cmd(egui::ViewportCommand::StartDrag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user