freezy / dmd-extensions

A toolbox for virtual pinball dot matrix displays.
GNU General Public License v2.0
127 stars 54 forks source link

Request: VirtualDMD to override Windows scaling #354

Open maartenlangeveld opened 1 year ago

maartenlangeveld commented 1 year ago

edit: narrowed down the issue

Hi,

First, thanks for the great dmd-extensions! I have installed FlexDMD that uses dmd-extensions.

Use dmd-extensions for virtualdmd by means of "Use external DMD (dll)" enabled in VPinMAME. For some reason the virtual DMD looks horrible. It's displayed in double (in both directions) size than configured.

Setup: single 4k monitor, VPinMAME: cabinet mode, VPX: full screen Windows 11, display scaling: 200%

~~Properties for VPinballX.exe: Compatibility : High DPI settings : High DPI scaling override: Scaling performed by application~~

Settings for VPinMAME: "Use external DMD (dll)" enabled

When I set Windows 11, display scaling to 100%, everything looks fine. Is it possible to have dmdext override my default display scaling (200%) ?

When I configure FlexDMD to use UltraDMD and running a UltraDMD table everythings works as expected (DMD with squared dots). However when I configure FlexDMD to replace UltraDMD (hence use dmd-extensions virtualDMD with the nice rounded dots) the DMD gets enlarged by 2x (probably due to Windows display scaling setting). When I reduce the DMD size by half the pixels in both directions, the DMD-screen size is restored but then it looks horrible.

Is there a way to have the virtualdmd override the Windows display scaling settings (following VPinballX.exe properties) as UltraDMD does ?

Thanks a lot,

Maarten

freezy commented 1 year ago

Sorry for the late reply. I'm not 100% sure what the difference between "using" UltraDMD and "replacing" UltraDMD is. Maybe @vbousquet could comment?

Also, I never had any scaling issues with dmdext, and I'm running displays at 200% as well. Can you maybe post screenshots of how your DMD looks vs how it's supposed to look?

maartenlangeveld commented 1 year ago

Forget about FlexDMD, it was my fault to think it has anything to do with it, which in fact is not.

Two screen shots:

Would be nice if somehow dmd-ext could be configured to override Windows high DPI scaling.

Screenshot 2023-04-20 191241 Screenshot 2023-04-20 190921

freezy commented 1 year ago

Would be nice if somehow dmd-ext could be configured to override Windows high DPI scaling.

Why, wouldn't it just be easier to configure the size directly? You are not changing Windows' scaling settings regularly, are you?

maartenlangeveld commented 1 year ago

Then I have to configure half the size in both directions, which will be expanded by Windows to final size, resulting in blotchy virtual dmd display.

freezy commented 1 year ago

I don't understand. Can you post a screenshot for what you mean by blotchy? The look fine above?

maartenlangeveld commented 1 year ago

Windows 100% scaling

virtualdmd left = 32 virtualdmd top = 32 virtualdmd width = 1152 virtualdmd height = 288

virtual dmd 1152 x 288 windows scaling100 pct

Windows 200% scaling

virtualdmd left = 16 virtualdmd top = 16 virtualdmd width = 576 virtualdmd height = 144

(exactly same output size on screen: 1152 x 288 due to Windows 11 200% display scaling)

virtual dmd 576 x 144 windows scaling 200 pct

freezy commented 1 year ago

Hmm, weird, I don't think I have that effect with 200% scaling. I'll try to repro later.

maartenlangeveld commented 1 year ago

Ok, let me know. Thanks!

Not a surprise things get blotchy since one loses lots of resolution (1/4 pixels : 1/2 h x 1/2 v).

maartenlangeveld commented 1 year ago

Is it possible to have dmdextension bypass windows 11 display scaling?

That means pixels are not expanded:

virtualdmd left = x virtualdmd top = y virtualdmd width = w virtualdmd height = h

x,y,w,h are actual pixels and not altered when windows 11 desktop has scaling active?

Now, when for example windows scaling is set to 200%: x --> 2 x y --> 2 y w --> 2 w h --> 2 h

Which needs to cut all dimensions in half while dmdextensions expands which leads to loss of resolution and blotchy displays.