하드웨어 오버레이

하드웨어 오버레이(Hardware overlay)는 비디오 오버레이의 일종으로, 비디오 하드웨어 안에 메모리 버퍼를 할당하여 그림을 디스플레이 화면에 표현하는 방식이다. 빠르게 움직이는 컴퓨터 게임, DVD, TV 카드의 신호와 같은 영상을 보여 주는 데 사용한다. 대략 1998년 이후로 출시된 대부분의 그래픽 카드와 미디어 플레이어는 하드웨어 오버레이를 지원한다.

개요 
하드웨어 오버레이를 사용하는 중요한 이유는 몇 가지가 있다. 첫째, 윈도우와 같은 그래픽 사용자 인터페이스 (GUI) 운영 체제에서, 하나의 디스플레이는 보통 여러 개의 응용 프로그램들을 동시에 보여 주는 데 사용한다. 둘째, 각 응용 프로그램이 화면에 그려질 때, 운영 체제의 그래픽 하위 시스템은 객체들이 화면의 올바른 위치에 나타나 있는지, 또 창들이 겹칠 때나 이웃할 때 충돌이 일어나지 않는지 꾸준히 검사해야 한다. 그래픽 하부 시스템은 충돌이 일어날 때 객체들을 최적화해야 한다. 이러한 일정한 검사와 최적화를 통해 다른 응용 프로그램들이 또다른 프로그램과 화면에서 함께 공유할 수 있게 도와 주지만, 컴퓨팅 파워를 많이 소모하게 된다.

컴퓨터가 화면 위에 그릴 때 그래픽이 비디오 메모리라고 불리는 특별한 메모리 부분에 비트맵으로 표현한다. 하드웨어 오버레이 없이는, 오직 하나의 비디오 메모리 덩어리만이 모든 응용 프로그램과 공유할 것이며 주어진 응용 프로그램의 비디오 메모리의 위치는 사용자가 응용 프로그램의 창을 움직일 때마다 이동할 것이다. 공유 비디오 메모리와 더불어, 응용 프로그램은 해당 응용 프로그램과 관련된 메모리에 "쓰기"만을 사용하는지 꾸준히 검사해야 한다.

게임이나 동영상 재생기와 같은 높은 대역의 비디오 응용 프로그램을 실행할 때 꾸준한 최적화와 검사를 수행해야 하는 컴퓨터의 성능과 호환성에 부정적인 영향을 미친다. 이러한 제한에서 벗어나기 위해, 하드웨어 오버레이가 발명되었다.

하드웨어 오버레이를 사용하는 응용 프로그램은 그 응용 프로그램에 속한 완전히 구분된 비디오 메모리의 일부를 차지한다. 프로그램은 메모리의 일부가 그에 속하는지, 비디오 메모리의 창 이동과 위치 변경에 대해 신경을 쓴다든지 하는 등으로 절대 시간을 낭비하지 않는다. 구분된 비디오 메모리로부터 이미지를 얻어 디스플레이에 남아 있는 공유 요소와 나란히 보여 주기 위해, 그래픽 하부 시스템은 특정한 특성과 연결이 되어 있고 (이를테면, 특정한 색) 오버레이에 대해 "마스크"를 사용한다. 이로써 그래픽 카드는 별도의 오버레이 버퍼로부터 화면에 그린다는 것을 이해하게 된다. (이러한 기술을 보통 크로마 키라고 한다.)

이를테면, "자주색"이 마스크 색으로 정의되고 오버레이를 사용한다고 하자. DVD를 재생하는 응용 프로그램은 공유 화면에 자주색 사각형을 그릴 것이고, DVD를 오버레이에 할당된 특정한 메모리 영역으로 "재생"할 것이다. 그래픽 카드는 DVD 재생을 자주색 영역 안에만 표현할 것이다. 다른 창이 자주색 영역 위로 움직여서 그 부분이 가리거나 한다면, 그래픽 하드웨어는 자체적인 최적화 과정을 수행하게 된다. 실제로는, 자주색이 사용되는 것이 아니라 검은색에 가까운 자주색이 사용된다는 것이 맞는 말이다.

다른 운영 체제로의 기능 추가 
윈도우 비스타의 강화된 그래픽 성능과 더불어 하드웨어 오버레이의 기본 개념은 동영상, 게임뿐 아니라 시스템에서 돌아가는 모든 응용 프로그램의 창에 대한 완전한 하드웨어 합성이다. macOS 또한 이러한 하드웨어 복합 기술을 사용해 왔다.

각주 

그래픽 하드웨어