Giter VIP home page Giter VIP logo

Comments (7)

weary-adventurer avatar weary-adventurer commented on August 16, 2024

Another clue: When I call DwmGetCompositionTimingInfo on Windows 10 I'm getting these numbers:

rateRefresh = 64/1 = 64.00
rateCompose = 64/1 = 64.00
qpcRefreshPeriod = 1562500 = 15.62ms

So DWM supposedly also thinks it's running at 64hz. But it looks like that's not true.

from win32capturesample.

weary-adventurer avatar weary-adventurer commented on August 16, 2024

Windows 10 DDA capture inside RDP session with DWMFRAMEINTERVAL registry hack shows consistent vsyncs and the dwm.exe bars don't stretch until vsync lines:

win10_rdp_gpuview

Compared with Windows 10 DDA capture inside a regular session:

image

from win32capturesample.

robmikh avatar robmikh commented on August 16, 2024

I'll need to take a closer look, but my immediate reaction is that this sounds like either a QEMU issue or something lower level than the system compositor. We can't influence the vsync in a way that would make it inconsistent like that. Even more telling that you can make it behave using RDP, as RDP uses an indirect display driver and likely circumvents the QEMU display driver.

Thanks for the report!

from win32capturesample.

weary-adventurer avatar weary-adventurer commented on August 16, 2024

It also happens with basic VGA (basicdisplay.sys), QXL drivers (qxldod.sys) and no display at all (-vga none), but only since Windows 10.

On Windows 8 and 8.1 it gets consistent 64 fps as seen in the first screenshot with QXL drivers.

from win32capturesample.

weary-adventurer avatar weary-adventurer commented on August 16, 2024

I've profiled the same Windows 10 with standard VGA just now (-vga std or -device vga) with this setup:

The test was running the DDA capture program, GPUView log and UFO Test in a browser.

image
image

As usual, connecting to RDP session and using DWMFRAMEINTERVAL hack guarantees more than 64fps:
image

In a normal session, UFO Test measure 64fps and 64hz but capture shows only about ~30fps.
It seems like maybe the browser is able to render at 64fps but DWM only renders at 30?

GPUView shows a similar picture but with a few differences. Vsync is still a bit inconsistent but the frames don't actually come on every vsync timing and are sometimes delayed. Also there a few abnormal peaks:

win10_vga_peaks

Peak zoomed in:

image

After the peaks there are some delays after which I see these chunks (edited image):

win10_vga_avg

from win32capturesample.

weary-adventurer avatar weary-adventurer commented on August 16, 2024

Another profile from same Windows 10, this time with VirtIO VGA (-device virtio-vga) and viogpudo.sys driver (https://github.com/virtio-win/kvm-guest-drivers-windows/tree/master/viogpu/viogpudo)

image

Active signal resolution -1 x -1?

image

RDP session with DWMFRAMEINTERVAL hack as usual, 64fps+

Regular session is about ~20-30 fps (same results)

Slightly different GPUView, no more peaks in DDA capture program but instead some peaks in dwm.exe:

win10_virtiovga_gpuview

Zoomed in:

win10_virtiovga_2

from win32capturesample.

weary-adventurer avatar weary-adventurer commented on August 16, 2024

Is there anything I can try on my end to get this solved? I could use a different driver or compile a sample WDDM driver but I'm not sure what to change as both QXL and VirtIO drivers seem to be based on WDDM examples. Any advice would be greatly appreciated as it's quite difficult to figure out how to approach this problem. Thank you!

from win32capturesample.

Related Issues (20)

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.