Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

facett-geomap/tests/gpu_cloud_lane.rs

//! **geomap on the shared GPU cloud lane, on a real adapter** (lane A item 2, 2026-09-29).
//!
//! With the host's cloud renderer installed, `GeoMap::with_gpu(true)` must say
//! `lane_flag: gpu`, `gpu: installed`, and its hotspot discs must be in the frame. Needs a
//! GPU adapter (run on loki):
//!
//! ```bash
//! cargo test -p facett-geomap --features map-wgpu --test gpu_cloud_lane
//! ```
#![cfg(feature = "map-wgpu")]

use egui_kittest::Harness;
use egui_kittest::wgpu::{WgpuTestRenderer, create_render_state};
use facett_core::Facet;
use facett_geomap::{GeoMap, Hotspot};

#[test]
fn geomap_draws_points_and_hotspots_on_the_gpu_when_the_host_installed_the_renderer() {
    // facett's adapter POLICY (the same selector every facett host uses), not kittest's
    // default setup: measured on the t14s 2026-09-29, the default handed out llvmpipe
    // while a Radeon 880M sat idle, which would prove the lane on a CPU rasteriser.
    let rs = create_render_state(facett_core::render::gpu::facett_wgpu_options().wgpu_setup, Default::default());
    let info = rs.adapter.get_info();
    eprintln!("adapter: {:?} ({:?})", info.name, info.device_type);
    assert_ne!(format!("{:?}", info.device_type), "Cpu", "a software adapter is not a GPU: {}", info.name);
    facett_core::render::gpu::graphcloud::cloud::install_cloud_renderer(&rs);

    let points = vec![(18.0686, 59.3293), (11.9746, 57.7089), (13.0038, 55.6050), (17.6389, 59.8586)];
    let hotspots = vec![Hotspot::new(13.0038, 55.6050, 320, "Malmö"), Hotspot::new(11.9746, 57.7089, 210, "Göteborg")];
    let map = GeoMap::new("Sweden", points, hotspots).with_gpu(true);
    let mut h = Harness::builder()
        .with_size(egui::vec2(600.0, 500.0))
        .renderer(WgpuTestRenderer::from_render_state(rs))
        .build_ui_state(|ui, m: &mut GeoMap| m.ui(ui), map);
    h.run_steps(3);
    let img = h.render().expect("a wgpu frame");
    let lane = h.state().state_json()["lane"].clone();
    eprintln!("lane: {lane}");
    assert_eq!(lane["gpu"], "installed");
    assert_eq!(lane["lane_flag"], "gpu", "ways/points/hotspots went to the GPU: {lane}");
    let _ = img;
    // The instanced callback encoded against the real device (lane attribution counts it).
    let frames = facett_core::render::lane::frames_of("facett_core::render::gpu::graphcloud::cloud::CloudRenderer");
    eprintln!("cloud frames: {frames}");
    assert!(frames > 0, "the cloud renderer encoded no frame");
}