VESA BIOS 확장 기능

VESA BIOS Extensions

VESA BIOS Extensions(VBE)는 VESA 규격으로 현재 버전3에서 사용되고 있습니다.이 규격은 소프트웨어가 높은 해상도와 비트 심도로 호환 비디오 보드에 액세스하기 위해 사용할 수 있는 인터페이스를 정의합니다.이는 "기존"의 10시간 이내 BIOS 호출과 반대되는 것으로, 해상도는 640×480 픽셀, 깊이 16 색(4비트) 이하로 제한됩니다.VBE는 비디오 카드의 BIOS를 통해 사용할 수 있습니다.BIOS는 자신을 가리키는 인터럽트 벡터를 기동시에 인스톨 합니다.

대부분의 새로운 카드에서는, 보다 기능이 뛰어난 VBE 3.0 규격이 실장되고 있습니다.오래된 버전의 VBE에서는 리얼 모드인터페이스만 제공되므로 보호 모드 운영체제 에서 퍼포먼스가 크게 저하되지 않으면 사용할 수 없습니다.따라서 VBE 규격은 비디오 카드의 드라이버를 쓰는 데 거의 사용되지 않았습니다.따라서 각 벤더는 독자적인 비디오 카드와의 통신을 위한 독자적인 프로토콜을 개발해야 했습니다.그럼에도 불구하고 드라이버는 화면 모드를 초기화하고 카드의 리니어 프레임버퍼에 직접 액세스하기 위해 리얼 모드로 넘어가는 것이 일반적입니다.이러한 작업을 실시하지 않으면 카드마다 수백 가지 독자적인 종류를 처리해야 하기 때문입니다.

EFI 1.x 시스템에서는 INT 10H 및 VESA BIOS Extensions(VBE)는 EFI UGA 프로토콜로 대체됩니다.널리 사용되는 UEFI 2.x 시스템에서는 INT 10H 및 VBE가 UEFI [1][2]GOP로 대체됩니다.

표준

초기 VBE

VBE 1.0(VS891001)은 1989년에 정의되었습니다.VBE 1.1(VS900602)은 1990년에 정의되었습니다.VBE 1.2(VS911022)는 1991년에 정의되었습니다.이러한 버전의 VBE가 기능하려면 리얼 모드가 필요합니다.

VBE는 INT 10H를 통해 호출되는 몇 가지 새로운 기능을 정의합니다.00h. 00h ~ 05h의 경우 AX=4F00 또는 (AH=4F, AL=00)로 시작하는 함수 번호는 1.1에서는 VBE 1.0, 06h 및 07h에 정의되었으며 1.2에서는 08h에 정의되어 있습니다.

VESA BIOS 확장 (VBE 코어) 2.0 (1994년 11월)

이 표준은 VESA BIOS 확장의 주요 기능을 제공합니다.이것에 의해, 애플리케이션은 그래픽 카드의 기능을 판별할 수 있게 되어, 검출된 표시 모드를 설정할 수 있게 됩니다.VBE 2.0에는 리니어 프레임 버퍼 액세스 및 보호 모드 뱅킹 등 이전 VBE 1.2 규격보다 새로운 기능이 추가되었습니다.VBE Core 2.0 의 기능에는, 다음과 같은 것이 있습니다.

선형 프레임 버퍼 액세스
효율성이 낮은 작은 청크가 아닌 하나의 대용량 메모리 영역으로서 보호 모드에서 직접 프레임 버퍼 액세스를 가능하게 합니다.
보호 모드 뱅킹
보호 모드에서 리얼 모드로 이행하지 않고 프레임버퍼에 액세스 할 수 있습니다.이는 새로운 기능 0Ah를 사용하여 구현됩니다.
슈퍼 VGA 페이지 플립
고성능 애니메이션을 통해 컴퓨터 게임 및 기타 고성능 그래픽 프로그램에 대한 부드러운 애니메이션을 제공할 수 있습니다.
슈퍼 VGA 가상 화면
소프트웨어가 실제 표시되는 해상도보다 큰 가상 디스플레이 해상도를 설정하고 큰 이미지를 부드럽게 스크롤 또는 이동할 수 있습니다.
하이 컬러 모드와 트루 컬러 모드
320×200 ~1600×1200의 해상도를 실현하는 업계 표준의 16비트 및 24비트 그래픽스 모드.

