Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to Accelerate All Windows in Windows? #1

Open
HeliosHub opened this issue Aug 19, 2024 · 3 comments
Open

How to Accelerate All Windows in Windows? #1

HeliosHub opened this issue Aug 19, 2024 · 3 comments

Comments

@HeliosHub
Copy link

sharedgl can accelerate applications use opengl. If I want to accelerate all Windows in Qemu Windows, how to implement?

@dmaivel
Copy link
Owner

dmaivel commented Aug 19, 2024

I believe accelerating the entire system will require implementing a render-only / full graphics WDDM driver (see here). I haven't done much experimentation with implementing a WDDM driver yet, but you can look through the following sources to get an idea of how you could implement a render-only driver:

Note that there are a handful of existing display-only drivers, which can serve as good starting points (just know that you will have to implement all the render-specific DDIs on top of the existing display-specific DDIs):

You most likely will need to write an additional usermode driver as well, but you can look at Mesa's d3d10umd or the VC4 source for that. You may also want to take a look at the source for IVSHMEM on acquiring the shared memory device, which in this case should act as the GPU device.

I am open to contributions, so don't hesitate to send a pull request if you make any progress. If I ever make any progress on implementing a WDDM driver (no promises), I'll be sure to update this project to include it.

@dmaivel dmaivel closed this as completed Aug 19, 2024
@dmaivel dmaivel reopened this Aug 19, 2024
@HeliosHub
Copy link
Author

I believe accelerating the entire system will require implementing a render-only / full graphics WDDM driver (see here). I haven't done much experimentation with implementing a WDDM driver yet, but you can look through the following sources to get an idea of how you could implement a render-only driver:

Note that there are a handful of existing display-only drivers, which can serve as good starting points (just know that you will have to implement all the render-specific DDIs on top of the existing display-specific DDIs):

You most likely will need to write an additional usermode driver as well, but you can look at Mesa's d3d10umd or the VC4 source for that. You may also want to take a look at the source for IVSHMEM on acquiring the shared memory device, which in this case should act as the GPU device.

I am open to contributions, so don't hesitate to send a pull request if you make any progress. If I ever make any progress on implementing a WDDM driver (no promises), I'll be sure to update this project to include it.

Thank you for your reply. I have another question I would like to ask you. VirtualBox also has a display only driver, but it is smoother than the DOD driver of QXL. Do you know why?

@dmaivel
Copy link
Owner

dmaivel commented Aug 20, 2024

I think QXL appears choppier due to a hardcoded limitation in QEMU, not QXL itself. The frame rate of QEMU is artificially capped to around ~33 FPS, so it won't appear as smooth.

I am not well-versed with VirtualBox, but it does appear that they offer a WDDM driver with rendering capabilities, if 3D acceleration is enabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants