[Mesa-dev] renderdoc-traces: like shader-db for runtime

Eric Anholt eric at anholt.net
Thu Jun 20 19:26:04 UTC 2019

Hey folks, I wanted to show you this follow-on to shader-db I've been
working on:


For x86 development I've got a collection of ad-hoc scripts to capture
FPS numbers from various moderately interesting open source apps so I
could compare-perf them.  I was only looking at specific apps when they
seemed relevant, so it would be easy to miss regressions.

Starting work on freedreno, one of the first questions I ran into was
"does this change to the command stream make the driver faster?".  I
don't have my old set of apps on my debian ARM systems, and even less so
for Chrome OS.  Ultimately, users will be judging us based on web
browser and android app performance, not whatever I've got laying around
on my debian system.  And, I'd love to fix that "I ignore apps unless I
think of them" thing.

So, I've used renderdoc to capture some traces from Android apps.  With
an unlocked phone, it's pretty easy.  Tossing those in a repo (not
shared here), I can then run driver changes past them to see what
happens.  See
https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1134 for some

Where is this repo going from here?

- I add a runner for doing frame-to-frame consistency tests.  We could
  catch UB in a lot of circumstances by replaying a few times and making
  sure that results are consistent.  Comparing frames between drivers
  might also be interesting, though for that you would need human
  validation since pixel values and pixels lit will change on many
  shader optimization changes.

- Need to collect more workloads for the public repo:

  - I've tried to capture webgl on Chrome and Firefox on Linux with no
    luck. WebGL on ff is supposed to work under apitrace, maybe I could
    do that and then replay on top of renderdoc to capture.

  - Mozilla folks tell me that firefox's WebRender display lists can be
    captured in browser and then replayed from the WR repo under
    apitrace or rendredoc.

  - I tried capturing Mozilla's new Pathfinder (think SVG renderer), but
    it wouldn't play the demo under renderdoc.

  Do you have some apps that should be represented here?

- Add microbenchmarks?  Looks like it would be pretty easy to grab
  piglit drawoverhead results, not using renderdoc.  Capturing from
  arbitrary apps expands the scope of the repo in a way I'm not sure I'm
  excited about (Do we do different configs in those apps?  Then we need
  config infrastructure.  Ugh).

- I should probably add an estimate of "does this overall improve or
  hurt perf?"  Yay doing more stats.

- I'd love to drop scipy.  I only need it for stats.t.ppf, but it
  prevents me from running run.py directly on my targets.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190620/14fdb586/attachment.sig>

More information about the mesa-dev mailing list