我使用 Linux PC 将视频发送到不符合标准的 Displayport 接收器,该接收器不支持 1.62 Gbit 的 Displayport 链路速度。
当使用 Linux 作为源时,协商链接速度和通道数的策略是选择最慢的速度和更少的通道,前提是这足以承载所选的分辨率(这是非常合理的)。相反,Windows 只追求支持的最大值。
现在我处于一种非常不幸的情况,我的系统可以与基于 Windows 的源一起工作,但不能与 Linux 源一起工作。
有没有办法强制 Linux 的显示端口链接速度?也许甚至可以通过修补内核?实际硬件使用 i915 驱动程序,我假设此功能是视频卡特定的。
谢谢!
编辑:
看起来像编辑
驱动程序/gpu/drm/i915/display/intel_dp.c
成功了,
intel_dp_set_source_rates(struct intel_dp *intel_dp)
{
/* The values must be in increasing order */
static const int icl_rates[] = {
162000, 216000, 270000, 324000, 432000, 540000, 648000, 810000,
1000000, 1350000,
};
static const int bxt_rates[] = {
162000, 216000, 243000, 270000, 324000, 432000, 540000
};
static const int skl_rates[] = {
162000, 216000, 270000, 324000, 432000, 540000
};
static const int hsw_rates[] = {
162000, 270000, 540000
};
static const int g4x_rates[] = {
162000, 270000
};
从阵列中删除不需要的速度将导致源将其从速度协商中排除。当然,在我的例子中,删除 162000 将使我的 DP 源不符合标准,因为该值是后备值并且不能不受支持。