更新:见下面的评论,在组件和 svideo 之间切换 Radeon 3450 电视输出模式
我有这张卡可以在 Windows 中使用,在 Grub 中它有颜色并且看起来不错,但在 xorg 中我只能从组件 (RGB) 电缆中获得黑白。我试过用 xrandr 改变电视格式,但没有改变。我可以改变资源。
我怀疑它可能处于复合模式而不是组件模式。该卡有一个 DVI 和一个 DIN 插头,适用于 svideo 或组件 (rgb)
这些是一些命令的输出:
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
部分答案:
Radeon 可以同时具有内部(GPU 的一部分)或外部(额外芯片)解码器。他们通常有寄存器,您可以在其中设置哪些信号在哪个 DAC(数字/模拟转换器)上输出。由于编码器适用于模拟电视,通常在一个频道上设置“复合”(亮度和色度),在另外两个频道上设置“亮度”(Y) 和“色度”(C)。这样,您可以连接 SVideo (Y/C) 和复合电缆。大多数外部编码器还可以选择输出 RGB(在欧洲你需要一个 SCART 连接器)。
查看源代码,内部(“传统”)编码器设置为红色 Y、绿色 C 和蓝色复合:
还有某种自动检测可能会以不同方式分配信号。
这就是您将从 DIN 插头获得的东西。但是,您的特定卡的顺序可能是错误的。对于外部编码芯片可能会有所不同。
假设您已通过 SVideo(而不是通过 SCART/RGB)连接它,如果它在 grub 中“有颜色”,则意味着 BIOS 已将 C 和 Y 正确分配给正确的 DAC。由于各种原因,驱动程序可能会以不同方式分配这些内容,因此一旦驱动程序处于活动状态,您可能最终根本没有色度(因此没有颜色)。
我找不到任何方法来覆盖代码中的这个分配。如果
load detection
是一个位域而不仅仅是一个布尔值,这可能意味着您的 SVideo 电缆色度终端电阻没有被正确检测到(但这是一个猜测)。因此,选择是 (1) 更改驱动程序代码以允许手动覆盖 DAC 分配/启用,或 (2) 修补电缆,以便在错误的 DAC 上获得色度信号,或者这样使检测工作正常。
两者都不容易。