Giter VIP home page Giter VIP logo

Comments (2)

ydirson avatar ydirson commented on May 23, 2024

As it happens, my search had not uncovered those two project when looking for prior work. Here is my understanding from the projects overviews, especially in what they differ from what I've in mind.

Their primary and common advantage is that they are already available, and apparently advanced enough to be used right now.

VirtualGL

  • really tied to GLX. EGL support is only on server side, where they emulate the GLX commands not available directly with EGL. Vulkan is won't implement.
  • the program runs on the "application server", renders to offscreen framebuffer and stream the image to thin client

gl-streaming OTOH uses what they call the "Old School Approach: Indirect Rendering". This surely has drawbacks, but the VirtualGL approach just won't allow to have the GPU and the app in different qubes

gfxstream aka. vulkan-cereal

  • very scarce documentation (compare this with VirtualGL's detailed one that even includes historical information to place their software in context), which does not allow to understand the architecture -- it could very well have a structure similar to VirtualGL (which would make it unsuitable for the Qubes model)
  • generator for APIs, instead of handcrafted ones. I have a plan to automate code generation further in gl-streaming with preprocessor macros, for the hand-selected cases where it makes no sense to just cut'n'paste the template. But it seems that at least on GLES side they don't really deal with those cases that don't fit in the auto-generated framework (a function like glVertexAttribPointer, arguably a bad^Hhistory-laden API, appears with flag unsupported in their API definitions and does not appear to come with a custom implementation)
  • huge code base, even including a copy of the Vulkan API/registry files in a directory where they mix in their own stuff (bad practice to say the least)
  • low quality build instructions ("make -j24" for everyone ? really ? not even talking about their build-host.sh script referring to a non-shipped toolchain file, and their "Make sure you are using Clang as your CC and clang++ as yourCXX" instead of providing a proper build commandline)
  • low quality build files (has requirements on toolchain/version but does not give a clue, does not check for library dependencies in cmakefile...)
  • clang-7 from debian-10 and clang-11 from debian-11 are apparently not sufficient, the latter is still not able to build fake-android-guest (whatever that has to do with building on Linux -- looks like the main program using this, ie. their scuttlefish android emulator, leaks a bit into gfxstream)

All in all, would requires some dedication to be able to test anything, as well as to dig into the amount of code to understand if it fits at all.

from gl-streaming.

 avatar commented on May 23, 2024

I see, my intention would have been to use either of these as a scaffolding infrastructure paired with special Qubes' tools. I will also agree that Google's documentation is sparse and messy, and navigating their repositories feels quite challenging. Thanks for taking the time to write out this explanation.

from gl-streaming.

Related Issues (1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.