Atualização: veja o comentário abaixo, Alternando o modo de saída de tv Radeon 3450 entre componente e svideo
Eu tenho essa placa que funciona no Windows, e no Grub ela tem cor e fica bem, mas no xorg eu só recebo preto e branco dos cabos componentes (RGB). Eu tentei mudar o formato da tv com xrandr, mas nenhuma mudança. Eu posso mudar a res embora.
Eu suspeito que talvez esteja no modo composto em vez do modo componente. A placa possui um plugue DVI e DIN, que se adapta a svideo ou componente (rgb)
Estas são as saídas de alguns comandos:
lspci
:
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV620 LE [Radeon HD 3450] (prog-if 00 [VGA controller])
Subsystem: Dell OptiPlex 980
Flags: bus master, fast devsel, latency 0, IRQ 31
Memory at e0000000 (64-bit, prefetchable) [size=256M]
Memory at f7d20000 (64-bit, non-prefetchable) [size=64K]
I/O ports at e000 [size=256]
Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: [50] Power Management version 3
Capabilities: [58] Express Legacy Endpoint, MSI 00
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Kernel driver in use: radeon
Kernel modules: radeon
xrandr --verbose
:
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
DIN connected primary 1024x768+0+0 (0x55) normal (normal left inverted right x axis y axis) 0mm x 0mm
Identifier: 0x51
Timestamp: 29475
Subpixel: no subpixels
Gamma: 1.0:1.0:1.0
Brightness: 1.0
Clones:
CRTC: 0
CRTCs: 0 1
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
_MUTTER_PRESENTATION_OUTPUT: 0
tv standard: ntsc
supported: ntsc, pal, pal-m, pal-60, ntsc-j, scart-pal, pal-cn, secam
load detection: 1
range: (0, 1)
1024x768 (0x55) 63.500MHz -HSync +VSync *current
h: width 1024 start 1072 end 1176 total 1328 skew 0 clock 47.82KHz
v: height 768 start 771 end 775 total 798 clock 59.92Hz
800x600 (0x56) 38.250MHz -HSync +VSync
h: width 800 start 832 end 912 total 1024 skew 0 clock 37.35KHz
v: height 600 start 603 end 607 total 624 clock 59.86Hz
848x480 (0x57) 31.500MHz -HSync +VSync
h: width 848 start 872 end 952 total 1056 skew 0 clock 29.83KHz
v: height 480 start 483 end 493 total 500 clock 59.66Hz
720x480 (0x58) 26.750MHz -HSync +VSync
h: width 720 start 744 end 808 total 896 skew 0 clock 29.85KHz
v: height 480 start 483 end 493 total 500 clock 59.71Hz
640x480 (0x59) 23.750MHz -HSync +VSync
h: width 640 start 664 end 720 total 800 skew 0 clock 29.69KHz
v: height 480 start 483 end 487 total 500 clock 59.38Hz
Resposta parcial:
A Radeon pode ter um decodificador interno (parte da GPU) ou externo (chip extra). Eles geralmente têm registradores onde você pode definir quais sinais são emitidos em qual DAC (conversor digital/analógico). Como os codificadores foram feitos para TVs analógicas, uma configuração usual "composto" (tanto luminância quanto crominância) em um canal, e "luminância" (Y) e "crominância" (C) em dois outros canais. Desta forma, você pode conectar os cabos SVideo (Y/C) e Composto. A maioria dos codificadores externos também tem a opção de saída RGB (para o qual você precisaria de um conector SCART na Europa).
Observando o código-fonte , o codificador interno ("legado") está configurado para Y em vermelho, C em verde e Composto em azul:
Há também algum tipo de detecção automática que pode atribuir sinais de maneira diferente.
Então é isso que você obterá do plugue DIN. No entanto, o pedido pode estar errado para o seu cartão específico. E pode ser diferente para chips de codificação externos.
Assumindo que você o conectou via SVideo (e não via SCART/RGB), se ele "tem cor" no grub, significa que o BIOS atribuiu corretamente C e Y aos DACs corretos. O driver pode atribuí-los de forma diferente por vários motivos, então você pode acabar sem crominância (e, portanto, sem cor) quando o driver estiver ativo.
Não consegui encontrar nenhuma maneira de substituir essa atribuição no código. Se
load detection
for um campo de bits e não apenas um booleano, isso pode significar que o resistor de terminação de crominância do cabo SVideo não foi detectado corretamente (mas isso é um palpite).Portanto, a escolha é (1) alterar o código do driver para permitir a substituição manual da atribuição/ativação do DAC ou (2) mexer no cabo, para que você possa obter o sinal de crominância se estiver no DAC errado, ou então faz com que a detecção funcione corretamente.
Nenhum dos dois é fácil.