KR100890702B1 - 그래픽 프로세서의 다중 디스플레이 헤드를 이용한안티앨리어싱 - Google Patents
그래픽 프로세서의 다중 디스플레이 헤드를 이용한안티앨리어싱 Download PDFInfo
- Publication number
- KR100890702B1 KR100890702B1 KR1020070046116A KR20070046116A KR100890702B1 KR 100890702 B1 KR100890702 B1 KR 100890702B1 KR 1020070046116 A KR1020070046116 A KR 1020070046116A KR 20070046116 A KR20070046116 A KR 20070046116A KR 100890702 B1 KR100890702 B1 KR 100890702B1
- Authority
- KR
- South Korea
- Prior art keywords
- pixel data
- display
- gpu
- display head
- input
- Prior art date
Links
- 238000009877 rendering Methods 0.000 claims abstract description 47
- 238000005070 sampling Methods 0.000 claims abstract description 31
- 230000005540 biological transmission Effects 0.000 claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims description 30
- 238000012546 transfer Methods 0.000 claims description 22
- 238000002156 mixing Methods 0.000 claims description 7
- 239000004065 semiconductor Substances 0.000 claims description 6
- 239000000203 mixture Substances 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 35
- 238000001914 filtration Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000007704 transition Effects 0.000 description 4
- 239000003086 colorant Substances 0.000 description 3
- 101000622137 Homo sapiens P-selectin Proteins 0.000 description 2
- 102100023472 P-selectin Human genes 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005562 fading Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000002051 biphasic effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 231100000989 no adverse effect Toxicity 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
- G06F3/1431—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using a single graphics controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1423—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
- G06F3/1438—Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using more than one graphics controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
안티앨리어싱 및 그외 처리 태스크들을 수행하기 위해 단일 그래픽 프로세서의 다중 디스플레이 헤드들이 이용된다. 일 실시예에 있어서, 동일한 그래픽 프로세서의 2개의 디스플레이 헤드들이 픽셀 데이터 전송 경로를 통해 마스터/슬레이브 구성으로 상호 결합되어 있다. "마스터" 디스플레이 헤드는 자신의 픽셀 데이터들 외에도 "슬레이브" 디스플레이 헤드로부터의 픽셀 데이터들을 수신하며, 마스터 디스플레이 헤드의 픽셀 데이터 선택 로직은 2개의 픽셀 데이터들을 혼합하거나, 또는 타방을 제외한 어느 하나를 선택할 수 있다. 2개의 픽셀 데이터가 동일한 이미지 내의 서로 다른 샘플링 위치들에 대응하는 경우, 혼합된 픽셀 데이터는 안티앨리어싱된 픽셀 데이터이다.
디스플레이 헤드, 안티앨리어싱, 픽셀, 그래픽 처리 장치, 렌더링 파이프라인
Description
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 블록도.
도 2는 본 발명의 일 실시예에 있어서 이용가능한 그래픽 프로세서 유닛(graphics processing unit: GPU)에서의 픽셀 데이터 출력 경로의 블록도.
도 3a 및 도 3b는 본 발명의 실시예들에 있어서 이용가능한 GPU의 디스플레이 헤드에서의 픽셀 데이터 선택 로직의 블록도들.
도 4a는 본 발명의 일 실시예에 따른 2개의 GPU를 갖는 그래픽 서브시스템의 블록도.
도 4b는 본 발명의 일 실시예에 따른 마스터/슬레이브(master/slave) 구성에 있어서 결합된 2개의 디스플레이 헤드를 나타내는 GPU의 블록도.
도 5a 내지 도 5c는 본 발명의 몇몇 실시예에 있어서 이용가능한 샘플링 패턴들을 나타내는 도면.
도 6은 본 발명의 일 실시예에 따른 외부 픽셀 데이터 전송 경로로 구성되고 프린팅된 회로 카드로서 구현되는 그래픽 어댑터를 나타내는 도면.
도 7은 본 발명의 일 실시예에 따른 내부 픽셀 데이터 전송 경로를 갖는 GPU의 블록도.
<도면의 주요 부분에 대한 부호의 설명>
302: 제1 경로
304: 제2 경로
306: 픽셀 데이터 결합기 회로
310: 가산 회로
312, 318: 선택 회로
314: 제산 회로
320: 출력 경로
<관련 출원들의 상호 참조>
본 출원의 클레임들은 2006년 5월 12일에 출원된 발명의 명칭이 "Antialiasing Using Multiple Display Heads of a Graphics Processor,"인 미국 가출원 제60/747,154호 및 2006년 5월 12에 출원된 발명의 명칭이 "Distributed Antialiasing in a Multiprocessor Graphics System."인, 공통적으로 어사인된 동시 계류중인 미국 특허출원 제11/383,048호의 우선권의 이익을 주장한다.
본 발명은 일반적으로 컴퓨터 그래픽에 관한 것이며, 특히 그래픽 프로세서의 다중 디스플레이 헤드들을 이용한 이미지 데이터의 안티앨리어싱(antialiasing)에 관한 것이다.
당해 기술 분야에 공지되어 있는 바와 같이, 컴퓨터-생성 이미지들은, 이미지 데이터를 개별 컬러 샘플들(픽셀 데이터들)의 어레이로 전환하는 데 사용되는 유한한 샘플링 해상도로 인해 각종 비쥬얼 아티팩트(visual artifact)들에 영향을 받기 쉽다. 일반적으로 "앨리어싱(aliasing)"이라 불리는 이러한 아티팩트들은 스무드 라인들, 규칙 패턴들에서의 불균일성들 등의 이미지 어긋남(jaggedness)을 포함한다.
앨리어싱을 감소시키기 위해, 컬러는 주로 "오버샘플링" 즉, 최종(예컨대, 표시되는 또는 저장되는) 이미지를 구성하는 화소들의 수를 초과하는 다수의 샘플링 위치에서 샘플링된다. 예를 들어, 이미지가 픽셀 수의 2배 또는 4배로 샘플링될 수 있다. 당해 기술 분야에는, 각 샘플링 위치가 분리된 픽셀로서 취급되는 수퍼샘플링(supersampling), 픽셀의 적어도 일부를 커버하는 각 원색에 대해 단일 색값이 계산되지만 원색에 의한 픽셀의 커버리지가 다중 위치에서 결정되는 멀티샘플링(multisampling)을 포함하여, 각종 타입의 오버샘플링이 공지되어 있다.
안티앨리어싱(AA) 필터는 단일의 색값을 결정하기 위해 픽셀 당 다수의 샘플들을 혼합한다. 종래, AA 필터는, 픽셀 데이터들을 생성하고 이들을 프레임 버퍼에 저장하는 렌더링 파이프라인 내에 또는 프레임 버퍼로부터 픽셀 데이터들을 판독하고 이들을 표시 장치에 전달하는 디스플레이 파이프라인 내에 적용된다.
본 발명의 실시예들은 안티앨리어싱 및 그 외 처리 태스크들을 수행하기 위한 단일 그래픽 프로세서의 다중 디스플레이 헤드들을 이용한 시스템들 및 방법들을 제공한다. 일 실시예에 있어서, 동일한 그래픽 프로세서의 2개의 디스플레이 헤드들이 픽셀 데이터 전송 경로를 통해 마스터/슬레이브(master/slave) 구성으로 상호 결합되어 있다. "마스터" 디스플레이 헤드는 자신의 픽셀 데이터들 외에도 "슬레이브" 디스플레이 헤드로부터의 픽셀 데이터들을 수신하며, 마스터 디스플레이 헤드의 픽셀 데이터 선택 로직은 2개의 픽셀 데이터들을 혼합하거나, 또는 타방을 제외한 어느 하나를 선택할 수 있다. 2개의 픽셀 데이터가 동일한 이미지 내의 서로 다른 샘플링 위치들에 대응하는 경우, 혼합된 픽셀 데이터는 AA-필터링된 픽셀 데이터이다.
본 발명의 일 양태에 따르면, 그래픽 처리 장치는 제1 디스플레이 헤드, 제2 디스플레이 헤드, 및 픽셀 데이터 전송 경로를 포함한다. 제1 디스플레이 헤드는 제1 출력 픽셀 데이터를 생성하도록 구성되고, 집적 회로 내에 배치되어 있다. 제2 출력 픽셀 데이터를 생성하도록 구성된 제2 디스플레이 헤드 역시 집적 회로 내에 배치되어 있다. 제2 디스플레이 헤드는, 외부 픽셀 데이터를 수신하도록 구성된 제1 입력 경로; 내부 픽셀 데이터를 수신하도록 구성된 제2 입력 경로; 상기 제1 입력 경로 및 상기 제2 입력 경로에 결합되며 상기 외부 픽셀 데이터 및 상기 내부 픽셀 데이터를 혼합하여 혼합 픽셀 데이터를 생성하도록 구성된 픽셀 데이터 결합기, 및 외부 픽셀 데이터, 내부 픽셀 데이터, 또는 혼합 픽셀 데이터 중 하나를 제2 출력 픽셀 데이터로서 선택하도록 구성된 선택 회로를 포함하는 것이 바람직하다. 픽셀 데이터 전송 경로는, 제1 출력 픽셀 데이터가 제1 입력 경로에 의해 외부 픽셀 데이터로서 수신되도록 제1 디스플레이 헤드로부터 제2 디스플레이 헤드의 제1 입력 경로로 제1 출력 픽셀 데이터를 전달하도록 구성가능하다.
몇몇 실시예에 있어서, 픽셀 데이터 전송 경로도 집적 회로 내에 배치되어 있다. 다른 실시예들에 있어서, 픽셀 데이터 전송 경로의 적어도 일부는 집적 회로에 대하여 외부이다. 예를 들어, 픽셀 데이터 전송 경로는 착탈식(removable) 커넥터를 포함할 수 있다.
본 발명의 다른 양태에 따르면, 그래픽 서브시스템은 픽셀 데이터 출력 커넥터 및 픽셀 데이터 입력 커넥터를 갖는 그래픽 어댑터를 포함한다. 그래픽 어댑터 상에 탑재될 수 있는 그래픽 프로세서는, 픽셀 데이터 출력 커넥터에 통신가능하도록 결합되는 픽셀 데이터 출력 포트 및 픽셀 데이터 입력 커넥터에 통신가능하도록 결합되는 픽셀 데이터 입력 포트를 갖는다. 또한, 그래픽 서브시스템은, 그래픽 어댑터의 픽셀 데이터 출력 커넥터를 그래픽 어댑터의 픽셀 데이터 입력 커넥터에 접속시키도록 구성된 착탈식 커넥터 유닛을 포함한다.
본 발명의 또 다른 양태에 따르면, 화상을 형성하는 방법은, 그래픽 프로세서의 렌더링 파이프라인을 이용하여, 이미지에 대한 제1 군의 입력 픽셀 데이터들 및 제2 군의 입력 픽셀 데이터들을 렌더링하는 단계를 포함한다. 제1 군의 입력 픽셀 데이터들을 렌더링하는 데 이용되는 제1 렌더링 동작은 상기 제2 군의 입력 픽셀 데이터들을 렌더링하는 데 이용되는 제2 렌더링 동작과 적어도 하나의 관점에서 상이하다; 예를 들어, 2개의 렌더링 동작은 각 픽셀에 적용되는 샘플링 패턴의 관점에서 또는 렌더링되고 있는 이미지의 뷰포트 오프셋의 관점에서 상이할 수 있다. 제1 군의 입력 픽셀 데이터들은 그래픽 프로세서의 제1 디스플레이 헤드에 전달되고, 제2 군의 입력 픽셀 데이터들은 그래픽 프로세서의 제2 디스플레이 헤드에 전달된다. 또한, 제1 군의 입력 픽셀 데이터들은 제1 디스플레이 헤드로부터 제2 디스플레이 헤드로 전달된다. 제2 디스플레이 헤드에서, 제1 군의 입력 픽셀 데이터들과 상기 제2 군의 입력 픽셀 데이터들 중 대응하는 픽셀 데이터들이 혼합되어 출력 픽셀 데이터군이 생성된다.
이하, 상세한 설명은 첨부 도면과 함께 본 발명의 본질 및 장점들에 대한 보다 나은 이해를 제공할 것이다.
본 발명의 실시예들은 안티앨리어싱 및 다른 처리 작업들을 행하는 단일 그래픽 프로세서의 다중 디스플레이 헤드를 이용하는 시스템들 및 방법들을 제공한다. 일 실시예에 있어서, 동일한 그래픽 프로세서의 2개의 디스플레이 헤드는 픽셀 데이터 전송로를 통해 마스터/슬레이브 구성으로 서로 접속되어 있다. "마스터" 디스플레이 헤드는 그 자신의 픽셀 데이터 외에도 "슬레이브" 디스플레이 헤드로부터의 픽셀 데이터를 수신하고, 그 마스터 디스플레이 헤드의 픽셀 데이터 선택 로직은 2개의 픽셀 데이터들을 혼합하거나, 타방을 제외한 어느 하나만을 선택할 수 있다. 2개의 픽셀 데이터가, 동일한 이미지 내의 상이한 샘플링 위치에 대응한다면, 혼합 픽셀 데이터는 AA-필터링된 픽셀 데이터이다.
시스템 개요
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)의 블록도이다. 컴퓨터 시스템(100)은 메모리 브릿지(105), 예컨대 노스브릿지 칩을 포함하는 버스 경로를 통해 통신하는 중앙 처리 장치(CPU)(102)와 시스템 메모리(104)를 포함한다. 메모리 브릿지(105)는 버스 또는 다른 통신 경로(106)를 통해 I/O(입/출력) 브릿지(107), 예컨대 사우스브릿지 칩에 접속되어 있다. I/O 브릿지(107)는 하나 이상의 유저 입력 디바이스(108)(예컨대, 키보드, 마우스)로부터 유저 입력을 수신하고, 그 입력을 버스(106)와 메모리 브릿지(105)를 통해 CPU(102)에 전송한다. 비주얼 출력은 버스 또는 다른 통신 경로(113)를 통해 메모리 브릿지(105)에 연결 된 그래픽 서브시스템(112)의 제어 하에 동작하는 픽셀 기반의 디스플레이 디바이스(110)(예컨대, 종래의 CRT 또는 LCD 기반의 모니터)에 공급된다. 또한, I/O 브릿지(107)에는 시스템 디스크(114)가 접속되어 있다. 스위치(116)는 I/O 브릿지(107)와 그 밖의 구성 요소들, 예컨대 네트워크 어댑터(118), 각종 애드인(add-in) 카드(120, 121) 간의 접속을 제공한다. 또한, I/O 브릿지(107)에는 USB 또는 다른 포트 커넥션, DC 드라이브, DVD 드라이브 등을 포함하는 다른 구성 요소들(도시 생략)이 접속되어도 된다. 각종 구성 요소들 간의 통신 경로는 PCI(Peripheral Component Interconnect), PCI-E(PCI Express), AGP(Accelerated Graphics Port), HyperTransport, 또는 임의의 다른 버스나 포인트-투-포인트 프로토콜 등의 프로토콜을 이용하여 구현될 수 있으며, 상이한 디바이스들 간의 접속에는 공지된 바와 같은 상이한 프로토콜을 이용할 수 있다.
그래픽 서브시스템(112)은 N(1 이상)개의 그래픽 처리 장치(GPU)(122)를 포함한다. (여기서, 동일한 대상의 다수의 예는 대상을 식별하는 참조 번호와 필요한 경우 해당 예를 식별하는 괄호내 번호로 나타낸다.) 각 GPU(122)는 관련 그래픽 메모리(124)를 갖는다. GPU(122)와 그래픽 메모리(124)는 예컨대 프로그래머블 프로세서, 주문형 반도체(ASIC), 메모리 디바이스 등의 하나 이상의 집적 회로 디바이스를 이용하여 구현될 수 있다. 일부 실시예들에서, GPU(122)와 그래픽 메모리(124)는 시스템(100) 내의 확장 슬롯(예컨대, PCI-E 슬롯)에 착탈 가능한 하나 이상의 확장 카드 또는 다른 어댑터로 구현된다.
각 GPU(122)는, CPU(102) 및/또는 시스템 메모리(104)가 메모리 브릿지(105) 및 버스(113)를 통해 공급하는 그래픽 데이터로부터 픽셀 데이터를 생성하고, 각 그래픽 메모리(124)와 상호 작용하여 픽셀 데이터를 저장 및 갱신하는 등의 관련된 각종 작업을 행하도록 구성될 수 있다. 예컨대, GPU(122)는 CPU(102) 상에서 실행되는 각종 프로그램에 의해 제공되는 2-D 또는 3-D 장면 데이터로부터 픽셀 데이터를 생성할 수 있다. GPU(122)는 또한 메모리 브릿지(105)를 통해 수신한 픽셀 데이터를 추가 처리하거나 또는 추가 처리하지 않고 그래픽 메모리(124)에 기입할 수 있다. 또한, 후술하는 바와 같이 각 GPU(122)는 그래픽 메모리(124)로부터의 픽셀 데이터를 GPU(122)의 출력 포트에 전달하도록 구성가능한 스캔아웃 모듈(본 명세서에서는 '디스플레이 파이프라인'이라고도 함)을 포함한다. 출력 포트는 모니터나 다른 GPU(122)에 접속될 수도 있고 접속되지 않을 수도 있다.
분산 렌더링 모드의 동작에 있어서, 어느 하나의 GPU(예컨대, GPU(122(0)))는 스캔아웃 픽셀 데이터들을 다른 GPU(예컨대, GPU(122(N-1)))에 전달하여, 자신의 디스플레이 파이프라인으로부터의 내부 픽셀 데이터들과 GPU(122(0))로부터 수신한 외부 픽셀 데이터들 중에서 픽셀 데이터를 선택하도록 구성하는 것이 바람직하다. 슬레이브 GPU(122)가 자신의 픽셀 데이터를 중간 GPU(122)에 전달하고, 자신의 내부 픽셀 데이터과 슬레이브로부터의 외부 픽셀 데이터들 중에서 픽셀 데이터를 선택한 후에 선택한 픽셀 데이터를 다른 GPU에 전송하는 등 최후의 마스터 GPU(즉, 모니터에 접속된 GPU)가 최종 선택 픽셀 데이터를 디스플레이 디바이스에 전달할 때까지 2개보다 많은 GPU(122)가 "데이지 체인(daisy-chain)" 방식으로 상호 접속 가능하다.
일부 실시예들에서는, 임의의 물리적인 접속의 변경없이 GPU들(122)의 구성 설정을 조정함으로써 임의의 GPU(122)를 임의의 다른 GPU(122)에 종속시키도록 GPU들(122)을 상호접속시킬 수 있다. 예컨대, GPU들(122)은 단방향 또는 양방향 링 토폴로지로 접속 가능하다.
각종 분산 렌더링 모드가 지원될 수 있다. 예컨대, 분할 프레임 렌더링에서는, 동일한 이미지의 상이한 부분들을 렌더링하도록 상이한 GPU(122)를 할당하고, 교호 프레임 렌더링에서는, 표시할 일련의 이미지들 중 상이한 이미지를 렌더링하도록 상이한 GPU(122)를 할당한다. 본 발명에서는 특정 분산 렌더링 모드가 중요한 것은 아니다.
본 발명의 일 실시예에 따르면, GPU(122)는 "외부적으로 분산된" AA 모드로 동작 가능하다. 이 모드에서, GPU(122)의 픽셀 데이터 선택 로직은 타방을 제외한 하나의 픽셀 데이터를 선택하기보다는 내부 픽셀 데이터과 외부 픽셀 데이터를 혼합한다. 내부 픽셀 데이터 및 외부 픽셀 데이터가 동일한 이미지의 상이한 샘플링 위치를 나타내는 경우, 픽셀 데이터 혼합 결과는 AA 분해(resolve) 동작(본 명세서에서는 'AA 필터'라고도 함)에 대응한다. 본 발명의 다른 실시예에 따르면, 하나의 GPU(122)는 "내부적으로 분산된" AA 모드로 동작 가능하다. 이 모드에서, GPU(122)의 픽셀 데이터 선택 로직은 동일한 GPU(122)의 2개의 디스플레이 헤드에서 생성된 픽셀 데이터들을 혼합한다. 분산 AA 모드(내부적 분산 모드와 외부적 분산 모드를 포함)의 예 및 관련 픽셀 데이터 선택 로직에 대해서는 후술한다.
일부 실시예들에서, GPU(122)의 일부 또는 전부가 "독립적 렌더링" 모드로 동작 가능한데, 이 경우, 상이한 GPU(122)가 상이한 디스플레이 디바이스에 대한 이미지를 렌더링하고, 독립적 렌더링 모드에서 상이한 GPU(122)에 의해 렌더링된 이미지는 서로 관련되어도 되고, 관련되지 않아도 된다. GPU(122)는 전술한 또는 다른 모드들 중 어느 하나로 동작하도록 구성 가능하다.
CPU(102)는 다른 시스템 구성 요소들의 동작을 제어하고 조정하는 등 시스템(100)의 마스터 프로세서로서 동작한다. 특히, CPU(102)는 GPU(122)의 동작을 제어하는 명령을 발행한다. 일부 실시예들에서, CPU(102)는 GPU(122)에 대한 일련의 명령을 시스템 메모리(104), 그래픽 메모리(124) 또는 CPU(102)와 GPU(122) 양자가 접속 가능한 다른 저장 위치에 있는 명령 버퍼에 기입한다. GPU(122)는 명령 버퍼로부터 명령 스트림을 판독하고, CPU(102)의 동작과는 비동기적으로 명령을 실행한다. 이러한 명령에는 이미지 생성을 위한 통상의 렌더링 명령과, 이미지 생성과는 관련없는 데이터 처리를 위한 GPU(122)의 연산 능력에 영향을 주도록 CPU(102) 상에서 실행하는 어플리케이션을 인에이블시키는 범용 연산 명령이 포함될 수 있다.
본 명세서에 기술된 시스템은 예시적인 것이며, 각종 변경 및 변형도 가능하다. 브릿지의 수 및 배치를 포함하는 상호 접속 토폴로지는 원하는 대로 변형 가능하다. 예컨대, 일부 실시예들에서, 시스템 메모리(104)는 브릿지를 통하기 보다는 직접적으로 CPU(102)에 접속되고, 다른 디바이스들은 메모리 브릿지(105)와 CPU(102)를 통해 시스템 메모리(104)와 통신한다. 다른 대체 토폴로지에 있어서, 그래픽 서브시스템(112)은 메모리 브릿지(105)가 아닌 I/O 브릿지(107)에 접속된다. 또 다른 실시예로에 있어서, I/O 브릿지(107)와 메모리 브릿지(105)는 단일 칩에 통합 가능하다. 본 명세서에 기술된 특정 구성 요소들은 선택적인 것으로서, 예컨대, 임의 수의 애드인 카드 또는 주변 디바이스를 지원할 수 있다. 일부 실시예들에서는, 스위치(116)를 제거하고, 네트워크 어댑터(118)와 애드인 카드(120, 121)를 직접적으로 I/O 브릿지(107)에 접속시킨다.
GPU(122)를 시스템(100)의 나머지에 접속하는 것도 변형 가능하다. 일부 실시예들에서, 그래픽 시스템(112)은 시스템(100)의 확장 슬롯에 삽입 가능한 하나 이상의 확장 또는 애드인 카드로 구현된다. 다른 실시예들에서, GPU는 메모리 브릿지(105), I/O 브릿지(107) 등의 버스 브릿지와 함께 단일 칩에 통합된다.
각 GPU는 로컬 메모리없이 임의 수의 로컬 그래픽 메모리가 제공될 수도 있고, 로컬 메모리와 시스템 메모리를 조합하여 이용해도 된다. 예컨대, UMA(Unified Memory Architecture) 실시예에서는, 전용 그래픽 메모리 다바이스를 제공하지 않고, GPU의 일부 또는 전부가 시스템 메모리를 독점적으로 또는 거의 독점적으로 이용한다. UMA 실시예에서, GPU는 버스 브릿지 칩에 통합되거나, GPU를 브릿지 칩과 시스템 메모리에 접속시키는 고속 버스(예컨대, PCI-E)가 별도 칩으로서 제공되어도 된다.
또한, 본 발명의 각종 형태를 구현하는 GPU는 범용 컴퓨터 시스템, 비디오 게임 콘솔 및 다른 특수용 컴퓨터 시스템, DVD 플레이어, 이동 전화 또는 PDA와 같은 핸드헬드 디바이스 등을 포함한 각종 디바이스에 통합 가능하다.
다중 디스플레이 헤드를 구비한 GPU
도 2는 본 발명의 실시에 이용 가능한 GPU(122)의 픽셀 데이터 출력 경로의 블록도이다. 본 발명의 일부 실시예들에서는 다중 GPU 그래픽 시스템을 필요로 하지 않더라도, GPU(122)를 그러한 시스템에 이용 가능하게 구성하는 것이 바람직하다.
구체적으로, 도 2에 도시한 바와 같이, GPU(122)는 메모리 인터페이스(204)에 연결된 디스플레이(또는 스캔아웃) 파이프라인(202)을 포함한다. 디스플레이 파이프라인(202)은 디스플레이 헤드 206a("헤드 A") 및 206b("헤드 B")에도 연결된다. GPU(122)는 디지털 출력 포트(210, 211)와 아날로그 출력 포트(212, 213)를 포함하는 다중 출력 포트(210-213)를 갖는다. 또한, GPU(122)는 다른 GPU나 다른 외부 디지털 디바이스와의 통신을 포함하여, 다양한 목적으로 구성 가능한 2개의 다기능 입출력(MIO) 포트 214a("MIO A") 및 214b("MIO B")를 갖는다. 디스플레이 헤드(206a, 206b)는 크로스바(220)를 통해 출력 포트(210-213) 및 MIO 포트(214a, 214b)에 각각 연결된다.
메모리 인터페이스(204)는 GPU(122)에 의해 생성되는 픽셀 데이터를 저장하는 메모리(도 2에서는 도시 생략), 예컨대 도 1의 그래픽 메모리(124)에 연결된다. 디스플레이 파이프라인(202)은 메모리 인터페이스(204)와 통신하여 저장된 픽셀 데이터에 액세스한다. 디스플레이 파이프라인(202)은 그 픽셀 데이터를 디스플레이 헤드(206a, 206b) 중 적어도 하나에 전달한다. 일부 실시예들에서, 디스플레이 파이프라인(202)은 픽셀 데이터를 디스플레이 헤드(206a, 206b)에 전달하기 전에 그것에 각종 처리 동작을 행할 수 있으며, 디스플레이 헤드(206a)를 목적지로 하는 픽셀 데이터는 디스플레이 헤드(206b)를 목적지로 하는 픽셀 데이터와는 상이하게 처리해도 되고 동일하게 처리해도 된다. 또한, 디스플레이 파이프라인(202)에 공급되어 처리된 후 디스플레이 헤드(206a)에 전달되는 픽셀 데이터는 디스플레이 파 이프라인(202)에 공급되어 처리된 후 디스플레이 헤드(206b)에 전달되는 픽셀 데이터와는 동일해도 되고 상이해도 된다. 디스플레이 파이프라인(202) 및 메모리 인터페이스(204)의 구체적인 구성은 본 발명에 있어 중요한 것은 아니므로, 상세한 설명은 생략한다.
디지털 출력 포트(210, 211)는 일반적으로 종래의 설계를 따라도 되며, 픽셀 데이터를 디지털 출력 표준에 따르도록 변환하는 회로를 포함할 수 있다. 예컨대, 일 실시예에 있어서, 포트(210, 211)의 각각은 표준 DVI(Digital Video Interface) 커넥터용 TMDS(Transition Minimized Differential Signaling)를 이행한다. 마찬가지로, 아날로그 출력 포트(212, 213)는 일반적으로 종래의 설계를 따라도 되며, 공지된 다수의 예 중, 예컨대 아날로그 비디오 표준에 따른 디지털 아날로그 컨버터를 포함할 수 있다. 구체적인 디지털 또는 아날로그 출력 포트의 유무, 수 또는 속성은 본 발명에 있어 중요한 것은 아니다.
MIO A 포트(214a) 및 MIO B 포트(214b)는 디스플레이 헤드(206a, 206b) 중 어느 하나에 의해 생성된 픽셀 데이터를 GPU(122)의 출력 라인으로 보내는 출력 포트로서 구성 가능하다. 또한, MIO A 포트(214a) 및 MIO B 포트(214b)는 외부 픽셀 데이터를 디스플레이 헤드 A(206a)나 디스플레이 헤드 B(206b)에 전달하는 입력 포트로서 구성 가능하다. 일부 실시예들에 있어서, MIO A 포트(214a) 및 MIO B 포트(214b)는 각각 독립적으로 입력 포트나 출력 포트로서 구성 가능하다. MIO A 포트(214a) 및 MIO B 포트(214b)의 구성은 시스템 기동 중에 결정되거나, 시스템 동작 중에 여러 번 동적으로 변경될 수 있다. 예컨대, 각 MIO 포트는 포트 구성을 지정하는 값을 저장하는 제어 레지스터를 포함할 수 있으며, 희망에 따라 시스템 기동 시나 다른 시간에 그 레지스터에 새로운 값이 기입될 수 있다.
헤드 A(206a) 및 헤드 B(206b)는 각각 크로스바(220)를 통해 출력 포트(210-213)와 MIO 포트(214a, 214b)에 연결된다. 본 실시예에 있어서, 크로스바(220)는 헤드 A(206a)로부터 포트(210-213, 214a 또는 214b) 중 어느 하나로의 접속을 지원하고, 동시에 헤드 B(206b)로부터 크로스바(220)에 의해 헤드 A(206a)에 현재 접속되지 않은 포트(210-213, 214a 또는 214b) 중 어느 하나로의 접속을 지원하도록 구성 가능하다. 예컨대, GPU(122)는 픽셀 데이터를 헤드(206a, 206b)로부터 2개의 상이한 모니터(예컨대, 디지털 출력 포트 210, 211 및/또는 아날로그 출력 포트 212, 213 중 어느 2개를 통해)에 동시에 보낼 수 있다. 대안적으로, GPU(122)는 픽셀 데이터를 출력 포트(210-213) 중 하나를 통해 모니터에 보내고, MIO A 포트(214a) 또는 MIO B 포트(214b)를 통해 다른 GPU에 동시에 보낼 수 있다. 어떤 경우에는, 디스플레이 헤드(206a, 206b) 중 적어도 하나가 아이들(idle) 상태, 즉 픽셀 데이터를 어떠한 출력 포트에도 전달하지 않는 상태에 있는 경우도 있다.
또한, MIO 포트(214a, 214b)는 다른 하나의 GPU(122)로부터 픽셀 데이터를 수신하고, 그 수신한 픽셀 데이터를 디스플레이 헤드(206a, 206b)에 전달하도록 구성 가능하다. 또한, 각 GPU(122)는 MIO 포트(214a, 214b) 중 하나로부터 수신한 "외부" 픽셀 데이터, 자신의 디스플레이 파이프라인(202)으로부터 수신한 "내부" 픽셀 데이터, 또는 내부 픽셀 데이터과 외부 픽셀 데이터의 조합을 선택하고, 각 디스플레이 헤드(206a, 206b) 내에 위치하는 픽셀 데이터 선택 로직(후술함)을 갖는다.
일부 실시예들에 있어서, 크로스바(220)는 시스템 기동 시에 구성되고, 다른 실시예에서는, 시스템 동작 중에 접속 변경 가능하도록 동적으로 구성될 수 있다. 또한, 크로스바(220)는 MIO 포트(214a, 214b) 중 하나에 수신되는 입중 픽셀 데이터를 디스플레이 헤드(206a, 206b)의 어느 하나에 전달하도록 구성 가능하다.
도 3a는 본 발명의 일 실시예에 따른 GPU(122)의 디스플레이 헤드(206a) 내에 위치한 픽셀 데이터 선택 로직(300)의 블록도이다. 디스플레이 헤드(206b)는 동일한 설계의 픽셀 데이터 선택 로직을 가질 수 있다. 일부 실시예들에 있어서, GPU(122)의 각 디스플레이 헤드(206a, 206b)는 자신의 픽셀 데이터 선택 로직(300)을 갖는다.
픽셀 데이터 선택 로직(300)은 도 2의 디스플레이 파이프라인(202)으로부터 제1 경로(302) 상에 내부 픽셀 데이터를 수신한다. 도 2의 MIO A 포트(214a)(또는 일부 실시예들에서는 MIO B 포트(214b))가 입력 포트로서 구성되어 있는 경우, 픽셀 데이터 선택 로직(300)은 역시 제2 경로(304) 상에 외부 픽셀 데이터를 수신한다.
외부 픽셀 데이터 및 내부 픽셀 데이터는, 외부 픽셀 데이터 및 내부 픽셀 데이터를 혼합하여 혼합 픽셀 데이터를 생성하는 픽셀 데이터 결합기 회로(306)로 각각 전달된다. 픽셀 데이터 결합기 회로(306)는, 예컨대, 종래의 산술 로직 회로를 이용하여 구현될 수 있다. 일 실시예에서, 픽셀 데이터 결합기 회로(306)는, 내부 픽셀 데이터를 다수의 후보 제수들(예를 들어, 1, 2, 4 등) 중 하나로 나눈 제1 제산 회로(308); (제산 후의) 내부 픽셀 데이터에 외부 픽셀 데이터에 가산하여 총합 픽셀 데이터를 생성하는 가산 회로(310); 제어 신호(PSEL1)에 응답하여 내부 픽셀 데이터과 총합 픽셀 데이터 간을 선택하는 선택 회로(312); 및 선택된 픽셀 데이터를 다수의 후보 제수들(예를 들어, 1, 2 등) 중 하나로 나눈 제2 제산 회로(314)를 포함하고, 경로(316) 상에 혼합된 픽셀 데이터로서 그 결과를 제공한다.
경로(304) 상의 외부 픽셀 데이터 및 경로(316) 상의 혼합된 픽셀 데이터는 선택 회로(318)(예를 들어, 멀티플렉서)에 제공된다. 제어 신호(PSEL1)에 응답하여, 선택 회로(318)는 도 2의 크로스바(220)에 접속하는 출력 경로(320)로의 전달을 위해 내부 픽셀 데이터, 혼합된 픽셀 데이터 또는 외부 픽셀 데이터 중 하나를 선택한다.
PSEL1 및 PSEL2는 디스플레이 헤드(206a) 내의 제어 로직(명확히 도시되지는 않음)에 의해 유리하게 생성된다. 일부 실시예들에서는, 일반적으로 종래의 설계일 수 있는 제어 로직은 도 1의 CPU(102) 상에서 실행하는 그래픽 드라이버 프로그램에 의해 생성된 제어 정보에 응답한다. 유사한 제어 정보는, 예를 들어, 특정 어플리케이션에 대해 적절히 가중치부여된 평균값을 생성하도록 제산 회로(308, 314)에 대한 후보 제수들 중에서 선택함으로써, 픽셀 데이터 결합기(308)의 제어 동작에 사용될 수 있다. 본 교시(teaching)에 액세스한 당업자라면, PSEL을 생성하기 위한 적절한 제어 로직 및 픽셀 데이터 결합기 제어 신호들을 구현할 수 있을 것이므로, 제어 로직의 상세한 설명은 생략한다.
도 3b는 본 발명의 대안의 실시예에 따른 픽셀 데이터 선택 로직(350)의 블록도이다. 픽셀 데이터 선택 로직(350)은, 일반적으로 도 3a의 픽셀 데이터 선택 로직(300)과 유사하지만, 감마 보정된 픽셀 데이터를 혼합하는 특성을 갖도록 유리하게 설계된다. 픽셀 데이터 선택 로직(350)은 도 2의 디스플레이 파이프라인(202)으로부터 제1 경로(352) 상으로 내부 픽셀 데이터를 수신한다. 내부 픽셀 데이터는 픽셀 데이터 결합기(358)로 전달된다. MIO A 포트(214a)가 입력 포트로서 구성될 경우, 픽셀 데이터 선택 로직(350)은 또한 제2 경로(354) 상으로 외부 픽셀 데이터를 수신한다. 외부 픽셀 데이터는 또한 픽셀 데이터 결합기(358)로 전달된다.
픽셀 데이터 결합기(358)는 내부 픽셀 데이터 및 외부 픽셀 데이터를 결합하고, 결과로서 신호 경로(360) 상에 혼합된 픽셀 데이터를 제공한다. 픽셀 데이터 결합기(358)는 도 3a의 제산 회로(306)와 유사한 제산 회로 및/또는 도 3a의 가산 회로(308)와 유사한 가산기를 포함할 수 있다. 부가적으로(또는 대신에), 픽셀 데이터 결합기(358)는 경로(352, 354) 상에서 수신된 감마 보정된 픽셀 데이터들을 혼합하기 위한 산술 로직을 포함할 수 있다. 본 기술분야에 공지된 바와 같이, 감마 보정은, 예를 들어, 픽셀 데이터 값 P을 상수 γ에 대한 Pγ로 변환함으로써, 픽셀 데이터 값들을, 디스플레이 디바이스에서의 선형 세기 응답을 생성할 비선형 스케일로 조정한다. (통상의 디스플레이 디바이스에 대해, 상수 γ는 약 2.0 내지 2.5이다.) 이와 같은 일 실시예에서, γ≒2.2에 대하여, 감마 보정된 출력 픽셀 데이터 Po γ는 다음 식을 이용하여 계산될 수 있다:
여기서, Pi γ 및 Pe γ는 경로(352, 354) 상에 공급된 감마 보정된 픽셀 데이터를 나타낸다. 당업자라면, 수학식 1이, 정확한 결과가 요구되는 계산이라기 보다는 보다 간단한 하드웨어를 이용하여 수용가능한 근사화를 제공하는 것이라는 것을 인식할 것이다. (예를 들어, 4에 의한 승산 및 제산은 비트 시프트로서 구현될 수 있다.) 또한, 다른 근사화들로 대체될 수도 있음을 이해할 것이다.
다시 도 3b를 참조하면, 선택 멀티플렉서(362)가 경로(352) 상에서 내부 픽셀 데이터, 경로(354) 상에서 외부 픽셀 데이터, 및 경로(360) 상에서 혼합된 픽셀 데이터를 수신한다. 픽셀 데이터 선택 신호(PSEL)에 응답하여, 선택 멀티플렉서(362)는 도 2의 크로스바(220)에 접속하는 출력 경로(364)로의 전달을 위해 이 후보 픽셀 데이터들 중 하나를 선택한다. 출력 경로(364)는 도 3a의 제산 회로(314)와 유사할 수 있는 제2 제산 회로(366)를 포함할 수 있다. 대안의 실시예에서, 도 3a에 도시된 것과 유사한 두 개의 선택 멀티플렉서를 출력 픽셀 데이터를 선택하는데 사용하며, 제산 회로(366)는 제2 선택 멀티플렉서보다 이전에 배치할 수 있다. 그 밖의 선택 회로 구성들을 사용할 수도 있다.
몇몇 실시예들에서, 픽셀 데이터 결합기(350)는 픽셀 데이터들이 감마 보정되지 않은 경우에 사용되는 단순 가산에 의해, 감마 보정된 픽셀 데이터 또는 감마 보정되지 않은(선형) 픽셀 데이터 중 하나상에서 동작하도록 구성가능하다. 본 구성은, 셋업 동작 동안(예컨대, 시스템 기동시에) 그래픽 드라이버에 의해 설정되는 것이 바람직하다. 감마 보정된 필터들이 요구되는 것은 아니지만; 몇몇 실시예들에서, 최종 픽셀 데이터 선택 후에 임의의 감마 보정이 적용될 수도 있음을 이해해야 한다.
다수의 GPU를 사용하는 분산된 안티앨리어싱
픽셀 데이터 선택 로직(300) 또는 픽셀 데이터 선택 로직(350)을 갖는 도 2의 GPU(122)는, 둘 이상의 GPU(122)를 갖는 시스템에서 분산된 안티앨리어싱 동작에 유리하게 사용할 수 있다. 도 4a는 마스터/슬레이브 판독 구성에서 두 개의 GPU(122(0), 122(1))를 갖는 그래픽 서브시스템(400)의 개략적인 블록도이다. (명확화를 위해, 활성 포트와 디스플레이 헤드만 도시되어 있음; 본 예에서는, GPU당 1개의 디스플레이 헤드만이 사용됨) 슬레이브 GPU(122(1))는 출력 포트로서 구성된 자신의 MIO A 포트(214a(1))를 갖는 반면, 마스터 GPU(122(0))는 입력 포트로서 구성된 자신의 MIO A 포트(214a(0))를 갖는다. MIO A 포트(214a(1))는 MIO A 포트(214a(0))에 결합되어, 출력 픽셀 데이터들(Po1)이 슬레이브 GPU(122(1))로부터 마스터 GPU(122(0))로 흐르도록 한다.
슬레이브 GPU(122(1))의 헤드 A(206a(1))는, 슬레이브(122(1))의 디스플레이 파이프라인(202(1))에 의해 제공된 픽셀 데이터 Pi1을 출력 픽셀 데이터로서 MIO A 포트(214a(1))로 포워딩한다. GPU(122(1))로부터의 출력 픽셀 데이터들(Po1)은, 그 픽셀 데이터들을 디스플레이 헤드 A(206a(0))로 포워딩하는 마스터 GPU(122(0))의 MIO A 포트(214a(0))에 의해 수신된다. 헤드 A(206a(0))에서, 픽셀 데이터 선택 로직(300(0))(도 3의 픽셀 데이터 선택 로직(300)의 예)은, 마스터 GPU(122(0))의 디스플레이 파이프라인(202(0))으로부터의 내부 픽셀 데이터들(Pi0), 슬레이브 GPU(122(1))의 디스플레이 파이프라인(202(1))에서 시작하는 외부 픽셀 데이터(Po1), 또는 가산 회로(308)에 의해 공급된 총합(예컨대, Pi0+Po1)을 선택하도록 동작한다.
마스터 GPU(122(0))의 헤드 A(206a(0))는 선택된 픽셀 데이터들(Pfinal)을 출력 포트, 본 경우에서는 디지털 출력 포트(210(0))로 전달한다. GPU(122(0))의 헤드 A(206a(0))는, 픽셀 데이터를, 제3 GPU(122)의 MIO 포트에 접속될 수 있는 MIO B 포트(214b(0))(도 2c에 명시적으로 도시되어 있지 않음)로 전달하도록 구성될 수 있으며, 그러면, 제3 GPU(122)는 GPU(122(0))에 대한 마스터가 된다는 것을 이해할 것이다. 따라서, 임의의 수의 GPU(122)가 데이지 체인으로 접속될 수 있다.
본 발명의 일 실시예에 따르면, GPU들(122(0), 122(1))은 외부적으로 분산된 안티앨리어싱(AA) 모드에서 사용될 수 있다. 이 모드에서, 각 GPU(122)는 GPU(122(0))에 의해 사용된 샘플링 위치들이 GPU(122(1))에 의해 사용된 샘플링 위치들과 상이하도록, 뷰잉 파라미터 또는 샘플링 파라미터가 일부 변형된 동일한 화상을 렌더링한다. 예를 들어, 두 화상의 픽셀 경계에서 작은 오프셋을 생성하는, 다소 상이한 뷰포트들 또는 관측면 법선(viewplane normal)들이, 두 개의 GPU(122)에 대해 정의될 수 있다. 대안으로, (예를 들어, 그래픽 드라이버에 의해) 픽셀 내의 샘플링 위치가 구성가능하며, 동일한 뷰잉 파라미터 세트를 사용하되 각 픽셀 내의 서로 다른 샘플링 위치에 GPU(122)가 구성될 수 있다.
분산된 AA 모드에서, GPU(122(0))의 디스플레이 헤드(206a(0)) 내의 픽셀 데이터 선택 로직(300(0))에 의해 수신된 외부 픽셀 데이터들(Po1) 및 내부 픽셀 데이터들(Pi0)은 최종 화상의 동일한 픽셀에 대해 서로 다른 샘플링 위치들에 대응한다. 내부 픽셀 데이터 및 외부 픽셀 데이터들을 평균하는 것은, 두 배의 디스플레이 해상도로의 안티앨리어싱을 제공한다. 더 구체적으로는, 선택 멀티플렉서(310)는, 가산 회로(308)에 의해 제공된 픽셀 데이터 총합(Po1+Pi0)을 선택하도록 구성되고, 제산 회로(316)는 선택된 픽셀 데이터 총합을 2로 제산하도록 구성되므로, 최종 픽셀 데이터는 Pfinal = (Po1+Pi0)/2가 된다. 이러한 방식으로, 픽셀 데이터 선택 로직(300)은 2×AA 필터를 구현할 수 있다.
또한, GPU(122(0), 122(1))는 내부 픽셀 데이터 또는 외부 픽셀 데이터 중 하나가 서로 배타적으로 선택되는 모드들을 포함하여, 다른 분산 렌더링 모드들로 동작될 수 있다. 특정 선택은, 예를 들어, 서로 다른 GPU(122)가 동일한 프레임의 다른 부분들을 렌더링하는지, 아니면 서로 다른 연속 프레임들을 렌더링하는지 등의 분산 렌더링 모드의 특성에 의존할 것이며, 이는 본 발명과는 무과하다. 또한, 둘 이상의 GPU(122)가 존재하는 곳에서는, 보다 고도의 안티앨리어싱이 달성될 수 있다. 예를 들어, 임의의 수의 GPU(122)가, 그 각각의 포트(MIO A, MIO B)를 사용하여 데이지 체인 방식으로 접속될 수 있으며, 데이지 체인 방식으로 접속된 각 GPU는 적절한 가중 인자들을 이용하여 그 자신의 내부 픽셀 데이터를 업스트림 GPU로부터 수신된 외부 픽셀 데이터과 혼합한다.
본 명세서에 기술된 디스플레이 헤드들, 픽셀 데이터 선택 로직 및 분산된 AA 동작들은 예시적인 것이며, 변형 및 변경이 가능함을 이해할 것이다. 예를 들어, 본 명세서에서 언급된 제산 회로는 소수의 개별 제수들에 의한 제산을 지원한다. 그 밖의 실시예들에서, 제산 회로는, 광범위한 안티앨리어싱 필터들을 지원할 수 있도록 (임의의 선택된 제수들을 포함한) 대다수의 제수들을 지원할 수 있다. 또한, 제산 회로들은 본 명세서에 기술된 위치와는 다른 위치에 배치될 수 있으며, 제산 회로의 수를 변경할 수도 있다. 예를 들어, 제산 회로는, 내부 픽셀 데이터 경로에 추가하여, 또는 내부 픽셀 데이터 경로 대신에, 외부 픽셀 데이터 경로에 배치될 수 있다.
선택 회로(318)의 특정 구성을 변경할 수도 있다. 당업자라면, 내부 픽셀 데이터, 외부 픽셀 데이터, 및 내부 픽셀 데이터 및 외부 픽셀 데이터 양자로부터 얻어진 혼합 픽셀 데이터 중 임의의 회로 소자 또는 제어가능하게 선택할 수 있는 회로 소자들의 조합이 선택 회로로서 이용될 수 있음을 인식할 것이다.
본 명세서에 사용된 바와 같이, "픽셀 데이터"는 일반적으로 이미지 내의 일부 위치에 샘플링된 색값의 임의의 표시 또는 (예를 들어, 도 3의 가산 회로(310)에 의해 생성된) 그 값들의 조합에 관한 것이다. GPU 내의 파이프라인들을 렌더링하는 것은 공칭 해상도(해상도란 이미지 내의 픽셀들의 수를 나타냄)로 픽셀들을 생성하는데, 이는 디스플레이 디바이스의 해상도와 일치할 수도 일치하지 않을 수도 있다. 일부 실시예들에서, 디스플레이 파이프라인은 공칭 해상도를 디스플레이 해상도로 변환하기 위해, 요구되는 임의의 업필터링 또는 다운필터링을 수행한다.
본 명세서에서 MIO 포트들 및 디스플레이 헤드들을 "A" 및 "B"로서 라벨링하는 것은 단지 설명의 편의를 위한 것이다. 임의의 MIO 포트가 임의의 다른 MIO 포트에 접속될 수 있으며, 포트가 출력 포트로서 구성되는 경우, 어느 하나의 디스플레이 헤드가 어느 하나의 MIO 포트를 구동시킬 수 있음을 이해해야 한다. 부가적으로, 일부 GPU들은 2개 이상 또는 2개 미만의 MIO 포트들 및/또는 2개 이상 또는 2개 미만의 디스플레이 헤드들을 포함할 수 있다.
일반적으로, 본 발명을 실시하기 위해 하나의 GPU가 또 다른 GPU와 픽셀 데이터를 통신할 수 있도록 하는 임의의 포트 또는 포트들을 I/O 포트로서 사용할 수 있다. 일부 실시예들에서, 또한 상술된 바와 같이, MIO 포트들은 다른 GPU와 통신하는 것 외의 목적들을 위해 재구성가능하다. 예를 들어, MIO 포트들은 TV 엔코더 들 등과 같은 각종 외부 디바이스들과 통신하도록 구성될 수 있으며; 일부 실시예들에서는, DVO(Intel Coporation's Digital Video Output Interface) 또는 다른 비디오 출력용 표준이 지원될 수 있다. 일부 실시예들에서는, 그래픽 어댑터가 조립될 때, 각 MIO 포트의 구성을 결정하고; 시스템 기동시에, 그 어댑터는 자신의 MIO 포트의 구성에 관하여 시스템에 통지한다. 다른 실시예들에서, MIO 포트는 전용 입력 또는 출력 포트들로 대체될 수 있다.
I/O 포트들, 디스플레이 헤드 및 그래픽 서브시스템의 다른 태양들의 구성이, 그래픽 프로세서들 모두와 통신하도록 구성된 시스템 셋업 유닛에 의해 달성될 수 있다. 일부 실시예들에서, 시스템 셋업 유닛은 멀티 프로세서 그래픽 서브시스템을 포함하는 시스템의 CPU 상에서 실행되는 그래픽 드라이버 프로그램에서 구현된다. 하드웨어 및/또는 소프트웨어 구성요소의 임의의 조합을 포함하는 임의의 다른 적절한 에이전트가 시스템 셋업 유닛으로 사용될 수도 있다.
내부 분산 안티앨리어싱
본 발명의 일 실시예에 따르면, 하나의 GPU(122)의 두 개의 디스플레이 헤드들(206a, 206b)이 마스터/슬레이브 구성으로 서로 결합될 수 있다. 이러한 구성에서, GPU(122)는 마스터로서 동작하는 디스플레이 헤드(예를 들어, 헤드 A(206a)) 내의 픽셀 데이터 선택 로직(300)을 이용하는 "내부 분산된" AA 필터링을 수행할 수 있다.
도 4는 본 발명의 일 실시예에 따른 마스터/슬레이브 구성에서 디스플레이 헤드(206b)에 결합된 디스플레이 헤드(206a)를 도시하는 GPU(122)의 블록도이다. 도 4의 GPU(122)는 도 2의 GPU(122)와 동일할 수 있음을 이해해야 한다; 도 4에는, 단지 활성 I/O 포트들만이 도시되고, 크로스바(220)는 도시되지 않았다. 도 4의 디스플레이 파이프라인(202)은 두 개의 병렬부: 픽셀 데이터들을 디스플레이 헤드(206a)로 전달하는 디스플레이 파이프라인 A(402a), 및 픽셀 데이터들을 디스플레이 헤드(206b)로 전달하는 디스플레이 파이프라인 B(402b)를 갖는 것으로 도시되어 있다. 디스플레이 파이프라인들 A(402a) 및 B(402b)는, 각각 일반적인 종래의 설계로 구성될 수 있고, 각각은 각종 픽셀 데이터 처리 동작들을 수행하도록 구성될 수 있으며; 두 개의 디스플레이 파이프라인들(402a, 402b)은, 동일한 동작들 또는 원한다면 다른 동작들을 수행할 수 있다.
MIO B 포트(214b)는, 픽셀 데이터 전송 경로(400)를 통해, 동일한 GPU(122)의 MIO A포트(214a)에 결합된다. 픽셀 데이터 전송 경로(400)는, 디스플레이 헤드 B(206b)에 의해 생성된 픽셀 데이터들을 MIO B 포트(214b)로부터 MIO A 포트(214a)로 전송하며; MIO A 포트(214a)는 수신하는 픽셀 데이터들을 GPU(122)의 디스플레이 헤드 A(206a)로 전달한다. 픽셀 데이터 전송 경로(400)는 임의의 적절한 신호 전송 기술들을 이용하여 구현될 수 있으며; 예들을 후술한다.
디스플레이 헤드 A(206a)의 관점에서, 디스플레이 헤드 B(206b)로부터 수신된 픽셀 데이터들은 다른 GPU로부터 수신된 픽셀 데이터들과는 구별할 수 없다. 따라서, 예를 들어, 디스플레이 헤드 A(206a) 내의 픽셀 데이터 선택 로직(300)은, 헤드 A(206a)로부터 유래하는 "내부" 픽셀 데이터(PA), 헤드 B(206b)로부터 유래하는 "외부" 픽셀 데이터(PB), 또는 픽셀 데이터 결합기 회로(308)에 의해 픽셀 데이터들(PA, PB)로부터 생성된 혼합된 픽셀 데이터 중 임의의 하나를 출력 픽셀 데이터로서 선택하도록 동작될 수 있다. (픽셀 데이터들(PB)은, 픽셀 데이터(PA)과는 달리, 픽셀 데이터들(PB)이 디스플레이 파이프라인 A(402a)에 의해 디스플레이 헤드 A(206a)에 제공되지 않는다는 점에서, 디스플레이 헤드 A(206a)에 대해 "외부"이다.)
본 구성에서, GPU(122)는 디스플레이 헤드 A(206) 내의 픽셀 데이터 선택 로직(300)에 의해 혼합되는 샘플 값들을 공급하는 두 개의 디스플레이 파이프라인들(402a, 402b)에 의해 "내부 분산" AA를 수행하는데 이용할 수 있다. 동작시, GPU(122)의 렌더링 파이프라인(명백히 도시되지 않음)은, 두 이미지들에 사용된 샘플링 위치들이 서로 다르도록, 뷰잉 파라미터 또는 샘플링 파라미터에 일부 변형을 주어, 동일한 장면의 두 개의 이미지들을 렌더링한다. 예를 들어, 두 개의 이미지에 대하여 다소 상이한 뷰포트 또는 관측면 법선이 정의되어, 두 개의 이미지들의 픽셀 경계에서 작은 오프셋을 생성할 수 있다. 대안적으로, 픽셀 내의 샘플링 위치가 (예를 들어, 그래픽 드라이버에 의해) 구성될 수 있는 곳에서, 각 픽셀 데이터는, 동일하지만 각 픽셀 내의 샘플링 위치는 상이한 뷰잉 파라미터들의 세트를 이용하여 생성될 수 있다.
렌더링된 이미지들 중의 하나는 프레임 버퍼 "A"(404) 내에 저장되고, 나머지는 프레임 버퍼"B"(406) 내에 저장된다. 프레임 버퍼들 A(404) 및 B(406)는, GPU(122) 내의 온-칩 메모리, 그래픽 메모리(124) 및/또는 도 1의 시스템 메모리(104)를 포함하는 임의의 메모리 디바이스 또는 디바이스들 내에 구현될 수 있고, 두 프레임 버퍼들은, 소망하는 바에 따라, 동일한 메모리 디바이스 또는 상이 한 디바이스들 내에 위치할 수 있다.
디스플레이 파이프라인 B(402b)는 프레임 버퍼 B(406)로부터 픽셀 데이터들을 판독하고, 픽셀 데이터들에 대해 (일반적으로 종래의 것일 수 있는) 다양한 처리 조작들을 수행하고, 결과로서의 픽셀 데이터들 PB를 디스플레이 헤드 B(206b)에 전달한다. 디스플레이 헤드 B(206b)는 픽셀 데이터들 PB를 선택하는 조작을 하는 픽셀 데이터 선택 로직(300)을 갖고, 그 픽셀 데이터들은 크로스바(220)(도 4에 명시적으로 도시되지 않음)를 통해 MIO B 포트(214b)로 전달된다. 픽셀 데이터들 PB는 픽셀 데이터 경로(400)를 통하여 동일한 GPU(122)의 MIO A 포트(214a)에 전송되며, 픽셀 데이터들 PB를 디스플레이 헤드 A(206a)로 전달한다.
이 조작과 병행하여, 디스플레이 파이프라인 A(206a)는 프레임 버퍼 A로부터 픽셀 데이터들을 판독하고, 픽셀 데이터들 상에 (일반적으로 종래의 것일 수 있는) 다양한 처리 조작들을 수행하고, 결과로서의 픽셀 데이터들 PA를 디스플레이 헤드 A(206a)에 전달한다. 디스플레이 파이프라인 B(402b), 디스플레이 헤드 B(206b), 및 픽셀 데이터 전송 경로(400)는, 동일한 화면 픽셀 데이터에 대응하는 픽셀 데이터 값들 PA 및 PB가 디스플레이 헤드 A(206a)의 픽셀 데이터 선택 로직으로 동시에(예를 들면, 동일 클록 주기에) 전달되도록 적절한 타이밍을 갖도록 구성하는 것이 바람직하다.
픽셀 데이터 조합기 회로(308) 내에서, 가산 회로(310)는 픽셀 데이터들 PA 및 PB를 가산하고, 멀티플렉서(312)는 합계 픽셀 데이터를 선택하고, 제산 회로(314)는 그 총합을 2로 나눔으로써, 경로(316) 상에 혼합된 픽셀 데이터는 픽셀 데이터들 PA 및 PB의 평균이 된다. 멀티플렉서(318)는 혼합된 픽셀 데이터를 출력 픽셀 데이터 P final 로서 선택한다. 디스플레이 헤드 A(206a)는 디스플레이 디바이스로의 전송을 위하여 출력 픽셀 데이터 P final 을 출력 포트(예를 들어, 디지털 출력 포트(210))로 전달한다.
GPU(122)의 렌더링 파이프라인은 각 프레임을 두 번 렌더링하기 때문에, 본 명세서에서 설명하는 내부적으로 분산된 AA 모드에서 동작할 때의 GPU(122)의 최대 프레임률은, 넌-AA(non-AA) 모드에서 동작할 때의 최대 프레임률에 비하여 일반적으로 낮다. 일부 실시예들에서, 이 내부적으로 분산된 AA 모드에 대한 프레임률은 넌-AA 모드에 대한 프레임률의 대략 절반이다. 실시간 애니메이션에서, 내부적으로 분산된 AA 모드에 대한 프레임률이 초당 약 30 프레임(또는 그 이상)인 경우에는, 프레임률의 감소는 애니메이션의 스무드니스에 대한 악영향이 거의 없거나 전혀 없다. 또한, 넌-AA 모드에서 생산된 화질은 내부적으로 분산된 AA 모드에서 생산된 화질에 비하여 일반적으로 더 낮아서, 내부적으로 분산된 AA는 감소된 프레임률을 높은 화질로 교환한다.
또한, 본 명세서에서 설명된 내부적으로 분산된 AA 모드를 이용하여 획득할 수 있는 프레임률은 단일 GPU 내에서 종래의 AA 기술(예를 들어 렌더링 파이프라인 및/또는 디스플레이 파이프라인에서의 필터링)을 이용하여 획득할 수 있는 프레임률과 대등하다는 것을 주목해야 한다. 단일 GPU를 갖는 종래의 AA는 GPU의 파이프라인이 픽셀 데이터당 다중 샘플들을 갖는 단일 이미지를 생성하는 것을 필요로 한다. 또한, 픽셀당 보다 많은 수의 샘플들을 처리하는 것은 향상된 화질과 교환하여 넌-AA 모드에 비하여 프레임률을 감소시킨다. 이중 이미지들이 렌더링 파이프라인 내에서 어떻게 관리되는지에 따라, 내부적으로 분산된 AA를 갖는 GPU의 처리율은 종래의 AA를 갖는 GPU의 처리율과 대등할 수 있다.
고차의 AA 필터들이 또한 구현될 수 있고, 그러한 필터들은 단일 파이프라인의 조합 및 내부적으로 분산된 안티앨리어싱 조작들을 사용할 수 있다. 일 실시예에서, 디스플레이 파이프라인 A(402a) 및 디스플레이 파이프라인 B(402b)는, 내부의 Nx AA 필터를 구현하는 필터-온-스캔아웃(FOS) 모듈(명시적으로 도시되지 않음)을 각각 포함한다. 보다 구체적으로, 렌더링되는 이미지의 각 버전에 대하여, GPU(122) 내의 렌더링 파이프라인은, 종래의 수퍼샘플링 및/또는 멀티샘플링 기술들을 이용하여 픽셀당 N개의 샘플들(예를 들어, 2, 4 또는 1보다 큰 임의의 다른 수)을 생성한다. 이미지의 한 버전에 대한 샘플들은 프레임 버퍼 A(404) 내에 저장되는 한편, 이미지의 나머지 버전에 대한 샘플들은 프레임 버퍼 B(406) 내에 저장된다.
디스플레이 파이프라인(402a)은 프레임 버퍼 A로부터 각 픽셀 데이터에 대한 모든 N개의 샘플들을 수신한다. 디스플레이 파이프라인(402a) 내에서는, 제1 필터-온-스캔아웃(FOS) 모듈(명시적으로 도시되지 않음)이 Nx AA 필터를 구현하고, N개의 샘플들을 혼합하여 픽셀 데이터당 단일의 색값을 생성한다. FOS 모듈에 의해 결정되는 색 값은 (아마도 후속 처리 이후에) 디스플레이 헤드 A(206a)에 픽셀 데이터 PA로서 공급된다.
마찬가지로, 디스플레이 파이프라인(402b)은 프레임 버퍼 B로부터 각 픽셀 데이터에 대한 모든 N 개의 샘플들을 수신한다. 디스플레이 파이프라인(402b) 내에서는, 제2 FOS 모듈(역시 명시적으로 도시되지 않음)이 Nx AA 필터를 구현하고, N개의 샘플들을 혼합하여 픽셀 데이터당 단일의 색값을 결정한다. 제2 FOS 모듈에 의해 결정되는 색 값은 (아마도 후속 처리 이후에) 디스플레이 헤드 B(206b)에 픽셀 데이터 PB로서 공급된다.
따라서, 디스플레이 파이프들(402a 및 402b)에 의해 각각 생성되는 픽셀 데이터들 PA 및 PB는, 각각 Nx-오버샘플링된 이미지로부터의 필터링된 픽셀 데이터들일 수 있다. 프레임 버퍼 A(404)를 차지하기 위해 사용되는 샘플링 포인트들이 프레임 버퍼 B(406)를 차지하기 위해 사용되는 샘플링 포인트들과 겹치지 않는 한, 전술한 바와 같이 내부적으로 분산된 AA 필터 기술을 이용하여, 각 디스플레이 파이프(402a, 402b)내의 Nx AA 필터를 결합하여 (2N)x AA 필터가 된다. 예를 들어, 각 디스플레이 파이프(402a, 402b) 내의 FOS 모듈이 4x AA 필터를 제공한다면, GPU(122)는 8x AA 필터를 제공할 수 있다.
특정 FOS 모듈 또는 AA 필터링 알고리즘은 본 발명에 결정적이지 않고, 종래의 모듈들 및 알고리즘들이 사용될 수 있다. 따라서, 상세한 설명은 생략하였다. 일부 실시예들에서, 파이프라인들(402a 및 402b) 내의 FOS 모듈들은, 결과적인 최종 이미지가 특정 디스플레이 파이프라인에 의해 처리되는 이미지의 버전에 종속하지 않도록 동일한 필터 알고리즘을 적용한다. 또한, Nx AA 필터링은 이미지 생성 처리의 초기에 수행될 수 있다. 예를 들어, 대안적인 일 실시예에서, 종래의 기술들을 이용하여 Nx AA 필터링은 GPU(122)의 렌더링 파이프라인 내에서 수행될 수 있 다.
일부 실시예들에서, 상이한 프레임 버퍼들을 차지하기 위해 사용되는 샘플링 포인트들은 두 개의 샘플링 포인트들이 일치하지 않도록 선택된다. 예들 들어, 도 5a는 픽셀(500)에 적용된 "그리드" 샘플링 패턴을 도시한다. 상기 픽셀은 그 픽셀 내의 위치들(501-504)(원들로 표시됨)에서 4회 샘플링된다. 도 5b는 픽셀(500)에 적용된 "회전된 그리드" 샘플링 패턴을 도시한다. 상기 픽셀은 위치들(501-504)과는 상이한 위치들(511-514)(다이아몬드들로 표시됨)에서 4회 샘플링된다.
일 실시예에서, 프레임 버퍼 A(404) 내의 픽셀 데이터는 도 5a의 그리드 샘플링 패턴을 이용하여 생성되는 반면, 프레임 버퍼 B(406) 내의 픽셀 데이터는 도 5b의 회전된 그리드 샘플링 패턴을 이용하여 생성된다. 디스플레이 파이프 A(402a) 내의 FOS 모듈은 4개의 샘플 값들(501-504)을 단일 값 PA로 필터링하는 반면, 디스플레이 파이프 B(402b) 내의 FOS 모듈은 4개의 샘플 값들(511-514)을 단일 값 PB로 필터링한다. 디스플레이 헤드(206a) 내의 픽셀 데이터 선택 로직(300)은 전술한 값들 PA 및 PB를 혼합하여 8개의 샘플들 모두에 대한 평균에 대응하는 최종값을 획득한다. 본 절차는, 도 5c에 도시된 8-포인트 패턴으로 각 픽셀 데이터를 샘플링하는 단일 렌더링 절차로서 동일한 안티앨리어싱 파워를 제공한다.
본 명세서에서 설명되는 내부적으로 분산된 AA 기술은 예시적인 것이고 변형들 및 변경들이 가능하다는 것을 알 수 있을 것이다. 예를 들어, 본 명세서에서 설명되는 바와 같은 GPU(122)는 정확히 2개의 디스플레이 헤드를 갖고, 그 각각은 단지 하나의 출력 포트를 구동할 수 있으며, 그 결과, 양 디스플레이 헤드들이 내부적으로 분산된 안티앨리어싱에 사용될 때, GPU(122)는 단지 하나의 픽셀 데이터 스트림을 디스플레이 디바이스(들)에 전달할 수 있다. 그러나, 본 발명의 실시예들은, 적어도 2개의 디스플레이 헤드들과 적절한 픽셀 데이터 선택 로직 및 I/O 포트들을 갖는 임의의 GPU 내에서 구현될 수 있다. GPU가 2개보다 많은 디스플레이 헤드들을 가질 때, GPU는 내부적으로 분산된 AA를 지원할 수 있고 또한 독립적인 픽셀 데이터 스트림들을 둘 이상의 디스플레이 디바이스들에 공급할 수 있다. 부가적으로, GPU가 2개보다 많은 디스플레이 헤드들을 갖는 경우, GPU의 AA 파워를 더욱 증가시키기 위하여 GPU의 디스플레이 헤드들 모두를 마스터/슬레이브 데이지 체인에 함께 접속시키는 것이 가능하다.
또한, 본 명세서에 설명된 GPU(122)는 2개의 MIO 포트들을 갖고, 그들 모두는 내부적으로 분산된 AA에 사용된다. 본 실시예에서, 헤드 A(206a)와 헤드 B(206b)는 어느 것이나, 임의의 다른 GPU 또는 디스플레이 헤드에 대하여 마스터 또는 슬레이브로서 사용가능하지 않다. 다른 실시예에서, GPU는 부가적인 MIO 포트들을 가질 수 있거나, 또는 MIO 포트들은, 하나의 포트가 픽셀 데이터들을 수신하고 송신하는 것을 동시에 할 수 있도록 하여 내부적으로 분산된 AA와 조합하여 다른 GPU들과의 상호접속을 가능하게 하는 조작 모드를 가질 수 있다. 예를 들어, 제3 MIO 포트가 존재하면, 그 포트는, 다른 GPU로부터 디스플레이 헤드 B(206b)로 외부 픽셀 데이터들을 전달하기 위한 입력 포트로서 구현되거나, 또는 디스플레이 헤드 A(206a)에 의해 생산된 픽셀 데이터들을 다른 GPU로 전달하기 위한 입력 포트로서 구현될 수 있다. 그러한 일 실시예에서, 나머지 GPU는 그 자신의 내부적으로 분산된 AA 필터링을 수행하도록 구성되거나 또는 구성되지 않을 수도 있다.
픽셀 데이터 전송 경로
이하, 본 발명의 실시예들에 따른 픽셀 데이터 전송 경로 구현들의 예들을 설명한다. 명확해질 것이지만, 픽셀 데이터 전송 경로는 GPU에 대해 외부 또는 내부일 수 있다.
도 6은 본 발명의 실시예에 따라 인쇄된 회로 카드로서 구현되고 외부 픽셀 데이터 전송 경로로 구성된 그래픽 어댑터(600)를 도시한다. 그래픽 어댑터(600)는, PCI-E 또는 다른 상호접속 표준을 따르는 인쇄 회로 기판(PCB)(602)을 이용한 확장 카드로서 구현된다. GPU(122)는 PCB(602) 상에 탑재되고 와이어 트레이스들(도시되지 않음)을 통하여 PCB(602) 상에서 시스템 커넥터(604)에 전기적으로 결합된다. 시스템 커넥터(604)는 PCI-E 확장 슬롯(또는 그 외의 형태의 확장 슬롯)에 삽입되어, 도 1의 시스템(100)과 같은 컴퓨터 시스템의 GPU(122)와 그 나머지와의 사이에서 통신을 가능하게 한다. GPU(122)는 또한 PCB 상에서 와이어 트레이스(wire trace)들(도시되지 않음)을 통하여 디스플레이 출력 커넥터(606)에 전기적으로 결합된다. 디스플레이 출력 커넥터(606)는 GPU(122)의 디지털 출력 포트들(210, 211), 또는 아날로그 출력 포트들(212, 213) 중 하나에 유리하게 결합된다(도 2 참조). 일부 실시예들에서, PCB(602)는, 종래 기술 분야에서 알려진 바와 같이, 출력 포트들(210-213) 중의 상이한 하나에 각각 결합하는 다중의 디스플레이 출력 커넥터들(606)을 제공할 수 있다.
PCB(602)는 또한, 동일한 디자인일 수 있는 두 개의 그래픽 에지 커넥터 들(614a, 614b)을 포함한다. 그래픽 에지 커넥터(614a)는 와이어 트레이스(616)를 통하여 GPU(122)의 MIO A 포트(214a)에 접속되는 반면, 그래픽 에지 커넥터(614b)는 와이어 트레이스(618)를 통하여 GPU(122)의 MIO B 포트(214b)에 접속된다. 각 그래픽 에지 커넥터(614a, 614b)는, 착탈식 상호접속 디바이스에 대한 전기적 및 기계적 접속을 위하여 구성된다. 일부 실시예들에서, 그래픽 에지 커넥터들(614a 및 614b)은 동일한 구성이어서, 상호 교환적으로 그들을 사용하는 것이 가능하다.
일 실시예에서, 그래픽 어댑터(600)는 둘 이상의 GPU들이 렌더링 작업의 상이한 부분들을 수행하도록 상호 동작하는 분산 렌더링 시스템에서 사용되도록 설계된다. 그러한 시스템들은, 예를 들어, 각 GPU가 이미지의 상이한 부분을 렌더링하는 분할-프레임 모드에서, 각 GPU가 상이한 이미지들을 이미지들의 시퀀스로 렌더링하는 교대-프레임 모드에서, 또는 분산된 안티앨리어싱 모드에서 동작될 수 있다. 이들 모드들의 각각에서, 하나의 GPU(마스터)는 다른 GPU(슬레이브)로부터 픽셀 데이터들을 수신하고, 마스터 GPU 내의 픽셀 데이터 선택 로직(300)은 전술한 바와 같이 표시를 위한 픽셀 데이터를 선택한다. 상이한 그래픽 어댑터들(600) 상의 GPU들은 적절한 상호접속 디바이스들을 사용하는 개별적인 그래픽 에지 커넥터들(614a, 614b)을 통하여 유리하게 접속된다.
본 발명의 실시예에서, 도 6에 도시된 바와 같이, 착탈식 상호접속 디바이스(620)는 동일한 그래픽 어댑터(600)의 그래픽 에지 커넥터들(614a 및 614b)을 접속할 수 있도록 구성되고 형성된다. 상호접속 디바이스(620)는, 예를 들어, 어느 일단에 그래픽 에지 커넥터(614a, 614b)를 수용하기 위한 리셉터클들을 갖는, 그 길이를 따라 인쇄된 와이어 트레이스을 갖는 PCB 또는 리본 케이블일 수 있는데, 이는 두 그래픽 에지 커넥터들(614a, 614b)이 서로 접속되는 것을 가능하게 한다.
본 실시예에서, 상호접속 디바이스(620)는, 그래픽 어댑터(600)에 의해 지원되는 분산-렌더링 시스템의 시간 특성을 이용하여 픽셀 데이터 전송 경로(400)를 개설한다(도 4). 보다 구체적으로, 분산 렌더링 구성에서, 상이한 그래픽 어댑터(600) 상에서 GPU(122)의 MIO B 포트(214b)로부터 GPU의 MIO A 포트(또는 MIO B 포트)로의 픽셀 데이터 전송 경로는, 와이어 트레이스들(618 및/또는 616)의 길이 및 두 어댑터들 사이의 상호접속 디바이스 뿐만 아니라 전송 경로의 임의의 세그먼트를 따라 포함될 수 있는 임의의 전자 부품들(FIFO들, 래치들 등)로부터 유래하는 독특한 전송 시간을 갖는다. 분산 렌더링 조작에서는, 슬레이브 GPU의 디스플레이 헤드로부터 마스터 GPU의 디스플레이 헤드로의 픽셀 데이터들의 전송은, 슬레이브 GPU 및 마스터 GPU로부터의 픽셀 데이터들이 실질적으로 동일한 시각에(예를 들면, 동일 클록 사이클 동안에) 마스터 GPU의 디스플레이 헤드에 도달할 수 있도록 유리하게 조정될 수 있다.
상호접속 디바이스(620)가, 상이한 GPU들을 접속시키는 분산-렌더링 상호접속 디바이스의 경우와 부합하는 전송 시간을 제공하는 한, 상호접속 디바이스(620)에 의해 제공된 픽셀 데이터 전송 경로는 신호들을 MIO A 포트(214a)로 정확한 타이밍에 전달한다. 따라서, 외부의 상호접속 디바이스를 사용하는 내부적으로 분산된 AA의 구현은, GPU 또는 원래 분산 렌더링을 위하여 설계된 어댑터 카드(600)에 대한 내부 변경들을 필요로 하지 않는다.
본 명세서에 설명된 그래픽 어댑터들과 상호접속 디바이스들은 예시적인 것 이고 변형들과 변경들이 가능하다는 것을 인식할 것이다. 형태, 레이아웃, 및 어댑터들과 상호접속 디바이스들의 재료 조성은 본 명세서에 도시되고 설명된 것들로부터 변경될 수 있고, 임의의 통신 프로토콜이 MIO 포트들 사이에서 데이터를 전송하기 위해 구현될 수 있을 것이다.
대안적인 일 실시예에서, 상호접속 디바이스(620)는, 예를 들어, 경로(618)를 경로(616)에 접속시키기 위한 와이어 트레이스를 사용하여, PCB(602)의 일부로서 구현될 수 있다. 본 실시예에서, 제어 디바이스들(예를 들어, 착탈식 점퍼 또는 드라이버-제어되는 스위치)은 경로(618)로부터 경로(616)로의 데이터 전송들 또는 그 반대의 데이터 전송들을 가능하게 또는 불가능하게 하기 위하여 유리하게 사용될 것이다.
일부 실시예들에서, 동일한 GPU의 두개의 MIO 포트들 사이에서의 상호접속 디바이스(620) 또는 그외의 외부 접속의 존재는 내부적으로 분산된 AA를 자동으로 인에이블시키지 않는다는 것을 유의해야 한다. 전술한 바와 같이, 픽셀 데이터 선택 로직(300)의 조작은 내부적으로 분산된 AA가 수행될 지의 여부를 결정하고, 픽셀 데이터 선택 로직(300)의 조작은 그래픽 드라이버를 통해 제어된다.
또 다른 대안적 실시예에 있어서, 내부적으로 분산된 AA에 이용되는 픽셀 데이터 전송 경로는 GPU 내에 형성되어 있다. 도 7은 본 발명의 그러한 일 실시예에 따른 GPU(700)의 블록도이다. GPU(700)는 일반적으로 도 4의 GPU(122)와 유사하며, 유사한 참조 번호들은 대응하는 구성 요소들을 식별하는 데 사용되었다. GPU(122)와는 달리, GPU(700)는, 디스플레이 헤드 B(206b)를 디스플레이 헤드 A(206a)의 외부 픽셀 데이터 입력 경로(704)에 접속시키는 내부 픽셀 데이터 전송 경로를 포함한다.
본 실시예에 있어서, 픽셀 데이터 전송 경로는, 디스플레이 헤드 B(206b)로부터의 픽셀 데이터과 예컨대 MIO A 포트(214a) 등의 MIO 포트들 중 하나로부터 크로스바(220)를 거쳐 경로(708) 상에서 수신되는 픽셀 데이터 중에서 선택하는 선택 유닛(예컨대, 멀티플렉서)(706)을 포함한다. 선택된 픽셀 데이터는 디스플레이 헤드 A(206a)의 외부 픽셀 데이터 입력 경로(704)에 제공된다.
선택 유닛(706)은 제어 신호(명시적으로 도시되지 않음)에 응답하여 동작한다. 제어 신호는, 내부적으로 분산된 AA 모드에서 GPU(700)가 동작하는 경우에 경로(702)상의 픽셀 데이터를 선택하는, 그리고 GPU(700)의 디스플레이 헤드 A(206a)가 다른 GPU에 대한 마스터로서 동작하고 있는 경우에 경로(708) 상의 픽셀 데이터를 선택하는 선택 유닛(706)을 설정(configure)한다. 이 제어 신호는 그래픽 드라이버에 의해 발행되는 명령들에 응답하여 생성될 수 있으며, 이는 사용자(또는 어플리케이션 개발자)로 하여금 그래픽 하드웨어에 액세스할 필요없이 적절한 소프트웨어 인터페이스를 통해 내부적으로 분산된 AA를 인에이블하거나 또는 디스에이블하게 한다.
본 실시예에 있어서, 디스플레이 헤드 B(206b)로부터 선택 회로(706)로의 경로(702)는 FIFO들, latch들, 및 그 외 분산된 렌더링 모드에서 외부 GPU로부터 픽셀 데이터들이 도달하는 타이밍과 동일한 타이밍에 디스플레이 헤드 B(206b)로부터의 픽셀 데이터들이 선택 회로(706)에 도달하도록 하는 타이밍 제어 장치들을 포함할 수 있다는 것을 유념해야 한다. 이 경우, 디스플레이 헤드 B(206b) 및 디스플레이 디스플레이 헤드 A(206a)의 동작 타이밍은, GPU가 분산 렌더링 모드에 있는지 또는 내부적으로 분산된 AA 모드에 있는지에 무관하다.
내부 픽셀 데이터 전송 경로는, CPU로의 변경들은 요구하지만, GPU의 I/O 포트들에 대하여는 어떠한 것도 그 사용을 요구하지 않는다. 따라서, 예를 들어, GPU(700)의 디스플레이 헤드 A(206a)는 다른 GPU(700) 내의 디스플레이 헤드에 종속(slave)될 수 있거나, 또는 GPU(700)의 디스플레이 헤드 B(206b)는 GPU(700)가 내부적으로 분산된 AA 필터링을 계속 행하는 동안 다른 GPU 내의 디스플레이 헤드에 마스터가 될 수 있다.
본 명세서에 기술된 내부 픽셀 데이터 전송 경로는 예시적인 것이며, 변경 및 개조가 가능하다는 것을 이해할 것이다. 예를 들어, 개시된 경로에 추가하여, (디스플레이 헤드 A(206a)로부터 디스플레이 헤드 B(206b)로의) "리버스(reverse)" 픽셀 데이터 전송 경로가 제공될 수도 있다.
다른 실시예들
전술한 바와 같이, 본 발명의 실시예들은 판독 기술을 이용하는 능력을 갖는 단일 GPU 및 멀티-GPU 시스템들에 대한 분산 안티앨리어싱 기술들 및 AA-필터링 이미지들을 생성하는 다중 GPU에 걸쳐 분산된 렌더링과 일반적으로 연관된 구성요소들을 제공한다. 적절한 그래픽 드라이버 인터페이스를 거쳐, 적절하게 구성된 GPU의 최종 사용자는 프로그램 자체에 제공되는 AA에 무관하게(또는 그것이 결핍되어도), 내부적으로 분산된 AA를 임의의 그래픽 프로그램에 대하여 인에이블하도록 선택할 수 있다. 프로그램이 AA를 제공하는 경우, 본 명세서에 기술된 바와 같이 내부적으로 분산된 AA는 AA 해상도를 증가(예컨대, 두 배)시키는 데에 이용될 수 있 다.
본 발명은 구체적 실시예들의 관점에서 기술되었지만, 당업자라면 수많은 변경들이 가능하다는 것을 인식할 것이다. 예를 들어, 본 발명은 AA 필터링을 참조하여 기술되었지만, 다른 방식으로, 본 명세서에 기술된 단일 GPU의 디스플레이 헤드들 간 또는 다중 GPU의 디스플레이 헤드들 간의 결합이 이용될 수도 있다.
대안적인 일 실시예에 있어서, 스테레오 애너그리프(anaglyph)들을 생성하는 데 분산 필터링이 이용될 수 있다. 당해 기술 분야에서 공지된 바와 같이, 스테레오 애너그리프는 단일 이미지를 생성하기 위해 한 장면의 좌안 시야(left eye view)와 우안 시야(right eye view)를 중첩한다. 전형적으로, 좌안 픽셀들 및 우안 픽셀들에는 서로 다른 컬러 필터들이 적용된다; 예컨대, 우안 픽셀들은 적색-통과 필터(red-pass filter)에 의해 필터링될 수 있는 한편, 좌안 픽셀들은 청색/녹색-통과 필터를 이용하여 필터링된다. 좌안 시야와 우안 시야 간의 뷰포트(viewport) 오프셋 또는 뷰포인트 오프셋(viewpoint offset)으로 인해, 장면에서 동일 지점에 대응하는 좌안 픽셀 및 우안 픽셀은 애너그리프 내의 서로 다른 위치에 존재한다. 이에 따라, 육안에 대하여, 애너그리프는 왜곡된 컬러들을 갖는 이중상으로서 나타난다. 이미지를 적절하게 보기 위해, 관찰자는 우안 픽섹들에 사용되는 컬러들을 필터링하는 좌안 렌즈 및 좌안 픽셀 데이터들에 사용되는 컬러들을 필터링하는 우안 렌즈를 갖는 특수 안경을 착용한다.
도 4a를 참조하면, 장면의 우안 시야를 생성하는 데에 GPU(122(0)) 렌더링 파이프라인(도시되지 않음)이 이용될 수 있는 한편, GPU(122(1))의 렌더링 파이프 라인(도시되지 않음)이 동일한 장면의 좌안 시야를 생성한다. 좌안 시야 및 우안 시야에 대한 렌더링 파라미터들을 결정하기 위해 공지의 기술들이 이용될 수 있다.
우안 픽셀 데이터들 Pi1 및 좌안 픽셀 데이터들 Pi0 은 GPU(122(0) 및 122(1))의 각 렌더링 파이프라인들 또는 각 디스플레이 파이프라인들(202(0) 및 202(1)) 중 어느 하나에서 유리하게 컬러-필터링된다. 일 실시예에 있어서, 뚜렷한 적색, 녹색, 및 청색 성분들을 이용하여 픽셀 컬러가 특정된다. 우안 픽셀 데이터들은 예컨대 녹색 성분 및 청색 성분을 변경하지 않은 채 남겨두고 적색 성분을 0으로 감소시킴으로써 필터링될 수 있으며, 마찬가지로 좌안 픽셀 데이터들은 적색 성분을 변경하지 않은 채 남겨두고 녹색 성분 및 청색 성분을 0으로 감소시킴으로써 필터링될 수 있다.
GPU(122(1))의 디스플레이 헤드 A(206a(1))에는 우안 픽셀 데이터들 Pi1 이 전달된다. 디스플레이 헤드(206(a))는 픽셀 데이터들 Pi1 을 MIO A 포트(214a(1))에 전달하고, MIO A 포트(214a(1))는 이들을 화소들 Po1 로서 GPU(122(0))의 MIO A 포트(214a(0))에 전달한다. 이에 따라 디스플레이 헤드(206a(0))는 우안 픽셀 데이터들을 외부 픽셀 데이터들로서 수신한다.
디스플레이 헤드(206a(0))에는 좌안 픽셀 데이터들 Pi0 이 내부 픽셀 데이터들로서 전달된다. 우안 시야 및 좌안 시야를 생성하는 데 이용되는 뷰포트들 또는 뷰포인트들 간의 오프셋 때문에, 픽셀 데이터 선택 로직(300)에 의해 처리되는 대응하는 좌안 픽셀 및 우안 픽셀은 애너그리프 프레임 내의 동일한 위치에 있는 픽셀들이며; 일반적으로, 대응하는 좌안 픽셀 및 우안 픽셀은 그 장면 내의 서로 다른 위치들을 나타낸다.
일 실시예에 있어서, 디스플레이 헤드(206a(0))는 도 3의 픽셀 데이터 선택 로직(300)을 포함한다. 애너그리프를 생성하기 위하여, 제산 회로들(306 및 314)은 모두 제수 1을 선택하도록 설정된다. 가산 회로(308)는 좌안 픽셀 데이터 Pi0 및 우안 픽셀 데이터 Pi1 을 가산하여, 이전의 컬러 필터링의 결과로서 좌안 픽셀 데이터의 적색 성분 및 우안 픽셀 데이터의 청색 성분 및 녹색 성분을 갖는 경로(310)상의 총합 픽셀 데이터를 생성한다. 선택 멀티플렉서(312)는 경로(310)로부터 총합 픽셀 데이터를 선택하고, 선택 멀티플렉서(316)는 경로(315) 상의 혼합 픽셀 데이터를 출력 픽셀 데이터로서 선택한다.
다른 실시예들에 있어서, 픽셀 데이터 선택 로직(300) 앞의 컬러 필터들은 사용되지 않는다. 예를 들어, 상기 선택이 각 색 성분에 대하여 독립적으로 제어될 수 있도록 선택 멀티플렉서들(312 및/또는 316)이 구성될 수 있다. 그러한 일 실시예에 있어서, 선택 멀티플렉서(312)는 경로(302)로부터 좌안 픽셀 데이터 Pi0 의 모든 색 성분들을 통과시키는 반면, 선택 멀티플렉서(316)는 좌안 픽셀 데이터 Pi0 의 적색 성분 및 우안 픽셀 데이터 Pi1 의 청색 성분 및 녹색 성분을 통과시킨다. 그 결과물은 좌안 픽셀 데이터의 적색 성분 및 우안 픽셀 데이터의 청색 성분 및 녹색 성분을 갖는 경로(318) 상의 출력 픽셀 데이터이다.
당업자라면, 애너그리프 렌더링을 위하여 2개가 넘는 GPU가 이용될 수 있다는 것을 이해할 것이다. 4개의 GPU(예컨대, 도 4b)를 이용한 일 실시예에 있어서, 우안 시야를 생성하는 데에 2개의 GPU가 이용될 수 있으며, 좌안 시야를 생성하는 데에 나머지 2개의 GPU가 이용될 수 있다. 각 시야를 생성하는 2개의 GPU는, 애너그리프의 화질을 개선하기 위하여 전술한 바와 같은 분산 안티앨리어싱 기술들을 채용할 수 있다.
내부적으로 분산된 필터링을 이용하여 스테레오 애너그리프들도 렌더링될 수 있다. 도 4b를 참조하면, GPU(122)의 렌더링 파이프라인(도시되지 않음)은 프레임 버퍼 A에서의 좌안 시야 및 프레임 버퍼 B에서의 우안 시야(또는 그 역으로)를 저장하는 양쪽 시야를 모두 생성할 수도 있다. 디스플레이 파이프라인 B(402b) 및 디스플레임 헤드 B(206b)는 우안 픽셀 데이터들을 디스플레이 헤드 A(206a)에 픽셀 데이터 PB로서 전달하고, 디스플레이 파이프라인 A(402a)는 좌안 픽셀 데이터들을 디스플레이 헤드 A(206a)에 픽셀 데이터 PA로서 전달한다. 디스플레이 헤드 A(206a)에 있어서, 픽셀 데이터 결합기(308)(도 3)는 픽셀 데이터들을 적절히 혼합하여 애너그리프를 생성한다.
페이드-인, 페이드-아웃, 또는 디졸브(dissolve) 등의 천이 효과들을 생성하기 위해서도 분산 필터링이 사용될 수 있다. 예를 들어, 내부적으로 분산되는 경우, 프레임 버퍼 B는 페이드 아웃이 되고 있는 이미지를 저장할 수 있는 한편, 프레임 버퍼 A는 페이드 인이 되고 있는 이미지를 저장한다. 각 프레임에서, 픽셀 데이터 결합기(308)가 프레임 버퍼 A 및 프레임 버퍼 B로부터 픽셀 데이터들의 상대적 가중치들을 조정하기 때문에, 프레임 버퍼 A로부터의 이미지는 풀 인텐시티(full intensity)까지 점차적으로 증가하는 반면, 프레임 버퍼 B에서의 이미지는 제로 인텐시티까지 희미해질 수 있다. (만약, 프레임 버퍼 B 내의 이미지가 솔리드 컬러 필드인 경우에는, 효과는 페이드-인이고; 프레임 버퍼 A 내의 이미지가 솔리드 컬러인 경우, 효과는 페이드-아웃이다.) 천이의 스무드니스(smoothness)는, 픽셀 데이터 결합기(308)가 형성가능한 픽셀 데이터들 PA 및 PB의 서로 다른 가중 평균값들의 수치에 부분적으로 의존하는데, 이는 설계 선택의 문제이다. 유사한 효과를 달성하기 위하여, 외부적으로 분산된 필터링을 갖는 다중 GPU가 이용될 수도 있다.
다른 실시예에 있어서, 그러한 천이 효과들은 각 디스플레이 헤드의 룩업 테이블과 결합되어 있는 분산 필터링을 이용하여 달성될 수 있다. 당해 기술 분야에 공지되어 있는 바와 같이, 디스플레이 헤드는 내부 픽셀 데이터 표현을 표시 장치에 대해 적절한 색 강도값으로 변환하는 룩업 테이블을 주로 포함한다. 페이드 아웃(또는 페이드 인)은 1 프레임으로부터 다음 프레임으로 룩업 테이블 내의 값들의 색 강도를 감소(또는 증가)시킴으로써 달성될 수 있다. 이에 따라, 프레임 버퍼 B의 이미지로부터 프레임 버퍼 A의 이미지로 디졸브하기 위하여, 디스플레이 헤드 B에는 종래의 페이드-아웃 룩업 테이블들이 적용될 수 있으며, 디스플레이 A에는 종래의 페이드-인 룩업 테이블들이 적용될 수 있다. 픽셀 데이터 결합기(308)는 디졸브 효과를 생성하기 위하여 일정한(예컨대, 동일한) 가중치들을 갖는 2개의 이미지들을 결합할 것이다.
다른 실시예들에 있어서, 혼합을 포함하지 않는 표시 특성들을 구현하기 위하여 동일한 GPU의 디스플레이 헤드들 간의 픽셀 데이터 전송이 이용된다. 예를 들어, LCD 오버드라이브(당해 기술 분야에서는 "LCD 피드-포워드(feed-forward)" 또는 "응답 시간 보상(response time conpensation; RTC)으로 언급되기도 함) 기능을 제어하는 데에 디스플레이 헤드들 간의 픽셀 데이터 전송이 이용될 수 있다. 당해 기술 분야에 공지된 바와 같이, 픽셀 데이터들을 구동하는 신호들이, 원하는 신규의 강도에 부분적으로 기초하여, 그리고 원하는 신규의 강도와 이전의 강도 간의 차이에 부분적으로 기초하여 프레임으로부터 프레임으로 조정되는 경우, LCD 화면은 보다 신속히 응답하도록 만들어질 수 있다.
LCD 오버라이드 기능을 구현하기 위하여, 프레임 버퍼 A는 신규 이미지의 픽셀 데이터들을 저장하도록 이용될 수 있는 반면, 프레임 버퍼 B는 이전 이미지의 픽셀 데이터들을 저장한다. 디스플레이 헤드 B는 이전 픽셀 데이터값들을 디스플레이 헤드 A에 전달하고, 디스플레이 헤드 A의 픽셀 데이터 결합기(308)는, 예를 들어 LCD 오버드라이브 신호를 계산하는 종래의 기술들을 이용하여, 신규의 값 및 이전의 값에 기초하여 오버드라이브 값을 계산하도록 구성될 수 있다.
복합 이미지들을 생성하는 데에도 GPU의 디스플레이 헤드들 간의 픽셀 데이터 전송이 이용될 수 있다. 예를 들어, 프레임 버퍼 B는 프레임 버퍼 A에 저장되는 이미지의 부분 상에 오버레이되도록 오버레이 이미지에 대한 픽셀 데이터들을 포함할 수 있다. 디스플레이 헤드 B는 오버레이 픽셀 데이터들을 디스플에이 헤드 A에 전달하고, 디스플레이 헤드 A 내의 픽셀 데이터 선택 로직(300)은 외부 픽셀 데이터가 선택되는 오버레이 영역 내를 제외한 내부 픽셀 데이터를 선택한다.
따라서, 본 발명은 특정 실시예들에 관하여 기술되었지만, 본 발명은 이하 특허청구범위 내에서의 변경물 및 균등물 모두를 포함하도록 의도된 것이라는 것을 이해할 것이다.
본 발명에 따르면, 안티앨리어싱 및 그 외 처리 태스크들을 수행하기 위한 단일 그래픽 프로세서의 다중 디스플레이 헤드들을 이용한 시스템들 및 방법들을 보다 효율적으로 제공할 수 있다.
Claims (13)
- 반도체 집적 회로를 이용하여 구현되는 그래픽 처리 장치로서,제1 출력 픽셀 데이터를 생성하도록 구성된 제1 디스플레이 헤드 - 상기 제1 디스플레이 헤드는 상기 반도체 집적 회로 내에 배치되어 있음 - ;제2 출력 픽셀 데이터를 생성하도록 구성된 제2 디스플레이 헤드 - 상기 제2 디스플레이 헤드는 상기 반도체 집적 회로 내에 배치되어 있으며,외부 픽셀 데이터를 수신하도록 구성된 제1 입력 경로,내부 픽셀 데이터를 수신하도록 구성된 제2 입력 경로,상기 제1 입력 경로 및 상기 제2 입력 경로에 결합되며 상기 외부 픽셀 데이터 및 상기 내부 픽셀 데이터를 혼합하여 혼합 픽셀 데이터를 생성하도록 구성된 픽셀 데이터 결합기, 및상기 외부 픽셀 데이터, 상기 내부 픽셀 데이터, 또는 상기 혼합 픽셀 데이터 중 하나를 제2 출력 픽셀 데이터로서 선택하도록 구성된 선택 회로를 포함함 - ; 및상기 제1 출력 픽셀 데이터가 상기 제1 입력 경로에 의해 상기 외부 픽셀 데이터로서 수신되도록 상기 제1 디스플레이 헤드로부터 상기 제2 디스플레이 헤드의 제1 입력 경로로 상기 제1 출력 픽셀 데이터를 전달하도록 구성가능한 픽셀 데이터 전송 경로를 포함하는 그래픽 처리 장치.
- 제1항에 있어서,상기 픽셀 데이터 전송 경로는 상기 반도체 집적 회로 내에 배치되어 있는 그래픽 처리 장치.
- 제1항에 있어서,상기 픽셀 데이터 전송 경로의 적어도 일부는 상기 반도체 집적 회로에 대하여 외부인 그래픽 처리 장치.
- 제3항에 있어서,상기 픽셀 데이터 전송 경로는 착탈식(removable) 커넥터를 포함하는 그래픽 처리 장치.
- 제1항에 있어서,제1 픽셀 데이터를 생성하고, 상기 제1 픽셀 데이터를 상기 제1 디스플레이 헤드에 전달하도록 구성된 제1 디스플레이 파이프라인; 및제2 픽셀 데이터를 생성하고, 상기 제2 픽셀 데이터를 상기 제2 디스플레이 헤드에 전달하도록 구성된 제2 디스플레이 파이프라인을 더 포함하는 그래픽 처리 장치.
- 제5항에 있어서,표시될 프레임의 제1 버전 및 제2 버전을 생성하도록 구성된 렌더링 파이프라인 - 상기 제1 버전 및 제2 버전은 뷰잉 파라미터, 샘플링 파라미터 및 각 픽셀 내의 샘플링 위치 중 적어도 하나의 관점에서 서로 상이함 - ;을 더 포함하고,상기 제1 디스플레이 파이프라인은 상기 프레임의 제1 버전에 기초하여 제1 픽셀 데이터를 생성하도록 구성되며, 상기 제2 디스플레이 파이프라인은 상기 프레임의 제2 버전에 기초하여 제2 픽셀 데이터를 생성하도록 구성되며, 상기 디스플레이 헤드 내의 선택 회로는 제2 출력 픽셀 데이터로서 혼합 픽셀 데이터를 선택하도록 구성되어 있는 그래픽 처리 장치.
- 이미지를 생성하는 방법으로서,그래픽 프로세서의 렌더링 파이프라인을 이용하여, 이미지에 대한 제1 군의 입력 픽셀 데이터들 및 제2 군의 입력 픽셀 데이터들을 렌더링하는 단계 - 상기 제1 군의 입력 픽셀 데이터들을 렌더링하는 데 이용되는 제1 렌더링 동작은 상기 제2 군의 입력 픽셀 데이터들을 렌더링하는 데 이용되는 제2 렌더링 동작과 각 픽셀에 적용되는 샘플링 패턴 및 렌더링되고 있는 이미지의 뷰포트 오프셋 중 적어도 하나의 관점에서 상이함 - ;상기 제1 군의 입력 픽셀 데이터들을 상기 그래픽 프로세서의 제1 디스플레이 헤드에 전달하는 단계;상기 제2 군의 입력 픽셀 데이터들을 상기 그래픽 프로세서의 제2 디스플레이 헤드에 전달하는 단계;상기 제1 군의 입력 픽셀 데이터들을 상기 제1 디스플레이 헤드로부터 상기 제2 디스플레이 헤드로 전달하는 단계; 및상기 제2 디스플레이 헤드에서, 상기 제1 군의 입력 픽셀 데이터들과 상기 제2 군의 입력 픽셀 데이터들 중 대응하는 픽셀 데이터들을 혼합하여 출력 픽셀 데이터군을 생성하는 단계를 포함하는 이미지 생성 방법.
- 그래픽 프로세서용 디스플레이 헤드로서,제1 그래픽 프로세서에 의해 생성되는 제1 픽셀 데이터를 전달하도록 구성된 제1 입력 경로;제2 그래픽 프로세서에 의해 생성되는 제2 픽셀 데이터를 전달하도록 구성된 제2 입력 경로;상기 제1 입력 경로 및 상기 제2 입력 경로에 결합되고, 상기 제1 픽셀 데이터 및 상기 제2 픽셀 데이터를 혼합하여 혼합 픽셀 데이터를 생성하도록 구성된 픽셀 데이터 결합기; 및상기 제1 픽셀 데이터, 상기 제2 픽셀 데이터, 또는 상기 혼합 픽셀 데이터 중 하나를 출력 픽셀 데이터로서 선택하도록 구성된 선택 회로를 포함하는 디스플레이 헤드.
- 제8항에 있어서,상기 디스플레이 헤드는, 상기 혼합 픽셀 데이터를 제수(divisor)로 제산하도록 구성된 제산 회로(division circuit)를 더 포함하는 디스플레이 헤드.
- 제8항에 있어서,상기 픽셀 데이터 결합기는, 상기 제1 픽셀 데이터 및 상기 제2 픽셀 데이터를 혼합하기 전에 상기 제1 픽셀 데이터를 제수로 제산하도록 구성된 제산 회로를 포함하는 디스플레이 헤드.
- 제8항에 있어서,상기 픽셀 데이터 결합기는, 상기 제1 픽셀 데이터 및 상기 제2 픽셀 데이터를 부가함으로써 혼합 픽셀 데이터를 생성하도록 구성되는 디스플레이 헤드.
- 제8항에 있어서,상기 제1 픽셀 데이터 및 상기 제2 픽셀 데이터는 감마-보정된(gamma-corrected) 픽셀 데이터들이며,상기 픽셀 데이터 결합기는 상기 제1 픽셀 데이터 및 상기 제2 픽셀 데이터의 감마-보정된 혼합을 계산함으로써, 혼합 픽셀 데이터를 생성하도록 구성되는 디스플레이 헤드.
- 이미지를 생성하는 방법으로서,제1 그래픽 프로세서를 이용하여 이미지에 대한 제1 군의 입력 픽셀 데이터들을 렌더링하는 단계;제2 그래픽 프로세서를 이용하여 상기 이미지에 대한 제2 군의 입력 픽셀 데이터들을 렌더링하는 단계 - 상기 제1 그래픽 프로세서 및 제2 그래픽 프로세서에 의해 수행되는 각각의 렌더링 동작은 각 픽셀에 적용되는 샘플링 패턴 및 렌더링되고 있는 이미지의 뷰포트 오프셋 중 적어도 하나의 관점에서 상이함 - ;상기 제1 군의 입력 픽셀 데이터들 및 상기 제2 군의 입력 픽셀 데이터들을 제1 디스플레이 헤드에 전달하는 단계; 및제1 디스플레이 헤드에서, 상기 제1 군의 입력 픽셀 데이터들과 상기 제2 군의 입력 픽셀 데이터들 중 대응하는 픽셀 데이터들을 혼합하여 제1 군의 출력 픽셀 데이터들을 생성하는 단계를 포함하는 이미지 생성 방법.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74715406P | 2006-05-12 | 2006-05-12 | |
US11/383,048 US8130227B2 (en) | 2006-05-12 | 2006-05-12 | Distributed antialiasing in a multiprocessor graphics system |
US60/747,154 | 2006-05-12 | ||
US11/383,048 | 2006-05-12 | ||
US11/680,554 US20090085928A1 (en) | 2006-05-12 | 2007-02-28 | Antialiasing using multiple display heads of a graphics processor |
US11/680,554 | 2007-02-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070109951A KR20070109951A (ko) | 2007-11-15 |
KR100890702B1 true KR100890702B1 (ko) | 2009-03-27 |
Family
ID=38219252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070046116A KR100890702B1 (ko) | 2006-05-12 | 2007-05-11 | 그래픽 프로세서의 다중 디스플레이 헤드를 이용한안티앨리어싱 |
Country Status (6)
Country | Link |
---|---|
JP (1) | JP4748483B2 (ko) |
KR (1) | KR100890702B1 (ko) |
CN (1) | CN101086830A (ko) |
DE (1) | DE102007021546A1 (ko) |
GB (1) | GB2438087B (ko) |
SG (1) | SG137754A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8373708B2 (en) | 2008-07-30 | 2013-02-12 | Nvidia Corporation | Video processing system, method, and computer program product for encrypting communications between a plurality of graphics processors |
US8319780B2 (en) | 2008-07-30 | 2012-11-27 | Nvidia Corporation | System, method, and computer program product for synchronizing operation of a first graphics processor and a second graphics processor in order to secure communication therebetween |
JP4703695B2 (ja) * | 2008-08-28 | 2011-06-15 | シャープ株式会社 | データ作成装置、データ作成方法、データ作成用プログラム、描画装置、描画方法、および、描画用プログラム |
US8681167B2 (en) * | 2008-09-23 | 2014-03-25 | Intel Corporation | Processing pixel planes representing visual information |
KR102443203B1 (ko) * | 2015-10-27 | 2022-09-15 | 삼성전자주식회사 | 전자 장치 운용 방법 및 이를 지원하는 전자 장치 |
US10489878B2 (en) * | 2017-05-15 | 2019-11-26 | Google Llc | Configurable and programmable image processor unit |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000099748A (ja) | 1998-09-17 | 2000-04-07 | Ricoh Co Ltd | 3次元グラフィックス処理装置及びその処理方法 |
KR20010085424A (ko) * | 1998-08-20 | 2001-09-07 | 알버트 피. 세팔로 | 지연 쉐이딩을 갖는 그래픽 프로세서 |
KR20020001518A (ko) * | 2000-06-22 | 2002-01-09 | 포만 제프리 엘 | 데이타 처리 시스템 내에서 전화면 안티알리아싱을 위한방법 및 장치 |
US20020186218A1 (en) | 2001-06-07 | 2002-12-12 | Alben Jonah Matthew | Graphics system including a plurality of heads |
KR20040011917A (ko) * | 2002-07-31 | 2004-02-11 | 학교법인연세대학교 | 안티알리아싱 장치 및 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3209632B2 (ja) * | 1993-03-16 | 2001-09-17 | 松下電器産業株式会社 | 荷重平均回路 |
US5778250A (en) * | 1994-05-23 | 1998-07-07 | Cirrus Logic, Inc. | Method and apparatus for dynamically adjusting the number of stages of a multiple stage pipeline |
JP2970440B2 (ja) * | 1994-11-29 | 1999-11-02 | 松下電器産業株式会社 | 画像合成方法と画像合成装置 |
JPH10124038A (ja) * | 1996-10-18 | 1998-05-15 | Fujitsu General Ltd | 画像合成装置 |
US6157395A (en) * | 1997-05-19 | 2000-12-05 | Hewlett-Packard Company | Synchronization of frame buffer swapping in multi-pipeline computer graphics display systems |
JP4505866B2 (ja) * | 1998-04-03 | 2010-07-21 | ソニー株式会社 | 画像処理装置および映像信号処理方法 |
US6181352B1 (en) * | 1999-03-22 | 2001-01-30 | Nvidia Corporation | Graphics pipeline selectively providing multiple pixels or multiple textures |
AUPQ593100A0 (en) * | 2000-02-29 | 2000-03-23 | Canon Kabushiki Kaisha | Alpha-channel compositing system |
US6633297B2 (en) * | 2000-08-18 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | System and method for producing an antialiased image using a merge buffer |
US6882346B1 (en) * | 2000-11-17 | 2005-04-19 | Hewlett-Packard Development Company, L.P. | System and method for efficiently rendering graphical data |
JP2004349842A (ja) * | 2003-05-20 | 2004-12-09 | Fuji Photo Film Co Ltd | 合成画像の補正方法及びプログラム |
US7477256B1 (en) * | 2004-11-17 | 2009-01-13 | Nvidia Corporation | Connecting graphics adapters for scalable performance |
US8212838B2 (en) * | 2005-05-27 | 2012-07-03 | Ati Technologies, Inc. | Antialiasing system and method |
-
2007
- 2007-05-07 SG SG200703269-1A patent/SG137754A1/en unknown
- 2007-05-08 DE DE102007021546A patent/DE102007021546A1/de not_active Ceased
- 2007-05-11 CN CNA2007100973472A patent/CN101086830A/zh active Pending
- 2007-05-11 KR KR1020070046116A patent/KR100890702B1/ko active IP Right Grant
- 2007-05-11 GB GB0709101A patent/GB2438087B/en active Active
- 2007-05-14 JP JP2007128378A patent/JP4748483B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010085424A (ko) * | 1998-08-20 | 2001-09-07 | 알버트 피. 세팔로 | 지연 쉐이딩을 갖는 그래픽 프로세서 |
JP2000099748A (ja) | 1998-09-17 | 2000-04-07 | Ricoh Co Ltd | 3次元グラフィックス処理装置及びその処理方法 |
KR20020001518A (ko) * | 2000-06-22 | 2002-01-09 | 포만 제프리 엘 | 데이타 처리 시스템 내에서 전화면 안티알리아싱을 위한방법 및 장치 |
US20020186218A1 (en) | 2001-06-07 | 2002-12-12 | Alben Jonah Matthew | Graphics system including a plurality of heads |
KR20040011917A (ko) * | 2002-07-31 | 2004-02-11 | 학교법인연세대학교 | 안티알리아싱 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
SG137754A1 (en) | 2007-12-28 |
CN101086830A (zh) | 2007-12-12 |
GB2438087B (en) | 2011-05-18 |
KR20070109951A (ko) | 2007-11-15 |
GB2438087A8 (en) | 2008-04-29 |
GB0709101D0 (en) | 2007-06-20 |
DE102007021546A1 (de) | 2007-12-06 |
GB2438087A (en) | 2007-11-14 |
JP4748483B2 (ja) | 2011-08-17 |
JP2007310883A (ja) | 2007-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8130227B2 (en) | Distributed antialiasing in a multiprocessor graphics system | |
US20090085928A1 (en) | Antialiasing using multiple display heads of a graphics processor | |
US8212838B2 (en) | Antialiasing system and method | |
KR100890702B1 (ko) | 그래픽 프로세서의 다중 디스플레이 헤드를 이용한안티앨리어싱 | |
US7616207B1 (en) | Graphics processing system including at least three bus devices | |
US5799204A (en) | System utilizing BIOS-compatible high performance video controller being default controller at boot-up and capable of switching to another graphics controller after boot-up | |
EP1899913B1 (en) | Dynamic load balancing in multiple video processing unit (vpu) systems | |
US20110090232A1 (en) | Graphics processing systems with multiple processors connected in a ring topology | |
JP5116125B2 (ja) | グラフィックスプロセッサの複数のディスプレイヘッドを用いたアンチエイリアシング | |
CN111292236B (zh) | 一种减少中央凹注视渲染中的混叠伪像的方法和计算系统 | |
US8384722B1 (en) | Apparatus, system and method for processing image data using look up tables | |
US8217950B2 (en) | Video processing across multiple graphics processing units | |
WO2012142309A2 (en) | Method and apparatus for fast data delivery on a digital pixel cable | |
CN105516633B (zh) | 一种图像处理系统 | |
US20120194530A1 (en) | Multiple simultaneous unique outputs from a single display pipeline | |
GB2479067A (en) | Antialiasing Using Multiple Display HeadsOf A Graphics Processor | |
JP2009109708A (ja) | プロジェクションシステム、情報処理装置及びプロジェクタ | |
US20030164842A1 (en) | Slice blend extension for accumulation buffering | |
JP2001228818A (ja) | 表示装置 | |
CN214504949U (zh) | 兼容eDP和LVDS标准的通用显示接口、数字信号处理电路 | |
KR20110013258A (ko) | 디지털 영상 처리를 위한 서브픽셀 값 및 광원 조정 값의 생성 방법 및 이를 수행하기 위한 영상 처리회로 | |
CN117198232B (zh) | 彩色墨水屏驱动方法、装置及存储介质 | |
Friston et al. | Ultra low latency dataflow renderer | |
JP2006171736A (ja) | 画像表示装置及びその方法 | |
JP2003225415A (ja) | パチンコ機の画像表示装置とその画像表示方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
J201 | Request for trial against refusal decision | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130221 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20140221 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20150226 Year of fee payment: 7 |