VOGONS


First post, by SkyHawk

User metadata
Rank Newbie
Rank
Newbie

First of all, thank you so much for this project. It has enabled me to play several old games I'd given up for dead on modern computers!

One of the things Supreme Commander was very notable for when it launched in 2007, was the ability to use two monitors - typically you'd have a "primary" monitor you did most of the playing on, and you'd keep a zoomed-out map up on the 2nd monitor, but you could zoom in and do stuff on it also if needed.

This was done via "Fullscreen" mode, configured in the game's options. It allowed you to select what resolutions you wanted both for the primary and secondary display. It did not have any mechanism for selecting *which* secondary display you wanted to use.

On my modern Windows 10 machine, Fullscreen support is completely broken without dgVoodoo2. With dgVoodoo2, Fullscreen on the Primary display appears to work fine, but things break if the game is configured to use the secondary display. The game does appear to be correctly enumerating the secondary display (The list of resolutions it gives me is correct to the number 2 monitor on the system). The secondary display never initializes or shows up, and the Primary display ends up being resized to something like 640x480 or 800x600, despite being configured for 2560x1600.

Would you be interested in taking a stab at getting this working? If so, what diagnostic information can I get for you?

Reply 1 of 27, by swaaye

User metadata
Rank l33t++
Rank
l33t++

I play lots of Forged Alliance. If I remember right, there's another approach to this with the game. You can set it to windowed, stretch it across the monitors, and then run split screen (Home key). You might prefer windowed mode anyway since you can easily do other things in Windows while playing.

The fullscreen dual monitor mode tended to cause crashes when I last used it. Maybe Windows 7 days.

Reply 3 of 27, by Dege

User metadata
Rank l33t
Rank
l33t

I added multihead support to D3D9, try this:

http://dege.fw.hu/temp/dgVoodoo_2_78_3_D3D9_multihead.zip

