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 quit [Ping timeout: 240 seconds]
Degi has joined #scopehal
Bird|otherbox has quit [Ping timeout: 240 seconds]
Bird|otherbox has joined #scopehal
massi has joined #scopehal
<_whitenotifier-e> [scopehal-apps] lainy opened pull request #536: macOS compatibility - https://github.com/glscopeclient/scopehal-apps/pull/536
<_whitenotifier-e> [scopehal] lainy opened pull request #719: macOS compatibility - https://github.com/glscopeclient/scopehal/pull/719
bvernoux has joined #scopehal
bvernoux has quit [Ping timeout: 250 seconds]
<azonenberg> lain: why remove FFTS only for m1?
<azonenberg> if you've put in the work to not need it, why not go all the way
<d1b2> <david.rysk> doesn't seem like the functionality is replaced yet
<d1b2> <david.rysk> e.g. LogFatal("DeEmbedFilter CPU fallback not available on Apple Silicon");
<azonenberg> So that's the fallback path we never use
<azonenberg> outside of unit tests
<azonenberg> so it sounds like the only missing thing is integrating a non-GPL FFT lib in the test cases (accepting that this means the unit test binaries become GPL - this is OK IMO as we won't redistribute them)
<d1b2> <david.rysk> (or cpu-based vkfft)
<azonenberg> well so i specifically wanted another fft lib to cross check vkfft against so that any problems with how we set up vkfft get noticed
<azonenberg> or any patches we might make to vkfft in the future
<azonenberg> vkfft in e.g. swiftshader won't fulfill that
<azonenberg> anyway it sounds like ffts is not 100% removed yet. but this continues to be a goal
<azonenberg> but yes the gpu filter disable flag is bascially only used in unit tests, i dont even know if ngscopeclient supports setting it via a debug argument
<azonenberg> the idea being vulkan is now so core to application functionality there's no reason to even consider the scenario where it's not available
<azonenberg> and sorry i meant, integrating a GPL FFT lib in the test cases
<azonenberg> i.e. fftw
<azonenberg> we just need to be careful about cross contamination and make sure we never use it outside of test cases
<azonenberg> having the code to detect/link to it only be in the tests directory should be sufficient
<d1b2> <david.rysk> is PocketFFT usable?
<azonenberg> No idea, this is the first iv'e heard of it
massi has quit [Remote host closed the connection]
<azonenberg> lain: reviewing the PR: compute queues do indeed need transfer capability because you very often bind an AcceleratorBuffer to a compute shader which doesn't contain an up to date GPU copy of the waveform
<azonenberg> you don't want to have to stop and sync between multiple queues for that
<azonenberg> that said, IME transfer is enabled in ~every queue type for exactly that reason
<azonenberg> so asking for it isnt a big deal
<azonenberg> compute and graphics capabilities are the less common ones
<azonenberg> lain: also, if i understand this right, QueueHandle's are tied to a specific queue family even on Metal?
<_whitenotifier-e> [scopehal] azonenberg closed pull request #719: macOS compatibility - https://github.com/glscopeclient/scopehal/pull/719
<_whitenotifier-e> [scopehal] azonenberg pushed 14 commits to master [+26/-2/±209] https://github.com/glscopeclient/scopehal/compare/1ebbb2534ca1...bd8909a72524
<_whitenotifier-e> [scopehal] azonenberg bd8909a - Merge pull request #719 from glscopeclient/macos macOS compatibility
<azonenberg> also you used spaces not tabs for indentation :p
<azonenberg> in QueueManager.h
<_whitenotifier-e> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±2] https://github.com/glscopeclient/scopehal/compare/bd8909a72524...c3316e24afd8
<_whitenotifier-e> [scopehal] azonenberg c3316e2 - QueueManager: fixed indentation to use tabs
<azonenberg> lain: so if i understand this right, spectrogram is the only filter which actually breaks on macos
<azonenberg> ofdm demodulation and tdr de-embed are both WIP filters that are not actually functional anywhere
<azonenberg> and fft/de-embed etc work using vkfft
<azonenberg> so as long as you dont set the "no gpu filter" flag spectrogram is the only breaking bit
<_whitenotifier-e> [scopehal-apps] azonenberg closed pull request #536: macOS compatibility - https://github.com/glscopeclient/scopehal-apps/pull/536
<_whitenotifier-e> [scopehal-apps] azonenberg pushed 23 commits to master [+25/-11/±268] https://github.com/glscopeclient/scopehal-apps/compare/97ad3ab4baa8...d097f2a6e0c6
<_whitenotifier-e> [scopehal-apps] azonenberg d097f2a - Merge pull request #536 from glscopeclient/macos macOS compatibility
<_whitenotifier-e> [scopehal-apps] azonenberg pushed 2 commits to master [+0/-0/±4] https://github.com/glscopeclient/scopehal-apps/compare/d097f2a6e0c6...b5bbb8916ea1
<_whitenotifier-e> [scopehal-apps] azonenberg a6ed381 - FilterGraphEditor: minor appearance tweaks
<_whitenotifier-e> [scopehal-apps] azonenberg b5bbb89 - Updated submodules
<_whitenotifier-e> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://github.com/glscopeclient/scopehal/compare/c3316e24afd8...fe09e8627a86
<_whitenotifier-e> [scopehal] azonenberg fe09e86 - QueueManager: fixed some formatting, use LogTrace() for handle reuse notification to reduce spam
<_whitenotifier-e> [scopehal] azonenberg pushed 1 commit to master [+0/-0/±1] https://github.com/glscopeclient/scopehal/compare/fe09e8627a86...8043c949d225
<_whitenotifier-e> [scopehal] azonenberg 8043c94 - AcceleratorBuffer: more fixes for empty buffers
<_whitenotifier-e> [scopehal-apps] azonenberg pushed 2 commits to master [+0/-0/±3] https://github.com/glscopeclient/scopehal-apps/compare/b5bbb8916ea1...e6408bd569de
<_whitenotifier-e> [scopehal-apps] azonenberg a31c543 - Fixed broken refactoring on AVX systems
<_whitenotifier-e> [scopehal-apps] azonenberg e6408bd - Updated submodules
<d1b2> <david.rysk> could you add that homebrew path to glslang_c_interface.h?
<d1b2> <david.rysk> homebrew does /opt/homebrew/include/glslang/Include ; macports probably does /opt/local/...
<azonenberg> Send a PR
<d1b2> <david.rysk> I haven't tested without homewbrew installed
<azonenberg> Then coordinate with lain and ehntoo and any other mac folks here
<azonenberg> lain: anyway i just merged a bunch of your changes and fixed some things that broke on x86
<azonenberg> as well as broken unit tests
<azonenberg> lain: also suggestion: right now it seems your queue allocation is greedy
<azonenberg> you find the first queue meeting the requested type and hand it out
<azonenberg> we could probably get better results if you were a bit more choosy
<d1b2> <david.rysk> lain, ehntoo: can you add those two lines to lib/schopehal/CMakeLists.txt and see if it works?
<azonenberg> in particular if you ask for a transfer-only queue and there's a transfer-only family, use it
<azonenberg> and if you ask for a compute-but-not-render queue and there's a matching family, use that
<azonenberg> As it stands, on nvidia, we risk allocating all of the general purpose "use for everything" queues first
<azonenberg> and using them for things that don't actually need that functionality
<azonenberg> then when it comes time to allocate, say, a render queue there might be none left
<d1b2> <david.rysk> otherwise I'll prepare a PR later
<d1b2> <ehntoo> catching up on scrollback. azonenberg, I think I can answer your question of "also, if i understand this right, QueueHandle's are tied to a specific queue family even on Metal?" - yes. Vulkan ties a command buffer to a queue family, but in Metal a command buffer is tied to a particular queue rather than the family. MoltenVK papers over that by only having a single queue in any particular family, so we'll need to tie a handle to a particular
<d1b2> family.
<d1b2> <ehntoo> @david.rysk re: additional includes paths for glslang_c_interface.h, I see no reason it should break anything. I'd really like to get rid of those explicit paths entirely, but haven't sat down to figure out the right CMake incantations. That said, If another explicit path fixes something for you now and doesn't break macOS CI, I personally have no objections to adding it. I won't be able to sit down and do a trial myself for a bit.
<d1b2> <david.rysk> Yeah fixing the cmake script would be best long term. I’ll look into it