The Windows driver for Radeon cards has support for something called "Theatre Mode", where video (overlay?) content, apart from being shown normally (windowed or fullscreen) on the primary screen, is simultaneously shown full screen on the TV. The TV output is blank/black when no video is shown.
This is a function I really miss on my Linux machine, although I now have the TV connected to RGB signals from the VGA output, so I'd like to be able to select which output receives the "cinema content".
An acceptable alternative would be to just drive the outputs separately and using the DISPLAY env variable to set output to the TV screen. This "sort of" works already, but dual screens means no xv/gl direct rendering, which means horrible stuttering of hd content on my primary screen. Besides, it's nice to be able to see the video on the two screens simultaneously.
Now when documentation is starting to appear I feel very tempted to try to implement the functionality myself. I have all the background knowledge (am a master of computer science, have hardware-close and Linux kernel programming experience), but I have no idea where to start looking for what I want. 'radeon_dri.c'? 'radeon_video.c'? 'theatre.c'? Etc... and I guess since it is the _combination_ dual screen + direct rendering that doesn't seem to work, I'll need to dig deep.
Simply: if I get involved with this, where should I put my time to most effectively get what I want? Perhaps cloned windows with compositing is a more modern and general approach?
On a more general note - from what I can tell from the card's functionality, there are two "display engines" capable of reading data from video memory, each driving one video output (DVI-D, DVI-A, VGA, or TV). Is this correct?
From the way MergedFB works I also guess that these engines cannot scale the output, so if the same framebuffer is to be displayed on two different devices, the best one can do is window the contents on the lower resolution device. Does this mean that "Theatre Mode" renders the video twice, once for each display?
Is the second display engine in any way connected to the "Secondary Display Controller" ("chip 1002,4a69 card 1002,0003 rev 00 class 03,80,00 hdr 00") device detected by Xorg that always has "No matching Device section" (no matter if you use a secondary screen or not)? Or what is this Secondary Display Controller device?
--
Arvid
This is a function I really miss on my Linux machine, although I now have the TV connected to RGB signals from the VGA output, so I'd like to be able to select which output receives the "cinema content".
An acceptable alternative would be to just drive the outputs separately and using the DISPLAY env variable to set output to the TV screen. This "sort of" works already, but dual screens means no xv/gl direct rendering, which means horrible stuttering of hd content on my primary screen. Besides, it's nice to be able to see the video on the two screens simultaneously.
Now when documentation is starting to appear I feel very tempted to try to implement the functionality myself. I have all the background knowledge (am a master of computer science, have hardware-close and Linux kernel programming experience), but I have no idea where to start looking for what I want. 'radeon_dri.c'? 'radeon_video.c'? 'theatre.c'? Etc... and I guess since it is the _combination_ dual screen + direct rendering that doesn't seem to work, I'll need to dig deep.
Simply: if I get involved with this, where should I put my time to most effectively get what I want? Perhaps cloned windows with compositing is a more modern and general approach?
On a more general note - from what I can tell from the card's functionality, there are two "display engines" capable of reading data from video memory, each driving one video output (DVI-D, DVI-A, VGA, or TV). Is this correct?
From the way MergedFB works I also guess that these engines cannot scale the output, so if the same framebuffer is to be displayed on two different devices, the best one can do is window the contents on the lower resolution device. Does this mean that "Theatre Mode" renders the video twice, once for each display?
Is the second display engine in any way connected to the "Secondary Display Controller" ("chip 1002,4a69 card 1002,0003 rev 00 class 03,80,00 hdr 00") device detected by Xorg that always has "No matching Device section" (no matter if you use a secondary screen or not)? Or what is this Secondary Display Controller device?
--
Arvid
Comment