[haiku-development] Re: Radeon HD 7700 Dual Monitor - Possible?

  • From: kallisti5 <kallisti5@xxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Sun, 18 Dec 2016 16:32:11 -0600

On 2016-12-18 15:46, Axel Dörfler wrote:

Am 17/12/2016 um 08:54 schrieb Adrien Destugues:
Well, at the accelerant level, the API was extended to somewhat support
it. This is what is used by the old radeon driver (and possibly nvidia,
I'm not sure there). The only part of Haiku taking advantage of this new
API is the screen preferences, which allows setting different video
modes for each display.

Implementing this API in some of the modern accelerants would be a first
step towards getting app_server to support it.

Not really -- the "API" as you call it is just a hack that completely
disregards real multi monitor support; it bypasses the app_server, and
just enlarges its display resolution.

Unless we start by adding
such support in the test_app_server (running with two BWindows as
"screens") first. This screen preflet was also backported to BeOS and
shipped with the Radeon driver there, allowing the same limited support
for multiple monitors.

The app_server should already support everything that is needed for
multi monitor (it merges different screens to a single VirtualScreen).
Even BScreen does kind of support multi monitor -- if you had two
different cards, Haiku might or should already support both screens
you attached to them. But that's it as of now: it has never been
tested AFAIK, and multiple outputs of a single card aren't supported
at all.

The accelerant hooks are what is key. The app_server needs an API interface
defined to the accelerants that will manage multiple displays. This API has
to be versioned and must be well written exposing monitor information to
the app_server (and screen preflet)

I can say that radeon_hd *WILL* support more than one display if the hooks
are implemented. I left quite a few snap-on points for multiple monitors
with big bitchy TODO items :-)

http://cgit.haiku-os.org/haiku/tree/src/add-ons/accelerants/radeon_hd/mode.cpp#n46
http://cgit.haiku-os.org/haiku/tree/src/add-ons/accelerants/radeon_hd/mode.cpp#n93
http://cgit.haiku-os.org/haiku/tree/src/add-ons/accelerants/radeon_hd/mode.cpp#n113
http://cgit.haiku-os.org/haiku/tree/src/add-ons/accelerants/radeon_hd/mode.cpp#n167
http://cgit.haiku-os.org/haiku/tree/src/add-ons/accelerants/radeon_hd/mode.cpp#n179
http://cgit.haiku-os.org/haiku/tree/src/add-ons/accelerants/radeon_hd/mode.cpp#n321

intel_extreme was also written with multiple displays in mind. (although less
verbose)

All big TODO stuff for R2 :-)
R1, it's too late. We had 15+ years and never got it done. It's a big project
that someone needs to understand the app_server inside and out to implement
properly.

 -- Alex

Other related posts: