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
<bvernoux> it is why I say 10Mpts on Rigol with SCPI is not really usable waiting more than 7s is crazy with an UI
<bvernoux> 7s is for 4chan ;)
<d1b2> <ehntoo> 10Mpts is nowhere near 7.5s with my current setup. It's pretty variable, but somewhere in the neighborhood of 1s-4s. The ngscopeclient perf metrics report ~270mHz (emphasis on little m).
<d1b2> <ehntoo> ah, I'm only on one channel
<bvernoux> yes
<bvernoux> it is about 5MBytes/s
<bvernoux> the Rigol MSO5K cannot exceed 6MBytes/s ...
<bvernoux> what a shame with 1Gbit Ethernet link or even USB2 HS
<bvernoux> I have even tried 200MPts 1chan ;)
<bvernoux> 32.55s
Degi_ has joined #scopehal
Degi has quit [Ping timeout: 246 seconds]
Degi_ is now known as Degi
<bvernoux> ehntoo anyway if you have stabilized it with glscopeclient it will be usable
<bvernoux> as it is very boring to use USB key ;)
<bvernoux> as on my side the Rigol MSO5K was totally frozen sometimes depending on command burst
<bvernoux> it was clearly a mutex locked somewhere ;)
<bvernoux> in the kernel as everything was dead
<_whitenotifier-7> [scopehal] ehntoo opened pull request #696: Rigol MSO5000 Fixes - https://github.com/glscopeclient/scopehal/pull/696
<bvernoux> nice with quality of life improvements ;)
<bvernoux> I will test your PR tomorrow if there is no any crash it is a big success as it could be usable even if the Rigol MSO5K is very slow
<bvernoux> I have the latest Firmware
<d1b2> <ehntoo> I am also running the latest firmware.
<bvernoux> it is really a raw diamond this Rigol MSO5K
<bvernoux> especially for the price
<bvernoux> even if the noise floor is not very good ... with 5ENOB ;)
<bvernoux> the 8GSPS is a killer feature for the price with >500MHz BW on each channel
<bvernoux> If someone have some very good skills with lot of time it will be amazing to rewrite all from scratch on Rigol MSO5K ;)
<bvernoux> But there is so much reverse engineering to do ...
<bvernoux> hmm there is a bug again for install
<bvernoux> CMake Error at src/ngscopeclient/cmake_install.cmake:57 (file):
<bvernoux> file INSTALL cannot find
<bvernoux> "D:/a/scopehal-apps/scopehal-apps/build/src/ngscopeclient/waveform-compute.analog.dense.int64.spv":
<bvernoux> No error.
bvernoux has quit [Quit: Leaving]
<d1b2> <ehntoo> I was just about to hop off the computer for the night, but I updated my scopehal-apps repo to master and am running into a new crash when trying to render the first waveform of a session on macos/moltenvk. I can grab some more diagnostics and/or bisect things tomorrow.
<d1b2> <ehntoo> this was with only a 10kpt depth whereas before I'd updated I could work with 10Mpt capture depths (albeit slowly)
<lain> ehntoo: this is expected, ngscopeclient isn't using the vulkan rendering fixes yet
<d1b2> <ehntoo> It worked with the scopehal-apps code from last night though?
<lain> ah, hm
<lain> I'll let azonenberg figure it out then
<d1b2> <ehntoo> I'm sure I can figure it out pretty quickly, it's probably something similar to the Vulkan queue management where the m1 hardware capabilities are a little unusual. I bet we're requesting buffer properties that are unsatisfiable in some way.
<d1b2> <david.rysk> hmm, opencl is required?
<d1b2> <david.rysk> (trying to do an initial compile on mac)
<d1b2> <david.rysk> err not opencl, but openmp
<d1b2> <david.rysk> hmm I can't compile ffts
mikolajw has quit [Ping timeout: 248 seconds]
mikolajw has joined #scopehal
<d1b2> <david.rysk> (got past that)
<azonenberg> ehntoo: i am just beginning to deploy the new vulkan rendering in ngscopeclient
<azonenberg> there is some code related to setup for that which i have not tested on mac
<azonenberg> it *should* not break but if it does, i want to know
<d1b2> <david.rysk> Are there Mac compile instructions yet? (Got it most of the way there)
<d1b2> <ehntoo> Not yet - support is pretty early days, but I think it's going to be a priority pretty soon.
<azonenberg> david.rysk: there will be once it's officially working and supported
<azonenberg> lain is actively working towards that end, with some help from ehntoo
<azonenberg> Don't waste too much time on FFTS compile/run issues. FFTS is goign to be deprecated from the codebase in the immediate future
<azonenberg> we're going all in on vkFFT
<azonenberg> ehntoo: ToneMapAnalogWaveform is the experimental function i'm working on right now
<azonenberg> it does nothing user facing yet, and was pushed in part to see if anyone would have problems with it :p
<azonenberg> It's safe to comment out the call to it in the near term, which should fix the problem for you
<azonenberg> i'll investigate why it's failing
<azonenberg> outofpoolmemory implies i might have run out of descriptors or not be using the right pool to allocate a descriptor, or something to that effect
<azonenberg> ehntoo: wrt not being able to change settings except with the trigger running, a lot of siglents are like that too
<azonenberg> the workaround is similar
<_whitenotifier-7> [scopehal] azonenberg closed pull request #696: Rigol MSO5000 Fixes - https://github.com/glscopeclient/scopehal/pull/696
<_whitenotifier-7> [scopehal] azonenberg pushed 5 commits to master [+0/-0/±5] https://github.com/glscopeclient/scopehal/compare/e47e46770d7b...7553161a7d70
<_whitenotifier-7> [scopehal] ehntoo e260bf8 - Fix rigol MSO5000 waveform acquisition failures If we ask for waveform data too quickly after a trigger event, my MSO5074 won't respond with any data. Experimentally, I've found two ways to avoid this: 1. Stop using `SO_RCVTIMEO` on the MSO5000's LAN socket and re-send our :WAV:DATA? request on reception of no response following the header 2. Send a *WAI request prior to
<_whitenotifier-7> sending :WAV:DATA?. The MSO5000 programming guide seems to suggest *WAI does nothing at all, but I have not been able to reproduce any waveform reception failures after adding it to the AcquireData sequence. This commit adopts approach 2, as it avoids polluting the code with any assumptions or special handling for certain SCPI transport methods. Thanks to @bvernoux for his nice standalone "rigol_mso5000" utility
<_whitenotifier-7> which made verifying this change exceptionally simple.
<_whitenotifier-7> [scopehal] ehntoo 0f5a8ca - Rigol MSO5000: Avoid stomping on BW limit on init The current rigol constructor for MSO5000 series scopes runs through an iterative process to determine what the actual bandwidth of a connected device is by setting progressive channel bandwidth limits and seeing if they take effect. We were not restoring the previously-set bandwidth limit after this process, which might cause
<_whitenotifier-7> some user confusion.
<_whitenotifier-7> [scopehal] ehntoo 7ac33a6 - Rigol: Simplify channel enable check in AcquireData
<_whitenotifier-7> [scopehal] ... and 2 more commits.
<_whitenotifier-7> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://github.com/glscopeclient/scopehal/compare/7553161a7d70...353a5b09412d
<_whitenotifier-7> [scopehal] azonenberg 353a5b0 - ComputePipeline: allow image output bindings
<d1b2> <azonenberg> Hello world from the new tone mapping shader
<d1b2> <azonenberg> just a simple procedural input as i'm not invoking lain's vulkan-ized rendering shader yet
<azonenberg> but it's taking a float32 image and converting that to RGBA with the channel color
<azonenberg> with the appropriate logarithmic intensity ramp and such
<azonenberg> I discovered a new bug, textures and such that i'm drawing get deleted when the WaveformArea is destroyed
<azonenberg> but imgui is accumulating all of the draw commands until the end of the frame
<azonenberg> so if you move or close an area, you get a use-after-free validation error
<azonenberg> They're all in smart pointers anyway so the easiest option is just to keep a list of resources i used in the render in a container object
<azonenberg> then destroy the container at the end of the frame
<azonenberg> this will ensure we keep at least one reference to the objects in question open until end of frame
massi has joined #scopehal
bvernoux has joined #scopehal
jevinskie[m] has quit [Quit: Bridge terminating on SIGTERM]
sajattack[m] has quit [Quit: Bridge terminating on SIGTERM]
mikolajw has quit [Quit: Bridge terminating on SIGTERM]
whitequark has quit [Quit: Bridge terminating on SIGTERM]
sajattack[m] has joined #scopehal
mikolajw has joined #scopehal
whitequark has joined #scopehal
jevinskie[m] has joined #scopehal
<_whitenotifier-7> [scopehal-apps] bvernoux opened pull request #503: Fix GitHub CI Windows Build/Install issue - https://github.com/glscopeclient/scopehal-apps/pull/503
<_whitenotifier-7> [scopehal-apps] bvernoux edited pull request #503: Fix GitHub CI Windows Build/Install issue - https://github.com/glscopeclient/scopehal-apps/pull/503
<_whitenotifier-7> [scopehal-apps] bvernoux edited pull request #503: Fix GitHub CI Windows Build/Install issue (WIP) - https://github.com/glscopeclient/scopehal-apps/pull/503
<_whitenotifier-7> [scopehal] ehntoo opened pull request #697: Add missing pool size for eStorageImage descriptor - https://github.com/glscopeclient/scopehal/pull/697
<d1b2> <ehntoo> ^ that's the fix for the eErrorOutOfPoolMemory I was hitting last night. 🙂
<_whitenotifier-7> [scopehal] ehntoo synchronize pull request #697: Add missing pool size for eStorageImage descriptor - https://github.com/glscopeclient/scopehal/pull/697
<azonenberg> yay
<azonenberg> interesting the khronos validation layer wasnt complaining
<azonenberg> this is the first error i've seen it miss
<d1b2> <ehntoo> wonder if that's down to the use of "may" regarding the allocation failing in the spec? https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkAllocateDescriptorSets.html
<d1b2> <ehntoo> still odd that they wouldn't pick it up, though.
<azonenberg> yeah the "may" seems really weird
<azonenberg> i dont understand why it's not a "must" fail
<azonenberg> for precisely this reason
<_whitenotifier-7> [scopehal] azonenberg closed pull request #697: Add missing pool size for eStorageImage descriptor - https://github.com/glscopeclient/scopehal/pull/697
<_whitenotifier-7> [scopehal] azonenberg pushed 2 commits to master [+0/-0/±2] https://github.com/glscopeclient/scopehal/compare/353a5b09412d...b340e57c26e4
<_whitenotifier-7> [scopehal] ehntoo 2612c65 - Add missing pool size for eStorageImage descriptor MoltenVK seems to validate the descriptors pretty strictly and this was returning eErrorOutOfPoolMemory due to the lack of a provided pool of eStorageImage.
<_whitenotifier-7> [scopehal] azonenberg b340e57 - Merge pull request #697 from ehntoo/add-image-descriptors-to-pool Add missing pool size for eStorageImage descriptor
<d1b2> <ehntoo> a low-priority API thing I hit while working on improving Rigol support - the existing "InterleaveConflict" interface with the "GetSampleRatesInterleaved" "GetSampleDepthsInterleaved" method isn't quite expressive enough to model all limitations.
<d1b2> <ehntoo> The rigol scopes I'm familiar with (mso5000, ds1000z) have a multi-layered interleaving setup. If you have a single channel enabled, you get full sample rate. channel 1 or 2 can be used with one of channel 3 or 4 and get half of the available sample rate. If you use three channels at once or channel 1 with channel 2 or channel 3 with channel 4 you get 1/4 the available sample rate.
<azonenberg> Correct. there is an open ticket for that
<d1b2> <ehntoo> I suppose I should go read through the issues list, lol
<azonenberg> my tentative thought is to not-solve this
<azonenberg> the interleaved/non-interleaved model is base on instruments like LeCroy that have an explicit, user facing interleave switch
<azonenberg> the rigols, as well as e.g. picoscopes, do not have this in the API
<azonenberg> the set of available channels and sample rates scales w/ enabled channels
<azonenberg> but that's somewhat hidden from the user
<azonenberg> This is where things like CanEnableChannel() come in
<azonenberg> where you'd add logic to prevent the user from enabling a second channel if you have the full rate selected
<d1b2> <ehntoo> that could work. We'd always display the implicit interleaving sample rates in the timebase configuration, then?
<azonenberg> no. you'd display rates that are valid with the currently active set of channels
<azonenberg> so if you have 4 channels active the 1/2 and full rate would not show up
<azonenberg> until you closed some of those channels
<d1b2> <ehntoo> gotcha
<d1b2> <ehntoo> the inability to add a channel could be a little confusing unless we add some user feedback about why, but I think it's a good approach.
<azonenberg> this is what we already do in the pico drive
<azonenberg> read that code and let me know what you think
<azonenberg> if we want to make this a more official paradigm
<azonenberg> if so we can close #64 as we now have a path forward for rigol etc too
<bvernoux> For info I have a PR which fix the CI Build for WIndows (again)
<d1b2> <ehntoo> the Pico code for constraint checking in CanEnableChannel looks like a nice framework, but I think I might be missing the code for providing user feedback.
<azonenberg> That doesn't exist currently. we just call CanEnableChannel in the menu handler
<bvernoux> but there is missing files like some new shaders that I'm trying to fix
<azonenberg> and show/hide it
<bvernoux> @azonenberg, also we should probably do a msi build for ngscopeclient to have feedback from user's ?
<azonenberg> longer term yes that should be a thing. it's not yet to the point that i care about it. at least let me get the new renderer integrated
<azonenberg> today/tomorrow hopefully
<bvernoux> ha ok
<d1b2> <ehntoo> the thing I think we might need to solve there is that it could be confusing if, for example, your scope first connects in full sample rate mode and you then don't see any additional channels in the channel list, or if they're grayed out. The solution there could be as simple as returning a failure reason enum and associating it with a hover tip, though.
<azonenberg> Yes. Improving the UX of this is definitely something that would be nice to add
<azonenberg> i've been working on adding tooltips and in-app documentation to ngscopeclient as you've probably seen
<d1b2> <ehntoo> yes. I really like how nicely they work in imgui.
<azonenberg> and its so little code too
<d1b2> <david.rysk> at the moment I can't build for mac due to glfwGetRequiredInstanceExtensions failed
<d1b2> <david.rysk> on mac*
<d1b2> <david.rysk> (also fwiw some of you might have seen me before on irc as balrog)
<d1b2> <ehntoo> that suggests your Vulkan SDK isn't set up quite correctly. I think lain hit the same yesterday and had to re-install the vulkan SDK as a system install rather than a user install
<d1b2> <david.rysk> I installed it from homebrew
<d1b2> <david.rysk> any reason we shouldn't vendor it?
<d1b2> <ehntoo> I wasn't able to make the homebrew version work whereas installing the package from https://vulkan.lunarg.com/sdk/home just worked. Worth diagnosing properly at some point, but if you'd like to just get things working you can give that a try.
<d1b2> <ehntoo> looking at it again, I'm not even seeing the vulkan sdk in homebrew. Do you know which packages you installed?
<d1b2> <david.rysk> shaderc, glslang, vulkan-headers, vulkan-loader
<d1b2> <david.rysk> and then I had to edit lib/scopehal/CMakeLists.txt to add the homebrew header path
<d1b2> <david.rysk> since it hardcodes /usr/local/include
<d1b2> <ehntoo> at minimum you'll need to add molten-vk to that list. I don't have a very good feel for how things are broken up in homebrew, though.
<d1b2> <david.rysk> most people will likely be using homebrew
<d1b2> <david.rysk> I get further but still get this
<d1b2> <david.rysk> /sources/scopehal-apps/src/ngscopeclient/VulkanWindow.cpp:255:16: error: no viable overloaded '='
<d1b2> <david.rysk> m_backBuffers = m_swapchain->getImages();
<azonenberg> that still sounds like a very messed up SD install
<d1b2> <david.rysk> SD?
<azonenberg> SDK*
<d1b2> <ehntoo> I'm not seeing shaderc, glslang, or vulkan-loader in homebrew...
<d1b2> <ehntoo> wait. they do show up in a brew search but not in the search on brew.sh.
<d1b2> <ehntoo> I'm not sure how this wouldn't be a compile failure rather than a runtime one, but do any of those homebrew packages provide the vulkan c++ headers? vulkan_raii.hpp is one example.
<d1b2> <ehntoo> ok, looks like those should be coming in with vulkan-headers
<d1b2> <ehntoo> yeah, I dunno. Looks like vulkan-headers got rev'd in homebrew a couple days ago. If you've been at this a while, maybe try a clean build?
<azonenberg> yeah i know there are problems if the headers and binary you linked against are mismatched
<d1b2> <david.rysk> trying now 🙂
<d1b2> <david.rysk> yeah I think that did it
<d1b2> <david.rysk> ...or not
<d1b2> <david.rysk> https://dpaste.org/xBVTm
<d1b2> <david.rysk> this almost feels like some header isn't getting pulled in where it should be
<azonenberg> that feels like somethign got changed from const to non-const and vice versa
<azonenberg> and things are mismatched
<d1b2> <david.rysk> oooh I see that now
<azonenberg> std::vector SwapchainKHR::getImages() const
<d1b2> <david.rysk> yep
<azonenberg> from vulkan_raii.hpp:12333 in my SDK
<d1b2> <david.rysk> (my c++ is rusty)
<azonenberg> sorry std::vector<vkImage>
<azonenberg> not sure how that didn't paste
<azonenberg> anywa, it's not a const vector or const vkimage
<azonenberg> my code was written against that method signature
<azonenberg> if you have a different header, that's a problem
<azonenberg> i'm using 1.3.224 SDK
<azonenberg> it's *possible* the 229 sdk const-ified that but i doubt it
<d1b2> <david.rysk> in the .229 sdk it's VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::Image> SwapchainKHR::getImages() const
<d1b2> <david.rysk> but in MoltenVK it's VULKAN_HPP_NODISCARD std::vector<VkImage> getImages() const;
<azonenberg> Hmm interesting
<d1b2> <david.rysk> however, the moltenVK version I have says it's for .224
<azonenberg> Yeah. you might have a mix of 224 and 229 installed or something
<azonenberg> can you install the 224 SDK?
<azonenberg> if 229 breaks some things we might just have to say use 224 until our code catches up
<d1b2> <david.rysk> I think it's an MVK error. I'll see
<d1b2> <david.rysk> you said .224 doesn't use const?
<azonenberg> it does not appear to
<d1b2> <david.rysk> yeah then installing the .224 SDK won't help
<azonenberg> but it's more than that
<azonenberg> i see a mismatch between VkImage, a native vulkan type, and vk::Image, a c++ wrapper type
<d1b2> <ehntoo> the full .224 SDK download from lunarg includes a moltenvk that has worked for multiple folks.
<d1b2> <david.rysk> ehntoo: I think it's a bug in the homebrew formula
<d1b2> <david.rysk> I'll see shortly
<azonenberg> anyway i'm busy chasing a dangling reference in the new renderer
<azonenberg> where when i drag a waveform into a new WaveformArea and destroy the old one
<d1b2> <ehntoo> ^ I think your versions are just inconsistent with each other.
<azonenberg> we destroy some buffers after recording the write to a commandbuffer
<azonenberg> but before the buffer executes
<azonenberg> leading to a UaF
<azonenberg> ehntoo: no
<azonenberg> this is a non backwards compatible change in the 229 SD
<azonenberg> ngscopeclient/VulkanWindow.h assigns the return value of getImages() to a std::vector<VkImage>
<azonenberg> as a member variable
<azonenberg> if that changed to returning a c++ wrapper type, we will have to check the sdk version number in a #ifdef or something
<azonenberg> and change our type to match
<d1b2> <ehntoo> ugh
<azonenberg> 229 SDK*
<azonenberg> Vk::Image has an operator VkImage() so you can directly convert the two types
<azonenberg> but vector<vk::Image> and vector<VkImage> are not directly convertible
<azonenberg> despite having identical memory layout
<d1b2> <david.rysk> oh yeah I see that -- VkImage_T * to vk::Image
<d1b2> <ehntoo> I can't say I'm thrilled with their tossing a breaking API change in that casually, even if it's an improvement
<d1b2> <david.rysk> is it an intentional one?
<d1b2> <david.rysk> aha I see.
<d1b2> <david.rysk> well MoltenVK is still on .224
<d1b2> <david.rysk> while the latest is .229
<azonenberg> Just filed an issue for it
<azonenberg> We'll see what khronos says
<d1b2> <david.rysk> alright...
<d1b2> <david.rysk> is there anything that can be done as a workaround for now?
<azonenberg> You may be able to change m_backBuffers in VulkanWindow.h to be std::vector<vk::Image>
<azonenberg> but this will break compatibility with .224 and older SDKs
<azonenberg> alternatively, install the .224 SDK and stick with it until khronos fixes this mess and/or we add some #ifdef workarounds in our code
<d1b2> <david.rysk> that allows it to build, crashes hard when you go to render
<d1b2> <david.rysk> in MoltenVK
<azonenberg> and is that with or without ehntoo's recent fix for the descriptor pool?
<azonenberg> in 2612c65
<d1b2> <david.rysk> in which repo?
<d1b2> <david.rysk> ah, without
<azonenberg> ok yeah that's your problem then
<d1b2> <ehntoo> yeah, -apps hasn't had the submodule bumped yet. you're on the bleeding edge. 😉
<azonenberg> the fix actually has been merged in my working copy
<d1b2> <david.rysk> yeah that was my issue, relying on the submodule pointers 🙂
<azonenberg> but is not pushed because i have some other incomplete stuff
<d1b2> <david.rysk> anyway rebuilding
<d1b2> <david.rysk> getting rid of FFTS would be nice, would then be able to install all dependencies from homeberw
<d1b2> <david.rysk> homebrew*
<d1b2> <ehntoo> it's on the list.
<d1b2> <david.rysk> FFTS was annoying to get to build as well due to its lack of good arm64 support
<azonenberg> yes removing ffts is high on the todo https://github.com/glscopeclient/scopehal/issues/660
<_whitenotifier-7> [scopehal] azonenberg assigned issue #660: Look into replacing FFTS calls with vkFFT - https://github.com/glscopeclient/scopehal/issues/660
<d1b2> <david.rysk> still crashing, may be ffts-related
<d1b2> <david.rysk> will get back to this later
<azonenberg> lain patched out some of the FFTS code in the demo scope
<azonenberg> in her working copy
<azonenberg> i dont think thats merged
<azonenberg> tl;dr we do a FFT convolution with a lowpass kernel to band limit th eoutput of the demo scope
<azonenberg> so you get sharper edges without that but the demo will work fine
<azonenberg> i dont think thats upstreamed
massi has quit [Remote host closed the connection]
<_whitenotifier-7> [scopehal-apps] bvernoux edited pull request #503: Fix GitHub CI Windows Build/Install issue (WIP) - https://github.com/glscopeclient/scopehal-apps/pull/503
<_whitenotifier-7> [scopehal-apps] bvernoux edited pull request #503: Fix GitHub CI Windows Build/Install issue (WIP) - https://github.com/glscopeclient/scopehal-apps/pull/503
<azonenberg> bvernoux: hold off on some of those changes
<azonenberg> you're partially redoing work that i have in my local copy that isnt pushed yet
<bvernoux> ha yes
<bvernoux> anyway the Build is not working so far
<bvernoux> it is a real headhach to understand why the shaders are not all copied
<bvernoux> I reproduce the issue locally too on Windows
<bvernoux> For info LICENSE.rtf could be updated to change the date 2021 to 2022
<bvernoux> but it is really minor ;)
<_whitenotifier-7> [scopehal-apps] azonenberg pushed 5 commits to master [+0/-0/±16] https://github.com/glscopeclient/scopehal-apps/compare/df51db9c6708...48f00d8aa30b
<_whitenotifier-7> [scopehal-apps] azonenberg e5faf6f - Tone mapping shader now runs and generates an all-pink output
<_whitenotifier-7> [scopehal-apps] azonenberg 4e55597 - Tone mapping shader now appears to correctly tone map inputs
<_whitenotifier-7> [scopehal-apps] azonenberg 9dabd12 - Tone mapping shader now has better alpha blending if we have multiple traces stacked
<_whitenotifier-7> [scopehal-apps] ... and 2 more commits.
<azonenberg> ok so i just pushed my working copy with a bunch of the fixes we were talking about
<azonenberg> this does draw a test pattern in the background of ngscopeclient behind the actual waveforms
<azonenberg> but i dont think that will be a big deal as nobody is actually (I hope) using ngscopeclient for real work yet
<azonenberg> if for whatever reason this annoys you, comment out ngscopeclient/WaveformArea.cpp:338
<azonenberg> that placeholder image will be the actual waveform and the immediate mode renderer on 342-360 will be deleted once the shader based renderer is fully integrated
<azonenberg> just working on a few other minor issues first
<d1b2> <ehntoo> I'll be using it for real work soon, I hope, but certainly not yet. 😉
<azonenberg> yeah as a minimum file load/save support and history and filter graph stuff have to come first
<azonenberg> anyway, it's coming along nicely and i dont think it will be THAT long
<d1b2> <azonenberg> Also, blast from the past
<bvernoux> On my side I'm impatient to see the Vulkan Render on ngscopeclient to compare it with glscopeclient ;)
<d1b2> <azonenberg> October 2017, running scopeclient to decode 100baseTX
<d1b2> <azonenberg> yes i said scopeclient, this predates glscopeclient
<bvernoux> also I shall test glscopeclient with latest master to check if it is stable now
<d1b2> <azonenberg> april 2019, initial development of glscopeclient
<d1b2> <azonenberg> was that really only three years ago?
<bvernoux> woo the Rigol MSO5K fixes are amazing
<bvernoux> no crash anymore
<bvernoux> so it is pretty usable even if the refresh rate is very slow (<1 FPS) because of crappy Rigol SCPI ...
<d1b2> <ehntoo> that's great to hear. I've hit a couple other bugs and will be ironing out some other features in the near future.
<azonenberg> Great
<azonenberg> also i'm beginning to use VK_EXT_debug_utils to name objects
<bvernoux> ha yes great
<azonenberg> so future vulkan validation errors will be more comprehensible
<azonenberg> using nice friendly names vs handles
<bvernoux> azonenberg, ha very good things
<bvernoux> oups a crash ;)
<bvernoux> it is when I tried to move Y (Voltage) on a channel
<bvernoux> the scope was not synchronized anymore with SCPI ...
<bvernoux> so yes changing any settings on the scope from glscopeclient is not really usable with some huge delays
<azonenberg> ehntoo: Is the Rigol driver using the queued command API?
<bvernoux> which seems implied by glscopeclient UI with GTK
<d1b2> <ehntoo> It is not at the moment. It's one of the updates I'm planning on making.
<bvernoux> ha great I hope that will decouple more the UI with the waveforms which are ultra slow
<bvernoux> my best hope is clearly for ngscopeclient without gtk
<azonenberg> ok yeah that will definitely help
<azonenberg> its just a big enough change i didnt want to make it blind without access to an instrument to verify against
<d1b2> <ehntoo> I think there's also some caching bugs I'll need to squash.
<azonenberg> Would not surprise me in the slightest
<d1b2> <ehntoo> I can validate the "mso5" and "ds" support of the Rigol driver with instruments on-hand. I don't have an older Rigol for testing the "ds_old" support though. I'm making an effort to avoid any changes that would break it, but there may be some unintentional bit rot. 😑
<bvernoux> fun bug the fullscreen does not want to do fullscreen ;)
<azonenberg> Yeah fair enough
<azonenberg> if someone complains we'll address it
<d1b2> <david.rysk> are you trying “real” fullscreen or borderless window?
<azonenberg> this is the only path forward short of having a dedicated hardware-in-loop CI cluster of every supported scope
<azonenberg> bvernoux: is that with ngscopeclient?
<d1b2> <david.rysk> (Real fullscreen is weird and messy)
<azonenberg> glscopeclient fullscreen on windows is known broken
<azonenberg> ngscopeclient i thought was fixed. but it wants to fullscreen on your primary monitor
<azonenberg> i'd like to make it always use the monitor the window is currently on
<d1b2> <ld;cd> I'm trying to build scopehal-apps on fedora using the distros headerfiles for vulkan and am getting the following error
<d1b2> <ld;cd> it seems like the auto type inference going on here but I don't really know enough about c++ to know if thats the case
<azonenberg> Let me look into that
<azonenberg> as a quick check if you change that to be a reference so it reads "auto& device = devices[i]" does that build?
<azonenberg> also can you figure out what vulkan SDK version fedora is providing?
<azonenberg> Right now most of our work is on 1.3.224. There is a known compile failure with 1.3.229
<azonenberg> and i dont think we've done much testing on older
<azonenberg> yep
<azonenberg> i'll look into that. in the meantime, if you can let me know what SDK version you're using that will help
<azonenberg> it might be too old
<azonenberg> not that we can't potentially patch the code to handle the older SD too
<azonenberg> SDK
<d1b2> <ld;cd> 1.3.204
<azonenberg> gaah is my K key failing? i keep doing that
* azonenberg shakes keyboard
<d1b2> <ld;cd> lol
<d1b2> <ld;cd> ok so thats a little old
<d1b2> <ld;cd> alright now we got this
<d1b2> <ld;cd> /home/aled/Build/scopehal-apps/lib/scopehal/VulkanInit.cpp: In function ‘bool VulkanInit(bool)’: /home/aled/Build/scopehal-apps/lib/scopehal/VulkanInit.cpp:729:46: error: no matching function for call to ‘vk::DeviceCreateInfo::DeviceCreateInfo(<brace-enclosed initializer list>, std::vector<vk::DeviceQueueCreateInfo>&, <brace-enclosed initializer list>, std::vector<const char*>&, vk::PhysicalDeviceFeatures*, void*&)’ 729 |
<d1b2> pNext); | ^ In file included from /usr/include/vulkan/vulkan.hpp:6770, from /usr/include/vulkan/vulkan_raii.hpp:11, from /home/aled/Build/scopehal-apps/lib/scopehal/scopehal.h:63, from /home/aled/Build/scopehal-apps/lib/scopehal/VulkanInit.cpp:35: /usr/include/vulkan/vulkan_structs.hpp:23444:5: note: candidate:
<d1b2> ‘vk::DeviceCreateInfo::DeviceCreateInfo(vk::DeviceCreateFlags, const vk::ArrayProxyNoTemporaries<const vk::DeviceQueueCreateInfo>&, const vk::ArrayProxyNoTemporaries<const char* const>&, const vk::ArrayProxyNoTemporaries<const char* const>&, const vk::PhysicalDeviceFeatures*)’ 23444 | DeviceCreateInfo( | ^~~~~~~~~~~~~~~~
<d1b2> <ld;cd> lets see
<d1b2> <ld;cd> alright its passing one extra argument
<d1b2> <ld;cd> you know things are going good when you get line 23,444
<d1b2> <ld;cd> alright build proceeds past that file if you get rid of this argument https://github.com/glscopeclient/scopehal/blob/b340e57c26e44162cd48b7a45e5ee60c45d64c01/scopehal/VulkanInit.cpp#L729
<d1b2> <ld;cd> are the features it is used to enable important
<d1b2> <ld;cd> /how do I enable logDebug
<azonenberg> add --debug to the arguments
<azonenberg> for trace output, add --trace Foo or --trace Foo::Bar
<azonenberg> to trace a class or single method
<azonenberg> which argument is it trying to remove, pNext? yes, that is important to enable a bunch of shader features
<azonenberg> You might just be using too old of an SD
<azonenberg> SD
<azonenberg> SDK
<azonenberg> ok yeah my K key is definitely on its way out. hopefully its just dirt
<azonenberg> Our current recommendation is to install an up to date SDK from lunarg directly vs using distro packages which tend to be pretty old
<azonenberg> that said, do not use 1.3.229 as it has a known issue
<azonenberg> (229 was released just a few days ago)
<d1b2> <ld;cd> ok I'll just bring in a more recent version of vulkan
<d1b2> <ld;cd> hmm now spirv-tools doesn't seem to be linking in properly
<d1b2> <ld;cd> linking against spirv-tools-libs-2022.1-1.20220202.git45dd184
<d1b2> <ld;cd> what version do you use I think I'm going to ave to build that too
<azonenberg> I installed the 1.3.224 SDK as .deb packages
<azonenberg> (sorry for the troubles - the whole vulkan conversion was only started a few weeks ago and we're still sorting out some rough edges)
<bvernoux> <azonenberg> bvernoux: is that with ngscopeclient? => No the full screen issue was with glscopeclient when using the Rigol MSO5k
<azonenberg> ah ok. yes, glscopeclient has known issues w/ fullscreeen
<bvernoux> For VulkanSDK so far we are using 1.3.224.1 which is latest official build
<bvernoux> I do not recommend to mix VulkanSDK with package install which could be incompatible
<azonenberg> Yes, agreed
<bvernoux> it is why I have rebuilt stuff with mingw64 like Vulkan-Loader/Header but using tag 1.3.224.1
<d1b2> <david.rysk> IMO package install is always preferable to installing in /usr/local
<azonenberg> bvernoux: 1.3.229 is out now. it has known problems and should not be used
<bvernoux> ha ok
<d1b2> <david.rysk> I don’t like polluting /usr/local with stuff
<azonenberg> see the #1417 issue i linked abovew
<azonenberg> above*
<d1b2> <david.rysk> 1.3.229 isn’t posted at https://vulkan.lunarg.com/sdk/home yet
<bvernoux> yes the VulkanSDK install "do" pollution of system stuff
<bvernoux> it is crap
<bvernoux> you can create an issue
<d1b2> <david.rysk> Yes so it’s better to install it from repo packages
<bvernoux> But so far VulkanSDK team is very slow to fix anything ...
<azonenberg> Hmmm did they pull the new version?
<azonenberg> someone here was using .229 earlier today (I thought)
<d1b2> <david.rysk> Any software you download from the vendor’s website and install will pollute system locations
<bvernoux> VulkanSDK issues => https://vulkan.lunarg.com/issue/home
<bvernoux> I have created this issue for WIndows https://vulkan.lunarg.com/issue/view/631adb345df112f88f25d523
<bvernoux> But I suspect it will be never solved
<bvernoux> as I doubt VulkanSDK team want to support mingw64 ...
<azonenberg> well we're moving away from mingw64 anyway
<d1b2> <david.rysk> I guess they didn’t push out a 1.3.229 package yet
<azonenberg> the plan is for ngscopeclient to build directly on visual studio
<azonenberg> yeah 1.3.229 is tagged in the repos 9 hours ago
<azonenberg> but no official release
<azonenberg> We're finding these issues fast, at least lol
<bvernoux> But Visual Studio build will take time
<bvernoux> as Visual Studio as lot of things strange ;)
<bvernoux> Maybe it is better with recent Visual Studio like 2019 or more
<azonenberg> someone (ehntoo i think?) did a successful build of ngscopeclient some time ago on visual studio
<bvernoux> But in paste it was clearly awful and the compliance with C++ was not very good ...
<azonenberg> This is no longer possible, because ngscopeclient now depends on libscopehal
<azonenberg> which is not fully gtk-free yet
<bvernoux> ha yes
<azonenberg> (at least, unless you want to get gtk building under visual studio)
<azonenberg> But we are not far from it
<bvernoux> yes without gtk it will be a big step to simplify lot of things (especially build the code ...)
<bvernoux> Anyway my issues on VulkanSDK is not only about to have lib for mingw64 it is mainly to have all headers like we have on Linux
<bvernoux> lib for mingw64 was clearly a last step which is not so important
<d1b2> <ehntoo> Not me, I try not to touch windows except when I have to. 😅
<azonenberg> lol same here. i forget who it was then
bvernoux has quit [Quit: Leaving]
<d1b2> <louis> azonenberg: are we in a happy position now for me to update my held zero-hold/histogram rendering patches against master and PR them?
<azonenberg> Yes, now is probably a good time for that
<azonenberg> i'm about to set the new renderer up in ngscopeclient
<azonenberg> if you can get it in before i do that
<azonenberg> then i wont have to port your changes over to both sides
<d1b2> <louis> OK, I will do that promptly and PR just that. Then separately PR a couple new filters.
<azonenberg> Great
<azonenberg> what filters?
<_whitenotifier-7> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±12] https://github.com/glscopeclient/scopehal/compare/b340e57c26e4...6022d1756b94
<_whitenotifier-7> [scopehal] azonenberg 6022d17 - Assigned names to a bunch of Vulkan objects. See #680.
<_whitenotifier-7> [scopehal] azonenberg closed issue #680: Start using Vulkan debug extensions to name objects (at least in debug builds) - https://github.com/glscopeclient/scopehal/issues/680
<_whitenotifier-7> [scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±7] https://github.com/glscopeclient/scopehal-apps/compare/48f00d8aa30b...61eba335c35b
<_whitenotifier-7> [scopehal-apps] azonenberg 61eba33 - Assigned names to a bunch of Vulkan objects
<d1b2> <louis> Window, clip, pulse width
<d1b2> <louis> BTW I need to add diff + +target_link_libraries(scopehal + SPIRV + SPIRV-Tools-opt + SPIRV-Tools +) to CMakeLists.txt to get it to link. Otherwise I get a bunch of undefined spv* symbols when linking glscopeclient
<azonenberg> nice. and hmmm, i think lain and bvernoux were chasing a bunch of linker issues but *thought* that was solved
<lain> azonenberg: we had some issues with compiled spv files not being found, that was a bug in my cmake changes which have since been patched. so I think what louis is talking about is unrelated to that
<azonenberg> or was it ehntoo?
<azonenberg> i distinctly remember in the apst week or two linker issues related to spirv
<azonenberg> Seems https://github.com/glscopeclient/scopehal/issues/679 is related to circular references and waveform groups not being properly cleared before shutdown
<azonenberg> Fixing...
<azonenberg> lain: oh i nearly forgot, another reason to ditch FFTS
<azonenberg> it segfaults under asan because it's doing JIT stuff
<d1b2> <ehntoo> I had modified the library include setup for Vulkan looks in d97c287 in scopehal as part of macos bring up of ngscopeclient
<d1b2> <ehntoo> *libraries
<d1b2> <Darius> that's how FFTS goes faster so not a surprise it JITs
<d1b2> <Darius> FFTW not license compatible with your code?
<_whitenotifier-7> [scopehal-apps] azonenberg pushed 1 commit to master [+0/-0/±5] https://github.com/glscopeclient/scopehal-apps/compare/61eba335c35b...e38ec20a0b19
<_whitenotifier-7> [scopehal-apps] azonenberg e38ec20 - Added some debug prints during shutdown. Fixed bug where WaveformArea objects were not actually destroyed during shutdown due to circular references to parent WaveformGroup. Fixes #679.
<azonenberg> darius: correct
<azonenberg> and yes but jit can play well with asan AFAIK. you just have to put the legwork in
<azonenberg> darius: anyway we're going all in on vulkan and removing all cpu-based FFTs long term
<d1b2> <Darius> I had a look at FFTS for work but it did seem a bit flaky unfortunately, seemed to be a bit abandoned 😦
<azonenberg> Yes. FFTS and clFFT are both abandonware with last commits in 2017
<azonenberg> i am not aware of any CPU-based FFT that is actively maintained and permissively licensed at this time
<azonenberg> so we're just going to full vkfft for everything