I build a new HTPC and decided to base it on Intel's CPU with Intel integrated graphics (UHD Graphics 630), because of it's capabilities to hardware accelerate H.265/HEVC content (futureproof), and the wide support there is for Intel's hardware acceleration from playback software and streaming services compared to nVidia/AMD.
I'm experiencing some problems with the display scalar setting, which I believe is caused by the driver implementation.
My HTPC is hooked up to a receiver with 2x HDMI outputs. One output is used for my LCD TV and the other output for my projector screen.
The 1080P resolution on my LCD TV in standard driver/graphics settings shows an oversized image so I cannot see the borders of the Windows desktop. This is an easy fix as I can just go to Intel graphics settings and use the custom display scalar to downsize the image so it fits to the TV (setting 68 out of 100 both H and V).
Now here comes the problem: My projector screen does not need to use the display scalar feature to show the entire image, but the display scalar settings is remembered, when switching from HDMI output #1 to HDMI output #2. So now the projector screen will show an undersized image, because it's using the display scalar settings used with my LCD TV. Only fix is to go to Intel graphics settings and change display scalar to 100/100 again, which is a pain to do everytime I switch between the HDMI outputs.
Since both screens is connected through my receiver the display is for both screens recognized as my receiver (Pioneer VSX-923) so it would appear Windows/Intel graphics only knows 1 display (the receiver). However Windows knows the outputs are different displays as it creates separate EDID entries in registry database under "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY" for HDMI output #1 and #2, even though both entries has the same names and info.
Qualified guess of the root cause:
1. Intel display scalar is implemented as a global setting, rather than being tied to a specific display known by Windows in the registry database.
2. If Intel display scalar is mapped to a specific display so settings will default if a new "unknown" display is connected, then the implementation must be grouping multiple EDID's entries with same name/info to a display already known by Intel graphics driver, instead of using the unique identifier for the display in the Windows registry database.
This is working with nVidia drivers. nVidia maps display scaling to a specific display, so in my previous HTPC where I used Geforce graphics this was not a problem.
I verified the multiple EDID entries in the Windows registry for my receiver was indeed HDMI output #1 and #2 by using CRU 1.3 utility (custom resolution utility that will modify EDID info and resolution capabilities). I modified one of the entries not to support 1080P, but only 720P. The result was that device connected to HDMI output #2 would now only do 720P, where the unmodified EDID belonging to device connected to HDMI output #1 would do 1080P.
Hope this can be fixed so I don't have to go invest in a GTX 1660 and increase power consumption + noise of the HTPC.