VESA BIOS 확장 (VBE 코어) 3.0 (1998년 9월)

VBE 2.0 규격의 슈퍼셋.이 표준은 VBE 2.0 표준에 리프레시 레이트 제어, 스테레오 글라스 설비, 개선된 멀티 버퍼링 및 기타 기능을 추가합니다.

트리플 버퍼링
고속 어플리케이션으로 멀티 버퍼링을 실행할 수 있습니다.화면 깜박임이 적고 그래픽스 컨트롤러를 기다릴 필요가 없습니다.
GTF 타이밍을 사용한 리프레시 레이트 제어
이것에 의해, 애플리케이션과 operating system 유틸리티는, 모든 VBE 3.0 그래픽 컨트롤러의 리프레시 레이트를 표준적인 방법으로 변경할 수 있습니다.스테레오 어플리케이션에서 중요한 것은 스테레오를 유효하게 하면, 유저의 유효 리프레시 레이트가 반으로 삭감되기 때문입니다.
스테레오 페이지 플립
스테레오 안경을 사용하여 응용 프로그램을 볼 때, 소프트웨어는 각 눈에 대해 별도의 이미지를 생성해야 하기 때문에 페이지 플립을 평소보다 두 배 더 자주 해야 합니다.이 새로운 기능을 통해 스테레오 호환 소프트웨어를 올바르게 표시할 수 있습니다.
하드웨어 스테레오 동기화
스테레오 소프트웨어가 사용자의 그래픽 카드에 스테레오 안경용 커넥터가 있는지 여부를 판별할 수 있습니다.

기능 0Ah의 대안으로 새로운 "보호 모드 진입점"이 추가되었습니다.

VBE/액셀러레이터 기능(VBE/AF)(1996년 8월)

VBE/AF는 대부분의 하드웨어에서 사용할 수 있는 일반적인 가속 기능에 대한 낮은 수준의 표준 인터페이스를 제공합니다.표준에 정의된 기능 중 일부는 하드웨어 커서 액세스, 비트 블록 전송(Bit Blt), 화면 스프라이트, 하드웨어 패닝, 그리기 및 기타 기능입니다.32비트 보호 모드에서 동작하도록 정의되어 있습니다.

보충 사양

보충 사양은 애플리케이션 소프트웨어와 Super VGA 하드웨어 간에 디바이스에 의존하지 않는 인터페이스를 제공합니다.기능 번호는 VESA 소프트웨어 표준 위원회(SSC)에 의해 할당됩니다.

전원 관리 확장 기능(PM)

DPMS는 기존 그래픽스 컨트롤러 및 모니터 케이블과 함께 사용할 수 있는 특별한 시그널링 시스템을 통해 그래픽 카드가 DPMS 준거 모니터와 통신할 수 있는 하드웨어 표준입니다.이 시그널링 시스템을 사용하면, 그래픽 카드는 모니터에 다양한 전력 관리 상태 또는 전력 절약 상태가 되도록 지시할 수 있습니다.이것에 의해, 모니터는 사용하지 않을 때에 자동적으로 꺼집니다.

플랫 패널 인터페이스 확장(FP)

플랫 패널 컨트롤러의 특수 기능에 액세스 할 수 있습니다.

Audio Interface Extensions(AI; 음성 인터페이스 확장)

표준 오디오 서비스를 제공합니다.

현재(버전 1.00) VBE/AI 사양에서는 다음 3개의 디바이스 클래스가 정의되어 있습니다.WAVE, MIDI 및 VOLUME. 대상 외 디바이스 유형:

CD-ROM 제어
Microsoft CD-ROM Extensions 의 대상이 되고 있습니다.
이펙트 프로세서
이 클래스의 디바이스는 VBE/AI 사양의 향후 버전에서 확장될 예정입니다.

OEM 확장

벤더 고유의 확장에 표준 엔트리를 제공합니다.

데이터 채널 표시(DDC)

디스플레이 데이터 채널(DDC)은 컴퓨터 디스플레이그래픽스 어댑터 간의 디지털 연결로 디스플레이의 사양을 어댑터에 전달할 수 있습니다.이 표준은 VESA에 의해 작성되었습니다.

시리얼 제어 인터페이스(SCI)

I²C 시리얼 제어 인터페이스를 통해 운영 체제 및 애플리케이션이 데이터를 읽고 쓸 수 있는 하드웨어 독립적 수단을 제공합니다.

