Discussion:
Multi monitor on modern IntelHD/NVIDIA/AMD display adapter under DOS?
(too old to reply)
JJ
2024-10-17 01:27:17 UTC
Permalink
With modern display adapters such as Intel HD, NVIDIA, and AMD; is it even
possible for non primary monitor to display a text video mode?

If it's possible, was there a driver/TSR which provide acces to other
monitor in multi-monitor setup? i.e. designed for use by other program to
specifically display things on non primary monitor. Or a demo program which
can use non primary monitor in text video mode.
John McCue
2024-10-17 13:41:13 UTC
Permalink
Post by JJ
With modern display adapters such as Intel HD, NVIDIA, and AMD;
is it even possible for non primary monitor to display a text
video mode?
If it's possible, was there a driver/TSR which provide acces
to other monitor in multi-monitor setup? i.e. designed for use
by other program to specifically display things on non primary
monitor. Or a demo program which can use non primary monitor in
text video mode.
In a way, MS-DOS kind of had support for multi-monitors (2)
where you can flip between the two.

I had a B&W and a VGA and I was able to do this by using two
video boards.

Some Debuggers did support using 2 monitors. Zortech c and
Microsoft 5.1 debuggers allowed for this. The debugger would
show up on the B&W monitor where program output would show up
on the VGA. This was on a 286.

So it was more up to the application as opposed to MS-DOS.
--
[t]csh(1) - "An elegant shell, for a more... civilized age."
- Paraphrasing Star Wars
JJ
2024-10-18 09:00:29 UTC
Permalink
Post by John McCue
Post by JJ
With modern display adapters such as Intel HD, NVIDIA, and AMD;
is it even possible for non primary monitor to display a text
video mode?
If it's possible, was there a driver/TSR which provide acces
to other monitor in multi-monitor setup? i.e. designed for use
by other program to specifically display things on non primary
monitor. Or a demo program which can use non primary monitor in
text video mode.
In a way, MS-DOS kind of had support for multi-monitors (2)
where you can flip between the two.
I had a B&W and a VGA and I was able to do this by using two
video boards.
Some Debuggers did support using 2 monitors. Zortech c and
Microsoft 5.1 debuggers allowed for this. The debugger would
show up on the B&W monitor where program output would show up
on the VGA. This was on a 286.
So it was more up to the application as opposed to MS-DOS.
Sorry. I should have been more clearer.

I wasn't referring to multi-monitor provided by multiple video adapters.

I was referring to one video adapter which support multi monitors. i.e. has
at least 2 video output ports.

Mac, Windows, and Linux support multiple monitors on a single
IntelHD/NVIDIA/AMD video adapter, but so far, I've seen non primary monitors
used only for graphics video mode. I never seen any which is used for text
video mode. Though, may be I don't have enough experience working with
various hardware setups.
John McCue
2024-10-18 15:49:20 UTC
Permalink
<snip>
Post by JJ
Sorry. I should have been more clearer.
I wasn't referring to multi-monitor provided by multiple video adapters.
OK :)
Post by JJ
I was referring to one video adapter which support multi monitors. i.e. has
at least 2 video output ports.
I would be surprised if MS/DR-DOS could support this,
but with FreeDOS you have a chance. FreeDOS is still
being developed, but not sure if thay are adding new
hardware support.
Post by JJ
Mac, Windows, and Linux support multiple monitors on a single
IntelHD/NVIDIA/AMD video adapter, but so far, I've seen non primary monitors
used only for graphics video mode. I never seen any which is used for text
video mode. Though, may be I don't have enough experience working with
various hardware setups.
--
[t]csh(1) - "An elegant shell, for a more... civilized age."
- Paraphrasing Star Wars
Phil Ashby
2024-10-20 12:56:24 UTC
Permalink
Post by JJ
Post by John McCue
Post by JJ
With modern display adapters such as Intel HD, NVIDIA, and AMD;
is it even possible for non primary monitor to display a text
video mode?
If it's possible, was there a driver/TSR which provide acces
to other monitor in multi-monitor setup? i.e. designed for use
by other program to specifically display things on non primary
monitor. Or a demo program which can use non primary monitor in
text video mode.
In a way, MS-DOS kind of had support for multi-monitors (2)
where you can flip between the two.
I had a B&W and a VGA and I was able to do this by using two
video boards.
Some Debuggers did support using 2 monitors. Zortech c and
Microsoft 5.1 debuggers allowed for this. The debugger would
show up on the B&W monitor where program output would show up
on the VGA. This was on a 286.
So it was more up to the application as opposed to MS-DOS.
Sorry. I should have been more clearer.
I wasn't referring to multi-monitor provided by multiple video adapters.
I was referring to one video adapter which support multi monitors. i.e. has
at least 2 video output ports.
Mac, Windows, and Linux support multiple monitors on a single
IntelHD/NVIDIA/AMD video adapter, but so far, I've seen non primary monitors
used only for graphics video mode. I never seen any which is used for text
video mode. Though, may be I don't have enough experience working with
various hardware setups.
So this question intrigued me, as I have used dual display adapters for
DOS development in the past (as mentioned above by John McCue - I was
developing a graphical application on a VGA, using Microsoft C5.1 and
their CodeView debugger on an MDA). What of modern hardware?

