KR20120096119A - 그래픽 프로세서 및 조기 가시성 테스트 방법 - Google Patents
그래픽 프로세서 및 조기 가시성 테스트 방법 Download PDFInfo
- Publication number
- KR20120096119A KR20120096119A KR1020110015316A KR20110015316A KR20120096119A KR 20120096119 A KR20120096119 A KR 20120096119A KR 1020110015316 A KR1020110015316 A KR 1020110015316A KR 20110015316 A KR20110015316 A KR 20110015316A KR 20120096119 A KR20120096119 A KR 20120096119A
- Authority
- KR
- South Korea
- Prior art keywords
- tile
- value
- pixel
- depth
- pixels
- Prior art date
Links
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/10—Geometric effects
- G06T15/40—Hidden part removal
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/30—Polynomial surface description
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/194—Segmentation; Edge detection involving foreground-background segmentation
-
- 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/39—Control of the bit-mapped memory
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Image Generation (AREA)
Abstract
그래픽 프로세서는 래스터라이저, 픽셀 쉐이더 및 래스터 수행부를 포함한다. 상기 래스터라이저는 하나의 타일에 포함되는 픽셀들의 최대 깊이 값, 최소 깊이 값 및 상기 각 픽셀들의 드로잉(drawing) 여부를 나타내는 마스크 비트에 기초하여 상기 픽셀들의 3차원 정보를 포함하는 버텍스 데이터를 타일 기반으로 처리하여 선택적으로 프래그먼트 데이터를 생성한다. 상기 픽셀 쉐이더는 상기 프래그먼트 데이터를 픽셀 기반으로 쉐이딩 프로세싱하여 컬러드(colored) 데이터를 생성한다. 상기 래스터 수행부는 상기 컬러드 데이터가 모니터상에서 디스플레이 될 수 있도록 픽셀 데이터로 변환한다.
Description
본 발명은 3차원 그래픽 처리 분야에 관한 것으로 보다 상세하게는 그래픽 프로세서 및 조기 가시성 테스트 방법에 관한 것이다.
최근, 컴퓨터 성능이 향상됨에 따라, 그래픽 시스템은 개인용 컴퓨터, 홈 비디오 게임 컴퓨터, 휴대형 장치 등을 이용하여 그래픽 영상을 더욱 사실적으로 표현할 수 있게 되었다. 그와 같은 그래픽 시스템에서는, 시스템의 스크린 상에서 그래픽 프리미티브들을 "랜더링(rendering)" 또는 묘화(draw)하기 위해 많은 과정을 거치게 된다. "그래픽 프리미티브"는 그래픽 화상의 기본 구성요소로서, 예컨대, 꼭지점이나 다각형 등을 말한다. 이들 그래픽 프리미티브들을 조합하여 렌더링된 영상을 구성한다. 3차원(3-D) 그래픽 렌더링 작업을 수행하는 데는 많은 과정을 거친다.
이에 따라, 본 발명의 일 목적은 메모리 액세스를 감소시킬 수 있는 그래픽 처리 장치를 제공하는데 있다.
본 발명의 일 목적은 메모리 액세스를 감소시킬 수 있는 조기 가시성 테스트 방법을 제공하는데 있다.
상기 일 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 그래픽 프로세서는 래스터라이저, 픽셀 쉐이더 및 래스터 수행부를 포함한다. 상기 래스터라이저는 하나의 타일에 포함되는 픽셀들의 최대 깊이 값, 최소 깊이 값 및 상기 각 픽셀들의 드로잉(drawing) 여부를 나타내는 마스크 비트에 기초하여 상기 픽셀들의 3차원 정보를 포함하는 버텍스 데이터를 프래그먼트 데이터를 생성한다. 상기 픽셀 쉐이더는 상기 프래그먼트 데이터를 쉐이딩 프로세싱하여 컬러드(colored) 데이터를 생성한다. 상기 래스터 수행부는 상기 컬러드 데이터가 모니터상에서 디스플레이 될 수 있도록 픽셀 데이터로 변환한다.
실시예에 있어서, 상기 각 픽셀들은 상기 최대 깊이 값 및 최소 깊이 값에 기초하여 3차원 공간 상에서 제1 영역, 제2 영역 및 제3 영역 중 어느 하나에 위치하는 것으로 결정될 수 있다.
상기 제1 영역과 상기 제2 영역의 경계는 상기 최소 깊이 값(타일 최소 값)에 의하여 결정되고, 상기 제2 영역과 제3 영역의 경계는 상기 최대 깊이 값(타일 최대 값)에 의하여 결정될 수 있다.
상기 래스터라이저는 하나의 타일에 대하여 먼저 래스터라이징되는 제1 오브젝트에 대한 타일 최소 값 및 타일 최대 값과 나중에 래스터라이징되는 제2 오브젝트의 픽셀들의 깊이 값들을 비교하여 상기 제2 오브젝트의 픽셀들 각각의 폐기여부를 결정할 수 있다.
상기 제2 오브젝트의 픽셀들 중 상기 타일 최대 값보다 큰 깊이 값을 갖고 드로잉된 픽셀들을 폐기될 수 있다.
실시예에 있어서, 상기 타일 최대 값은 상기 하나의 타일의 픽셀들의 깊이 값이 상기 타일 최대 값과 비교될 때마다 갱신되고, 상기 타일 최소 값은 상기 하나의 타일의 픽셀들이 깊이 값이 상기 타일 최소 값과 모두 비교된 후에 갱신될 수 있다.
실시예에 있어서, 상기 래스터라이저는 상기 버텍스 데이터에 대하여 트래버설 프로세싱하는 트래버설 처리부, 상기 트래버설 처리부의 출력을 스팬 프로세싱하는 스팬 처리부 및 상기 스팬 처리부에서 출력되는 상기 하나의 타일에 포함되는 상기 픽셀들의 깊이 값들에 기초하여 깊이 테스트를 수행하여 상기 픽셀들의 가시성 여부를 결정하고, 상기 픽셀들의 드로잉 여부에 따라 상기 마스크 비트의 논리 레벨을 결정하는 통합 조기 깊이 테스트부를 포함할 수 있다.
상기 통합 조기 깊이 테스트부는 상기 픽셀들 각각의 깊이 값을 기초로 현재 래스터라이징되는 오브젝트에 대한 온-칩 타일 최대 값을 산출하는 타일 최대값 생성기, 상기 픽셀들 각각의 깊이 값을 기초로 현재 래스터라이징되는 상기 오브젝트에 대한 온-칩 타일 최소 값을 산출하는 타일 최소값 값 생성기, 및 이전에 래스터라이징된 오브젝트에 대한 타일 최대 값인 오프-칩 타일 최대 값, 타일 최소 값인 오프-칩 타일 최소 값 및 상기 이전에 래스터라이징된 상기 오브젝트에 대한 오프-칩 마스크 비트를 기초로 상기 현재 래스터라이징되고 있는 상기 오브젝트에 대한 온-칩 마스크 비트를 산출하는 마스크 비트 생성기를 포함할 수 있다.
상기 타일 최대 값 생성기는 현재 픽셀의 제1 깊이 값 및 이전 픽셀의 제2 깊이 값을 비교하여 비교 신호를 출력하는 비교기 및 상기 비교 신호에 응답하여 상기 제1 깊이 값 및 상기 제2 깊이 값 중에서 큰 깊이 값을 선택하여 상기 온-칩 타일 최대 값으로 제공하는 선택기를 포함할 수 있다.
상기 타일 최소 값 생성기는 현재 픽셀의 제1 깊이 값 및 이전 픽셀의 제2 깊이 값을 비교하여 비교 신호를 출력하는 비교기 및 상기 비교 신호에 응답하여 상기 제1 깊이 값 및 상기 제2 깊이 값 중에서 작은 깊이 값을 선택하여 상기 온-칩 타일 최소 값으로 제공하는 선택기를 포함할 수 있다.
상기 마스크 비트 생성기는 현재 픽셀의 깊이 값을 상기 오프-칩 타일 최대 값과 상기 오프-칩 타일 최소 값 각각과 비교하여 제1 비교 신호 및 제2 비교 신호를 제공하는 비교부, 상기 제1 비교 신호, 상기 제2 비교 신호에 따라 상기 현재 픽셀의 오프-칩 마스크 비트를 디코딩하는 디코더 및 상기 현재 픽셀을 나타내는 선택신호에 따라 상기 디코더의 출력을 역다중화하여 상기 현재 픽셀의 마스크 비트를 상기 온-칩 마스크 비트로 갱신하는 디멀티플렉서를 포함할 수 있다.
실시예에 있어서, 상기 마스크 비트 생성기는 상기 제1 비교 신호 및 상기 제2 비교 신호에 기초하여 상기 현재 픽셀의 가시성 여부를 나타내는 판정 신호를 제공하는 감지부를 더 포함할 수 있다.
실시예에 있어서, 상기 타일 최대 값, 상기 타일 최소 값 및 상기 마스크 비트를 저장하기 위한 조기 깊이 캐시 메모리를 구비하는 캐시부를 포함할 수 있다.
상기 일 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법에서는 하나의 타일에 포함되는 현재 래스터라이징되는 제1 오브젝트에 대한 픽셀의 깊이 값을 최소 타일 값 및 최대 타일 값과 비교한다. 상기 비교 결과와 상기 픽셀의 드로잉여부를 나타내는 마스크 비트에 기초하여 상기 픽셀의 가시성여부를 판단한다.
실시예에 있어서, 상기 제1 오브젝트가 상기 하나의 타일에 대하여 최초로 래스터라이징되는 경우, 상기 최소 타일 값 및 상기 최대 타일 값은 미리 정해진 값일 수 있다.
실시예에 있어서, 상기 제1 오브젝트가 상기 하나의 타일에 대하여 이미 래스터라이징된 제2 오브젝트 이후에 래스터라이징되는 경우, 상기 최소 타일 값 및 상기 최대 타일 값은 상기 제2 오브젝트로부터 획득된 값일 수 있다.
상기 타일 최대값은 상기 제2 오브젝트에 관한 픽셀들의 깊이 값 중 가장 큰 값이고, 상기 타일 최소값은 상기 제2 오브젝트에 관한 픽셀들의 깊이 값 중 가장 작은 값일 수 있다.
실시예에 있어서, 상기 픽셀의 깊이 값이 상기 타일 최소값보다 작은 경우에는 상기 픽셀은 가시 픽셀로 판단될 수 있다.
실시예에 있어서, 상기 픽셀의 깊이 값이 상기 타일 최대값보다 크고, 상기 픽셀에 대한 마스크 비트가 상기 픽셀이 드로잉되었다는 것을 나타내는 경우 상기 픽셀은 배제 픽셀로 판단될 수 있다.
실시예에 있어서, 상기 픽셀의 깊이 값이 상기 타일 최대값보다 크고, 상기 픽셀에 대한 마스크 비트가 상기 픽셀이 드로잉되지 않았음을 나타내는 경우 상기 픽셀은 불확정 픽셀로 판단될 수 있다.
실시예에 있어서, 상기 타일 최대 값은 상기 하나의 타일의 픽셀들의 깊이 값이 상기 타일 최대 값과 비교될 때마다 갱신되고, 상기 타일 최소 값은 상기 하나의 타일의 픽셀들이 깊이 값이 상기 타일 최소 값과 모두 비교된 후에 갱신될 수 있다.
조기 깊이 테스트를 수행하여 메모리 액세스를 대폭적으로 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 그래픽 프로세서를 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 도 1의 기하 엔진의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 도 1의 래스터라이저의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 도 1의 래스터 수행부의 구성을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 도 1의 캐시부의 구성을 나타내는 블록도이다.
도 6은 복수의 타일들로 분할되는 디스플레이(또는 스크린)를 나타낸다.
도 7a 내지 7c는 삼각형과 같은 물체가 타일 내로 렌더링될 때 발생할 있는 다양한 상황을 도시한다.
도 8은 본 발명의 일 실시예에 따른 도 3의 통합 조기 깊이 테스트부에서 수행되는 동작의 개념을 나타낸다.
도 9a 및 도 9b는 본 발명의 실시예에 따라 타일 최대 값이 업데이트 되는 것을 나타낸다.
도 10a는 본 발명과 비교하기 위한 종래 방법에 따라 타일 최소 값을 업데이트하는 것을 나타낸다.
도 10b는 본 발명의 일 실시예에 따라 타일 최소 값을 업데이트하는 것을 나타낸다.
도 11은 본 발명의 일 실시예에 따른 도 3의 통합 조기 테스트 수행부의 구성을 나타내는 블록도이다.
도 12는 본 발명의 일 실시예에 따른 도 11의 타일 최대값 생성기의 구성을 나타내는 블록도이다.
도 13은 본 발명의 일 실시예에 따른 도 11의 타일 최소값 생성기의 구성을 나타내는 블록도이다.
도 14는 본 발명의 일 실시예에 따른 도 10의 마스크 비트 생성기의 구성을 나타내는 블록도이다.
도 15는 본 발명의 일 실시예에 다른 도 5의 조기 깊이 캐시 메모리의 구성을 나타내는 블록도이다.
도 16은 본 발명의 일 실시예에 따른 통합 조기 테스트부에서 수행되는 동작을 나타내는 알고리즘이다.
도 17은 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 나타내는 흐름도이다.
도 18은 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 나타내는 흐름도이다.
도 19는 하나의 타일에 포함되는 픽셀들의 크기에 따른 본 발명의 실실시예에 따른 통합 조기 테스트부의 성능을 나타내는 시뮬레이션도이다.
도 20은 하나의 타일에 포함되는 픽셀들의 크기에 따른 본 발명의 실실시예에 따른 통합 조기 테스트부의 성능을 나타내는 또 시뮬레이션도이다.
도 21a 내지 도 21d는 본 발명의 실시예에 따른 조기 깊이 테스트 방법의 메모리 대역폭 관점에서의 효과를 테스트 하기 위한 테스트 신들을 나타낸다.
도 22a 내지 도 22d는 본 발명과 종래 기술들에 따라 도 21a 내지 도 21d의 테스트 신들을 렌더링하는 경우에 필요로 하는 메모리 액세스를 나타낸다.
도 23은 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 24는 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 무선 통신 디바이스를 나타내는 블록도이다.
도 25는 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 다른 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 도 1의 기하 엔진의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 도 1의 래스터라이저의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 도 1의 래스터 수행부의 구성을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 도 1의 캐시부의 구성을 나타내는 블록도이다.
도 6은 복수의 타일들로 분할되는 디스플레이(또는 스크린)를 나타낸다.
도 7a 내지 7c는 삼각형과 같은 물체가 타일 내로 렌더링될 때 발생할 있는 다양한 상황을 도시한다.
도 8은 본 발명의 일 실시예에 따른 도 3의 통합 조기 깊이 테스트부에서 수행되는 동작의 개념을 나타낸다.
도 9a 및 도 9b는 본 발명의 실시예에 따라 타일 최대 값이 업데이트 되는 것을 나타낸다.
도 10a는 본 발명과 비교하기 위한 종래 방법에 따라 타일 최소 값을 업데이트하는 것을 나타낸다.
도 10b는 본 발명의 일 실시예에 따라 타일 최소 값을 업데이트하는 것을 나타낸다.
도 11은 본 발명의 일 실시예에 따른 도 3의 통합 조기 테스트 수행부의 구성을 나타내는 블록도이다.
도 12는 본 발명의 일 실시예에 따른 도 11의 타일 최대값 생성기의 구성을 나타내는 블록도이다.
도 13은 본 발명의 일 실시예에 따른 도 11의 타일 최소값 생성기의 구성을 나타내는 블록도이다.
도 14는 본 발명의 일 실시예에 따른 도 10의 마스크 비트 생성기의 구성을 나타내는 블록도이다.
도 15는 본 발명의 일 실시예에 다른 도 5의 조기 깊이 캐시 메모리의 구성을 나타내는 블록도이다.
도 16은 본 발명의 일 실시예에 따른 통합 조기 테스트부에서 수행되는 동작을 나타내는 알고리즘이다.
도 17은 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 나타내는 흐름도이다.
도 18은 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 나타내는 흐름도이다.
도 19는 하나의 타일에 포함되는 픽셀들의 크기에 따른 본 발명의 실실시예에 따른 통합 조기 테스트부의 성능을 나타내는 시뮬레이션도이다.
도 20은 하나의 타일에 포함되는 픽셀들의 크기에 따른 본 발명의 실실시예에 따른 통합 조기 테스트부의 성능을 나타내는 또 시뮬레이션도이다.
도 21a 내지 도 21d는 본 발명의 실시예에 따른 조기 깊이 테스트 방법의 메모리 대역폭 관점에서의 효과를 테스트 하기 위한 테스트 신들을 나타낸다.
도 22a 내지 도 22d는 본 발명과 종래 기술들에 따라 도 21a 내지 도 21d의 테스트 신들을 렌더링하는 경우에 필요로 하는 메모리 액세스를 나타낸다.
도 23은 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 24는 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 무선 통신 디바이스를 나타내는 블록도이다.
도 25는 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 다른 컴퓨팅 시스템을 나타내는 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 그래픽 프로세서를 나타내는 블록도이다.
도 1을 참조하면, 그래픽 프로세서(10, 또는 그래픽스 파이프라인, 그래픽 가속기)는 기하 엔진(100), 래스터라이저(rasterizer, 200), 픽셀 쉐이더(400, 또는 프래그먼트 쉐이더), 래스터 수행부(raster operation unit, 500) 및 캐시부(600)를 포함하여 구성될 수 있다.
기하 엔진(100)은 입력 데이터(INDTA)의 3차원 이미지에 숨어 있는 벡터 그래픽 정보와 배경 이미지가 그래픽 프로세서(10)에서 처리될 수 있는 3차원 정보로 변환한다. 즉 기하 엔진(100)은 입력 데이터(INDTA)에 대하여 기하 연산을 수행하여 입력 데이터(INDTA)에 대한 3차원 정보를 포함하는 버텍스 데이터(VDTA)를 생성한다. 3 차원 이미지는 지오메트리의 기본 단위인 프리미티브(primitive)로 표현될 수 있다. 3차원 그래픽스에 있어서, 프리미티브(통상적으로 삼각형)는 3개의 정점에 의하여 정의되며, 각 선은 2개의 정점에 의하여 정의된다. 각 정점(즉 3차원 정보)은 공간 좌표, 컬러 값, 텍스처 좌표와 같은 다양한 속성들과 관련될 수 있다. 각 속성은 4개까지의 컴포넌트를 가질 수도 있다. 예를 들어, 공간 좌표는 3개의 컴포넌트 (x, y, z) 또는 4개의 컴포넌트 (x, y, z, w)에 의하여 제공될 수 있으며, 여기서 x 및 y는 수평 및 수직 좌표이고, z 는 깊이이며, w는 동차 좌표(homogeneous coordinate)이다. 컬러 값은 3개의 컴포넌트 (r, g, b) 또는 4개의 컴포넌트((r, g, b, a)에 의하여 제공될 수도 있으며, 여기서 r은 레드 g는 그린, b는 블루 a는 픽셀의 투명도를 결정하는 투명도 팩터이다. 통상적으로 텍스처 좌표는 수평 및 수직 좌표(u 및 v)에 의하여 제공될 수도 있다. 또한 정점은 다른 속성들과 관련될 수도 있다.
래스터라이저(200)는 기하 엔진(200)으로부터 버텍스 데이터(VDTA)를 수신하고, 수신된 버텍스 테이터(VDTA)를 처리하여 프래그먼트 데이터(FDTA)를 생성한다. 실시예에 있어서, 래스터라이저(200)는 버텍스 테이터(VDTA)를 타일기반으로 처리하여 프래그먼트 데이터(FDTA)를 생성할 수 있다. 구체적으로, 래스터라이저(200)는 하나의 타일에 포함되는 픽셀들의 최대 깊이 값, 최소 깊이 값 및 각 픽셀들의 묘화 여부를 나타내는 마스크 비트에 기초하여 픽셀들의 3차원 정보를 포함하는 버텍스 데이터를 타일 기반으로 처리하여 선택적으로 2차원의 프래그먼트 데이터(FDTA)를 생성할 수 있다. 여기서 프래그먼트 데이터(FDTA)는 픽셀 및 그 관련된 정보를 포함할 수 있다. 프래그먼트 데이터(FDTA)는 보간을 통하여 생성된 컬러 값, 픽셀 좌표(x, y) z (깊이 값), 텍서처 좌표(u, v), 삼각형의 에지의 기울기 등을 포함할 수 있다.
픽셀 쉐이더(400)는 래스터라이저(200)로부터 프래그먼트 데이터(FDTA)를 수신하고 수신된 프래그먼트 데이터(FDTA)에 대하여 픽셀 기반으로 쉐이딩 프로세싱을 수행하여 컬러드 데이터(CDTA)를 생성한다. 즉 픽셀 쉐이더(400)는 프래그먼트 데이터(FDTA)의 컬러값을 결정한다. 이를 위하여 픽셀 쉐이더(400)는 픽셀 및 프래그먼트에 대한 다양한 그래픽스 동작을 수행할 수 있다. 픽셀 쉐이더(400)는 셀 속성의 보간을 위한 파라미터, 예를 들어 속성 보간을 위한 선형 방정식의 계수를 계산할 수도 있다. 또한 픽셀 쉐이더(400)는 픽셀의 스크린 좌표에 기초하여, 보간 파라미터를 사용하여 각각의 삼각형 내의 각 픽셀에 대한 속성 컴포넌트 값을 계산할 수도 있다. 또한 픽셀 쉐이더(400)는 텍스처를 각각의 삼각형에 적용하기 위한 텍스쳐 매핑을 수행할 수도 있다.
래스터 수행부(500)는 픽셀 쉐이더(400)로부터 컬러드 데이터(CDTA)를 수신하고, 컬러드 데이터(CDTA)가 모니터상에서 디스플레이 될 수 있도록 픽셀 데이터(PDTA)로 변환한다. 픽셀 데이터(PDTA)는 외부의 프레임 버퍼(frame buffer)에 제공되어 저장될 수 있다.
캐시부(600)는 도 5에 도시되는 바와 같이 복수의 캐시 메모리들을 포함하고, 기하 엔진(100), 래스터라이저(rasterizer, 200), 픽셀 쉐이더(400), 래스터 수행부(raster operation unit, 500) 각각과 연결되어, 상응하는 데이터를 저장하거나 외부 메모리(또는 프레임 버퍼)로부터의 데이터를 프리페치한다.
도 2는 본 발명의 일 실시예에 따른 도 1의 기하 엔진의 구성을 나타내는 블록도이다.
도 2를 참조하면, 기하 엔진(100)은 애플리케이션(110), 버텍스 쉐이더(120) 및 삼각형 설정부(130)를 포함하여 구성될 수 있다.
애플리케이션(110)은 입력 그래픽 데이터(IDTA)에 대하여 물리적 연산을 수행하여 기하 프리미티브(GPR)를 버텍스 쉐이더(120)에 제공한다. 버텍스 쉐이더(120)는 기하 프리미티브(GPR)에 대한 정점 프로세싱을 수행한다. 예를 들어, 버텍스 쉐이더(120)는 기하 프리미티브(GPR)를 하나의 좌표계에서 다른 좌표계로 변환할수도 있고, 기하 프리미티브(GPR)의 정점에 대한 컬러 값을 계산할 수도 있으며, 기하 프리미티브(GPR)에 대한 블렌딩을 수행할 수도 있다. 삼각형 설정부(130)는 버텍스 쉐이더(120)의 출력에 기초하여, 즉 삼각형의 적어도 일부를 포함하는 픽셀들(또는 타일들)에 대한 3차원 정보인 버텍스 데이터(VDTA)를 제공한다.
이를 위하여 삼각형 설정부(130)는 삼각형의 적어도 일부를 포함하는 타일들을 판별하는 작업인 타일 비닝(tile binning)을 수행할 수 있다. 타일 비닝을 수행하지 않고 전체 화면에 대하여 래스터라이제이션을 수행하는 경우에, 스크린 해상도와 동일한 크기의 프레임 버퍼가 필요하게 된다. 이 경우 프레임 버퍼는 그 크기로 인해 칩 내부에 임베드 시키기가 쉽지 않으므로 랜덤한 외부 메모리 액세스를 통하여 접근하게 된다. 외부 메모리는 칩 내부의 메모리 액세스에 비하여 약 10배의 전력을 소모하게 된다. 하지만 삼각형의 적어도 일부를 포함하는 타일들을 판별하는 작업인 타일 비닝(tile binning)을 수행하면, 칩 내부에 임베드된 하나의 타일 해상도 크기의 온 칩 메모리(또는 캐시 메모리)를 이용하여 외부 프레임 버퍼의 타일 위치로 전송을 하게 된다. 이와 같이 타일 비닝을 수행하여 타일 기반으로 래스터라이제이션을 수행하게 되면, 빈번한 외부 버퍼 프레임 메모리에 대한 액세스를 감소시켜 저전력 측면에서 유리하고 또한 레이턴스 측면에서도 상당히 유리하다.
도 3은 본 발명의 일 실시예에 따른 도 1의 래스터라이저의 구성을 나타내는 블록도이다.
도 3을 참조하면, 래스터라이저(200)는 트래버설 처리부(210), 스팬 처리부(220) 및 통합 조기 깊이 테스트 수행부(300)를 포함하여 구성될 수 있다.
트래버설 처리부(210)는 버텍스 데이터(VDTA)에 대하여 트래버설 프로세싱을 수행한다. 스팬 처리부(220)는 트래버설 처리부(210)의 출력에 대하여 스팬 프로세싱을 수행한다. 통합 조기 깊이 테스트 수행부(300)는 스팬 처리부(220)의 출력에 대하여 깊이 테스트를 수행한다. 보다 구체적으로, 통합 조기 깊이 테스트 수행부(300)는 스팬 처리부(220)에서 출력되는 하나의 타일에 포함되는 픽셀들의 깊이 값들에 기초하여 깊이 테스트를 수행하여 픽셀들의 폐기 여부를 결정하고, 각 픽셀들에 대한 마스크 비트의 논리 레벨을 결정할 수 있다. 통합 조기 깊이 테스트 수행부(300)의 구성 및 동작에 대하여는 도 11 내지 도 14를 참조하여 후술한다.
도 4는 본 발명의 일 실시예에 따른 도 1의 래스터 수행부의 구성을 나타내는 블록도이다.
도 4를 참조하면, 래스터 수행부(400)는 스텐실 테스트부(410), 깊이 테스트부(420) 및 알파 블렌딩부(430)를 포함하여 구성될 수 있다.
스텐실 테스트부(410)는 프래그먼트 데이터(FDTA)의 각 픽셀에 대하여 저장된 스텐실 값을 레퍼런스 값에 비교하고, 그 비교 결과에 기초하여 픽셀을 패스하거나 폐기한다. 깊이 테스트부(420)는 스텐실 테스트부(410)를 통과한 각 픽셀들의 깊이 값을 캐시부(600)에 포함되는 깊이 버퍼(620)에서의 대응되는 깊이 값과 비교하고, 현재 픽셀의 깊이 값이 저장된 깊이 값보다 근접하면, 픽셀을 패스하고 깊이 캐시 메모리(620)를 업데이트하고, 저장된 픽셀의 깊이 값이 현재 픽셀의 깊이 값보다 근접하면 현재 픽셀을 폐기한다. 알파 블렌딩부(430)는 스텐실 테스트부(410)와 깊이 테스트부(420)를 통과한 픽셀들의 투명도를 결정하여 픽셀 데이터(PDTA)를 제공한다. 픽셀 데이터(PDTA)는 스크린 상에 디스플레이될 데이터로서 외부의 프레임 버퍼에 제공될 수 있다.
도 4에서 스텐실 테스트부(410)와 깊이 테스트부(420)는 별도의 블록으로 도시되었으나 하나의 블록내에서 스텐실 테스트 및 또는 깊이 테스트를 수행할 수도 있다. 또한 스텐실 테스트부(410)와 깊이 테스트부(420)는 깊이 캐시 메모리(620)를 공유할 수도 있다. 또한 도 4의 알파 블렌딩부(430)는 스텐실 테스트부(410)와 깊이 테스트부(420)를 통과한 픽셀들에 대하여 알파 블렌딩 뿐만 아니라, 알파 테스트, 포그 블렌딩, 로직 동작 디더링 동작 등과 같은 그래픽스 동작을 수행할 수도 있다.
도 5는 본 발명의 일 실시예에 따른 도 1의 캐시부의 구성을 나타내는 블록도이다.
도 5를 참조하면, 캐시부(600)는 조기 깊이 캐시 메모리(700), 텍스처 캐시 메모리(610), 깊이 캐시 메모리(420) 및 컬러 캐시 메모리(630)를 포함할 수 있다. 도 5에서는 설명의 편의를 위하여 프레임 버퍼로서 동작하는 외부 메모리(650)를 함께 도시하였다.
조기 깊이 캐시 메모리(700)는 도 3의 통합 조기 테스트 수행부(300)와 연결되고, 외부 메모리(650)로부터 타일 데이터(타일 데이터는 하나의 타일에 대한 타일 최대 값, 타일 최소 값 및 마스크 비트)를 프리페치하거나 외부 메모리(650)로 타일 데이터를 업데이트 한다. 텍스처 캐시 메모리(610)는 도 2의 버텍스 쉐이더(120) 및 도 1의 픽셀 쉐이더(400)에 연결되고 외부 메모리(650)로부 텍스처 데이터를 프리페치한다. 깊이 캐시 메모리(620)는 도 4의 스텐실 테스트부(410) 및/또는 깊이 테스트부(420)에 연결되고, 외부 메모리(650)로부터 저장된 스텐실 값/깊이 값을 프리페치하거나 외부 메모리(650)로 스텐실 값/깊이 값을 업데이트한다. 컬러 캐시 메모리(630)는 도 4의 알파 블렌딩부(430)와 연결되고 외부 메모리(650)로부터 저장된 컬러값(알파 값)을 프리페치하거나 외부 메모리(650)로 컬러 값(알파 값)을 업데이트한다. 조기 깊이 캐시 메모리(700), 텍스처 캐시 메모리(610), 깊이 캐시 메모리(420) 및 컬러 캐시 메모리(630)는 각각 온-칩 메모리라 호칭할 수도 있다.
도 6은 복수의 타일들(141)로 분할되는 디스플레이(또는 스크린, 140)를 나타낸다.
도 6에서 디스플레이(140)는 8*8의 타일들을 포함한다. 하지만 다른 실시예에 따른 디스플레이는 임의의 다른 수의 타일들(141)을 포함할 수 있다. 각각의 타일들(141)은 복수의 픽셀들(142)로 분할된다. 도 6의 실시예에서 각각의 타일들(141)은 8*8 픽셀들을 포함한다. 하지는 도 6의 8*8 픽셀의 구성은 하나의 실시예일 뿐, 다른 실시예들에서 각각의 타일들(141)은 4*4, 8*4, 16*4, 16*8의 픽셀들을 포함할 수 있다. 이들 차원은 단지 설명의 편의를 위한 실시예일 뿐 각각의 타일들(141)은 임의의 수의 픽셀들을 포함할 수 있다.
타일(141)에 대한 타일 최소 값은 타일(141)에 포함되는 픽셀들(142)의 깊이 값중 최소값에 해당하고, 타일(141)에 대한 타일 최대 값은 타일(141)에 포함되는 픽셀들(142)의 깊이 값 중 최대 값에 해당한다. 삼각형의 세 꼭지점은 x, y, z 축으로 구성된 3차원 공간상에 존재하며, 이 때 z축은 사용자(뷰어)의 시선과 일치하는 축으로, z 축 상의 값이 깊이(z) 값은 사용자의 시선으로부터의 거리를 나타낸다. 따라서 깊이 값이 큰 점은 사용자의 시선으로부터 멀리 떨어져 있고, 깊이 값이 작은 점은 사용자의 시선에서 가깝게 위치한다. 따라서 동일한 x, y 좌표를 가지는 점들 중 z 값이 가장 작은 점만이 사용자에게 보여지고, 나머지 점들은 가려져서 사용자에게 보이지 않게 된다.
도 6에서 새로운 삼각형(143)의 일부는 타일(144)에서 렌더링 될 것이다. 본 발명의 실시예에서는 컬러 및 깊이 버퍼가 삼각형(143)의 잠재적인 영향에 따라 갱신되기 전에, 삼각형(143)이 타일(144) 내로 이미 렌더링된 원형에 의하여 가려질 것인지가 미리 테스트된다(통합 조기 깊이 테스트).
도 7a 내지 7c는 삼각형과 같은 물체가 타일 내로 렌더링될 때 발생할 있는 다양한 상황을 도시한다.
도 7a 내지 7c에서 또 다른 삼각형의 적어도 일부보다 멀리 떨어져 위치되는 삼각형의 부분은 점선으로 도시된다.
도 7a를 참조하면, 제1 삼각형(150)이 타일(152)에서 디스플레이된다. 그 후, 제2 삼각형(151)이 타일(152)에서 디스플레이된다. 타일(152)에 대한 타일 최소 값은 제1 삼각형(150)에 대한 최소 다각형 깊이 값과 동일하며, 타일(152)에 대한 타일 최대 값은 제1 삼각형(150)에 대한 최대 다각형 깊이 값과 동일하다. 제2 삼각형(151)이 전체적으로 제1 삼각형(150)보다 더 멀리 떨어져 위치한다고 가정하자. 결과적으로, 제2 삼각형(151)의 최소 다각형 깊이 값은 제1 삼각형(150)의 최대 다각형 깊이 값보다 크므로, 타일(152)에 대한 타일 최대 값보다 크다. 따라서 제1 삼각형(150)이 타일(152)에서 뷰어(viewer)에 가장 가깝게 위치되는 물체(오브젝트)이다. 제2 삼각형(151)의 타일 최소 값을 타일(152)에 대한 타일 최대 값과 비교함으로써 제2 삼각형(151)이 타일(152)에 대한 임의의 버퍼 값(예를 들어 깊이 및 컬러 값)을 명확하게 겹쳐쓰지 않아도 된다는 것이 확인될 수 있다.
도 7b를 참조하면, 제1 삼각형(160)이 타일(162)에서 디스플레이된다. 그 후, 제2 삼각형(161)이 타일(162)에서 디스플레이된다. 타일(162)에 대한 타일 최소 값은 제1 삼각형(160)에 대한 최소 다각형 깊이 값과 동일하며, 타일(162)에 대한 타일 최대 값은 제1 삼각형(160)에 대한 최대 다각형 깊이 값과 동일하다. 제2 삼각형(161)은 제1 삼각형(160)보다 뷰어에게 더 가깝게 위치된다. 결과적으로 제2 삼각형(161)의 최대 다각형 깊이 값을 타일(160)에 대한 타일 최소 값과 비교함으로써 제2 삼각형(161)이 명확히 렌더링되어야 한다는 것이 확인될 수 있고, 깊이 버퍼에 대한 메모리 판독을 피할 수 있다.
도 7c를 참조하면, 제1 삼각형(170)이 타일(172)에서 디스플레이된다. 타일(172)에 대한 타일 최소 값은 제1 삼각형(160)에 대한 최소 다각형 깊이 값과 동일하며, 타일(162)에 대한 타일 최대 값은 제1 삼각형(170)에 대한 최대 다각형 깊이 값과 동일하다. 제2 삼각형(171)이 타일(172)에서 디스플레이된다. 제2 삼각형(171)은 (실선으로 도시된 제2 삼각형(171)의 일부분)이 제1 삼각형(170)보다 더 가깝고, (점선으로 도시된) 제2 삼각형(171)의 다른 부분은 제1 삼각형(170)보다 부분적으로 더 멀리 떨어져 위치한다. 결과적으로 제2 삼각형(171)의 최소 다각형 값이 타일(170)에 대한 타일 최대 값보다 더 작고 및/또는 제2 삼각형(171)의 최대 다각형 값이 타일(170)에 대한 타일 최대 값보다 더 크다. 따라서 단지 제2 삼각형(171)의 최대 다각형 값 및 최소 다각형 값을 타일(170)에 대한 타일 최대 값 및 타일 최소 값과 비교함으로써 제2 삼각형(171)이 명확하게 렌더링되어야 하는지 또는 명확하게 렌더링되지 않아도 되는지, 깊이 버퍼에 대한 메모리 판독이 요구되는가 확인될 수 없다.
도 7a 내지 도 7c와 관련된 상황은 단지 설명의 편의를 위하여 제공된다는 점에 주의해야 한다. 예를 들어 삼각형이 중첩하지 않을 때 다른 상황이 발생할 수 있다. 또한 타일 내에서 다른 수의 삼각형이 가능하다. 또한 타일 내에 각 픽셀은 상이한 삼각형과 관련될 수 있다.
도 8은 본 발명의 일 실시예에 따른 도 3의 통합 조기 깊이 테스트부에서 수행되는 동작의 개념을 나타낸다.
도 8을 참조하면, 2차원 스크린(190)에 디스플레이되는 삼각형(192)과 스크린(190)을 구성하는 타일(191)이 도시되어 있다. 타일(191)은 도 6에 도시된 바와 같이 복수의 픽셀들로 구성될 수 있다. 타일(191)의 3차원 공간(3D SPACE)은 타일 최소 값(ZNT)과 타일 최대 값(ZXT)에 의하여 가시 영역(TVR), 불확정 영역(UR) 및 배제 영역(TOR)으로 구분될 수 있다. 여기서 타일 최소 값(ZNT)과 타일 최대 값(ZXT)은 삼각형(192)이 최초로 드로잉되는 오브젝트인 경우에는 미리 설정된 값을 가질 수 있고, 최초로 드로잉되는 오브젝트가 아닌 경우에는 이전에 드로잉된 오브젝트에 의하여 업데이된 값을 가질 수 있다.
타일(191) 내에서 렌더링(래스터라이징)되는 제1 픽셀(PX1)의 깊이 값은 타일 최소 값(ZNT)보다 작다. 따라서 제1 픽셀(PX1)은 3차원 공간 상에서 가시 영역(TVR)에 위치하게 되므로, 제1 픽셀(PX1)은 가시 픽셀로 분류된다. 가시 픽셀로 분류된 제1 픽셀(PX1)은 스크린(190)에서 뷰어(193)에게 보이는 것이 확실시되므로 래스터 수행부(500)에서 깊이 테스트를 수행하는 경우에 외부 메모리(650)를 액세스하지 않아도 된다.
타일(191) 내에서 렌더링(래스터라이징)되는 제2 픽셀(PX2)의 깊이 값은 타일 최대 값(ZXT)보다 크다. 따라서 제2 픽셀(PX2)은 3차원 공간 상에서 배제 영역(TOR)에 위치하고, 제2 픽셀(PX2)의 마스크 비트(MB) 값이 하이 레벨이므로, 제2 픽셀(PX2)은 배제 픽셀로 분류된다. 배제 픽셀로 분류된 제2 픽셀(PX2)은 스크린(190)에서 뷰어(193)에게 보이지 않는 것이 확실시되므로 제2 픽셀(PX2)은 래스터라이저(200)에서 픽셀 쉐이더(400)에 제공되지 않는다. 따라서 제2 픽셀(PX2)에 대하여는 픽셀 쉐이더(400)와 래스터 수행부(500)에서 외부 메모리(650)를 전혀 액세스하지 않는다.
타일(191) 내에서 렌더링(래스터라이징)되는 제3 픽셀(PX3)의 깊이 값은 타일 최대 값(ZXT)보다 크다. 따라서 제3 픽셀(PX3)은 3차원 공간 상에서 배제 영역(TOR)에 위치하고, 제3 픽셀(PX3)의 마스크 비트(MB) 값이 로우 레벨이므로, 제3 픽셀(PX3)은 불확정 픽셀로 분류된다. 불확정 픽셀로 분류된 제3 픽셀(PX3)은 스크린(190)에서 뷰어(193)에게 보이는지 여부가 확실시되지 않으므로 제3 픽셀(PX3)은 래스터라이저(200)에서 픽셀 쉐이더(400) 및 래스터 수행부(500)에 제공되어 깊이 테스트를 수행하여 제3 픽셀(PX3)의 가시성 여부를 판단하게 된다.
타일(191) 내에서 렌더링(래스터라이징)되는 제4 픽셀(PX4)의 깊이 값은 타일 최소 값(ZNT) 보다는 크고 타일 최대 값(ZXT) 보다는 작다. 따라서 제4 픽셀(PX4)은 3차원 공간 상에서 불확정 영역(UR)에 위치하고, 제3 픽셀(PX2)은 불확정 픽셀로 분류된다. 불확정 픽셀로 분류된 제4 픽셀(PX4)은 스크린(190)에서 뷰어(193)에게 보이는지 여부가 확실시되지 않으므로 제4 픽셀(PX3)은 래스터라이저(200)에서 픽셀 쉐이더(400) 및 래스터 수행부(500)에 제공되어 깊이 테스트를 수행하여 제4 픽셀(PX4)의 가시성 여부를 판단하게 된다. 즉, 제3 픽셀 및 제4 픽셀(PX3, PX4)에 대하여는 외부 메모리(650)에 대한 액세스를 피할 수 없게 된다.
따라서 외부 메모리(650)에 대한 액세스를 가능한 감소시키기 위하여 3차원 공간 상에서 불확정 영역(UR)을 가능한 좁게 해야 한다. 이를 위하여 본 발명의 실시예에 따른 통합 조기 깊이 테스트부(300)는 하나의 타일에 포함되는 픽셀들의 깊이 값과 픽셀들의 드로잉 여부(드로잉 히스토리)를 나타내는 마스크 비트에 기초하여 픽셀들이 가시성 여부를 판단하되, 타일 최대 값(ZXT)과 타일 최소 값(ZNT)을 픽셀 정보를 생성할 때마다 업데이트 한다. 타일 최대 값(ZXT)은 하나의 타일 내에 포함되는 모든 픽셀이 드로잉된 후에 업데이트 되는 것이 아니고 픽셀이 드로잉될 때마다 업데이트 될 수 있고, 타일 최소 값(ZNT)은 하나의 타일 내에 포함되는 모든 픽셀이 드로잉된 후에 업데이트 될 수 있다. 이러한 메커니즘에 의하여, 배제 영역(TOR)을 가능한 한 확장하여 불확정 영역(UR)을 좁힐 수 있다. 종래의 기술들에서는 하나의 프레임이 렌더링되는 동안 타일 최대 값(ZXT)과 타일 최소 값(ZNT)이 일관된 방향으로 수렴되어 있어 불확정 영역(UR)도 또한 한정되어 있었다.
도 9a 및 도 9b는 본 발명의 실시예에 따라 타일 최대 값이 업데이트 되는 것을 나타낸다.
도 9a 및 도 9b에서 하나의 타일은 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4)로 구성된다고 가정한다.
도 9a는 하나의 타일(예를 들어 도 8의 타일(191))에 제1 오브젝트가 최초로 드로잉되는 경우를 나타낸다.
도 9a를 참조하면, 최초(cycle0)에 하나의 타일에 이미 드로잉된 오브젝트가 없기 때문에 타일 최대 값(ZXT)은 가장 큰 값으로 설정된다. 이 때 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4)은 아직 드로잉되지 않았으므로 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4) 각각의 마스크 비트들(MB1~MB4)은 모두 제1 로직 레벨("0")로 설정된다. 제3 사이클(cycle3)에서 제1 내지 제3 픽셀들(PX1, PX2, PX3)이 드로잉되어 제1 내지 제3 픽셀들(PX1, PX2, PX3)의 마스크 비트들(MB1~MB3)은 모두 제2 로직 레벨("1")로 설정된다. 제4 사이클(cycle4)에서는 제4 픽셀(PX4)까지 드로잉되어 한 타일 내에 모든 픽셀들이 드로잉되었으므로 마스크 비트들(MB1~MB4)은 모두 제1 로직 레벨("0")로 설정된다. 또한 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4)이 드로잉되는 동안 타일 최대 값(ZXT)은 계속하여 온-칩 타일 최대 값(zmax(on))으로 업데이트되며, 제4 픽셀(PX4)에 대한 드로잉이 완료되면, 온-칩 타일 최대 값(zmax(on))은 오프-칩 타일 최대 값(zmax(off))과 동일한 값을 가지게 된다. 또한 제4 픽셀(PX4)에 대한 드로잉이 완료되면, 마스크 비트들(MB1~MB4)도 오프-칩 마스크 비트들(MB(off))로 업데이트된다.
도 9b는 하나의 타일(예를 들어 도 8의 타일(191))에 제1 오브젝트에 이어 제2 오브젝트가 드로잉되는 경우를 나타낸다.
도 9b를 참조하면, 제1 픽셀(PX1)이 드로잉되기 전(cycle0)에, 제1 오브젝트에 대한 타일 최대 값(ZXT)이 오프-칩 타일 최대 값(zmax(off))으로서 나타나 있고, 제1 오브젝트에 대한 오프 칩 마스크 비트들(MB(off))이 나타나 있다. 또한 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4)은 아직 드로잉되지 않았으므로 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4)에 대한 온 칩 마스크 비트들(MB1~MB4)은 모두 제1 로직 레벨("0")로 초기화된다. 제3 사이클(cycle3)에서 제1 내지 제3 픽셀(PX1~PX4)까지 드로잉되어야 하는데, 제1 및 제2 픽셀(PX1, PX2)의 깊이 값은 제1 오브젝트에 대한 타일 최대 값(ZXT)보다 작기 때문에 드로잉되는 픽셀이므로 제1 및 제2 픽셀(PX1, PX2)에 대한 온-칩 마스크 비트들(MB1, MB2)은 제2 로직 레벨("1")로 설정된다. 이 때, 제3 픽셀(PX3)의 깊이 값은 제1 오브젝트에 대한 타일 최대 값(ZXT)보다 작기 때문에 드로잉되지 않는 픽셀이므로 상응하는 마스크 비트(MB3)는 제1 로직 레벨("0")로 설정(유지)된다. 제4 사이클(cycle4)에서, 제4 픽셀(PX4)의 깊이 값도 제1 오브젝트에 대한 타일 최대 값(ZXT)보다 작기 때문에 드로잉되지 않는 픽셀이므로 상응하는 마스크 비트(MB3)는 제1 로직 레벨("0")로 설정(유지)되어 "0", "0", "1", "1"의 값을 갖는 온-칩 마스크 비트들(MB1~MB4)이 오프-칩 마스크 비트들(MB(off))로 업데이트된다. 제3 사이클(cycle3)까지 온-칩 타일 최대 값(zmax(on))은 각각 제1 및 제2 픽셀들(PX1, PX2)의 깊이 값으로 업데이트되고, 제4 사이클에서 오프-칩 타일 최대값(zmax(off))은 제2 픽셀(PX2)의 깊이 값과 동일한 값을 가지게 된다.
도 9a와 도 9b를 참조하여 보면, 도 9a에서는 오프-칩 타일 최대값(zmax(off))이 제1 오브젝트에 대한 제4 픽셀(PX4)의 깊이 값을 가지고, 도 9b에서는 오프-칩 타일 최대값(zmax(off))이 제2 오브젝트에 대한 제2 픽셀(PX2)의 깊이 값을 가지게 됨을 알 수 있다. 즉 하나의 타일에서 오프-칩 타일 최대값(zmax(off))이 점점 감소하여 불확정 영역(UR)이 점점 줄어듬을 알 수 있다. 도 9b에서 제2 오브젝트에 대한 제3 및 제4 픽셀들 (PX3, PX4)은 제1 오브젝트에 의한 오프-칩 타일 최대값(zmax(off))에 의하여 배제 영역(TOR)로 판단되어, 제거 될 수 있지만, 제4 픽셀(PX4)까지 처리 완료된 시점 이후, 즉 온-칩 타일 최대값(zmax(on))이 오프-칩 타일 최대값(zmax(off))로 업데이트 되고 나면, 오프-칩 마스크 비트들 (MB3, MB4) 역시 "0", "0"으로 업데이트 되어, 해당 좌표의 타일 최대값(zmax(off))은 마스크 비트가 "1"로 업데이트 되기 전까지는 초기화 상태로 남게 된다.
도 10a는 본 발명과 비교하기 위한 종래 방법에 따라 타일 최소 값을 업데이트하는 것을 나타낸다.
도 10b는 본 발명의 일 실시예에 따라 타일 최소 값을 업데이트하는 것을 나타낸다.
도 10a 및 도 10b에서 하나의 타일은 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4)로 구성된다고 가정한다.
도 10a를 참조하면, 종래의 방법에서는 제1 픽셀(PX1)이 드로잉되기 전(cycle0)에, 오프-칩 타일 최소 값(zmin(off))이 가능한 한 큰 값으로 설정되고, 제1 사이클(cycle1)에서 제1 픽셀(PX1)이 드로잉되면, 제1 픽셀(PX1)의 깊이 값이 온-칩 타일 최소 값(zmin(on))으로 업데이트된다. 제4 사이클(cycle4)까지 제2 내지 제4 픽셀들(PX2, PX3, PX4)이 드로잉되는데, 제2 내지 제4 픽셀들(PX2, PX3, PX4) 각각의 깊이 값은 제1 픽셀(PX1)의 깊이 값보다 크므로 제2 내지 제4 픽셀들(PX2, PX3, PX4)은 불확정 영역(UR)에 속하게 된다. 또한 제4 사이클(cycle4)에서 1 픽셀(PX1)의 깊이 값이 오프-칩 타일 최소 값(zmin(off))으로 업데이트되게 된다.
도 10b를 참조하면, 본 발명의 실시예에서는 제1 픽셀(PX1)이 드로잉되기 전(cycle0)에, 오프-칩 타일 최소 값(zmin(off))이 가능한 한 큰 값으로 설정되고 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4) 각각의 마스크 비트들도 모두 제1 로직 레벨("0")로 초기화된다. 제3 사이클(cycle3)에서 제1 내지 제3 픽셀들(PX1, PX2, PX3)이 드로잉되었으므로 이들 각각에 대한 마스크 비트들(MB1, MB2, MB3)은 제2 로직 레벨("1")로 설정되고 제4 픽셀(PX4)은 아직 드로잉되지 않았으므로 이에 해당하는 마스크 비트(MB4)는 제1 로직 레벨("0")을 유지한다. 제4 사이클(cycle4)에서 제4 픽셀(PX4)까지 드로잉된 후에 마스크 비트(MB4)가 제2 로직 레벨("1")로 설정되면서 오프-칩 타일 최소 값(zmin(off))이 제1 픽셀(PX1)의 깊이 값으로 업데이트된다. 즉 본 발명의 실시예에서는 오프-칩 타일 최소 값(zmin(off))이 하나의 타일에 포함된 모든 픽셀들이 드로잉된 후에 뷰어에게 가장 가까운 픽셀의 깊이 값으로 업데이트되기 때문에 가시 영역(TVR)을 가능한 한 넓게 확보할 수 있다. 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4) 모두 가시 영역(TVR)에 위치하게 되므로 제1 내지 제4 픽셀들(PX1, PX2, PX3, PX4)에 대한 깊이 테스트를 피할수 있어 깊이 버퍼에 대한 메모리 액세스를 피할 수 있게 된다.
도 9a 내지 도 10b를 참조한 설명에서, 타일 최대 값과 타일 최소 값에 대한 업데이트를 서로 분리하여 설명하였지만, 이는 동시에 이루어질 수 있음을 밝혀둔다. 또한 하나의 픽셀은 가시 영역(TVR), 불확정 영역(UR) 및 배제 영역(TOR) 중 어느 하나의 영역에만 위치할 수 있으므로, 타일 최대 값에 대한 마스트 비트를 타일 최소 값에 대한 마스크 비트로 재사용할 수도 있다. 예를 들어 타일 최대 값을 업데이트 하는데 사용되었던 제1 오브젝트에 대한 픽셀들의 마스크 비트가 제2 오브젝트에 대하여는 타일 최소 값을 업데이트 하는데 사용될 수도 있다.
도 11은 본 발명의 일 실시예에 따른 도 3의 통합 조기 테스트 수행부의 구성을 나타내는 블록도이다.
도 11을 참조하면, 통합 조기 깊이 테스트부(300)는 제1 병렬화기(310), 제2 병렬화기(320), 타일 최대값 생성기(330), 타일 최소값 생성기(340) 및 마스크 비트 생성기(350) 및 병렬화기(380)를 포함하여 구성될 수 있다.
제1 병렬화기(310)는 현재 처리되는(래스터라이징되는) 픽셀의 3차원 좌표 값(x, y, z) 값을 픽셀의 위치를 나타내는 2차원 좌표값(x, y)과 픽셀의 깊이 값을 나타내는 z 좌표 값(z)으로 분리한다. 여기서 픽셀의 3차원 좌표 값(x, y, z) 값은 각각 복수 비트(예를 들어 32비트)의 부동 소수점(floating pont)으로 표현될 수 있다.
제2 병렬화기(320)는 이전에 처리된(래스터라이징된) 오브젝트에 대한 오프-칩 타일 최대값(zmax(off)), 오프-칩 타일 최소값(zmin(off)) 및 그 타일에 포함되는 픽셀들에 대한 오프-칩 마스크 비트들(MB(off))을 데이터 세트로서 구비하는 오프-칩 타일 데이터(TDATA(off))를 수신하고, 오프-칩 타일 데이터(TDATA(off))를 오프-칩 타일 최대값(zmax(off)), 오프-칩 타일 최소값(zmin(off)) 및 오프-칩 마스크 비트들(MB(off))로 분리한다. 역기서, 오프-칩 타일 최대값(zmax(off)) 및 오프-칩 타일 최소값(zmin(off))은 복수 비트의 플로우팅 포인트 값일 수 있고, 오프-칩 마스크 비트들(MB(off))도 하나의 타일에 포함되는 픽셀들에 대한 마스크 비트들이므로 복수의 비트일 수 있다.
타일 최대값 생성기(330)는 현재 래스터라이징되는 타일에 포함되는 픽셀들의 깊이 값을 기초로 온-칩 타일 최대값(zmax(on))을 생성한다. 보다 구체적으로 타일 최대값 생성기(330)는 하나의 타일에 포함되는 픽셀들의 깊이 값을 순차적으로 입력받아 이전 픽셀의 깊이 값과 현재 픽셀의 깊이 값을 비교하는 방식으로 가장 온-칩 타일 최대값(zmax(on))을 생성할 수 있다.
타일 최소값 생성기(340)는 현재 래스터라이징되는 타일에 포함되는 픽셀들의 깊이 값을 기초로 온-칩 타일 최소값(zmin(on))을 생성한다. 보다 구체적으로 타일 최소값 생성기(340)는 하나의 타일에 포함되는 픽셀들의 깊이 값을 순차적으로 입력받아 이전 픽셀의 깊이 값과 현재 픽셀의 깊이 값을 비교하는 방식으로 가장 온-칩 타일 최소값(zmin(on))을 생성할 수 있다.
마스크 비트 생성기(350)는 이전에 래스터라이징된 오브젝트에 대한 오프-칩 타일 최대값(zmax(off)), 오프-칩 타일 최소값(zmin(off)) 및 오프-칩 마스크 비트들(MB(off))을 기초로 현재 래스터라이징되고 있는 오브젝트에 대한 온-칩 마스크 비트(MB(on))를 산출한다. 보다 구체적으로 마스크 비트 생성기(350)는 오프-칩 타일 최대값(zmax(off)), 오프-칩 타일 최소값(zmin(off)) 및 오프-칩 마스크 비트(MB(off)) 및 현재 처리되는(래스터라이징되는) 픽셀의 2차원 좌표값(x, y)과 픽셀의 깊이 값을 나타내는 z 좌표 값(z)을 수신하고 이를 기초로 온-칩 마스크 비트(MB(on))를 산출할 수 있다.
직렬화기(380)는 온-칩 타일 최대값(zmax(on)), 온-칩 타일 최소값(zmin(on)) 및 온-칩 마스크 비트(MB(on))를 수신하고 이를 직렬화하여 온-칩 타일 데이터(TDTA(on))로 제공한다.
도 12는 본 발명의 일 실시예에 따른 도 11의 타일 최대값 생성기의 구성을 나타내는 블록도이다.
도 12를 참조하면, 타일 최대 값 생성기(330)는 비교기(331), 멀티플렉서(332) 및 버퍼(333)를 포함하여 구성될 수 있다.
비교기(331)는 현재 래스터라이징되는 픽셀의 깊이 값(Z(P))과 현재의 온-칩 타일 최대값(zmax(on))을 비교하여 그 결과를 나타내는 비교 신호(ZCS)를 출력한다. 예를 들어 현재 픽셀의 깊이 값(Z(P))이 현재의 온-칩 타일 최대값(zmax(on))보다 크면 하이 레벨의 비교 신호(ZCS)를 출력할 수 있다. 예를 들어, 현재 픽셀의 깊이 값(Z(P))이 현재의 온-칩 타일 최대값(zmax(on))보다 작으면 로우 레벨의 비교 신호(ZCS)를 출력할 수 있다. 멀티플렉서(332)는 비교 신호(ZCS)에 응답하여 현재 픽셀의 깊이 값(Z(P))이 현재의 온-칩 타일 최대값(zmax(on)) 중에서 더 큰 쪽을 선택하여 출력한다. 예를 들어, 비교 신호(ZCS)가 하이 레벨이면 멀티플렉서(332)는 현재 픽셀의 깊이 값(Z(P))을 선택하여 출력할 수 있고, 비교 신호(ZCS)가 로우 레벨이면 멀티플렉서(332)는 현재의 온-칩 타일 최대값(zmax(on))을 선택하여 출력할 수 있다. 버퍼(333)는 멀티플렉서(332)의 출력을 버퍼링하여 온-칩 타일 최대값(zmax(on))으로 출력할 수 있다. 실시예에 따라 버퍼(333)는 최대 타일 값 생성기(330)에 포함되지 않을 수도 있다. 이러한 방식으로 최대 타일 값 생성기(330)는 픽셀의 깊이 값이 입력될 때마다 온-칩 타일 최대값(zmax(on))을 갱신할 수 있다.
도 13은 본 발명의 일 실시예에 따른 도 11의 타일 최소값 생성기의 구성을 나타내는 블록도이다.
도 13을 참조하면, 타일 최소값 생성기(340)는 비교기(341), 멀티플렉서(342) 및 버퍼(343)를 포함하여 구성될 수 있다.
비교기(341)는 현재 래스터라이징되는 픽셀의 깊이 값(Z(P))과 현재의 온-칩 타일 최소값(zmin(on))을 비교하여 그 결과를 나타내는 비교 신호(ZCS)를 출력한다. 예를 들어 현재 픽셀의 깊이 값(Z(P))이 현재의 온-칩 타일 최소값(zmin(on))보다 크면 하이 레벨의 비교 신호(ZCS)를 출력할 수 있다. 예를 들어, 현재 픽셀의 깊이 값(Z(P))이 현재의 온-칩 타일 최소값(zmin(on))보다 작으면 로우 레벨의 비교 신호(ZCS)를 출력할 수 있다. 멀티플렉서(342)는 비교 신호(ZCS)에 응답하여 현재 픽셀의 깊이 값(Z(P))이 현재의 온-칩 타일 최소값(zmin(on)) 중에서 더 작은 쪽을 선택하여 출력한다. 예를 들어, 비교 신호(ZCS)가 로우 레벨이면 멀티플렉서(342)는 현재 픽셀의 깊이 값(Z(P))을 선택하여 출력할 수 있고, 비교 신호(ZCS)가 하이 레벨이면 멀티플렉서(342)는 현재의 온-칩 타일 최소값(zmin(on))을 선택하여 출력할 수 있다. 버퍼(343)는 멀티플렉서(342)의 출력을 버퍼링하여 온-칩 타일 최소값(zmin(on))으로 출력할 수 있다. 실시예에 따라 버퍼(343)는 최소 타일 값 생성기(340)에 포함되지 않을 수도 있다.
도 14는 본 발명의 일 실시예에 따른 도 10의 마스크 비트 생성기의 구성을 나타내는 블록도이다.
도 14를 참조하면, 마스크 비트 생성기(350)는 비교부(351), 선택기(354), 멀티플렉서(355), 디코더(356), 디멀티플렉서(357), 버퍼(358)를 포함한다. 마스크 비트 생성기(350)는 감지부(360)를 더 포함할 수도 있다.
비교부(351)는 제1 비교기(352) 및 제2 비교기(353)를 포함할 수 있다. 제1 비교기(352)는 현재 래스터라이징되는 픽셀의 깊이 값(Z)과 이전에 래스터라징된 오브젝트에 대한 오프-칩 타일 최대값(zmax(off))을 비교하여 제1 비교 신호(ZCS1)를 출력한다. 제2 비교기(353)는 현재 래스터라이징되는 픽셀의 깊이 값(Z)과 이전에 래스터라징된 오브젝트에 대한 오프-칩 타일 최소값(zmin(off))을 비교하여 제2 비교 신호(ZCS2)를 출력한다. 제1 비교 신호(ZCS1)와 제2 비교 신호(ZCS2)의 논리 레벨에 따라서 현재 래스터라이징되는 픽셀이 도 8의 3차원 공간에서 어느 영역에 위치하는지를 알 수 있다.
선택기(354)는 현재 픽셀의 위치(x,y 좌표값)에 따른 픽셀에 대한 마스크 비트를 선택할 수 있는 선택 신호(SS)를 출력할 수 있다. 멀티플렉서(355)는 선택 신호(SS)에 응답하여 이전에 래스터라이징된 오브젝트에 대한 오프-칩 마스크 비트(MB(off)) 중에서 현재 픽셀에 해당하는 마스크 비트를 선택하여 디코더(356)로 제공한다. 디코더(356)는 제1 비교 신호(ZCS1)와 제2 비교 신호(ZCS2)의 논리 레벨에 따라서 현재 픽셀에 해당하는 마스크 비트를 디코딩하여 출력한다. 디멀티플렉서(357)는 선택 신호(SS)에 응답하여 디코더(357)의 출력을 역다중화하여(즉 현재 픽셀의 마스크 비트를 업데이트하고 하나의 타일에 대한 모든 마스크비트를 출력) 버퍼(358) 온-칩 마스크 비트(MB(on))로 출력한다.
감지부(360)는 제1 비교 신호(ZCS1)와 제2 비교 신호(ZCS2)를 수신하고 이들의 논리 레벨에 따라 현재 픽셀이 도 8의 3차원 공간에서 어느 영역에 위치하는지를 나타내는 판정 신호(DS)를 출력할 수 있다. 예를 들어 현재 픽셀의 깊이 값이 오프-칩 타일 최소값(zmin(off))보다 작은 경우에는, 제1 비교 신호(ZCS1)는 로우 레벨이고, 제2 비교 신호(ZCS2)도 로우 레벨이다. 따라서 감지부(360)는 현재 픽셀이 가시 영역(TVR)에 속한다는 표지 신호(DS)를 출력할 수 있다. 예를 들어, 현재 픽셀의 깊이 값이 오프-칩 타일 최소값(zmin(off))과 오프-칩 타일 최대값(zmax(off))인 경우에는는, 제1 비교 신호(ZCS1)는 하이 레벨이고, 제2 비교 신호(ZCS2)는 로우 레벨이다. 따라서 감지부(360)는 현재 픽셀이 불확정 영역(UR)에 속한다는 판정 신호(DS)를 출력할 수 있다. 예를 들어 현재 픽셀의 깊이 값이 오프-칩 타일 최대값(zmax(off))보다 큰 경우에는, 제1 비교 신호(ZCS1)는 하이 레벨이고, 제2 비교 신호(ZCS2)도 하이 레벨이다. 따라서 감지부(360)는 현재 픽셀이 배제 영역(TOR)에 속한다는 판정 신호(DS)를 출력할 수 있다.
도 15는 본 발명의 일 실시예에 다른 도 5의 조기 깊이 캐시 메모리의 구성을 나타내는 블록도이다.
도 15를 참조하면, 조기 깊이 캐시 메모리(700)는 캐시 컨트롤러(710), 디멀티플렉서(721), 타일 데이터 저장부(722), 멀티플렉서(723), 태그 저장부(730), 태그 비교부(740) 및 캐시 히트/미스 제어부(750)를 포함하여 구성될 수 있다.
캐시 컨트롤러(710)는 어드레스 신호(ADDR)와 기입 타일 데이터(TDTA(W))를 수신하고, 어드레스 신호(ADDR)를 기초로 업데이트 제어 신호(UPC), 블록 선택 신호(BS)를 출력한다. 여기서 어드레스 신호(ADDR)는 도 11의 통합 조기 깊이 테스트부(300)로부터 제공될 수 있는 2차원 좌표값(x, y)의 일부일 수 있다. 즉 2차원 좌표값(x, y)이 각각 (예를 들어 32비트)의 부동 소수점(floating pont)으로 표현될 수 있는 값 일 때, 어드레스 신호(ADDR)는 2차원 좌표값(x, y) 각각의 상위 비트들을 포함할 수 있다. 또한 캐시 컨트롤러(710)는 기입 타일 데이터(TDTA(W))를 출력한다. 여기서 기입 타일 데이터(TDTA(W))는 통합 조기 깊이 테스트부(300)로부터 제공될 수 있다.
타일 데이터 저장부(722)는 복수의 슬롯들(SLOT1~SLOTm)을 포함할 수 있다. 복수의 슬롯들(SLOT1~SLOTm) 각각은 동일한 비트의 데이터를 저장할 수 있다. 예를 들어, 도 8을 참조할 때, 복수의 슬롯들(SLOT1~SLOTm) 각각은 네 개의 타일에 대한 타일 데이터(TDTA)을 저장할 수 있다. 전술한 바와 같이 타일 데이터(TDTA)는 오프-칩 타일 최대값(zmax(off)), 오프-칩 타일 최소값(zmax(on)) 및 하나의 타일에 포함되는 픽셀들의 마스크 비트들(MB)을 하나의 데이터 세트로서 포함하는 개념이다.
태그 저장부(730)는 복수의 태그 저장 엘리먼트들(731~73n)을 포함한다. 복수의 태그 저장 엘리먼트들(731~73n)은 각각 이전 태그값들(PTAG1~PTAGn)을 저장한다. 이전 태그값들(PTAG1~PTAGn) 각각은 각 타일에 대한 이전에 래스터라이징된 오브젝트에 타일 데이터 각각에 대한 유효 여부를 나타내는 값이다. 태그 비교부(740)는 복수의 앤드 게이트들(741~74n)을 포함하여 구성된다. 앤드 게이트들(741~74n) 각각에는 이전 태그값들(PTAG1~PTAGn) 각각과 캐시 컨트롤러(710)에서 제공되는 현재 태그값(CTAG)이 입력된다. 캐시 히트/미스 제어부(750)는 앤드 게이트들(741~74n) 각각의 출력에 기초하여 세트 선택 신호(SS)를 디멀티플렉서(721)와 멀티플렉서(723)에 제공한다.
어드레스 신호(ADDR)에 기초하여 캐시 컨트롤러(710)에서 제공되는 블록 선택 신호(BS)와 캐시 히트/미스 제어부(750)에서 제공되는 세트 선택 신호(SS)에 응답하여 멀티플렉서(723)는 타일 데이터 저장부(722)에 저장되어 있는, 현재 래스터라이징되고 있는 타일에 대하여 기저장된 타일 데이터를 오프-칩 타일 데이터(TDTA(off))로서 도 11의 통합 조기 테스트부(300)에 제공한다. 통합 조기 테스트부(300)는 전술한 바와 같이 현재 래스터라이징되고 있는 타일에 포함되는 픽셀들에 대하여 가시성 테스트를 수행하여 조기 깊이 캐시 메모리(700)에 온-칩 타일 데이터(TDTA(on))로서 제공한다. 디멀티플렉서(721)는 세트 선택 신호(SS)와 블록 선택 신호(BS)에 응답하여 온-칩 타일 데이터(TDTA(on))를 타일 데이터 저장부(722)의 해당 타일 데이터에 업데이트하게 된다. 또한 태그 비교부(740)는 이전 태그값(PTAG)와 현재 태그값(CTAG)을 비교하여 그 일치여부를 나타내는 출력 신호를 캐시 히트/미스 제어부(750)에 제공할 수 있다.
도 16은 본 발명의 일 실시예에 따른 통합 조기 테스트부에서 수행되는 동작을 나타내는 알고리즘이다.
도 16에 도시된 알고리즘은 도 18을 참조하여 상세히 설명된다.
도 17은 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 나타내는 흐름도이다.
이하 도 8 및 도 17을 참조하면, 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 상세히 설명한다.
본 발명의 일 실시예에 따른 조기 가시성 테스트 방법에서는, 도 8에서와 같이 현재 래스터라이징되고 있는 타일에 포함되는 픽셀의 깊이 값과 최소 타일 값(ZNT) 및 최대 타일 값(ZXT)을 비교한다(S110). 여기서 현재 래스터라이징되고 있는 타일이 최초로 래스터라이징되고 있는 타일이라면, 최소 타일 값(ZNT) 및 최대 타일 값(ZXT)은 미리 설정되어 있는 값일 수 있다. 여기서 현재 래스터라이징되고 있는 타일이 최초로 래스터라이징되고 있는 타일이 아니라면, 최소 타일 값(ZNT) 및 최대 타일 값(ZXT)은 이전에 드로잉된 타일에 대한 오프칩 타일 최소값(zim(off)) 및 오프칩 타일 최대값(zmax(off))일 수 있다. 상기 비교 결과와 픽셀의 드로잉여부를 나타내는 마스크비크(MB)에 기초하여 픽셀의 가시성여부를 판단한다(S120). 예를 들어, 도 8에서의 제1 픽셀(PX1)에서와 같이 가시 영역(TVR)에 속하는 경우, 테스트된 픽셀의 가시 픽셀로 판단된다. 예를 들어 테스트되는 픽셀이, 도 8에서의 제2 픽셀(PX2)에서와 같이 배제 영역(TOR)에 위치하고 해당하는 마스크 비트가 하이 레벨이면 테스트되는 픽셀은 배제 픽셀로 판단된다. 예를 들어 테스트되는 픽셀이 도 8에서의 제3 픽셀(PX3)과 같이 배제 영역(TOR)에 위치하고 해당하는 마스크 비트가 하이 레벨이면 테스트되는 픽셀은 불확정 픽셀로 판단된다. 예를 들어, 테스트되는 픽셀이 도 8에서의 제4 픽셀(PX4)과 같이 불확정 영역(UR)에 위치하면, 테스트되는 픽셀은 불확정 픽셀로 판단된다.
제1 픽셀(PX1)과 같은 가시 픽셀은 스크린상에서 보이는 것이 확실하므로 연속하는 처리에서 깊이 테스트를 수행하지 않아도 되므로 깊이 버퍼에 대한 메모리 액세스를 피할 수 있게 된다. 제2 픽셀(PX)과 같은 배제 픽셀은 스크린 상에서 보이지 않는 것이 확시하므로 연속하는 처리에서 텍스처 버퍼, 깊이 버퍼 및 컬러 버퍼에 대한 메모리 액세스를 피할수 있게 된다. 따라서 본 발명의 실시예에 따른 조기 가시성 테스트 방법에 따르면 불필요한 메모리 액세스를 대폭적으로 감소시켜 그래픽 처리장치의 성능을 향상시킬 수 있다.
도 18은 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 나타내는 흐름도이다.
도 18의 흐름도는 도 16의 알고리즘을 보다 구체적으로 나타낸다.
이하 도 3, 도 5, 도 8 내지 도 16 및 도 18을 참조하여 본 발명의 일 실시예에 따른 조기 가시성 테스트 방법을 보다 상세히 설명한다.
먼저, 온-칩 타일 최대값(zmax(on)), 온-칩 타일 최소값(zmin(on)) 및 마스크비트(MB)와 같이 데이터를 초기화한다(S210). 하나의 타일에 포함되는 픽셀(Pi)의 깊이 값(Z(pi))을 계산한다(S220). 계산된 현재 픽셀(Pi) 깊이 값 (Z(pi))이 오프-칩 타일 최소값(zmin(off))보다 작은지 여부를 판단한다(S230). 현재 픽셀(Pi) 깊이 값 (Z(pi))이 오프-칩 타일 최소값(zmin(off))보다 작으면(단계(S230)에서 Yes), 현재 픽셀(Pi)은 도 8의 제1 픽셀(PX1)과 같이 가시 픽셀로 판단된다(S230). 현재 픽셀(Pi) 깊이 값 (Z(pi))이 오프-칩 타일 최소값(zmin(off))보다 크면(단계(S230)에서 No), 현재 픽셀(Pi) 깊이 값 (Z(pi))이 오프-칩 타일 최대값(zmin(off))보다 크고 마스크 비트(MB)가 하이 레벨인지 여부가 판단된다(S240). 현재 픽셀(Pi) 깊이 값 (Z(pi))이 오프-칩 타일 최대값(zmin(off))보다 크고 마스크 비트(MB)가 하이 레벨이면(단계(S240)에서 Yes), 현재 픽셀(Pi)은 도 8의 제2 픽셀(PX2)과 같이 배제 픽셀로 판단된다(S260). 현재 픽셀(Pi) 깊이 값 (Z(pi))이 오프-칩 타일 최대값(zmin(off))보다 작거나 마스크 비트(MB)가 로우 레벨이면(단계(S240)에서 No), 현재 픽셀(Pi)은 도 8의 제3 픽셀(PX3) 및 제4 픽셀(PX4)와 같이 불확정 픽셀로 판단된다(S270). 현재 픽셀(Pi)에 대한 판단이 완료되면 다음 픽셀이 존재하는지 여부를 판단한다(S280). 다음 픽셀이 존재하지 않으면(단계(S280)에서 Yes), 현재 타일에 대한 처리가 완료되었으므로, 현재 타일에 대한 온-칩 타일 최대값(zmax(on)), 온-칩 타일 최소값(zmin(on)) 및 마스크비트(MB)를 업데이트한다(S310). 다음 픽셀이 존재하면(단계(S280)에서 No), 다음 픽셀로 트래버스하여(S290), 단계들(S220~S280)을 반복한다. 업데이트가 완료되면, 래스터라이징될 다음 타일이 존재하는지 여부를 판단한다(S310). 다음 타일이 존재하는 경우(단계(S310)에서 Yes)에는 단계로(S210)로 이동하여 전술한 과정을 반복하고, 다음 타일이 존재하는 경우(단계(S310)에서 No)에는 종료하게 된다.
도 19는 하나의 타일에 포함되는 픽셀들의 크기에 따른 본 발명의 실실시예에 따른 통합 조기 테스트부의 성능을 나타내는 시뮬레이션도이다.
도 19를 참조하면, 하나의 타일에 포함되는 픽셀들의 크기(개수)가 증가함에 따라 배제 영역(TOR), 가시 영역(TVR) 및 불확정 영역(UR) 각각에 속하는 픽셀들의 개수가 달라짐을 알 수 있다.
도 20은 하나의 타일에 포함되는 픽셀들의 크기에 따른 본 발명의 실실시예에 따른 통합 조기 테스트부의 성능을 나타내는 또 시뮬레이션도이다.
도 20에서는 BSPP(bits of storage per pixel)를 도입하여 본 발명과 종래 기술들에 따라 하나의 타일에 포함되는 픽셀들의 크기에 따른 BSPP를 나타내었다.
도 20에서 BSPP는 다음의 수학식에 의하여 표현된다.
[수학식 1]
BSPP = ((Nmax + Nmin)*32bit + Nmask*1bit)/Npixel
여기서, Nmax와 Nmin는 32비트 부동 소수점의 타일 최대값 및 타일 최소값을 나타내고, Nmask는 하나의 타일의 마스크 비트들의 수를 나타내고, Npixel은 하나의 타일에 포함되는 픽셀들의 수를 나타낸다.
또한 도 20에서, 본 발명의 실시예에 따른 통합 조기 깊이 테스트부는 U-EZT로 나타난다. 도 20에서 본 발명과 비교하기 위한 종래 기술들 중 Hybrid는 하나의 프레임동안 고정된 타일 최대값과 타일 최소값을 이용하는 조기 깊이 테스트 방법을 나타내고, HZ-buffer는 깊이 정보를 계층적 기도 구조로 구성하여 처리하고자 하는 픽셀의 깊이 테스트에 이용하는 방법을 나타낸다. 또한, Depth filter는 하나의 프레임을 렌더링하는 동안 고정된 위치를 가지는 깊이 필터를 이용하여 픽셀의 깊이 테스트에 이용하는 방법을 나타낸다. 또한 Z-min는 타일 최소값만을 이용하여 명확하게 보이는 픽셀을 찾아서 깊이 테스트를 생략하도록 하는 방법이다.
도 20을 참조하면, 8*4의 타일 사이즈에서 본 발명의 실시예에 따른 조기 가시성 테스트 방법의 BSPP가 훨씬 좋음을 알 수 있다.
도 21a 내지 도 21d는 본 발명의 실시예에 따른 조기 깊이 테스트 방법의 메모리 대역폭 관점에서의 효과를 테스트 하기 위한 테스트 신들을 나타낸다.
도 22a 내지 도 22d는 본 발명과 종래 기술들에 따라 도 21a 내지 도 21d의 테스트 신들을 렌더링하는 경우에 필요로 하는 메모리 액세스를 나타낸다.
도 22a 내지 도 22d에는 도 21a 내지 도 21d의 테스트 신들에 대하여 필요로하는 컬러 독출/기입(color read/write), 깊이 독출/기입(z-read/write), 텍스처 독출(texture read)이 나타나 있다. 컬러 독출/기입(color read/write)은 도 5의 컬러 캐시(630)가 외부 메모리(650)를 액세스하는 것을 나타내고, 깊이 독출/기입(z-read/write)은 도 5의 깊이 캐시(620)가 외부 메모리(650)를 액세스하는 것을 나타내고, 텍스처 독출(texture read)은 도 5의 텍스처 캐시(610)가 외부 메모리(650)를 액세스하는 것을 나타낸다. 외부 메모리(650)에 대한 액세스가 증가하는 것은 레이턴시가 증가하는 것을 의미하므로, 외부 메모리(650)에 대한 액세스가 감소할수록 그래픽 프로세서의 성능이 더 좋다는 것을 알 수 있다.
도 22a 내지 도 22d에서 Non-EZT는 조기 깊이(가시성) 테스트를 수행하지 않는 경우를 나타내며, Mid-texturing은 깊이 테스트부에서 조기 깊이 테스트를 수행하는 경우를 나타낸다.
도 22a 내지 도 22d를 참조하면, 도 21a 내지 도 21d의 테스트 신들을 렌더링하는 경우에 본 발명의 실시예에 따른 조기 가시성 테스트를 수행하는 경우가 종래 기술들에 비하여 외부 메모리에 대한 액세스를 훨씬 감소시킨다는 것을 알 수 있다.
도 1 내지 도 22d를 참조한 본 발명의 실시예들에 대한 설명에서는 주로, 픽셀들을 포함하는 타일 기반의 렌더링에 대하여 중점적으로 설명하였다. 하지만 본 발명의 실시예들은 타일 단위에 대하여 조기 가시성 테스트를 수행하는 경우에도 적용될 수 있고, 또한 삼각형 단위로 조기 가시성 테스틀 수행하는 경우에도 적용될 수 있다. 삼각형 단위로 조기 가시성 테스트를 수행하는 경우에는 도 3의 통합 조기 테스트 수행부(300)는 도 2의 삼각형 설정부(130) 다음에 연결되어 조기 가시성 테스트를 수행할 수 있다. 또한 복수의 픽셀들을 포함하는, 예를 들어 2*2 픽셀들을 하나의 픽셀 블록으로 정의하고 이 중에서 대표 픽셀을 정의하여 복수의 픽셀 블록들을 포함하는 타일에 대하여 조기 가시성 테스트를 수행할 수 있다. 이 경우에 2*2 픽셀들의 z 값 중 최대 값이 픽셀 블록의 대표 최대값으로 정의될 수 있고, 2*2 픽셀들의 z 값 중 최소 값이 픽셀 블록의 대표 최소값을 정의될 수 있다.
도 23은 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 23을 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(800)은 호스트 컴퓨터(또는 호스트, 810), 그래픽 서브시스템(820), 로컬 메모리(840) 및 디스플레이(850)를 포함할 수 있다.
컴퓨팅 시스템(800)은 데스크 탑 컴퓨터, 서버, 랩탑 컴퓨터, PDA, 태블릿 컴퓨터, 게임 콘솔, 휴대폰, 또는 스마트 폰일 수 있다. 호스트 컴퓨터(810)는 호스트 메모리(811)와 직접적으로 인터페이싱하거나 호스트 인터페이스(814)를 통하여 호스트 메모리(811)와 통신하는 시스템 메모리 컨트롤러(미도시)를 포함할 수 있다. 시스템 인터페이스(814)는 입출력 인터페이스일 수 있다.
드라이버(812)는 호스트 프로세서(813)와 그래픽 서브시스템(820) 사이의 프로세스들을 인터페이싱한다. 호스트 컴퓨터(810)는 시스템 인터페이스(814)와 그래픽 인터페이스(821)를 통하여 그래픽 서브시스템(820)과 통신한다.
그래픽 서브시스템(820)은 그래픽 인터페이스(821), 그래픽 프로세싱부(830), 메모리 컨트롤러(822) 및 디스플레이 컨트롤러(823)를 포함할 수 있다. 그래픽 프로세싱부(830)는 도 1 내지 도 22를 참조하여 전술한 일련의 그래픽 처리 동작들을 수행한다. 즉 그래픽 프로세싱부(830)는 도 1에서와 같이 기하 엔진(100), 래스터라이저(rasterizer, 200), 픽셀 쉐이더(400, 또는 프래그먼트 쉐이더), 래스터 수행부(raster operation unit, 500) 및 캐시부(600)를 포함하고 버텍스 데이터(VDTA)를 수신하고, 수신된 버텍스 테이터(VDTA)를 타일 기반으로 처리하여 선택적으로 프래그먼트 데이터(FDTA)를 생성한다. 메모리 컨트롤러(822)는 로컬 메모리(840)와 그래픽 프로세싱부(830) 사이의 메모리 액세스를 제어한다. 디스플레이 컨트롤러(823)는 메모리 컨트롤러(822)의 제어하에 해당하는 장면이 디스플레이(850)에 나타날 수 있도록 디스플레이(850)를 제어한다.
도 24는 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 무선 통신 디바이스를 나타내는 블록도이다.
도 24를 참조하면, 디바이스(900)는, 셀룰러 전화기, 스마트폰 단말기, 핸드셋, 개인 휴대 정보 단말기 (PDA), 랩탑 컴퓨터, 비디오 게임 유닛 또는 기타 다른 디바이스일 수도 있다. 디바이스(900)는, 코드 분할 다중 액세스(CDMA), 이동 통신을 위한 글로벌시스템(GSM) 과 같은 시분할 다중 액세스(TDMA), 또는 기타 다른 무선 통신 표준을 사용할 수도 있다.
디바이스(900) 는 수신 경로 및 송신 경로를 통해 양-방향 통신을 제공할 수도 있다. 수신 경로 상에서 하나 이상의 기지국들에 의해 송신된 신호들은 안테나 (911) 에 의해 수신될 수도 있고 수신기(RCVR; 913)에 제공될 수도 있다. 수신기(913)는 수신 신호를 컨디셔닝 및 디지털화하고, 추가적인 프로세싱을 위해 디지털 섹션(920)에 샘플들을 제공한다. 송신 경로 상에서, 송신기(TMTR; 915) 는 디지털 섹션(920)으로부터 송신된 데이터를 수신하고, 그 데이터를 프로세싱 및 컨디셔닝하고, 변조된 신호를 생성하며, 그 변조된 신호는 안테나(911)를 통해 하나 이상의 기지국들로 송신된다.
디지털 섹션(920)은 하나 이상의 디지털 신호 프로세서(DSP), 마이크로-프로세서, 감소된 명령 세트 컴퓨터(RISC) 등으로 구현될 수도 있다. 또한, 디지털 섹션(920)은 하나 이상의 주문형 집적 회로 (ASIC) 또는 기타 다른 타입의 집적 회로(IC) 상에서 제조될 수도 있다.
디지털 섹션(920)은, 예를 들어, 모뎀 프로세서 (934), 비디오 프로세서 (922), 애플리케이션 프로세서(924), 디스플레이 프로세서(928), 제어기/멀티코어 프로세서(926), 그래픽 프로세서(930), 및 외부 버스 인터페이스(EBI; 932)와 같은 다양한 프로세싱 및 인터페이스 유닛들을 포함할 수도 있다.
그래픽 프로세서(930) 는 그래픽 애플리케이션들에 대한 프로세싱을 수행할 수도 있으며, 여기에 설명된 바와 같이 구현될 수도 있다. 일반적으로, 그래픽 프로세서(930)는 임의의 세트의 그래픽 동작들에 대한 임의의 수의 프로세싱 유닛들 또는 모듈들을 포함할 수도 있다. 그래픽 프로세서(930) 의 특정 부분은 펌웨어 및/또는 소프트웨어로 구현될 수도 있다. 예를 들어, 제어
유닛은 여기에 설명된 기능들을 수행하는 펌웨어 및/또는 소프트웨어 모듈들 (예를 들어, 절차, 함수 등) 로 구현될 수도 있다. 펌웨어 및/또는 소프트웨어 코드들은 메모리(예를 들어, 도 1의 메모리 (940)) 에 저장될 수도 있고, 프로세서 (예를 들어, 멀티-코어 프로세서(926))에 의해 실행될 수도 있다. 메모리는 프로세서내에서 구현될 수도 있거나 프로세서 외부에 구현될 수도 있다.
그래픽 프로세서(930)는 오픈 그래픽 라이브러리 (OpenGL), Direct3D 등과 같은 소프트웨어 인터페이스를 구현할 수도 있다. 그래픽 프로세싱부(830)는 도 1 내지 도 22를 참조하여 전술한 일련의 그래픽 처리 동작들을 수행한다. 즉 그래픽 프로세서(930)는 도 1에서와 같이 기하 엔진(100), 래스터라이저(rasterizer, 200), 픽셀 쉐이더(400, 또는 프래그먼트 쉐이더), 래스터 수행부(raster operation unit, 500) 및 캐시부(600)를 포함하고 버텍스 데이터(VDTA)를 수신하고, 수신된 버텍스 테이터(VDTA)를 타일 기반으로 처리하여 선택적으로 프래그먼트 데이터(FDTA)를 생성한다.
제어기/멀티코어 프로세서(926)는 적어도 두 개의 코어를 포함하여 제어기/멀티코어 프로세서(926)가 처리해야하는 워크로드에 따라서 두 개의 코어에 워크로드를 배당하여 동시에 해당하는 워크로드를 처리할 수 있다.
도 25는 본 발명의 일 실시예에 따른 그래픽 프로세서를 포함하는 다른 컴퓨팅 시스템을 나타내는 블록도이다.
도 25를 참조하면, 컴퓨팅 시스템(1000)은 특정의 하드웨어 방식 및 소프트웨어 방식 기능부(functionality)에 실행 플랫폼을 제공하는 본 발명의 실시예에 따른 기본 컴퓨터 시스템의 구성 요소들을 보여주고 있다. 일반적으로, 컴퓨터 시스템(1000)은 적어도 하나의 CPU(1010), 시스템 메모리(1020), 및 적어도 하나의 그래픽 프로세서 유닛(GPU)(1100)을 포함한다. CPU(1010)는 브릿지 구성 요소/메모리 컨트롤러(도시 않됨)를 통해 시스템 메모리(1020)에 연결되거나 CPU(1010)의 내부 메모리 컨트롤러(도시 않됨)를 통해 시스템 메모리(1020)에 직접 연결될 수 있다. GPU(1100)는 디스플레이(1040)에 결합된다. 연산 능력을 더 향상시키기 위해서 하나 또는 그 이상의 부가적인 GPU가 시스템(1000)에 선택적으로 연결될 수 있다. GPU(1100)는 CPU(1010)와 시스템 메모리(1020)에 연결된다. 시스템(1000)은 예컨대 그래픽 렌더링 전용 GPU(1100)에 연결된 고성능 범용 CPU(1010)를 구비한 데스크톱 컴퓨터 시스템이나 서버 컴퓨터 시스템으로서 구현될 수 있다. 이와 같은 실시예에서는 주변 버스, 특수 그래픽 메모리, IO 장치 등을 추가하는 구성 요소들이 포함될 수 있다. 마찬가지로, 시스템(1000)은 휴대형 장치(예컨대, 셀폰(cellphone) 등)나, 셋톱 비디오 게임 콘솔 장치로서 구현될 수 있다. CPU(1010)는 적어도 두 개의 코어를 포함하여 제어기/멀티코어 프로세서(926)가 처리해야하는 워크로드에 따라서 두 개의 코어에 워크로드를 배당하여 동시에 해당하는 워크로드를 처리할 수 있다.
GPU(1100)는 별개의 구성 요소로서, 예컨대 커넥터(예컨대, AGP 슬롯, PCI-익스프레스 슬롯 등)를 통해 컴퓨터 시스템(1000)에 연결되도록 설계된 별개의 그래픽 카드, (예컨대, 마더보드에 바로 장착되는) 별개의 집적 회로 다이(die), 또는 컴퓨터 시스템 칩셋 구성 요소(도시 않됨)의 집적회로 다이 내에 포함된 집적 GPU로서 구현될 수있다. 추가적으로, 고대역폭의 그래픽 데이터를 저장하기 위한 로컬 그래픽 메모리(1030)가 GPU(1100)에 연결될수 있다.
GPU(1100)는 도 1 내지 도 22를 참조하여 전술한 일련의 그래픽 처리 동작들을 수행한다. 즉 그래픽 프로세서(930)는 도 1에서와 같이 기하 엔진(100), 래스터라이저(rasterizer, 200), 픽셀 쉐이더(400, 또는 프래그먼트 쉐이더), 래스터 수행부(raster operation unit, 500) 및 캐시부(600)를 포함하고 버텍스 데이터(VDTA)를 수신하고, 수신된 버텍스 테이터(VDTA)를 타일 기반으로 처리하여 선택적으로 프래그먼트 데이터(FDTA)를 생성한다.
본 발명의 실시예들에 따르면, 조기 깊이 테스트를 수행하여 메모리 액세스를 대폭적으로 감소시킬 수 있으므로, 본 발명의 실시예들은 그래픽 프로세서를 필요로하는 다양한 분야에 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
Claims (21)
- 하나의 타일에 포함되는 픽셀들의 최대 깊이 값, 최소 깊이 값 및 상기 각 픽셀들의 드로잉(drawing) 여부를 나타내는 마스크 비트에 기초하여 상기 픽셀들의 3차원 정보를 포함하는 버텍스 데이터를 처리하여 프래그먼트 데이터를 생성하는 래스터라이저(rasterizer);
상기 프래그먼트 데이터를 픽셀 기반으로 컬러드(colored) 데이터를 생성하는 픽셀 쉐이더(pixel shader); 및
상기 컬러드 데이터가 모니터상에서 디스플레이 될 수 있도록 픽셀 데이터로 변환하는 래스터 수행부(raster operation unit)를 포함하는 그래픽 프로세서. - 제1항에 있어서, 상기 각 픽셀들은 상기 최대 깊이 값 및 최소 깊이 값에 기초하여 3차원 공간 상에서 제1 영역, 제2 영역 및 제3 영역 중 어느 하나에 위치하는 것으로 결정되는 것을 특징으로 하는 그래픽 프로세서.
- 제2항에 있어서, 상기 제1 영역과 상기 제2 영역의 경계는 상기 최소 깊이 값(타일 최소 값)에 의하여 결정되고, 상기 제2 영역과 제3 영역의 경계는 상기 최대 깊이 값(타일 최대 값)에 의하여 결정되는 것을 특징으로 하는 그래픽 프로세서.
- 제3항에 있어서, 상기 래스터라이저는,
하나의 타일에 대하여 먼저 래스터라이징되는 제1 오브젝트에 대한 타일 최소 값 및 타일 최대 값과 나중에 래스터라이징되는 제2 오브젝트의 픽셀들의 깊이 값들을 비교하여 상기 제2 오브젝트의 픽셀들 각각의 폐기여부를 결정하는 것을 특징으로 하는 그래픽 프로세서. - 제4항에 있어서, 상기 제2 오브젝트의 픽셀들 중 상기 타일 최대 값보다 큰 깊이 값을 갖고 드로잉된 픽셀들을 폐기되는 것을 특징으로 하는 그래픽 프로세서.
- 제3항에 있어서, 상기 타일 최대 값은 상기 하나의 타일의 픽셀들의 깊이 값이 상기 타일 최대 값과 비교될 때마다 갱신되고, 상기 타일 최소 값은 상기 하나의 타일의 픽셀들이 깊이 값이 상기 타일 최소 값과 모두 비교된 후에 갱신되는 것을 특징으로 하는 그래픽 프로세서.
- 제1항에 있어서, 상기 래스터라이저는,
상기 버텍스 데이터에 대하여 트래버설 프로세싱하는 트래버설 처리부;
상기 트래버설 처리부의 출력을 스팬 프로세싱하는 스팬 처리부; 및
상기 스팬 처리부에서 출력되는 상기 하나의 타일에 포함되는 상기 픽셀들의 깊이 값들에 기초하여 깊이 테스트를 수행하여 상기 픽셀들의 가시성 여부를 결정하고, 상기 픽셀들의 드로잉 여부에 따라 상기 마스크 비트의 논리 레벨을 결정하는 통합 조기 깊이 테스트부를 포함하는 것을 특징으로 하는 그래픽 프로세서. - 제7항에 있어서, 상기 통합 조기 깊이 테스트부는,
상기 픽셀들 각각의 깊이 값을 기초로 현재 래스터라이징되는 오브젝트에 대한 온-칩 타일 최대 값을 산출하는 타일 최대값 생성기;
상기 픽셀들 각각의 깊이 값을 기초로 현재 래스터라이징되는 상기 오브젝트에 대한 온-칩 타일 최소 값을 산출하는 타일 최소값 값 생성기; 및
이전에 래스터라이징된 오브젝트에 대한 타일 최대 값인 오프-칩 타일 최대 값, 타일 최소 값인 오프-칩 타일 최소 값 및 상기 이전에 래스터라이징된 상기 오브젝트에 대한 오프-칩 마스크 비트를 기초로 상기 현재 래스터라이징되고 있는 상기 오브젝트에 대한 온-칩 마스크 비트를 산출하는 마스크 비트 생성기를 포함하는 그래픽 프로세서. - 제8항에 있어서, 상기 타일 최대 값 생성기는,
현재 픽셀의 제1 깊이 값 및 이전 픽셀의 제2 깊이 값을 비교하여 비교 신호를 출력하는 비교기; 및
상기 비교 신호에 응답하여 상기 제1 깊이 값 및 상기 제2 깊이 값 중에서 큰 깊이 값을 선택하여 상기 온-칩 타일 최대 값으로 제공하는 선택기를 포함하는 것을 특징으로 하는 그래픽 프로세서. - 제8항에 있어서, 상기 타일 최소 값 생성기는,
현재 픽셀의 제1 깊이 값 및 이전 픽셀의 제2 깊이 값을 비교하여 비교 신호를 출력하는 비교기; 및
상기 비교 신호에 응답하여 상기 제1 깊이 값 및 상기 제2 깊이 값 중에서 작은 깊이 값을 선택하여 상기 온-칩 타일 최소 값으로 제공하는 선택기를 포함하는 것을 특징으로 하는 그래픽 프로세서. - 제8항에 있어서, 상기 마스크 비트 생성기는,
현재 픽셀의 깊이 값을 상기 오프-칩 타일 최대 값과 상기 오프-칩 타일 최소 값 각각과 비교하여 제1 비교 신호 및 제2 비교 신호를 제공하는 비교부;
상기 제1 비교 신호, 상기 제2 비교 신호에 따라 상기 현재 픽셀의 오프-칩 마스크 비트를 디코딩하는 디코더; 및
상기 현재 픽셀을 나타내는 선택신호에 따라 상기 디코더의 출력을 역다중화하여 상기 현재 픽셀의 마스크 비트를 상기 온-칩 마스크 비트로 갱신하는 디멀티플렉서를 포함하는 것을 특징으로 하는 그래픽 프로세서. - 제11항에 있어서, 상기 마스크 비트 생성기는,
상기 제1 비교 신호 및 상기 제2 비교 신호에 기초하여 상기 현재 픽셀의 가시성 여부를 나타내는 판정 신호를 제공하는 감지부를 더 포함하는 것을 특징으로 하는 그래픽 프로세서. - 제1항에 있어서, 상기 타일 최대 값, 상기 타일 최소 값 및 상기 마스크 비트를 저장하기 위한 조기 깊이 캐시 메모리를 구비하는 캐시부를 포함하는 것을 특징으로 하는 그래픽 프로세서.
- 하나의 타일에 포함되는 현재 래스터라이징되는 제1 오브젝트에 대한 픽셀의 깊이 값을 최소 타일 값 및 최대 타일 값과 비교하는 단계; 및
상기 비교 결과와 상기 픽셀의 드로잉여부를 나타내는 마스크 비트에 기초하여 상기 픽셀의 가시성여부를 판단하는 조기 가시성 테스트 방법. - 제15항에 있어서, 상기 제1 오브젝트가 상기 하나의 타일에 대하여 최초로 래스터라이징되는 경우, 상기 최소 타일 값 및 상기 최대 타일 값은 미리 정해진 값인 것을 특징으로 하는 조기 가시성 테스트 방법.
- 제15항에 있어서, 상기 제1 오브젝트가 상기 하나의 타일에 대하여 이미 래스터라이징된 제2 오브젝트 이후에 래스터라이징되는 경우, 상기 최소 타일 값 및 상기 최대 타일 값은 상기 제2 오브젝트로부터 획득된 값인 것을 특징으로 하는 조기 가시성 테스트 방법.
- 제17항에 있어서, 상기 타일 최대값은 상기 제2 오브젝트에 관한 픽셀들의 깊이 값 중 가장 큰 값이고, 상기 타일 최소값은 상기 제2 오브젝트에 관한 픽셀들의 깊이 값 중 가장 작은 값인 것을 특징으로 하는 조기 가시성 테스트 방법.
- 제15항에 있어서, 상기 픽셀의 깊이 값이 상기 타일 최소값보다 작은 경우에는 상기 픽셀은 가시 픽셀로 판단되는 것을 특징으로 하는 조기 가시성 테스트 방법.
- 제15항에 있어서, 상기 픽셀의 깊이 값이 상기 타일 최대값보다 크고, 상기 픽셀에 대한 마스크 비트가 상기 픽셀이 드로잉되었다는 것을 나타내는 경우 상기 픽셀은 배제 픽셀로 판단되는 것을 특징으로 하는 조기 가시성 테스트 방법.
- 제15항에 있어서, 상기 픽셀의 깊이 값이 상기 타일 최대값보다 크고, 상기 픽셀에 대한 마스크 비트가 상기 픽셀이 드로잉되지 않았음을 나타내는 경우 상기 픽셀은 불확정 픽셀로 판단되는 것을 특징으로 하는 조기 가시성 테스트 방법.
- 제15항에 있어서, 상기 타일 최대 값은 상기 하나의 타일의 픽셀들의 깊이 값이 상기 타일 최대 값과 비교될 때마다 갱신되고, 상기 타일 최소 값은 상기 하나의 타일의 픽셀들이 깊이 값이 상기 타일 최소 값과 모두 비교된 후에 갱신되는 것을 특징으로 하는 조기 깊이 테스트 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110015316A KR101782044B1 (ko) | 2011-02-22 | 2011-02-22 | 그래픽 프로세서 및 조기 가시성 테스트 방법 |
US13/277,665 US9092906B2 (en) | 2011-02-22 | 2011-10-20 | Graphic processor and method of early testing visibility of pixels |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110015316A KR101782044B1 (ko) | 2011-02-22 | 2011-02-22 | 그래픽 프로세서 및 조기 가시성 테스트 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120096119A true KR20120096119A (ko) | 2012-08-30 |
KR101782044B1 KR101782044B1 (ko) | 2017-09-26 |
Family
ID=46652347
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110015316A KR101782044B1 (ko) | 2011-02-22 | 2011-02-22 | 그래픽 프로세서 및 조기 가시성 테스트 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9092906B2 (ko) |
KR (1) | KR101782044B1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150090118A (ko) * | 2012-11-29 | 2015-08-05 | 퀄컴 인코포레이티드 | 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크 |
KR20150106947A (ko) * | 2013-01-17 | 2015-09-22 | 퀄컴 인코포레이티드 | 가시성 정보를 사용한 그래픽 데이터의 렌더링 |
KR20160016005A (ko) * | 2014-08-01 | 2016-02-15 | 삼성전자주식회사 | 이미지 처리 방법 및 이미지 처리 장치 |
KR20170009780A (ko) * | 2015-07-15 | 2017-01-25 | 에이알엠 리미티드 | 데이터 처리 시스템 |
KR20180054814A (ko) * | 2015-09-23 | 2018-05-24 | 퀄컴 인코포레이티드 | 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089774B2 (en) * | 2011-11-16 | 2018-10-02 | Qualcomm Incorporated | Tessellation in tile-based rendering |
US8842131B2 (en) * | 2012-01-10 | 2014-09-23 | Fanhattan Llc | System and method for framework clipping |
US9652815B2 (en) | 2012-09-11 | 2017-05-16 | Nvidia Corporation | Texel data structure for graphics processing unit programmable shader and method of operation thereof |
US9165399B2 (en) | 2012-11-01 | 2015-10-20 | Nvidia Corporation | System, method, and computer program product for inputting modified coverage data into a pixel shader |
GB201223089D0 (en) | 2012-12-20 | 2013-02-06 | Imagination Tech Ltd | Hidden culling in tile based computer generated graphics |
US9467681B2 (en) * | 2013-03-25 | 2016-10-11 | Microsoft Technology Licensing, Llc | Representation and compression of depth data |
KR102048885B1 (ko) | 2013-05-09 | 2019-11-26 | 삼성전자 주식회사 | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법 |
KR102116708B1 (ko) | 2013-05-24 | 2020-05-29 | 삼성전자 주식회사 | 그래픽스 프로세싱 유닛 |
JP6347957B2 (ja) * | 2014-01-17 | 2018-06-27 | シナプティクス・ジャパン合同会社 | 表示装置、表示パネルドライバ、及び、表示パネルの駆動方法 |
US9824412B2 (en) * | 2014-09-24 | 2017-11-21 | Intel Corporation | Position-only shading pipeline |
US9489710B2 (en) * | 2015-02-10 | 2016-11-08 | Qualcomm Incorporated | Hybrid rendering in graphics processing |
US10368104B1 (en) * | 2015-04-01 | 2019-07-30 | Rockwell Collins, Inc. | Systems and methods for transmission of synchronized physical and visible images for three dimensional display |
US20170345206A1 (en) * | 2016-05-27 | 2017-11-30 | Intel Corporation | Occlusion query apparatus and method for accelerated rendering |
US20180082465A1 (en) * | 2016-09-16 | 2018-03-22 | Prasoonkumar Surti | Apparatus and method for optimized tile-based rendering |
CN109891463B (zh) * | 2016-10-25 | 2023-08-29 | 索尼公司 | 图像处理设备和图像处理方法 |
CN107767382B (zh) * | 2017-09-26 | 2018-10-30 | 武汉市国土资源和规划信息中心 | 静态三维地图建筑物轮廓线的自动提取方法及系统 |
CN109389548B (zh) * | 2018-10-12 | 2023-07-21 | 格兰菲智能科技有限公司 | 计算机系统及其绘图处理方法 |
US11443476B2 (en) * | 2020-05-27 | 2022-09-13 | Canon Medical Systems Corporation | Image data processing method and apparatus |
US11682109B2 (en) * | 2020-10-16 | 2023-06-20 | Qualcomm Incorporated | Configurable apron support for expanded-binning |
CN116263981B (zh) * | 2022-04-20 | 2023-11-17 | 象帝先计算技术(重庆)有限公司 | 图形处理器、系统、装置、设备及方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020093356A1 (en) | 2000-11-30 | 2002-07-18 | Williams Thomas W. | Intelligent test vector formatting to reduce test vector size and allow encryption thereof for integrated circuit testing |
KR100546383B1 (ko) | 2003-09-29 | 2006-01-26 | 삼성전자주식회사 | 눈에 보이지 않는 프래그먼트를 처리하기 위한 3차원그래픽스 렌더링 엔진 및 그 방법 |
US7589722B2 (en) * | 2004-08-10 | 2009-09-15 | Ati Technologies, Ulc | Method and apparatus for generating compressed stencil test information |
US8089486B2 (en) | 2005-03-21 | 2012-01-03 | Qualcomm Incorporated | Tiled prefetched and cached depth buffer |
TW200744019A (en) | 2006-05-23 | 2007-12-01 | Smedia Technology Corp | Adaptive tile depth filter |
KR100793990B1 (ko) | 2006-09-18 | 2008-01-16 | 삼성전자주식회사 | 타일 기반 3차원 렌더링에서의 조기 z 테스트 방법 및시스템 |
-
2011
- 2011-02-22 KR KR1020110015316A patent/KR101782044B1/ko active IP Right Grant
- 2011-10-20 US US13/277,665 patent/US9092906B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150090118A (ko) * | 2012-11-29 | 2015-08-05 | 퀄컴 인코포레이티드 | 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크 |
KR20150106947A (ko) * | 2013-01-17 | 2015-09-22 | 퀄컴 인코포레이티드 | 가시성 정보를 사용한 그래픽 데이터의 렌더링 |
KR20160016005A (ko) * | 2014-08-01 | 2016-02-15 | 삼성전자주식회사 | 이미지 처리 방법 및 이미지 처리 장치 |
KR20170009780A (ko) * | 2015-07-15 | 2017-01-25 | 에이알엠 리미티드 | 데이터 처리 시스템 |
KR20180054814A (ko) * | 2015-09-23 | 2018-05-24 | 퀄컴 인코포레이티드 | 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭 |
Also Published As
Publication number | Publication date |
---|---|
US20120212488A1 (en) | 2012-08-23 |
US9092906B2 (en) | 2015-07-28 |
KR101782044B1 (ko) | 2017-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101782044B1 (ko) | 그래픽 프로세서 및 조기 가시성 테스트 방법 | |
US9633469B2 (en) | Conservative rasterization of primitives using an error term | |
KR102048885B1 (ko) | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법 | |
US9569862B2 (en) | Bandwidth reduction using texture lookup by adaptive shading | |
US10121276B2 (en) | Infinite resolution textures | |
US10055883B2 (en) | Frustum tests for sub-pixel shadows | |
US9530189B2 (en) | Alternate reduction ratios and threshold mechanisms for framebuffer compression | |
EP3350766B1 (en) | Storing bandwidth-compressed graphics data | |
US9626733B2 (en) | Data-processing apparatus and operation method thereof | |
US10068366B2 (en) | Stereo multi-projection implemented using a graphics processing pipeline | |
US9710933B2 (en) | Method and apparatus for processing texture | |
US20150179142A1 (en) | System, method, and computer program product for reduced-rate calculation of low-frequency pixel shader intermediate values | |
US20160140737A1 (en) | Bandwidth reduction using vertex shader | |
US9905037B2 (en) | System, method, and computer program product for rejecting small primitives | |
US20180061115A1 (en) | Graphics processing systems and graphics processors | |
KR102251444B1 (ko) | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 안티 에일리어싱 방법 | |
CN114758051A (zh) | 一种图像渲染方法及其相关设备 | |
US10417813B2 (en) | System and method for generating temporally stable hashed values | |
US10192348B2 (en) | Method and apparatus for processing texture | |
US8525843B2 (en) | Graphic system comprising a fragment graphic module and relative rendering method | |
US8773447B1 (en) | Tag logic scoreboarding in a graphics pipeline | |
US9836877B2 (en) | Hardware accelerated simulation of atmospheric scattering | |
CN118043850A (zh) | Meshlet着色图集 | |
CN115880127A (zh) | 一种渲染格式选择方法及其相关设备 | |
CN118229507A (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 |