the one thing linux really hasnt been made on par with winblows yet is the dreadful amount of options for android simulation -the most popular choice seems to be Waydroid, but its such an unneeded hassle to set up at all -genymotion is just slow -and than you have things like android x86 which entirely defeat the point of an emulator

  • 520@kbin.social
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    no, there is no difference between virtualization and emulation.

    Yes there is.

    virtualizations just hardware accelerated emulation. That’s it.

    Actually it’s the opposite: virtualisation does as little emulation as possible. At a high level, it acts more as a ring-fence around native resources than an actual emulator. With most virtualisation, the only things that are getting emulated are minor components with little computing involved like sound and networking cards.

    The reason virtualisation is so fast compared to emulation is because it’s running the code as-is and not translating it.

    If that is the bar, then there are incredibly few Android emulators.

    That is correct. You basically have QEMU and that’s it.

    oftentimes you are emulating GPU.

    Not exactly. If you are not doing GPU passthrough, either fixed or mediated, most virtualisation software use API forwarding for 3D acceleration APIs. That is, the hypervisor passes calls to Vulkan, DirectX, etc, from the guest to the host, has the host’s GPU render it, then pass it back.

    GPU emulation is a very last resort, as the performance is dreadful.

    • drwankingstein@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      Virtualization is a specialization of emulation. to emulate something merely means to imitate. virtualization is still emulating a secondary PC environment. Saying virtualisation is not emulation is just fudging terms because people don’t like the implication that the term “emulation” has. I recommend reading WINE’s FAQ where even they admit that it would be more accurate to say “wine is not just an emulator”. Virtualization is just a subclass of emulation.

      most virtualisation software use API forwarding for 3D acceleration APIs

      this is a common misconception Most VMMs emulate GPU. virtualbox, vmware, wsa, and qemu all emulate GPU (or rather, technically a gallium driver) for opengl support on linux and even windows. as windows guests under virtualbox actually uses gallium nine/dxvk under the hood (perf is still crap somehow though). the technical breakdown for qemu would be [ host gpu <–> gallium <–> opengl <–> qemu pipe <–> virgl <–> gallium calls <–> opengl <–> application ]

      vmware/vbox are slightly different as it’s an accelerated backend to vmgfx but that too emulates a gallium backend on linux meaning it’s doing ogl -> gallium -> ogl etc… Hyper-v/wsa is the exact same situation as both. I don’t believe that bluestacks and memuplay deviates from this greatly. though it’s not something I have looked in depth into.

      it wasn’t until recently with virglrenderer venus for qemu/crosvm and hyper-v gpu-pv that we have gotten real API forwarding for VMs (technically android’s cuttlefish also had it IIRC, but preformance was terrible when I played with it, hyper-v also had something but it was really bad too).

      as for other forms of api forwarding, qemu-3dfx is a prime example of real “api forwarding” to an extent, rather it forwards 3dfx and opengl calls to the host. and you can have d3d support via wined3d.