KR20070108823A - 초기 z-모드를 이용한 구성가능한 그래픽 렌더링파이프라인의 최적화 - Google Patents

초기 z-모드를 이용한 구성가능한 그래픽 렌더링파이프라인의 최적화 Download PDF

Info

Publication number
KR20070108823A
KR20070108823A KR1020070044151A KR20070044151A KR20070108823A KR 20070108823 A KR20070108823 A KR 20070108823A KR 1020070044151 A KR1020070044151 A KR 1020070044151A KR 20070044151 A KR20070044151 A KR 20070044151A KR 20070108823 A KR20070108823 A KR 20070108823A
Authority
KR
South Korea
Prior art keywords
mode
engine
rendering pipeline
initial
graphics rendering
Prior art date
Application number
KR1020070044151A
Other languages
English (en)
Other versions
KR100899488B1 (ko
Inventor
마크 제이. 프렌치
엠멧 엠. 킬가리프
스티븐 이. 몰나르
월터 알. 스테이너
더글라스 에이. 부리스
아담 클락 웨이트켐퍼
Original Assignee
엔비디아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔비디아 코포레이션 filed Critical 엔비디아 코포레이션
Publication of KR20070108823A publication Critical patent/KR20070108823A/ko
Application granted granted Critical
Publication of KR100899488B1 publication Critical patent/KR100899488B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

본 발명의 일 실시예는 가능할 때마다 섀이딩 연산에 앞서 Z-테스트 연산을 앞당겨 실행함으로써 그래픽 렌더링 효율을 최적화하는 아키텍처를 제시한다. 셋업 엔진에 의해 유지된 현 렌더링 상태는 "초기(early)" Z-테스팅을 위하여 섀이더 엔진 상에서 Z-테스트 기능을 앞당겨 실행하는 것이 가능한지 또는 "후기(late)" Z-테스팅을 위하여 Z-테스트 기능이 섀이딩 연산 후까지 연기되어야 하는지를 결정한다. 상기 현 렌더링 상태에 의해 결정되는 대로, 초기 Z 또는 후기 Z 모드를 위한 적절한 데이터 흐름이 동적으로 구성되도록, 데이터가 파이프라인 내의 각 프로세싱 엔진에 라우팅된다. 섀이더 엔진은 유리하게는 섀이딩 연산에 의해 그 z-값들이 변경되지 않는 샘플들을 그것들이 섀이더 엔진에 입력되기 전에 폐기함으로써 가능할 때마다 불필요한 작업 부담을 덜게 된다. 동일한 기능 유닛들이 초기 Z 및 후기 Z 구성들의 양쪽 모두에서 이용되어, 실시를 위해 필요한 추가 하드웨어를 최소화한다.
그래픽 렌더링 파이프라인, 초기(early) Z-모드, 후기(late) Z-모드, Z-테스팅, 섀이딩, 래스터, 기하 프리미티브

Description

초기 Z-모드를 이용한 구성가능한 그래픽 렌더링 파이프라인의 최적화{OPTIMIZING A CONFIGURABLE GRAPHICS RENDERING PIPELINE USING EARLY Z-MODE}
도 1은 본 발명의 일 실시예에 따른, 그래픽 렌더링 파이프라인을 통한 데이터 흐름의 개념도.
도 2는 본 발명의 일 실시예에 따른, 도 1의 PROP를 통한 데이터 흐름의 개념도.
도 3은 본 발명의 일 실시예에 따른, 도 1의 그래픽 렌더링 파이프라인에서 동작 모드를 스위칭하기 위한 방법 단계들의 흐름도.
도 4a는 본 발명의 일 실시예에 따른, 후기(late) Z-모드에서 동작하는 경우의 도 1의 그래픽 렌더링 파이프라인의 논리적 구성을 예시하는 도면.
도 4b는 본 발명의 일 실시예에 따른, 초기(early) Z-모드에서 동작하는 경우의 도 1의 그래픽 렌더링 파이프라인의 논리적 구성을 예시하는 도면.
도 5는 본 발명의 하나 이상의 양태들을 구현하도록 구성된 컴퓨팅 디바이스의 개념도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 그래픽 렌더링 파이프라인
110 : 셋업 엔진
111 : 히스테리시스 카운터
115 : 래스터 엔진
120 : Z 래스터 연산 유닛(ZROP)
130 : 프리-래스터 연산 유닛(PROP)
131 : 초기 Z-모드 경로
132 : 후기 Z-모드 경로
140 : 섀이더 엔진
160 : 프레임 버퍼
본 발명의 실시예들은 일반적으로 컴퓨터 그래픽에 관한 것으로 더 구체적으로는 초기 Z-모드를 이용한 그래픽 렌더링 파이프라인의 최적화에 관한 것이다.
그래픽 렌더링 파이프라인(graphics rendering pipeline)은 통상적으로 데이터플로우-스타일 파이프라인으로 조직된 전문화된 프로세싱 엔진들의 세트로 구성된다. 임의의 데이터 페치 엔진들 뒤에, 셋업 엔진은 통상적으로 그래픽 렌더링 엔진의 최상부에 있다. 셋업 엔진은 삼각형과 같은 기하학적 프리미티브들에 작용하여, 그 기하학적 프리미티브들의 변환된 또는 단순화된 표현들을 래스터 엔진(raster engine)에 출력한다. 래스터 엔진은 각각의 기하학적 프리미티브와 관련된 픽셀 커버리지(pixel coverage)를 결정하여, 관련 깊이 값(depth value)(Z- 값)을 갖는 섀이딩되지 않은(unshaded) 픽셀 프리미티브들의 순차적 스트림을 생성한다. 섀이더 엔진(shader engine)이 래스터 엔진으로부터의 섀이딩되지 않은 픽셀들의 순차적 스트림에 작용하여, 섀이딩된(shaded) 픽셀들의 스트림을 생성한다. 주어진 픽셀의 컬러를 계산하는 것에 더하여, 일부 섀이더 엔진들은 선택적으로 픽셀의 Z-값을 생성 또는 변경한다. Z-래스터 연산(Z-raster operations)(ZROP) 엔진이 Z-테스팅이라 불리는 연산을 통하여 새로운 픽셀이 저장(save)되어야 하는지 폐기(discard)되어야 하는지를 결정한다. Z-테스팅은 새로운 픽셀의 깊이 및 스텐실(stencil) 데이터를 새로운 픽셀의 위치에서의 현 깊이 버퍼 내의 이전에 저장된 깊이 및 스텐실 데이터와 비교한다. 픽셀이 Z-테스팅에서 살아남으면, ZROP 엔진은 선택적으로 새로운 픽셀의 깊이 및 스텐실 데이터를 현 깊이 버퍼에 기입한다. Z-리졸브(resolve) 엔진이 Z-테스팅의 결과들을 관련 픽셀과 관련된 레이턴시 버퍼 데이터(latency buffered date)와 병합(merge)한다. Z-리졸브 엔진은 Z-테스트에서 살아남은 픽셀들을 컬러 래스터 연산(color raster operations)(CROP) 엔진에 송신하고 Z-테스트에서 살아남지 못한 픽셀들은 폐기한다. 컬러 래스터 연산(CROP) 엔진은 새로운 픽셀의 컬러 데이터를 업데이트하여 현 컬러 버퍼에 기입한다.
그래픽 렌더링 파이프라인에서의 프로세싱 단계들의 정확한 시퀀스는 통상적으로 렌더링 프로세스에서의 순차적 데이터 의존성(sequential data dependence)의 가장 단순한 저감(simplest reduction)을 수용하도록 설계된다. 예를 들면, 삼각형 프리미티브는 그 삼각형에 의해 커버된 픽셀들의 세트에 대하여 픽셀 연산이 수 행되기 전에 픽셀 프리미티브로 래스터화(rasterize)되어야 한다. 또한, 깊이 버퍼 내의 이전에 계산된 Z-값들과 비교되기 전에 픽셀의 Z-값이 계산되어야 한다. Z-테스팅은 통상적으로 섀이딩(shading) 후에 수행되어, 섀이더 엔진에게 Z-테스팅에 앞서 임의의 깊이 또는 스텐실 계산을 끝낼 기회를 제공한다.
잘 알려진 바와 같이, 섀이더 엔진은 그래픽 렌더링 파이프라인의 가장 값비싼 구성요소로서, 가장 많은 논리 자원들 및 가장 많은 전력을 소비한다. 더욱이, 섀이더 엔진에서 통상적으로 실행되는 복잡한 섀이딩 알고리즘들로 인하여 섀이더 엔진은 그래픽 렌더링 파이프라인에서 주된 성능 병목 장애(performance bottleneck)가 된다. 래스터 엔진에서의 초기 Z-컬링(culling)은 이들 프리미티브들에 관련된 작업이 섀이더 엔진 내에서 트리거(trigger)되기 전에 폐색(occlude)될 것으로 알려진 프리미티브들을 폐기함으로써 얼마간의 성능 이득을 달성한다. 그러나, 초기 Z-컬링은 사소한 폐기 메커니즘일 뿐, 보다 정확한 Z-테스팅에 대한 대용(substitute)은 아니다. 초기 Z-컬링이 채용되는 경우에도, Z-테스팅 단계는 섀이더 엔진에 의해 처리된 픽셀들 중 절반 이상을 폐기할 수 있다. 더 중요한 것은, 섀이더 엔진은 전형적으로 섀이딩 연산 중에 폐기된 픽셀들 중 다수의 Z-값들을 변경조차 하지 않아, 섀이더 엔진을 통한 이들 픽셀들의 횡단을 불필요하게 만든다. 따라서, 표준 아키텍처의 결과는, 그래픽 렌더링 파이프라인에서 단 하나의 가장 값비싼 자원인 섀이더 엔진이 상당히 비효율적인 수준에서 동작한다는 것이다.
전술한 내용이 예증하는 바와 같이, 당업계에서는 그래픽 렌더링 파이프라인 에서의 섀이더 엔진 효율을 향상시키는 기법이 요구되고 있다.
본 발명의 일 실시예는 그래픽 프리미티브들을 처리하기 위한 구성가능한 그래픽 렌더링 파이프라인을 제시한다. 이 그래픽 렌더링 파이프라인은 프로세싱이 초기(early) Z-모드에서 처리되어야 하는지 후기(late) Z-모드에서 처리되어야 하는지를 결정하도록 구성된 셋업 엔진과, 이 셋업 엔진으로부터 기하 프리미티브를 수신하고 그 기하 프리미티브를 하나 이상의 픽셀 프리미티브들로 변환하도록 구성된 래스터 엔진과, 픽셀 프리미티브와 관련된 하나 이상의 샘플들에 대하여 섀이딩 연산을 수행하도록 구성된 섀이더 엔진과, 상기 샘플들의 각각에 대하여 Z-테스팅을 수행하도록 구성된 Z-래스터 연산(Z-raster operations)(ZROP) 유닛과, 각 샘플에 대하여, 상기 샘플과 관련된 Z-테스트 결과들에 기초하여 상기 샘플이 유지되어야 할지 폐기되어야 할지를 결정하도록 구성된 Z-리졸브 엔진과, 초기 Z-모드와 후기 Z-모드 양쪽 모두를 지원하기 위해 상기 섀이더 엔진과 상기 ZROP 유닛 사이의 데이터 흐름 경로를 변경하도록 구성된 프리-래스터 연산(pre-raster operations)(PROP) 유닛을 포함한다. 픽셀 프리미티브와 관련된 샘플들은, 상기 그래픽 렌더링 파이프라인이 초기 Z-모드용으로 구성되는 경우에는, 먼저 상기 ZROP 유닛 및 상기 Z-리졸브 엔진에 의해 처리된 다음 상기 섀이더 엔진에 의해 처리되고, 상기 그래픽 렌더링 파이프라인이 후기 Z-모드용으로 구성되는 경우에는, 먼저 상기 섀이더 엔진에 의해 처리된 다음 상기 ZROP 유닛 및 상기 Z-리졸브 엔진에 의해 처리된다.
개시된 그래픽 렌더링 파이프라인의 하나의 이점은, 적절한 상황 하에서, 샘플들이 섀이더 엔진에 송신되기 전에 Z-테스팅이 실시될 수 있고, 그에 따라서 종래 기술의 아키텍처에 대하여 그래픽 렌더링 파이프라인의 처리 효율이 증대된다는 점이다.
상술한 본 발명의 특징들이 상세히 이해될 수 있도록, 위에서 간략히 요약된 발명을 실시예들을 참조하여 보다 상세히 설명할 수 있다. 실시예들 중 일부는 첨부 도면들에 예시되어 있다. 그러나, 첨부 도면들은 단지 이 발명의 전형적인 실시예들만을 예시하는 것이므로 그 범위를 제한하는 것으로 간주되어서는 안 될 것이다. 본 발명은 다른 균등하게 유효한 실시예들을 허용할 수 있기 때문이다.
본 발명은 대부분의 그래픽 렌더링 파이프라인들의 잘 알려진 성능 병목 장애인 섀이더 엔진에 대한 작업 부하를 저감시킴으로써 그래픽 렌더링 파이프라인의 전체 효율을 향상시킨다. 특정 상황에서 초기 Z-테스팅을 허용하도록 그래픽 렌더링 파이프라인을 동적으로 재구성하고, 폐색(occlude)된 픽셀들이 섀이딩 전에 폐기될 수 있게 함으로써, 섀이더 엔진은 종래의 그래픽 렌더링 파이프라인들에서 일반적인 불필요한 작업 부담을 덜게 된다.
도 1은 본 발명의 일 실시예에 따른, 그래픽 렌더링 파이프라인(100)을 통한 데이터 흐름의 개념도이다. 도시된 바와 같이, 셋업 엔진(110)이 프로세서(도시되지 않음) 상에서 실행중인 드라이버로부터 기하 프리미티브들을 수신한다. 셋업 엔진(110)은 입력되는 프리미티브들에 작용하여 프리젠테이션하기에 적합한 변환 및 처리된 기하 프리미티브들을 래스터 엔진(115)에 출력한다. 셋업 엔진(110)은 또한 "상태 번들(state bundles)"을 포함하는 입력되는 커맨드들에 작용한다. 상태 번들은 후속 그래픽 프리미티브들이 그래픽 렌더링 파이프라인(100)의 각종 프로세싱 유닛들에서 어떻게 처리되어야 할지를, 제한 없이, 정의하는 데이터를 포함한다. 상태 번들로부터의 데이터는 나중의 참고를 위하여 그 프로세싱 유닛들에 보유될 수 있다. 셋업 엔진(110)은 그래픽 렌더링 파이프라인(100)에서의 렌더링 상태를 추적하고 거기에서의 어떤 변화들을 코디네이트한다. 렌더링 상태는, 그래픽 렌더링 파이프라인(100) 내의 여러 지점들에서의 렌더링 프로세스와 관련된 상이한 변수들, 모드들 및 설정들을, 제한 없이, 포함한다. 어떤 렌더링 상태 변수들, 모드들 또는 설정들은 주어진 프리미티브에 대하여 렌더링 프로세스를 개시하기 전에 확립되는 반면, 어떤 렌더링 상태는 프리미티브들이 그래픽 렌더링 파이프라인(100)을 통하여 진행하면서 동적으로 업데이트된다. 아래에서 상세히 기술되는 바와 같이, 히스테리시스 카운트(hysteresis count)는 셋업 엔진(110) 내에서 관리되는 렌더링 상태의 일 요소이다. 히스테리시스 카운트는 히스테리시스 카운터(111)에서 유지된다.
래스터 엔진(115)은 기하 프리미티브들의 커버리지를 계산하고 추가 처리를 위해 픽셀 프리미티브들을 출력한다. 또한, 래스터 엔진(115)은 각 픽셀에 대한 관련 Z-값을 계산한다.
Z 래스터 연산 유닛(ZROP)(120)은 현 픽셀 프리미티브들에 대한 Z-값들을 대응하는 픽셀 위치들에 대한 이전에 저장된 Z-값들과 비교한다. ZROP(120)로부터의 결과들은 다양한 픽셀 프리미티브들이 유지되어야 할지 폐기되어야 할지를 결정한다. 더 구체적으로는, ZROP 엔진(120)은 각각의 현 픽셀의 Z-값을 깊이 버퍼(도시되지 않음) 내에 이전에 저장된 대응하는 픽셀 위치의 Z-값과 비교한다. 다시, 이 프로세스는 "Z-테스팅"으로 알려져 있다. 현 픽셀이 Z-테스팅을 통과하면, ZROP(120)는 선택적으로 상기 픽셀의 Z-값을 프레임 버퍼(160) 내에 통상적으로 존재하는 깊이 버퍼에 기입한다. 상기 픽셀이 Z-테스팅을 통과하지 않으면, 그 픽셀은 프리-래스터 연산(PROP)(130) 유닛 내에 존재하는 Z-리졸브 엔진(도시되지 않음)에 의해 폐기되고, ZROP(120)는 어떠한 Z-값 정보도 깊이 버퍼에 기입하지 않는다. 숙련된 당업자가 이해하는 바와 같이, 픽셀의 가시도를 결정하는 Z-값들에 더하여, 특정 픽셀이 Z-테스팅을 통과하는지 실패하는지의 최종 결정을 행하는 데 Z-값들과 함께 선택적으로 스텐실 값들이 사용될 수 있다. 그러므로, 본 명세서에서 Z-값들에 대한 어떠한 언급도, 적절한 경우에, 스텐실 값들에의 응용성을 갖는다.
섀이더 엔진(140)은 픽셀 프리미티브들에 작용하여, 섀이더 엔진(140)의 프로그래밍에 의해 결정되는 대로, 픽셀들에 대한 컬러 및 Z-값들을, 제한 없이, 계산한다. 컬러 래스터 연산 유닛(CROP)(150)은, ZROP(120)에서의 Z-테스트의 결과들에 의해 결정되는 대로, 각각의 통과하는 픽셀의 값을 프레임 버퍼(160)에 기입한다.
PROP(130) 유닛은 ZROP(120), CROP(150) 및 섀이더 엔진(140) 간의 픽셀 프리미티브들의 흐름을 관리하여, 각 픽셀 프리미티브의 현 렌더링 상태에 따라서 연산 순서를 시퀀싱(sequencing)한다. 본 명세서에서 설명된 바와 같이, PROP(130) 는 2개의 모드, "후기" Z-모드 및 '초기" Z-모드 중 하나에서 동작한다. 후기 Z-모드에 대한 데이터 흐름 경로(132)는 PROP(130)를 통하여 이어지는 실선들로 도시되어 있다. 후기 Z-모드에서는, 섀이더 엔진(140)이 먼저 픽셀 프리미티브에 작용하여, 관련 픽셀들에 대한 컬러 및 Z-값을, 제한 없이, 계산한다. 섀이더 엔진(10)은 그 결과들을 Z-테스팅을 위하여 ZROP(120)에 보낸다. 상술한 바와 같이, ZROP(120)는 Z-테스트를 통과하는 모든 픽셀들에 대하여 깊이 버퍼 내의 Z-값들을 업데이트하고 이 정보를 PROP(130) 내의 Z-리졸브 엔진에 전달하고, 이 Z-리졸브 엔진은 Z-테스트를 통과하지 못한 모든 픽셀들을 폐기하고 통과한 픽셀들을 임의의 남아 있는 컬러 및 프레임 버퍼 업데이트를 위하여 CROP(150)에 송신한다.
전술한 바와 같이, 많은 경우에, Z-값들은 섀이더 엔진(140)에 의해 변경되지 않는다. 그러므로, 초기 Z-모드에서는, Z-테스팅이 섀이딩 전에 수행됨으로써, (ⅰ) 섀이딩 연산에 의해 변경되지 않는 Z-값들을 갖고 (ⅱ) Z-테스팅을 통하여 폐기될 운명인 픽셀들을 처리하는 것과 관련된 불필요한 작업 부담으로부터 섀이더 엔진(140)을 해방시킨다. 초기 Z-모드에 대한 데이터 흐름 경로(131)는 PROP(130)를 통하여 이어지는 점선들로 도시되어 있다. 여기서, 래스터 엔진(115)으로부터의 픽셀 프리미티브들은 Z-테스팅을 위하여 ZROP(120)에 라이팅되고 섀이더 엔진(140)에 라우팅되기 전에 PROP(130) 내의 Z-리졸브 엔진에 라우팅된다. 다시, Z-테스트의 결과들을 이용하여, 리졸브 엔진은 Z-테스트를 통과하지 못한 모든 픽셀들을 폐기하고 통과한 픽셀들을 섀이딩 연산을 위하여 섀이더 엔진(140)에 송신한다. 섀이더 엔진(140)은 Z-테스팅에서 살아남은 픽셀들만을 처리하므로, 초기 Z-모드에서 처리되는 픽셀들의 수는 후기 Z-모드에서 처리되는 픽셀들에 수에 대하여 상당히 저감될 수 있다. 섀이딩 후에, 섀이더 엔진(140)은 섀이딩된 픽셀들을 CROP(150)에 송신한다.
그래픽 렌더링 파이프라인(100)이 초기 Z-모드에 있든 후기 Z-모드에 있든, Z-테스팅은 일반적으로 모든 픽셀들에 대하여 요구된다. 기술된 바와 같이, 초기 Z-모드의 경우에, 섀이더 엔진(140)은 Z-테스팅 때문에 폐기되는 픽셀들과 관련된 계산 부담을 덜게 되어, 결국 시스템 성능이 향상된다. 후기 Z-모드의 경우에, 섀이더 엔진(140)은 각 괵셀의 최종적인 처분에 관계없이 모든 픽셀들을 섀이딩한다. 후기 Z-모드는 일반적인 경우이고 그래픽 렌더링 파이프라인(100)에서 이용 가능한 모든 렌더링 상태들을 수용하는 반면; 초기 Z-모드는 어떤 종종 마주치는 렌더링 상태들에 한정되고 적격의 프리미티브들이 렌더링되어야 할 때 기회주의적으로 실시된다.
도 2는 본 발명의 일 실시예에 따른, 도 1의 PROP(130)를 통한 데이터 흐름의 개념도이다. 후기 Z-모드에 대한 데이터 흐름 경로(132)는 실선들로 도시되어 있다. 후기 Z-모드에서, PROP(130)는 래스터 엔진(115)으로부터의 픽셀 데이터를 멀티플렉서(221)를 통하여 섀이더 엔진(140)에 라우팅한다. 그 후 섀이더 엔진(140)으로부터의 반환 데이터는 멀티플렉서(220)를 통하여 송신된다. 멀티플렉서(220)의 출력은 Z-테스팅을 위하여 ZROP(120)에 라우팅되고, ZROP(120)가 잠재적으로 나타내는 변수 레이턴시를 수용하기 위해 레이턴시 버퍼(212)에 라우팅된다. Z-리졸브 엔진(214)은 ZROP(120)에 의해 수행된 Z-테스팅의 결과들을 레이턴시 버 퍼(212)를 통하여 전달된, 섀이더 엔진(140)으로부터의 데이터와 병합하여, 각각의 섀이딩된 픽셀을 송신 또는 폐기한다. Z-테스트를 통과한 섀이딩된 픽셀들은 그 후 멀티플렉서(222)에 의해 선택되어, 프레임 버퍼(160)에 기입되기 전에 최종 컬러 처리를 위하여 CROP(150)에 송신된다.
도 1에서와 같이, 초기 Z-모드를 위한 데이터 흐름 경로(131)는 점선들로 도시되어 있다. 초기 Z-모드에서, PROP(130)는 래스터 엔진(115)로부터의 데이터를 멀티플렉서(220)에 바로 전달하도록 구성된다. 멀티플렉서(220)에 의해 송신된 데이터는 ZROP(120)에 라우팅되고 ZROP(120)가 잠재적으로 나타내는 변수 레이턴시를 수용하기 위해 제2 레이턴시 버퍼(212)에 라우팅된다. 다시, ZROP(120) 내에서 Z-테스팅이 일어난다. Z-리졸브 엔진(214)은 ZROP(120)에 의해 수행된 Z-테스팅의 결과들을 제2 레이턴시 버퍼(212) 내의 데이터와 병합하여 Z-테스트를 통과한 픽셀들을 섀이딩을 위해 섀이더 엔진(140)에 송신한다. 섀이딩된 픽셀들은 그 후 섀이더 엔진(140)으로부터 제3 멀티플렉서(222)를 통하여, 프레임 버퍼(160)에 기입되기 전에, 최종 컬러 처리를 위하여 CROP(150)에 라우팅된다.
초기 Z-모드는 거의 모든 상황 하에서 그래픽 렌더링 파이프라인(100)에 대한 바람직한, 고성능의 동작 모드이다. 셋업 엔진(110)은 그래픽 렌더링 파이프라인(100)이 초기 Z-모드에서 동작할 수 있는지 또는 그래픽 렌더링 파이프라인(100)이 후기 Z-모드에서 동작해야 하는지를 결정한다. 일반적으로, 현 렌더링 상태가 프리미티브와 관련된 Z-값이 섀이더 엔진(140)에 의해 변경되지 않을 것임을 나타내면 초기 Z-모드가 사용된다. 앞에서 지적한 바와 같이, 후기 Z-모드에서는 모든 렌더링 연산들이 지원된다. 그러나, 아래에서 제시되는 바와 같이, 초기 Z-모드는 어떤 특정한 렌더링 모드들과 마주치는 경우 실시될 수 있다.
일반적으로 초기 Z-모드 연산을 미리 배제하는 하나의 렌더링 상태가 있다. 그 렌더링 상태는 섀이더 프로그램들이 내부적으로 Z-값들을 계산 또는 변경할 때마다 확립되고, 다음의 의사 코드에서 DepthReplaceShader == true인 경우에 입증된다. 다른 가능한 렌더링 상태들의 세트들 내에, 초기 Z-모드가 허용되는 2개의 레짐(regime)이 있다; 제1 레짐은 "EarlyZNoKill"로 정의되고, 여기서는 섀이더 및 포스트-섀이더 컬러 연산들이 프래그먼트 커버리지(fragment coverage)에 영향을 미치지 않는다. 초기 Z-모드가 허용되는 제2 레짐은 "EarlyZNoUpdate"로 정의되고, 여기서는 Z-값 기입이 디스에이블되어, 섀이더에 의해 그 커버리지가 변경될 수 있는 픽셀들 또는 샘플들에 대하여 Z-테스트가 수행될 수 있다 하더라도, Z-테스팅이 그래픽 렌더링 파이프라인(100)에서 섀이딩 앞으로 옮겨질 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 히스테리시스 카운터(111)는 초기 Z-모드로의 스위칭이 발생하기 전에 특정 카운트에 도달해야 한다. 다음의 의사 코드는 초기 Z-모드가 인에이블되기 전에 충족되어야 하는 조건들을 요약한다.
Figure 112007033890521-PAT00001
따라서, 상기 의사 코드가 EarlyZEnable 변수에서 참(true) 조건을 산출하면, 셋업 엔진(110)은 그래픽 렌더링 파이프라인(100)이 후기 Z-모드에서의 진행중인 작업을 완료했다면 그래픽 렌더링 파이프라인(100)을 초기 Z-모드에서 동작하도록 스위칭하도록 PROP(130)에 지시할 수 있다. 전술한 바와 같이, 섀이더 엔진(140)이 Z-값들을 변경하거나 계산하지 않고(DepthReplaceShader == false), 그래픽 렌더링 파이프라인(100)이 2개의 특정 렌더링 모드들(EarlyZNoKill0K == true 또는 EarlyZNoUpdateOK == true) 중 하나에 있고 히스테리시스 카운터(111)가 초기 Z-모드로의 전이를 허용하는 상태(EarlyZHysteresisFSM.AllowEarlyZ == true)에 있는 경우에 EarlyZEnable은 참(true)이다. 상기 리스트된 렌더링 상태 변수들 각각의 정의를 아래에 제시한다. 숙련된 당업자라면 이들 렌더링 상태 변수들 및 그들 각각의 기능들을 쉽게 인지하고 이해할 것이다.
DepthReplaceShader : 이 섀이더 엔진은 Z 값들을 계산 또는 변경한다(버텍스(vertex) Z 값들을 통상적으로 보간(interpolate)하는 것과는 대조적으로);
AlphaTestEnable : 프래그먼트 알파 값이 참조 값과 비교되고, 지정된 조건이 충족되지 않으면 프래그먼트를 소멸(kill)시킨다;
AlphaToCovgEnable : 프래그먼트 알파가 래스터 엔진에 의해 계산된 커버리지 마스크와 AND 연산되는 샘플 커버리지 마스크로 변환된다;
ShaderPixelKillEnable : 프래그먼트 섀이더가 프래그먼트들을 소멸시킬 수 있다;
TextureColorKeyEnable : 텍스처 값들과 참조와의 컬러 키 비교가 프래그먼트들을 소멸시킬 수 있다;
DepthTestEnable : 깊이 테스팅(Z 버퍼링)이 인에이블된다;
DepthWriteEnable : 깊이 테스트를 통과한 깊이 값들이 메모리에 기입된다;
StencilTestEnab1e : 스텐실 테스팅이 인에이블된다;
StencilMask : 어느 스텐실 비트들이 메모리에 기입될 수 있는지를 지시하는 비트 마스크.
AllowEarlyZNoUpdate : EarlyZNoUpdate 허용 모드. EarlyZNoKill 모드와 달리, 이 모드는, 섀이더에 의해 소멸될 프래그먼트에 대하여 Z 테스트가 수행될 수 있으므로, 반드시 성능 이득(performance win)일 수 있는 것은 아니다.
후기 Z-모드로부터 초기 Z-모드로 또는 초기 Z-모드로부터 후기 Z-모드로 스 위칭할 경우, 2가지 잠재적인 문제점이 있다. 첫째로, 그래픽 렌더링 파이프라인(100)에 여전히 프리미티브 데이터가 있다면, 모드 스위칭으로 인해 픽셀 데이터 손실 또는 부정확한 픽셀 데이터 또는 처리 효율의 감소가 초래될 수 있다. 예를 들면, 그래픽 렌더링 파이프라인(100)에 여전히 후기 Z-모드 프리미티브들이 있을 때 초기 Z-모드로 스위칭할 경우 너무 이른 Z-테스팅이 일어날 수 있고, 그로 인해 Z-테스팅이 최종 Z-값에 기초하지 않을 수 있으므로 픽셀 데이터 손실 또는 부정확한 픽셀 데이터가 초래될 수 있다. 한편, 그래픽 렌더링 파이프라인(100)에 여전히 초기 Z-모드 프리미티브들이 있을 때 후기 Z-모드로 스위칭할 경우, 그러지 않았을 경우 초기 Z-테스팅 동안에 폐기되었을 픽셀들이 와인드업하여 섀이더 엔진(140)에 의해 처리될 수 있으므로 처리 비효율이 초래될 수 있다. 그래픽 렌더링 파이프라인(100)에 프리미티브 데이터가 여전히 있는 동안에 모드를 스위칭하는 것과 관련된 문제들을 극복하기 위하여, 모드 스위칭 전에 그래픽 렌더링 파이프라인(100)에서 "플러시(flush)"가 실행된다. 파이프라인 플러시 기법은 당업계에 공지되어 있어 임의의 기술적으로 실행 가능한 방식으로 실시될 수 있다. 플러시를 실행함으로써 그래픽 렌더링 파이프라인(100) 내의 진행중인 작업이 모드 스위칭 전에 어떤 미리 정해진 완료 레벨까지 배출(drain through)할 수 있다. 그러나, 플러시를 실행할 때, 배출 작업부하 뒤에 통상 "버블(bubble)"이라 불리는 파이프라인 비활성의 스팬(a span of pipeline inactivity)이 도입된다. 잠재적인 계산 주기가 사실상 유휴 상태(idle)이기 때문에 그러한 버블들은 전체 성능을 떨어뜨린다. 따라서, 모드 스위칭과 관련된 두 번째 문제점은 그래픽 렌더링 파이프라 인(110)의 플러싱과 관련된 성능 페널티가 플러시가 너무 자주 실행될 경우 전체 성능을 저하시킬 수 있다는 점이다. 이 두 번째 문제점을 해결하기 위하여, 비율 제한 히스테리시스 메커니즘을 이용하여 그래픽 렌더링 파이프라인(100)이 모드 스위칭하도록 허용되는 비율이 제어된다.
히스테리시스 카운터(111)는 셋업 엔진(110)에 제시된 프리미티브들의 수를 추적하고, 임계수의 그러한 프리미티브들이 검출되면, 셋업 엔진은 후기 Z-모드로부터 초기 Z-모드로의 스위칭을 개시할 수 있다. 더 구체적으로는, 후기 Z-모드는 일반적으로 그래픽 렌더링 파이프라인(100)에서 허용되는 모든 렌더링 상태들을 수용하기 때문에, 후기 Z-모드가 디폴트 동작 모드로서 인식된다. 후기 Z-모드에서 동작하고 EarlyZEnable이 참(true)이 될 경우, 셋업 엔진(110)은, 플러시를 실행하는 것을 조건으로 그리고 셋업 엔진(110)이 임계수의 프리미티브들과 마주쳤다는 것을 조건으로, 기회주의적으로 그래픽 렌더링 파이프라인(100)의 초기 Z-모드로의 모드 스위칭을 개시한다. 따라서, 그래픽 렌더링 파이프라인(100)은 초기 Z-모드로의 스위칭이 인에이블되기 전에 최소한도의 개수의 프리미티브들의 기간 동안 후기 Z-모드에 유지됨으로써, 모드 스위칭의 비율이 저감된다.
일 실시예에서, 히스테리시스 카운터(111)는 셋업 엔진(110)에 송신되어 히스테리시스 카운터(111)가 이용할 수 있게 된 상태 번들에서 제시된 카운트 값으로 프로그램된다. 히스테리시스 카운터(111)에 의해 유지되는 히스테리시스 카운트는 셋업 엔진(110)이 후기 Z-모드로의 모드 변경을 개시할 때마다(또는 그래픽 렌더링 파이프라인(100)이 처음에 후기 Z-모드용으로 구성될 때) 상기 카운트 값으로 설정 된다. 히스테리시스 카운트를 상기 카운트 값으로 설정함과 동시에, 프리미티브가 셋업 엔진(110)에 수신될 때마다, 히스테리시스 카운트는, 예컨대 감소(decrement) 또는 증가(increment) 연산을 통하여 진행(advance)된다. 이 프로세스는 히스테리시스 카운트가 예컨대 제로 등의 트리거 값에 도달할 때까지 계속된다. 히스테리시스가 트리거 값에 도달한 것은 미리 정해진 임계수의 프리미티브들이 셋업 엔진(110)에 제시되었다는 것을 나타내고, 셋업 엔진(110)은 그 최소한도의 임계수의 프리미티브들을 처리하기 위해 그래픽 렌더링 파이프라인(100)을 후기-Z 모드에 유지시켰을 것이다. 그때, 셋업 엔진(110)은 그래픽 렌더링 파이프라인(100)의 초기 Z-모드로의 모드 변경을 개시할 수 있다(그렇게 하는 것이 적절하다면).
대안 실시예에서, Z-모드의 스위칭과 관련된 페널티는 초기 Z-모드와 후기 Z-모드 간에 스위칭이 행해질 때 그래픽 렌더링 파이프라인(100)에서 프로세싱 위치를 변경하는 파이프라인 엘리먼트들만을 선택적으로 배출(drain)함으로써 부분적으로 경감될 수 있다. 그러한 실시예에서, "Z-모드 토큰(Z-mode token)"으로 불리는 상태 번들 커맨드가 셋업 엔진(110)에 의해 생성되어 초기 Z-모드로부터 후기 Z-모드로, 혹은 그 반대로 그래픽 렌더링 파이프라인(100)의 구성을 변경하는 데 이용된다. 셋업 엔진(110)은 Z-모드 토큰을 그래픽 렌더링 파이프라인(100)을 통하여 송신하여 Z-모드 토큰이 파이프라인 내의 각 프로세싱 엘리먼트를 통하여 전달되게 한다. 그래픽 렌더링 파이프라인(100)이 재구성될 때 그래픽 렌더링 파이프라인에서 프로세싱 위치를 변경하는 각 프로세싱 엘리먼트는 Z-모드 토큰과 마주칠 때 국부적(local), 선택적 플러시를 실시하는 데 필요한 기능을 포함한다.
초기 Z-모드에서 동작할 때, 새로운 렌더링 상태가 초기 Z-모드와 호환성이 없다면, 셋업 엔진(110)은 먼저 플러시를 실행하고 그 후 상술한 바와 같이 데이터 흐름 경로를 변경하도록 PROP(130)에 지시함으로써 그래픽 렌더링 파이프라인(100)을 다시 후기 Z-모드로 전이시킨다. 그러한 상황에서는, 셋업 엔진(110)은 일반적으로 임계수의 프리미티브들이 셋업 엔진(110)에 제시되었다고 하는 제약을 받지 않는다.
상기 행태(behavior)에 더하여, 히스테리시스 카운터(111)는, 항상 후기 Z-모드에서 동작하도록 그래픽 렌더링 파이프라인(100)을 강제시키거나 또는 히스테리시스 카운트 값에 관계없이 항상 그래픽 렌더링 파이프라인(100)이 모드를 스위칭하는 것을 가능케 하는 모드들을 포함하는, 그러나 이에 제한되지 않는, 수 개의 상이한 모드들에서 동작하도록 구성될 수 있다. 또한, 히스테리시스 카운터(111)는 특정 리셋 조건들에 응답하여, 히스테리시스 카운트가 상술한 바와 같이 예를 들면 카운트 값으로 설정되게 할 수 있다.
도 3은 본 발명의 일 실시예에 따른, 도 1의 그래픽 렌더링 파이프라인(100)에서 동작 모드를 스위칭하기 위한 방법 단계들의 흐름도이다. 이 방법 단계들은 도 1, 2, 4a 및 4b와 관련하여 설명되지만, 숙련된 당업자라면 그 방법 단계들을 임의의 순서로 수행하는 어떠한 시스템이든 본 발명의 범위 내에 있다는 것을 이해할 것이다.
동작 모드를 스위칭하는 방법은 단계 310에서 시작하고, 이 단계에서 셋업 엔진(110)은 연산할 프리미티브를 수신한다. 단계 312에서, 셋업 엔진(110)은 현 동작 모드가 초기 Z-모드인지 후기 Z-모드인지를 결정한다. 현 동작 모드가 후기 Z-모드이면, 방법은 단계 311로 진행하고, 이 단계에서 히스테리시스 카운트가 업데이트된다. 상술한 바와 같이, 히스테리시스 카운트는 후기 Z-모드에 진입할 때 또는 그래픽 렌더링 파이프라인(100)이 처음에 후기 Z-모드용으로 구성될 때 셋업 엔진(110)에 송신되는 상태 번들에서 제시된 카운트 값으로 설정된다. 후기 Z-모드 동작 동안에, 히스테리시스 카운트는, 셋업 엔진(110)이 새로운 프리미티브를 수신할 때마다, 예컨대 증가 또는 감소 연산을 통하여 진행된다. 히스테리시스 카운터(111)를 업데이트한 후에, 방법은 단계 320으로 진행하고, 이 단계에서 셋업 엔진(110)은, 렌더링 상태 변수 EarlyZEnable이 참(true)인 것에 의해 지시되는 바와 같이, 모드 변경이 발생해야 하는지를 결정한다. 만일 EarlyZEnable이 거짓(false)이면, 모드 변경이 발생하지 않아야 하고, 방법은 단계 340으로 진행하고, 이 단계에서 셋업 엔진(110)은 프리미티브 스트림에서의 다음 프리미티브를 기다린다. 그러나, EarlyZEnable이 참이면, 모드 변경이 발생해야 하고, 방법은 단계 321로 진행한다. 단계 321에서, 셋업 엔진(100)은 그래픽 렌더링 파이프라인(100)을 플러싱하는 플러시 동작을 개시하여 진행중인 작업의 완료를 가능케 한다. 그 후 방법은 단계 322로 진행하고, 이 단계에서 셋업 엔진(110)은 도 2에 예시된 바와 같이 초기 Z-모드 동작을 위하여 그래픽 렌더링 파이프라인(100)의 데이터 흐름을 재구성하도록 PROP(130)에 지시한다. 일단 단계 322가 완료되면, 그래픽 렌더링 파이프라인(100)은 초기 Z-모드용으로 구성되고 방법은 단계 340으로 진행하고, 이 단계에서 셋업 엔진은 프리미티브 스트림에서의 다음 프리미티브를 기 다린다. 그 후 방법은 단계 310으로 되돌아간다.
다시 단계 312를 참조하여, 현 동작 모드가 초기 Z-모드이면, 방법은 단계 330으로 진행하고, 이 단계에서 셋업 엔진(110)은 처리될 다음 프리미티브에 기초하여 모드 변경이 발생해야 하는지를 결정한다. EarlyZEnable가 참인 것에 의해 지시되는 바와 같이, 다음 프리미티브가 초기 Z-모드에서 처리되어야 한다면, 모드 변경이 일어날 필요가 없고 방법은 단계 340으로 진행한다. 한편, 다음 프리미티브가 후기 Z-모드에서 처리되어야 한다면, 모드 변경이 발생할 필요가 있고 방법은 단계 331로 진행한다. 단계 331에서, 셋업 엔진(100)은 그래픽 렌더링 파이프라인(100)을 플러싱하는 플러시 동작을 개시하여 진행중인 작업의 완료를 가능케 한다. 그 후 방법은 단계 332로 진행하고, 이 단계에서 셋업 엔진(110)은 도 2에 예시된 바와 같이, 후기 Z-모드 동작을 위하여 그래픽 렌더링 파이프라인(100)의 데이터 흐름을 재구성하도록 PROP(130)에 지시한다. 일단 단계 332가 완료되면, 그래픽 렌더링 파이프라인(100)은 후기 Z-모드용으로 구성되고 방법은 단계 340으로 진행하고, 이 단계에서 셋업 엔진은 프리미티브 스트림에서의 다음 프리미티브를 기다린다. 그 후 방법은 단계 310으로 되돌아간다.
도 4a는 본 발명의 일 실시예에 따른, 후기 Z-모드에서 동작하는 경우의 도 1의 그래픽 렌더링 파이프라인(100)의 논리적 구성을 예시한다. 셋업 엔진(110)은 입력되는 프리미티브들에 작용하여 프리젠테이션하기에 적합한 변환 및 처리된 기하 프리미티브들을 래스터 엔진(115)에 출력한다. 래스터 엔진(115)은 기하 프리미티브들의 커버리지를 계산하고 픽셀 프리미티브들을 섀이더 엔진(140)에 출력한 다. 래스터 엔진(115)은 각 픽셀의 Z-값을 계산한다. 섀이더 엔진(140)은 픽셀 컬러 값들, 및, 선택적으로, Z-값들을, 제한 없이, 계산하여, 그 결과들을 후속 처리를 위하여 컬러 데이터(432)와 Z 데이터(431) 간에 분할한다. ZROP(120)는 Z-테스팅을 실시하고 그 결과들을 Z-리졸브 엔진(214)에 통신하고, Z-리졸브 엔진(214)은 Z-테스트를 통과하지 못한 픽셀들을 폐기하고 Z-테스트를 통과한 픽셀들을 CROP(150)에 송신한다. CROP(150)는 Z-리졸브 엔진(214)에 의해 송신된 픽셀들의 컬러 값들을 프레임 버퍼(160)에 저장한다.
도 4b는 본 발명의 일 실시예에 따른, 초기 Z-모드에서 동작하는 경우의 도 1의 그래픽 렌더링 파이프라인(100)의 논리적 구성을 예시한다. 후기 Z-모드에서와 같이, 셋업 엔진(110)은 입력되는 프리미티브들에 작용하여 프리젠테이션하기에 적합한 변환 및 처리된 기하 프리미티브들을 래스터 엔진(115)에 출력한다. 그러나, 후기 Z-모드와 달리, 래스터 엔진(115)은 기하 프리미티브들의 커버리지를 계산하고 픽셀 프리미티브들을 Z-테스팅을 위하여 바로 ZROP(120)에 출력한다. ZROP(120)는 그 결과들을 Z-리졸브 엔진(214)에 통신하고, Z-리졸브 엔진(214)은 Z-테스트를 통과한 픽셀들만을 섀이더 엔진(140)에 송신한다. 이 시점에 Z-리졸브 엔진(214)에 의해 폐기된 픽셀들을 추가적인 처리를 필요로 하지 않는다. 섀이더 엔진(140)은 픽셀 컬러 값들을 계산하고, CROP(150)는 그 픽셀 컬러 값들을 프레임 버퍼(160)에 저장한다.
도 4a 및 4b에 도시된 흐름들은 도 1 및 2에 기술된 바와 같이 그래픽 렌더링 파이프라인(100)을 통한 데이터 흐름을 구성하는 PROP(130)로부터 비롯된다. PROP(130)는 다른 경우에는 초기 Z-모드 및 후기 Z-모드의 양쪽 모두에서 그래픽 렌더링 파이프라인(100)의 동작에 대하여 명백하므로 도 4a 및 4b에 도시되지 않았다.
대안 실시예에서, 각 기하 프리미티브는 상기 프리미티브가 초기 Z-모드에서 처리되어야 할지 후기 Z-모드에서 처리되어야 할지를 지시하는 상태 비트("Z-모드 플래그")를 포함할 수 있다. 이 Z-모드 플래그는 기하 프리미티브 및 임의의 관련 픽셀들의 EarlyZEnable 상태를 계산하기 위하여 위에서 제시된 규칙들에 따라서 결정된다. 각 기하 프리미티브는 그것의 대응하는 Z-모드 플래그에 따라서 라우팅되고 처리된다. 적절한 경우에, 그래픽 렌더링 파이프라인(100) 내의 각 프로세싱 엘리먼트는 초기 Z-모드 및 후기 Z-모드의 양쪽 모두에 대한 독립적인 상태 기억 장치를 포함한다. 프로세싱 엘리먼트들에서 Z-모드들 각각에 대하여 독립적인 상태를 제공함으로써, 그래픽 렌더링 파이프라인(100)의 어떠한 부분도 플러싱할 필요없이 후기 Z-모드 처리를 필요로 하는 프리미티브들을 초기 Z-모드 처리를 필요로 하는 프리미티브들과 인터리브(interleave)할 수 있다.
도 5는 본 발명의 하나 이상의 양태들을 구현하도록 구성된 컴퓨팅 디바이스의 개념도이다. 컴퓨팅 디바이스(500)는, 프로세서(510), 시스템 메모리(515), 그래픽 프로세싱 유닛(GPU)(520) 및 이 GPU(520)에 접속된 로컬 메모리(525)를, 제한 없이, 포함한다. GPU(520)는 데이터를 처리하기 위해 이용되는 적어도 하나의 렌더링 엔진(521)을 포함한다. 렌더링 엔진(521)은 상술한 바와 같이 데이터를 처리하기 위해 이용되는 적어도 하나의 그래픽 렌더링 파이프라인(100)을 포함한다. 숙련된 당업자라면 본 명세서에 개시된 교시내용들을 실시하도록 구성된 하나 이상의 프로세싱 유닛들을 구비한 어떠한 시스템이든 본 발명의 범위 내에 있다는 것을 알 것이다. 따라서, 컴퓨팅 디바이스(500)의 아키텍처는 결코 본 발명의 범위를 제한하지 않는다.
전술한 것은 본 발명의 실시예들에 관한 것이지만, 본 발명의 기본 범위에서 벗어나지 않고 발명의 다른 추가 실시예들이 고안될 수 있다. 예를 들면, 상기 설명은 픽셀 Z-테스팅에 초점을 맞추고 있더라도, 본 발명의 교시내용은 임의 형태의 샘플(픽셀들, 프래그먼트들, 서브픽셀들, 또는 임의의 다른 형태의 컬러 값 표현)의 Z-테스팅에도 적용 가능하다. 따라서, 본 발명의 범위는 다음의 특허청구범위에 의해 결정된다.
본 발명에 의하면, 대부분의 그래픽 렌더링 파이프라인들의 잘 알려진 성능 병목 장애인 섀이더 엔진에 대한 작업 부하를 저감시킴으로써 그래픽 렌더링 파이프라인의 전체 효율이 향상된다. 특정 상황에서 초기 Z-테스팅을 허용하도록 그래픽 렌더링 파이프라인을 동적으로 재구성하고, 폐색(occlude)된 픽셀들이 섀이딩 전에 폐기될 수 있게 함으로써, 섀이더 엔진은 종래의 그래픽 렌더링 파이프라인들에서 일반적인 불필요한 작업 부담을 덜게 된다.

Claims (12)

  1. 그래픽 프리미티브들(graphics primitives)을 처리하기 위한 구성가능한 그래픽 렌더링 파이프라인(configurable graphics rendering pipeline)으로서,
    프로세싱이 초기(early) Z-모드에서 진행되어야 하는지 후기(late) Z-모드에서 진행되어야 하는지를 결정하도록 구성된 셋업 엔진(setup engine)과;
    상기 셋업 엔진으로부터 기하 프리미티브(geometry primitive)를 수신하고 상기 기하 프리미티브를 하나 이상의 픽셀 프리미티브들로 변환하도록 구성된 래스터 엔진(raster engine)과;
    픽셀 프리미티브와 관련된 하나 이상의 샘플들에 대하여 섀이딩 연산들을 수행하도록 구성된 섀이더 엔진과;
    상기 샘플들의 각각에 대하여 Z-테스팅을 수행하도록 구성된 Z-래스터 연산(Z-raster operations)(ZROP) 유닛과;
    각 샘플에 대하여, 상기 샘플과 관련된 Z-테스트 결과들에 기초하여 상기 샘플이 유지되어야 할지 또는 폐기되어야 할지를 결정하도록 구성된 Z-리졸브 엔진(Z-resolve engine); 및
    초기 Z-모드와 후기 Z-모드 양쪽 모두를 지원하기 위해 상기 섀이더 엔진과 상기 ZROP 유닛 사이의 데이터 흐름 경로를 변경하도록 구성된 프리-래스터 연산(pre-raster operations)(PROP) 유닛
    을 포함하고,
    상기 픽셀 프리미티브와 관련된 샘플들은, 상기 그래픽 렌더링 파이프라인이 초기 Z-모드용으로 구성되는 때에는, 먼저 상기 ZROP 유닛 및 상기 Z-리졸브 엔진에 의해 처리된 다음 상기 섀이더 엔진에 의해 처리되고, 상기 그래픽 렌더링 파이프라인이 후기 Z-모드용으로 구성되는 때에는, 먼저 상기 섀이더 엔진에 의해 처리된 다음 상기 ZROP 유닛 및 상기 Z-리졸브 엔진에 의해 처리되는 그래픽 렌더링 파이프라인.
  2. 제1항에 있어서,
    상기 셋업 엔진은 초기 Z-모드로부터 후기 Z-모드로의 변경이 행해져야 하는지 또는 후기 Z-모드로부터 초기 Z-모드로의 변경이 행해져야 하는지를 결정하기 위해 상기 기하 프리미티브와 관련된 렌더링 상태를 평가하도록 구성되어 있는 그래픽 렌더링 파이프라인.
  3. 제2항에 있어서,
    상기 셋업 엔진은 상기 그래픽 렌더링 파이프라인이 후기 Z-모드용으로 구성되어 있는 동안 주기적으로 진행하는 히스테리시스 카운터를 포함하고, 상기 셋업 엔진은 상기 히스테리시스 카운트가 트리거 값과 같을 때 상기 그래픽 렌더링 파이프라인을 초기 Z-모드로 스위칭하도록 허용되는 그래픽 렌더링 파이프라인.
  4. 제2항에 있어서,
    상기 셋업 엔진은 초기 Z-모드로부터 후기 Z-모드로 또는 후기 Z-모드로부터 초기 Z-모드로 스위칭하기 전에 플러시(flush) 동작을 실행하도록 구성되어 있는 그래픽 렌더링 파이프라인.
  5. 제2항에 있어서,
    상기 셋업 엔진은 초기 Z-모드로부터 후기 Z-모드로 또는 후기 Z-모드로부터 초기 Z-모드로 스위칭이 행해져야 한다고 판정할 때 Z-모드 토큰을 생성하도록 구성되고, 상기 Z-모드 토큰은 그래픽 렌더링 파이프라인을 통하여 송신되어 하나 이상의 데이터 흐름 경로 제어 유닛들과 마주칠 때 상기 하나 이상의 데이터 흐름 경로 제어 유닛들이 모드들을 스위칭하게 야기하는 그래픽 렌더링 파이프라인,
  6. 제5항에 있어서,
    상기 Z-모드 토큰은 하나 이상의 데이터 흐름 경로 제어 유닛들이 모드들을 스위칭하기 전에 로컬 플러시 동작을 개시하게 야기하는 그래픽 렌더링 파이프라인.
  7. 제1항에 있어서,
    상기 샘플들은 픽셀들인 그래픽 렌더링 파이프라인.
  8. 제1항에 있어서,
    상기 셋업 엔진은 초기 Z-모드로부터 후기 Z-모드로 또는 후기 Z-모드로부터 초기 Z-모드로 스위칭하기 위해 상기 섀이더 엔진과 상기 ZROP 유닛 사이의 데이터 흐름 경로를 변경하도록 상기 PROP 유닛에 지시하도록 구성되어 있는 그래픽 렌더링 파이프라인,
  9. 그래픽 프리미티브들을 처리하도록 구성된 컴퓨터 시스템으로서,
    메모리; 및
    구성가능한 그래픽 렌더링 파이프라인을 포함하는 프로세싱 유닛
    을 포함하고,
    상기 구성가능한 그래픽 렌더링 파이프라인은,
    프로세싱이 초기 Z-모드에서 진행되어야 하는지 후기 Z-모드에서 진행되어야 하는지를 결정하도록 구성된 셋업 엔진과;
    상기 셋업 엔진으로부터 기하 프리미티브를 수신하고 상기 기하 프리미티브를 하나 이상의 픽셀 프리미티브들로 변환하도록 구성된 래스터 엔진과;
    픽셀 프리미티브와 관련된 하나 이상의 샘플들에 대하여 섀이딩 연산들을 수행하도록 구성된 섀이더 엔진과;
    상기 샘플들의 각각에 대하여 Z-테스팅을 수행하도록 구성된 Z-래스터 연산(ZROP) 유닛과;
    각 샘플에 대하여, 상기 샘플과 관련된 Z-테스트 결과들에 기초하여 상기 샘플이 유지되어야 할지 또는 폐기되어야 할지를 결정하도록 구성된 Z-리졸브 엔진: 및
    초기 Z-모드와 후기 Z-모드 양쪽 모두를 지원하기 위해 상기 섀이더 엔진과 상기 ZROP 유닛 사이의 데이터 흐름 경로를 변경하도록 구성된 프리-래스터 연산(PROP) 유닛
    을 포함하고,
    상기 픽셀 프리미티브와 관련된 샘플들은, 상기 그래픽 렌더링 파이프라인이 초기 Z-모드용으로 구성되는 경우에는, 먼저 상기 ZROP 유닛 및 상기 Z-리졸브 엔진에 의해 처리된 다음 상기 섀이더 엔진에 의해 처리되고, 상기 그래픽 렌더링 파이프라인이 후기 Z-모드용으로 구성되는 경우에는, 먼저 상기 섀이더 엔진에 의해 처리된 다음 상기 ZROP 유닛 및 상기 Z-리졸브 엔진에 의해 처리되는 컴퓨터 시스템.
  10. 제9항에 있어서,
    상기 셋업 엔진은 초기 Z-모드로부터 후기 Z-모드로의 변경이 행해져야 하는지 또는 후기 Z-모드로부터 초기 Z-모드로의 변경이 행해져야 하는지를 결정하기 위해 상기 기하 프리미티브와 관련된 렌더링 상태를 평가하도록 구성되어 있는 컴퓨터 시스템.
  11. 제10항에 있어서,
    상기 셋업 엔진은 상기 그래픽 렌더링 파이프라인이 후기 Z-모드용으로 구성 되어 있는 동안 주기적으로 진행하는 히스테리시스 카운터를 포함하고, 상기 셋업 엔진은 상기 히스테리시스 카운트가 트리거 값과 같을 때 상기 그래픽 렌더링 파이프라인을 초기 Z-모드로 스위칭하도록 허용되는 컴퓨터 시스템.
  12. 제10항에 있어서,
    상기 셋업 엔진은 초기 Z-모드로부터 후기 Z-모드로 또는 후기 Z-모드로부터 초기 Z-모드로 스위칭하기 전에 플러시 동작을 실행하도록 구성되어 있는 컴퓨터 시스템.
KR1020070044151A 2006-05-08 2007-05-07 초기 z-모드를 이용한 구성가능한 그래픽 렌더링파이프라인의 최적화 KR100899488B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/430,635 US8933933B2 (en) 2006-05-08 2006-05-08 Optimizing a graphics rendering pipeline using early Z-mode
US11/430.635 2006-05-08

Publications (2)

Publication Number Publication Date
KR20070108823A true KR20070108823A (ko) 2007-11-13
KR100899488B1 KR100899488B1 (ko) 2009-05-27

Family

ID=38660786

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070044151A KR100899488B1 (ko) 2006-05-08 2007-05-07 초기 z-모드를 이용한 구성가능한 그래픽 렌더링파이프라인의 최적화

Country Status (5)

Country Link
US (1) US8933933B2 (ko)
JP (1) JP4513108B2 (ko)
KR (1) KR100899488B1 (ko)
CN (1) CN100565577C (ko)
TW (1) TWI378398B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170028093A (ko) * 2015-09-03 2017-03-13 삼성전자주식회사 쉐이더 프로그램을 생성하는 방법 및 장치

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US8207975B1 (en) * 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US20080284780A1 (en) * 2007-05-15 2008-11-20 R-Ming Hsu Method for enabling alpha-to-coverage transformation
US8558836B2 (en) 2008-05-30 2013-10-15 Advanced Micro Devices, Inc. Scalable and unified compute system
CN102047317B (zh) * 2008-05-30 2015-09-16 先进微装置公司 冗余方法以及着色器列修复的装置
GB2475375B (en) * 2008-06-04 2011-12-14 Advanced Risc Mach Ltd Graphics processing systems
US9367487B1 (en) * 2009-06-10 2016-06-14 Nvidia Corporation Mitigating main crossbar load using dedicated connections for certain traffic types
AU2009202377A1 (en) * 2009-06-15 2011-01-06 Canon Kabushiki Kaisha Combining overlapping objects
US9142057B2 (en) * 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
KR101719485B1 (ko) * 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US9019292B2 (en) * 2011-09-12 2015-04-28 Microsoft Technology Licensing Llc Reordering graph execution for processing optimization
US9953455B2 (en) * 2013-03-13 2018-04-24 Nvidia Corporation Handling post-Z coverage data in raster operations
US10008029B2 (en) 2013-05-31 2018-06-26 Nvidia Corporation Updating depth related graphics data
KR20150042095A (ko) 2013-10-10 2015-04-20 삼성전자주식회사 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
US9697580B2 (en) * 2014-11-10 2017-07-04 Qualcomm Incorporated Dynamic pipeline for graphics processing
US10002404B2 (en) * 2015-04-15 2018-06-19 Mediatek Singapore Pte. Ltd. Optimizing shading process for mixed order-sensitive and order-insensitive shader operations
US9824458B2 (en) * 2015-09-23 2017-11-21 Qualcomm Incorporated Dynamically switching between late depth testing and conservative depth testing
GB2543866B (en) * 2016-03-07 2017-11-01 Imagination Tech Ltd Task assembly for SIMD processing
US10540808B2 (en) * 2016-09-16 2020-01-21 Intel Corporation Hierarchical Z-culling (HiZ) optimization for texture-dependent discard operations
US20180082464A1 (en) * 2016-09-16 2018-03-22 Tomas G. Akenine-Moller Apparatus and method for an efficient 3d graphics pipeline
US10943389B2 (en) * 2016-12-09 2021-03-09 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling
US11210821B2 (en) * 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11170555B2 (en) 2019-11-27 2021-11-09 Arm Limited Graphics processing systems
US11210847B2 (en) 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11216993B2 (en) 2019-11-27 2022-01-04 Arm Limited Graphics processing systems
CN116703689B (zh) * 2022-09-06 2024-03-29 荣耀终端有限公司 一种着色器程序的生成方法、装置和电子设备
GB2624430A (en) * 2022-11-17 2024-05-22 Advanced Risc Mach Ltd Graphics processors

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5798770A (en) * 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
JPH0950533A (ja) 1995-08-08 1997-02-18 Kubota Corp グラフィックス表示装置
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
US6222550B1 (en) * 1998-12-17 2001-04-24 Neomagic Corp. Multiple triangle pixel-pipelines with span-range pixel interlock for processing separate non-overlapping triangles for superscalar 3D graphics engine
US7034828B1 (en) * 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6999076B2 (en) * 2001-10-29 2006-02-14 Ati Technologies, Inc. System, method, and apparatus for early culling
JP3761085B2 (ja) 2001-11-27 2006-03-29 株式会社ソニー・コンピュータエンタテインメント 画像処理装置及びその構成部品、レンダリング処理方法
US6828978B2 (en) * 2002-02-28 2004-12-07 David B. Buehler Bucket-sorting graphical rendering apparatus and method
US6930684B2 (en) * 2002-09-27 2005-08-16 Broadizon, Inc. Method and apparatus for accelerating occlusion culling in a graphics computer
US7633506B1 (en) * 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
US7268779B2 (en) * 2002-12-24 2007-09-11 Intel Corporation Z-buffering techniques for graphics rendering
KR100510131B1 (ko) * 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7978194B2 (en) 2004-03-02 2011-07-12 Ati Technologies Ulc Method and apparatus for hierarchical Z buffering and stenciling
US20050195198A1 (en) * 2004-03-03 2005-09-08 Anderson Michael H. Graphics pipeline and method having early depth detection
US7724263B2 (en) * 2004-05-14 2010-05-25 Nvidia Corporation System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories
JP4684749B2 (ja) * 2005-06-03 2011-05-18 三菱電機株式会社 グラフィック装置
US8860721B2 (en) * 2006-03-28 2014-10-14 Ati Technologies Ulc Method and apparatus for processing pixel depth information
US8207975B1 (en) * 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170028093A (ko) * 2015-09-03 2017-03-13 삼성전자주식회사 쉐이더 프로그램을 생성하는 방법 및 장치

Also Published As

Publication number Publication date
JP4513108B2 (ja) 2010-07-28
TW200821985A (en) 2008-05-16
TWI378398B (en) 2012-12-01
KR100899488B1 (ko) 2009-05-27
JP2007328774A (ja) 2007-12-20
US8933933B2 (en) 2015-01-13
CN101101667A (zh) 2008-01-09
US20070257905A1 (en) 2007-11-08
CN100565577C (zh) 2009-12-02

Similar Documents

Publication Publication Date Title
KR100899488B1 (ko) 초기 z-모드를 이용한 구성가능한 그래픽 렌더링파이프라인의 최적화
US8207975B1 (en) Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US10311016B2 (en) Hidden surface removal in graphics processing systems
US20090051687A1 (en) Image processing device
EP3281177B1 (en) Graphics processing systems
CN105321199B (zh) 图形处理流水线及其操作方法与介质
US10089709B2 (en) Data processing systems
US9214006B2 (en) Hidden surface removal in graphics processing systems
US20070291030A1 (en) System and method for performing depth testing at top and bottom of graphics pipeline
US9153070B2 (en) Hidden surface removal in graphics processing systems
EP3333805B1 (en) Removing or identifying overlapping fragments after z-culling
US20020196252A1 (en) Method and apparatus for rendering three-dimensional images with tile-based visibility preprocessing
US10922086B2 (en) Reduction operations in data processors that include a plurality of execution lanes operable to execute programs for threads of a thread group in parallel
US6985151B1 (en) Shader pixel storage in a graphics memory
GB2540983A (en) Graphics processing
GB2511176A (en) Hidden surface removal in graphic processing systems
GB2567207A (en) Graphics processing systems
US9286714B2 (en) Apparatus and method for processing graphics primitives
WO2017021689A1 (en) Data processing systems
US11107264B2 (en) Graphics processing systems for determining blending operations
JP5723679B2 (ja) 専用機能ハードウェア間の切り替えおよび結果データを生成するソフトウェアルーチンの使用
KR19990069515A (ko) 피엘씨 시스템의 데이터 실시간 처리장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140422

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180510

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190430

Year of fee payment: 11