VBE 모드 번호

모드 번호는 16비트 값이지만 옵션의 VBE 모드 번호는 14비트입니다.비트 15는 VGA BIOS에서 디스플레이 메모리를 클리어 또는 유지하기 위한 플래그로서 사용됩니다.VBE 정의 모드 번호는 다음과 같습니다.

조금 의미.
0–8 모드 번호비트 8이 1일 경우 VESA 정의 VBE 모드입니다.
9-10 확장용으로 예약되어 있습니다.0으로 설정해야 합니다.
11 Refresh rate control 선택합니다.1로 설정되어 있는 경우는, 유저 지정의 CRTC 값을 리프레시 레이트로 사용합니다.그렇지 않은 경우는 BIOS 디폴트 리프레시 레이트를 사용합니다.
12–13 VBE/AF용으로 예약되어 있습니다.0으로 설정해야 합니다.
14 Linear/Flat Frame Buffer Select(선형/플랫 프레임 버퍼 선택).1로 설정되어 있으면 선형 프레임버퍼를 사용하고, 그렇지 않으면 뱅크 프레임버퍼를 사용합니다.
15 디스플레이 메모리 유지 선택.1로 설정하면 디스플레이 메모리를 유지하고, 그렇지 않으면 디스플레이 메모리를 지웁니다.

VBE/Core 2.0 이후 VESA는 새로운 VESA 모드 번호를 정의하지 않게 되어, 낡은 번호를 실장하기 위해서 디바이스가 필요 없게 되었습니다.화면 모드의 정보를 올바르게 검출하려면 , Function 01h - Return VBE Mode Information 을 사용합니다.

Mode 81FFH는 현재 메모리 내용을 보존하고 비디오 메모리 전체에 액세스하기 위해 설계된 특수한 비디오 모드입니다.

VESA에 의해 정의된 모드

VBE 2.0 규격부터는 VESA에 의해 새로운 모드가 정의되지 않으며 오래된 모드는 더 이상 필수가 아닙니다.정의된 모드의 사용은 권장되지 않는 것으로 간주할 필요가 있습니다.현대 비디오 카드는 (대부분 하위 호환성을 위해 사용되지만) 이러한 모드 번호를 사용할 수도 있고 사용하지 않을 수도 있습니다.또, 최신의 소프트웨어에서는 이러한 모드 번호를 사용하지 말아 주세요.소프트웨어가 사용 가능한 디스플레이 모드를 검색하는 올바른 방법은 모드 목록을 가져온 다음('기능 00h - VBE 컨트롤러 정보' 사용) [citation needed]필요한 모드를 찾을 때까지 각 모드를 확인하는 것입니다('기능 01h: VBE 모드 정보' 사용).

그래픽스 모드 320×200 640×400 640×480 800×600 1024×768 1280×1024
16 색 팔레트 258 (0102h), 106 (6Ah) 260(0104h) 262(0106h)
256 색 팔레트 256(0100h) 257(0101h) 259(0103h) 261 (0105h) 263 (0107h)
15 비트 (5:5:5) 269(010Dh) 272(0110h) 275(0113h) 278(0116h) 281 (0119h)
16비트(5:6:5) 270 (010Eh) 273(0111h) 276(0114시) 279(0117h) 282 (011Ah)
24비트(8:8:8) 271(010Fh) 274 (0112h) 277 (0115h) 280(0118h) 283 (011Bh)

모드 264~268은 텍스트모드입니다.264(0108h)는 80컬럼×60행(80×60), 265(0109h)는 132×25, 266(010Ah)은 132×43, 267(010Bh)은 132×50, 268(010Ch)는 132×60입니다.

텍스트 모드
80 132
25 265(0109h)
43 266 (010Ah)
50 267 (010Bh)
60 264(0108h) 268 (010 Ch)

기타 일반적으로 이용 가능한 그래픽스 모드

다음 표는 VESA에 의해 정의된 모드(검은색으로 표시된 값)와 일반적으로 사용되는 모드를 조합한 것입니다.다만, 표준(빨간색으로 표시된 값)으로 정의되어 있지 않기 때문에, 모든 그래픽 카드에서는 동작하는 것은 아닙니다.

