Modest performance improvements
This commit is contained in:
1 parent
377bdc92df
commit
0e8134aa59
8 files changed
+283
-70
No files matched your search
@@ -30,14 +30,15 @@ step up is visible at a glance.
|
||||
|
||||
| Tier | Lighting | Camera | RTX 3060 | lavapipe (CPU) | Sample |
|
||||
|---|---|---|---|---|---|
|
||||
| L0 / C0 | Lambertian surfaces, Earth's and the Moon's limbs exact, eclipse by Earth and the Moon, no shadows on the target, no light from Earth | Pinhole, absolute radiometry to 12-bit DN, no noise or blur | 1.8–2.1 ms | 8–65 ms | [](docs/images/l0-c0.png) |
|
||||
| L0 / C0 | Lambertian surfaces, Earth's and the Moon's limbs exact, eclipse by Earth and the Moon, no shadows on the target, no light from Earth | Pinhole, absolute radiometry to 12-bit DN, no noise or blur | 0.9–1.3 ms | 6–69 ms | [](docs/images/l0-c0.png) |
|
||||
|
||||
Times are one 1920 x 1080 RGB frame end to end (`submit` to `wait`, readback
|
||||
of the DN image included), median of criterion runs, over models from 12 to
|
||||
Times are one 1920 x 1080 RGB frame end to end (`submit` to `wait_view`, with
|
||||
the DN image ready to read), median of criterion runs, over models from 12 to
|
||||
752,000 triangles: the box-wing, Landsat 8 and ICESat-2. The GPU's own work is
|
||||
0.3 to 0.6 ms of that; reading 12 MB back and copying it out is most of the
|
||||
rest. lavapipe ran on the Intel Core Ultra 9 285K's 24 cores. The run-to-run
|
||||
noise is about 3 %. The sample is the Landsat 8 example scene
|
||||
0.3 to 0.6 ms of that. `wait`, which copies the 12 MB image into a new `Vec`,
|
||||
takes 1.6 to 2.0 ms on the RTX 3060 and 7.7 to 82 ms on lavapipe. lavapipe ran
|
||||
on the Intel Core Ultra 9 285K's 24 cores. Run to run, the RTX 3060's times
|
||||
vary by about 5 %, and lavapipe's by up to 15 % between sessions. The sample is the Landsat 8 example scene
|
||||
(`examples/scenes/landsat8.toml`). `cargo bench -p resolved` reproduces the
|
||||
numbers, and `resolved render --timings N` shows the per-pass split.
|
||||
|
||||
@@ -83,6 +84,8 @@ let observer = Pose::looking_at(target + Vector3::new(20.0, 0.0, 0.0), target, V
|
||||
let pending = renderer.submit(&scene, &observer)?;
|
||||
// ... the simulation's own work for this step overlaps the GPU's here ...
|
||||
let frame = pending.wait()?;
|
||||
// (`pending.wait_view()` lends the image where the GPU left it instead of copying it,
|
||||
// saving 0.6 ms or more at 1920 x 1080; the next `submit` waits until it is dropped.)
|
||||
|
||||
// 12-bit DN, channels r, g, b interleaved. The panel faces the Sun and the camera.
|
||||
assert!(frame.dn_at(960, 540, 1) > 1000);
|
||||
|
||||
Reference in new issue
Block a user