I am aware that booting my laptop (Lenovo ThinkPad E590) with the lid
shut results in the text mode boot screen (and any subsequent DOS
output) appearing on the HDMI output, so it's possible, but is it
possible after boot to switch outputs or have text mode on >1 output?

Fortunately my laptop has an Intel i8265U SOC with UHD 620 (Intel HD)
graphics, which is well documented in the programmers reference manuals
here:

https://www.intel.com/content/www/us/en/docs/graphics-for-linux/developer-reference/1-0/kaby-lake.html

(actually the i8265U is CoffeLake, but the graphics are the same)

Reading the "Display" manual (volume 12, from page 105) I see that it
has real VGA hardware, which is off to the side of the main rendering
pipelines (x3), and can be wired into Pipeline A, which is then
multiplexed into one of three Transcoders: one for the flat panel, one
back into RAM and one that can be further multiplexed to any of four
output ports, including the HDMI.

So one can see how the Intel HD specific BIOS wires the VGA to whichever
output port is active (eDP or HDMI) at boot, and indeed it seems
possible to switch the pipeline around by programming the multiplexers
(via PCI registers). FWIW I tried to find such code in Coreboot but got
a bit lost in their directory structure!) and I don't think my E590 is
supported yet (although Intel HD may be).

Unfortunately I haven't found any standardised API (eg: UEFI-GOP, VBE)
that supports output management at the BIOS level, which would have
allowed DOS to support multi-output adapters generically. Indeed if one
looks at the Linux DRM driver stack, there is an API there for managing
outputs, which is implemented in hardware-specific driver code (all of
which is extremely non-trivial!)

I guess if your laptop or whatever is supported by Coreboot, and it has
the necessary multiplxer drivers, then it /could/ export a suitable
API.. otherwise it's porting ugly chunks of Linux kernel code into DOS
as a TSR or similar, or starting again with the manuals... good luck :)

Phil (rabbit hole explorer :))
JJ
2024-10-21 00:43:16 UTC
Permalink
Post by Phil Ashby
So this question intrigued me, as I have used dual display adapters for
DOS development in the past (as mentioned above by John McCue - I was
developing a graphical application on a VGA, using Microsoft C5.1 and
their CodeView debugger on an MDA). What of modern hardware?
I am aware that booting my laptop (Lenovo ThinkPad E590) with the lid
shut results in the text mode boot screen (and any subsequent DOS
output) appearing on the HDMI output, so it's possible, but is it
possible after boot to switch outputs or have text mode on >1 output?
Fortunately my laptop has an Intel i8265U SOC with UHD 620 (Intel HD)
graphics, which is well documented in the programmers reference manuals
https://www.intel.com/content/www/us/en/docs/graphics-for-linux/developer-reference/1-0/kaby-lake.html
(actually the i8265U is CoffeLake, but the graphics are the same)
Reading the "Display" manual (volume 12, from page 105) I see that it
has real VGA hardware, which is off to the side of the main rendering
pipelines (x3), and can be wired into Pipeline A, which is then
multiplexed into one of three Transcoders: one for the flat panel, one
back into RAM and one that can be further multiplexed to any of four
output ports, including the HDMI.
So one can see how the Intel HD specific BIOS wires the VGA to whichever
output port is active (eDP or HDMI) at boot, and indeed it seems
possible to switch the pipeline around by programming the multiplexers
(via PCI registers). FWIW I tried to find such code in Coreboot but got
a bit lost in their directory structure!) and I don't think my E590 is
supported yet (although Intel HD may be).
Thanks for the pointers. I actually already have downloaded the "Display"
and "PCIE Configuration Register" manuals from Intel, but for 2013 Haswell
Intel HD since it's the one for my machine.

While I've grasp the concept of VGA hardware programming, I have none yet
for multi-monitors. So I was clueless of what I should search for in the
documents, since I've searched for e.g. "secondary", "multi", "monitors",
etc. but still lead to nowhere. But thanks to your pointers, I began to
grasp how multi-monitors are handled. At least for Intel HD...

AMD's documentations are less cryptic than Intel's. So, thumbs up to them.

NVIDIA is... suck. Big time. I couldn't find any documentation for basic
display adapter hardware programming. AFAIK, NVIDIA drivers for open source
OSes such as Linux are all prorietary drivers. Maybe that's why.
Post by Phil Ashby
Unfortunately I haven't found any standardised API (eg: UEFI-GOP, VBE)
that supports output management at the BIOS level, which would have
allowed DOS to support multi-output adapters generically.
Yes, I'm pretty sure BIOS nor VBE has any API for multi-monitors. The
technology was not popular enough back then to be standardized. There may be
some undocumented video BIOS interrupt services, but that's like a gambling.
Post by Phil Ashby
Indeed if one
looks at the Linux DRM driver stack, there is an API there for managing
outputs, which is implemented in hardware-specific driver code (all of
which is extremely non-trivial!)
I guess if your laptop or whatever is supported by Coreboot, and it has
the necessary multiplxer drivers, then it /could/ export a suitable
API.. otherwise it's porting ugly chunks of Linux kernel code into DOS
as a TSR or similar, or starting again with the manuals... good luck :)
Phil (rabbit hole explorer :))
Those are rabbit holes indeed. :) But I have to use them too as references.
Loading...