KR20100004890A - Hybrid multisample/supersample antialiasing - Google Patents
Hybrid multisample/supersample antialiasing Download PDFInfo
- Publication number
- KR20100004890A KR20100004890A KR1020090060607A KR20090060607A KR20100004890A KR 20100004890 A KR20100004890 A KR 20100004890A KR 1020090060607 A KR1020090060607 A KR 1020090060607A KR 20090060607 A KR20090060607 A KR 20090060607A KR 20100004890 A KR20100004890 A KR 20100004890A
- Authority
- KR
- South Korea
- Prior art keywords
- supersample
- pixel
- hybrid
- cluster
- graphics
- Prior art date
Links
- 239000012634 fragment Substances 0.000 claims abstract description 62
- 238000000034 method Methods 0.000 claims description 32
- 238000012360 testing method Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 13
- 238000009877 rendering Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 abstract description 116
- 230000015654 memory Effects 0.000 description 91
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 8
- 238000005070 sampling Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012884 algebraic function Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000005293 physical law Methods 0.000 description 1
- 231100000614 poison Toxicity 0.000 description 1
- 230000007096 poisonous effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
Description
전반적으로, 본 발명의 실시예들은 그래픽 프로세싱을 위한 안티에일리어싱 기술들에 관한 것으로서, 특히, 픽셀 프래그먼트마다 셰이딩되는 샘플들의 수를 동적으로 조절하는 것에 관한 것이다.Overall, embodiments of the present invention relate to antialiasing techniques for graphics processing, and in particular, to dynamically adjusting the number of samples shaded per pixel fragment.
통상적으로, 그래픽 프로세서들은 멀티샘플링 또는 수퍼샘플링에 의해 안티에일리어싱을 수행하도록 구성된다. 멀티샘플링에서, 각각의 픽셀 프래그먼트는 1회 셰이딩되며, 결과적인 컬러 값이 모든 커버된 서브픽셀 샘플들을 위해 복제된다. 수퍼샘플링에서, 각각의 픽셀 프래그먼트는 N회 셰이딩되며, 각각의 커버된 서브픽셀 샘플에 대해 1회이다.Typically, graphics processors are configured to perform antialiasing by multisampling or supersampling. In multisampling, each pixel fragment is shaded once, and the resulting color value is duplicated for all covered subpixel samples. In supersampling, each pixel fragment is shaded N times, once for each covered subpixel sample.
멀티샘플링은 안티에일리어싱 프리미티브 에지들에 적합하며, 그 이유는, 여기서 중요한 것이 어느 샘플들이 인입 프리미티브에 의해 커버되는지 이기 때문이다. 전형적으로, 텍스처들은 셰이딩된 컬러 값들이, 픽셀당 1회의 셰이딩이면 적당한 충분히 낮은 공간 주파수를 갖도록 프리필터링된다. 그러나, 텍스처된 알파 투명성 및 고주파수 스페큘러 하이라이트와 같은 몇몇 효과들이, 앨리어싱 아티팩 트를 피하기 위해 픽셀 주파수보다 높은 주파수를 가질 수 있으며, 셰이딩이 픽셀 주파수보다 높은 주파수에서 행해지도록 요구할 수 있다. 전형적으로, 수퍼샘플링은 이들 유형의 앨리어싱을 피하기 위해 요구된다. 그러나, 픽셀에서의 모든 샘플에서의 셰이딩은 지나치게 높은 비용을 초래하는데, 그 이유는, 셰이딩이 전형적으로 렌더링에서의 가장 비싼 동작이기 때문이다. 또한, 일부 수퍼샘플링 구현들은 입력 프리미티브가 다수회 처리될 것을 요구하는데, 각각의 서브픽셀 샘플에 대해 1회이며, 그것은 추가적인 비효율성을 초래한다. 픽셀 당 하나보다는 많지만 모든 샘플보다는 적은 셰이딩 레이트는 상기 에일리어싱의 원인들을 완화시키에 충분할 수 있다. Multisampling is suitable for anti-aliasing primitive edges because it is important here which samples are covered by the incoming primitive. Typically, the textures are prefiltered such that the shaded color values have a sufficiently low spatial frequency that is adequate once shading per pixel. However, some effects, such as textured alpha transparency and high frequency specular highlights, may have a frequency higher than the pixel frequency to avoid aliasing artifacts, and may require shading to be done at frequencies higher than the pixel frequency. Typically, supersampling is required to avoid these types of aliasing. However, shading at every sample in a pixel results in an excessively high cost, since shading is typically the most expensive operation in rendering. In addition, some supersampling implementations require the input primitive to be processed multiple times, once for each subpixel sample, which results in additional inefficiency. A shading rate of more than one per pixel but less than all samples may be sufficient to mitigate the causes of the aliasing.
따라서, 본 기술 분야에서는 렌더링되는 현재의 지오메트리(geometry)에 대해 적합한 픽셀 셰이딩 레이트를 이용하기 위한 시스템 및 방법이 필요하다. 셰이딩 레이트는 화질을 향상시키도록 감소되거나, 또는 셰이딩 성능을 향상시키도록 감소될 수 있다.Accordingly, there is a need in the art for a system and method for utilizing pixel shading rates suitable for the current geometry being rendered. The shading rate can be reduced to improve image quality or can be reduced to improve shading performance.
프리미티브 셰이딩 동안 픽셀 샘플링 레이트를 동적으로 조절하기 위한 시스템 및 방법은 화질을 향상시키거나 또는 셰이딩 성능을 증가시킨다. 셰이딩 레이트는 픽셀당 1회(멀티샘플링)로부터 샘플당 1회(수퍼샘플링)으로 어디에서든 변할 수 있고, 또는 화질을 향상시키거나 또는 셰이딩 성능을 증가시키기 위해 그 사이 에서 어디에서든 변할 수 있다. 렌더 타겟(이미지 버퍼)에 대해 픽셀당 지정된 샘플 수가 주어지는 경우, 셰이더 패스들의 수가 동적으로 선택된다. 수퍼샘플 및 멀티샘플 안티에일리어싱의 결합이 이용되며, 서브픽셀 샘플들(멀티샘플들)의 클러스터가 프래그먼트 셰이더의 각각의 패스에 대해 프로세싱된다. 수퍼샘플 클러스터는 각각의 픽셀에 대해 결합되어 안티에일리어싱된 픽셀을 생성한다.Systems and methods for dynamically adjusting pixel sampling rates during primitive shading improve image quality or increase shading performance. The shading rate can vary anywhere from once per pixel (multisampling) to once per sample (supersampling), or anywhere in between to improve image quality or increase shading performance. Given a specified number of samples per pixel for the render target (image buffer), the number of shader passes is dynamically selected. A combination of supersample and multisample antialiasing is used, and a cluster of subpixel samples (multisamples) is processed for each pass of the fragment shader. Supersample clusters are combined for each pixel to produce anti-aliased pixels.
픽셀당 다수의 샘플을 생성하도록 구성되는 컴퓨팅 디바이스에서 하이브리드 안티에일리어싱을 이용한 셰이딩 프리미티브를 위한 본 발명의 방법의 다양한 실시예들은 그래픽 프리미티브를 수신하고, 그래픽 프리미티브를 가로지르는 각 픽셀을 안티에일리어싱하는데 이용되는 수퍼샘플 클러스터의 수를 결정하는 것을 포함한다. 그래픽 프리미티브는 컴퓨팅 디바이스 내의 프래그먼트 세이딩 유닛을 통한 다수의 패스들을 이용하여 셰이딩되며, 그래픽 프리미티브를 가로지르는 각각의 하이브리드 안티에일리어싱된 픽셀을 생성하는데 이용된 다수의 패스의 수는 수퍼샘플 클러스터의 수 이하이다.Various embodiments of the method of the present invention for shading primitives using hybrid antialiasing in a computing device configured to generate multiple samples per pixel are used to receive graphics primitives and antialias each pixel across the graphics primitives. Determining the number of supersample clusters. The graphics primitives are shaded using multiple passes through the fragment shading unit in the computing device, and the number of multiple passes used to generate each hybrid antialiased pixel across the graphics primitives is equal to or less than the number of supersample clusters. to be.
본 발명의 다양한 실시예들은 하이브리드 안티에일리어싱을 이용하여 그래픽 프리미트브를 셰이딩하도록 구성된 컴퓨팅 디바이스를 포함한다. 컴퓨팅 디바이스는 프래그먼트 셰이딩 유닛에 연결되는 래스터라이저를 포함한다. 래스터라이저는 그래픽 프리미티브를 수신하고, 그래픽 프리미티브를 가로지르는 각 필셀을 안티에일리어싱하는데 이용되는 수퍼샘플 클러스터의 수를 결정하도록 구성되는 하이브리드 안티에일리어스 제어 유닛을 포함한다. 프래그먼트 셰이딩 유닛은 다수의 패스를 이용하여 그래픽 프리미티브를 셰이딩하도록 구성되며, 그래픽 프리미티브를 가 로지르는 각각의 하이브리드 안티에일리어싱된 픽셀을 생성하는데 이용된 다수의 패스의 수는 수퍼샘플 클러스터의 수 이하이다.Various embodiments of the present invention include a computing device configured to shade graphics primitives using hybrid antialiasing. The computing device includes a rasterizer coupled to the fragment shading unit. The rasterizer includes a hybrid antialiasing control unit configured to receive the graphics primitives and to determine the number of supersample clusters used to antialias each pillar across the graphics primitives. The fragment shading unit is configured to shade the graphics primitives using multiple passes, wherein the number of multiple passes used to generate each hybrid antialiased pixel across the graphics primitives is less than or equal to the number of supersample clusters.
위에서 인용된 본 발명의 특징들이 상세히 이해될 수 있는 방법으로, 위에서 간단히 요약된 본 발명의 보다 특정한 설명은 실시예들을 참조할 수 있으며, 그 중 일부 실시예가 첨부 도면에 도시된다. 그러나, 첨부된 도면은 본 발명의 전형적인 실시예들만을 도시하는 것이며, 따라서, 본 발명이 다른 동일하게 유효한 실시예들을 허용할 수 있기 때문에, 본 발명의 영역을 제한하는 것으로 여겨지지 않는다. In a manner in which the features of the invention cited above may be understood in detail, a more specific description of the invention briefly summarized above may refer to embodiments, some of which are illustrated in the accompanying drawings. However, the accompanying drawings show only typical embodiments of the invention, and therefore, are not to be considered as limiting the scope of the invention, as the invention may permit other equally effective embodiments.
이하의 설명에서, 본 발명에 대한 보다 완전한 이해를 제공하기 위해, 다양한 특정 세부 사항들이 개시된다. 그러나, 당업자라면, 본 발명은 하나 이상의 이들 특정 세부 사항없이도 실시될 수 있음을 명백히 알 것이다. 다른 경우, 본 발명을 불명료하게 하지 않도록, 잘 알려진 특징들은 기술되지 않았다.In the following description, numerous specific details are set forth in order to provide a more complete understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without one or more of these specific details. In other instances, well known features have not been described in order not to obscure the present invention.
시스템 개요System overview
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성된 컴퓨터 시스템(100)을 도시하는 블록도이다. 컴퓨터 시스템(100)은 메모리 브리지(105)를 포함하는 버스 경로를 통해 통신하는 CPU(central processing unit)(102) 및 시스템 메모리(104)를 포함한다. 예를 들면, 노스브리지 칩(Northbridge chip)일 수 있는 메모리 브리지(105)는 버스 또는 다른 통신 경로(106)(예를 들면, HyperTransport 링크)를 통해 I/O(입/출력) 브리지(107)에 접속된다. 예를 들면, 사우스브리지 칩일 수 있는 I/O 브리지(107)는 하나 이상의 사용자 입력 디바이스들(108)(예를 들 면, 키보드, 마우스)로부터 사용자 입력을 수신하고, 그 입력을 경로(106) 및 메모리 브리지(105)를 통해 CPU(102)에 전달한다. 병렬 프로세싱 서브시스템(112)은 버스 또는 다른 통신 경로(113)(예를 들면, PCI Express, 가속 그래픽 포트, 또는 HyperTransport 링크)를 통해 메모리 브리지(105)에 연결되며, 일 실시예에서, 병렬 프로세싱 서브시스템(112)은 픽셀들을 디스플레이 디바이스(110)(예를 들면, 종래의 CRT 또는 LCD 기반 모니터)에 전달하는 그래픽 서브시스템이다. 시스템 메모리(104)에 저장되는 디바이스 드라이버(103)는, 어플리케이션 프로그램들과 같은, CPU(102)에 의해 실행되는 프로세스들과, 병렬 프로세싱 서브시스템(112)에 의한 실행을 위해 필요에 따라 프로그램 명령어들을 트랜스레이팅하는 병렬 프로세싱 서브시스템(112) 사이에서 인터페이스한다.1 is a block diagram illustrating a
시스템 디스크(114)가 또한 I/O 브리지(107)에 접속된다. 스위치(116)는 I/O 브리지(107)와, 네트워크 어댑터(118) 및 다양한 애드인 카드(120, 121)와 같은 다른 컴포넌트들 사이에 접속들을 제공한다. USB 또는 다른 포트 접속들, CD 드라이브, DVD 드라이브, 필름 기록 디바이스들 등을 포함하는 다른 컴포넌트들(명시적으로 도시되지 않음)이 I/O 브리지(107)에 접속될 수도 있다. 도 1에서의 다양한 컴포넌트들을 상호접속하는 통신 경로들은, PCI(Peripheral Component Interconnect), PCI Express(PCI-E), AGP(Accelerated Graphics Port), HyperTransport, 또는 임의의 다른 버스 또는 점대점 통신 프로토콜(들)과 같은 임의의 적절한 프로토콜들을 이용하여 구현될 수 있으며, 상이한 디바이스들 사이의 접속들은 본 기술 분야에 알려진 다른 프로토콜들을 이용할 수 있다.
도 2에는, 병렬 프로세싱 서브시스템(112)의 실시예가 도시된다. 병렬 프로세싱 서브시스템(112)은 하나 이상의 병렬 프로세싱 유닛(PPU)들(202)을 포함하며, 이들 유닛들 각각은 로컬 병렬 프로세싱(PP) 메모리(204)에 연결된다. 일반적으로, 병렬 프로세싱 서브시스템은 U개의 PPU를 포함한다(여기서, U ≥ 1). (본 명세서에서, 필요한 경우에는, 많은 경우의 유사한 대상이, 그러한 대상을 식별하는 참조 번호 및 그러한 경우를 식별하는 괄호식 번호로 표기된다.) PPU(202) 및 PP 메모리(204)는, 예를 들면, 프로그램가능 프로세서들, ASIC(application specific integrated circuit)들 및 메모리 디바이스들과 같은 하나 이상의 집적 회로 디바이스를 이용하여 구현될 수 있다. 2, an embodiment of a
PPU(202(0))에 대해 상세히 도시된 바와 같이, 각각의 PPU(202)는 메모리 브리지(105)에(또는, 대안적인 일 실시예에서는, CPU(102)에 직접) 접속하는 통신 경로(113)를 통해 시스템(100)의 나머지와 통신하는 호스트 인터페이스(206)를 포함한다. 일 실시예에서, 통신 경로(113)는 본 기술 분야에 알려진 바와 같이 전용의 레인들이 각각의 PPU(202)에 할당되는 PCI-E 링크이다. 다른 통신 경로들이 또한 이용될 수 있다. 호스트 인터페이스(206)는 통신 경로(113) 상에서의 송신을 위한 패킷들(또는 다른 신호들)을 생성하고, 또한 통신 경로(113)로부터 인입하는 모든 패킷들(또는 다른 신호들)을 수신하며, 그들을 PPU(202)의 적절한 컴포넌트들로 보낸다. 예를 들어, 프로세싱 태스크와 관련된 커맨드들은 프론트 엔드 유닛(212)으로 보내질 수 있고, 메모리 동작들(예를 들면, PP 메모리(204)로/로부터의 기입 및 판독)과 관련된 커맨드들은 메모리 인터페이스(214)로 보내질 수 있다. 호스트 인 터페이스(206), 프론트 엔드 유닛(212) 및 메모리 인터페이스(214)은 일반적으로 종래의 설계일 수 있으며, 본 발명에 중요하지 않은 것이므로, 상세 설명은 생략한다.As shown in detail with respect to PPU 202 (0), each
각각의 PPU(202)는 고도의 병렬 프로세서를 바람직하게 구현한다. PPU(202(0))에 대해 상세히 도시된 바와 같이, PPU(202)는 C개의 코어들(208)(여기서, C ≥ 1)을 포함한다. 각각의 프로세싱 코어(208)는 다수의(예를 들면, 수십 개 또는 수백 개의) 스레드(thread)들을 동시에 실행할 수 있고, 각각의 스레드는 프로그램의 예이며, 멀티스레드 프로세싱 코어(208)의 일 실시예가 이하에 기술된다. 코어들(208)은 작업 분배 유닛(210)을 통해 실행될 프로세싱 태스크들을 수신하며, 작업 분배 유닛(210)은 프론트 엔드 유닛(212)으로부터 프로세싱 태스크들을 정의하는 커맨드들을 수신한다. 작업 분배 유닛(210)은 작업을 분배하기 위한 다양한 알고리즘을 구현할 수 있다. 예컨대, 일 실시예에서, 작업 분배 유닛(210)은, 코어가 새로운 프로세싱 태스크를 수용하기에 충분한 자원들을 갖는지 여부를 나타내는 "준비(ready)" 신호를 각각의 코어(208)로부터 수신한다. 새로운 프로세싱 태스크가 도달한 경우, 작업 분배 유닛(210)은 준비 신호를 어서팅하는 코어(208)에게 태스크를 할당하고, 만약, 준비 신호를 어서팅하는 코어(208)가 존재하지 않는다면, 작업 분배 유닛(210)은 준비 신호가 코어(208)에 의해 어서팅될 때까지 새로운 프로세싱 태스크를 유지한다. 당업자라면, 다른 알고리즘들이 이용될 수도 있으며, 작업 분배 유닛(210)이 인입하는 프로세싱 태스크들을 분배하는 특정한 방법이 본 발명에 중요한 것은 아님을 인식할 것이다.Each
코어(208)는 메모리 인터페이스(214)와 통신하여 다양한 외부 메모리 디바이스들로부터 판독하거나, 또는 디바이스들로 기입한다. 일 실시예에서, 메모리 인터페이스(214)는 호스트 인터페이스(206)에 대한 접속 뿐만 아니라, 로컬 PP 메모리(204)와 통신하도록 적응된 인터페이스를 포함하여, 코어(208)가 시스템 메모리(104) 또는 PPU(202)에 대해 로컬이 아닌 다른 메모리와 통신할 수 있도록 한다. 메모리 인터페이스(214)는 일반적으로 종래의 설계일 수 있으며, 상세한 설명은 생략된다.
코어(208)는, 제한적인 것은 아니지만, 선형 및 비선형 데이터 변환, 비디오 및/또는 오디오 데이터의 필터링, 모델링 동작(예를 들면, 대상의 위치, 속도 및 다른 속성을 결정하기 위해 물리적 법칙들을 적용), 이미지 렌더링 동작(예를 들면, 버텍스 셰이더, 지오메트리 셰이더, 및/또는 픽셀 셰이더 프로그램들) 등을 포함하는 매우 다양한 어플리케이션들에 관련된 프로세싱 태스크들을 실행하도록 프로그램될 수 있다. PPU(202)는 시스템 메모리(104) 및/또는 로컬 PP 메모리(204)로부터의 데이터를 내부(온-칩) 메모리로 전송하여, 데이터를 프로세싱하고, 결과 데이터를 시스템 메모리(104) 및/또는 로컬 PP 메모리(204)로 다시 기입할 수 있으며, 여기서 그러한 데이터는 예를 들면, CPU(102) 또는 다른 병렬 프로세싱 서브시스템(112)을 포함하는 다른 시스템 컴포넌트들에 의해 액세스될 수 있다.
도 1을 다시 참조하면, 일부 실시예들에서, 병렬 프로세싱 서브시스템(112)에서의 PPU(202)들 중 일부 또는 전부는 그래픽 프로세서들이며, 그러한 그래픽 프로세서들은, 픽셀 데이터를 저장 및 갱신하기 위해 (예를 들면, 종래의 프레임 버 퍼를 포함하는 그래픽 메모리로서 이용될 수 있는) 로컬 PP 메모리(204)와 상호작용하고, 픽셀 데이터를 디스플레이 디바이스(110)에 전달하는 등의 동작을 행하는 메모리 브리지(105) 및 버스(113)를 통해 CPU(102) 및/또는 시스템 메모리(104)에 의해 공급된 그래픽 데이터로부터 픽셀 데이터를 생성하는 것과 관련된 다양한 태스크들을 수행하도록 구성될 수 있는 렌더링 파이프라인을 갖는다. 일부 실시예들에서, 병렬 프로세싱 서브시스템(112)은 그래픽 프로세서로서 동작하는 하나 이상의 PPU(202) 및 범용 계산을 위해 이용되는 하나 이상의 다른 PPU(202)를 포함할 수 있다. PPU(202)들은 동일하거나 또는 상이할 수 있으며, 각각의 PPU(202)는 그 자신의 전용 PP 메모리 디바이스(들)(204)을 갖거나, 또는 어떠한 전용 PP 메모리 디바이스(들)도 갖지 않을 수 있다.Referring again to FIG. 1, in some embodiments, some or all of the
동작시에, CPU(102)는 시스템(100)의 마스터 프로세서이며, 다른 시스템 컴포넌트들의 동작들을 제어 및 조정한다. 특히, CPU(102)는 PPU(202)의 동작을 제어하는 커맨드들을 발행한다. 일부 실시예들에서, CPU(102)는 각각의 PPU(202)에 대한 커맨드들의 스트림을, 시스템 메모리(104), PP 메모리(204), 또는 CPU(102) 및 PPU(202) 둘다에 액세스가능한 다른 저장 위치에 위치될 수 있는 푸시버퍼(도 1에 명시적으로 도시되지 않음)에 기입한다. PPU(202)는 푸시버퍼로부터 커맨드 스트림을 판독하여, 커맨드들을 CPU(102)의 동작과 비동기적으로 실행한다. 따라서, PPU(202)는 시스템(100)의 프로세싱 처리량 및/또는 성능을 증가시키기 위해, CPU(102)로부터의 프로세싱을 오프로드하도록 구성될 수 있다.In operation, the
본 명세서에 도시된 시스템은 예시적인 것이며, 수정 및 변형이 가능함을 이 해할 것이다. 브리지들의 수 및 배열을 포함하는 접속 토폴로지는 원하는 대로 변형될 수 있다. 예컨대, 일부 실시예들에서, 시스템 메모리(104)는 브리지를 통하지 않고 직접적으로 CPU(102)와 접속되며, 다른 디바이스들은 메모리 브리지(105) 및 CPU(102)를 통해 시스템 메모리(104)와 통신한다. 대안적인 다른 토폴로지에서, 병렬 프로세싱 서브시스템(112)은 메모리 브리지(105)에 접속되지 않고, I/O 브리지(107)에 접속되거나, 또는 CPU(102)에 직접 접속된다. 다른 실시예들에서, I/O 브리지(107) 및 메모리 브리지(105)는 단일 칩내에 통합될 수 있다. 본 명세서에서 도시된 특정 컴포넌트들은 선택적인 것이며, 예컨대, 임의의 수의 애드인 카드 또는 주변 디바이스가 지원될 수 있다. 일부 실시예들에서, 스위치(116)는 제거되며, 네트워크 어댑터(118) 및 애드인 카드(120, 121)는 I/O 브리지(107)에 직접 접속된다.It will be appreciated that the system shown herein is exemplary and that modifications and variations are possible. The connection topology, including the number and arrangement of bridges, can be modified as desired. For example, in some embodiments,
시스템(100)의 나머지에 대한 PPU(202)의 접속은 또한 변할 수 있다. 일부 실시예들에서, PP 시스템(112)은 시스템(100)의 확장 슬롯 내에 삽입될 수 있는 애드인 카드로서 구현된다. 다른 실시예들에서, PPU(202)는 메모리 브리지(105) 또는 I/O 브리지(107)와 같은 버스 브리지와 함께, 단일 칩 상에 통합될 수 있다. 또다른 실시예들에서, PPU(202)의 일부 또는 모든 요소들은 CPU(102)와 함께 단일 칩 상에 통합될 수 있다.The connection of the
PPU는 로컬 메모리를 포함하지 않고, 임의의 양의 로컬 PP 메모리를 구비할 수 있으며, 로컬 메모리 및 시스템 메모리를 임의의 조합으로 이용할 수 있다. 예컨대, PPU(202)는 UMA(unified memory architecture) 실시예에서의 그래픽 프로세 서일 수 있으며, 그러한 실시예에서는, 전용의 그래픽 (PP) 메모리가 거의 또는 전혀 제공되지 않으며, PPU(202)는 시스템 메모리를 독점적으로 또는 거의 독점적으로 이용할 것이다. UMA 실시예에서, PPU(202)는 브리지 칩 또는 프로세서 칩 내로 통합되거나, 또는 PPU를, 예를 들면, 브리지 칩을 통해 시스템 메모리에 접속하는 고속 링크(예를 들면, PCI-E)를 갖는 이산 칩으로서 제공될 수 있다.The PPU does not include local memory, and may have any amount of local PP memory, and local memory and system memory may be used in any combination. For example,
전술한 바와 같이, 임의의 수의 PPU(202)가 병렬 프로세싱 서브시스템에 포함될 수 있다. 예컨대, 다수의 PPU(202)가 단일 애드인 카드 상에 제공되거나, 또는 다수의 애드인 카드가 통신 경로(113)에 접속되거나, 또는 하나 이상의 PPU(202)가 브리지 칩 내에 통합될 수 있다. 다수 PPU 시스템에서의 PPU들은 서로 동일하거나 또는 상이할 수 있으며, 예컨대, 상이한 PPU들은 상이한 수의 코어, 상이한 양의 로컬 PP 메모리 등을 가질 수 있다. 다수의 PPU(202)가 존재하는 경우, 그들은 단일 PPU(202)로 가능한 것보다 높은 처리량으로 데이터를 프로세싱하도록 병렬로 동작될 수 있다. 하나 이상의 PPU(202)를 포함하는 시스템들이, 데스크탑, 랩탑, 또는 핸드헬드 개인용 컴퓨터, 서버, 워크스테이션, 게인 콘솔, 내장형 시스템 등을 포함하는 다양한 구성 및 형태 요소들로 구현될 수 있다.As mentioned above, any number of
코어 개요Core overview
도 3은 본 발명의 하나 이상의 양태에 따른, 도 2의 병렬 프로세싱 서브시스템(112)에 대한 코어(208)의 블록도이다. PPU(202)는 다수의 스레드를 병렬 실행하도록 구성된 코어(208)(또는 다수의 코어(208))를 포함하며, 여기서, "스레드" 라는 용어는 문맥의 예, 즉, 특정 입력 데이터 세트 상에서 실행되는 특정 프로그 램을 지칭한다. 일부 실시예들에서, SIMD(single-instruction, multiple-data) 명령어 발행 기술들을 이용하여, 다수의 독립적인 명령어 유닛들을 제공하지 않으면서, 다수의 스레드들의 병렬 실행을 지원한다. 3 is a block diagram of a
일 실시예에서, 각각의 코어(208)는 단일 명령어 유닛(312)으로부터 SIMD 명령어들을 수신하도록 구성된 P개(예를 들면, 8개, 16개 등)의 병렬 프로세싱 엔진들(302)의 어레이를 포함한다. 각각의 프로세싱 엔진(302)은 바람직하게 기능 유닛들(예를 들면, 산술 로직 유닛 등)의 동일한 세트를 포함한다. 기능 유닛들은 파이프라이닝되어, 본 기술 분야에 알려진 바와 같이, 이전의 명령어가 종료되기 전에 새로운 명령어가 발행되도록 할 수 있다. 기능 유닛들의 임의의 조합이 제공될 수 있다. 일 실시예에서, 기능 유닛들은 정수 및 부동 소수점 산술(예를 들어, 덧셈 및 곱셈), 비교 연산, 불(Boolean) 연산(AND, OR, XOR), 비트 시프팅(bit-shifting), 및 다양한 대수 함수(예를 들어, 평면 보간법(planar interpolation), 삼각법(trigonometric), 지수, 및 로그 함수 등)의 계산을 포함하는 다양한 연산을 지원하며, 상이한 연산들을 수행하기 위해 동일한 기능 유닛 하드웨어가 이용될 수 있다.In one embodiment, each core 208 comprises an array of P (eg, eight, sixteen, etc.)
각각의 프로세싱 엔진(302)은 그의 로컬 입력 데이터, 중간 결과들 등을 저장하기 위해 로컬 레지스터 파일(local register file; LRF)(304) 내 공간을 이용한다. 일 실시예에서, 로컬 레지스터 파일(304)은 물리적으로 또는 논리적으로 P 레인들로 분할되며, 각각의 레인은 몇 개의 엔트리를 가진다(여기서, 각각의 엔트리는 예를 들어 32 비트 워드를 저장할 수 있다). 하나의 레인이 각각의 프로세싱 엔진(302)에 할당되고, 상이한 레인들의 대응하는 엔트리들은 동일한 프로그램을 실행하는 상이한 스레드들을 위한 데이터로 채워져서 SIMD 실행을 용이하게 할 수 있다. 일부 실시예들에서, 각각의 프로세싱 엔진(302)은 그에 할당된 레인의 LRF 엔트리들에만 액세스할 수 있다. 유익하게는, 로컬 레지스터 파일(304)의 총 엔트리 수는 프로세싱 엔진(302)당 다수의 동시 스레드들을 지원할 만큼 충분히 크다.Each
각각의 프로세싱 엔진(302)은 또한 코어(208) 내의 모든 프로세싱 엔진(302) 간에 공유되는 온-칩 공유 메모리(306)에 액세스한다. 공유 메모리(306)는 원하는 만큼 클 수 있으며, 일부 실시예들에서, 임의의 프로세싱 엔진(302)은 (예를 들어, 로컬 레지스터 파일(304)에 액세스하는 것과 비교되는) 동일하게 낮은 래이턴시를 갖고 공유 메모리(306) 내 임의의 위치로부터 판독하거나 거기에 기입할 수 있다. 일부 실시예들에서, 공유 메모리(306)는 공유 레지스터 파일로서 구현되며, 다른 실시예들에서, 공유 메모리(306)는 공유 캐시 메모리를 이용하여 구현될 수 있다.Each
공유 메모리(306) 이외에, 일부 실시예들은 또한 부가의 온-칩 파라미터 메모리 및/또는 캐시(들)(308)를 제공하며, 이것은 예를 들어, 종래의 RAM 또는 캐시로서 구현될 수 있다. 파라미터 메모리/캐시(308)는 예를 들어, 다수의 스레드에 의해 필요로 될 수 있는 상태 파라미터들 및/또는 다른 데이터(예를 들어, 다양한 상수들)를 유지하는 데 이용될 수 있다. 프로세싱 엔진(302)은 또한 메모리 인터페이스(214)를 통해 오프-칩 "글로벌" 메모리에 액세스하며, 오프-칩 "글로벌" 메모리는 예를 들어, PP 메모리(204) 및/또는 시스템 메모리(104)를 포함할 수 있고, 시스템 메모리(104)는 호스트 인터페이스(206)를 통해 액세스 가능하다. PPU(202) 의 외부의 임의 메모리가 글로벌 메모리로서 이용될 수 있다는 것을 이해해야 한다.In addition to the shared
일 실시예에서, 각각의 프로세싱 엔진(302)은 멀티스레딩되고(multithreaded), 예를 들어, 로컬 레지스터 파일(304)에서 그의 할당된 레인의 상이한 부분에 각각의 스레드와 연관된 현재 상태 정보를 유지함으로써, 어떤 수 G개(예를 들어, 24개)의 스레드까지를 동시에 실행할 수 있다. 유익하게는, 프로세싱 엔진들(302)은 상이한 스레드들로부터의 명령어들이 효율성을 손실하지 않고 임의의 시퀀스로 발행될 수 있도록 한 스레드로부터 다른 스레드로 신속하게 전환되도록 설계된다. 각각의 스레드는 상이한 콘텍스트에 대응할 수 있기 때문에, 상이한 스레드들이 각각의 사이클 동안 발행됨에 따라 다수의 콘텍스트는 다수의 사이클에 걸쳐 프로세싱될 수 있다.In one embodiment, each
명령어 유닛(312)은, 임의의 주어진 프로세싱 사이클 동안, 명령어(INSTR)가 P개의 프로세싱 엔진들(302) 각각에 발행되도록 구성된다. 각각의 프로세싱 엔진(302)은 다수의 콘텍스트가 동시에 처리되고 있을 때 임의의 주어진 프로세싱 사이클 동안 상이한 명령어를 수신할 수 있다. 모든 P개의 프로세싱 엔진(302)이 단일 콘텍스트를 처리할 때, 코어(208)는 P-웨이 SIMD 마이크로 아키텍처를 구현한다. 각각의 프로세싱 엔진(302)이 또한 멀티스레딩되어 G개의 스레드까지 동시에 지원하기 때문에, 본 실시예에서 코어(208)는 동시에 실행하는 P*G개의 스레드까지 가질 수 있다. 예를 들어, P=16이고 G=24이면, 코어(208)는 단일 콘텍스트 동안 384개의 동시 스레드까지 또는 각각의 콘텍스트에 대해 N*24개의 동시 스레드까지 지원하고, 여기서 N은 콘텍스트에 할당된 프로세싱 엔진들(302)의 수이다.The
유익하게는, 코어(208)의 동작은 작업 분배 유닛(200)을 통해 제어된다. 일부 실시예들에서, 작업 분배 유닛(200)은 처리될 데이터(예를 들어, 프리미티브 데이터, 버텍스 데이터 및/또는 픽셀 데이터)에 대한 포인터들뿐 아니라, 데이터가 어떻게 처리될 것인지(예를 들어, 어떤 프로그램이 실행될 것인지)를 정의하는 데이터 또는 명령어들을 포함하는 푸시버퍼들의 위치들도 수신한다. 작업 분배 유닛(210)은 공유 메모리(306)내로 처리될 데이터를 로딩하고 파라미터 메모리(308) 내로 파라미터들을 로딩할 수 있다. 작업 분배 유닛(210)은 또한 명령어 유닛(312) 내의 각각의 새로운 콘텍스트를 초기화하고, 그 다음에 명령어 유닛(312)에 콘텍스트의 실행을 시작하라고 신호를 보낸다(signal). 명령어 유닛(312)은 명령어 푸시버퍼들을 판독하고 명령어들을 실행하여 프로세싱된 데이터를 생성한다. 콘텍스트의 실행이 완료되면, 코어(208)는 유익하게는 작업 분배 유닛(210)에 통지한다. 작업 분배 유닛(210)은 그 다음에 예를 들어, 공유 메모리(306)로부터 출력 데이터를 검색하기 위해 및/또는 부가의 콘텍스트들의 실행을 위한 코어(208)를 준비하기 위해 다른 프로세스들을 개시할 수 있다.Advantageously, the operation of the
본원에 설명된 병렬 프로세싱 유닛 및 코어 아키텍처는 예시적인 것이며, 변형 및 수정이 가능하다는 것을 알 것이다. 임의의 수의 프로세싱 엔진이 포함될 수 있다. 일부 실시예들에서, 각각의 프로세싱 엔진(302)은 그 자신의 로컬 레지스터 파일을 가지며, 스레드당 로컬 레지스터 파일 엔트리들의 할당은 필요에 따라 고정될 수 있거나 구성가능할 수 있다. 특히, 로컬 레지스터 파일(304)의 엔트리 들은 각각의 콘텍스트를 프로세싱하기 위해 할당될 수 있다. 또한, 하나의 코어(208)만이 도시되어 있지만, PPU(202)는 임의 수의 코어들(208)을 포함할 수 있으며, 유익하게는 코어들(208)은 실행 거동(behavior)이 어느 코어(208)가 특정 프로세싱 태스크를 수신하는지에 의존하지 않도록 서로 동일한 설계로 되어 있다. 유익하게는, 각각의 코어(208)는 다른 코어들(208)에 독립적으로 동작하고, 그 자신의 프로세싱 엔진들, 공유 메모리 등을 갖는다.It will be appreciated that the parallel processing unit and core architecture described herein are illustrative and that variations and modifications are possible. Any number of processing engines can be included. In some embodiments, each
그래픽 파이프라인 아키텍처Graphic pipeline architecture
도 4는 본 발명의 하나 이상의 양태에 따른 그래픽 프로세싱 파이프라인(400)의 개념도이다. PPU(202)는 그래픽 프로세싱 파이프라인(400)을 형성하도록 구성될 수 있다. 예를 들어, 코어(208)는 버텍스(vertex) 프로세싱 유닛(444), 지오메트리(geometry) 프로세싱 유닛(448), 및 프래그먼트(fragment) 프로세싱 유닛(460) 중 하나 이상의 기능들을 수행하도록 구성될 수 있다. 데이터 어셈블러(442), 프리미티브 어셈블러(primitive assembler)(446), 래스터라이저(rasterizer)(455), 및 래스터 연산 유닛(465)의 기능들이 또한 코어(208)에 의해 수행될 수 있다. 대안적으로, 그래픽 프로세싱 파이프라인(400)은 버텍스 프로세싱 유닛(444), 지오메트리 프로세싱 유닛(448), 프래그먼트 프로세싱 유닛(460), 데이터 어셈블러(442), 프리미티브 어셈블러(446), 래스터라이저(455), 및 래스터 연산 유닛(465) 중 하나 이상을 위한 전용 프로세싱 유닛들을 이용하여 구현될 수 있다.4 is a conceptual diagram of a graphics processing pipeline 400 in accordance with one or more aspects of the present invention.
데이터 어셈블러(442)는 고차의(high-order) 표면들, 프리미티브들 등을 위 한 버텍스 데이터를 수집하고 버텍스 데이터를 버텍스 프로세싱 유닛(444)에 출력하는 프로세싱 유닛이다. 버텍스 프로세싱 유닛(444)은 버텍스 셰이더 프로그램들을 실행함으로써 버텍스 셰이더 프로그램들에 의해 특정되는 바와 같이 버텍스 데이터를 변환하도록 구성되는 프로그램 가능 실행 유닛이다. 예를 들어, 버텍스 프로세싱 유닛(444)은 객체 기반 좌표 표현(객체 공간)으로부터의 버텍스 데이터를 세계 공간(world space) 또는 정규화된 디바이스 좌표들(normalized device coordinates; NDC) 공간과 같은 교대 기반 좌표 시스템(alternatively based coordinate system)으로 변환하도록 프로그램될 수 있다. 버텍스 프로세싱 유닛(444)은 버텍스 데이터를 프로세싱하는 데 이용하기 위한 PP 메모리(204) 또는 시스템 메모리(104)에 저장되는 데이터를 판독할 수 있다.The
프리미티브 어셈블러(446)는 버텍스 프로세싱 유닛(444)으로부터 프로세싱된 버텍스 데이터를 수신하고 지오메트리 프로세싱 유닛(448)에 의해 프로세싱하기 위한 그래픽 프리미티브들, 예를 들어, 점들, 선들, 삼각형들 등을 구성한다. 지오메트리 프로세싱 유닛(448)은 지오메트리 셰이더 프로그램들을 실행함으로써 지오메트리 셰이더 프로그램들에 의해 특정되는 바와 같이 프리미티브 어셈블러(446)로부터 수신된 그래픽 프리미티브들을 변환하도록 구성되는 프로그램 가능 실행 유닛이다. 예를 들어, 지오메트리 프로세싱 유닛(448)은 그래픽 프리미티브들을 하나 이상의 새로운 그래픽 프리미티브로 세분하고, 새로운 그래픽 프리미티브들을 래스터라이즈하는 데 이용되는 평면 등식 계수들(plane equation coefficients)과 같은 파라미터들을 계산하도록 프로그램될 수 있다. 본 발명의 일부 실시예들에서, 지 오메트리 프로세싱 유닛(448)은 또한 지오메트리 스트림에 요소들을 추가하거나 삭제할 수 있다. 지오메트리 프로세싱 유닛(448)은 새로운 그래픽 프리미티브들을 특정하는 파라미터들 및 버텍스들을 래스터라이저(455) 또는 메모리 인터페이스(214)에 출력한다. 지오메트리 프로세싱 유닛(448)은 지오메트리 데이터를 처리하는 데 이용하기 위한 PP 메모리(204) 또는 시스템 메모리(104)에 저장되는 데이터를 판독할 수 있다.The primitive assembler 446 constructs graphic primitives, such as points, lines, triangles, etc., for receiving the processed vertex data from the vertex processing unit 444 and processing by the geometry processing unit 448. Geometry processing unit 448 is a programmable execution unit configured to transform graphics primitives received from primitive assembler 446 as specified by geometry shader programs by executing geometry shader programs. For example, geometry processing unit 448 may be programmed to subdivide the graphic primitives into one or more new graphic primitives and calculate parameters such as plane equation coefficients used to rasterize the new graphic primitives. Can be. In some embodiments of the invention, geometry processing unit 448 may also add or remove elements from the geometry stream. Geometry processing unit 448 outputs parameters and vertices that specify new graphics primitives to
래스터라이저(455) 스캔은 새로운 그래픽 프리미티브들을 변환하고 프래그먼트 프로세싱 유닛(260)에 프래그먼트들 및 커버리지 데이터를 출력한다. 안티에일리어싱(antialiasing)이 이미지 데이터를 생성하는 데 이용될 때, 래스터라이저(455)는 서브-픽셀 샘플 커버리지 데이터를 생성하도록 구성된다. 하이브리드 안티에일리어싱이 이용될 때, 래스터라이저(455)에 존재할 수 있는 하이브리드 안티에일리어스 제어 유닛(500)이, 도 5c 및 도 6과 함께 설명되는 바와 같이, 각각의 프리미티브를 처리하는 데 이용되는 프래그먼트 프로세싱 유닛(460)을 통한 패스들의 수를 결정하도록 구성된다.The
프래그먼트 프로세싱 유닛(460)은 프래그먼트 셰이더 프로그램들을 실행함으로써 프래그먼트 셰이더 프로그램들에 의해 특정되는 바와 같이 래스터라이저(455)로부터 수신된 프래그먼트들을 변환하도록 구성되는 프로그램 가능 실행 유닛이다. 예를 들어, 프래그먼트 프로세싱 유닛(460)은 원근법 정정(perspective correction), 텍스처 맵핑(texture mapping), 셰이딩(shading), 블렌딩(blending) 등과 같은 동작들을 수행하여 래스터 연산 유닛(465)에 출력되는 셰이딩된 프래그 먼트들을 생성하도록 프로그램될 수 있다. 프래그먼트 프로세싱 유닛(460)은 프래그먼트 데이터를 프로세싱하는 데 이용하기 위한 PP 메모리(204) 또는 시스템 메모리(104)에 저장되는 데이터를 판독할 수 있다. 프래그먼트들은, 하이브리드 안티에일리어스 제어 유닛에 의해 선택되는 샘플링 레이트에 따라, 픽셀, 샘플, 또는 수퍼샘플 클러스터 입도로 셰이딩될 수 있다.The
메모리 인터페이스(214)는 그래픽 메모리에 저장된 데이터를 위한 판독 요구들을 생성하고 텍스처 필터링 동작들, 예를 들어, 바이리니어(bilinear), 트라이리니어(trilinear), 이방성(anisotropic) 등을 수행한다. 본 발명의 일부 실시예들에서, 메모리 인터페이스(214)는 데이터를 압축 해제하도록 구성될 수 있다. 특히, 메모리 인터페이스(214)는 DXT 포맷으로 표현된 압축 데이터와 같은 고정 길이 블록 인코딩된 데이터를 압축 해제하도록 구성될 수 있다. 래스터 연산 유닛(465)은 스텐실, z 테스트 등과 같은 래스터 연산들을 수행하고 픽셀 데이터를 그래픽 메모리에 저장하기 위한 프로세싱된 그래픽 데이터로서 출력하는 프로세싱 유닛이다. 프로세싱된 그래픽 데이터는 디스플레이 디바이스(110)에 표시하기 위해 또는 CPU(102)나 병렬 프로세싱 서브시스템(112)에 의해 추가 처리하기 위해 그래픽 메모리, 예를 들어, PP 메모리(204) 및/또는 시스템 메모리(104)에 저장될 수 있다. 본 발명의 일부 실시예들에서, 래스터 연산 유닛(465)은 메모리에 기입되는 z 또는 컬러 데이터를 압축하고 메모리로부터 판독되는 z 또는 컬러 데이터를 압축 해제하도록 구성된다.
하이브리드hybrid 안티에일리어싱Anti-aliasing
이전에 설명한 바와 같이, PPU(202)는 화질을 향상시키기 위해 또는 셰이딩 성능을 향상시키기 위해 다양한 샘플링 레이트에서 셰이딩을 수행하도록 구성될 수 있다. 하이브리드 안티에일리어스 제어 유닛은 프리미티브 내의 각각의 픽셀을 셰이드하는 데 이용되는 셰이더 패스들의 수를 결정한다. 픽셀당 하나 이상의 멀티샘플들(서브-픽셀 샘플들)의 수퍼샘플 클러스터가, 수퍼샘플 클러스터 내 모든 멀티샘플들에 대해 복제되는 단일 셰이더 컬러 값을 생성하도록 각 패스에 대해 프래그먼트 프로세싱 유닛(460)으로서 구성되는 코어(208)에 의해 처리된다. 장면(scene)이 렌더링된 후에, 수퍼샘플 클러스터들을 위한 샘플들이 결합되어 안티에일리어싱된 이미지를 생성한다.As previously described, the
각각의 프리미티브를 위한 서브-픽셀 샘플들 및 셰이더 패스들의 수가 증가되어 화질을 향상시킨다. 서브-픽셀 샘플들의 수는 애플리케이션이 착수될 때 결정되고 렌더 타겟(이미지 버퍼)의 각각의 픽셀에 대해 일관된다. 하이브리드 안티에일리어스 제어 유닛은 렌더링 상태, 예를 들어, 알파 테스트 인에이블/디스에이블, 텍스처 맵 컨텐츠, 사용자 제공된 품질/성능 제어들 등에 기초하여 셰이딩 패스들의 수를 동적으로 결정할 수 있다.The number of sub-pixel samples and shader passes for each primitive is increased to improve image quality. The number of sub-pixel samples is determined when the application is launched and is consistent for each pixel of the render target (image buffer). The hybrid antialiasing control unit can dynamically determine the number of shading passes based on the rendering state, eg, alpha test enable / disable, texture map content, user provided quality / performance controls, and the like.
도 5a는 본 발명의 하나 이상의 양태에 따른, 픽셀(501) 내의 수퍼샘플 클러스터들(503 및 511) 및 멀티샘플들(502, 504, 및 513)을 예시한다. 8개의 서브-픽셀 샘플 안티에일리어싱이 이용될 때, 8개의 서브-픽셀 샘플들을 생성하기 위해 각종 상이한 조합의 멀티샘플 및 수퍼샘플 클러스터가 이용될 수 있다. 도 5a에 도시된 예에서, 3개의 수퍼샘플 클러스터들(503) 및 수퍼샘플 클러스터(511)가 각각, 픽셀(501)을 갖는 총 8개의 서브-픽셀 샘플 위치들에 대해, 수퍼샘플 클러스터(511) 내 멀티샘플들(502 및 504)과 같이 2개의 멀티샘플들을 포함한다. 다른 8개의 서브-픽셀 샘플 구성들은 각각 하나의 멀티샘플을 갖는 8개의 많은 수퍼샘플 클러스터 또는 8개의 멀티샘플을 갖는 하나의 적은 수퍼샘플 클러스터를 포함한다. 셰이딩은 각각의 수퍼샘플 클러스터에 대해 한번 수행되고, 셰이딩된 값, 예를 들어, 컬러는 수퍼샘플 클러스터 내의 모든 멀티샘플들에 대해 저장된다.5A illustrates
셰이더 속성들은 수퍼샘플 클러스터 내 특정 멀티샘플의 위치에서 샘플링될 수 있거나, 수퍼샘플 클러스터 내 또는 근처의 어떤 다른 위치에서 샘플링될 수 있다. 예를 들어, 도 5a에서 프래그먼트 속성들(컬러, 텍스처 좌표들 등)은 수퍼샘플 클러스터(511) 내 멀티샘플(502)과 같은 솔리드 멀티샘플 위치들에서 샘플링될 수 있다. 또한, 프래그먼트들이 수퍼샘플 클러스터를 부분적으로만 커버할 때, 속성들이 수퍼샘플 클러스터 내 커버된 멀티샘플들의 영역 내에 놓이도록 샘플링되는 위치를 조정하는 것이 유익하다. 이것은 일반적으로 센트로이드 샘플링(controid sampling)으로서 알려져 있으며, 이 용어는 본원에서 전체 픽셀 프래그먼트들보다는 수퍼샘플 클러스터들에 적용된다.Shader attributes may be sampled at the location of a particular multisample within the supersample cluster, or may be sampled at some other location within or near the supersample cluster. For example, fragment attributes (color, texture coordinates, etc.) in FIG. 5A may be sampled at solid multisample locations, such as
도 5b는 본 발명의 하나 이상의 양태에 따른, 수퍼샘플 클러스터(511) 내 프래그먼트(509) 및 센트로이드 위치(517)를 예시한다. 본 발명의 일부 실시예들에서, 센트로이드 샘플링을 이용하여 속성들이 평가되는 위치를 프래그먼트에 의해 실제로 커버된 스크린 영역에 잘 대응하도록 수정한다. 본 발명의 일부 실시예들에서, 샘플 보간 유닛(510)은 특정 멀티샘플 위치 또는 근사화된 센트로이드 위치 에서 각각의 수퍼샘플 클러스터를 샘플링하도록 구성될 수 있다.5B illustrates
센트로이드는 커버된 멀티샘플들의 지오메트릭 센트로이드일 수 있거나, 또는, 예를 들어, 완전히 커버된 수퍼샘플 클러스터의 센트로이드에 가장 가까운 수퍼샘플 클러스터 내 커버된 멀티샘플을 선택함으로써 근사화될 수 있다. 예를 들어, 센트로이드 위치(517)는 수퍼샘플 클러스터(511)를 위한 샘플링된 컬러를 표현하는 데 이용되는 수퍼샘플 클러스터(511)의 지오메트릭 중심에서 계산된 멀티샘플 위치이며, 그 이유는, 멀티샘플(502)의 위치가 프래그먼트(509)의 중심 근처가 아니라 가장자리 근처에 있기 때문이다. 셰이딩된 값은 멀티샘플(502)과 비교되는 프래그먼트 컬러를 더 정확하게 표현하기 위해 센트로이드 위치(517)에서 계산된다.The centroid may be a geometric centroid of the covered multisamples, or may be approximated, for example, by selecting the covered multisample in the supersample cluster closest to the centroid of the fully covered supersample cluster. For example, the
도 5c는 본 발명의 하나 이상의 양태에 따른, 래스터라이저(455), 프래그먼트 프로세싱 유닛(460), 및 래스터 연산 유닛(465)을 포함하는 그래픽 프로세싱 파이프라인(400)의 일부분의 블록도이다. 래스터라이저(455), 프래그먼트 프로세싱 유닛(460), 및 래스터 연산 유닛(465) 내에 다른 프로세싱 유닛들이 포함될 수 있다. 도 5c에는 이들의 다른 프로세싱 유닛들이 도시되지 않았는데, 그 이유는 이것들은 일반적으로 종래의 설계로 되어 있을 수 있기 때문이고, 본 발명에 중요하지 않은 상세한 설명은 생략된다.5C is a block diagram of a portion of a graphics processing pipeline 400 that includes a
래스터라이저(455)는 지오메트리 프로세싱 유닛(448)으로부터 프리미티브들을 수신하고 프리미티브가 가로지르는 각각의 픽셀을 위한 프래그먼트를 생성한다. 하이브리드 안티에일리어스 제어 유닛(500)(선택적으로 래스터라이저(455) 내에 있 음)은 렌더링 상태, 예를 들어, 알파 테스트 인에이블/디스에이블, 텍스처 맵 콘텐트, 사용자 제공된 품질/성능 제어들 등에 기초하여 각각의 프리미티브의 프래그먼트들을 처리하는 데 이용되는 셰이더 패스들의 수를 동적으로 결정하도록 구성될 수 있다.
하이브리드 안티에일리어스 제어 유닛(500)은 더 높은 셰이딩 레이트로부터 이득이 있는 프리미티브들에 대해 더 많은 셰이딩 패스들을 수행하고 다른 프리미티브들에 대한 셰이딩 레이트를 감소시킴으로써 안티에일리어싱 효율을 향상시킨다. 하이브리드 안티에일리어스 제어 유닛(500)은 사용자, 애플리케이션, 또는 디바이스 드라이버(103)에 의해 다양한 품질 설정들로 동작하도록 구성될 수 있다. 이들은 가장 낮은 품질 설정인 "멀티샘플-항상(multisample-always)"으로부터 가장 높은 품질 설정인 "수퍼샘플-항상(supersample-always)"까지의 범위일 수 있다. 중간 품질 설정들은 셰이딩 패스들의 수를 결정함에 있어서 렌더 파이프라인 상태를 고려할 수 있다. 예를 들어, 알파 테스트 또는 셰이더 픽셀 킬(shader pixel kill)이 인에이블된 경우, 더 많은 셰이딩 패스들이 바람직할 수 있다. 반대로, 고성능이 특정될 때, 알파 테스트 및 셰이더 픽셀 킬이 디스에이블되고, 샘플링 레이트는 하이브리드 안티에일리어스 제어 유닛(500)에 의해 감소될 수 있다. 하이브리드 안티에일리어스 제어 유닛(500)은 또한 셰이딩 패스들의 수를 결정함에 있어서 픽셀 셰이더 또는 텍스처 샘플러 설정들의 특징을 고려할 수 있다. 이 기술분야의 통상의 기술자는 셰이딩 패스들의 수를 결정하기 위해 다양한 판단기준(criteria)이 하이브리드 안티에일리어스 제어 유닛(500)에 의해 이용될 수 있다 는 것을 인식할 것이다. 종래의 그래픽 시스템들에서, 샘플링 레이트는 사용자 제공 또는 고정 설정들에 기초하여 장면의 모든 프리미티브에 대해 결정된다. 또한, 종래의 시스템들을 위한 샘플링은 멀티샘플링 또는 수퍼샘플링으로 한정되며, 중간 대안들이 없다.Hybrid
일 실시예에서, 래스터라이저(455)는 하이브리드 안티에일리어스 반복기 유닛(515)에 의해 수신되는 픽셀 프래그먼트들의 2x2 쿼드들을 생성한다. 하이브리드 안티에일리어스 제어 유닛(500)이 패스들=1로 설정할 때(즉, 멀티샘플링일 때), 하이브리드 안티에일리어스 반복기 유닛(515)은 프래그먼트 프로세싱 유닛(460)으로 수정되지 않은 이들 쿼드들을 패스한다. 그러나, 하이브리드 안티에일리어스 제어 유닛(500)이 패스들을 N>1로 설정할 때, 하이브리드 안티에일리어스 반복기 유닛(515)은 셰이더 패스에 대응하는 패스 수를 포함하여 프래그먼트 프로세싱 유닛(460)에 여러번 각각의 쿼드를 출력한다. 하이브리드 안티에일리어스 반복기 유닛(515)은 현재의 패스에 대응하는 수퍼샘플 클러스터 내의 멀티샘플들만이 인에이블되도록 프래그먼트 프로세싱 유닛(460)에 전송된 커버리지를 마스킹할 수 있다. 다른 실시예들에서, 프래그먼트 프로세싱 유닛(460)은 하이브리드 안티에일리어스 반복기 유닛(515)에 의해 그것에 제공된 패스 수에 기초하여 커버리지를 마스킹할 수 있다. 다른 실시예들은 단일 픽셀, 4x4 프래그먼트 타일 등과 같은, 2x2 프래그먼트 쿼드 이외의 영역에 대해 반복할 수 있다는 것에 주목한다. 프리미티브들 이외의 픽셀들의 영역들(쿼드들)에 대해 반복하는 것은 이로울 수 있는데, 그 이유는, 텍스처 맵 데이터가 특정 쿼드를 위한 후속 셰이더 패스들에 대해 재사용될 가 능성이 있고, 반면, 클 수 있는 프리미티브들에 대해 반복하는 것은 텍스처 데이터가 메모리, 예를 들어, PP 메모리(204) 또는 시스템 메모리(104)로부터 재인출되도록 할 수 있기 때문이다.In one embodiment,
중요하게는, 프래그먼트들을 생성하는데 필요한 지오메트리 계산들은 각각의 셰이더 패스에 대해 반복되지 않는다. 반대로, 샘플 마스크를 이용하여 멀티샘플 버퍼 내로 수퍼샘플링하는 종래의 시스템들은 통상적으로 각각의 셰이더 패스에 대해 지오메트리 계산들을 반복한다. 프래그먼트 프로세싱 유닛(460)에 샘플링되는 프리미티브 속성들은, 후속하는 반복된 쿼드들에 의해 참조될 것이고 그 다음에 폐기될 수 있기 때문에, 하이브리드 안티에일리어싱 패스들의 수에 상관없이 오직 한번 계산될 필요가 있다는 것을 주목한다.Importantly, the geometry calculations needed to generate the fragments are not repeated for each shader pass. Conversely, conventional systems that supersample into a multisample buffer using a sample mask typically repeat geometry calculations for each shader pass. The primitive attributes sampled to the
프래그먼트 프로세싱 유닛(460)의 샘플 룩업 테이블은 하이브리드 안티에일리어싱 파라미터들 및 패스 수를 이용하여, 보간된 프래그먼트 파라미터들이 샘플링되는 위치를 결정한다. 샘플 룩업 테이블(505)은 각각의 수퍼샘플 클러스터에 대한 센트로이드 위치 또는 멀티샘플 위치를 선택할 수 있다. 멀티샘플 위치들은 각각의 수퍼샘플 클러스터에 대한 하나 이상의 보간된 파라미터들, 예를 들어, 컬러 채널들(적, 녹, 청, 알파), 텍스처 좌표들 등(즉, 픽셀 쿼드 내의 각각의 픽셀에 대한 1 세트의 보간된 파라미터들)을 계산하는 샘플 보간 유닛(510)에 출력된다. 셰이더(520)는, 프래그먼트 셰이더 프로그램 등을 실행하기 위해 이 기술분야의 통상의 기술자에게 알려진 기술들을 이용해서 픽셀 쿼드 내의 각각의 픽셀에 대한 보간된 파라미터들의 세트를 처리하여, 각각의 수퍼샘플 클러스터에 대해 셰이 드된 픽셀 값, 예를 들어, 컬러를 생성한다.The sample lookup table of the
셰이딩 동안 각각의 수퍼샘플 클러스터에 대한 서브-픽셀 샘플들은, 픽셀 킬 또는 알파 테스트 결과들에 기초하여 포스트-셰이더 커버리지를 생성하기 위해 래스터-생성된 커버리지가 수정되도록 셰이더 픽셀 킬 또는 알파 테스팅의 결과로서 제거(솎음(culled) 또는 킬(killed))될 수 있다. 수퍼샘플 클러스터들은 셰이더(520)를 통해 별개의 패스들로 처리되기 때문에, 수퍼샘플 클러스터들은 알파 테스팅 동안 개별적으로 제거될 수 있다. 반대로, 종래의 멀티샘플링을 이용하여 단일 셰이딩 패스에서 모든 서브-픽셀 샘플들을 프로세싱할 때, 모든 서브-픽셀 샘플들은 유지되거나 제거됨으로써, 더 낮은 품질 이미지를 생성하는 더 정밀하지 않은 알파 테스팅 입도를 초래한다.Sub-pixel samples for each supersample cluster during shading are the result of shader pixel kill or alpha testing such that raster-generated coverage is modified to generate post-shader coverage based on pixel kill or alpha test results. It may be removed (culled or killed). Because supersample clusters are processed in separate passes through shader 520, supersample clusters can be removed individually during alpha testing. Conversely, when processing all sub-pixel samples in a single shading pass using conventional multisampling, all the sub-pixel samples are retained or removed, resulting in a less precise alpha testing granularity that produces a lower quality image. do.
셰이더(520)는 컬러 버퍼(535) 및 커버리지 수집기(530)에 셰이딩된 픽셀 값들 및 서브-픽셀 커버리지(가능하게는 래스터라이저(455)에 의해 제공된 커버리지와 비교하여 수정된 것)를 각각 출력한다. 커버리지 수집기(530)는 각각의 셰이더 패스에 대한 포스트-셰이더 커버리지를 누적하여 각각의 픽셀에 대한 수집된 커버리지 정보를 생성한다. 컬러 버퍼(535)는 각각의 픽셀에 대한 셰이딩된 값들을 누적한다. 마지막 셰이더 패스에 대한 셰이딩된 값들이 수신될 때, 수집된 커버리지 정보는 래스터 연산 유닛(465)에 출력된다. 픽셀 쿼드에 대한 셰이딩된 값들은 수집된 커버리지 정보와 함께 출력될 수 있거나, 또는 나중에, 예를 들어, z 테스팅이 래스터 연산 유닛(465)에 의해 완료된 후에, 출력될 수 있다. 본 발명의 다른 실시예들에서, 커버리지 수집기(530) 및 컬러 버퍼(535)는 생략될 수 있다.Shader 520 outputs the shaded pixel values and sub-pixel coverage (possibly modified compared to the coverage provided by rasterizer 455) to
커버리지 수집 및 컬러 버퍼 내로의 컬러 값들의 합체(coalescing)는, 다수의 샘플들이 단일 메모리 트랜잭션을 이용하여 기입 또는 판독될 수 있도록, 각각의 픽셀의 샘플들을 메모리에 함께 패킹하는 시스템들에서 유익하다. 다른 실시예들은 커버리지 수집기(530)를 생략할 수 있다. 커버리지 수집기(530)는 픽셀에 대한 샘플값들을 메모리 내에 끊임없이 저장하지 않는 시스템들에서는 덜 유리하다.Coverage collection and coalescing of color values into the color buffer is beneficial in systems that pack samples of each pixel together into memory so that multiple samples can be written or read using a single memory transaction. Other embodiments may omit the
래스터 연산 유닛(465) 내의 선택적인 z/컬러 압축 유닛(55)은 수집된 커버리지 정보 및 z값들, 또는 프래그먼트들에 대한 z 또는 심도 값들의 다른 표현을 수신하고(이어서 z 테스팅), 픽셀들의 영역에 대해 압축된 z 값들을 생성한다. z/컬러 압축 유닛(550)은 또한 프래그먼트들에 대한 수집된 컬러값들을 수신하고 픽셀들의 영역에 대해 압축된 컬러 값들을 생성할 수 있다. 압축은 픽셀들의 큰 그룹에 적용될 때 향상될 수 있다. 따라서, 여러 픽셀 쿼드들이 함께 수집될 수 있고결과가 압축되기 전에 z 테스팅될 수 있다. 중요한 점은, 하이브리드 안티에일리어싱이 z 압축의 효율성을 방해하거나 감소시키지 않는다는 것이다. z 압축은 z 버퍼에 액세스하기 위한 메모리 대역폭 요건들을 감소시키는데 사용되는 것이 바람직하며, 일부 실시예들에서는, 메모리 풋프린트도 마찬가지이다.The optional z / color compression unit 55 in the
도 6은 본 발명의 하나 이상의 양태들에 따른, 하이브리드 안티에일리어싱을 수행하기 위한 방법 단계들의 흐름도이다. 단계(610)에서, 하이브리드 안티에일리어스 제어 유닛(500)이 프리미티브를 수신한다. 단계(615)에서, 하이브리드 안티에일리어스 제어 유닛(500)은 하이브리드 안티에일리어싱이 인에이블되는지를 판정하고, 인에이블되지 않으면 종래의 안티에일리어싱을 이용하여 프레그먼트를 프로 세싱한다. 단계(615)에서, 하이브리드 안티에일리어싱이 인에이블되면, 단계(635)에서 하이브리드 안티에일리어스 제어 유닛(500)이 프리미티브에 대한 하이브리드 안티에일리어스 파라미터들을 결정한다. 구체적으로, 하이브리드 안티에일리어스 제어 유닛(500)은 프리미티브가 가로지르는 각 픽셀을 셰이딩할 때 사용되는 수퍼샘플 클러스터들(셰이더 패스들)의 수를 결정한다. 6 is a flowchart of method steps for performing hybrid antialiasing, in accordance with one or more aspects of the present invention. In
단계(640)에서, 래스터라이저(455)는 프리미티브의 커버된 부분들에 대한 심플 레벨 커버리지를 생성한다. 이 커버리지의 입도는 세밀하지 못하거나(coarse) 세밀(fine)할 수 있지만, 적어도 픽셀 쿼드의 크기이다. 래스터라이저(455)는 프리미티브를 가로지르는 쿼드에 대한 커버리지 정보를 하이브리드 안티에일리어스 반복기 유닛(515)에 출력한다. 하이브리드 안티에일리어스 반복기 유닛(515)은 하이브리드 안티에일리어스 파라미터들에 기초하여 각 쿼드를 확대하여 다수의 패스들에서 쿼드를 셰이딩한다. 하이브리드 안티에일리어스 반복기 유닛(515)은 커버리지 정보에 따라, 수퍼샘플 클러스터 내 멀티샘플들 모두가 커버되지 않는 경우에 셰이더 패스들을 스킵하도록 구성될 수 있다. 단계(643)에서, 하이브리드 안티에일리어스 반복기 유닛(515)은 패스 수(제1, 제2 등)를 결정하고 픽셀 쿼드 및 패스 수를 프래그먼트 프로세싱 유닛(460)에 출력한다. 상술된 바와 같이, 패스들의 수가 1보다 큰 경우, 하이브리드 안티에일리어스 반복기 유닛(515)은 커버리지 정보를 마스킹할 수 있다. 샘플 룩업 테이블(505)은 패스 수 및 멀티샘플들의 수를 이용하여 인덱싱되어, 프래그먼트 파라미터들을 보간하기 위해 사용되는 수퍼샘플 클러스터 내의 위치의 표시를 포함하는, 멀티샘플 위치들에 대한 프로그램된 값을 판 독한다. 보간된 파라미터들은 샘플 보간 유닛(510)에 의해 수퍼샘플 클러스터에 대해 산출된다.At step 640,
단계(645)에서, 프래그먼트 프로세싱 유닛(460)은 픽셀 쿼드를 셰이딩하여 각 수퍼샘플 클러스터에 대한 셰이딩된 값, 즉 픽셀 쿼드에서 각 픽셀에 대한 하나의 셰이딩된 값을 생성한다. 수퍼샘플 클러스터 내에서, 셰이딩된 값은 프리미티브에 의해 커버되는 각 멀티샘플에 대해 사용될 것이다. 프래그먼트 프로세싱 유닛(460)은 또한 픽셀 쿼드에 대한 포스트 셰이더 커버리지를 출력한다. 포스트 셰이더 커버리지는 전술된 바와 같이 셰이딩 동안 멀티샘플들이 제거될 수 있기 때문에 래스터라이즈된 픽셀 커버리지 정보와 상이할 수 있다.In
단계(650)에서, 하이브리드 안티에일리어스 반복기 유닛(515)은 픽셀 쿼드를 프로세싱하기 위해 다른 셰이더 패스를 이용할 것인지를 판정하고, 그렇다면, 단계(643 및 645)가 다른 셰이더 패스(제2 및 제3 등)에 대해 반복된다. 단계(650)에서, 하이브리드 안티에일리어스 반복기 유닛(515)이 픽셀 쿼드를 프로세싱하기 위해 다른 셰이더 패스를 필요로하지 않는다고 결정하면, 단계(660)에서 커버리지 수집기(530)가 각 셰이더 패스에 대한 포스트 셰이더 커버리지를 결합하여 픽셀 쿼드에 대한 수집된 커버리지 정보를 생성한다. 단계(660)에서, 커버리지 수집기(530)는 또한 각 셰이더 패스에 대한 포스트 셰이더 컬러 값들을 결합하여 픽셀 쿼드에 대한 수집된 컬러 값들을 생성한다. 커버리지 수집기(530)는 멀티 쿼드 레벨에서 포스트 셰이더 컬러 및 커버리지 정보를 수집하도록 구성될 수도 있다. 단계(665)에서, 래스터 연산 유닛(465)은 어떤 셰이더 값들이 프레임 버퍼 에 기입될 것인지를 판정하는 래스터 연산을 수행한다. 래스터 연산들은 쿼드 또는 멀티 쿼드 레벨에서 수행될 수 있다. 래스터 연산 유닛(465) 내의 Z/컬러 압축 유닛(550)을 이용하여, z 및/또는 컬러 데이터가 z 버퍼 및/또는 컬러 버퍼 내에 저장되기 전에 픽셀 쿼드에 대한 z 및/또는 컬러 데이터를 압축할 수 있다.In
단계(670)에서, 래스터라이저(455)는 다른 픽셀 쿼드가 프리미티브와 가로지르는지를 판정하고, 그렇다면, 단계(640)에서 래스터라이저(455)가 프리미티브에 의해 커버되는 상이한 픽셀 쿼드를 프로세싱한다. 단계(670)에서, 래스터라이저(455)는 프리미티브가 가로지르는 픽셀 쿼드들 모두가 셰이딩되었는지를 판정한 후, 단계(675)에서 프리미티브 프로세싱이 완료한다. 파이프라인 시스템에서, 도 6에 도시된 단계들 중 하나 이상은 상이한 쿼드들에 대해 병렬로 수행될 수 있다.In
하이브리드 안티에일리어스 제어 유닛(500)은 렌더링 상태, 즉 알파 테스트 인에이블/디스에이블, 텍스쳐 맵 컨텐츠, 사용자 제공된 품질/성능 제어들 등에 기초하여 각 프리미티브에 대한 하이브리드 안티에일리어싱 파라미터들, 예를 들어 픽셀 당 수퍼샘플 클러스터들의 수를 동적으로 결정할 수 있다. 렌더링 상태에 기초하여 안티에일리어싱을 적응하면 효율성이 향상되는데, 그 이유는 고품질 안티에일리어싱으로부터 이득이 되는 프리미티브들은 더 많은 샘플들로 셰이딩되고 다른 프리미티브들은 더 적은 샘플들로 셰이딩되어 화질 및 성능을 최적화시키기 때문이다.The hybrid
본 발명은 특정 실시예들을 참조하여 상술되었다. 그러나, 당업자는 첨부된 청구항들에 개시된 발명의 폭넓은 정신 및 범위로부터 벗어나지 않고 그것에 다양한 수정 및 변경이 이루어질 수 있음을 이해할 것이다. 본 발명의 일 실시예는 컴퓨터 시스템과 함께 사용하기 위한 프로그램 제품으로서 구현될 수 있다. 프로그램 제품의 프로그램(들)은 실시예들의 기능(본원에 기재된 방법들 포함)을 정의하고 각종 컵퓨터 판독가능한 저장 매체 상에 포함될 수 있다. 예시적인 컴퓨터 판독가능한 저장 매체는 (i) 정보가 영구적으로 저장되는 기록 불가능한 저장 매체(CD-ROM 드라이브에 의해 판독가능한 CD-ROM 디스크, 플래시 메모리, ROM 칩들 또는 다른 유형의 고상 불휘발성 반도체 메모리와 같은 컴퓨터 내의 판독 전용 메모리 디바이스들) 및 (ii) 변경가능한 정보를 저장하는 기록가능한 저장 매체(예를 들어, 디스켓 드라이브 또는 하드 디스크 드라이브 내의 플로피 디스크들 또는 임의 유형의 고상 랜덤 액세스 반도체 메모리)를 포함하지만, 이에 제한되지 않는다. 상기 설명 및 도면은 따라서, 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다.The present invention has been described above with reference to specific embodiments. However, one of ordinary skill in the art appreciates that various modifications and changes can be made thereto without departing from the broad spirit and scope of the invention as set forth in the appended claims. One embodiment of the invention may be implemented as a program product for use with a computer system. The program (s) of the program product define the functionality of the embodiments (including the methods described herein) and may be included on various cup computer readable storage media. Exemplary computer readable storage media include (i) non-writable storage media (CD-ROM disks, flash memories, ROM chips or other types of solid state nonvolatile semiconductor memory readable by a CD-ROM drive) in which information is stored permanently. Read-only memory devices in the same computer) and (ii) recordable storage media (e.g., floppy disks in a diskette drive or hard disk drive or any type of solid state random access semiconductor memory) for storing changeable information. However, it is not limited thereto. The description and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성된 컴퓨터 시스템을 도시하는 블록도.1 is a block diagram illustrating a computer system configured to implement one or more aspects of the present invention.
도 2는 본 발명의 하나 이상의 양태에 따른, 도 1의 컴퓨터 시스템에 대한 병렬 프로세싱 서브시스템의 블록도.2 is a block diagram of a parallel processing subsystem for the computer system of FIG. 1, in accordance with one or more aspects of the present invention.
도 3은 본 발명의 하나 이상의 양태에 따른, 도 2의 병렬 프로세싱 서브시스템에 대한 코어의 블록도.3 is a block diagram of a core for the parallel processing subsystem of FIG. 2, in accordance with one or more aspects of the present invention.
도 4는 본 발명의 하나 이상의 양태에 따른 그래픽 프로세싱 파이프라인의 개념도.4 is a conceptual diagram of a graphics processing pipeline, in accordance with one or more aspects of the present invention.
도 5a는 본 발명의 하나 이상의 양태에 따른 픽셀 내의 수퍼샘플 클러스터 및 멀티샘플 위치를 도시하는 도면.5A illustrates a supersample cluster and multisample locations within a pixel in accordance with one or more aspects of the present invention.
도 5b는 본 발명의 하나 이상의 양태에 따른 멀티샘플 클러스터 내의 프래그먼트 및 센트로이드 위치를 도시하는 도면.5B illustrates fragment and centroid positions within a multisample cluster in accordance with one or more aspects of the present invention.
도 5c는 본 발명의 하나 이상의 양태에 따른 그래픽 프로세싱 파이프라인의 일부의 블록도.5C is a block diagram of a portion of a graphics processing pipeline in accordance with one or more aspects of the present invention.
도 6은 본 발명의 하나 이상의 양태에 따른 하이브리드 안티에일리어싱을 수행하는 방법 단계들의 흐름도.6 is a flow diagram of method steps for performing hybrid antialiasing in accordance with one or more aspects of the present invention.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>
400: 그래픽 프로세싱 파이프라인400: graphics processing pipeline
442: 데이터 어셈블러442: Data Assembler
444: 버텍스 프로세싱 유닛444: vertex processing unit
446: 프리미티브 어셈블러446 primitive assembler
448: 지오메트리 프로세싱 유닛448: geometry processing unit
455: 래스터라이저455: rasterizer
460: 프래그먼트 프로세싱 유닛460: fragment processing unit
465: 래스터 연산 유닛465 raster calculation unit
Claims (10)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/167,997 | 2008-07-03 | ||
US12/167,998 US8605087B2 (en) | 2008-07-03 | 2008-07-03 | Hybrid multisample/supersample antialiasing |
US12/167,998 | 2008-07-03 | ||
US12/167,997 US8605086B2 (en) | 2008-07-03 | 2008-07-03 | Hybrid multisample/supersample antialiasing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100004890A true KR20100004890A (en) | 2010-01-13 |
KR101009557B1 KR101009557B1 (en) | 2011-01-18 |
Family
ID=41705532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090060607A KR101009557B1 (en) | 2008-07-03 | 2009-07-03 | Hybrid multisample/supersample antialiasing |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP4744624B2 (en) |
KR (1) | KR101009557B1 (en) |
TW (1) | TWI425440B (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104715501A (en) * | 2013-12-12 | 2015-06-17 | 英特尔公司 | Decoupled Shading Pipeline |
KR20150086758A (en) * | 2014-01-20 | 2015-07-29 | (주)넥셀 | Apparatus and methdo for processing graphic |
WO2016076982A1 (en) * | 2014-11-10 | 2016-05-19 | Intel Corporation | Compression using index bits in msaa |
KR20170033868A (en) * | 2014-09-16 | 2017-03-27 | 인텔 코포레이션 | Deferred coarse pixel shading |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9129441B2 (en) | 2010-06-21 | 2015-09-08 | Microsoft Technology Licensing, Llc | Lookup tables for text rendering |
KR101824665B1 (en) * | 2010-07-19 | 2018-02-01 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | Split storage of anti-aliased samples |
KR101926570B1 (en) | 2011-09-14 | 2018-12-10 | 삼성전자주식회사 | Method and apparatus for graphic processing using post shader |
GB2497302B (en) * | 2011-12-05 | 2017-04-12 | Advanced Risc Mach Ltd | Methods of and apparatus for processing computer graphics |
US9710957B2 (en) * | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Graphics processing enhancement by tracking object and/or primitive identifiers |
KR102680270B1 (en) | 2016-12-16 | 2024-07-01 | 삼성전자주식회사 | Graphics processing apparatus and method for processing graphics pipeline thereof |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06243247A (en) * | 1993-02-18 | 1994-09-02 | Matsushita Electric Ind Co Ltd | Shape describing device |
GB2278524B (en) * | 1993-05-28 | 1997-12-10 | Nihon Unisys Ltd | Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency |
JP2673101B2 (en) * | 1994-08-29 | 1997-11-05 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Computer graphics equipment |
JP4740490B2 (en) * | 2001-08-21 | 2011-08-03 | 任天堂株式会社 | Clamping Z values in the Z neighborhood to maximize the accuracy of visually important Z components in graphics rendering systems and avoid Z neighborhood clipping |
US6768491B2 (en) * | 2001-12-21 | 2004-07-27 | Ati Technologies Inc. | Barycentric centroid sampling method and apparatus |
US7495672B2 (en) * | 2002-12-20 | 2009-02-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Low-cost supersampling rasterization |
EP1480171B1 (en) * | 2003-05-22 | 2016-11-02 | Telefonaktiebolaget LM Ericsson (publ) | Method and system for supersampling rasterization of image data |
US6967663B1 (en) * | 2003-09-08 | 2005-11-22 | Nvidia Corporation | Antialiasing using hybrid supersampling-multisampling |
US7173631B2 (en) * | 2004-09-23 | 2007-02-06 | Qualcomm Incorporated | Flexible antialiasing in embedded devices |
GB0426170D0 (en) * | 2004-11-29 | 2004-12-29 | Falanx Microsystems As | Processing of computer graphics |
US8879857B2 (en) * | 2005-09-27 | 2014-11-04 | Qualcomm Incorporated | Redundant data encoding methods and device |
US20080143720A1 (en) * | 2006-12-13 | 2008-06-19 | Autodesk, Inc. | Method for rendering global illumination on a graphics processing unit |
-
2009
- 2009-07-02 TW TW098122471A patent/TWI425440B/en not_active IP Right Cessation
- 2009-07-03 JP JP2009158615A patent/JP4744624B2/en active Active
- 2009-07-03 KR KR1020090060607A patent/KR101009557B1/en active IP Right Grant
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104715501A (en) * | 2013-12-12 | 2015-06-17 | 英特尔公司 | Decoupled Shading Pipeline |
US11875453B2 (en) | 2013-12-12 | 2024-01-16 | Intel Corporation | Decoupled shading pipeline |
KR20150086758A (en) * | 2014-01-20 | 2015-07-29 | (주)넥셀 | Apparatus and methdo for processing graphic |
KR20170033868A (en) * | 2014-09-16 | 2017-03-27 | 인텔 코포레이션 | Deferred coarse pixel shading |
WO2016076982A1 (en) * | 2014-11-10 | 2016-05-19 | Intel Corporation | Compression using index bits in msaa |
US9984475B2 (en) | 2014-11-10 | 2018-05-29 | Intel Corporation | Compression using index bits in MSAA |
Also Published As
Publication number | Publication date |
---|---|
JP4744624B2 (en) | 2011-08-10 |
TWI425440B (en) | 2014-02-01 |
TW201007610A (en) | 2010-02-16 |
KR101009557B1 (en) | 2011-01-18 |
JP2010020764A (en) | 2010-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8605087B2 (en) | Hybrid multisample/supersample antialiasing | |
US8605086B2 (en) | Hybrid multisample/supersample antialiasing | |
KR101009557B1 (en) | Hybrid multisample/supersample antialiasing | |
KR100965637B1 (en) | Extrapolation of nonresident mipmap data using resident mipmap data | |
US9978171B2 (en) | Control of a sample mask from a fragment shader program | |
US9542189B2 (en) | Heuristics for improving performance in a tile-based architecture | |
US9947084B2 (en) | Multiresolution consistent rasterization | |
US9613451B2 (en) | Jittered coverage accumulation path rendering | |
KR101091374B1 (en) | Method and system for performing tessellation in a single pass | |
US9734548B2 (en) | Caching of adaptively sized cache tiles in a unified L2 cache with surface compression | |
US10417817B2 (en) | Supersampling for spatially distributed and disjoined large-scale data | |
US9953455B2 (en) | Handling post-Z coverage data in raster operations | |
US8704836B1 (en) | Distributing primitives to multiple rasterizers | |
US9230363B2 (en) | System, method, and computer program product for using compression with programmable sample locations | |
US9230362B2 (en) | System, method, and computer program product for using compression with programmable sample locations | |
US9396515B2 (en) | Rendering using multiple render target sample masks | |
US9558573B2 (en) | Optimizing triangle topology for path rendering | |
US9721381B2 (en) | System, method, and computer program product for discarding pixel samples | |
US9058672B2 (en) | Using a pixel offset for evaluating a plane equation | |
US7944453B1 (en) | Extrapolation texture filtering for nonresident mipmaps | |
US9013498B1 (en) | Determining a working set of texture maps | |
US9536341B1 (en) | Distributing primitives to multiple rasterizers | |
US8749562B1 (en) | Sharing binding groups between shaders |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20131223 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20141231 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20160104 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20170102 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20180110 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20190102 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20200102 Year of fee payment: 10 |