<_whitenotifier-7>
[scopehal-apps] azonenberg ef2c1f1 - Added preference for LeCroy scopes to force 16 bit resolution for network transfers. Fixes #477.
<electronic_eel>
ah, you are building on windows. this is more involved than on linux
<bvernoux>
yes
<bvernoux>
this Vulkan SDK is full of trap ;)
<electronic_eel>
at least it is not full of crap, so it is worth working around the traps ;)
<bvernoux>
yes
<bvernoux>
Just need to identify all env vars to set
<bvernoux>
then the magic will maybe happen ;)
<bvernoux>
so far I try to build here locally then I will try to fix the CI Build
<bvernoux>
which is a bit different
<electronic_eel>
but is c:\VulkanSDK\1.3.224.1\ a sensible install path for it on windows? i would more expect something like %ProgramFiles%\VulkanSDK\1.3.224.1\
<electronic_eel>
or %ProgramFiles%\Kronosgroup\VulkanSDK\1.3.224.1\
<bvernoux>
what a crap it was full of undefined stuff
<bvernoux>
it returns tons of things related to my GFX card
<azonenberg>
Yep. but does it work?
<azonenberg>
no errors there?
<azonenberg>
(also i just change the VulkanInit code to request api version 1.0 in libscopehal, but not pushed yet)
<bvernoux>
ok let's download latest Nvidia driver for my old GFX card ;)
<bvernoux>
yes it works
<bvernoux>
all vulkan examples works
<bvernoux>
vkcube.exe
<bvernoux>
vkcubepp.exe
<bvernoux>
vulkaninfo.exe (after comment of some defines not supported for windows ...)
<azonenberg>
(Have you tried another computer also?)
<bvernoux>
no
<bvernoux>
I will try on my other one
<azonenberg>
So at this point we dont know if it's a windows issue or something about this specific machine
<bvernoux>
yes
<bvernoux>
the build work at least
<bvernoux>
i'm not far to fix it on CI Build
<azonenberg>
great. if you want to PR those changes that's a start
<bvernoux>
but there is a path issue with ninja
<azonenberg>
(when you get it fixed)
<azonenberg>
also the Linux CI build is currently broken for similar reasons (lack of vulkan SDK)
<azonenberg>
if someone wants to work on that
<azonenberg>
i've been too busy to touch it
<bvernoux>
I'm installing NVIDIA Driver v425.31
<bvernoux>
instead of my old windows10 driver v388
<bvernoux>
that could change lot of things ;)
<bvernoux>
next step to test on my other really more recent computer with Quadro GFX card
<bvernoux>
It will be great to add the details of vulkaninfo in glscopeclient
<bvernoux>
especially to check if required features are present or not as we have a very extensive list of feature and if they are supported or not on the GFX card
<azonenberg>
So, we print out a ton of stuff once we have the context initialized :p
<azonenberg>
of all available cards and various features
<azonenberg>
most stuff is optional. almost all of the opengl features we need are standard/core in vulkan
<azonenberg>
if 8/16 bit integer support are available (not core but widely supported) we'll use them
<azonenberg>
with CPU-side software fallback if not available
<azonenberg>
we require 32-bit integer support (which is core) and will use 64 bit integers if supported, otherwise fall back with a shader based bignum library that splits them into 32-bit halves
<bvernoux>
hahaha
<bvernoux>
what a joke ;)
<bvernoux>
it works now
<azonenberg>
what changed
<bvernoux>
just relaunched glscopeclient.exe with newer Nvidia driver and it start
<azonenberg>
the driver?
<bvernoux>
Installed v425
<bvernoux>
instead of defautl windows10 v388 drivers
<bvernoux>
yes only the NVidia drivers
<azonenberg>
and does it actually work now? try actually loading a waveform etc
<azonenberg>
and if you run with --debug do you see vulkan info printed?
<bvernoux>
let's rebuild with vulkan 1.1 ;)
<bvernoux>
it shall work
<azonenberg>
i'm changing the code to use 1.0 so that it's more widely compatible
<azonenberg>
although i think all of our target platforms support at least 1.1, if i can get away with 1.0 i will
<bvernoux>
yes
<bvernoux>
could you push it ?
<bvernoux>
like that I will rebuild with exactly same code here
<bvernoux>
to heck
<bvernoux>
to check
<bvernoux>
I could push an alternative way to build glscopeclient for windows too
<_whitenotifier-7>
[scopehal-apps] azonenberg d14eea2 - Updated to latest scopehal
<bvernoux>
I confirm it work perfectly
<bvernoux>
oups
<azonenberg>
great. so now you just have to fix the CI?
<bvernoux>
yes the demo works
<azonenberg>
Great
<azonenberg>
At this point we're using vulkan internally in a few spots but most rendering is still GL. The main rewrite hasn't happened yet
<azonenberg>
but getting the infrastructure in place was necessary first
<bvernoux>
it clearly seems faster
<bvernoux>
there is memory optimization only right now ?
<bvernoux>
with vulkan instead of opengl ?
<azonenberg>
So one of the big recent changes is the new internal data model
<azonenberg>
where we don't drag around sparse offset/duration data for uniformly sampled waveforms anymore
<azonenberg>
there's a lot more RTTI checks and code complexity to make up for it
<azonenberg>
but the net result is a 5x reduction in ram consumption and ram bandwidth used by uniformly sampled waveforms
<bvernoux>
ha great
<azonenberg>
we're now also using memory pools in the Pico driver (not yet deployed elsewhere) to avoid excessive allocations and deallocations of DMA-pinned memory (expensive, several ms each)
<bvernoux>
especially as uniformly sampled waveforms is used for 99% of case
<azonenberg>
Yes
<bvernoux>
which means same base time correct ?
<azonenberg>
Correct
<bvernoux>
which never change
<azonenberg>
well
<azonenberg>
it can change but not within the waveform
<bvernoux>
so yes it is a very good optimization
<azonenberg>
we had some optimizations in place for that already
<azonenberg>
but they were only when consuming the data
<azonenberg>
you still had to produce the offset/duration values even if you never read them
<azonenberg>
this refactoring took me almost two weeks and completely changed the internal data model to be two separate class types
<azonenberg>
and now the data is not stored if not used
<azonenberg>
we also have some more major improvements that you won't see yet
<azonenberg>
where we store data in combined CPU/GPU buffers and only copy if necessary
<azonenberg>
this will start to show visible performance improvements once the new Vulkan renderer lands
<azonenberg>
and when we've pushed more waveform processing to Vulkan
<azonenberg>
in particular there will be a lot less needless memcpy'ing
<azonenberg>
and a lot less redundant CPU-GPU-CPU transfers
<azonenberg>
ultimately the goal is to have waveform data pushed from CPU to GPU, live almost exclusively on the GPU, and only be copied to the CPU if needed by a filter block that doesn't have a GPU version available
<_whitenotifier-7>
[scopehal-apps] azonenberg a90321d - Updated comment header in unit test
<_whitenotifier-7>
[scopehal-apps] azonenberg c0b490a - Fixed major regression causing corruption of uniformly sampled waveform data when saving a file
<azonenberg>
balrog, bvernoux: please update to that version ASAP