<_whitenotifier-3>
[scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/JvWzS
<_whitenotifier-3>
[scopehal-apps] azonenberg 5aaa9e8 - ScopeThread: cleanly return if a capture fails
<_whitenotifier-3>
[scopehal] azonenberg pushed 2 commits to master [+0/-0/±2] https://git.io/JvWzH
<_whitenotifier-3>
[scopehal] azonenberg 1cafdb7 - LeCroyOscilloscope: Added more verification to prevent crashing if a truncated wavedesc is received. Updated ReadWaveformBlock() to correctly handle stray newlines. Fixes #45.
<_whitenotifier-3>
[scopehal] azonenberg d6df853 - Removed some dead code
<_whitenotifier-3>
[scopehal-apps] azonenberg closed issue #45: glscopeclient segfaults when changing vertical offset on scope front panel - https://git.io/JvYOh
<_whitenotifier-3>
[scopehal-apps] azonenberg opened issue #49: Allow SI prefixes on protocol decoder inputs (K, M, etc) - https://git.io/JvWzd
<_whitenotifier-3>
[scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/JvWgh
<_whitenotifier-3>
[scopehal] azonenberg 783e9bf - Made error checking not panic if a channel is disabled
<_whitenotifier-3>
[scopehal-apps] azonenberg pushed 3 commits to master [+0/-0/±8] https://git.io/JvW2I
<_whitenotifier-3>
[scopehal-apps] azonenberg a6838bf - Fixed bug where selecting "delete" from the context menu on a protocol decoder overlay would delete the parent signal instead
<_whitenotifier-3>
[scopehal-apps] azonenberg 93bd1b7 - Remove protocol decoders from top level when the last reference is deleted. Prevents UaF crash. Fixes #47.
<_whitenotifier-3>
[scopehal-apps] azonenberg 77c242d - "Delete" context menu item on a protocol decode overlay correctly removes the overlay trace. Fixes #8.
<_whitenotifier-3>
[scopehal-apps] azonenberg closed issue #8: Allow protocol decoders to be deleted - https://git.io/JvW2L
<_whitenotifier-3>
[scopehal] azonenberg pushed 1 commit to master [+4/-0/±5] https://git.io/JvWKG
<_whitenotifier-3>
[scopehal] azonenberg d218f4b - Initial implementation of TMDS line code
<_whitenotifier-3>
[scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://git.io/JvWKF
<_whitenotifier-3>
[scopehal] azonenberg ba28098 - Fixed bug where TMDS decoder would falsely find HDMI guard band symbols inside data blocks
miek has joined #scopehal
<_whitenotifier-3>
[scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±3] https://git.io/JvWbf
<_whitenotifier-3>
[scopehal-apps] azonenberg 2aec921 - Added more performance profiling
<azonenberg>
So, at this point ~75% of my render time is spent in glBufferData()
<azonenberg>
There is a 12:1 overhead right now because i'm tesselating voltages to triangles in software then pushing floating point coordinates to the gpu
<azonenberg>
let's see, 1M points * 32 bits per float * 12 coordinates per point is 384 Mbits per frame in 30.3 ms so 12.6 Gbps of effective throughput
<azonenberg>
multiplying across channels, 30.3 ms * 4 channels = 121.2 ms, this test rendered at 5.29 FPS so ~188 ms per frame, or a total of 64% of the total inter-frame time in glBufferData)))))))))
<azonenberg>
some of the inter-frame time is used for downloading waveforms from the scope and other non-rendering tasks
<azonenberg>
so ~75% of render time is in that one call
<lain>
sheesh
<lain>
smoking gun lol
<azonenberg>
yeah unfortunately that isnt super easy to optimize
<monochroma>
gpgpu ?
<azonenberg>
well first step is to generate better geometry
<azonenberg>
without that weird line artifact when zoomed in
<azonenberg>
Then i'll optimize the generation
<azonenberg>
i think long term i will be using a compute shader to create the verts from a vector of floating point coordinates
<azonenberg>
For the short term i'm going to implement two different rendering paths just to remove the artifacts
<azonenberg>
(can always move this to a shader later)
<azonenberg>
If samples are <1 pixel wide, draw each sample as a box made of two triangles, axially aligned
<azonenberg>
two pixels wide and with height extending from the current sample to the next (stretched +/- 1 pixel to ensure minimum thickness on horizontal lines)
<azonenberg>
If samples are >1 pixel wide, the current rendering path doesn't work so i need to some up with something new
<azonenberg>
and the axially aligned boxes will look pixelated
<azonenberg>
the aligned boxes look great intensity graded when zoomed out though
<azonenberg>
as i zoom in more than this, the lines connecting samples start to have a non-negligible horizontal component so axially aligned boxes don't work
<azonenberg>
What i did in the old render path was take a logical line from each sample to the next, then extend that to a quad by splitting each endpoint of the segment into two points
<azonenberg>
and moving them apart by +/- 1 pixel along a vector normal to the line
<azonenberg>
But that gave artifacts i dont yet understand the cause of. not sure if implementation bug or fundamental math problem with this approach
<azonenberg>
either way, i like the new rendering for wider zooms so i'll keep the spliot