azonenberg changed the topic of #scopehal to: libscopehal, libscopeprotocols, and glscopeclient development and testing | https://github.com/azonenberg/scopehal-cmake, https://github.com/azonenberg/scopehal-apps, https://github.com/azonenberg/scopehal | Logs: https://freenode.irclog.whitequark.org/scopehal
<_whitenotifier-3> [scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±3] https://git.io/Jv0zC
<_whitenotifier-3> [scopehal-apps] azonenberg bea78c3 - Moved temporary buffer to shared memory and made a few other tweaks for massive FPS improvements
<lain> :3
<_whitenotifier-3> [scopehal-cmake] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/Jv0z4
<_whitenotifier-3> [scopehal-cmake] azonenberg 7e02ecf - Updated to latest submodules
<azonenberg> So, these are some pretty impressive speedups i think
<azonenberg> Just installed a RTX 2080 Ti on my dev workstation, which gives me better profiling capability than the 2014 Quadro K5200 i had been using
<azonenberg> All testing done with a 50us wide viewport containing VSYNC + R/G/B channels of a 720p60 DVI video stream, 1M samples @ 20 Gsps, zoomed out so the waveform fills the entire viewport
<azonenberg> Old renderer (tesselating voltages to triangles): 83.44 ms per frame
<azonenberg> Early version of compute shader based renderer: 30.83 ms
<azonenberg> After recent optimizations: 13.94 ms
<azonenberg> That's GPU time, a fair bit of CPU time is still being used on various things. glBufferData() is slow, i'm not sure if there's anything i can do to help with that other than trying to shrink buffer sizes
<azonenberg> there's also some slow glTexImage2D() calls for pushing Cairo texture data to the GPU. If i can move more rendering to GPU and out of software that will definitely help
<azonenberg> interestingly one is a lot slower than another, i wonder if it's pixel format or something
<lain> :o
<azonenberg> no it seems to be random, probably contention from some other windows for the gpu or something
<azonenberg> anyway, basically at this point i think i've removed the GPU from the bottleneck
<azonenberg> I have ~45 ms per frame on the CPU and ~14 on the GPU, and my framerate for the most part is capped by how fast i can get waveforms from the scope anyway
<lain> excellent.
<azonenberg> Definitely room to gain performance by moving the Cairo background/axis label drawing to GL
<azonenberg> And i think the glBufferData() calls for pushing waveforms to the GPU can probably be made faster as i'm nowhere near peak pcie b/w
<azonenberg> Biggest performance priority right now, i think, is moving overlay rendering to the GPU
<azonenberg> the pure analog waveforms are no longer remotely close to the bottleneck
<azonenberg> as soon as you add protocol decodes on a deep waveform framerate tanks
<_whitenotifier-3> [scopehal-apps] azonenberg opened issue #57: Logarithmic FFT display don't work with new rendering engine - https://git.io/Jv0aU
<_whitenotifier-3> [scopehal-apps] azonenberg labeled issue #57: Logarithmic FFT display don't work with new rendering engine - https://git.io/Jv0aU
<_whitenotifier-3> [scopehal-apps] azonenberg labeled issue #57: Logarithmic FFT display don't work with new rendering engine - https://git.io/Jv0aU
<azonenberg> So, here's some quick performance metrics from a test run I just did showing where bottlenecks are
<azonenberg> With 1M points and a whole bunch of protocol decodes active, average *frame interval* (i.e. time between frames, including rendering and everything else) is 531 ms or 1.88 FPS
<azonenberg> Channel 1, with no decodes active (vsync) spends 6.357 ms on rendering
<azonenberg> The other 3 channels are 107.279, 91.819, and 79.959
<azonenberg> For a total of 285.414 ms on rendering. The remaining 245.586 ms is likely waiting for waveforms from the scope, protocol decodes, and other things that also need optimization but are not graphical in nature
<azonenberg> Drilling down a bit to channel 2, 107.279 ms of total render time of which 102.789 is in Cairo software graphics rendering
<azonenberg> by comparison channel 1, which has no decode overlays but the same axis labels, infobox, etc is 6.357 ms of total render time with 1.048 in Cairo
<azonenberg> So on channels with a lot of decodes ~95% of the TOTAL render time is drawing the decodes and not the waveforms
<azonenberg> But before i do that I want to fix a few other things
_whitelogger has joined #scopehal
_whitelogger has joined #scopehal
<_whitenotifier-3> [scopehal-apps] azonenberg pushed 1 commit to master [+1/-0/±6] https://git.io/Jv0oI
<_whitenotifier-3> [scopehal-apps] azonenberg 0d7ba55 - Refactoring: moved Cairo rendering code to another file. Some minor tweaks to remove redundant GL state changes
electronic_eel has quit [Ping timeout: 260 seconds]
electronic_eel has joined #scopehal
electronic_eel has quit [Ping timeout: 255 seconds]
electronic_eel has joined #scopehal
<azonenberg> So i accidentally scrolled the timebase knob on my scope too far and took a 20M point capture instead of a 1M point, lol
<azonenberg> On the plus side, glscopeclient can handle that just fine :D
<azonenberg> As soon as you add any protocol decodes performance will likely tank. But it works great with just the analog waveforms
<monochroma> heh!
<azonenberg> the old renderer? not a chance
<_whitenotifier-3> [scopehal-apps] azonenberg opened issue #58: Waveform sometimes is drawn over vertical axis - https://git.io/Jv0ig
<_whitenotifier-3> [scopehal-apps] azonenberg labeled issue #58: Waveform sometimes is drawn over vertical axis - https://git.io/Jv0ig
<_whitenotifier-3> [scopehal-apps] azonenberg labeled issue #58: Waveform sometimes is drawn over vertical axis - https://git.io/Jv0ig
<_whitenotifier-3> [scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/Jv0Pu
<_whitenotifier-3> [scopehal-apps] azonenberg 119371c - Make sure we use scissor test for all rendering, not just eye patterns. Fixes #58.
<_whitenotifier-3> [scopehal-apps] azonenberg closed issue #58: Waveform sometimes is drawn over vertical axis - https://git.io/Jv0ig
<_whitenotifier-3> [scopehal-cmake] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/Jv0P2
<_whitenotifier-3> [scopehal-cmake] azonenberg 898058b - Updated to latest scopehal-apps
tnt has joined #scopehal
<tnt> Someone was working on a Agilent MSOX driver IIRC, does anyone know the state ?
<azonenberg> tnt: miek is working on it, scopehal issue #74
<azonenberg> last commit december 13th so it's probably gonna need some fixup
<miek> mine's not for the X series, though there's probably some similarity
<tnt> Not the same scope.
<tnt> Yeah, I'm not sure how similar they are (beyond being SCPI). I think I checked at some point (in regards to a sigrok driver back then) and the controls were quite different.
<azonenberg> SCPI is standard in the same sense JTAG is
<tnt> yup exactly.
<azonenberg> it defines how to identify the device, and how to format "commands" and "replies"
<azonenberg> beyond there, you're on your oen
<azonenberg> own*
<tnt> I'm kind of wondering how fast the network acquisition works.
<tnt> I'm assuming for those nice diagrams you need quite a few captures to build statistics.
<azonenberg> Depends on what you're doing, you can get a usable eye with only 1M points or so sometimes
<azonenberg> although more will give you better bounds wrt infrequent events
<_whitenotifier-3> [scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/Jv0p5
<_whitenotifier-3> [scopehal-apps] azonenberg 1ff6aaa - Added logarithmic Y axis support for new renderer. Fixes #57.
<_whitenotifier-3> [scopehal-apps] azonenberg closed issue #57: Logarithmic FFT display don't work with new rendering engine - https://git.io/Jv0aU
<_whitenotifier-3> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/Jv0pj
<_whitenotifier-3> [scopehal] azonenberg b2f97f3 - Unit: fixed incorrect pretty-printing of gigascale values. Fixes #55.
<_whitenotifier-3> [scopehal] azonenberg closed issue #55: Ethernet decode: verify CRCs rather than always displaying as green - https://git.io/Jv0he
<azonenberg> ooops wrong repo
<_whitenotifier-3> [scopehal] azonenberg commented on issue #55: Ethernet decode: verify CRCs rather than always displaying as green - https://git.io/Jv0hJ
<_whitenotifier-3> [scopehal] azonenberg reopened issue #55: Ethernet decode: verify CRCs rather than always displaying as green - https://git.io/Jv0he
<_whitenotifier-3> [scopehal-apps] azonenberg closed issue #55: FFT frequency display in timeline is incorrect for frequencies beyond 1 GHz - https://git.io/Jv4hG
<azonenberg> The joys of having a project split across repos, you have to make sure tickets are for the right one :p
<tnt> Seems the build system doesn't properly follow the CMAKE_INSTALL_PREFIX.
<tnt> "Installing: /usr/lib/libgraphwidget.so"
<azonenberg> i don't think installation has ever been built or tested. There might be some copy pasted bits of install code there, but proper install support is a long way from complete
<tnt> How do you run without install ? I just get "terminate called after throwing an instance of 'Gtk::CssProviderError'" when trying to run off the build dir.
<azonenberg> I believe the current build expects to run with PWD=$src/glscopeclient
<azonenberg> since it has relative paths to shaders etc
<azonenberg> That's a known issue, scopehal-apps:15
<tnt> Ah yeah, that starts indeed.
<azonenberg> but afaik nobody has worked on it yet
<_whitenotifier-3> [scopehal-cmake] azonenberg opened issue #6: Proper cmake install support - https://git.io/Jv0hF
<_whitenotifier-3> [scopehal-cmake] azonenberg opened issue #7: Add cpack support - https://git.io/Jv0hN
<_whitenotifier-3> [scopehal-docs] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/Jv0hx
<_whitenotifier-3> [scopehal-docs] azonenberg 1e96f71 - Fixed incorrect directory in installation notes
<tnt> Ah yeah indeed, should have read that :) (I actually had to disable doc/ build since it failed here for some reason ...)
<azonenberg> improving the cmake latex integration is also a TODO, in particular errors are hidden so you can't see why the doc build failed
<azonenberg> but if i don't hide stuff, you get hundreds of lines of spam during the build
<azonenberg> tnt: and the manual has only existed for like the past week
<azonenberg> so i can forgive you for not knowing about it :p
<tnt> :)