KR20080010356A - 가속화된 개시 타일 검색 - Google Patents
가속화된 개시 타일 검색 Download PDFInfo
- Publication number
- KR20080010356A KR20080010356A KR1020070075252A KR20070075252A KR20080010356A KR 20080010356 A KR20080010356 A KR 20080010356A KR 1020070075252 A KR1020070075252 A KR 1020070075252A KR 20070075252 A KR20070075252 A KR 20070075252A KR 20080010356 A KR20080010356 A KR 20080010356A
- Authority
- KR
- South Korea
- Prior art keywords
- window
- unit
- graphics
- raster
- binary search
- Prior art date
Links
Images
Classifications
-
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
그래픽 파이프라인의 래스터 단에서의 가속 개시 타일 래스터화 방법이 제공된다. 가속 개시 타일 래스터화 방법은 소정의 생성된 영상을 클립핑하기 위한 윈도우를 정하는 단계와 그래픽 프로세서의 래스터 단에서의 래스터화를 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 가지며 복수의 화소를 포함하는 개시 타일을 결정하기 위하여 상기 윈도우에 관련된 바이너리 검색이 수행된다. 상기 개시 타일에 기초하여, 상기 래스터 단은 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 가진 복수의 인접 타일을 생성함으로써 상기 그래픽 프리미티브를 래스터화한다.
그래픽 프리미티브, 개시 타일, 클립핑 윈도우, 래스터화, 바이너리 검색
Description
본 발명은 일반적으로 하드웨어 가속화된 그래픽 컴퓨터 시스템에 관한 것이다.
최근, 컴퓨터 성능이 향상됨에 따라, 그래픽 시스템은 개인용 컴퓨터, 홈 비디오 게임 컴퓨터, 휴대형 장치 등을 이용하여 그래픽 영상을 더욱 사실적으로 표현할 수 있게 되었다. 그와 같은 그래픽 시스템에서는, 시스템의 스크린 상에서 그래픽 프리미티브들을 "랜더링(rendering)" 또는 묘화(draw)하기 위해 많은 과정을 거치게 된다. "그래픽 프리미티브"는 그래픽 화상의 기본 구성요소로서, 예컨대, 꼭지점이나 다각형 등을 말한다. 이들 그래픽 프리미티브들을 조합하여 렌더링된 영상을 구성한다. 3차원(3-D) 그래픽 렌더링 작업을 수행하는 데는 많은 과정을 거친다.
그래픽 렌더링 작업을 실행하는 데 필요한 연산을 최적화하기 위해 특수한 그래픽 처리 유닛(예컨대, GPU 등)이 개발되어 왔다. GPU는 고속 동작하도록 구성되어 있으며 통상적으로 하나 또는 그 이상의 렌더링 파이프라인(pipeline)을 갖고 있다. 렌더링 파이프라인 각각은 그래픽 명령어/데이터의 고속 실행을 위해 최적 화된 하드웨어 방식 기능 유닛을 많이 갖고 있다. 이 경우에, 그래픽 명령어/데이터는 렌더링 파이프라인의 전단(前端)(front end)으로 공급되고, 연산 결과는 렌더링 파이프라인의 후단(後端)(back end)에서 출력된다. GPU의 하드웨어 방식 기능 유닛, 캐시 메모리, 펌웨어 등은 하위 그래픽 프리미티브(예컨대, "점", "선", "삼각형" 등)에 대해 작용하여 실시간 랜더링된 3-D 영상을 생성하도록 최적화되어 있다.
이와 같은 실시간 랜더링된 3-D 영상의 생성은 래스터 표시 기술을 이용한다. 래스터 표시 기술은 컴퓨터 그래픽 시스템에서 널리 이용되고 있는데, 일반적으로는, 영상을 구성하는 다수 화소의 그리드(grid)가 그래픽 프리미티브에 영향을 받는 메커니즘을 말한다. 그래픽 프리미티브 각각에 대해서, 통상적인 래스터화 시스템은 화소들 간에 옮겨다니면서, 그래픽 프리미티브의 기여에 따라서, 소정의 화소를 '렌더링"할 것인지, 즉 프레임 버퍼나 화소 맵에 써 넣을 것인지를 결정한다. 이어서 이 시스템은 각 화소를 나타내는 디스플레이 버퍼에 데이터를 써 넣는 방법을 결정하게 된다.
그래픽 프리미티브 내의 모든 화소에 대해서 화소들 간에 이동하기 위한 각종 순회(traversal) 알고리즘이 개발되어 있다. 순회 알고리즘은 영상을 구성하는 그래픽 프리미티브를 렌더링할 클립핑 윈도우(clipping window)를 고려할 필요가 있다.
일반적으로, 클립핑 윈도우는 영상의 가시 영역을 나타내는데 이용되는 데이터 구조(예컨대, 직사각형 데이터 구조, 윈도우 클립 평면, 등)로 이루어져 있다. GPU는 그래픽 프리미티브를 적절하게 클립하기 위하여 클립핑 정보를 유지시키기 위한 특수 하드웨어 및/또는 소프트웨어를 포함한다. 관찰(veiwing), 원근 투시(perspective) 및 클립핑 단계에서는 수신된 다각형의 꼭지점과 가장자리에 대해 수 많은 연산 작업을 거쳐야 한다.
그러나, 클립핑 원도우 내에 부분적으로만 존재하는 그래픽 프리미티브를 래스터화하는 데는 문제가 있다. 이 문제를 해결하기 위하여, 종래에는 통상적으로 그래픽 프리미티브를 래스터화한 다음에, 이 래스터화된 그래픽 프리미티브가 덮인 화소들을 단방향에서 발생시킨다. 이와 같은 종래의 단방향 해결책은 일정한 방향에서 화소를 한 행씩 발생시키는 것이다. 이 종래 기술은 클립핑 윈도우의 한 가장자리에서 시작하여 그래픽 프리미티브를 만날 때까지 클립핑 윈도우를 가로질러, 일 라인의 래스터화가 완료될 때까지 그래픽 프리미티브를 횡단하는 것이다. 이를 위해서는 영상 상에서의 순차 이동(sequence shift)을 통해 그래픽 프리미티브의 가장자리를 찾아야 한다. 그래픽 프리미티브의 가장자리가 글리핑 원도우 밖에 있는 경우에는, 이 종래 기술에서는, 개시 가장자리부터 시작하여, 그래픽 프리미티브의 가시 영역(예컨대, 클립핑 윈도우 내부)에 이를 때까지 그래픽 프리미티브를 가로질러야 한다.
따라서, 영상 내에서 궁극적으로는 렌더링하지 않아도 되는 화소까지도 래스터화하기 때문에 엄청난 작업량과 그에 따른 엄청난 수의 클럭 사이클이 소요된다. 이는 전체 3-D 렌더링 처리에 아주 나쁜 영향을 미치게 된다. 이러한 영향은 그래픽 프리미티브의 대부분 영역이 클립핑 윈도우 밖에 있는 경우에는(예컨대, 새도우 잉 애플리케이션(shadowing application)에서 자주 보는 가늘고 긴 삼각형의 경우) 특히 현저하다.
따라서, 필요한 그래픽 렌더링 하드웨어와 이 렌더링 하드웨어에서 소요되는 클럭 사이클을 효율적으로 이용하여, 생성되는 영상에 적합한 화소를 확실하게 발생시킬 수 있는 래스터화 프로세스가 요구된다.
본 발명의 실시예들은 필요한 그래픽 렌더링 하드웨어와 이 렌더링 하드웨어에서 소요되는 클럭 사이클을 효율적으로 이용하여, 생성되는 윈도우 클립 영상에 적합한 화소를 확실하게 발생시킬 수 있는 래스터화 프로세스를 위한 방법과 시스템을 제공한다.
본 발명의 가속화된 개시 타일 래스터화 방법에 따르면, 필요한 그래픽 렌더링 하드웨어와 이 렌더링 하드웨어에서 소요되는 클럭 사이클을 효율적으로 이용하여, 생성되는 윈도우 클립 영상에 적합한 화소를 확실하게 발생시킬 수가 있다.
일 실시예에서, 본 발명은 그래픽 파이프라인(예컨대, GPU)의 래스터 단에서의 가속화된 개시 타일 래스터화 방법으로서 구현된다. 가속화된 개시 타일 래스터화 방법은 소정의 생성된 영상을 클립핑하기 위한 윈도우를 정하는 단계와 그래 픽 프로세서의 래스터 단에서의 래스터화를 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 가지는 개시 타일을 결정하기 위하여 상기 윈도우에 관련된 바이너리 검색이 수행된다. 상기 개시 타일에 기초하여, 상기 래스터 단은 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 가진 복수의 인접 타일을 생성함으로써 상기 그래픽 프리미티브를 래스터화한다. 상기 개시 타일과 상기 인접 타일 각각은 많은 화소(예컨대, 16 x 16 화소, 32 x 32 화소 등)를 포함한다.
바이너리 검색은, 각 단계에서 그래픽 프리미티브(예컨대, 삼각형, 사각형, 선 등)와 교차하는 윈도우의 가장자리를 따른 개시 타일의 범위 중 절반을 제외시킴으로써, 그 가장자리를 따라 특정 타일(예컨대, 개시 타일)을 찾아내는 알고리즘을 포함한다. 예컨대, 바이너리 검색은 타일 범위의 중앙을 찾아내고, 소정의 비교를 통해서 원하는 개시 타일이 그 중앙의 앞에 있는지 아니면 뒤에 있는지를 판단하고, 개시 타일의 위치를 찾아낼 때까지 나머지 절반에 대해서도 동일한 방식으로 검색한다.
이런 식으로, 본 발명의 실시예들은 그래픽 프리미티브의 가장자리를 찾기가 매우 어려운 경우에(예컨대, 그래픽 프리미티브의 대부분이 클립핑 윈도우 밖에 있는 경우에) 클립핑 윈도우 내에 있는 그래픽 프리미티브의 가장자리를 찾아내는 검색 시간을 100배 이상 단축할 수 있다. 따라서, 검색 시간이 단축되기 때문에 바이너리 검색 프로세스는 이어지는 래스터화 작업과 동시에 또는 겹쳐서 실행될 수 있어 실시간 3-D 그래픽 렌더링의 효율을 크게 향상시킬 수가 있다.
본 발명은 첨부된 도면을 참조로 예시적으로 설명되나 이에 한정되는 것은 아니다. 도면에서 동일한 도면부호는 동일한 구성요소를 나타낸다.
이하, 첨부 도면을 참조로 본 발명의 바람직한 실시예들에 대해서 설명한다. 바람직한 실시예들을 통해 본 발명을 설명하지만, 본 발명은 이들 실시예에 한정되는 것은 아님은 물론이다. 본 발명은 첨부된 특허 청구범위에 기재된 본 발명의 본질과 범위로부터 벗어남이 없이 이들 실시예들의 대안, 변형이나 그 등가물들을 포함한다. 더욱이, 본 발명의 실시예들에 대한 이하의 상세한 설명에서 나타나는 특정의 세부사항들은 단순히 본 발명의 철저한 이해를 위해 제공된 것들이며, 당업자라면 그러한 특정의 세부사항이 없더라도 본 발명을 실시할 수 있음을 잘 알 것이다. 기타 경우에, 본 발명의 실시예들의 특징을 불명료하게 하지 않도록 당업계에 공지된 방법, 절차, 구성요소 및 회로들에 대해서는 자세히 설명하지 않는다.
용어의 표기와 명명:
이하의 상세한 설명 중 어떤 부분들은 절차, 단계, 논리 블록, 처리, 기타 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 기호적 표현으로서 나타낸다. 이러한 기재와 표현들은 데이터 처리 기술 분야의 당업자들 간에 그 기술 내용을 효과적으로 전달하기 위한 수단이다. 절차, 컴퓨터에 의해 실행되는 단계, 논리 블록, 프로세스 등은 본 명세서에서는 물론이고 일반적으로도 원하는 결과에 이르는 일괸된 단계나 명령 계열이다. 단계들은 물리적 량의 물리적 조작을 요하는 것들이다. 이러한 물리적 량은 반드시 그러한 것은 아니지만 통상적으로는 컴퓨터 시스템에서 저장, 전송, 조합, 비교, 기타 조작될 수 있는 전기적 또는 자기적 신호 를 형태를 띠고 있다. 때로는 이러한 신호를 비트, 값, 요소(elements), 기호, 문자(characters), 용어(terms), 숫자 등으로 표현하는 것이 주로 일반화를 이유로 편리한 것으로 알려져 있다.
그러나, 이러한 것들과 이와 유사한 용어들은 적당한 물리적 량과 연관되어야 하며, 단순히 이러한 물리적 량에 적용되는 편리한 표지일 뿐이라는 점을 유의해야 한다. 이하의 상세한 설명으로부터 명백한 바와 같이, 특별히 달리 언급하지 않는 한, 본 발명 전체에 걸쳐 발명의 설명에 사용된 "처리", "액세스", "실행", "저장", "렌더링" 등과 같은 용어들은, 컴퓨터 시스템의 레지스터와 메모리 내의 물리적(전자적) 량으로 표현된 데이터를 조작하고 이 데이터를 컴퓨터 시스템 메모리나 레지스터, 기타 유사한 정보 저장부, 전송 또는 표시 장치 내의 물리적 량으로 유사하게 표현되는 다른 데이터로 변환시키는 컴퓨터 시스템(예컨대, 도 1의 컴퓨터 시스템(100))이나 이와 유사한 전자적 컴퓨팅 장치의 동작과 처리를 의미한다.
컴퓨터 시스템 플랫폼:
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)을 나타낸 것이다. 컴퓨터 시스템(100)은 특정의 하드웨어 방식 및 소프트웨어 방식 기능부(functionality)에 실행 플랫폼을 제공하는 본 발명의 실시예에 따른 기본 컴퓨터 시스템의 구성 요소들을 보여주고 있다. 일반적으로, 컴퓨터 시스템(100)은 적어도 하나의 CPU(101), 시스템 메모리(115), 및 적어도 하나의 그래픽 프로세서 유닛(GPU)(110)을 포함한다. CPU(101)는 브릿지 구성요소/메모리 컨트롤러(도시 않됨)를 통해 시스템 메모리(115)에 연결되거나 CPU(101)의 내부 메모리 컨트롤러(도 시 않됨)를 통해 시스템 메모리(115)에 직접 연결될 수 있다. GPU(110)는 디스플레이(112)에 결합된다. 연산 능력을 더 향상시키기 위해서 하나 또는 그 이상의 부가적인 GPU가 시스템(100)에 선택적으로 연결될 수 있다. GPU(110)는 CPU(101)와 시스템 메모리(115)에 연결된다. 시스템(100)은 예컨대 그래픽 렌더링 전용 GPU(110)에 연결된 고성능 범용 CPU(101)를 구비한 데스크톱 컴퓨터 시스템이나 서버 컴퓨터 시스템으로서 구현될 수 있다. 이와 같은 실시예에서는 주변 버스, 특수 그래픽 메모리, IO 장치 등을 추가하는 구성 요소들이 포함될 수 있다. 마찬가지로, 시스템(100)은 휴대형 장치(예컨대, 셀폰(cellphone) 등)나, 예컨대, 미국 워싱튼주 레드몬드시 소재의 마이크로소프트사에서 시판하는 Xbox®이나 일본 도쿄도 소재 소니 컴퓨터 엔트테인먼트사에서 시판하는 플레이스테이션(PlayStation®)과 같은 셋톱 비디오 게임 콘솔 장치로서 구현될 수 있다.
GPU(110)는 별개의 구성 요소로서, 예컨대 커넥터(예컨대, AGP 슬롯, PCI-익스프레스 슬롯 등)를 통해 컴퓨터 시스템(100)에 연결되도록 설계된 별개의 그래픽 카드, (예컨대, 마더보드에 바로 장착되는) 별개의 집 회로 다이(die), 또는 컴퓨터 시스템 칩셋 구성 요소(도시 않됨)의 집적회로 다이 내에 포함된 집적 GPU로서 구현될 수 있다. 선택 사양으로서, 고대역폭의 그래픽 데이터를 저장하기 위한 로컬 그래픽 메모리(114)가 GPU(110)에 연결될 수 있다.
발명의
실시예
:
도 2는 본 발명의 일 실시예에 따른 그래픽 프리미티브(201)와 클립핑 윈도우(202)를 도시한 도이다. 도 2에 도시된 바와 같이, 그래픽 프리미티브(201)는 클립핑 윈도우(202)와 교차하나, 대부분이 클립핑 윈도우(202) 밖에 놓여 있다.
그래픽 프리미티브(201)(이 실시예의 경우, 삼각형 그래픽 프리미티브임)와 클립핑 윈도우(202)는 GPU 그래픽 파이프라인에 대한 래스터화에서 통상적으로 문제가 되는 경우를 예시적으로 보여준다. 그래픽 프리미티브(예컨대, 삼각형, 사각형, 선 등)를 래스터화할 경우, GPU(예컨대, GPU(110))의 래스터화 하드웨어는 주어진 삼각형(예컨대, 삼각형(201)) 내에서 래스터화 처리를 시작할 곳을 결정할 필요가 있다. GPU는 그 래스터화 처리를 위한 개시점을 결정할 필요가 있다.
일반적으로, 래스터화 처리는 삼각형(201)이 영향을 미치고 접촉하고 덮는, 영상을 구성하는 화소의 2D 그리드(예컨대, 클립핑 윈도우(202)를 구성하는 화소의 그리드)의 구성 화소를 만나도록 삼각형(201)을 횡방향에서 이동시키는 단계를 포함한다. GPU의 래스터화 기능부는 여러 가지 많은 횡단 패턴을 이용하여, 어느 화소들이 삼각형(201)에 의해 덮여지는 지를 체계적으로 결정할 수 있다.
일반적으로 여러 가지 횡단 패턴은 삼각형(201)이 덮는 연속한 화소들이 일반적으로 순차적으로 평가된다는 점에서 공통의 특징을 공유하고 있다. 예컨대, 일 실시예에서, 화소는 앞에서 뒤로, 좌측에서 우측으로 또는 우측에서 좌측으로(예컨대, 한 번에 한 행씩, 한 번에 한 열씩, 등) 선형적으로 스캐닝하는 식으로 검사된다. 대안으로서, 일 실시예에서, 좌우 교대식 횡단 패턴이 이용될 수 있다. 여기서, "좌우 교대식"이란, 마치 농부가 밭을 갈거나 밭에서 풀을 베는 것처럼, 한 축을 따라 좌에서 우로 스캐닝하고, 한 행의 스캐닝이 끝나면 그 직교 축을 따라 내려와 다시 우에서 좌로 스캐닝하는 식으로 하여 2D 영역 상의 모든 화소를 만 나게 되는 횡단 패턴을 말한다.
삼각형(201)의 화소를 래스터화하기 위한 개시점은 GPU(110)에 의해 구현된 횡단 패턴의 형태에 상관없이 결정될 필요가 있다. 전적으로 클립핑 윈도우(202) 내에만 존재하는 삼각형(또는, 예컨대 다른 형태의 그래픽 프리미티브)의 경우에는 개시점을 가려내는 것은 쉽다. 개시점을 결정하는 것은 예컨대 삼각형의 꼭지점들 중 하나를 개시점으로 이용하는 것을 포함한다. 꼭지점들이 클립된 바운딩 박스(bounding box) 내에 놓여 있지 않고, 또 통상적으로 개시점으로 이용되는 바운딩 박스의 코너가 삼각형 밖에 있는 경우에는 문제가 어렵게 된다.
일 실시예에서, GPU(110)는 그 횡단 패턴에서 타일(tile), 즉 화소 그룹을 이용한다. 예컨대, 라인을 횡단한다는 것은 GPU(110)가 그 횡단 라인을 따라 연속한 타일들(예컨대, 8 x 8 화소, 16 x 16 화소, 32 x 32 화소 등)을 가로지른 다는 것이다. 삼각형과 교차하는 최초의 타일이 개시점이 된다. 대안으로서, GPU(110)는 복수의 샘플점들로 이루어진 타일을 이용할 수 있다. 이 경우, 타일의 각 화소는 4, 8, 16 등과 같은 갯수의 샘플점을 포함한다.
본 발명의 실시예들은 클립핑 원도우(202)에 의해 부분적으로 클립된 삼각형(201)과 같은 클립된 그래픽 프리미티브의 경우와 같이 문제가 되는 경우를 다루는데 특히 적합하다. 예컨대, 삼각형이 대부분 클립핑 윈도우(202) 밖에 있는 경우에는, 삼각형의 바운딩 박스가 스크린의 아주 큰 영역을 커버한다 하더라도 실제로는 그 삼각형의 극히 일부만이 그 스크린 내에 있게 될 수 있다. 도 2에는 이것이 클립핑 윈도우(202)의 상단에서 보이는 삼각형(201)의 작은 부분(203)으로 도시 되어 있고, 삼각형(201)의 바운딩 박스(205)가 클립핑 윈도우(202)의 상단의 대부분을 커버하고 있는 것을 보여주고 있다.
본 발명의 실시예들은 클립핑 윈도우(202) 내에 있는 삼각형(201)의 작은 부분(203)의 래스터화를 위한 개시 타일을 신속하게 찾아낼 수 있다. 종래에는, 래스터화 프로세스는 삼각형의 바운딩 박스의 먼 좌측 가장자리를 가로질러 클립핑 윈도우(202)의 좌측 가장자리에 도달한 다음에, 클립핑 윈도우(202)의 상단을 가로질러 삼각형(201)을 만날 때까지 한 타일씩 스크린의 상단을 횡단해야 했었다. 이것은 GPU 래스터화기가 스크린 폭의 절반 이상을 가로질러 간 후에야 삼각형을 만날 수 있으므로 시간이 매우 많이 걸리는 일이 된다. 종래 기술에서는, 삼각형 중 실제로 포함된 부분인 어떤 타일을 만날 때까지 스크린의 상단을 가로 질러가면서 모든 타일을 체크해야 했었다. 이와 달리, 본 발명의 실시예들은 GPU 사이클이나 래스터화 하드웨어를 낭비하지 않고 개시 타일을 신속하게 찾아내는 가속화된 개시 타일 검색 알고리즘을 구현한다.
계속 도 2를 참조로 설명하면, 일 실시예에서, 가속화된 개시 타일 래스터화 프로세스는 그래픽 파이프라인의 래스터 단(예컨대, GPU(110)) 내에서 구현된다. 예컨대, 삼각형(201)의 경우에, 생성된 영상을 클립핑하는 클립핑 윈도우(201)의 범위를 정하고 래스터 단에서의 래스터화를 위해 그래픽 프리미티브(201)를 수신할 때에, 개시 타일을 신속하게 찾아내기 위한 바이너리 검색이 실시된다. 이 바이너리 검색은 클립핑 원도우를 구성하는 타일들(예컨대, 1024 x 768, 1600 x 1200, 1920 x 1200, 등)을 검색하여 개시 타일을 결정한다는 점에서 클립핑 원도우와 관 계있다. 전술한 바와 같이, 개시 타일은 삼각형(201) 중 적어도 일부 영역을 갖고 있다. 개시 타일에 기초하여, 래스터 단은 횡단 라인을 따라 복수의 타일을 생성함으로써 삼각형(201)을 래스터화한다. 각 타일은 삼각형(201)을 적어도 부분적으로 커버하거나 이와 접촉한다.
도 3은 본 발명의 실시예들에서 수행된, 삼각형(201)을 래스터화하기 위한 바이너리 검색을 나타낸 도이다. 바이너리 검색은, 각 단계에서 삼각형(201)과 교차하는 클립핑 윈도우(202)의 가장자리를 따른 개시 타일의 범위 중 절반을 제외시킴으로써, 그 가장자리를 따라 특정 타일(예컨대, 개시 타일)을 찾아내는 다단계 알고리즘을 포함한다. 예컨대, 도 3의 실시예에서, 바이너리 검색은 횡단 라인(301)을 구성하는 타일 범위의 중앙을 찾아내고, 소정의 비교를 통해서 원하는 개시 타일이 그 중앙의 앞에 있는지 아니면 뒤에 있는지를 판단하고, 개시 타일의 위치를 찾아낼 때까지 나머지 절반에 대해서도 동일한 방식으로 검색한다. 각 단계에서, 나머지 범위는 바이너리 검색 알고리즘이 원하는 개시 타일에 촛점을 맞추어 가면서 반으로 나누어진다. 도 3은 상기 프로세스, 즉, 바이너리 검색이 중앙선(305)으로 나타난 제1 중앙을 검사하고, 원하는 개시 타일이 우측에 있음을 판단하고, 선(306)으로 나타난 제2 중앙을 검사하고, 개시 타일이 더 우측에 있음을 판단하는 식의 프로세스를 보여주고 있다.
이런 식으로, 본 발명의 실시예들에 의해 구현되는 횡단 라인을 따른 바이너리 검색은 그래픽 프리미티브의 가장자리를 찾기가 매우 어려운 경우에(예컨대, 그래픽 프리미티브의 대부분이 클립핑 윈도우 밖에 있는 경우에) 클립핑 윈도우 내에 있는 그래픽 프리미티브의 가장자리(예컨대, 삼각형(201)의 작은 부분(203))를 찾아내는 검색 시간을 100배 이상 단축할 수 있다. 따라서, 검색 시간이 단축되기 때문에 바이너리 검색 프로세스는 이어지는 래스터화 작업과 동시에 또는 겹쳐서 실행될 수 있어 실시간 3-D 그래픽 렌더링의 효율을 크게 향상시킬 수가 있다. 그 외에도, 검색 시간이 단축되기 때문에, 공화소(empty pixel)를 가로지르는데 드는 시간을 낭비함이 없이, 윈도우 클립된 영상에 관계되는 화소를 생성하는데 있어 필요한 그래픽 렌더링 하드웨어와 그 렌더링 하드웨어가 소모하는 클록 사이클을 효율적으로 이용할 수 있다.
본 발명의 실시예들에 의해 구현되는 바이너리 검색은 실제로는 로그방식(logarithmic)이며, logn 시간으로 실행됨에 유의해야 한다. 구체적으로, 원하는 개시 타일을 찾아내는데는 1+log2N 반복이 필요하다. 여기서, N은 횡단 라인을 따른 타일의 총수(예컨대, 1920 x 1200 윈도우 또는 영상의 상단 가장자리를 따른 60개의 32 x 32 타일이 있는 경우)이다. 바이너리 검색은 종래의 선형 검색보다 훨씬 고속이다. 종래의 선형 검색의 경우에는 원하는 개시 타일이 무작위로 분포되어 있는 경우에 평균 N/2번의 비교 동작이 필요하며, 개시 타일이 테스트되는 최종 타일인 최악의 경우에는 N번의 비교 동작이 필요할 것이다.
도 4는 본 발명의 일 실시예에 따라 특정 타일 또는 특정 화소들이 삼각형(201)의 좌측, 우측 또는 그 내에 있는지를 결정하기 위하여 GPU(110)에 의해 평가되는 꼭지점 방정식의 동작을 설명하는 도이다. 일 실시예에서, 삼각형(201)의 꼭지점들에 기초한 꼭지점 방정식은 삼각형(201)의 가장자리의 위치를 계산하는데 이용된다. 꼭지점 방정식은 횡단 라인을 따른 주어진 화소가 삼각형(201)의 주어진 가장자리의 좌측, 우측 또는 그 내에 있는지를 나타낸다. 따라서, 예컨대, 가장자리 방정식은 횡단 라인의 부분(401) 상의 화소(예컨대, 타일, 샘플 등)는 삼각형(201)의 좌측에 있고, 횡단 라인의 부분(402) 상의 화소는 삼각형(201) 내에 있고, 횡단 라인의 부분(403) 상의 화소는 삼각형(201)의 우측에 있음을 나타낸다.
본 실시예는 윈도우(202)의 상단 가장자리를 따른 바이너리 검색을 수행하는 것에 대해 설명하였지만, 본 발명의 실시예들은 원도우(202)의 다수 가장자리를 따른 바이너리 검색을 수행할 수도 있음에 유의해야 한다. 이에 따르면, 그래픽 프리미티브가 윈도우(202)의 좌측 가장자리, 우측 가장자리 또는 하단 밖으로 뻗어 나온 경우에도 바이너리 검색을 효율적으로 수행할 수가 있다. 예컨대, 일 실시예에서, 먼저 제1 가장자리(예컨대, 윈도우(202)의 상단 또는 하단 가장자리)에 대해, 그 다음에 제2 가장자리(예컨대, 윈도우(202)의 좌측 또는 우측 가장자리)에 대해 바이너리 검색을 수행하여 원하는 개시 타일의 위치를 아주 효율적으로 찾아낼 수 있다.
도 5는 본 발명의 일 실시예에 따라 바이너리 검색을 통해 개시 타일(501)의 위치를 결정하는 방식과 연속한 인접 타일들이 삼각형(201)에 반복되는 방식을 설명하는 도이다. 전술한 바와 같이, 바이너리 검색은 클립핑 윈도우(202) 내에 있는 삼각형(201)의 부분에 대해 개시 타일(501)을 찾아내는데 이용된다. 이어서, 개시 타일(501)에 기초하여, 도시된 바와 같이 횡단 라인을 따른 다수의 타일을 생 성함으로써 삼각형(201)의 나머지 부분이 래스터화된다. 생성된 다수의 타일 각각은 삼각형(201)의 적어도 부분적인 커버 영역을 갖고 있다. 도 5의 실시예는 좌우 교대 횡단 패턴을 보여주고 있음에 유의한다.
따라서, 전술한 바와 같이, 검색 시간이 단축될 수 있기 때문에 바이너리 검색 프로세스는 후속되는 래스터화 작업과 동시에 또는 겹쳐서 실행될 수가 있다. 예컨대, 개시 타일(501)의 위치를 찾으면, 바이너리 검색 알고리즘은 삼각형(201)의 나머지 부분이 래스터화됨에 따라 후속 그래픽 프리미티브에 대해 후속 개시 타일을 찾아낼 수 있다. 후속 개시 타일에 대한 바이너리 검색은 삼각형(201)의 나머지 타일들을 스탬핑 아웃하면서(stamp out) 수행될 수 있다. 이와 같은 기능부의 중복 동작에 의해서 그래픽 하드웨어는 계속해서 동작하여 하나의 래스터화 기능(예컨대, 개시 타일 검색)을 완료하고 나면 후속 래스터화 기능(예컨대, 삼각형 밖에 있는 다수의 타일의 래스터화)을 진행할 수 있다.
도 6은 본 발명의 일 실시예에 따른 타일(601)의 치수를 나타낸 도이다. 도 6에 도시된 바와 같이, 타일(601)은 코너들(602-605)을 포함한다. 주어진 애플리케이션의 특정 요건에 따라서, 코너들(602-605) 중 어느 하나에서의 바이너리 검색 동안에 타일(602)이 평가될 수 있다. 일 실시예에서, 바이너리 검색 프로세스 중에 그래픽 프리미티브와 최초로 교차할 가능성이 가장 큰 가장자리(예컨대, 가장자리(607))를 따라 타일이 평가된다. 예컨대, 전술한 삼각형 가장자리 방정식에 따라 타일의 가장자리(607)를 평가하여, 전술한 바와 같이, 다음번 바이너리 검색 중앙이 좌측, 우측, 상부 또는 하부에 있는지를 판단하게 된다.
본 발명의 실시예들은 화소의 타일 이외에도 개별적인 화소나 화소 내의 샘플 어레이에 대해서도 적용될 수 있으며, 타일의 크기는 특정의 애플리케이션의 필요에 따라서 임의로 설정될 수 있음(예컨대, 그래픽 드라이버 등으로 프로그램하는 것)에 유의한다. 그 외에도, 검색될 소정 클립핑 윈도우의 가장자리의 수, 검색될 제1 및 제2 클립핑 윈도우 가장자리, 및 평가될 타일의 가장자리나 코너(들)는 특정의 애플리케이션의 필요에 따라서 프로그램될 수 있음(예컨대, 그래픽 드라이버 등으로 프로그램하는 것)에 유의한다.
도 7은 본 발명의 일 실시예에 따른 GPU(110)의 내부 구성요소를 나타낸 도이다. 도 7에 도시된 바와 같이, GPU(110)는 설정 엔진(701)과 래스터화기 유닛(702)을 포함한다. 본 실시예에서, 본 발명의 기능부는 래스터화기 유닛(702)의 하드웨어와 소프트웨어 내에 구현된다. 일반적으로, 래스터화기 유닛(702)은 설정 엔진(701)으로부터 수신된 꼭지점 기반 기술들(descriptions based on vertices)을 가장자리 기반 기술들(descriptions based on edge)로 변환한다. 이어서, 래스터화기 유닛(702)은 가장자리 기반 기술들을 실제 화소 기술들을 구성하는 충전 영역들(filled areas)(예컨대, 화소 영역들, 화소 서브 샘플들 등)로 변환한다. 이어서, 화소 기술들은 GPU(110) 내의 다른 유닛으로 보내져, 여기서 더 처리되고 렌더링된다.
일 실시예에서, 래스터화기 유닛(702)은 정밀 래스터부(704)와 개략 래스터부(703)를 포함한다. 개략 래스터부(703) 내에는 스텝퍼(stepper) 유닛(705)이 구비되어 전술한 가속화된 개시 타일 검색 기능부를 구현한다. 개시 타일을 찾은 후 에, 개략 래스터 유닛(703)은 타일의 그리드를 신속하게 검색하여 목적하는 타일(예컨대, 그래픽 프리미티브가 덮는 타일)을 찾아낸다. 목적하는 타일을 찾으면, 정밀 래스터부(704)가 그래픽 프리미티브가 덮고 있는 타일을 개별적으로 찾아낸다. 그러므로, 본 실시예에서는 스텝퍼 유닛(705)는 원하는 개시 타일을 찾아내고, 개략 래스터부(703)는 타일을 이용하여 화소 그리드를 신속하게 검색하고, 정밀 래스터부(704)는 개략 래스터부(703)에서 생성된 정보를 이용하여 그래픽 프리미티브가 덮고 있는 화소를 개별적으로 찾아내어 미세 입도(fine granularity) 래스터화를 구현한다.
계속해서 도 7을 참조로 설명하면, GPU(110)는 아주 자주 사용되는 그래픽 렌더링 데이터의 고속 저지연(low latency) 저장을 위한 캐시 메모리(721)를 더 포함한다. 이러한 그래픽 렌더링 데이터는 통상적으로 텍스쳐(texture) 정보, 꼭지점 정보, 색상 등을 포함한다. 캐시 메모리(721)는 로컬 그래픽 메모리(114)에 연결되어 있다. 캐시 메모리(721)는 하나 또는 그 이상의 캐시 유지 기구(chache maintenance mechanism)을 이용하여 로컬 그래픽 메모리(114)와의 일관성을 유지한다. 화살표(740)는 GPU(110)와 시스템 메모리(예컨대, 도 1에 도시된 메모리(115)) 간의 통신 경로를 나타낸 것이다.
이상, 본 발명의 구체적인 실시예들이 예시적으로 도시되고 설명되었다. 본 실시예들은 본 발명을 본 명세서에 개시된 특정 내용으로 한정하는 하는 것은 아니며, 본 실시예들은 상기 교시로부터 다양하게 수정 변경될 수 있다. 본 실시예들은 본 발명의 원리와 그 실제 적용을 가장 잘 설명하기 위해 선택되어 설명된 것이 다. 따라서 당업자라면 본 발명과 실시예들을 특정 용도에 맞게 여러 가지로 변형하여 활용할 수 있을 것이다. 발명의 범위는 첨부된 청구범위와 그 균등물에 의해 정해진다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 나타낸 도.
도 2는 본 발명의 일 실시예에 따른 그래픽 프리미티브(graphics primitive)와 클립핑 윈도우(202)를 나타낸 도.
도 3은 본 발명의 실시예들에서 수행된, 삼각형(201)을 래스터화(rasterizing) 하기 위한 바이너리 검색을 나타낸 도.
도 4는 본 발명의 일 실시예에 따라 특정 타일 또는 특정 화소들이 삼각형의 좌측, 우측 또는 그 내에 있는지를 결정하기 위하여 GPU에 의해 평가되는 꼭지점 방정식의 동작을 설명하는 도.
도 5는 본 발명의 일 실시예에 따라 바이너리 검색을 통해 개시 타일의 위치를 결정하는 방식과 삼각형 밖에서 연속한 타일들이 반복되는 방식을 설명하는 도.
도 6은 본 발명의 일 실시예에 따른 타일의 치수를 나타낸 도.
도 7은 본 발명의 일 실시예에 따른 GPU의 내부 구성요소를 나타낸 도.
***도면의 주요부분에 대한 부호의 설명***
100: 컴퓨터 시스템 101: CPU
110: GPU 112: 디스플레이
114: 로컬 그래픽 메모리 115: 메모리
701: 설정 엔진 702: 래스터화기
703: 개략 래스터 704: 정밀 래스터
705: 스텝퍼 721: 캐시 메모리
Claims (20)
- 그래픽 파이프라인(pipeline)의 래스터 단(raster stage)에서의 가속화된 개시 타일(accelerated start tile) 래스터화 방법으로서,생성된 영상을 클립핑(clipping)하기 위한 윈도우를 정하는 단계;그래픽 프로세서의 래스터 단에서의 래스터화를 위한 그래픽 프리미티브(graphics primitive)를 수신하는 단계;상기 그래픽 프리미티브의 적어도 부분적 커버 영역(coverage)을 가지며 복수의 화소들을 포함하는 개시 타일을 결정하기 위하여 상기 윈도우에 관련된 바이너리 검색(binary search)을 수행하는 단계; 및상기 개시 타일에 기초하여, 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 갖는 복수의 인접 타일들을 생성함으로써 상기 그래픽 프리미티브를 래스터화하는 단계를 포함하는 가속화된 개시 타일 래스터화 방법.
- 제1항에 있어서,상기 그래픽 프리미티브의 일부는 상기 윈도우 밖에 있는 가속화된 개시 타일 래스터화 방법.
- 제1항에 있어서,상기 바이너리 검색은 상기 윈도우의 제1 가장자리에 대해 수행되고, 이어서 상기 윈도우의 제2 가장자리에 대해 수행되는 가속화된 개시 타일 래스터화 방법.
- 제1항에 있어서,상기 윈도우의 상기 제1 가장자리는 상기 윈도우의 상단인 가속화된 개시 타일 래스터화 방법.
- 제4항에 있어서,상기 윈도우의 상기 제2 가장자리는 상기 윈도우의 좌측 가장자리 또는 상기 윈도우의 우측 가장자리인 가속화된 개시 타일 래스터화 방법.
- 제1항에 있어서,상기 바이너리 검색은 상기 래스터 단 내의 스텝퍼(stepper) 유닛을 이용하여 구현되는 가속화된 개시 타일 래스터화 방법.
- 제6항에 있어서,상기 스텝퍼 유닛은 상기 그래픽 프리미티브의 래스터화와 병렬로 상기 바이너리 검색을 실시하도록 구성된 가속화된 개시 타일 래스터화 방법.
- 제7항에 있어서,상기 바이너리 검색은 상기 그래픽 프리미티브의 전(prior) 부분의 동시적인 래스터화와 겹치도록 병렬로 실시되는 가속화된 개시 타일 래스터화 방법.
- 제1항에 있어서,상기 그래픽 프리미티브를 적어도 부분적으로 덮는 복수의 타일로부터 덮인 화소들을 결정하기 위하여 상기 바이너리 검색이 개략(coarse) 래스터 유닛에서 실시되고, 제2 수준의 래스터화가 정밀(fine) 래스터 유닛에서 실시되는 가속화된 개시 타일 래스터화 방법.
- 그래픽 프로세서 유닛(GPU: graphics processor unit)으로서,그래픽 프리미티브를 구성하는 다각형 기술들(polygon descriptions)을 생성하기 위한 설정 유닛; 및상기 설정 유닛에 연결되고 상기 그래픽 프리미티브를 래스터화하기 위한 래스터 유닛을 포함하고,상기 래스터 유닛은 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 가지며 복수의 화소들을 포함하는 개시 타일을 결정하기 위하여 클립핑 윈도우에 관련된 바이너리 검색을 수행하고, 상기 래스터 유닛은 상기 개시 타일에 기초하여, 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 갖는 복수의 인접 타일들을 생성함으로써 상기 그래픽 프리미티브를 래스터화하는 GPU.
- 제10항에 있어서,상기 그래픽 프리미티브의 일부는 상기 윈도우 밖에 있는 GPU.
- 제10항에 있어서,상기 바이너리 검색은 상기 윈도우의 제1 가장자리에 대해 수행되고, 이어서 상기 윈도우의 제2 가장자리에 대해 수행되는 GPU.
- 제10항에 있어서,상기 바이너리 검색을 구현하기 위해 상기 래스터 단내에 구비된 스텝퍼 유닛을 더 포함하는 GPU.
- 제13항에 있어서,상기 스텝퍼 유닛은 상기 그래픽 프리미티브의 전 부분의 동시적인 래스터화와 겹치도록 상기 바이너리 검색을 병렬로 실시하는 GPU.
- 제14항에 있어서,개략 래스터 유닛; 및정밀 래스터 유닛을 더 포함하고,상기 그래픽 프리미티브를 적어도 부분적으로 덮는 복수의 타일들로부터 덮인 화소들을 결정하기 위하여, 상기 스텝퍼 유닛은 상기 개략 래스터 유닛 내에 구현되고 상기 정밀 래스터 유닛은 제2 수준의 래스터화를 수행하는 GPU.
- 컴퓨터 시스템으로서,시스템 메모리;상기 시스템 메모리에 연결된 중앙 처리 장치;상기 중앙 처리 장치에 통신가능하게 연결된 그래픽 프로세서 유닛;그래픽 프리미티브를 구성하는 다각형 기술들을 생성하기 위한 설정 유닛; 및상기 설정 유닛에 연결되고 상기 그래픽 프리미티브를 래스터화하기 위한 래스터 유닛을 포함하고,상기 래스터 유닛은 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 가지며 복수의 화소들을 포함하는 개시 타일을 결정하기 위하여 클립핑 윈도우에 관련된 바이너리 검색을 수행하고, 상기 래스터 유닛은 상기 개시 타일에 기초하여, 상기 그래픽 프리미티브의 적어도 부분적 커버 영역을 갖는 복수의 인접 타일들을 생성함으로써 상기 그래픽 프리미티브를 래스터화하는 컴퓨터 시스템.
- 제16항에 있어서,상기 그래픽 프리미티브의 일부는 상기 윈도우 밖에 있는 컴퓨터 시스템.
- 제17항에 있어서,상기 바이너리 검색은 상기 윈도우의 제1 가장자리에 대해 수행되고, 이어서 상기 윈도우의 제2 가장자리에 대해 수행되는 컴퓨터 시스템.
- 제18항에 있어서,상기 바이너리 검색을 구현하기 위해 상기 래스터 단내에 구비된 스텝퍼 유닛을 더 포함하고, 상기 바이너리 검색은 상기 그래픽 프리미티브의 전 부분의 동시적인 래스터화와 겹치도록 병렬로 실시되는 컴퓨터 시스템.
- 제19항에 있어서,개략 래스터 유닛; 및정밀 래스터 유닛을 더 포함하고,상기 그래픽 프리미티브를 적어도 부분적으로 덮는 복수의 타일들로부터 덮인 화소들을 결정하기 위하여, 상기 스텝퍼 유닛은 상기 개략 래스터 유닛 내에 구현되고 상기 정밀 래스터 유닛은 제2 수준의 래스터화를 수행하는 컴퓨터 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/494,407 US7843468B2 (en) | 2006-07-26 | 2006-07-26 | Accellerated start tile search |
US11/494,407 | 2006-07-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080010356A true KR20080010356A (ko) | 2008-01-30 |
KR100893637B1 KR100893637B1 (ko) | 2009-04-17 |
Family
ID=38985726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070075252A KR100893637B1 (ko) | 2006-07-26 | 2007-07-26 | 가속화된 개시 타일 검색 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7843468B2 (ko) |
JP (1) | JP4598031B2 (ko) |
KR (1) | KR100893637B1 (ko) |
CN (1) | CN101114375B (ko) |
TW (1) | TWI346911B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017112158A1 (en) * | 2015-12-21 | 2017-06-29 | Intel Corporation | Rasterization based on partial spans |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266254B2 (en) | 2002-02-13 | 2007-09-04 | Canon Kabushiki Kaisha | Data processing apparatus, image processing apparatus, and method therefor |
US8732644B1 (en) | 2003-09-15 | 2014-05-20 | Nvidia Corporation | Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits |
US8872833B2 (en) | 2003-09-15 | 2014-10-28 | Nvidia Corporation | Integrated circuit configuration system and method |
US8775997B2 (en) * | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for testing and configuring semiconductor functional circuits |
US8711161B1 (en) | 2003-12-18 | 2014-04-29 | Nvidia Corporation | Functional component compensation reconfiguration system and method |
US8723231B1 (en) | 2004-09-15 | 2014-05-13 | Nvidia Corporation | Semiconductor die micro electro-mechanical switch management system and method |
US8711156B1 (en) | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
US8427496B1 (en) | 2005-05-13 | 2013-04-23 | Nvidia Corporation | Method and system for implementing compression across a graphics bus interconnect |
US8698811B1 (en) | 2005-12-15 | 2014-04-15 | Nvidia Corporation | Nested boustrophedonic patterns for rasterization |
US9123173B2 (en) * | 2005-12-15 | 2015-09-01 | Nvidia Corporation | Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline |
US8390645B1 (en) | 2005-12-19 | 2013-03-05 | Nvidia Corporation | Method and system for rendering connecting antialiased line segments |
US9117309B1 (en) | 2005-12-19 | 2015-08-25 | Nvidia Corporation | Method and system for rendering polygons with a bounding box in a graphics processor unit |
US8928676B2 (en) | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
US9070213B2 (en) * | 2006-07-26 | 2015-06-30 | Nvidia Corporation | Tile based precision rasterization in a graphics pipeline |
US8427487B1 (en) * | 2006-11-02 | 2013-04-23 | Nvidia Corporation | Multiple tile output using interface compression in a raster stage |
US8482567B1 (en) | 2006-11-03 | 2013-07-09 | Nvidia Corporation | Line rasterization techniques |
US8724483B2 (en) | 2007-10-22 | 2014-05-13 | Nvidia Corporation | Loopback configuration for bi-directional interfaces |
US8009169B2 (en) * | 2007-11-09 | 2011-08-30 | Vivante Corporation | Efficient tile-based rasterization |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8681861B2 (en) | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
CN101739703B (zh) * | 2008-11-10 | 2012-05-30 | 富士通株式会社 | 用于对三角形进行栅格化的方法和系统 |
US20110063306A1 (en) | 2009-09-16 | 2011-03-17 | Nvidia Corporation | CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE |
US9331869B2 (en) | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US9171350B2 (en) | 2010-10-28 | 2015-10-27 | Nvidia Corporation | Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up |
US8339409B2 (en) * | 2011-02-16 | 2012-12-25 | Arm Limited | Tile-based graphics system and method of operation of such a system |
US8786633B2 (en) | 2011-10-18 | 2014-07-22 | Honeywell International, Inc. | System and method for dynamically rendering bounded region labels on a moving map display |
CN102819820B (zh) * | 2012-08-14 | 2014-03-12 | 长沙景嘉微电子股份有限公司 | 基于分块渲染的gpu中多管线渲染的实现方法 |
US9591309B2 (en) | 2012-12-31 | 2017-03-07 | Nvidia Corporation | Progressive lossy memory compression |
US9607407B2 (en) | 2012-12-31 | 2017-03-28 | Nvidia Corporation | Variable-width differential memory compression |
US9710894B2 (en) | 2013-06-04 | 2017-07-18 | Nvidia Corporation | System and method for enhanced multi-sample anti-aliasing |
CN108022201B (zh) * | 2017-11-24 | 2021-09-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种三角形图元并行光栅化定序方法 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4208810A (en) * | 1978-09-11 | 1980-06-24 | The Singer Company | Clipping polygon faces through a polyhedron of vision |
US4918626A (en) * | 1987-12-09 | 1990-04-17 | Evans & Sutherland Computer Corp. | Computer graphics priority system with antialiasing |
EP0431776A3 (en) * | 1989-11-17 | 1992-11-19 | Digital Equipment Corporation | Method of drawing a line segment in a graphics system |
US5543935A (en) * | 1994-11-18 | 1996-08-06 | Xerox Corporation | Halftoning method using space filling curves |
JP2915363B2 (ja) * | 1996-11-05 | 1999-07-05 | 核燃料サイクル開発機構 | 空間探索システム |
US6611272B1 (en) * | 1998-07-02 | 2003-08-26 | Microsoft Corporation | Method and apparatus for rasterizing in a hierarchical tile order |
US7068272B1 (en) * | 2000-05-31 | 2006-06-27 | Nvidia Corporation | System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline |
JP2000089742A (ja) * | 1998-09-11 | 2000-03-31 | Canon Inc | 画像処理方法及び装置及びシステム |
GB2343603B (en) * | 1998-11-06 | 2003-04-02 | Videologic Ltd | Shading 3-dimensional computer generated images |
US6323874B1 (en) * | 1999-02-08 | 2001-11-27 | Silicon Graphics, Inc. | System and method for rendering an image |
US6597356B1 (en) | 2000-08-31 | 2003-07-22 | Nvidia Corporation | Integrated tessellator in a graphics processing unit |
US6938176B1 (en) | 2001-10-05 | 2005-08-30 | Nvidia Corporation | Method and apparatus for power management of graphics processors and subsystems that allow the subsystems to respond to accesses when subsystems are idle |
US7075542B1 (en) | 2002-11-12 | 2006-07-11 | Ati Technologies Inc. | Selectable multi-performance configuration |
WO2004072907A1 (en) | 2003-02-13 | 2004-08-26 | Koninklijke Philips Electronics N.V. | Computer graphics system and method for rendering a computer graphic image |
US6956579B1 (en) | 2003-08-18 | 2005-10-18 | Nvidia Corporation | Private addressing in a multi-processor graphics processing system |
US7418606B2 (en) | 2003-09-18 | 2008-08-26 | Nvidia Corporation | High quality and high performance three-dimensional graphics architecture for portable handheld devices |
JP4064339B2 (ja) * | 2003-12-19 | 2008-03-19 | 株式会社東芝 | 描画処理装置、描画処理方法および描画処理プログラム |
JP2004139625A (ja) | 2004-01-27 | 2004-05-13 | Sony Computer Entertainment Inc | データ処理装置およびデータ処理方法 |
US7154500B2 (en) * | 2004-04-20 | 2006-12-26 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer |
US8194071B2 (en) | 2004-05-24 | 2012-06-05 | St-Ericsson Sa | Tile based graphics rendering |
US7505043B2 (en) * | 2004-08-30 | 2009-03-17 | Qualcomm Incorporated | Cache efficient rasterization of graphics data |
JP4218840B2 (ja) | 2005-05-27 | 2009-02-04 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理装置および描画処理方法 |
US7483029B2 (en) | 2005-12-15 | 2009-01-27 | Nvidia Corporation | GPU having raster components configured for using nested boustrophedonic patterns to traverse screen areas |
US8928676B2 (en) | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
-
2006
- 2006-07-26 US US11/494,407 patent/US7843468B2/en active Active
-
2007
- 2007-07-17 TW TW096126046A patent/TWI346911B/zh active
- 2007-07-24 CN CN200710136338XA patent/CN101114375B/zh not_active Expired - Fee Related
- 2007-07-26 KR KR1020070075252A patent/KR100893637B1/ko active IP Right Grant
- 2007-07-26 JP JP2007194799A patent/JP4598031B2/ja active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017112158A1 (en) * | 2015-12-21 | 2017-06-29 | Intel Corporation | Rasterization based on partial spans |
US10269154B2 (en) | 2015-12-21 | 2019-04-23 | Intel Corporation | Rasterization based on partial spans |
Also Published As
Publication number | Publication date |
---|---|
US20080024522A1 (en) | 2008-01-31 |
JP4598031B2 (ja) | 2010-12-15 |
TW200820127A (en) | 2008-05-01 |
US7843468B2 (en) | 2010-11-30 |
CN101114375B (zh) | 2012-09-26 |
CN101114375A (zh) | 2008-01-30 |
JP2008102904A (ja) | 2008-05-01 |
TWI346911B (en) | 2011-08-11 |
KR100893637B1 (ko) | 2009-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100893637B1 (ko) | 가속화된 개시 타일 검색 | |
KR100902974B1 (ko) | 그래픽 파이프 라인에서의 타일 기반 정밀 래스터화 | |
US7483029B2 (en) | GPU having raster components configured for using nested boustrophedonic patterns to traverse screen areas | |
US8537168B1 (en) | Method and system for deferred coverage mask generation in a raster stage | |
US8928676B2 (en) | Method for parallel fine rasterization in a raster stage of a graphics pipeline | |
US7791617B2 (en) | Method and system for rendering polygons having abutting edges | |
US7663621B1 (en) | Cylindrical wrapping using shader hardware | |
US6437780B1 (en) | Method for determining tiles in a computer display that are covered by a graphics primitive | |
US20050259100A1 (en) | Graphic processing apparatus, graphic processing system, graphic processing method and graphic processing program | |
US8427487B1 (en) | Multiple tile output using interface compression in a raster stage | |
US8325203B1 (en) | Optimal caching for virtual coverage antialiasing | |
US20220148125A1 (en) | Tiling a Primitive in a Graphics Processing System by Edge-Specific Testing of a Subset of Tiles in a Rendering Space | |
US20160314618A1 (en) | Tiling a primitive in a graphics processing system | |
US9117309B1 (en) | Method and system for rendering polygons with a bounding box in a graphics processor unit | |
US8508544B1 (en) | Small primitive detection to optimize compression and decompression in a graphics processor | |
US8773447B1 (en) | Tag logic scoreboarding in a graphics pipeline | |
US7692654B1 (en) | Nondeterministic pixel location and identification in a raster unit of a graphics pipeline | |
US8477134B1 (en) | Conservative triage of polygon status using low precision edge evaluation and high precision edge evaluation | |
US8390645B1 (en) | Method and system for rendering connecting antialiased line segments | |
US9123173B2 (en) | Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline | |
US8085264B1 (en) | Tile output using multiple queue output buffering in a raster stage | |
US8698811B1 (en) | Nested boustrophedonic patterns for rasterization | |
CN118262026A (zh) | 基于光线追踪的相交判断方法、处理器、系统及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130321 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20140320 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190401 Year of fee payment: 11 |