But keep in mind that both the primary and secondary output must be attached to the same GPU, to form an "adapter group".
If they are attached to separate GPU's then they aren't a group (that's how dgVoodoo exposed all outputs so far) and the game can only utilize only the primary output, interestingly with the resolution set for the secondary one (I checked it).
This must be a bug in the game because it seems to blindly assume that multiple outputs always form a group. Multi-GPU machines weren't common in 2007.

Reply 4 of 27, by SkyHawk

User metadata
Rank Newbie
Rank
Newbie

Game behaves differently, but not correctly.

CNbyPpr.png
Second display is not initializing.

Primary display also flickers and locks up upon entering into a match. Game behaves correctly if I disable the Secondary display.

I think there's also some visual effects not showing up with dgVoodoo. I'll post a separate reply with some video capture.

Reply 6 of 27, by Dege

User metadata
Rank l33t
Rank
l33t

Weird. TBH, multimonitor mode should work even natively, Win10 isn't that broken in this respect.
Could you attach a log from the dbg version of d3d9, to see what outputs you have?

http://dege.fw.hu/temp/dgVoodoo_2_78_3_D3D9_m … ltihead_dbg.zip

Btw, Supreme Commander Forged Alliance is the same game as plain Supreme Commander? I have the latter one.

Reply 7 of 27, by SkyHawk

User metadata
Rank Newbie
Rank
Newbie

> Btw, Supreme Commander Forged Alliance is the same game as plain Supreme Commander? I have the latter one.

Substantially the same game. I don't know if engine improvements were made, but if there was they were pretty minor. There's a couple new units, an entire new faction, and a new campaign with cinematics.

Reply 9 of 27, by Dege

User metadata
Rank l33t
Rank
l33t

Run DebugView++ (https://github.com/CobaltFusion/DebugViewPP/releases), it'll capture the debug output. For more, see:

Spec Release dgVoodoo version (with Debug Layer)

If I go into Skirmish mode I get to a different map than in Forged Alliance (or, I don't know if it can be changed somewhere) but there I can't reproduce the rendering errors.

Reply 11 of 27, by SkyHawk

User metadata
Rank Newbie
Rank
Newbie

Just to be sure we're testing apples-to-apples, I've gone and installed the base Supreme Commander.

It's behaving just like Forged Alliance, in terms of secondary display and missing gate-in visual effect.

Reply 12 of 27, by Dege

User metadata
Rank l33t
Rank
l33t

Thanks!
So, you have 6 display outputs... that's nice! 😀
There is an error in the log:

[dgVoodoo] ERROR: Direct3D9 (02D2F788)::CreateDevice: Multihead device creation is requested (D3DCREATE_ADAPTERGROUP_DEVICE), so EnableAutoDepthStencil must be the same for all presentation paramters in the array. Data [2] is different from the previous ones

So, I think the thing is the following: the D3D9 API enables multihead working mode, but in that case, all of the monitors attached to the adaptergroup GPU must be driven by the application.
In your case, D3D9 expects 6 different display mode descriptors ("presentation parameters" in the log), one for each monitor, but the game only fills the first 2 in the array because it's prepared for only exactly 2 monitors (contemporary dualhead videocards).
Just for the sake of an experiment, you can see if everything is working normally if you detach 4 of the 6 monitors.
The other way would be picking and enabling only 2 monitors in dgVoodoo config, but unfortunately it cannot be done: either all or only one of them can be enabled.

Reply 13 of 27, by SkyHawk

User metadata
Rank Newbie
Rank
Newbie

Very interesting. My computer is the basket edge-case of edge-cases.

So the game *does* run in full-screen dual-monitor mode with only two displays attached. It really doesn't like my rotated second screen though, constantly flickers showing both a rotated and non-rotated view.

With dgVoodoo installed, the second display does run, without the horrendous flickering, but something's very off, like it's internally running at a much lower resolution.

I tested both the original game, and Forged Alliance. They both behaved similarly, though the original seemed to have a bit more trouble with zooming on the secondary display - probably related to the very unusual screen size.

https://i.imgur.com/e7vmvwJ.jpeg

Oh yeah, no change regarding the missing gate-in effect. Still not showing up on dgVoodoo.

Reply 14 of 27, by Dege

User metadata
Rank l33t
Rank
l33t

For the rendering errors, what if you set the output API to D3D12?

As for the resolutions, if you just set the native resolution for each monitor in the game options , doesn't it look right? (I tried it, rotated my secondary display, it worked, altough the menu backround picture was indeed rendered smaller by the game, I think because of the unusual aspect ratio)

In the dgV config set resolution to unforced, as forcing it for a multidisplay environment has some unexpected effects (the device upscale factor must be the same for all the displays, and it's currently calculated from the largest resolution).
But, just to make sure, could you post another debug log to see what resolutions are detected/used?

Btw, I'm thinking on the possibility of fine-grain controlling of enabling the individual display outputs, intended for the cases like yours (I never thought I would encounter such an environment 😀 ).

Reply 15 of 27, by SkyHawk

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2022-04-26, 11:56:

For the rendering errors, what if you set the output API to D3D12?

I've tried all 5 in the dgVoodoo control panel - no change.

D3D 11 feature 10.0
D3D 11 feature 10.1
D3D 11 feature 11.0
D3D 12 feature 11.0
D3D 12 feature 12.0

Dege wrote on 2022-04-26, 11:56:
As for the resolutions, if you just set the native resolution for each monitor in the game options , doesn't it look right? In […]
Show full quote

As for the resolutions, if you just set the native resolution for each monitor in the game options , doesn't it look right?
In the dgV config set resolution to unforced, as forcing it for a multidisplay environment has some unexpected effects (the device upscale factor must be the same for all the displays, and it's currently calculated from the largest resolution).
But, just to make sure, could you post another debug log to see what resolutions are detected/used?

(I never thought I would encounter such an environment 😀 ).

All my monitors run at native resolution, and none are high-DPI panels - Windows Scaling is set to 100% on all of them.
I'll unplug my stuff again later today and test again, ensuring that dgVoodoo Resolution is "Unforced". I'll provide another log if it misbehaves.

Dege wrote on 2022-04-26, 11:56:

(I never thought I would encounter such an environment 😀 ).

Gotta have all of the monitors.

Reply 16 of 27, by RetroGamer4Ever

User metadata
Rank Oldbie
Rank
Oldbie

I remember when a bunch of strategy games implemented multi-monitor views and people lost their minds for ten minutes, before forgetting about it all-together. At the time, the rendering requirements were such that it didn't work well and many didn't have the room for multiple monitors anyway, since it was still CRT/early-LCD times and not practical in the slightest, except with gaming laptops. I tried it out myself with Star Trek: Armada and I can tell you that it was quite an experience seeing the 3D battle action up close and personal - picture a Star Trek DS9 spaceship battle POV and you get an idea - on the second screen while the main screen showed the overhead/wider strategic side of things.

Reply 18 of 27, by Dege

User metadata
Rank l33t
Rank
l33t

Ok, sorry, I misunderstood what the rendering glitch was. I can reproduce it, and the reason of the erroneous rendering is as interesting as this game: it's a very special incompatibility between DX shader models (original and converted).
I don't know how to fix it without causing performance loss in general. At this time it's fixed by a hack in the code.

I also added a new option, DirectExt\DisplayOutputEnableMask. You can individually enable/disable display outputs for dgVoodoo DX, so you should able to run the game on 2 monitors without detaching the others.
(See the bottom of the DirectXExt page in the CPL. The tooltips say which checkbox corresponds to which display.)
(I had to increase the version number because of changing the config, so don't use this CPL for older version dgv files.)

http://dege.fw.hu/temp/dgVoodoo_2_79_D3D9_multihead.zip

Reply 19 of 27, by SkyHawk

User metadata
Rank Newbie
Rank
Newbie

You are a god among men!

The game works, though I once had it fail to actually go fullscreen - the fullscreen was "behind" my desktop and the secondary display did not appear. I had to alt-tab out and click Supreme Commander on the taskbar, which showed two "windows" for the program, and I then had to click the window for the Secondary display, then the game came up and appeared correctly.

Rendering appears to be correct - no missing gate-in visual.

But the Secondary still looks off. Maybe the original game looked like this, but I don't remember it doing so.

Debug output (redacted)

Screenshot of dgVoodoo - note the blurry text on the ACU name on the Secondary display

Screenshot of Forged Alliance in Borderless Window mode - note the sharp text on the Secondary display

Last edited by SkyHawk on 2022-04-29, 04:02. Edited 1 time in total.