[PATCH] Unclone the outputs
All the outputs on my card are cloned. This patch unclones most of the outputs, keeping cloned only the outputs with same "Output". Namely - VGA has no clone (output is DAC A) - S_VIDEO and DVI-I/analog are clones (output is DAC B) - DVI-I/digital has no clone (output is TMDS B) I don't know whether DVI-I/digital should be a clone of S_VIDEO and DVI-I/analog (I don't have a DVI-I splitter to test whether the 2 outputs are independent). I don't know whether the possible_crts should be modified as well. Thanking you all, Loïc Grenié --- src/rhd_randr.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/src/rhd_randr.c b/src/rhd_randr.c index 8a6d643..aee5b3a 100644 --- a/src/rhd_randr.c +++ b/src/rhd_randr.c @@ -94,6 +94,7 @@ typedef struct _rhdRandrOutput { char Name[64]; struct rhdConnector *Connector; struct rhdOutput *Output; + int clones; } rhdRandrOutputRec, *rhdRandrOutputPtr; #define ATOM_SIGNAL_FORMAT "RANDR_SIGNAL_FORMAT" @@ -1039,7 +1040,7 @@ createXF86Output(ScrnInfoPtr pScrn, rhdRandrOutputPtr rro) ASSERT(xo); xo->driver_private = rro; xo->possible_crtcs = ~0; /* No limitations */ - xo->possible_clones = ~0; /* No limitations */ + xo->possible_clones = rro->clones; xo->interlaceAllowed = FALSE; xo->doubleScanAllowed = FALSE; xo->subpixel_order = SubPixelUnknown; @@ -1143,6 +1144,10 @@ RHDRandrPreInit(ScrnInfoPtr pScrn) randr->RandrOutput = xnfcalloc(numCombined+1, sizeof(struct xf86OutputPtr *)); for (i = 0; i < numCombined; i++) { + RandrOutput[i]->clones = 0; + for (j = 0; j < numCombined; j++) + if (RandrOutput[j]->Output == RandrOutput[i]->Output) + RandrOutput[i]->clones |= 1 << j; randr->RandrOutput[i] = createXF86Output(pScrn, RandrOutput[i]); } xfree(RandrOutput); -- 1.5.2.5 -- To unsubscribe, e-mail: radeonhd+unsubscribe@opensuse.org For additional commands, e-mail: radeonhd+help@opensuse.org
On Jan 31, 08 09:02:46 +0100, Loic Grenie wrote:
All the outputs on my card are cloned. This patch unclones most of the outputs, keeping cloned only the outputs with same "Output". Namely
- VGA has no clone (output is DAC A) - S_VIDEO and DVI-I/analog are clones (output is DAC B) - DVI-I/digital has no clone (output is TMDS B)
I don't know whether DVI-I/digital should be a clone of S_VIDEO and DVI-I/analog (I don't have a DVI-I splitter to test whether the 2 outputs are independent). I don't know whether the possible_crts should be modified as well.
Hm. I don't understand what you intend to do.
All outputs on Radeon cards can be attached to any crtcs - and that
should be reflected by the possible_clones data field.
So it *is* possible to use only one crtc to show the same data on
different outputs, and save power in this process.
There is no drawback in having this possible, other than the xrandr
application having several bugs with respect to this feature. I have
fixed all bugs I could find in the upstream git version.
Matthias
--
Matthias Hopf
2008/2/18, Matthias Hopf
On Jan 31, 08 09:02:46 +0100, Loic Grenie wrote:
All the outputs on my card are cloned. This patch unclones most of the outputs, keeping cloned only the outputs with same "Output". Namely
- VGA has no clone (output is DAC A) - S_VIDEO and DVI-I/analog are clones (output is DAC B) - DVI-I/digital has no clone (output is TMDS B)
I don't know whether DVI-I/digital should be a clone of S_VIDEO and DVI-I/analog (I don't have a DVI-I splitter to test whether the 2 outputs are independent). I don't know whether the possible_crts should be modified as well.
Hm. I don't understand what you intend to do. All outputs on Radeon cards can be attached to any crtcs - and that should be reflected by the possible_clones data field.
So it *is* possible to use only one crtc to show the same data on different outputs, and save power in this process.
There is no drawback in having this possible, other than the xrandr application having several bugs with respect to this feature. I have fixed all bugs I could find in the upstream git version.
My computer is currently out of order so I cannot test the last version of xrandr (last time I've tested was January 7th). The drawback I have is that once all output are clones of one another, all outputs show the same thing and I do not manage to have separate images on the various outputs (i.e. if the geometry of one output is 1024x768+0+0, the geometry of all outputs is 1024x768+0+0. In particular, all outputs must have the same mode (they are limited by the "worst" output). Limiting "possible_clones" corrected that behaviour, so I thought it was a good solution. If it is not, then too bad, I'll keep it only locally (because I need to have separate images on my different outputs) until xrandr, libXrandr, the server or whatever is changed or I learn what should be done to have different images on the different outputs. Thank you very much, Loïc Grenié -- To unsubscribe, e-mail: radeonhd+unsubscribe@opensuse.org For additional commands, e-mail: radeonhd+help@opensuse.org
On Feb 22, 08 11:08:09 +0100, Loïc Grenié wrote:
My computer is currently out of order so I cannot test the last version of xrandr (last time I've tested was January 7th). The drawback
You have to take git, I don't think the fixed version has been released yet. Maybe I should just go ahead and release it. If you're using git, there are no new fixes since the beginning of this year.
I have is that once all output are clones of one another, all outputs show the same thing and I do not manage to have separate images on the various outputs (i.e. if the geometry of one output is 1024x768+0+0, the geometry of all outputs is 1024x768+0+0. In particular, all outputs must have the same mode (they are limited by the "worst" output).
Without updating xrandr you can try adding --crtc 1 (or --crtc 0) to the command line, and by that unclone the outputs manually.
Limiting "possible_clones" corrected that behaviour, so I thought it was a good solution. If it is not, then too bad, I'll keep it only locally
If xrandr from git doesn't unclone the outputs for you, there's still a
bug, and it should be corrected. Otherwise it is a FAQ :-P
Matthias
--
Matthias Hopf
participants (3)
-
Loic Grenie
-
Loïc Grenié
-
Matthias Hopf