Hey Zhiyi,

You mention having originally done this work about a year ago ~ Do you happen to have an older iteration of the patchwork? - I ask because currently, I am using a somewhat heavily modified version of Wine-7.5 (also it also predates the 32on64 work, and various functions being renamed. eg: NtUser*, props stuff, etc)... An older iteration may actually apply more cleanly, not require as much to do.

Sticking with an older version of wine due to better performance + avoiding some regressions for my particular usage. 

The bugs sound fairly minor, and your patchwork does seem like what I"m probably after most likely. I'm super intrigued. -- Please let me know if you can dig up non-rebased (on upstream/8.0-rc2)  patchwork.. I'd be super eager to try that out, before trying to rebase/backport to Wine-7.5

Thanks a million!

Jordan

On Thu, Jan 5, 2023 at 9:19 PM Zhiyi Zhang <zzhang@codeweavers.com> wrote:
Hi Jordan,

I did work on GDI unaware scaling for HiDPI support about a year ago. The idea is that
winex11.drv scales windows for those applications that doesn't really support HiDPI
but the monitor is using a DPI higher than 96. Basically, winex11.drv hides unscaled
windows and use XDamage and XRender extension to scale the content to a new X window
that will be actually shown.

I have a branch at https://github.com/zzhiyi/wine/commits/gdi-unaware-scaling and it doesn't work
right now because of the 32on64 work that moves some user32 function into win32u.
Specifically, I need to fix the compilation error in is_dpi_unaware_scaling_required(). But maybe
you can just hack it to return TRUE to make it work. You also need to set DPI in winecfg to 192 for example.
Then things should generally work although there are some bugs need to be fixed. For example,
launching application after wine prefix creation somehow hides the cursor. And it breaks some d3d tests.

Now that 32on64 work has quite down for winex11.drv, I think I am resume this work.
I may revisit this and try to upstream this in the near future.

You might want to try https://github.com/kaueraal/run_scaled as well.

Thanks,
Zhiyi

On 1/5/23 23:32, Jordan Johnston wrote:
> Hey all,
>
> I'm looking for some pointers on coming up with a hack to better support
> HiDPI with wine on my hi-res display (not something that would be submitted
> upstream. "hack" indeed)... As you are all probably aware; while you can
> adjust DPI in Winecfg, that only affects Windows UI elements  ~ but It does
> not help with anything outside of that... I have some apps that are
> basically unusable with HiDPI and i've tried multiple solutions, to no
> avail. (and setting my resolution to 1440x900 isn't a viable solution
> either).
>
> I've been poking around dlls/winex11.drv and I'm wondering if anyone might
> have pointers on how some of the scale related stuff works? -- I'm
> wondering if it may be possible to hack the x11 code to multiply the scale
> of the window contents? (and perhaps, I can then wrap it in an env variable
> for use)...
>
> If anyone has any pointers, or if they think something like this could work
> -- I'd appreciate your insights (again, I'm just looking for kind of a
> one-off hack, not something upstream-able.. I'm sure HiDPI
> compatibility-mode will land upstream, at some point (Windows has this)).
> While I am familiar with some of Wine's internals - the graphics stack,
> window management / x11 code is somewhat alien to me.
>
> Alternatively, i suppose if someone is working on related code and has a
> git branch / patchwork available, I'd be open to try that out too.
>
> Thanks, and Happy New Year to you all!
>
> Jordan
>
>
>