다음을 사용하여 내부 노트북 패널의 디스플레이 크기 조정 모드를 설정할 수 있습니다.
xrandr --output LVDS1 --set "scaling mode" "Full aspect"
그러나 스케일링 모드 속성이 지원되지 않기 때문에 외부 모니터(DP1, VGA1, DP1)에서는 작동하지 않습니다.
$> xrandr --output HDMI1 --set "scaling mode" "Full aspect"
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 11 (RRQueryOutputProperty)
Serial number of failed request: 47
Current serial number in output stream: 47
저해상도 콘텐츠를 표시할 때 종횡비를 유지하는 방법은 무엇입니까?
답변1
스케일링 모드 속성은 아직 인텔 드라이버(이봐). 이는 독점 AMD 및 NVIDIA 드라이버에 구현되었으며 최근에는 오픈 소스 radeon 드라이버(여기).
그러나 xrandr을 사용하여 수동으로 크기 조정을 수행하면 이 제한 사항을 해결할 수 있습니다.
화면의 기본 해상도가 1920x1080이고 확장되지 않은 1024x768 해상도를 표시하려고 한다고 가정해 보겠습니다. 종횡비 범위는 16/9부터 4/3까지입니다. 따라서 1.333333은 1이 됩니다.
xrandr --output HDMI1 --mode 1024x768 --scale 1.33333333x1 --panning 1024x768
이렇게 하면 화면에 올바른 해상도와 올바른 종횡비가 제공됩니다. 하지만 중앙에 있지는 않습니다. 이를 달성하려면 변환 옵션을 사용하여 (대략) 화면 중앙에 배치해야 합니다(1024*1.3333333 - 1024 = 342 / 2 = 171).
xrandr --output HDMI1 --mode 1024x768 --panning 1024x768 --transform 1.33333333,0,-171,0,1,0,0,0,1
불행하게도 사용되지 않은 화면 배경은 검은색 대신 회색 및/또는 왜곡되어 있습니다.
답변2
받아들인 대답은 Intel GPU를 사용하여 검은색 테두리가 있는 낮은 해상도로 렌더링하는 데 필요한 것과 거의 같습니다. 내 목표는 중앙에 검정색 테두리가 있는 5120x1440 초광각 기본 해상도에서 1920x1080 프레임 버퍼를 렌더링하는 것입니다(스크린샷용).
xrandr \
--output DP-1 \
--mode 5120x1440 \
--fb 1920x1080 \
--transform 2.666666667,0,1600,0,1.33333333333,180,0,0,1 \
--panning 1920x1080
매개변수에 대한 자세한 설명:
- 산출: 출력 포트(예: DP-1, HDMI-1 등)
- 모델:모니터 디스플레이 모드(예: 기본 해상도)
- 페이스북: 프레임 버퍼 크기
- 전환하다: 렌더링된 출력 기하학이 모니터 기하학 내에서 어떻게 변환되는지, 즉 프레임 버퍼가 모니터에 배치되는 방식을 설명하는 3x3 아핀 변환 매트릭스입니다.
- 팬:창 관리자가 사용할 수 있는 전체 영역
나에게 가장 큰 차이점은매개변수 순서 중대한. 내 하드웨어의 경우 다음 사항을 확인해야 했습니다.팬이후에 발생전환하다.
변환 행렬의 모양은 다음과 같습니다(회전 무시).
sx 0 tx tx = translation x (x pos)
0 sy ty ty = translation y (y pos)
0 0 1 sx = scale x
sy = scale y
xrandr 매개변수로 변환: sx,0,tx,0,sy,ty,0,0,1
계산은 다음과 같습니다.
sx = 5120/1920 = 2.66666666667
sy = 1440/1080 = 1.33333333333
tx = (5120 / 2) - (1920 / 2) = 1600
ty = (1440 / 2) - (1080 / 2) = 180
이 매트릭스를 사용하여 디스플레이 서버에 프레임 버퍼의 크기를 (2.66666666667, 1.33333333333)로 조정한 다음 1600x180 단위를 패닝하여 중앙에 배치하도록 지시합니다.