azonenberg changed the topic of #scopehal to: libscopehal, libscopeprotocols, and glscopeclient development and testing | https://github.com/glscopeclient/scopehal-apps | Logs: https://libera.irclog.whitequark.org/scopehal
Degi_ has joined #scopehal
Degi has quit [Ping timeout: 268 seconds]
Degi_ is now known as Degi
<_whitenotifier> [scopehal-docs] azonenberg pushed 1 commit to master [+0/-0/±1] https://github.com/glscopeclient/scopehal-docs/compare/3c468b3953b9...a4aba4e205f0
<_whitenotifier> [scopehal-docs] azonenberg a4aba4e - Initial skeleton documentation for Autonegotiatin Page decode
<_whitenotifier> [scopehal] azonenberg pushed 1 commit to master [+2/-0/±4] https://github.com/glscopeclient/scopehal/compare/ad408008cbb0...0d15517e7ddd
<_whitenotifier> [scopehal] azonenberg 0d15517 - Implemented Ethernet Autonegotiation Page decode
<_whitenotifier> [scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±2] https://github.com/glscopeclient/scopehal-apps/compare/23dccc42f42b...781d5a4ea80f
<_whitenotifier> [scopehal-apps] azonenberg 781d5a4 - Updated submodules
massi has joined #scopehal
<d1b2> <tnt> btw, I haven't using scopeclient in a while, but is Vulkan a hard requirement now ?
<josuah> tnt: I think the GL in GLscopeclient stands for it
<josuah> but I have not checked
<josuah> https://github.com/glscopeclient/VkFFT/ <- this project also seems to confirm the tight coupling with Vulkan
<d1b2> <tnt> Huh GL would stand for OpenGL not Vulkan
<d1b2> <tnt> And as the description of VkFFT seems to point to, it seems to still support OpenCL.
<d1b2> <tnt> Hence why I'm asking of OpenGL + OpenCL without Vulkan still a supported config.
<d1b2> <tnt> Because my laptop GPU doesn't do Vk unfortunately.
<josuah> tnt: my bad I was mistaken then
<josuah> I thought that Vulkan did not change the hardware interace, only providing an alternative software API
<josuah> if there is any unused graphic card around that supports Vulkan, maybe an eGPU enclosure can make use of it and expose it to scopehal?
<josuah> (in case Vulkan is mandatory)
<d1b2> <tnt> eGPU would imply thunderbolt which would imply a quite modern laptop which would imply a gpu that supports vulkan.
<d1b2> <tnt> (Beside the fact it'd be extremely inconvenient and costly to run one app ....)
<d1b2> <josuah> absolutely...
<d1b2> <josuah> > # Vulkan is required for compute shaders used in rendering > find_package(Vulkan REQUIRED) > -- https://github.com/glscopeclient/scopehal-apps/blob/master/src/glscopeclient/CMakeLists.txt#L11
<d1b2> <josuah> Maybe some RaspberryPi 4 would be a more practical alternative: https://www.khronos.org/conformance/adopters/conformant-products/vulkan#submission_596
<monochroma> we are currently transitioning to vulkan, and it is a requirement
<azonenberg> Yes. vulkan is now a hard requirement. There are compatibility layers like SwiftShader you can use to do software emulation
<azonenberg> @tnt: how old is your laptop?
<azonenberg> when we were deciding about making the transition, we did a fair bit of research and couldnt find any major hardware less than a decade old that didn't do vulkan
<azonenberg> we no longer use opencl as it's basically been deprecated by all the major GPU vendors
<azonenberg> and GL compute shaders are not supported on apple platforms
<tnt> azonenberg: Haswell on linux
<azonenberg> Vulkan is the only GPU acceleration API that works on everything
<tnt> Apparently there is "some" vulkan support, but incomplete & non-compliant and not updated anymore. And also not trivial to install (at least on my current setup), so I'm not too hot on doing a lot of work to try and get it running only to find out that the supported subset isn't good enough.
<azonenberg> yeah thats 2013 era hardware
<azonenberg> You might just need a new laptop :p
<azonenberg> You can definitely try using SwiftShader
<azonenberg> it will probably be slow, since it's CPU only and not gpu accelerated, but it should work
<tnt> Yeah ... I actually got one (new laptop), but I wanted to repurpose my current one as the "lab workbench laptop" that would stay as permanent fixture there especially for controlling lab instrument stuff :)
<azonenberg> ah i see
<azonenberg> Yeah we had to make some difficult decisions around support due to limited dev resources
<tnt> Yup, understandable.
<azonenberg> fundamentally glscopeclient/ngscopeclient is a supercomputing application intended to process huge amounts of data
<azonenberg> And our primary focus is driven by what the core devs or folks funding dev care about
<azonenberg> which is to say, getting as much performance as possible on modern midrange to high end scopes (GHz bandwidth class) and relatively recent workstation/laptop hardware
<azonenberg> We don't intentionally kill off support for legacy platforms, but if we have to make tradeoffs they're driven by what favors us getting our work done
<tnt> Sure, but then again, the limit is how fast I can get data out of my scope.
<azonenberg> Yeah
<azonenberg> Basically what it came down to was, we needed to leave GTK because it was too slow
<azonenberg> so we were doing a major refactoring for that reason anyway
<azonenberg> we needed to leave opencl because it was a trainwreck of dev tool support
<azonenberg> And we had tens of thousands of dollars of funding coming in to make macos support happe
<azonenberg> happen*
<azonenberg> macos does not support any opengl version past 4.1, but can do vulkan through moltenvk
<tnt> Can the Vulkan and GL part run on different GPU ?
<azonenberg> Sooo
<azonenberg> glscopeclient right now has basically completely decoupled paths where 99% of the work (all gpu acceleration plus waveform rendering to texture) happens in vulkan
<azonenberg> then the last little bit that displays a few textured polygons in the GTK window is GL
<azonenberg> in principle yes, these can be separated. but there's not good code for GPU selection that would make that easy
<azonenberg> the other thing is, glscopeclient should not factor into future plans
<azonenberg> we intend to deprecate it in the next few months, ngscopeclient is the path forward
<azonenberg> glscopeclient is getting zero new dev
<azonenberg> the only reason it'
<azonenberg> the only reason it's not already deleted is that ngscopeclient can't yet read/write .scopesession files and the multiscope sync wizard isn't ported over yet
<azonenberg> at which point we'll be pure vulkan. and since things like waveform data memory are now allocated using vulkan APIs, and all rendering is vulkan, it's a core requirement
<azonenberg> Given the modular architecture and the nice frontend/backend decoupling
<tnt> Ack. Thanks for the explanation.
<azonenberg> there is no reason in principle why someone couldn't make a completely software rendered GUI frontend
<azonenberg> but you'd still have to use a vulkan compat layer so that vulkan APIs for memory allocation work on the backend
<azonenberg> and some filter blocks like FFT are in the process of transitioning to a fully vulkan implementation (CPU fallback removed)
<azonenberg> because ffts is a trainwreck
massi has quit [Remote host closed the connection]
<tnt> I was just asking because I also have a NVIDIA GPU which works fine for compute stuff, but getting it to "display" anything on screen is challenging.
<azonenberg> ah, interesting. So, longer term
<azonenberg> we are looking at supporting a Primus-like architecture
<azonenberg> where all compute happens on one GPU and the GUI chrome happens on another
<azonenberg> the intended use case is to have an nvidia card wake up once per trigger to render waveforms and run the filter graph, then go back to sleep
<azonenberg> while the intel gpu draws all of the menus and dialogs and stuff
<azonenberg> so you can save power when running mobile
<azonenberg> If you were to use swiftshader or llvmpipe for the gui side and the nvidia card for backend, that could potentially work. The ticket in question is https://github.com/glscopeclient/scopehal-apps/issues/534
<azonenberg> it's not being actively developed but is a wishlist item