그래픽스 모드 320×200 640×400 640×480 800×500 800×600 896×672 1,024×640 1,024×768 1152×1200 1280×1200 1360×768 1440×900 1600×1600×1600
16 색 팔레트 [3] [3] 258 (0102h),
106(6Ah)
260(0104h) 262(0106h)
256 색 팔레트 [3] 256(0100h) 257(0101h) 367(016Fh) 259(0103h) 303(012Fh) 362(016Ah) 261 (0105h) 357(0165h) 263 (0107h) 352(0160h) [4] 284 (011 Ch)
15 비트 (5:5:5) 269(010Dh) 289(0121h) 272(0110h) 368(0170h) 275(0113h) 304(0130h) 363 (016Bh) 278(0116h) 358(0166h) 281 (0119h) 353(0161h) 285(011Dh)
16비트(5:6:5) 270 (010Eh) 290(0122h) 273(0111h) 369(0171h) 276(0114시) 305(0131h) 364 (016 Ch) 279(0117h) 359(0167h) 282 (011Ah) 978(03d2h) 354(0162h) 286 (011Eh)
24비트(8:8:8) 271(010Fh) 291(0123h) 274 (0112h) 370(0172h) 277 (0115h) 306(0132h) 365(016Dh) 280(0118h) 360(0168h) 283 (011Bh) 355(0163h) 287(011Fh)
32비트(8:8:8) [5] 292(0124h) 297(0129h) 371(0173h) 302(012Eh) 307(0133h) 366 (016Eh) 312(0138h) 361(0169h) 317(013Dh) 980(03d4h) 356(0164시) 322(0142h) [6]

모드 검출

시스템에서 사용 가능한 VBE 모드를 검출하기 위한 툴이 몇 가지 준비되어 있습니다.일반적으로 Function 01h를 호출함으로써 동작합니다.이것은, 디바이스의 자기 문서의 일부이기 때문에, 확장 모드의 표를 상정하는 것보다 신뢰성이 높아집니다.

  • hwinfo는 SuSE 리눅스 및 기타 리눅스 [7]배포에서 사용되는 하드웨어 탐지 도구입니다.입니다.hwinfo --framebuffer는, 「모드」라인의 VESA 모드를 포함한 그래픽 정보를 리포트합니다.
  • mdt는 VBE 지원을 검출하여 비디오 BIOS [8]정보를 인쇄하는 Linux 또는 DOS 도구입니다.
  • Linux Real Mode Interface(LRMI; 리얼모드 인터페이스)에는vbetestVESA 정보를 출력하는 프로그램입니다.
  • SciTech Software는 관련 없는vbetest1994년으로 거슬러 올라가는 DOS의 경우.
  • x86 "PC" 버전 GNU GRUB 2에는vbeinfo사용 가능한 비디오 모드를 출력하기 위한 명령어 및vbetest특정 모드를 시도합니다.Funcion 01h 대신 빌트인 테이블을 사용합니다.x86 EFI를 포함한 기타 플랫폼에서는 보다 범용적인 것으로 대체됩니다.videoinfo그리고.videotest.

Linux 비디오 모드 번호

Linux 커널을 사용하면 부팅 시 메모리의 코드를 커널에 전달하여 VESA 모드를 선택할 수 있습니다.LILO 부트 로더는 컨피규레이션파일 내의 "vga" 파라미터에 근거하여 이 코드를 전달합니다.형식은 'vga=XXX'입니다. 여기서 XXX는 10진수 값 또는 'vga=0x'입니다.HH' - HH는 16진수 값입니다.그러나 'vga=' 부트로더 매개 변수는 VESA 비디오 모드 번호를 직접 허용하지 않습니다. 대신 Linux 비디오 모드 번호는 VESA 번호 + 512(10진수 표시의 경우) 또는 0x200(16진수 표시의 경우)입니다.예를 들어 정의된 VESA 값 257(0x101)은 640x480 및 256색을 나타내며 Linux 비디오 모드 값은 769(0x301)[9]입니다.

앞서 설명한 바와 같이 VESA 규격에서는 한정된 모드 세트가 정의되어 있습니다.특히 1280×1024 이상의 모드는 적용되지 않습니다.그래픽 어댑터 제조사에서는 그 실장은 완전히 옵션입니다.벤더는 원하는 추가 값을 자유롭게 사용할 수 있기 때문에 아래 표에서 빨간색(10진수 형식)으로 표시된 모드그래픽 어댑터에 적용되지 않을 수 있습니다.

