Skylake硬件的亮度变化太细了

时间:2018-10-14 16:04:27

标签: ubuntu-16.04 screen intel hardware-programming micro

我对Skylake i7-6700 HQ笔记本电脑显示屏(HD 530图形)的亮度变化有疑问:

  • 如果该值改变20,那么它会起作用。
  • 如果该值改变19,则只能在数百次跳转中起作用。
  • 如果值更改为<19,则根本没有亮度更改。

但是,在我的旧Ivybridge笔记本电脑i7-3630 QM(HD 4000图形)上,亮度成功地以1为步长进行了更改。

以下是用于测试的脚本:

#!/bin/bash

# Test all brightness levels from 1 to max_brightness

# For Intel i7-6700 HQ HD 530 graphics:
# - When change is 18 steps brighhness doesn't change at all.
# - When change is 19 steps brightnesss changes on multi-hundred point jumps.
# - When change is 20 steps each change applied as expected.

# For Intel i7-3630QM steps of 1 work fine!

if [[ $(id -u) != 0 ]]; then
    echo >&2 "$0 must be called with sudo powers"
    exit 1
fi

cd /sys/class/backlight/*/
max=$(cat max_brightness)
save=$(cat brightness)

for (( i=1; i < max; i=i+20)); do
    echo $i > brightness
    echo setting brightness level: $i
    sleep .005
done

echo $save > brightness
echo resetting brightness level from $max back to: $save

exit 0

除了pch_skylake传感器报告的怪异温度外,我认为我的Skylake工作正常:

$ paste <(cat /sys/class/thermal/thermal_zone*/type) <(cat /sys/class/thermal/thermal_zone*/temp) | column -s $'\t' -t | sed 's/...$/.0°C/'
INT3400 Thermal  20.0°C
SEN1             56.0°C
SEN2             52.0°C
SEN3             57.0°C
SEN4             61.0°C
pch_skylake      -44.0°C
B0D4             50.0°C
x86_pkg_temp     52.0°C

除了Linux intel微代码肯定在旧笔记本电脑(Ubuntu 16.04)上已激活,但可能未在新笔记本电脑(Ubuntu 16.04.5)上加载。

编辑:使用Ubuntu 18.04.1 LTS,内核4.15.0-36重新启动,并观察到相同的行为。

确认:我想知道其他人是否拥有Skylake笔记本电脑并且可以确认硬件亮度是否以相同的方式工作。

问题: 对于我正在开发的应用,我是否必须为每个用户设置一项功能以测试所支持的最小粒度亮度变化?

1 个答案:

答案 0 :(得分:2)

背光亮度与GPU本身是分开的;作为CPU芯片一部分的iGPU只是为LCD产生像素数据,例如作为DisplayPort输出。 (或者在笔记本电脑中,通常是eDP低压信号。)

请注意,在台式机上,无法使用软件来调整背光亮度;背光的普通GPU硬件/驱动程序没有连接。

笔记本电脑中的软件背光控制与iGPU完全不同,并且与Skylake或IvyBridge无关。背光控件是具有单独的I / O端口(或内存映射的IO寄存器等)的单独硬件设备。

更细粒度的背光调整是笔记本电脑设计的属性,而不是CPU的属性。专门介绍背光技术和控制器硬件。


(这是我的理解,但是我实际上没有足够详细地研究过GPU或背光/ ACPI驱动程序代码,无法100%确保这是正确的。)


我不知道软件是否可以查询真实/有意义的粒度;这个答案只是指出误解,它取决于GPU或GPU驱动程序。

相关问题