LookingGlass - a way to display guest output with pcie passthrough

If you, like me, ever wanted to get an output of the guest system (Windows for example) on the host machine (OpenSUSE fe :smiley: ) in PCIe passthrough scenario you might be excited after looking at this:


That’s simply amazing - I had hoped for this in a while. No more fiddling with streaming and thus latency, compression and all the other troubles. That how it should be in the first place (only sriov hitting the regular gpus market would in theory be better).
Would be awesome to see this project supported on OpenSUSE. Currently it is in alpha stage, but already what has been achieved is awesome.
Some further links:



Well, packaging is not really a rocket science and as you are so interested in it, you could also step in and maintain package for openSUSE …

I’ll be happy to - but I’ll need help. I’d need someone to show me howto do it - just the basics, enough to get me started (I can fill in the blanks by reading manuals). The reason is I have basically no experience compiling and packaging (not to mention programming). The docs and the whole infrastructure surrounding it (obs fe) are a bit confusing without a bit of introduction.

So far I did it only the dumbest way possible - pull the code from github, install all the required -dev packages (and thus crapify my syste a bit), launch make …

As my hardware is 3d rendering oriented (dual xeon workstation) handling compiling shouldn’t be a hassle once set up.

So for me no matter someone packages this for OpenSUSE or teaches me howto do it I’ll be happy :).

That makes it more complicated. Unless there are already RPM packages that could be adapted this means you will need to understand Makefiles at least to find out needed libraries (i.e .development packages).

I’d start with ensuring it compiles. It will likely give you at least some missing development libraries and some experience in how to interpret errors. Skip host part for now, cross-compiling will be too complicated for beginner (and pre-compiled host binaries are available anyway). Look in client/Makefile, it has list of LIBS; you will need to find packages that provide them. Brute force approach is to try naive zypper search, like “zypper se sdl2” → libSDL2-devel, libSDL2_ttf-devel. Apply common sense :slight_smile: Once development packages are installed, just try to compile by typing make. Post any errors you get …

thx Arvidjaar - I’m not afraid about hunting for dependencies. In fact, as mentioned, I did the “dummy” compiling of quite a bit of packages (by dummy I mean using “make” and checking out output without really understanding how it works). As “make” usually tells what’s missing it is just a matter of finding how needed -dev packages are called in OpenSUSE.
But it leaves a mess - I can do an “install” this way, but it is not a nice RPM, so unless the author provided uninstall script I have no sensible means of removing files added to the system in case something is screwed. On top of that I quickly accumulate those -dev bundles (luckily usually they’re not big).
So yeah , this I can do already :slight_smile: (and it wasn’t actually difficult to figure it out). But I’d love to learn howto make it properly and as mentioned I’m willing to maintain those as it would help others. Part of the reason I moved to OpenSUSE (from CentOS) is its great package availability while still remaining a strong “enterprise” system (thus usually proprietary apps I need for work do not cause issues).

Then just try creating a package in OBS. Start with wiki (https://en.opensuse.org/openSUSE:Build_Service_Tutorial) and here is real-life example (https://www.sidorenko.io/post/2016/05/build-packages-with-openbuild-service/). You can find information about RPM here : http://rpm.org/. I bet you can find much more examples simply googling for “rpm tutorial”.

Tutorials like this have one serious flaw - they’re one way street, you can’t ask question and get feedback.
Don’t get me wrong , I really appreciate them - huge chunk of the things I can do with my PC is thx to them. But they are much better when you need to expand your knowledge, fill in the gaps rather than when you want to learn something from scratch (when you try to learn something you literally know nothing about).
If you know nothing (or close to nothing) even coming up with a proper search term to find tutorial is a challenge.
It would be awesome to see a video tutorial showing someone setting things up, explaining how OBS fits in this (and how to use it) , and doing it on a real project. Nothing complex, but something involved enough that would show how dependecies requirement is added to the package file.
Anyways I’ll dig through the link you’ve provided - I have my fingers crossed.

I compiled LG using the “dummy” method. Finding out missing -dev packages I need to compile it was rather easy. LG works and wow, it makes a difference. The responsivness and image quality is miles ahead of other solutions I’ve tried. I’m still having some issues, but I think they’re on my side - I need to configure renderer options and play with the settings. As LG is in alpha stage it is not idiot-proof :wink: . I’m sure that when I’ll play with it a bit I’ll sort it out.

Well, somehow I managed to learn what I know now using information available on the net, so it is possible. Anyway, if you have concrete questions you are welcome to ask - better to use forums dedicated for this (Development subforums).

If you already managed to compile your program, you may consider trying to create RPM as the first step without delving into OBS making it less steep. Again, the first random hit which gives you basic steps for building package: https://eureka.ykyuen.info/2009/12/28/opensuse-build-a-rpm-package/