320×200 640×400 640×480 800×500 800×600 896×672 1,024×1,024×1,024×1,024×1,024 1024×768 1152×1200 1280×1,024 1400×1,050 1440×900 1600×1,200 1920×1900
16가지 색상 770 0302h 772 0304h 774 0306h
256 색 768 0300h 769 0301h 879 036Fh 771 0303h 815 032Fh 874036Ah 773 0305h 869 775 0307h 835 864 796 893
15 비트 (5:5:5) 781 030Dh 801 0321h 784 0310h 880 0370h 787 0313h 816 0330h 875 036Bh 790 0316h 870 7930319h 865 797
16비트(5:6:5) 782030Eh 802 0322h 785 0311h 881 0371h 788 0314h 8170331h 876 036 Ch 7910317h 871 794 031Ah 837 866 798
24비트(8:8:8) 783 030Fh 803 0323h 786 0312h 882 0372h 789 0315h 818 0332h 877 036Dh 792 0318h 872 795031Bh 838 867 799
32비트(8:8:18) 804 809 883 814 819 878 824 873 829 868 834

1:32비트는 실제로는 (8:8:8:8)이지만 마지막 8비트의 숫자는 빈 알파 채널입니다.그렇지 않으면 24비트 색상과 동일합니다.많은 GPU는 32비트 메모리 얼라인먼트를 통한 비디오 메모리 액세스 고속화를 위해 24비트 모드가 아닌 32비트 컬러 모드를 사용합니다.

vga=864 [ 352 ( 0160h ) ]에서는, 다양한 노트북의 디스플레이에 1280 x 800 (8 비트)를 선택할 수 있습니다.
vga=834 [ 322 ( 0142h ) ]는 1400×1050

Parallels에서 사용 가능한 모드

Parallels 가상 머신의 VESA BIOS 에뮬레이션에는 다른 비표준 VESA 모드 세트가 있습니다.빌드 3214에서 LRMI vbetest는 다음 모드를 나타냅니다.

640×400 640×480 720×480 800×500 800×600 896×672 1,024×1,024×1,024×1,024×1,024 1024×768 1152×1200 1280×1,024 1440×900 1600×1,200
256 컬러 팔레트 256(0100h) 257(0101h) 367(016Fh) 364 (016 Ch) 259(0103h) 297(0129h) 358(0166h) 261 (0105h) 355(0163h) 263 (0107h) 352(0160h) 284 (011 Ch)
15 비트 (5:5:5) 272(0110h) 275(0113h) 278(0116h) 281 (0119h) 285(011Dh)
16비트(5:6:5) 289(0121h) 273(0111h) 368(0170h) 365(016Dh) 276(0114시) 298 (012Ah) 359(0167h) 279(0117h) 356(0164시) 282 (011Ah) 353(0161h) 286 (011Eh)
24비트(8:8:8) 290(0122h) 274 (0112h) 369(0171h) 366 (016Eh) 277 (0115h) 299(012Bh) 360(0168h) 280(0118h) 357(0165h) 283 (011Bh) 354(0162h) 287(011Fh)

「 」를 참조해 주세요.

레퍼런스

  1. ^ "What is efifb? — The Linux Kernel documentation". kernel.org. Retrieved 24 November 2020.
  2. ^ "What is vesafb? — The Linux Kernel documentation". kernel.org. Retrieved 24 November 2020.
  3. ^ a b c 기존 10시간 BIOS 콜에서 사용 가능한 모드
  4. ^ 또한 352 (0160h)는 다양한 노트북 디스플레이에 1280 x 800 (8비트)를 선택할 수 있습니다.
  5. ^ 32비트는 실제로는 (8:8:8:8)이지만 마지막 8비트의 숫자는 빈 알파 채널입니다.그렇지 않으면 24비트 색상과 동일합니다.많은 GPU는 32비트 메모리 얼라인먼트를 통한 비디오 메모리 액세스 고속화를 위해 24비트 모드가 아닌 32비트 컬러 모드를 사용합니다.
  6. ^ 322(0142h)는 1,400×1,050
  7. ^ GitHub의 hwinfo 소스 코드
  8. ^ "mdt". GitHub.
  9. ^ 설명서/svga의 커널 설명서를 참조하십시오.txtDocumentation/fb/vesafb.txt를 클릭합니다.

추가 정보

외부 링크