KR20160101874A - 그래픽 처리 시스템 - Google Patents

그래픽 처리 시스템 Download PDF

Info

Publication number
KR20160101874A
KR20160101874A KR1020160018205A KR20160018205A KR20160101874A KR 20160101874 A KR20160101874 A KR 20160101874A KR 1020160018205 A KR1020160018205 A KR 1020160018205A KR 20160018205 A KR20160018205 A KR 20160018205A KR 20160101874 A KR20160101874 A KR 20160101874A
Authority
KR
South Korea
Prior art keywords
task
graphics processing
conditional
render output
processing pipeline
Prior art date
Application number
KR1020160018205A
Other languages
English (en)
Other versions
KR102623693B1 (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 KR20160101874A publication Critical patent/KR20160101874A/ko
Application granted granted Critical
Publication of KR102623693B1 publication Critical patent/KR102623693B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Abstract

그래픽 처리 시스템에 있어서, 그래픽 처리 파이프라인(3)용 드라이버(4)는 어플리케이션(2)이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크들을 포함할 수 있다. 그러한 각 조건부 태스크는 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는다. 그래픽 처리 파이프라인(3)은 태스크와 관련된 조건이 충족되었는지를 판정하고, 단지 태스크와 관련된 조건이 충족되었으면 태스크에 대한 처리를 실행한다.

Description

그래픽 처리 시스템{GRAPHICS PROCESSING SYSTEMS}
본 발명은 그래픽 처리 시스템에 관한 것이다.
일부 그래픽 처리 동작들은 제1 출력, 예를 들면 프레임을 렌더링하고, 그 다음에 제1 출력에 대하여 추가 처리를 수행하여 원하는 "최종" 출력, 예를 들면 프레임을 제공한다.
이것의 예는 예를 들면 프레임이 맨 먼저 렌더링 되는 소위 "정분 렌더링(incremental rendering)"이고, 그 후에 일부 추가 "정분" 렌더링을 그 프레임의 맨 위에서 행하여 최종 출력 프레임을 제공한다. 이것은 예를 들면 표시되고 있는 비디오의 프레임들 위에 사용자 인터페이스, 캡션(captions), 또는 시밀러(similar)를 겹치고; 어플리케이션이 임시면들 사이에서 전환하고 있을 때; 및/또는 변형된 프리미티브들을 저장하기 위한 메모리 사용량을 제어 등을 하기 위해서 사용될 수도 있다.
증분 렌더링에서는, 증분 렌더링 패스(pass)가 현재의 프레임의 일부 에어리어들을 중복 기재할 수 있지만, 그것의 다른 에어리어들을 보존할 수 있다. 그러므로, 보통 그 자신에 대해서 "증분" 지오메트리를 간단히 렌더링하는 것이 가능하지 않지만, 오히려 증분 지오메트리는 그것이 적용되는 현재의 프레임의 맨 위에서 렌더링되어야 한다(그 후에 그렇게 변경된 프레임이 출력 프레임으로서 제공된다). 이것의 효과는, 증분 지오메트리가 렌더링되기 전에, 그것이 적용되는 이전에 발생된 프레임이 (현재의 프레임"의 맨 위에서" 증분 지오메트리가 렌더링될 수 있도록) 그래픽 처리 파이프라인으로 다시 판독되어야 한다는 것이다.
이것은 특히 타일 기반 그래픽 처리 시스템에 대한 경우이다. 이 경우에, 주어진 출력 프레임이 점차적으로 렌더링될 때, 각 타일에 대하여, 그 타일에 대한 "베이스" 프레임 콘텐츠가 맨 먼저 그래픽 처리 파이프라인으로 로드되어야 하고, 그 후에 증분 지오메트리는 "베이스" 타일 콘텐츠의 맨 위에서 렌더링되고, 그 결과의 점차적으로 렌더링된 타일은 그 후에 예를 들면 메인 메모리에 기재된다.
이것을 용이하게 하기 위해서, 그래픽 프로세서는 (예를 들면, 메인 메모리에서) 프레임 버퍼로부터 이전에 발생된 프레임을 로드하도록 작동될 수 있는 "프리 로드(pre-load)" 유닛을 포함할 수도 있고, 및/또는 증분 렌더링 패스 전에, 풀 스크린 프리미티브(폴리곤)를 이용해서 이전에 발생된 프레임에서 판독하는 제1 렌더링 패스가 행해질 수도 있다.
본 출원인은 증분 렌더링과 같은(그 밖의) 동작들에 대한 그래픽 처리 시스템의 동작 개선을 위한 여지가 남아 있다고 믿는다.
본 발명의 제1 국면에 의하면, 그래픽 처리 파이프라인을 포함하는 그래픽 처리 시스템을 작동시키는 방법이 제공되고, 이 방법은,
상기 그래픽 처리 파이프라인이 렌더 출력을 발생할 때,
태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 상기 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 태스크를 실행하도록 상기 그래픽 처리 파이프라인에 지시하는 것을 포함하고,
상기 그래픽 처리 파이프라인은 태스크와 관련된 조건이 충족되었는지를 판정하고,
상기 그래픽 처리 파이프라인은, 태스크와 관련된 조건이 충족되었다고 판정될 때, 태스크와 관련된 렌더 출력의 영역에서 태스크에 대한 처리를 실행한다.
본 발명의 제2 국면에 의하면,
태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 태스크를 실행하도록 상기 그래픽 처리 파이프라인에 지시될 때,
태스크와 관련된 조건이 충족되었는지 여부를 판정하고,
태스크와 관련된 조건이 충족되었다고 판정될 때, 상기 그래픽 처리 파이프라인에 의해 태스크와 관련된 렌더 출력의 영역에서 태스크에 대한 처리의 실행을 트리거하도록 구성된 처리회로를 구비하는 그래픽 처리 파이프라인이 제공된다.
본 발명에 있어서, 렌더 출력을 발생할 때 실행되는 그래픽 처리 태스크는 태스크에 대한 처리의 실행을 트리거하기(트리거하지 않기) 위해서 사용되는 관련 조건을 갖는다. 그 조건이 충족되었다고 판정되면, 태스크의 처리는 태스크와 관련되는 렌더 출력의 영역에서 실행된다. 이하에 더 설명하는 것처럼, 이것은 특히(전적인 것은 아니지만) 타일 기반의 그래픽 처리 시스템에 있어서, 좀더 효율적인 방식으로 증분 렌더링과 같은 동작들을 수행하는 것을 용이하게 할 수 있다.
발생되고 있는 렌더 출력은 그래픽 처리 시스템이 발생할 수 있는 어떤 적절한 원하는 렌더 출력일 수 있다. 하나의 바람직한 실시예에 있어서는, 그것은 표시용 프레임이지만, 그것은 또한 그래픽 텍스처(렌더 투 텍스처(render-to-texture) 동작에서) 등과 같은 다른 형태의 그래픽 처리 출력일 수도 있다. 이 출력은 화상인 것이 바람직하다.
하나의 바람직한 실시예에 있어서는, 그래픽 처리 파이프라인은 이전에 발생된 렌더 출력, 예를 들면 프레임을 점차적으로 렌더링하고 있다(이와 같이 발생되고 있는 렌더 출력은 점차적으로 렌더링된 프레임이다).
그래픽 처리 파이프라인에 실행하도록 지시하는 관련 조건을 갖는 태스크는, 그래픽 처리 파이프라인에 제공될 수 있는 어떤 적절한 원하는 태스크일 수 있다.
이 태스크는 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 태스크와 관련된 렌더 출력의 영역을 갖는다. 태스크에 대한 처리가 실행되는 렌더 출력의 영역은, 어떤 적절한 원하는 사이즈 및 형상일 수 있다. 그것은 렌더 출력의 직사각형 영역인 것이 바람직하다. 물론 다른 방식도 가능할 것이다.
태스크가 수행되는 렌더 출력 영역은, 태스크에 대해서 처리되는, 예를 들면, 특정한 오브젝트들, 프리미티브들, 및/또는 버텍스들 등을 식별함으로써, 태스크에 대한 영역을 분명히 표시함으로써 표시될 수 있지만, 바람직한 실시예에 있어서는, 그 영역이 함축적으로 표시된다. 예를 들면, 태스크에 대한 영역은, 무엇이든 (렌더링 타일과 같은) 렌더 출력의 에어리어가 처리되고 있는 것을 커버하도록 설정될 수 있다. 이와 같이, 예를 들면, 태스크가 트리거되면, 태스크가 수행되는(관련되는) 각 프래그먼트(예를 들면, 화소 및/또는 샘플링) 위치에 대하여 커버하는 래스터화 및 렌더링되는 프리미티브, 및/또는 태스크가 수행되는(관련되는) 각 프래그먼트(예를 들면, 화소 및/또는 샘플링) 위치에 대하여 렌더링되는 프래그먼트들은, 그래픽 처리 파이프라인의 관련 스테이지 또는 스테이지들에 (처리하기 위해서) 발행될 것이다.
태스크에 대하여 처리되는 렌더 출력의 영역은, 출력(예를 들면, 프레임)의 전체 에어리어일 수 있거나, 또는 그 영역은 전체 렌더 출력(예를 들면, 프레임)의 전부가 아닌 일부만 커버할 수 있다. 예를 들면, 렌더 출력(예를 들면, 프레임)은 보다 작은 서브 에어리어로 분할될 수 있고, 태스크에 대한 영역은 보다 작은 서브 에어리어 중의 하나의 사이즈를 갖는다. 이와 같이, 예를 들면, 타일 기반 그래픽 처리 시스템에 있어서는, 태스크에 대한 영역은, 원한다면, 복수의 타일을 및/또는 서브 타일만을 똑같이 커버할 수 있지만, (단 한 개의) 타일을 커버할 수 있고, 바람직한 실시예에 있어서는 커버한다. 바람직한 실시예에 있어서는, 태스크에 대한 영역은 적어도 그래픽 처리 파이프라인이 어느 때든지 처리하는 렌더 출력(이와 같이 타일 기반 그래픽 처리 시스템에서 렌더링 타일)의 전체 에어리어를 커버한다.
태스크에 대하여 처리되는 렌더 출력의 영역이 렌더 출력(예를 들면, 렌더링 타일)의 서브 에어리어만이면, 그 후에 태스크가 전체 렌더 출력에 궁극적으로 적용되도록 복수의 서브 에어리어에 대해서 (잠재적으로) 반복되면(예를 들면 타일 기반 그래픽 처리 시스템에서는 보통 그럴 것이므로), (태스크의 조건이 그 서브 에어리어에 대해서 충족되면) 조건부 태스크에 대한 처리는 처리되는 각 서브 에어리어에 대해서 각각 실행될 것이다. 이와 같이, 바람직한 실시예에 있어서는, 조건부 태스크에 대하여 처리되는 렌더 출력의 영역은, 태스크가 처리되는 렌더 출력 내부의 절대 영역을 정의하는 것보다는, 렌더 출력 내부의 어떤 절대 위치에 각각 적용될 수 있는 (렌더링 타일을 포함하는 것과 같은) 렌더 출력의 "상대" 영역을 구비한다. 이것에 의해 그 후에 고려되고 있는 렌더 출력의 각 서브 에어리어에 대하여 개별적으로 조건부 태스크에 대한 렌더 출력 영역을 재정의할 필요없이, 같은 "총칭" 조건부 태스크가 발생되고 있는 렌더 출력 내부의 복수의 영역(예를 들면, 렌더링 타일들)에 적용될 수 있게 된다.
하나의 바람직한 실시예에 있어서는 태스크에 대하여 처리되는 영역의 처리는, 원하는 렌더 출력 데이터를 커버하는 (따라서 예를 들면, 풀 프레임(full-frame) 프리미티브, 또는 풀 타일(full-tile) 프리미티브인) 단 한 개의 프리미티브를 처리함으로써 달성된다("프리미티브"가 실제로 발생될 필요는 없지만, 대신에 그러한 프리미티브에 대응하는 프래그먼트들은 원한다면 파이프라인에 직접 발행될 수 있다(하나의 바람직한 실시예에 있어서는, 이런 식으로 작업이 이루어지고 있다).
렌더 출력 영역이 태스크에 대하여 행해지는 처리는, 어떤 적절한 원하는 처리일 수 있다(예를 들면, 바람직하게는, 렌더 출력 영역은 그래픽 처리 파이프라인에서 처리될 수 있다). 그것은 바람직하게는 태스크에 대한 렌더 출력 영역에 대하여 주어진 처리 동작 또는 동작들을 수행하는 것을 포함하고, 바람직하게는 렌더 출력 영역에 의해 커버된 에어리어 내부의 샘플링 위치, 바람직하게는 복수의 샘플링 위치, 바람직하게는 각 샘플링 위치를 처리하는 (바람직하게는 처리될 각 샘플링 위치를 같은 대응하는 처리 동작 또는 동작들에 종속시키는) 것을 포함한다. 그 처리는 바람직하게는 태스크에 대한 렌더 출력 영역에 의해(에 대하여) 커버된 프래그먼트들 및/또는 샘플링 위치들을 렌더링하는 것을 포함한다. 그것은 또한 예를 들면, 바람직하게는 태스크에 대하여 렌더링하기 위한 프래그먼트들을 발생시키기 위해서, 태스크에 대한 렌더 출력 영역에서 래스터화를 수행하는 것을 포함할 수도 있다. 그것은 태스크에 대한 렌더 출력 영역에서, 예를 들면 프래그먼트들을 렌더링하는 것만 포함할 수도 있고, 또는 태스크에 대한 렌더 출력 영역에서 래스터화 및 렌더링 양쪽을 포함할 수도 있다.
바람직한 실시예에 있어서는, 렌더 출력 영역이 태스크에 대하여 행해지는 처리는, 프래그먼트 처리를 수행하지만, 태스크에 대한 렌더 출력 영역에 대해서 지오메트리 처리를 수행하지 않는(예를 들면, 어떤 사전 "지오메트리" 처리 없이, 태스크에 대한 렌더 출력 영역에 대하여 프래그먼트들을 직접 렌더링하는) 것을 포함한다.
이와 같이, 바람직한 실시예에 있어서는, 조건부 태스크에 대한 처리는, 태스크와 관련된 영역에서의 프래그먼트들에 대해서 행해지는 작업과, 바람직하게는 프래그먼트 쉐이딩을 구비한다. 그것은 바람직하게는 프래그먼트 쉐이딩, 퍼 프래그먼트(per-fragment) 테스트 및 블렌딩 중의 적어도 하나와, 바람직하게는 모두를 포함한다. 바람직한 실시예에 있어서는, 그것은 또한 혹은 대신에 래스터화를 포함한다.
그에 상응하여, 바람직한 실시예에 있어서는, 조건부 태스크에 대한 처리는 어떤 지오메트리 쉐이딩도 포함하지 않는다. 바람직하게는, 조건부 태스크에 대한 처리는 버텍스 변형, 버텍스 쉐이딩, 테셀레이션(tessellation), 지오메트리 쉐이딩, 프리미티브 셋업, 및 클립핑(clipping) 중의 적어도 하나를 포함하지 않고, 바람직하게는 어느 것도 포함하지 않는다.
렌더 출력 영역에서의 조건부 태스크에 대한 처리는, 그래픽 처리 시스템 및 파이프라인의 어떤 적절한 스테이지 또는 요소에 의해 수행될 수 있다. 바람직한 실시예에 있어서는, 상기 처리는 (따라서 바람직하게는 래스터화 또는 렌더링 스테이지로부터 앞으로) 적절한 그래픽 처리 파이프라인 스테이지들에 의해 수행된다.
하나의 바람직한 실시예에 있어서는, 태스크에 대한 처리 동작은, 이전에 발생된 데이터 값들을 판독하고, 그들을 다음의 렌더링 동작에 사용하기 위해서 저장하는 (따라서, 예를 들면, 바람직하게는 태스크에 대한 영역으로 덮인 에어리어 내부의 각 샘플링 위치에 대하여 이전에 발생된 데이터 값을 판독해서 저장하는) 것을 포함한다). 이것은, 예를 들면, 증분 렌더링 동작 시에 추가 처리하기 위해서, 예를 들면, 바람직하게는 이전에 발생된 프레임에 대한 예를 들면, 컬러 및/또는 심도 값들을, 예를 들면 그래픽 처리 파이프라인의 버퍼로 다시 로드하기 위해서 사용될 수도 있다. 이 경우에, 태스크는 필요하다면 복수의 형태의 데이터 값들을 로드할 수 있지만, 한 가지 형태의 데이터 값(예를 들면, 컬러 또는 심도)을 로드하는 것이 바람직하다.
바람직한 실시예에 있어서는, 조건부 태스크가 실행하는 처리 동작은, 렌더 출력을 발생할 때 발생되는 데이터를 예를 들면, 필터링하거나(예를 들면, 다운샘플링하거나), 압축하거나 그렇지 않으면 인코딩, 및/또는 에버리징하는 것과 같은, 렌더 출력을 발생할 때 그래픽 처리 파이프라인에 의해 발생되는 데이터의 처리를 포함한다. 이것은 예를 들면, 주어진 렌더 출력을 렌더링할 때 발생되는 데이터를 조건부로 다운샘플링하거나 그렇지 않으면 필터링하기 위해서 사용될 수 있고, 예를 들면, 데이터를 로딩할 뿐만 아니라 대신에 데이터를 로딩할 수도 있다.
특히 바람직한 실시예에 있어서는, 태스크는 또한 태스크에 대한 렌더 출력 영역이 받게 되는 처리를 나타낸다. 이것은 어떤 적절한 원하는 방식으로든 표시될 수 있다.
태스크는 바람직하게는 또한 그것의 처리가 렌더 출력을 발생할 때 수행되는 다른 태스크들에 대하여 실행되는 순서를 나타낸다. 예를 들면, 태스크는 바람직하게는 그것의 처리가 렌더 출력에 대해서 처리되는 다른 태스크들 및/또는 지오메트리 전후에 수행되어야 하는지 여부를 나타낸다.
조건부 태스크에 대한 전체 처리 동작은, 태스크에 대한 조건이 충족되는 경우에 의존될 수 있고, 단지 수행될 수 있다(하나의 바람직한 실시예에 있어서는, 이것이 사실이다).
그렇지만, 태스크 처리의 일부만이 그 조건에 의존하는 것도 가능할 것이고, 태스크에 대한 다른 처리는 태스크의 조건이 충족되는지 아닌지의 여부에 관계없이 수행된다. 예를 들면, 태스크에 대한 렌더 출력 영역에 대응하는 프리미티브는, 예를 들면 태스크들에 대한 프래그먼트들을 발생시키기 위해서 래스터화될 수 있지만, 이들 프래그먼트는 단지 태스크의 조건이 충족되면 렌더링된다(혹은 파이프라인에서 앞으로 전해진다).
이것은 예를 들면 태스크에 대한 조건의 유형 및/또는 태스크가 수행하는 처리에 의존할 수도 있다. 이와 같이, 바람직한 실시예에 있어서는, 태스크에 대한 조건이 충족되었는지를 판정하는 것에 관계없이(바람직하게는 판정하기 전에) 태스크에 대한 일부 처리가 수행되고, 태스크에 대한 추가 처리는 그 후에 태스크에 대한 조건이 충족되었다고 판정될 때(판정될 때만) 수행된다.
태스크 및 그것의 관련된 렌더 출력 영역, 조건, 처리 등은, 어떤 적절한 원하는 형태로든 그래픽 처리 파이프라인에 제공될 수 있다. 특히 바람직한 실시예에 있어서는, 태스크는, 태스크의 조건이 충족되면 그래픽 처리 파이프라인에 의해 실행되는 "쉐이더(shader)"(그래픽 쉐이딩 프로그램)로서 제공된다.
그래픽 처리 파이프라인은 어떤 적절한 원하는 방식으로 조건부 태스크를 실행하도록 지시받을 수 있다. 일 실시예에 있어서는, 이것은 원하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 제공되는 코멘드들의 세트에 태스크를 실행하기 위한 적절한 코멘드를 포함함으로써 행해진다.
이와 같이, 바람직한 실시예에 있어서는, 특정 쉐이더와 관련된 조건을 갖는 특정 쉐이더를 실행하라는 지시(코멘드)는 그래픽 처리 파이프라인에 전해진다. 조건부 태스크와 관련된 조건은, 조건부 태스크(예를 들면, 조건부 쉐이더)를 실행하라는 지시(코멘드)로 표시되는 것이 바람직하다. 가장 바람직하게는, 구성 비트의 세트는 조건을 표시하라는 지시로 설정될 수 있다.
코멘드는 바람직하게는 예를 들면, 그래픽 처리 파이프라인에 대한 전체 "잡(job)" 디스크립터(descriptor)의 세트에 포함되는 조건부 태스크(혹은 태스크들)에 대한 디스크립터의 형태이다. 예를 들면, 조건부 태스크는 드로 콜 디스크립터(draw call descriptor)를 이용해서 정의될 수 있고, 드로 콜 디스크립터 내의 주어진 필드(혹은 그렇지 않으면)는 태스크에 대한 조건을 나타낼 수 있다. 바람직한 실시예에 있어서는, 렌더 출력을 발생할 때 (예를 들면, 어느 프리미티브 리스트로부터 프리미티브들을 판독할지를 포함하는) 행해지는 모든 프래그먼트 처리를 묘사하는 전체의 "프래그먼트 잡 디스크립터"가 있고, 프래그먼트 잡에 대해서 사용된 한 개(혹은 그 이상)의 디스크립터 필드는 조건부 태스크에 대한 드로 콜 디스크립터 및 조건부 태스크에 대한 조건을 나타내는 구성 비트를 가리키는 포인터 또는 포인터들을 포함할 수 있다.
특히 바람직한 실시예에 있어서는, 조건부 태스크와 관련되는 조건 또는 조건들은 이용 중에 구성(설정)될 수 있다. 예를 들면, 바람직하게는, 문제의 태스크에 대한 조건을 나타내도록 적절하게 설정되어 있는, 구성 비트의 집합과 같은, 지표(indicator)를 가진 조건부 태스크들과 관련될 수 있는 소정의 조건의 다수의 집합이 있을 수 있다.
태스크를 실행하라는 지시는, 그래픽 처리 파이프라인에 제공될 수 있고, 태스크는, 그래픽 처리 파이프라인이 속하는 전체 그래픽 처리 시스템의 어떤 적절한 원하는 소자 또는 스테이지에 의해, 그래픽 처리 파이프라인에 제공하기 위해 구성될 수 있다.
그래픽 처리 파이프라인에 제공되는 조건부 태스크를 실행하라는 지시는, 예를 들면, 렌더링 출력을 필요로 하는 어플리케이션에 의해 명백하게 요청되는 것보다는 그래픽 처리 시스템의 동작에 의해 자동으로 발생되어야 하고, 바람직하게는 발생된다. 이와 같이, 특히, 조건부 태스크를 실행하라는 지시를 그래픽 처리 파이프라인에 제공하기 위한 본 발명의 방식의 동작은, 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들 중에 조건부 그래픽 처리 태스크를 포함하는지 여부를, 렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 어플리케이션으로부터 수신된 그래픽 처리 코멘드들로부터 식별하는, 예를 들면 그래픽 처리 시스템의 소자에 의해 트리거되는 것이 바람직하고, 이 판정이 행해지는 어플리케이션으로부터의 그래픽 처리 코멘드들은 태스크와 관련된 조건을 갖는 어떤 태스크를 본래 나타내는 그래픽 처리 코멘드들을 포함하지 않는다. 이와 같이, 본 발명의 방식의 조건부 태스크들은, (만약 있다면) 렌더 출력을 필요로 하는 어플리케이션이 명백하게 나타낼 수도 있는 어떤 "조건부" 처리 태스크들과 구별되고, 이들 태스크에 추가된다.
이와 같이, 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들 중에 조건부 그래픽 처리 태스크를 포함할지의 필요성은, 렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 어플리케이션으로부터 수신된 어떤 형태의 조건부 태스크와 관련이 없는 그래픽 처리 코멘드들로부터 판정되는 것이 바람직하다.
바람직한 실시예에 있어서는, (즉, 예를 들면, 그래픽 처리 파이프라인과 관련되어 있는 호스트 CPU 상에서 실행하고 있는) 그래픽 처리 파이프라인용 드라이버는, 태스크를 구성하고, 그래픽 처리 파이프라인에 태스크를 실행하라고 지시한다. 가장 바람직하게는, 예를 들면 드라이버는, 본 발명의 방식의 조건부 태스크가 필요한지 여부를, 예를 들면, 드라이버가 (예를 들면, 그래픽 처리를 필요로 하는 (API(Application Program Interface)를 통해서) 어플리케이션으로부터) 수신하는 그래픽 처리용 코멘드들로부터 식별하고, 만약 그렇다면, 드라이버가 렌더 출력을 발생할 때 그래픽 처리 파이프라인에 실행하라고 지시하는 (적절한 조건을 가진) 그러한 태스크를 태스크들의 집합에 포함하도록 구성된다.
본 발명은 (그래픽 처리 파이프라인에 "조건부" 태스크들을 제공하는) 그러한 동작으로도 확장된다. 이와 같이, 본 발명의 또 다른 국면에 의하면, 렌더 출력을 발생시키기 위한 태스크들을 그래픽 처리 파이프라인에 제공하는 방법이 제공되고, 이 방법은,
렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 어플리케이션으로부터 수신된 그래픽 처리 코멘드들로부터, 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는지 여부를, 판정하고,
상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함한다고 판정되는 경우에, 상기 그래픽 처리 파이프라인이 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 한 개 이상의 그래픽 처리 태스크들의 세트를 실행하라고 지시하는 것을 포함하고, 상기 태스크들의 세트 내의 태스크들 중의 적어도 하나는 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는다.
본 발명의 또 다른 국면에 의하면, 그래픽 처리 파이프라인에 렌더 출력을 발생시키기 위한 태스크들을 제공하는 장치가 제공되고, 이 장치는,
렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 어플리케이션으로부터 수신된 그래픽 처리 코멘드들로부터, 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리를 포함하는지 여부를 판정하고,
상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는 것으로 판정되는 경우에, 상기 그래픽 처리 파이프라인이 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해 한 개 이상의 그래픽 처리 태스크들의 세트를 실행하라고 그래픽 처리 파이프라인에 지시하도록 구성된 처리 회로를 구비하고, 상기 태스크들의 세트 내의 태스크들 중의 적어도 하나는 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는다.
본 발명은 그에 대응하여 전체 그래픽 처리 시스템(및 본 발명을 수행할 때의 그것의 동작)에도 확장된다.
이와 같이, 본 발명의 또 다른 국면에 의하면,
렌더 출력을 발생시키기 위한 태스크들을 그래픽 처리 파이프라인에 제공하는 호스트 프로세서와,
상기 호스트 프로세서로부터 수신된 태스크들에 응답하여 렌더 출력을 발생하는 그래픽 처리 파이프라인을 구비하는 그래픽 처리 시스템이 제공되고,
상기 호스트 프로세서는
렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 상기 호스트 프로세서에서 실행하는 어플리케이션으로부터 수신된 그래픽 처리 코멘드들로부터, 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 상기 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는지 여부를 판정하고,
상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는 것으로 판정되는 경우에, 상기 그래픽 처리 파이프라인이 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해 한 개 이상의 그래픽 처리 태스크들의 세트를 실행하라고 그래픽 처리 파이프라인에 지시하도록 구성된 처리 회로를 구비하고, 상기 태스크들의 세트 내의 태스크들 중의 적어도 하나는 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖고,
상기 그래픽 처리 파이프라인은
태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 태스크를 실행하라고 그래픽 처리 파이프라인가 지시받은 경우에,
태스크와 관련된 조건이 충족되었는지 여부를 판정하고,
상기 태스크와 관련된 조건이 충족되었다고 판정될 때, 상기 그래픽 처리 파이프라인에 의해 태스크와 관련된 렌더 출력의 영역에 대하여 태스크에 대한 처리를 실행하는 것을 트리거하도록 구성된 처리회로를 구비한다.
본 발명의 또 다른 국면에 의하면, 렌더 출력을 발생시키기 위한 태스크들을 그래픽 처리 파이프라인에 제공하는 호스트 프로세서와, 상기 호스트 프로세서로부터 수신된 태스크들에 응답해서 렌더 출력들을 발생하는 그래픽 처리 파이프라인을 구비하는 그래픽 처리 시스템을 작동시키는 방법이 제공되고, 이 방법은, 상기 호스트 프로세서와 상기 그래픽 처리 파이프라인을 구비하고,
상기 호스트 프로세서는,
렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 어플리케이션으로부터의 그래픽 처리 코멘드들로부터, 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 상기 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는지를 판정하고,
상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는 것으로 판정되는 경우에, 상기 그래픽 처리 파이프라인이 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해 한 개 이상의 그래픽 처리 태스크들의 세트를 실행하라고 그래픽 처리 파이프라인에 지시하고, 상기 태스크들의 세트 내의 태스크들 중의 적어도 하나는 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖고,
상기 그래픽 처리 파이프라인은 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 태스크를 실행하라고 지시받은 경우에,
태스크와 관련된 조건이 충족되었는지 여부를 판정하고,
상기 태스크와 관련된 조건이 충족되었다고 판정될 때, 태스크와 관련된 렌더 출력의 영역에 대하여 태스크에 대한 처리를 실행한다.
본 기술분야의 당업자에 의해 알 수 있는 것처럼, 본 발명의 모든 이들 국면들은 여기에 기재된 본 발명의 바람직한 선택적인 특징들 중의 어느 하나 또는 그 이상 또는 모두를 포함할 수 있고, 바람직하게는 포함한다. 이와 같이, 예를 들면, 조건부 태스크를 판정하고 포함하는 것은 그래픽 처리 파이프라인용 드라이버에 의해 수행되는 것이 바람직하다.
그래픽 처리 파이프라인에 의해 실행되는 태스크들 중의 하나를 조건부 태스크로 만들지의 판정은, 어떤 원하는 적절한 기준에 근거할 수 있다. 바람직하게는, 어플리케이션으로부터 수신된 그래픽 처리 코멘드들이 특정한, 바람직하게 선택된 조건 또는 조건들을 충족하면, "조건부 태스크"가 사용된다. 이 조건 또는 조건들은 바람직하게는 증분 렌더링과 같은, 특정한 타입의 렌더링 동작이 필요하다는 것을 나타내고 그것에 대응한다. 이것은 수신되는 코멘드들로부터 식별될 수 있다. 예를 들면, 렌더 출력을 발생하는 코멘드들이 "프레임 버퍼 클리어" 코멘드로 시작하지 않으면, 그것은 증분 렌더링이 수행되고 있다는 것을 나타낼 수 있다. 이와 같이, 바람직한 실시예에 있어서는, 렌더 출력을 발생하는 코멘드들이 프레임 버퍼를 클리어하는 코멘드로 시작하는지 여부를 판정하고, 그들이 행하지 않으면, 조건부 태스크는 그래픽 처리 파이프라인에 의해 실행되는 태스크들의 세트에 포함된다.
관련된 조건을 갖는 태스크가 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 (잠재적으로) 수행되는 태스크만이 되는 것이 가능할 것이고, 바람직한 실시예에 있어서는, 조건부 태스크는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 수행되는 복수의 태스크의 세트 중의 하나이다. 이 경우는, 2개 이상의 태스크가 있을 것이다. 이들 방식에 있어서는, 수행되는 태스크들의 세트에 있어서의 본 발명의 방식의 관련 조건을 갖는 2개 이상의 태스크들이 있을 수도 있다(하나의 바람직한 실시예에 있어서는 있다). 이와 같이, 바람직한 실시예에 있어서는, 2개(그 이상)의 "조건부" 태스크들은 그래픽 처리 파이프라인에 제공된다(그래픽 처리 파이프라인은 태스크의 각 조건이 충족될 때 이들 태스크에 제공된다).
2개 이상의 조건부 태스크들이 주어진 렌더 출력을 위해 그래픽 처리 파이프라인에 제공되는 경우, 이들 조건부 태스크들의 바람직하게는 복수, 바람직하게는 각각이 그글과 관련된 렌더 출력의 같은(혹은 대응하는) 영역을 갖는다.
렌더 출력을 발생시키기 위해서 실행되는 복수의 태스크들의 세트 내의 각 태스크가 본 발명의 방식에 있어서의 조건부 태스크가 되는 것이 가능할 것이다(하나의 바람직한 실시예에 있어서는, 이것이 사실이다). 그렇지만, 바람직한 실시예에 있어서는, 수행되는 복수의 태스크들의 세트가 있는 경우에, 상기 태스크들의 세트 내의 태스크들의 전부가 아닌 일부만(예를 들면, 하나만)이 "조건부" 태스크들이다. 이와 같이, 바람직한 실시예에 있어서는, 본 발명의 방식에 있어서의 "조건부" 태스크 또는 태스크들과, 한 개 이상의 다른 태스크들 양쪽을 포함하는 복수의 태스크들의 세트는 렌더 출력을 발생할 목적으로 그래픽 처리 파이프라인에 제공된다.
이 경우에, 다른 "비조건부" 태스크들은, 바람직하게는 처리될 지오메트리(예를 들면, 지오메트리에 행해지는 처리)를 나타내지만, 그래픽 처리 파이프라인에 의해 수행되는 태스크들에 대해서 테스트(충족)되어야 하는 어떤 관련된 조건(들)도 갖지 않는 (쉐이더들과 같은) "보통의" 그래픽 처리 태스크들이다. 이와 같이, "비조건부" 태스크들은 바람직하게는 그들과 관련되는 지오메트리의 "종래의" 처리(래스터화 및 렌더링)를 트리거한다.
상기 설명한 바와 같이, 바람직한 실시예에 있어서는, "조건부 태스크들"은, (그들 조건들이 충족되면) 렌더 출력을 발생시키기 위해서 수행되는 하나의 (혹은 어떤) "보통의" 태스크들에 대한 예를 들면 지오메트리(예를 들면, 프래그먼트들) 전후에 그들 관련된 프래그먼트들이 처리되어야 하는지 여부를 나타낼 수 있고, 바람직하게는 나타낸다.
바람직한 실시예에 있어서는, 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 제공될 수 있는 복수의 태스크들의 세트에 포함될 수 있는 조건부 태스크들의 수에 대한 제한이 있다. 바람직한 실시예에 있어서는, 어떤 주어진 렌더 출력에 대해서는 최대 3개의 조건부 태스크들이 사용될 수 있다. 이 경우에, 바람직하게는, 태스크들의 세트에 있어서, 트리거되면, "비조건부" 태스크 전에, 바람직하게는 "비조건부" 태스크들 전부 전에 처리되는 2개의 조건부 태스크들과, 태스크들의 세트에 있어서, 트리거되면, "비조건부" 태스크 후에, 바람직하게는 "비조건부" 태스크들 전부 후에 처리되는 한 개의 조건부 태스크가 있다.
바람직한 실시예에 있어서는, "비조건부" 태스크 전에 실행되는 조건부 태스크는, 데이터를 로드하는 태스크이다(그것의 조건들이 충족되면(그 데이터는 바람직하게는 그 후에 다음의 "비조건부" 태스크에 의해 처리된다)). "비조건부" 태스크 후에 수행되는 조건부 태스크는, 바람직하게는 비조건부 태스크의 결과를 다운샘플링하거나 그렇지 않으면 필터링하는 것과 같은, 몇몇 처리를 이전에 실행된 비조건부 태스크의 출력에 대하여 수행하도록 작동하는 태스크이다.
일 실시예에 있어서는, 그래픽 처리 파이프라인에 실행하라고 지시할 수 있는 한 개 이상의 조건부 태스크들의 소정의 세트가 있다. 이 경우에, 그래픽 처리 파이프라인은, 렌더 출력을 발생할 때 그래픽 처리 파이프라인에 전송되는 코멘드들의 세트에 태스크에 대한 적절한 코멘드를 포함함으로써 소정의 조건부 태스크들 중의 하나를 실행하도록 지시받을 수 있다.
바람직한 실시예에 있어서는, 조건부 태스크들이 (예를 들면, 바람직하게는 드라이버에 의해) 사용 중에("작동 중에(on the fly)") 구성된다. 이것에 의해 그 후에는 조건부 태스크가 필요한 특정 처리를 위해서 유연하게 구성될 수 있다(예를 들면, 프레임 버퍼가 다수의 컬러 렌더 타겟을 이용하도록 구성되면, 그것에 의해 다수의 컬러 값들이 각, 예를 들면 화소에 로드될 수 있다).
물론 다른 방식도 가능할 것이다.
그래픽 처리 파이프라인에 의해 그것의 실행을 트리거하기(혹은 트리거하지 않기) 위해서 태스크와 관련될 수 있는 조건들은, 태스크를 실행할 것인지 아닌지 여부에 관한 판정이 근거하는 어떤 원하는 적절한 조건일 수 있다. 태스크와 관련된 조건 또는 조건들은 바람직하게는 태스크의 실행이 실제로 렌더 출력을 발생하는 데에 필요한지 아닌지 여부에 관한 것이다.
주어진 조건부 태스크는 태스크를 실행할지 여부를 판정하기 위해서 고려되는 태스크와 관련된 한 개의 조건만을 가질 수도 있고(하나의 바람직한 실시예에 있어서는, 이것은 사실이다), 혹은 원한다면, 그것은 태스크와 관련된 복수의 조건을 가질 수도 있다.
바람직한 실시예에 있어서는, 본 발명의 목적을 위해 태스크들과 관련될 수 있는 특정한, 바람직하게는 미리 정해진, 바람직하게는 미리 결정된, 조건들의 세트가 있다. 그 후에는 태스크 자체의 디스크립션(description)에 관련 조건을 포함함으로써, 혹은 문제의 태스크를 실행하라고 그래픽 처리 파이프라인에 지시하기 위해서 그래픽 처리 파이프라인에 제공되는 지시(코멘드)에 조건 또는 조건(에 대한 예를 들면, 포인터)의 지표를 포함함으로써 조건을 태스크와 관련지을 수 있다.
특히 바람직한 실시예에 있어서는, 태스크와 관련되는 조건은, 태스크와 관련된 렌더 출력의 에어리어를 가짐으로써, 문제의 에어리어가 조건에 대한 요구조건을 충족하면 조건이 충족된다. 예를 들면, 조건은, 렌더 출력에 대해서 실행되는 다른 (비조건부) 태스크들과 관련된 어떤 지오메트리가 (타일 기반 그래픽 처리 시스템에서 처리되고 있는 타일과 같은) 렌더 출력의 특정 에어리어 내부에 있는지 여부일 수 있다. 이것에 의해 예를 들면, 조건부 태스크의 실행이 렌더 출력의 정해진 에어리어의 특정 특성에 의존함으로써, 예를 들면, 렌더 출력의 정해진 에어리어 내부의 샘플링 포인트들의 세트의 조건부 처리는, 렌더 출력의 특정 에어리어가 특정한 조건을 충족하면 트리거되게 된다.
이들 방식에 있어서는, 조건이 테스트되어야 하는 렌더 출력의 에어리어는 렌더 출력의 어떤 적절한 원하는 에어리어일 수 있다. 그것은 렌더 출력의 단 한 개의 샘플링 위치일 수 있지만, 바람직하게는 렌더 출력의 복수의 샘플링 위치의 영역이다. 그것은 완전한 렌더 출력 에어리어(예를 들면, 프레임)일 수 있지만, 바람직한 실시예에 있어서는, 렌더 출력의 일부만이지 전부는 아니다. 예를 들면, 테스트는 렌더 출력의 정해진 작은 영역이 조건을 충족하는지 여부일 수 있다. 특히 바람직한 실시예에 있어서는, 조건에 대한 테스트는, 현재 처리되고 있는 렌더 출력(예를 들면, 렌더링 타일)의 에어리어가 문제의 조건을 충족하는지 여부이다. 이와 같이, 타일 기반 그래픽 처리 파이프라인의 경우에, 바람직한 실시예에 있어서는, 현재 처리되고 있는 타일에 대한 조건이 테스트되고, 그 타일에 대한 조건이 충족되면, 조건부 태스크가 (바람직하게는 전체 타일에 대해서) 실행된다(그렇지 않으면 실행되지 않는다).
또한, 조건이 타일 또는 타일들(서브 타일 또는 서브 타일들)의 일부만 또는 복수의 타일들의 세트와 같은, 타일 이외의 무엇인가와 관련이 있는 것이 가능할 것이다. 또한, 정해진 조건부 태스크가 조건이 테스트되는 태스크와 관련된 "주문형(customisable)"(사용 중에 구성가능한) 에어리어(지오메트리)를 갖는 것이 가능할 것이다. 이것은 예를 들면, 스텐실 버퍼(stencil buffer)를 이용해서 또는 어떤 다른 적절한 방식으로 표시될 수 있다.
특히 바람직한 실시예에 있어서는, 조건이 테스트되는 렌더 출력의 에어리어는, 문제의 태스크에 대한 관련 렌더 출력 영역이 관련되어 있는(덮인) 에어리어에 대응한다. 이와 같이, 예를 들면, 조건부 태스크와 관련된 렌더 출력 영역이 타일 기반 그래픽 처리 시스템에서의 타일인 경우에, 조건부 태스크에 대한 조건이 바람직하게는 타일에 대해서도 테스트된다. 그렇지만, 이것은 필수적인 것은 아니며, 예를 들면 조건부 태스크가 실행되는 영역과 매치하지 않는 렌더 출력의 영역에 대한 조건을 테스트하는 것이 가능할 것이다. 원하면, 이것에 의해 예를 들면, 렌더 출력의 좀더 작은 영역에 대해서 충족되는 조건이 렌더 출력의 좀 더 큰 영역에 대해서 조건부 태스크의 실행을 (조건이 충족될 때) 트리거할 수 있게 될 것이고, 그 반대도 마찬가지다.
일반적으로, 조건부 태스크에 대한 조건은 렌더 출력의 에어리어에 대해서 테스트될 것이고, 그 후에 렌더 출력의 태스크의 관련 영역에 대하여 조건부 태스크의 실행을 (조건이 충족될 때) 트리거한다. 바람직하게는, 조건부 태스크가 실행되는 렌더 출력의 영역은, 태스크에 대한 조건이 테스트되는 렌더 출력의 에어리어를 둘러싸고, 바람직하게는 태스크의 조건이 테스트되는 렌더 출력의 에어리어와 매치하거나 이 에어리어를 둘러싸는 직사각형 영역이다.
바람직한 실시예에 있어서는, 조건부 태스크와 관련되는 조건은, 발생되고 있는 렌더 출력에 대한 "실제" 지오메트리의 처리 결과, 즉 렌더 출력을 발생할 때 실행되어야 하는 비조건부 태스크에 대한 지오메트리의 처리 결과에 의존하는 조건이다. 가장 바람직하게는, 조건은 (예를 들면, 실제의 렌더 출력에 존재하는 것으로 실제로 렌더링되지 않는 어떤 "테스트" 지오메트리의 처리와 대조적으로) 렌더 출력에 대해서 처리되어야 하는 실제의 지오메트리의 처리 결과, 즉 가시적인 경우, 렌더 출력에 본질적으로 기여하는 지오메트리에 의존한다.
조건부 태스크와 관련된 조건이 렌더 출력을 발생할 때 실행되어야 하는 특정 다른 태스크 또는 태스크들에 대한 처리 지오메트리에 의존하는 것이 가능할 것이고, 특히 바람직한 실시예에 있어서는, 렌더 출력에 대한 지오메트리의 처리 결과에 의존하는 조건부 태스크와 관련되는 조건은, 렌더 출력에 대한 어떤 지오메트리(실제의 지오메트리)의 처리 결과에(에 의해 트리거될 수 있다) 의존한다. 즉, 특히 바람직한 실시예에 있어서는, (예를 들면, 단지 조건부 태스크를 트리거할 수 있는 렌더 출력을 발생할 때 실행되어야 할 정해진 태스크들의 세트의 특정 태스크들에 대한 지오메트리와 대조적으로) 문제의 렌더 출력을 발생할 때 실행되어야 하는 다른 "실제"(비조건부) 태스크들의 어느 것인가에 대한 어떤 지오메트리가 태스크에 대한 조건을 충족하면 조건부 태스크와 관련된 조건이 트리거될 수 있다.
이와 같이, 바람직한 실시예에 있어서, 조건부 태스크와 관련된 조건은, 조건부 태스크 이외의 태스크와 관련된 지오메트리의 처리 결과에 의해 (바람직하게는 문제의 렌더 출력을 발생할 때 실행되어야 하는 비조건부 태스크들 중의 어느 것인가와 관련된 지오메트리에 의해) 트리거된다.
그에 대응하여, 바람직한 실시예에 있어서, 조건부 태스크에 대한 조건은, (문제의 조건부 태스크와 관련되어 있지 않거나 관련되어 있는) 조건부 태스크와 다른 태스크에 대한 지오메트리에 의해 트리거된다.
바람직한 실시예에 있어서, 조건부 태스크와 관련될 수 있는 조건은, 문제의 렌더 출력을 발생할 때 실행되어야 하는 비조건부 태스크에 대하여 처리되는 어떤 지오메트리가 조건부 태스크에 대한 조건이 고려되어야 하는 영역(을 교차하는지) 내부에 적어도 부분적으로 포함되어 있는지 여부이다. 이와 같이, 예를 들면, 바람직한 실시예에 있어서, 조건부 태스크와 관련된 조건은, 어떤 지오메트리(예를 들면, 프리미티브들)가 현재 처리되고 있는 타일을 교차하는지 여부이다. 이것은 특히 그 다음의 비조건부 태스크들에 필요한 데이터 값들(특히 심도 값들)을 로드하는 역할을 하는 조건부 태스크들에 유용할 수도 있다.
바람직한 실시예에 있어서, 조건부 태스크와 관련될 수 있는 조건은, 적어도 한 개의 프래그먼트(샘플링 위치들 또는 샘플링 위치들의 세트들)가 렌더 출력을 발생시키기 위해서 실행되어야 하는 비조건부 태스크에 대한 지오메트리를 래스터화할 때 그래픽 처리 파이프라인의 래스터화기에 의해 발행되고, 래스터화기에 의해 발행된 프래그먼트들이 태스크에 대한 조건이 관련되어 있는 에어리어에 대하여, (만약에 있다면) 그래픽 처리 파이프라인에서 받게 되는 (얼리 심도 테스트와 같은) 얼리 컬링 테스트들(early culling tests) 중의 하나, 바람직하게는 모두를 통과하는지 여부를 포함한다. 이와 같이, 바람직한 실시예에 있어서, 조건부 태스크는, "비조건부" 태스크 지오메트리에 대한 프래그먼트가 처리되고 있는 타일에 대한 그래픽 처리 파이프라인에서의 얼리 컬링 테스트(바람직하게는 얼리 심도 테스트)를 통과하면 충족되는 조건과 관련되어 있다. 다시, 이것은 특히 다음의 비조건부 태스크들에 필요한 데이터 값들(특히 컬러 값들)을 로드하는 역할을 하는 조건부 태스크들에 특히 유용할 수 있다.
바람직한 실시예에 있어서는, 처리되고 있는 렌더 출력의 어떤 속성에도 관계없이, 태스크가 항상 실행되도록 조건부 태스크에 대한 조건을 설정하는 것도 가능하다. 이것은 그 후에 조건부 태스크가 렌더 출력의 어떤 속성에도 관계없이 실행되는 것이 바람직한 경우에 사용될 수 있다. 그러한 "항상" 조건은, 프리미티브 리스트를 작성할 필요없이, 프레임에 필요한 지오멘트리만이 실제로 전체 프레임을 덮은 프리미티브인 경우에 예를 들면, 블리트(blit) 같은 동작들을 이행하기 위해서 사용될 수 있다.
그에 대응하여, 바람직한 실시예에 있어서는, 발생되고 있는 렌더 출력의 어떤 속성에도 관계없이, 조건부 태스크가 결코 실행되지 않는다는 것을 보장하는 조건을 조건부 태스크와 관련짓는 것이 가능하다. 그러한 "결코 하지 않는다" 조건은, 문제의 조건부 태스크를 비활성화(disable)시키기 위해서 사용될 수 있다. 이것은 발생되고 있는 렌더 출력의 어떤 속성에도 관계없이 조건부 태스크가 실행하는 것을 방지하는 것이 바람직한 경우에 유용할 수 있다.
바람직한 실시예에 있어서는, 조건부 태스크와 관련될 수 있는 조건은, (혹은 상기) 조건부 태스크 이외의 태스크에 대하여 처리된 어떤 지오메트리가, 태스크에 대한 (혹은 상기) 조건이 관련되어 있는 에어리어에 대하여, 발생되고 있는(바람직하게는 저장되어 있는) 다른 태스크에 대한 출력 데이터 값을 야기하는지 여부를 포함한다. 예를 들면, 심도 및/또는 컬러 버퍼가, 조건부 태스크에 대한 조건이 관련되어 있는 에어리어에 대한 (혹은 상기) 조건부 태스크 이외의 태스크에 의해 갱신되는지 여부를 판정할 수 있고, 컬러 또는 심도 버퍼가 갱신되면, 그 후에 조건부 태스크가 트리거된다(그렇지만 그 밖에는 트리거되지 않는다). 바람직한 실시예에 있어서는, 이런 식으로 작업이 이루어진다. 이것은 특히 렌더 출력을 발생할 때 수행되고 있는 다른 태스크들에 의해 발생되는 데이터 값들을 처리하는 역할을 하는 조건부 태스크들에 유용할 수 있다.
이 경우, 비조건부 태스크에 대한 관련 출력은, 비조건부 태스크에 의해 출력이 발생되는지를 판정하기 위해 추적될 수 있다. 예를 들면, 더티 비트(dirty bits) 방식은 적절한 버퍼(예를 들면, 컬러 및/또는 심도 버퍼)에 비조건부 태스크에 대한 출력이 기록되었는지 여부를 판정하는 데에 사용될 수 있다. 그러한 방식에 있어서, 바람직하게는, 예를 들면 심도 및 컬러 버퍼를 개별적으로 추적함으로써, 하나의 버퍼 또는 다른 버퍼가 갱신될 때 또는 양쪽 버퍼가 갱신되는 경우에만 조건부 태스크가 트리거될 수 있다. 비조건부 태스크가 출력을 생성했는지(예를 들면, 데이터 값들의 버퍼를 갱신했는지) 여부를 판정하기 위한 다른 방식도 원한다면 이용될 수 있다.
조건부 태스크에 대한 조건이 데이터 값들의 정해진 세트(예를 들면, 심도 또는 컬러 버퍼)가 갱신되었는지 아닌지 여부와 관련되어 있는 경우에, 바람직한 실시예에 있어서는, 데이터 값들의 세트가 갱신되었는지 아닌지 여부를 추적하기 위해서 사용되고 있는 어떤 추적 방식(예를 들면, 더티 비트)을 갱신하지 않도록 실행하고 있는 어떤 조건부 태스크가 구성되는 것이 바람직하다. 이것은 그 후에 데이터 값들의 세트가 갱신되었는지 아닌지 여부에 의존하는 조건부 태스크를 조건부 태스크가 트리거하는 것을 방지할 것이다.
예를 들면, 조건부 태스크가 관련되어 있는 에어리어에 대한 비조건부 태스크로부터의 어떤 출력 값들이 동일한지 아닌지 여부를 고려하고, 예를 들면 단지 그 후에 모든 출력 값들이 같지 않으면(혹은 반대) 조건부 태스크를 트리거하는 것도 가능할 것이다. 이것은, 예를 들면, 조건부 태스크가 렌더 출력에 대해서 실행되는 또 다른 태스크에 의해 발생된 출력 값들의 세트를 평균화하거나 그렇지 않으면 필터링하도록 작동하는 태스크인 경우에 유용할 수 있다.
조건부 태스크에 대한 다른 조건들도 원한다면 대신 사용될 수 있다. 예를 들면, 조건들은 문제의 조건부 태스크 이외의 태스크들에 대해서 처리되는 특정한 지오메트리(예를 들면, 프리미티브들)와 관련될 수 있고, 조건부 태스크는 그 후에 특정한, 예를 들면 프리미티브 조건이 충족되면 트리거된다. 모든 선택된 조건들이 충족되면 조건부 태스크가 단지 실행하도록, 조건부 태스크를 몇 가지의 조건들과 관련짓는 것도 가능할 것이다.
특히 바람직한 실시예에 있어서는, 본 발명의 동작은 조건부 태스크가 관련되어 있는 렌더링 출력의 결과를 외부 메모리(예를 들면, 프레임 버퍼)에 라이트 백(write back)할지 여부를 판정하는 방식과도 결합된다. 특히, 바람직한 실시예에 있어서는, 렌더 출력을 발생할 때 실행되어야 하는 조건부 태스크가 실제로 실행되지 않으면, 그 후에는 조건부 태스크가 관련되어 있는 발생되고 있는 렌더링 출력에 대한 외부 메모리에의 라이트 백 메카니즘은 수행되지 않는(비활성화되는) 것이 바람직하다. 이것을 그 후에 예를 들면, 바람직하게는 타일 기반 그래픽 처리 시스템에서 사용함으로써, (예를 들면, 이미 출력이 발생되었던 이전 타일에 대하여 증분 렌더링이 행해지고 있는 증분 렌더링의 경우에 일어날 수도 있는) 실제로 발생되고 있는 타일 데이터에 사실상 어떤 갱신도 없는 경우에 외부 메모리에 타일들을 라이트 백하는 것을 방지할 수 있다. 이 경우에, 증분 렌더링이 현존하는 타일 데이터를 변경하지 않으면, 출원인은 외부 메모리에 "신규" 변경되지 않은 타일을 라이트 백할 필요가 없다고 인식했다.
이 방식은 다시 바람직하게는 컬러 또는 심도 버퍼와 같은, 출력 데이터 어레이를, 발생되고 있는 렌더링 출력이 갱신했는지 여부를 추적하고, 그것이 갱신되었으면 단지 외부 메모리에의 출력 데이터 어레이의 라이트 백을 트리거한다.
다시, 바람직한 실시예에 있어서는, 그 점과 관련하여 처리되고 있는 어떤 조건부 태스크는, 데이터 어레이, 예를 들면 컬러 및/또는 심도 버퍼, 갱신 추적 메카니즘을 갱신하지 않도록(예를 들면, 바람직하게는, 컬러 및 타일 버퍼 "더티 비트"를 갱신하지 않도록) 구성될 수 있고, 바람직하게는 구성됨으로써, 어떤 조건부 태스크들도 그들 스스로 외부 메모리에의 데이터의 라이트 백을 트리거하지 않을 것이다.
이들 방식에 있어서는(그렇지 않으면), 조건부 태스크가 특정한 갱신 추적 메카니즘(예를 들면, 더티 비트)을 갱신할지 아닌지 여부는, 예를 들면, 그래픽 처리 파이프라인용 드라이버에 의해, 바람직하게는 선택적으로 (바람직하게는 태스크 단위로) 인에이블 또는 디스에이블될 수 있다.
그에 대응하여, 바람직한 실시예에 있어서는, 갱신된 데이터 값들이 발생되어 저장되는 경우에만 렌더링 출력이 외부 메모리(예를 들면, 프레임 버퍼)에 라이트 백될 것인지 여부는, (예를 들면, 데이터 어레이가 항상 외부 메모리에 라이트 백되도록, 또는 데이터 어레이가 갱신되었다고 판정되면 단지 외부 메모리에 라이트 백되도록) 바람직하게는 선택적으로 인에이블 또는 디스에이블될 수 있다.
그래픽 처리 파이프라인은, 조건부 태스크와 관련된 조건이 충족되었는지 여부를 판정할 수 있고, 그 후에 어떤 원하는 적절한 방식으로 태스크와 관련된 조건이 충족되었을 때 태스크에 대한 처리를 트리거할 수 있다. 이것은 예를 들면, 조건이 충족되면 수행되어야 하는 처리와 태스크와 관련되어 있는 조건의 성질에 의존할 수 있고 바람직하게는 의존한다. 이와 같이, 예를 들면, 바람직한 실시예에 있어서는, 상이한 조건들이 그래픽 처리 파이프라인에 있어서 상이한 트리거 포인트들을 가질 수 있다.
태스크와 관련된 조건이 조건부 태스크가 항상 실행되거나, 결코 실행되지 않도록 하는 경우에, 그래픽 처리 파이프라인은 그 조건을 보고 태스크를 실행할 것인지 아닌지 여부를 간단히 판정할 수 있다. 다른 조건들에 대해서는, 예를 들면, 고려되고 있는 그래픽 처리 출력의 에어리어에 대한 (예를 들면) 그래픽 처리 출력의 속성 또는 속성들이 고려되어야 하는 경우에, 그래픽 처리 파이프라인은 바람직하게는 각각의 조건과 관련된 속성 또는 속성들을 모니터하도록 작동하고, 그 후에 조건이 충족되었다고 판정된 경우에 조건부 태스크에 대한 처리를 트리거한다.
문제의 렌더 출력을 발생할 때 실행되어야 하는 비조건부 태스크에 대하여 처리되어야 하는 어떤 지오메트리가 조건부 태스크와 관련된 조건이 관련되어 있는 렌더 출력의 에어리어 내부에 적어도 부분적으로 존재하는지(교차하는지) 여부가 조건부 태스크와 관련된 조건인 경우에, 바람직한 실시예에 있어서는, (예를 들면, 처리되고 있는(예를 들면, 바람직하게는, 타일 기반 그래픽 처리 파이프라인의 경우에, 현재의 타일에 대한 타일 리스트)) 문제의 렌더링 출력의 에어리어에 대한 프리미티브 리스트(즉, 처리될 프리미티브들의 리스트)가 비조건부 태스크에 대한 어떤 지오메트리를 포함하는지(즉, 문제의 렌더 출력에 대한 어떤 "실제" 지오메트리를 포함하는지) 판정함으로써 조건이 충족되는지를 그래픽 처리 파이프라인이 판정한다. 프리미티브(예를 들면, 타일) 리스트가 비조건부 태스크에 대한 어떤 지오메트리를 포함하면, 조건부 태스크가 실행될 수 있다(하지만, 그렇지 않으면, 실행되지 않을 수 있다).
이와 같이, 하나의 바람직한 실시예에 있어서는, 그래픽 처리 파이프라인은 (예를 들면, 타일에 대한) 프리미티브 리스트가 판독될 때까지 기다림으로써 조건부 태스크가 충족되었는지 여부를 판정하고, 프리미티브 리스트가 판독된 경우에 그것이 조건부 태스크와 관련되어 있지 않은 어떤 지오메트리를 포함하면, 조건부 태스크가 실행된다.
적어도 한 개의 프래그먼트가 그래픽 처리 파이프라인의 래스터화기에 의해 발행되고 (바람직하게는 각각의) 얼리 컬링 테스트를 통과하는지 여부를, 조건부 태스크와 관련된 조건이 포함하는 경우, 그 후에 바람직한 실시예에 있어서는, 그래픽 처리 파이프라인은 얼리 컬링 테스트를 종료하는 (예를 들면, 그래픽 처리 파이프라인의 렌더링(쉐이딩) 스테이지에 도달하는) 프래그먼트들을 모니터하고, 비조건부 태스크와 관련되어 있는 지오메트리와 관련이 있는 프래그먼트가, 조건부 태스크에 대한 조건이 관련되어 있는 (모든) 에어리어에 대한 얼리 컬링 테스트를 통과하면, 그 후에 태스크에 대한 조건이 충족되는 것으로 판정되고, 조건부 태스크에 대한 처리가 실행된다.
조건부 태스크에 대한 조건은, 문제의 렌더 출력에 대하여 처리되어야 하는 다른 지오메트리(및 태스크들)로부터의 출력이 발생되었는지 아닌지(예를 들면, 컬러 및/또는 심도 버퍼 또는 버퍼들이 갱신되었는지) 여부와 관련이 있고, 그 후에 다시 그래픽 처리 파이프라인은 바람직하게는 (예를 들면, 타일 버퍼들이 갱신되었는지 여부를 추적하기 위한 더티 비트 방식을 이용해서) 출력 데이터가 발생되고 있는지 여부를 추적하고, 일단 출력이 발생되었다(예를 들면, 컬러 또는 심도 버퍼가 갱신되었다)고 판정되면, 그 후에 조건부 태스크에 대한 처리가 트리거된다.
조건부 태스크에 대한 조건이 충족되지 않았으면, 그 후에 조건부 태스크에 대한 처리가 (적어도 완전히) 실행되지 않아야 하고, 바람직하게는 실행되지 않는다. 이 경우에, 그래픽 처리 파이프라인은, 예를 들면, 조건부 태스크에 대한 조건이 충족되지 않았다고 최종적으로 판정하기 전에 문제의 렌더 출력에 대한(혹은 렌더 출력의 특정 영역, 예를 들면 타일에 대한) 다른 모든 태스크들이 완료될 때까지 기다릴 수 있고, 혹은 예를 들면, 프리미티브 리스트 모두가 판독되었을 경우에, 예를 들면 태스크에 대한 조건이 충족되지 않았다고 이전 스테이지에서 판정될 수 있다. 바람직한 실시예에 있어서의 방식은, 조건부 태스크가 그것의 조건이 충족될 때 트리거되도록 하지만, 조건이 충족되지 않았다는 어떤 "긍정적인(positive)" 판정도 없다(오히려 그래픽 처리 파이프라인은 단지 조건이 충족되었는지를 모니터하여 판정하도록 작동한다).
조건부 태스크에 대한 조건이 충족되었다고 판정된 경우, 조건부 태스크에 대한 처리가 태스크와 관련된 렌더 출력의 영역에 대해서 실행되어야 하고, 바람직하게는 실행된다. 이 처리는 어떤 적절한 원하는 방식으로, 예를 들면, 바람직하게는 조건부 태스크가 수행하는 처리 및 태스크와 관련된 조건의 성질에 의존해서 수행 및 이행될 수 있다.
이것은 다른 예를 들면 비조건부 태스크들에 대한 지오메트리 전 혹은 후에 조건부 태스크에 대한 처리가 실행되어야 하는지 여부에 의존할 수도 있고, 바람직하게는 의존한다.
태스크에 대한 조건이 충족되면 조건부 태스크에 대한 처리는, 조건부 태스크와 관련된 지오메트리"(예를 들면, 프래그먼트들)가 마치 렌더 출력을 발생할 때 렌더링되어야 하는 "실제" 지오메트리인 것처럼, 처리되도록 해야 한다. (한편, 조건부 태스크에 대한 조건이 충족되지 않으면, 조건부 태스크의 처리가 트리거되지 않고, 그 경우에, 그래픽 처리 파이프라인 및 렌더러는, 마치 조건부 태스크와 관련되어 있는 "지오메트리"(예를 들면, 프래그먼트들)가 존재하지 않는 것처럼 그것의 렌더 출력을 발생하도록 작동하는 것이 바람직하다.)
비조건부 태스크와 관련된 다른 지오메트리 전에 조건부 태스크가 처리되어야 하는 경우에, 그 후에 바람직하게는 그 동작은, 조건부 태스크의 처리의 결과를 필요로 하는 그래픽 처리 파이프라인에 의해 처리되어야 하는 (예를 들면, 비조건부 태스크와 관련된) 어떤 다른 지오메트리가 조건부 태스크의 처리의 결과를 필요로 하는 스테이지에 도달하기 전에 그것의 처리가 완료되도록 그래픽 처리 파이프라인에 의해 조건 태스크가 처리되도록 한다. 가장 바람직하게는, 조건부 태스크의 트리거 및 처리는, 조건부 태스크의 처리의 결과를 필요로 하는 그래픽 처리 파이프라인에 의해 처리되어야 하는 어떤 다른 지오메트리(예를 들면, 비조건부 태스크들과 관련된 예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)가 조건부 태스크의 처리의 결과를 필요로 하는 스테이지에 도달하기 전에 그것의 처리가 완료되도록 그래픽 처리 파이프라인에 삽입되어 처리되는 조건부 태스크에 대한 "지오메트리"(예를 들면, 바람직하게는 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)를 야기한다.
이것은 예를 들면, 조건부 태스크가 이전에 발생된 데이터를, 예를 들면, 증분 렌더링 동작시에, 다음 처리를 위한 그래픽 처리 파이프라인으로 로드하도록 작동될 수 있는 경우일 것이다.
이것을 달성하기 위해서, 예를 들면, 태스크와 관련된 조건이, 렌더 출력에 대해서 실행될 다른 (비조건부) 태스크들과 관련된 어떤 지오메트리가 렌더 출력의 특정 에어리어 내부에 있는지 여부인 경우에, 예를 들면, 프리미티브 리스트가 판독되고 어떤 지오메트리를 포함하는지를 판정함으로써 태스크가 트리거될 수 있고, 조건부 태스크에 대한 "지오메트리"(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)는 그 후에 처리를 위한 그래픽 처리 파이프라인에 즉시 발행된다(바람직한 실시예에 있어서는 그것은 이미 행해진 것이다).
이들 방식에 있어서는, 조건부 태스크와 관련된 조건은, 조건부 태스크에 대한 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)보다 나중에 실제로 처리되는(렌더링되는) 다른 태스크들에 대한 지오메트리에 의해 효율적으로 트리거되고 있다. 즉, 조건부 태스크는 조건부 태스크를 트리거하는 지오메트리의 처리에 앞서 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)의 처리를 트리거하도록 효율적으로 작동될 수 있다. 이와 같이, 바람직한 실시에에 있어서는, 조건부 태스크와 관련된 조건 또는 상기 조건은, (조건부 태스크가 트리거되면) (조건부 태스크에 대한 지오메트리(예를 들면, 그래그먼트들 및/또는 프리미티브 또는 프리미티브들) 전에 처리되어야 할(처리될) 지오메트리(프리미티브들)의 처리 결과에 의존하는 것보다) 조건부 태스크와 관련된 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들) 후에 처리되어야 할(처리될) 지오메트리(예를 들면, 프리미티브들) 처리 결과에 의존한다. 마찬가지로, 바람직한 실시예에 있어서는, 조건부 태스크 또는 상기 조건부 태스크는, 조건부 태스크를 트리거한 태스크에 대한 지오메트리(예를 들면, 바람직하게는 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)의 (추가) 처리에 앞서 (태스크의 조건이 충족되면) 조건부 태스크에 대한 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)의 처리를 트리거하도록 작동될 수 있다.
발생되고 있는 렌더 출력에 대한 다른 (예를 들면, 비조건부 태스크들에 관한) 지오메트리의 처리 후에 행해질 조건부 태스크의 경우에, 다시 조건부 태스크에 대한 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)는 렌더 출력에 대하여 처리되고 있는 다른 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)와의 적절한 타이밍 관계로 파이프라인에 발행되어야 한다. 예를 들면, 이 경우에, 조건부 태스크와 관련된 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)는, 처리될 다른 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)가 처리하기 위한 그래픽 처리 파이프라인에 발행된 후에 즉시 발행될 수 있고, 바람직한 실시예에 있어서는 발행된다.
물론 다른 방식도 가능할 것이다.
조건부 태스크에 대한 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)는 어떤 원하는 적절한 방식으로 처리하기 위한 그래픽 처리 파이프라인에 발행될 수 있다. 그것은 예를 들면, 바람직하게는 문제의 그래픽 처리 파이프라인에 대한 통상적인 방식으로 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)를 상기 파이프라인에 투입함으로써, 처리될 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)에 대한 통상적인 방식으로 그래픽 처리 파이프라인에 발생되는 것이 바람직하다.
이 경우에, 조건부 태스크에 대한 모든 프래그먼트들은, 즉시 그래픽 처리 파이프라인에 발행될 수 있거나, 혹은 예를 들면, 그들은 조건부 태스크에 대한 프래그먼트가 (예를 들면, 현재 처리되고 있는) 문제의 렌더 출력에서의 위치에 대해서 이미 발행되었는지 여부에 의존해서, 한 번에 하나(혹은 단지 몇 개만) 발행될 수 있다. 후자의 방식은 예를 들면, 조건부 태스크가 그 위치에 대해서 발행되었는지 아닌지 여부를, (예를 들면, 각 예를 들어 프래그먼트 위치에 대한 비트 벡터 또는 맵을 이용해서) 처리되고 있는 렌더 출력(예를 들면, 타일)에서의 각 프래그먼트 위치에 대해서 추적함으로써 용이해 질 수 있다.
또한, 그래픽 처리 파이프라인에 조건부 태스크에 대한 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)를 발행하는 것이 가능할 것이고, 그 지오메트리는 태스크와 관련된 조건이 충족되었는지 아닌지 여부에 관계없이 그래픽 처리 파이프라인에 의해 부분적으로 처리된다(그렇지만 조건부 태스크와 관련된 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)의 완전한 처리는 단지 태스크에 대한 조건이 충족되었다고 판정되면 수행된다). 이것은 예를 들면, 태스크와 관련된 조건이 단지 그래픽 처리 파이프라인에 있어서 나중 스테이지에서 충족된다고 판정될 수 있는 경우, 예를 들면, 비조건부 태스크에 관한 지오메트리와 관련된 프래그먼트가 얼리 컬링 테스트를 통과하는 경우에 적절할 수도 있지만, (태스크의 조건이 충족되면) 조건부 태스크와 관련된 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)는 그 다른 지오메트리 전에 처리될 필요가 있다.
이와 같이, 바람직한 실시예에 있어서는, 조건부 태스크와 관련된 지오메트리(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)는 태스크에 대한 조건이 충족되었는지 여부를 판정하기 전에 처리될 수 있고, 부분적으로는 처리되지만, 조건부 태스크와 관련된 지오메트리에 대한 나머지 처리는 단지 태스크에 대한 조건이 충족되었다고 판정될 때 수행된다(이와 같이, 조건부 태스크와 관련된 지오메트리의 완전한 처리는 단지 태스크와 관련된 조건이 충족된 것으로 판정되면 수행된다).
이와 같이, 바람직한 실시예에 있어서는, 조건부 태스크에 대한 프리미티브 또는 프리미티브들은 프래그먼트들에 래스터화되지만, 그 후에 태스크와 관련된 조건이 충족된 것으로 판정되면 이들 프래그먼트들은 단지 그래픽 처리 파이프라인의 나머지(예를 들면, 바람직하게는 그래픽 처리 파이프라인의 렌더링(쉐이딩) 스테이지)에 발행된다. 이것은 예를 들면, 또 다른 태스크와 관련된 어떤 프래그먼트들이 그래픽 처리 파이프라인의 (모든) 얼리 컬링 테스트를 통과하는지 여부가 태스크와 관련된 조건인 경우에 특히 유용할 수 있다.
이들 방식의 특히 바람직한 실시예에 있어서는, 태스크에 대한 조건이 충족되었는지 아닌지 여부를 판정하기 전에 발행되는 프래그먼트들은, 태스크와 관련된 조건이 충족되었다고 판정될 때까지 그래픽 처리 파이프라인과 관련된 큐(queue) 내에 보유된다. 이들 프래그먼트들은 그 후에 태스크에 대한 조건이 충족되었다고 판정될 때(바람직하게는 판정되자마자) 큐로부터 그래픽 처리 파이프라인에 발행될 수 있다. 이 경우에, 조건부 태스크에 대한 프래그먼트들은 예를 들면, "조건부"라고 보통 표시되는 것처럼 표시될 수 있고, 바람직하게는 표시됨으로써, 그들이 큐에서 식별될 수 있다. 예를 들면, 그러한 각 프래그먼트는 "조건부"라는 것을 나타내는 프래그(flag) 또는 다른 마커(marker)와 관련될 수 있다.
이 방식에 있어서는, 예를 들면, 주어진 타일에 대한 조건부 프래그먼트들은, 조건이 충족되었다고 판정될 때 큐로부터 방출될 것이지만, 발생되고 있는 렌더 출력에 대해서 상기 조건이 충족되면, 그 후에 조건부 태스크와 관련된 조건부 프래그먼트들은 바람직하게는 (예를 들면, 무효라고 표시된) 큐로부터 제거된다. 바람직한 실시예에 있어서는, 발생되고 있는 렌더 출력에 대해서 상기 조건이 충족되지 않으면, 그 후에 조건부 태스크와 관련된 조건부 프래그먼트들은 바람직하게는 동시에(한꺼번에) 큐로부터 제거된다
이들 방식은 어떤 원하는 적절한 방식으로 구현될 수 있다.
특히 바람직한 실시예에 있어서는, (바람직하게는 양쪽 조건부 태스크 및 비조건부 태스크에 대한) 프래그먼트들의 처리는 본 출원인의 이전 UK Patent Application GB-A-2511177에 기재된 메카니즘을 이용해서 제어된다.
이와 같이, 바람직한 실시예에 있어서는, 태스크에 대한 프래그먼트가 (상기) 얼리 심도(및/또는 다른 컬링) 테스트를 통과하고 처리하기 위한 파이프라인을 통해서 앞으로 전송될 때, 얼리, 예를 들면 심도 테스트를 통과한 프래그먼트와 관련된 정보(바람직하게는 위치 정보)는 그래픽 처리 파이프라인의 적어도 하나, 바람직하게는 나중 스테이지에 브로드캐스드(broadcast)되고, 얼리, 예를 들면 심도 테스트를 통과한 프래그먼트와 관련된 브로드캐스트 정보는, 브로드캐스트 정보를 수신한 스테이지에 현재 있는 어떤 프래그먼트들이 얼리, 예를 들면, 심도 테스트를 통과한 프래그먼트에 의해 초과 인출될 것인지를 판정하기 위해서 사용되고, 그러한 어떤 프래그먼트들이 존재하면, 이들 초과 인출된 프래그먼트들의 향후의 처리가 (바람직하게는 선택적으로) 정지된다.
본 발명의 방식에 있어서의 조건부 태스크들은 어떤 적절한 원하는 그래픽 처리 동작 및 발생되어야 할 렌더링 출력에 대해서 사용될 수 있다.
그렇지만, 상기로부터 알 수 있는 것처럼, 본 발명의 방식에 있어서의 조건부 태스크들의 특정 어플리케이션은 증분 렌더링을 수행할 때 사용하기 위한 것으로 예상된다. 이 경우, 증분 렌더링이 수행될 때(예를 들면, 그래픽 처리 파이프라인용 드라이버는, 증분 렌더링 동작이 수행되는 것으로 인식한다), 그 후에 바람직하게는 조건이 서로 다른 2개의 조건부 태스크는 그래픽 처리 파이프라인에 발행되고, 하나의 조건부 태스크는 점차적으로 렌더링되고 있는 프레임에 대한 이전에 발생된 심도 값들을 로드하도록 작동될 수 있고, 또 하나의 조건부 태스크는 점차적으로 렌더링되고 있는 프레임에 대한 이전에 발생된 컬러 값들을 로드하도록 작동될 수 있다. 이 경우, 이들 조건부 태스크들의 각각은, 렌더링 출력에 대한 "실제" 지오메트리가 (즉, 실제의 증분 렌더링 동작을 수행하는 것인 지오메트리가 처리되기 전에) 조건부 태스크의 결과를 필요로 하기 전에 조건부 태스크에 대한 "지오메트리"(예를 들면, 프래그먼트들 및/또는 프리미티브 또는 프리미티브들)가 처리되도록 구성될 것이다.
이 경우, 바람직하게는 발생되고 있는 렌더 출력의 비조건부 태스크들에 대한 어떤 지오메트리(즉, 이전 프레임으 점차적으로 렌더링하기 위해 사용되고 있는 "어떤 실제" 지오메트리)가 조건부 태스크가 관련되어 있는 에어리어를 교차하는지 여부를 그것의 조건으로서 갖는 제1 조건부 태스크가 있을 것이고, 그것은 그 조건이 충족되면 심도 버퍼를 로드하도록 작동될 수 있다. 이것은 그 후에 예를 들면, 문제의 타일에 대하여, 처리될 실제의 증분 렌더링 지오메트리가 있으면, 점차적으로 렌더링되고 있는 프레임에 대한 심도 버퍼 값들이 단지 로드될 것이라는 효과를 가질 것이다.
제2 조건부 태스크는 바람직하게는 그 후에 증분 렌더링 동작에 대한 실제 지오메트리가 문제의 렌더 출력의 에어리어(예를 들면, 타일)를 교차하면 그것의 지오메트리가 단지 처리되는 같은 조건을 같지만, 그 실제 지오메트리의 어느 것인가가 얼리 컬링 테스트(바람직하게는 얼리 심도 테스트)를 통과하면 단지 트리거되는 추가 조건도 갖고, 바람직하게는 그것의 조건이 충족되면 점차적으로 렌더링되고 있는 프레임에 대한 컬러 값들을 로드하도록 작동될 수 있다. 이것은 그 후에 증분 렌더링 동작과 관련이 있는 지오메트리가 문제의 렌더 출력 에어리어(예를 들면, 타일)에 대해서 처리되기 시작할 때 점차적으로 렌더링되고 있는 프레임에 대한 컬러 값들이 단지 증분 렌더링 동작에 대한 그래픽 처리 파이프라인으로 로드되는 효과를 가질 것이다.
또한 실제 지오메트리가 어떤 실제의 출력 값들을 야기하면(예를 들면, 문제의 타일에 대한 타일 버퍼와 같은, 출력 데이터 어레이를 갱신하면) 조건부 태스크가 실행되는 조건과, 렌더링 출력에 대한 "실제" (비조건부) 지오메트리가 처리된 후에 실행되어야 할 조건부 태스크도 (혹은 대신) 포함할 것이다. 이것은 예를 들면, 발생된 렌더 출력에 대해서 다운샘플링, 필터링, 또는 다른 처리와 같은, 후처리 동작을 수행하는 데에 사용될 수 있다. 그것은 예를 들면, 특정 프레임 포맷에 대하여 멀티샘플링된 렌더링을 수행하여, 렌더링된 타일(타일 쉐이더)에 대하여 쉐이더(쉐이딩 프로그램)를 작동시키는 데에 사용될 수 있다.
또한, 렌더 출력을 발생시키기 위한 조건부 태스크들만 사용하는 것이 가능할 것이다. 이것은 예를 들면, 캡션을 지닌 비디오를 표시하는 등, "간단한" 구성만이 필요한 경우에 적합할 수 있다. 예를 들면, 한 개 이상의 조건부 태스크들은 처리될 적절한 데이터 값들에 로드되도록 사용될 수 있고, 그 후에 후처리 조건부 태스크가 예들 들면, 원하는 방식으로 로드된 데이터를 혼합하기 위해서 사용될 수 있다.
이 경우에, 데이터를 판독하는 태스크들에 대한 조건은 예를 들면, 태스크들이 발생되고 있는 렌더 출력의 어떤 특성에든 관계없이 "항상" 실행되도록, 즉 실행될 것으로 설정될 수 있다. 이것은 그 후에 예를 들면, (간단한 구성의 경우에 유용할 수 있는) 전체 프레임과 같은, 예를 들면 직사각형의 관심 영역을 로드하는 데에 사용될 수 있다.
일단 모든 조건부 및 어떤 비조건부 태스크들이 완료되었으면, 결과의 렌더 출력(예를 들면, 표시용 프레임)이 원한다면, 예를 들면, 표시용 디스플레이에 제공될 수 있거나 그렇지 않으면 처리될 수 있는 메인 메모리에 있어서, 예를 들면, 프레임 버퍼에 기록될 수 있다.
바람직한 실시예에 있어서는, 조건부 태스크는 또한 그것의 처리가 예를 들면, "가위 상자(scissor box)"의 형태로 수행되는, 조건부 태스크와 관련된 에어리어를 가질 수 있다.
타일 기반 그래픽 처리 시스템에 있어서, 특히 바람직한 실시예에 있어서는, 조건부 태스크와 관련되어 있는 어떤 지오메트리(예를 들면, 프리미티브 또는 프리미티브들)도 타일링(tiling) 처리되지 않는다(오히려, 상기 설명한 것처럼, 타일이 트리거될 조건부 태스크에 필요한 조건을 충족하면, 그 지오메트리는 바람직하게는 타일에 대하여 자동으로 발행될 것이다). 이와 같이, 바람직하게는, (즉, 비조건부 태스크들과 관련되어 있는) 렌더 출력에 대한 "참된(true)" 지오메트리만 "타일링된다(tiled)"(타일 리스트로 소팅된다(sorted)).
타일 기반 그래픽 처리 시스템의 경우와 같이, 정해진 렌더 출력이 전체 렌더 출력의 복수의 서브 에어리어 또는 영역으로서 처리되는 경우, 본 발명의 방식에 있어서의 동작은 전체 렌더 출력을 발생할 때 처리되는 각 서브 에어리어(예를 들면, 타일)에 대해서 반복되어야 하고, 바람직하게는 반복된다. 이와 같이, 이 경우에는, 예를 들면, 렌더 출력을 발생시키기 위한 조건부 태스크 세트가 있을 것이고, 그 태스크는 그 후에 발생되고 있는 렌더 출력이 처리 목적을 위해서 분할된 각 서브 에어리어(예를 들면, 타일)에 대해서 각각 처리될 것이다(즉, 조건이 충족되면 실행된 그것의 처리 및 테스트된 그것의 조건을 갖는다).
본 발명은 어떤 원하는 적절한 그래픽 처리 시스템 및 파이프라인에서 구현될 수 있다. 바람직한 실시예에 있어서는, 그래픽 처리 파이프라인은 타일 기반 그래픽 처리 파이프라인이다.
상기는 본 발명의 방식에 있어서의 동작에 포함되는 그래픽 처리 파이프라인의 요소들을 설명한다. 본 기술분야의 당업자가 알 수 있는 것처럼, 그래픽 처리 파이프라인은 그렇지 않으면 그래픽 처리 파이프라인이 통상적으로 포함하는 다른 처리 스테이지들 중의 어느 하나 또는 한 개 이상, 바람직하게는 모두를 포함할 수 있고, 바람직하게는 포함한다. 이와 같이, 예를 들면, 그래픽 처리 파이프라인은 바람직하게는 처리될 그래픽 프래그먼트들을 발생시키기 위해서 그래픽 프리미티브들을 래스터화하도록 작동되는 래스터화기와, 렌더링된 프래그먼트 데이터를 발생시키기 위해서 래스터화기에 의해 발생된 프래그먼트들을 처리하도록 작동되는 렌더러를 적어도 포함한다. 바람직한 실시예에 있어서는, 렌더러는 프로그래머블 프래그먼트 쉐이더의 형태이거나 포함한다.
그래픽 처리 파이프라인은 바람직하게는 또한 버텍스 쉐이딩 스테이지; 프리미티브 어셈블리 스테이지; 타일러(tiler)(타일링 스테이지); 프리미티브 셋업 스테이지; 타일 샘플 값을 저장하기 위한 타일 버퍼 또는 버퍼들(여기서 파이프라인은 타일 기반이다) 및/또는 외부 (메인) 메모리에(예를 들면, 프레임 버퍼에) 데이터를 (예를 들면, 타일 버퍼에(예를 들면, 일단 타일 버퍼 내의 데이터가 완전하면)) 기록하도록 작동하는 라이트 아웃(write out) 유닛 중의 한 개 이상, 바람직하게는 모두를 포함한다.
그래픽 처리 파이프라인은 또한 심도(또는 심도 및 스텐실) 테스터 또는 테스터들, 블렌더(blender) 등과 같이 그래픽 처리 파이프라인이 포함할 수도 있는 어떤 다른 적절한 원하는 처리 스테이지들을 포함할 수도 있다.
바람직한 실시예에 있어서는, 그래픽 처리 파이프라인은 여기에 기술된 데이터를 저장하고, 및/또는 여기에 기술된 프로세스들을 수행하기 위한 소프트웨어를 저장하는 한 개 이상의 메모리들 및/또는 메모리 디바이스들을 구비하고 및/또는 이들과 통신한다. 그래픽 처리 파이프라인은 또한 호스트 마이크로프로세서와 통신할 수도 있고, 및/또는 그래픽 처리 파이프라인의 출력에 근거해서 화상들을 표시하기 위한 디스플레이와 통신할 수도 있다.
특히 바람직한 실시예에 있어서는, 본 발명의 다양한 기능들은, 예를 들면 디스플레이 디바이스용 프레임 버퍼에 기록되는 렌더링된 프래그먼트 데이터를 발생하여 출력하는 단 한 개의 그래픽 처리 플랫폼(platform)에 대해서 수행된다.
본 발명은 적절하게 구성된 마이크로 프로세서 기반 시스템과 같은, 어떤 적절한 시스템에서 구현될 수 있다. 몇몇 실시예에 있어서는, 본 발명은 컴퓨터 및/또는 마이크로 프로세서 기반 시스템에서 구현된다.
본 발명의 다양한 기능들은 어떤 원하는 적절한 방식으로 수행될 수 있다. 예를 들면, 본 발명의 기능들은 원한다면 하드웨어 또는 소프트웨어로 구현될 수 있다. 이와 같이, 예를 들면, 본 발명의 다양한 기능 요소들 및 "수단"은, 원하는 방식으로 작동하도록 프로그램될 수 있는 프로그래머블 하드웨어 요소들(처리 회로) 및/또는 적합한 전용 하드웨어 요소들(처리 회로)과 같은, 다양한 기능 등을 수행하도록 작동될 수 있는, 적절한 프로세서 또는 프로세서들, 컨트롤러 또는 컨트롤러들, 기능 유닛들, 회로, 처리 로직, 마이크로프로세서 구성 등을 구비할 수도 있다.
또한 여기에서는 본 기술분야의 당업자가 알 수 있는 것처럼, 본 발명의 다양한 기능 등은 정해진 프로세서에 대하여 병렬로 복제될 수도 있고 및/또는 수행될 수도 있다는 점에 유념해야 한다. 마찬가지로, 다양한 처리 스테이지들은 원한다면 처리 회로 등을 공유할 수도 있다.
또한 기술된 본 발명의 실시예들 모두는 여기에 기술된 바람직한 선택적 특징들 중의 어느 하나 또는 그 이상 또는 모두를 적절히 포함할 수 있는 것을 본 기술분야의 당업자는 알 수 있을 것이다.
본 발명에 따른 방법들은 소프트웨어, 예를 들면 컴퓨터 프로그램을 이용해서 적어도 부분적으로 구현될 수도 있다. 이와 같이, 추가 실시예로부터 볼 때 본 발명은 데이터 처리 수단에 인스톨될 때 여기에 기술된 방법들을 수행하는 데에 특히 알맞은 컴퓨터 소프트웨어와, 프로그램 요소가 데이터 처리 수단에서 작동될 때 여기에 기술된 방법들을 수행하기 위한 컴퓨터 소프트웨어 코드부를 구비하는 컴퓨터 프로그램 요소와, 프로그램이 데이터 처리 시스템에서 작동될 때 여기에 기술된 방법 또는 방법들의 모든 스텝들을 수행하는 데에 알맞은 코드 수단을 구비하는 컴퓨터 프로그램을 제공한다는 것을 알 수 있을 것이다. 이 데이터 처리 시스템은 마이크로프로세서, 프로그래머블 FPGA(Field Programmable Gate Array) 등일 수도 있다.
본 발명은, 소프트웨어가 그래픽 프로세서, 렌더러 또는 데이터 처리 수단을 구비하는 다른 시스템을 작동시키기 위해 사용될 때 상기 데이터 처리 수단과 함께 상기 프로세서, 렌더러 또는 시스템이 본 발명의 방법들의 스텝들을 수행시키는 그러한 소프트웨어를 구비하는 컴퓨터 소프트웨어 캐리어에도 확장된다. 그러한 컴퓨터 소프트웨어 캐리어는 ROM 칩, CD ROM, RAM, 플래시 메모리, 또는 디스크와 같은 물리적 기억매체일 수 있고, 또는 와이어를 통한 전기 신호와 같은 신호, 위성과 같은 광학 신호 또는 무선 신호 또는 그 밖의 유사한 것일 수 있다.
본 발명의 방법들의 모든 스텝들은 컴퓨터 소프트웨어에 의해 수행될 필요가 없고, 따라서 더 넓은 실시예로부터 본 발명은 여기에 설명된 방법들의 스텝들 중의 적어도 하나를 수행하기 위한 컴퓨터 소프트웨어 캐리어에 인스톨된 컴퓨터 소프트웨어 및 그러한 소프트웨어를 제공한다는 것을 추가로 인식할 것이다.
본 발명은 따라서 컴퓨터 시스템과 사용하기 위한 컴퓨터 프로그램 제품으로서 적절히 구현될 수도 있다. 그러한 구현은 컴퓨터 판독가능한 매체, 예를 들면, 디스켓, CD ROM, ROM, RAM, 플래시 메모리, 또는 하드 디스크와 같은, 유형의 비일시 매체에 고정된 일련의 컴퓨터 판독가능한 명령들을 포함할 수도 있다. 그것은 또한 광학 또는 아날로그 통신선들을 포함하지만 그것에 한정되지 않는 유형의 모뎀을 이용해서, 혹은 마이크로웨이브, 적외선 또는 다른 전송 기술을 포함하지만 그것에 한정되지 않는 무선 기술을 무형으로 이용해서, 모뎀 또는 다른 인터페이스 디바이스를 통해서, 컴퓨터 시스템에 전송가능한 일련의 컴퓨터 판독가능한 명령들을 포함할 수 있다. 일련의 컴퓨터 판독가능한 명령들은 여기에 이전에 기술된 기능의 모두 또는 일부를 구현하다.
본 기술분야의 당업자는 그러한 컴퓨터 판독가능한 명령들이 많은 컴퓨터 아키텍처 또는 오퍼레이팅 시스템과 사용하기 위한 다수의 프로그래밍 언어로 기록될 수 있다는 것을 인식할 것이다. 또, 그러한 명령들은 반도체, 마그네틱, 또는 광을 포함하지만 그것에 한정되지 않는, 현재 또는 미래의, 어떤 메모리 기술이든 이용해서 저장될 수도 있고, 또는 광, 적외선, 또는 마이크로웨이브를 포함하지만 그것에 한정되지 않는, 현재 또는 미래의, 어떤 통신 기술이든 이용해서 전송될 수 있다. 그러한 컴퓨터 프로그램 제품은, 인쇄 또는 전자 문서를 수반한 이동 매체로서, 예를 들면, 시스템 ROM 또는 고정된 디스크에 컴퓨터 시스템이 프리 로드된, 예를 들면, 슈링크 랩 소프트웨어(shrink wrapped sofware)로서 분배될 수도 있고, 또는 네트워크, 예를 들면, 인터넷 또는 월드 와이드 웹을 통해서 서버 또는 전자 게시판으로부터 분배될 수도 있다고 생각된다.
이하, 본 발명의 다수의 바람직한 실시예는 한 예로서만 첨부도면을 참조하여 설명될 것이다.
도 1은 예시적인 컴퓨터 그래픽 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 그래픽 처리 파이프라인의 실시예를 개략적으로 나타낸 것이다.
도 3 및 4는 증분 렌더링 동작을 개략적으로 나타낸 것이다.
도 5 내지 7은 증분 렌더링이 본 발명의 실시예에서 수행될 때 그래픽 처리 시스템에 있어서의 호스트 프로세서에서의 드라이버의 동작을 나타낸다.
도 8 내지 10은 증분 렌더링이 본 발명의 실시예에서 수행되고 있을 때의 그래픽 처리 시스템의 그래픽 처리 파이프라인의 동작을 나타낸다.
도면에 있어서 같은 부에 대해서는 같은 참조번호가 적절히 사용된다.
이하, 본 발명의 다수의 바람직한 실시예에 대해서 설명한다.
도 1은 예시적인 컴퓨터 그래픽 처리 시스템을 나타낸다.
호스트 컴퓨터(1)상에서 실행하고 있는 게임과 같은 어플리케이션(2)은, 관련된 그래픽 처리 장치(그래픽 처리 파이프라인)(3)에 의해 수행되는 그래픽 처리 동작을 필요로 할 것이다. 이것을 행하기 위해서, 어플리케이션은 호스트 프로세서(1)상에서 작동하고 있는 그래픽 프로세스 파이프라인(3)용 드라이버(4)에 의해 해석되는 API(Application Programming Interface) 콜을 발생하여 그래픽 프로세서(3)가 어플리케이션(2)이 필요한 그래픽 출력을 발생하도록 태스크(tasks)를 실행시키기 위한 적절한 코멘드들을 발생할 것이다. 이것을 용이하게 하기 위해서, "코멘드들"의 세트는 (예를 들면, 표시될 프레임을 발생시키기 위해서) 그래픽 출력을 위한 호스트 시스템(1)상에서 작동하고 있는 어플리케이션(2)으로부터의 코멘드들에 응답하여 그래픽 프로세서(3)에 제공될 것이다.
본 실시예에 있어서는, (예를 들면, 표시를 위한 프레임들을 렌더링하기 위해서) 출력을 발생시키기 위한 그래픽 프로세서(3)에의 "코멘드들"은 렌더 출력을 발생시키기 위한 특정 태스크들을 실행하라고 그래픽 처리 파이프라인(3)에 지시하고, 그래픽 처리를 위한 호스트 시스템(1)상에서 작동하고 있는 어플리케이션(2)으로부터의 코멘드들에 응답하여 발생되는 드로 콜 디스크립터(draw call descriptor)의 형태로 그래픽 처리 파이프라인(3)에 제공된다. 실제로, 대응하는 드로 콜 디스크립터를 각각 갖는, 실행되는 복수의 드로 콜(태스크들)이 있을 수도 있다. 다른 방식도 물론 가능할 것이다.
도 2는 본 발명의 그래픽 처리 파이프라인(3)을 좀 더 상세히 나타낸 것이다.
도 2에 나타낸 그래픽 처리 파이프라인(3)은 타일 기반 렌더러(renderer)이므로, 본 기술에서 알려진 것처럼, 발생되는 출력 프레임과 같은, 렌더 출력 데이터 어레이의 타일들을 생성할 것이다.
(본 기술에서 알려진 것처럼, 타일 기반 렌더링에 있어서는, 즉각적인 모드 렌더링으로서 한 번에 효과적으로 처리되고 있는, 전체 렌더 출력, 예를 들면, 프레임보다는, 렌더 출력, 예를 들면 표시되어야 하는 프레임은, 통상적으로 "타일들(tiles)"이라고 칭하는, 복수의 작은 서브 영역으로 분할된다. 각 타일(서브 영역)이 별도로 (일반적으로는 차례로) 렌더링되고, 그 후에 렌더링된 타일들(서브 영역들)은 완전한 렌더 출력, 예를 들면 표시를 위한 프레임을 제공하도록 재결합된다. 그러한 방식에 있어서는, 렌더 출력은 일반적으로 (보통 예를 들면 정사각형 또는 직사각형인) 불규칙한 사이즈 및 모양의 서브 영역들(타일들)로 분할되지만, 이것은 필수적인 것은 아니다.)
렌더 출력 데이터 어레이는, 본 기술에서 알려진 것처럼, 일반적으로 스크린 또는 프린터와 같은, 디스플레이 디바이스에 표시하도록 의도된 출력 프레임일 수도 있지만, 예를 들면 나중에 ("텍스처에 대한 렌더(render to texture)" 출력이라고도 알려진) 렌더링 전달(rendering passes)용으로 의도된 중간 데이터 등도 구비할 수도 있다.
(본 기술에서 알려진 것처럼, 컴퓨터 그래픽 이미지가 표시될 때, 그것은 보통 맨 먼저 일련의 프리미티브들(primitives)(폴리곤들)로서 정의되고, 그리고나서 그 프리미티브들은 차례로 그래픽 렌더링을 위한 그래픽 프래그먼트들로 분할(래스터화)된다. 보통의 그래픽 렌더링 동작 중에는, 렌더러는 프래그먼트들(fragments)이 정확하게 표시될 수 있도록 (예를 들면) 컬러(레드, 그린, 및 블록, RGB) 및 각 프래그먼트와 관련된 투명(알파) 데이터를 변경할 것이다. 일단 프래그먼트들이 완전히 렌더러를 교차했다면, 그 후에 그들의 관련된 데이터 값들은, 예를 들면 표시하기 위한, 출력을 위해서 준비된, 메모리 내에 저장된다.)
도 2는 본 실시예의 동작과 관련되어 있는 그래픽 처리 파이프라인(3)의 파이프라인 스테이지들과 메인 요소들을 나타낸다. 본 기술에 속하는 당업자가 알 수 있는 것처럼, 도 2에 도시하지 않는 그래픽 처리 파이프라인의 다른 요소들이 있을 수도 있다. 또한 도 2는 단지 개략적인 것이며, 예를 들면, 실제로는 도시한 기능 유닛들 및 파이프라인 스테이지들은, 비록 도 2에서는 별개의 스테이지로서 개략적으로 도시되어 있지만, 중요한 하드웨어 회로들을 공유할 수도 있는 점에 유념해야 한다. 또한, 도 2에 도시한 바와 같이 그래픽 처리 파이프라인의 스테이지들, 요소들 및 유닛들 등의 각각은 원하는 대로 구현될 수도 있으므로, 필요한 동작 및 기능들을 수행하기 위한, 예를 들면, 적절한 회로 및/또는 처리 로직 등을 구비할 것이라는 것을 인식할 것이다.
도 2는 래스터화 처리에 입력하기 위한 그래픽 프리미티브들(폴리곤들)이 발생된 후의 파이프라인 스테이지들을 개략적으로 나타낸 것이다. 이와 같이, 이점에 있어서는, 그래픽 데이터(버텍스(vextex) 데이터)가 변형 및 라이팅(lighting) 동작(미도시)을 수행했고, 프리미티브 셋업 스테이지(primitive set-up stage)(미도시)는 그래픽 처리 파이프라인(3)에 제공된 코멘드들과 버텍스 데이터에 응답해서 렌더링되는 프리미티브들을 셋업했다.
도 2에 도시한 바와 같이, 그래픽 처리 파이프라인(3)의 프래그먼트 처리 파이프라인의 이 부분은 프리미티브 리스트 리더(20), 래스터화 스테이지(21), 얼리 프래그먼트(early fragment) ZS(심도(depth) 및 스텐실(stencil)) 테스트 스테이지(22), 프래그먼트 큐(fragment queue)(23), 프래그먼트 쉐이딩(shading) 스테이지(24)의 형태의 렌더링 스테이지, 레이트(late) ZS(심도 및 스텐실) 테스트 스테이지(25), 블렌딩(blending) 스테이지(26) 및 한 세트의 타일 버터(27)를 포함하는, 다수의 처리 스테이지들을 포함한다.
프리미티브 리스트 리더(reader)(20)는 문제의 타일에 대해서 처리되고, 그 후에 이들 프리미티브들을 래스터화기(rasteriser)(21)에 제공하는 프리미티브들의 리스트로부터 프리미티브들을 판독하도록 동작한다. (타일 기반 그래픽 처리 시스템에 있어서는, 주어진 렌더 출력에 대해서 처리되는 프리미티브들은 처리되어야 하는 렌더 출력의 각 타일에 대한 각각의 프리미티브 리스트에 맨 먼저 저장되고, 그러한 각 프리미티브 리스트는 문제의 타일에 대해서 처리될 필요가 있는 렌더 출력에 대한 이들 프리미티브들을 작성한다. 그 후에 프리미티브 리스트 리더는, 각 타일이 처리되지 않음에 따라, 각각의 타일 리스트로부터 프리미티브들을 판독한다.)
래스터화 스테이지(21)는 본 기술분야에서 알려진 것처럼, 렌더 출력(예를 들면, 표시되는 화상)을 구성하는 프리미티브들을, 처리하기 위한 개개의 그래픽 프래그먼트로 래스터화하도록 동작한다. 이것을 행하기 위해서, 래스터화기(21)는 렌더링하기 위한 그래픽 프리미티브들을 프리미티브 리스트 리더(20)로부터 수신하고, 프리미티브들을 샘플링 포인트들에 래스터화하고, 프리미티브들을 렌더링하기 위한 (적절한 샘플링 위치를 나타내는) 적절한 위치를 갖는 그래픽 프래그먼트들을 발생한다. (이와 같이, "프래그먼트들"은 렌더링 처리(렌더링 파이프라인)를 통과하는 그래픽 엔티티들(entities)이다.) 발생되어 처리되는 각 프래그먼트는 예를 들면 그래픽 처리 시스템이 어떻게 구성되는지에 의존해서, 한 세트의 복수의 샘플링 포인트들 또는 단 한 개의 샘플링 포인트를 나타낼 수도 있다.
본 실시예에 있어서는, 래스터화기(21)에 의해 발생되는 각 그래픽 프래그먼트는, 복수의 (통상적으로 4개) 샘플링 위치들을 (그것과 관련되어 있다) 나타낸다. (다른 방식도 물론 가능할 것이다.)
그 후에, 래스터화기에 의해 발생된 프래그먼트들은 처리하기 위한 파이프라인의 나머지에 앞으로 전해진다.
얼리 Z/스텐실(프래그먼트 테스트) 스테이지(22)는, 이 스테이지에서 어떤 프래그먼트가 파기될 수 있는지 보려고, 프래그먼트들에 대해서 Z(심도) 테스트를 수행하여 래스터화기(21)로부터 수신한다. 이것을 행하기 위해서, 그것은 래스터화기(21)로부터 발행되고 있는 프래그먼트들(과 관련된)의 심도 값들과 이미 렌더링된 프래그먼트들의 심도 값들을 비교하여(이들 심도 값들은 타일 버터(27)의 일부인 신규 심도(Z) 버퍼에 저장된다) 신규 프래그먼트들이 이미 렌더링된 (혹은 렌더링되지 않은) 프래그먼트들에 의해 폐쇄될 것인지 여부를 판정한다. 동시에, 얼리 스텐실 테스트가 수행된다.
도 2에 도시한 바와 같이, 얼리 심도 및 스텐실 테스트 스테이지(22)를 통과하는 프래그먼트들(즉, 얼리 심도 및 스텐실 테스트 스테이지(22)를 통과하는 적어도 한 개의 관련 샘플링 위치를 갖는 프래그먼트들)은, 그 후에 프래그먼트 큐(23)를 통해서 프래그먼트 쉐이딩 스테이지(24)(렌더)에 앞으로 전해진다.
(얼리 심도 및 스텐실 테스트 스테이지(22)를 실패하는 프래그먼트들은 얼리 심도 및 스텐실 테스트 스테이지(22)에 의해 발췌된다.)
프래그먼트 큐(23)는 프래그먼트 쉐이딩 스테이지(24)에 발행되기 전에 얼리 프래그먼트 테스트(22)를 통과하는 프래그먼트들을 홀드하도록 동작한다. 큐(23)는 다른 방식도 물론 가능하지만, 한 개의 풀 사이즈 세트의 프래그먼트를 홀드할 수 있도록 구성된다.
프래그먼트들은 본 실시예의 동작을 용이하게 하기 위해서 큐(23)로부터 선택적으로 발행될 수 있다. 몇몇 실시예에 있어서는, 프래그먼트들이 또한 그들의 추가 처리를 피하기 위해서 큐(23)(로부터 삭제될 수 있다)에서 제거될 수 있다. 이들 방식에 대해서는 이하에 좀 더 상세히 설명할 것이다.
본 기술분야에서 알려진 것처럼, 프래그먼트 쉐이딩 스테이지(24)는 얼리 Z 및 스텐실 테스트를 통과하는 프래그먼트들에 대하여 적절한 프래그먼트 처리 동작을 수행함으로써, 프래그먼트들을 처리하여 적절한 렌더링된 프래그먼트 데이터를 발생한다.
본 기술분야에서 알려진 것처럼, 이 프래그먼트 처리는, 적절한 프래그먼트 데이터를 발생시키기 위해서, 프래그먼트들에 대하여 프래그먼트 쉐이더 프로그램을 실행하는 것과, 텍스처를 프래그먼트들에 적용하는 것과, 포깅(fogging) 또는 다른 동작을 프래그먼트들에 적용하는 등과 같은, 어떤 적절한 원하는 프래그먼트 쉐이딩 처리를 포함할 수도 있다. 본 실시예에 있어서는, 프래그먼트 쉐이딩 스테이지(24)는 쉐이더 파이프라인(프로그래머블 프래그먼트 쉐이더)의 형태이다.
그 후에는, 그 중에서도 쉐이드된(shaded) 프래그먼트들에 대하여 파이프라인 심도 테스트의 끝을 수행하여 렌더링된 프래그먼트가 실제로 출력에서 보여질 것인지 여부를 판정하는 "레이트(late)" 프래그먼트 Z 및 스텐실 테스트 스테이지(25)가 있다. 이 심도 테스트는 타일 버퍼(27) 내의 Z 버퍼 내에 저장된 프래그먼트의 위치에 대한 Z 버퍼 값을 이용해서, 프래그먼트 쉐이딩 스테이지(24)로부터 발행되고 있는 프래그먼트들(과 관련된)의 심도 값들과 (심도 버퍼 내에 저장된 것처럼) 이미 렌더링된 프래그먼트들의 심도 값을 비교해서, 신규 프래그먼트들에 대한 프래그먼트 데이터가 이미 렌더링된 프래그먼트들의 프래그먼트 데이터를 교체하는지 여부를 판정한다. 이 레이트 프래그먼트 심도 및 스텐실 테스트 스테이지(25)는 또한 프래그먼트들에 대해서 어떤 필요한 "레이트" 알파 및/또는 스텐실 테스트를 수행한다.
레이트 프래그먼트 테스트 스테이지(25)를 통과하는 프래그먼트들은, 필요하다면, 블렌더(blender)(26)에서의 타일 버퍼(27) 내에 이미 저장된 프래그먼트들과의 어떤 필요한 블렌딩 동작에 영향을 받기 쉽다. 디더(dither) 등(미도시)과 같은, 프래그먼트들에 필요한 어떤 다른 나머지의 동작들도 이 스테이지에서 수행된다.
최종적으로, (블렌드된) 출력 프래그먼트 데이터(값들)는, 타일 버퍼(27)에 기록되고, 그 타일 버퍼로부터 예를 들면, 디스플레이에 대한 프레임 버퍼에 출력될 수 있다. 출력 프래그먼트에 대한 심도 값은 또한 타일 버퍼(27) 내부의 Z 버퍼에 적절히 기록된다. (타일 버퍼는, 본 기술분에서 알려진 것처럼, 버터들이 나타내는 각 샘플링 포인트에 대해서(본질적으로 처리되고 있는 타일의 각 샘플링 포인트에 대해서), 각각 적절한 컬러 등을 저장하는 컬러 및 심도 버퍼들, 또는 Z 값을 저장할 것이다.) 이들 버퍼는, 본 기술분야에서 알려진 것처럼, 전체 렌더 출력(예를 들면, 표시되어야 하는 화상)의 일부(타일)를 나타내는 프래그먼트 데이터의 어레이를 저장하고, 이들 버퍼 내의 샘플링 값들의 각 세트는 전체 렌더 출력의 각 화소에 대응한다(예를 들면, 샘플 값들의 각 2×2 세트는 출력 화소에 대응해도 되고, 여기서는 4× 멀티샘플링이 사용되고 있다).
타일 버퍼(27)는 그래픽 처리 파이프라인(칩)(에 국부적인)에 위치되는 RAM의 일부로서 제공된다.
타일 버퍼(27)로부터의 데이터는, 다운샘플링(멀티샘플 리졸브(multisample resolve) 라이트 아웃(wirte out) 유닛에 입력될 수도 있고, 그 뒤에 디스플레이 디바이스(미도시)의 프레임 버퍼와 같은, 외부 메모리 출력 버퍼에 출력(라이트 백)될 수도 있다. (디스플레이 디바이스는 컴퓨터 모니터 또는 프린터와 같은, 예를 들면, 화소들의 어레이로 구성되는 디스플레이를 구비할 수 있다.)
일단 렌더 출력의 타일이 처리되었고 그것의 데이터가 스토리지(storage)용 메인 메모리(예를 들면, 메인 메모리(미도시) 내의 프레임 버퍼에) 전해지면, 충분한 타일들이 전체 렌더 출력(예를 들면, 표시되어야 하는 프레임(화상))을 발생하도록 처리되었을 때까지, 다음 타일이 처리 등 된다. 그 후에는 다음 렌더 출력(예를 들면, 프레임) 등에 대해서 이 처리가 반복된다.
그래픽 처리 파이프라인(3)의 다른 방식도 물론 가능하다.
상기는 도 1 및 도 2에 나타낸 그래픽 처리 시스템 및 파이프라인의 동작의 특정 특징들에 대해서 설명한다. 지금부터는 본 발명의 실시예에 따른 도 1 및 도 2에 나타낸 그래픽 처리 시스템 및 파이프라인의 동작의 추가 특징들에 대해서 설명할 것이다.
도 3 및 도 4는 본 실시예의 기술을 이용하여 구현될 수 있는 예시적인 렌더링 동작을 나타낸다. 도 3 및 도 4에 나타낸 예시적인 렌더링 동작은 증분 렌더링 동작이다.
도 3 및 도 4에 도시한 바와 같이, 증분 렌더링 동작을 수행하기 위해서, 첫째로 배경 화상이 렌더 출력으로서 발생되고(이것은 도 3에 도시되어 있다), 그 후에는 렌더링될 신규 오브젝트(object)가 배경 화상"의 위에(on top of)" 렌더링된다(이것은 도 4에 도시되어 있다).
배경 화상(30)을 랜더링하기 위해서, 도 3에 도시한 바와 같이, 배경 화상(30)의 각 타일(31)에 대하여, 그래픽 처리 파이프라인은 맨 먼저 타일 버퍼를 클리어해서 값들을 클리어한다(스텝 32). 처리되고 있는 타일을 겹치는 렌더링되는 오브젝트 33, 34의 어떤 부분들은 그 후에 라스터화되고 쉐이드된다(스텝 35). 일단 타일이 완료되었으면, 그것의 콘텐츠는 프레임 버퍼에 라이트 아웃된다(스텝 36). 이것은 전체 렌더 출력(배경 화상(30))이 발생되었을 때까지, 차례로 각 타일에 대해서 반복된다.
그 후에, 신규 오브젝트가 점차적으로 배경 화상(30)의 위에서 렌더링될 때, 도 4에 나타낸 바와 같이, 그래픽 처리 파이프라인은 각 타일에 대하여 다음의 처리를 수행하도록 구성된다.
맨 먼저, 문제의 타일에 대한 이전(배경) 화상(30)의 오래된 프레임 버퍼 콘텐츠는, 처리되고 있는 타일에 대한 타일 버퍼로 로드(load)된다(스텝 41). 그 후에, 렌더링되어야 하는 신규 오브젝트(40)는, (적어도 처리되고 있는 타일 내부에 있다고 하더라도) 타일에 대하여 래스터화되고 쉐이드된다(스텝 42). 그 결과의 타일은 그 후에 점차적으로 렌더링된 렌더 출력을 제공하기 위해서 신규 프레임 버퍼(43)에 기록된다(스텝 44).
증분 렌더링 동작에 있어서는, 신규 오브젝트(40)가 증분 렌더링 동작에 대해서 렌더링되기 전에, 배경 화상(30)에 대한 타일 버퍼 값들이 처리되고 있는 타일에 대한 그래픽 처리 파이프라인으로 로드될 필요가 있다는 것을 도 4로부터 알 수 있다. 이것은 타일이 처리되지 않을 때마다 전체의 이전 프레임 타일 버퍼 콘텐츠를 자동으로 로딩함으로써 간단히 행해질 수 있다. 그렇지만, 본 출원인은 그것이 비효율적일 수 있으므로, 본 실시예에 있어서는 이 동작이 변경된다는 것을 인식했다.
특히, 본 실시예에 있어서는, 타일이 증분 렌더링 동작에 대해서 처리되지 않을 때 배경 화상 타일 콘텐츠를 로딩하는 동작은, 단지 처리되고 있는 타일에 대한 특정 조건이 충족되면 행해진다. 이것은 실제로 증분 렌더링 동작에 필요하지 않을 때 배경 화상 데이터의 불필요한 로딩을 줄이거나 피하는 것을 돕는다.
이것을 행하기 위해서, 드라이버(4)는 렌더 출력을 발생할 때 한 개 이상의 "조건부의" 태스크들을 실행하라고 그래픽 처리 파이프라인(3)에 지시할 수 있도록 구성된다. 각 그러한 태스크는 그것과 관련된 조건을 갖고, 그래픽 처리 파이프라인은 단지 태스크에 대한 조건이 충족되었다고 판정할 때 태스크에 대한 처리의 일부 또는 전부를 수행한다. 태스크는 또한 태스크에 대해서 처리될 렌더 출력의 관련 영역을 갖고, (태스크에 대한 조건이 충족되면) 그 영역이 영향을 받아야 하는 처리를 나타낸다. 조건부의 태스크들은 그래픽 처리 파이프라인(3)에 의해 처리될 한 개 이상의 다른 비조건부의 태스크들(드로 콜)과 함께 포함될 수 있다(일반적으로는 포함될 것이다).
본 실시예에 있어서는, 조건부의 태스크들은, 드라이버가 렌더 출력을 발생할 때 드라이버(4)에 의해 그래픽 처리 파이프라인(3)에 제공되는 드로 콜 디스크립터의 세트 내에 적절한 드로 콜 디스크립터를 포함함으로써 그래픽 처리 파이프라인(3)에 명시된다. 각 조건부의 태스크 드로 콜 디스크립터는 태스크에 대한 조건을 명시할 수 있는 것에 필드(filed)를 갖는다.
본 실시예에 있어서는, 4개의 상이한 조건, 즉 파이프라인이 태스크를 "결코" 수행하지 않아야 하는 것과; 파이프라인이 태스크를 "항상" 수행해야 하는 것과; 렌더 출력에 대해서 처리될 "실제" 프리미티브(즉, 비조건부의 태스크(드로 콜)와 관련된 프리미티브)가 문제의 타일을 가로지르면 파이프라인이 단지 태스크를 수행해야 하는 것과; "실제" 프리미티브에 대한 프래그먼트가 파이프라인의 얼리 프래그먼트 테스트들을 통과하면 파이프라인이 단지 태스크를 실행해야 하는 것이 명시될 수 있다. 물론 다른 조건도 원한다면 가능할 것이다.
본 실시예에 있어서는, 조건부의 태스크들은 풀 타일 프리미티브(즉, 렌더링되고 있는 전체 타일을 커버하는 프리미티브)인 것으로서 암시적으로 표시된 것들에 대해서 처리되는 렌더 출력 영역을 갖고, 태스크에 대한 조건이 충족되면 그 영역(프리미티브)이 영향을 받기 쉬운 처리를 나타낸다. 어떤 다른(예를 들면, 비조건부의) 태스크들(예를 들면, 드로 콜)에 대한 지오메트리 전 또는 후에 (태스크의 조건이 충족되면) 조건부의 태스크들은 또한 그들의 지오메트리(프리미티브)가 처리되어야 하는지 여부를 나타낼 수 있다. 물론 다른 방식도 원한다면 가능할 것이다.
본 실시예에 있어서는, 조건부의 태스크들은 그래픽 처리 파이프라인에 의해 실행되는 "쉐이더(shaders)"의 형태이다(문제의 태스크에 대한 조건이 충족되면 쉐이딩 동작의 적어도 일부가 단지 수행될 것이다).
물론 조건부 태스크들에 대한 다른 방식도 가능할 것이다.
본 실시예에 있어서는 그래픽 처리 파이프라인(3)을 제어하여 증분 렌더링 동작을 수행하기 위해서, 증분 렌더링 동작이 수행되는 것을 인식했을 때, 드라이버(4)는 점차적으로 렌더링된 렌더 출력을 발생할 때 그래픽 처리 파이프라인(3)에 의해 실행되는 드로 콜의 세트 내에, 점차적으로 렌더링된 출력 프레임(이 예에 있어서는 신규 오브젝트(40)에 대한 프리미티브들)에 대한 "실제' 지오메트리를 렌더링하는 태스크(드로 콜)뿐 아니라 2개의 조건부의 태스크(쉐이더)를 포함한다.
2개의 조건부의 태스크는 그들의 지오메트리(프리미티브들)가 렌더 출력에 대한 "실제 "지오메트리" 전에(즉, 배경 프레임(30)을 통해서 점차적으로 신규 오브젝트(40)를 렌더링하는 태스크(드로 콜) 전에) 처리되도록 구성되고, 이들 "프리 프레임 쉐이더(pre-frame shader)" 조건부의 태스크들 중의 하나는 그것의 조건이 충족되면 증분 렌더링이 적용되는 이전 프레임으로부터 심도 버퍼 값들을 로드하도록 작동하고, 다른 조건부의 "프리 프레임 쉐이더"는 그것의 조건이 충족되면 오브젝트(40)가 점차적으로 렌더링되는 이전 프레임에 대한 컬러 값들을 로드하도록 작동한다.
심도 버퍼 값들을 로드하는 조건부의 태스크(프리 프레임 쉐이더)는 수행되는 제1 조건부 태스크로서 설정되고, 발생되고 있는 렌더 출력에 대한 비조건부의 태스크에 대한 지오메트리(즉, 이전 프레임(30)에 대해서 점차적으로 렌더링되고 있는 오브젝트(40)에 대한 어떤 "실제" 지오메트리)가 처리되고 있는 타일을 가로질러야 하는(즉, 적어도 부분적으로 내부에 있는) 그것의 조건으로서 갖는다.
이 조건부의 "프리 프레임 쉐이더"는 또한 그것의 조건이 충족되면, 풀 타일 프리미티브가 래스터화하기 위한 래스터화기에 발행되도록 구성되고, 그 후에 렌더링 처리가 이전(배경) 프레임(30)에 대한 적절한 심도 값들을 판독하고, 이들 값을, 풀 타일 프리미티브의 각 프래그먼트에 대하여 처리되고 있는 타일에 대한 적절한 심도 버퍼 내에 저장하도록 작동하다.
하지만 문제의 타일에 대하여 처리되어야 하는 실제 증분 렌더링 지오메트리(즉, 이 예에 있어서는 신규 오브젝트(40)에 대한 프리미티브)가 있을 때만, 이것은 처리되고 있는 타일에 대한 심도 버퍼로 점차적으로 렌더링되고 있는 이전 프레임에 대한 심도 버퍼 값들을 로딩하는 효과를 가질 것이다.
그 후에 컬러 값들을 로드하는 제2 조건부 태스크는, 증분 렌더링 동작에 대한 실제 지오메트리가 문제의 타일을 가로지르면 그것이 단지 실행되는 것과 같은 조건을 갖지만, 그 실제 지오메트리에 대한 프래그먼트가 얼리 프래그먼트 테스트(22)를 통과하면 그것이 단지 트리거(trigger)되는 추가 조건도 갖는다.
이 제2 조건부 "프리 프레임 쉐이더"는 또한 그것의 조건이 충족되면, 풀 타일을 커버하고 있는 프래그먼트들이 렌더링을 위한 렌더러에 발행되도록 구성되고, 그 후에 렌더링 처리는 이전(배경) 프레임(30)에 대한 적절한 컬러 값들을 판독하고, 이들 값들을, 각 프래그먼트에 대하여 처리되고 있는 타일에 대한 적절한 컬러 버퍼 내에 저장하도록 작동한다.
그렇지만, 증분 렌더링 동작에 관한 프래그먼트(즉, 이 예에 있어서는 신규 오브젝트(40)에 대한 프리미티브)가 문제의 타일에 대해서 렌더링되지 않을 때만, 이것은 처리되고 있는 타일에 대한 컬러 버퍼에 점차적으로 렌더링되고 있는 이전 프레임에 대한 컬러 값들을 로딩하는 효과를 가질 것이다.
이것은, 증분 렌더링 동작에 대한 "실제" 지오메트리가 주어진 타일에 대하여 처리되지 않았음에도 불구하고, 예를 들면, 그것은 얼리 프래그먼트 테스트(22)에서 발췌되기 때문에, 그것이 여전히 "실제" 지오메트리의 어느 것도 실제로 렌더링 스테이지에 도달하지 않는 (타일에 대하여 렌더링되지 않는) 경우일 수 있다는 사실을 고려한다. "실제" 지오메트리에 대한 프래그먼트가 얼리 프래그먼트 테스트(2)를 통과하면, 이전(배경) 프레임에 대한 컬러 값들을 그저 로드하는 제2 조건부 프리 프레임 쉐이더는, 이전(배경) 프레임에 대한 컬러 값들이 실제로 필요할 때 그래픽 처리 파이프라인으로 그저 로드되는 것을 보증하는 데에 도움이 된다.
그 후에 이들 2개의 조건부 프리 프레임 쉐이더의 효과는, 타일에 대하여 처리되어야 하는 증분 렌더링 동작에 대하여 어떤 "실제" 지오메트리도 없으면, 그 후에 조건부 프리 프레임 쉐이더가 실행되지 않는다는 것일 것이다(그래서 어떤 처리도 이 타일에 대해서 행해지지 않을 것이다). 그렇지만, 증분 렌더링 동작에 대한 타일에 대하여 처리되는 "실제" 지오메트리가 있으면, 그 후에 제1 조건부 프리 프레임 쉐이더는, 그 "실제" 지오메트리에 대한 얼리 프래그먼트 테스트를 수행하는 데에 필요한 이전(배경) 프레임으로부터 심도 값들을 로드하도록 맨 먼저 작동할 것이고, 그 후에 "실제" 지오메트리에 대한 프래그먼트들이 얼리 프래그먼트 테스트를 통과하면, 제2 조건부 프리 프레임 쉐이더는 이들 "실제" 지오메트리 프래그먼트들을 렌더링(쉐이딩)하기 위해 필요한 이전(배경) 프레임으로부터 컬러 값들을 로드하도록 작동할 것이다("실제" 지오메트리 프래그먼트들은 그 후에 로드된 컬러 값들을 이용해서 통상의 방식으로 렌더(쉐이드)될 수 있다).
사실상의 "실제" 증분 지오메트리(이 예에 있어서는 신규 오브젝트)를 렌더링하기 위한 2개의 조건부 프리 프레임 쉐이더 및 태스크(드로 콜)는, (조건부 태스크들이 트리거되면) 적절한 순으로 완료하도록 드라이버에 의해 구성된다. 이와 같이 심도 버퍼 값들을 로드하는 제1 조건부 태스크는, 신규 오브젝트(40)에 대한 "실제" 지오메트리에 대한 어떤 프래그먼트들이 얼리 프래그먼트 테스트를 받기 전에 그것의 처리(심도 값들의 로딩)(그것이 트리거되면)가 완료되도록 구성된다. 반면에, 컬러 값들을 로드하기 위한 제2 조건부 태스크에 대한 프래그먼트들의 처리는, 렌더링되고 있는 신규 오브젝트(40)에 대한 프래그먼트들이 얼리 프래그먼트 테스트(22)를 받은 후에만 발생하도록 구성된다(그렇지만 타일에 대한 컬러 값들을 로드하기 위한 제2 조건부 태스크에 대한 프래그먼트들의 처리는, (제2 조건부 태스크가 트리거되면) 실제 지오메트리에 대한 프래그먼트들이 렌더링되기 전에 (컬러 값들이 실제 지오메트리에 대한 프래그먼트들에 의해 요구되기 전에 제2 조건부 태스크에 의해 로드되는 것을 보장하기 위해서) 완료될 것이다.
지금부터는 도 5 내지 10을 참조하여 상기의 프로세스에 대해서 상세히 설명할 것이다. 도 5 내지 7은 본 실시예에 있어서의 호스트 프로세서(1)에서의 드라이버(4)의 동작을 나타낸다. 도 8 내지 10은 그래픽 처리 파이프라인(3)의 동작을 나타낸다.
도 5 내지 7은 이 방식의 드라이버의 동작을 개략적으로 나타낸다. 도 5는 드라이버의 전체 동작을 나타내고, 도 6 및 7은 조건부 태스크들을 그래픽 처리 파이프라인에 제공하는 것과 관련된 특정 동작을 좀 더 상세히 나타낸 것이다.
상기 프로세스는 증분 렌더링 동작이 수행되고 있는지 여부를 판정하는 드라이버(4)로 시작한다.
이것을 행하기 위해서, 드라이버(4)는 렌더 출력을 요구하고 있는 어플리케이션(2)으로부터의 그래픽 API 콜들을 고려하고, 이들 콜이 증분 렌더링 동작이 수행되고 있다(수행되고 있지 않다)는 것을 나타내는 콜들을 포함하는지 여부를 식별한다. 드라이버가 증분 렌더링 동작이 수행되고 있다고 판정하면, 그 후에 그것은 그래픽 처리 파이프라인에 의해 증분 렌더링 동작을 제어하기 위한 (상술한 형태의) 적절한 조건부 태스크들을 포함한다.
이와 같이, 도 5에 도시한 바와 같이, 상기 프로세스는 원하는 렌더 출력(프레임)에 대한 그래픽 API 콜들을 발행하는 어플리케이션(2)으로 시작한다(스텝 51). 드라이버(4)는 이들 API 콜을 수신하여 처리하고, 그들을 그래픽 처리 파이프라인(3)에 대한 적절한 하드웨어 코멘드들로 변환한다(스텝 52).
이 프로세스의 일부로서, 드라이버는 프레임에 대한 처리가 프레임 버퍼 클리어 코멘드로 시작하는지 아닌지를 식별한다(스텝 53).
프레임이 프레임 버퍼 클리어 코멘드로 시작하면, 그 후에 드라이버는 프레임이 "보통의 렌더링"으로서 처리되고 있다고 식별하고, 그래서 그 중에서도 프래그먼트 처리 코멘드를 셋업해서 각 타일에서의 프리미티브들을 처리하기 전에 각 타일을 클리어한다(스텝 54).
반면에, 프레임에 대한 처리가 프레임 버퍼 클리어 코멘드로 시작하지 않으면, 그 후에 그것은 증분 렌더링이 수행되고 있다는 것을 나타낸다. 이것에 응답해서, 드라이버는, 타일이 처리되기 전에 그래픽 처리 파이프라인이 상술한 조건부 프리 프레임 쉐이더들을 이용해서 이전의 프레임 버퍼 콘텐츠를 각 타일로 로드시키기 위한 적절한 코멘드들을 프래그먼트 처리 코멘드들에 포함한다(스텝 55).
도 6 및 7은 도 5에 있어서의 스텝 53, 54, 및 55의 동작을 좀 더 상세히 나타낸다.
도 6은 증분 렌더링 시에 사용하기 위한 이전의 프레임의 심도 값들을 로드하는 조건부 태스크(프리 프레임 쉐이더)를 설정하기 위한 드라이버 동작을 나타낸다.
도 6에 도시한 바와 같이, 드라이버는 발생되고 있는 프레임에 대해서 심도 버퍼가 클리어되는지 판정한다(스텝 60).
심도 버퍼가 클리어되면, 그 후에 드라이버는 "보통의" 렌더링이 발생하고 있다고 식별하고, 그래서 프래그먼트 처리 코멘드를 셋업해서 타일에 대한 프리미티브들이 처리되기 전에 타일에 대한 심도 값들을 클리어한다(스텝 61).
반면에, 심도 버퍼가 클리어되고 있지 않으면, 드라이버는 증분 렌더링이 수행되고 있다고 식별하고, 그래서 증분 렌더링 동작에 대해서 처리되는 "실제" 지오메트리가 문제의 타일을 가로지르는 조건이 충족될 때 메모리로부터의 적절한 심도 버퍼 콘텐츠를 타일에 대한 심도 버퍼로 로드하도록 작동하는 프리 프레임 쉐이더 조건부 태스크를 이용하기 위해서 프래그먼트 처리 코멘드를 셋업한다(스텝 62).
그 다음에, 이것은, 증분 렌더링 동작을 위한 문제의 타일에 대해서 렌더링되지 않는 몇몇 "실제" 지오메트리(즉, 본 예에 있어서는 오브젝트(40)의 어떤 부분)가 있으면 배경 프레임의 심도 버퍼 값들이 타일에 대한 증분 렌더링 동작을 위한 메모리로부터 로드될 것이지만, 증분 렌더링 동작을 위한 어떤 "실제" 지오메트리도(즉, 오브젝트(40)의 어떤 부분도) 문제의 타일을 가로지르지 않으면(적어도 부분적으로 내부에 있으면), 그 후에 배경 프레임에 대한 심도 버퍼 콘텐츠가 그래픽 처리 파이프라인으로 로드되지 않을 것이(이것에 의해 그럴 경우에는 해당 동작을 절약한다)라는 효과가 있다.
도 7은 증분 렌더링 시에 사용하기 위한 이전 프레임의 컬러 값들을 로드하는 조건부 태스크를 설정하기 위한 드라이버 동작을 나타낸다.
도 7에 도시한 바와 같이, 드라이버는 발생되고 있는 프레임에 대해서 컬러 버퍼가 클리어되는지를 판정한다(스텝 70).
컬러 버퍼가 클리어되면, 그 후에 드라이버는 "보통의" 렌더링이 발생하고 있다고 식별하고, 그래서 프래그먼트 처리 코멘드를 셋업해서 타일에 대한 프리미티브들이 처리되기 전에 타일에 대한 컬러 값들을 클리어한다(스텝 71).
반면에, 컬러 버퍼가 클리어되고 있지 않으면, 그 후에 드라이버는 증분 렌더링이 수행되고 있다고 식별하고, 그래서 문제의 타일에 대한 증분 렌더링 동작에 대해서 처리되는 "실제" 지오메트리에 대한 프래그먼트가 얼리 프래그먼트 테스트를 통과하는 조건이 충족될 때 메모리로부터의 적절한 컬러 버퍼 콘텐츠를 타일에 대한 컬러 버퍼로 로드하도록 동작하는 프리 프레임 쉐이더 조건부 태스크를 이용하기 위해서 프래그먼트 처리 코멘드를 셋업한다(스텝 72).
그 후에, 이것은 증분 렌더링 동작을 위한 문제의 타일에 대해서 렌더링되지 않는 어떤 "실제" 지오메트리(즉, 본 예에 있어서는 오브젝트(40)의 어떤 부분)에 대한 프래그먼트들이 얼리 프래그먼트 테스트를 통과하면 배경 프레임의 컬러 버퍼 값들이 타일에 대한 증분 렌더링 동작을 위한 메모리로부터 로드될 것이지만, 증분 렌더링 동작을 위한 "실제" 지오메트리에 대한 어떤 프래그먼트도(즉, 오브젝트(40)에 대한 어떤 프래그먼트도) 문제의 타일에 대한 얼리 프래그먼트 테스트를 통과하지 않으면(즉, 렌더링 동작에 도달하면)(렌더링되지 않으면), 그 후에 배경 프레임에 대한 컬러 버퍼 콘텐츠가 그래픽 처리 파이프라인으로 로드되지 않을 것이(이것에 의해 그럴 경우에는 해당 동작을 절약한다)라는 효과가 있다.
도 8, 9 및 10은 증분 렌더링 동작이 수행될 때 드라이버(3)에 의해 전해지는 조건부 태스크(프리 프레임 쉐이더)에 응답해서 그래픽 처리 파이프라인(3)의 대응하는 동작을 나타낸다. 도 8은 타일에 대한 심도 값들을 로드하는 프리 프레임 쉐이더(조건부 태스크)에 관한 동작을 나타내고, 도 9 및 10은 타일에 대한 컬러 값들을 로드하는 프리 프레임 쉐이더(조건부 태스크)에 관한 그래픽 처리 파이프라인의 동작의 대안 실시예를 나타낸다.
도 8, 9 및 10은, 렌더 출력을 위한 어떤 주어진 타일에 관한 동작을 나타낸다. 이들 동작은 그에 대응하여 렌더 출력을 발생하도록 처리되는 각 타일에 대해서 반복될 것이다.
도 8에 도시한 바와 같이, 타일의 처리는 문제의 타일에 대한 프리미티브 리스트로부터 처리되는 프리미티브들을 메모리로부터 판독하는 프리미티브 리스트 리더(20)에서 시작한다.
그 후에 증분 렌더링 동작에 대해서(즉, 렌더링되는 신규 오브젝트(40)에 대해서) 처리되는 어떤 "실제" (비조건부) 프리미티브가 문제의 타일을 교차하는지 여부를 판정한다(스텝 82). 이것은 타일에 대한 프리미티브 리스트가 신규 오브젝트(40)에 대해서 처리되는 프리미티브를 포함하는지 아닌지(즉, "실제" (비조건부) 지오메트리를 나타내는 프리미티브가 타일에 대해서 처리되는지 아닌지)를 식별함으로써 판정된다. 타일을 가로지르는 어떤 "실제" 프리미티브들도 없으면, 그 후에 타일은 증분 렌더링 동작에 대해서 처리될 필요가 없고(스텝 83), 프로세스는 다음 타일로 이동한다.
반면에, "실제" 지오메트리에 대한 어떤 프리미티브들이 타일을 교차하면(즉 타일에 대해서 처리될 필요가 있으면), 그 후에 타일에 대해서 처리되는 태스크들의 세트가 "교차" 조건을 포함하는 어떤 조건부 태스크들(프리 프레임 쉐이더들)을 포함하는지 여부를 판정한다(스텝 84). 그렇지 않으면, 그 후에 프리미티브 리스트 리더(20)는 "표준" 처리를 위한 래스터화기(21)에 타일을 교차하는 "실제" 프리미티브들을 간단하게 적달하도록 작동할 수 있다(스텝 85).
반면에, 타일에 대한 태스크들의 세트가 "교차" 조건을 갖는 조건부 프리 프레임 쉐이더를 포함하면, 그 후에 교차 조건이 충족됨에 따라(즉, "실제" (비조건부) 프리미티브가 타일을 교차함에 따라), 프리미티브 리스트 리더(20)는 맨 먼저 문제의 프리 프레임 쉐이더에 대한 풀 타일 프리미티브(직사각형)를, 래스터화를 위한 래스터화기(21)에 배출하고, 그 후에 처리되는 "실제" 지오메트리에 대한(즉, 신규 오브젝트(40)에 관한) 프리미티브들을 래스터화기로 보낸다(스텝 86).
본 예에 있어서는, 상술한 바와 같이, 증분 렌더링 동작을 수행하기 위해서, 그것과 관련된 교차 조건을 갖고, "교차" 조건이 충족될 때 타일에 대한 배경 (이전) 프레임(30)의 심도 값들을 로드하도록 작동될 수 있는, 조건부 프리 프레임 쉐이더(태스크)가 있을 것이다.
이와 같이, 증분 렌더링 동작에 대한 "실제" 지오메트리(즉, 렌더링되는 신규 오브젝트(40)에 대한 프리미티브)가 문제의 타일을 가로지르는 이들 타일에 대해서는, 심도 값들을 로드하는 프리 프레임 쉐이더가 실행될 것이다.
이전 (배경) 프레임 심도 값들을 로드하기 위해서, "교차" 조건을 갖는 조건부 프리 프레임 쉐이더가 실행하는 처리 동작은, 타일의 각 샘플링 위치에 대해서 배경 (이전) 프레임으로부터의 적절한 심도 값을 로드할 것이다. 이것은 래스터화기(21)에서의 프리 프레임 쉐이더에 대한 풀 타일 프리미티브를 전체 타일을 커버하는 적절한 프래그먼트들로 래스터화함으로써 달성되고, 프리 프레임 쉐이더 프리미티브에 대한 이들 프래그먼트들을 위한 렌더링 (프래그먼트 쉐이딩) 동작은, 그 후에 배경 (이전) 프레임으로부터의 관련 심도 값들을 처리되고 있는 타일에 대한 심도 버퍼로 로드하도록 작동한다. "실제" 지오메트리에 대한(즉, 신규 오브젝트(40)에 관한) 프리미티브들 전에 래스터화기(21)에 조건부 프리 프레임 쉐이더에 대한 프리미티브가 발행됨에 따라, 이것은 타일에 대한 "실제" 지오메트리가 심도 테스트를 받기 전에 심도 버퍼로 배경 프레임에 대한 심도 값들을 로드한다.
이것은, 렌더링되는 신규 오브젝트(40)에 대한 일부 지오메트리가 타일 내부에 있으면, 신규 오브젝트(40)에 대한 프리미티브들이 처리되기 전에 조건부 프리 프레임 쉐이더에 대한 프리미티브가 이전 프레임으로부터의 심도 값들을 그래픽 처리 파이프라인으로 로드하도록 작동함으로써, 이들 이전 프레임 심도 값들은, 신규 오브젝트(40)가 문제의 타일에서 발견될 것인지 아닌지(문제의 타일에 대한 배경 프레임에서의 지오메트리의 앞에 있을 것인지 아닌지)를 판정할 때 얼리 프래그먼트 테스트(22)에서 사용하도록 이용할 수 있는 효과가 있다. 문제의 타일에 대한 증분 렌더링을 위한 신규 오브젝트(40)에 대한 얼리 심도 테스트(22)는, 그 후에 적절히 수행될 수 있다(정확한 결과를 줄 것이다).
(신규 오브젝트(40)에 대한 "실제" 지오메트리의 어떤 프리미티브들도 타일 내부에 없으면, 그 후에 심도 값들을 로드하는 조건부 프리 프레임 쉐이더는 (그것의 "교차" 조건이 충족되지 않음에 따라) 작동하지 않을 것이고, 그러므로 배경 (이전) 프레임 심도 값들의 판독은 문제의 타일에 대하여 발생하지 않을 것이며, 그것에 의해 처리되는 어떤 "실제" (즉, 비조건부) 지오메트리도 없는 이들 타일에 대한 동작을 절약한다.)
도 8에 나타낸 그래픽 처리 파이프라인(3)의 동작의 효과는, "실제" 지오메트리가 증분 렌더링 동작을 위한 타일에 대해서 처리되지 않으면, 그 후에 증분 렌더링이 적용되는 배경 (이전) 프레임에 대한 심도 값들을 로드하도록 동작하는 "교차" 조건을 갖는 프리 프레임 조건부 쉐이더에 대한 풀 타일 프리미티브가 프리미티브 리스트 리더에 의해 래스터화기(21)에 전달되고, 맨 먼저 래스터화되어 렌더링되는 것이며(그것에 의해 이전 프레임으로부터의 심도 값들을 타일에 대한 심도 버퍼로 로드하고), 증분 지오메트리(이 경우에 신규 오브젝트(40))를 렌더링하는 것인 드로 콜에 대한 프리미티브들이 그 후에 프리미티브 리스트 리더(20)에 의해 래스터화기(21)에 발행된다.
신규 오브젝트(40)에 대한 프리미티브들은 그 후에 보통의 방식으로 래스터화기(21)에 의해 래스터화될 것이고, 래스터화기(21)에 의해 생성된 그 "실제" 지오메트리에 대한 프래그먼트들은, 그 후에 얼리 프래그먼트 테스트 스테이지(22)에서, 얼리 프래그먼트 테스트, 특히 얼리 심도 테스트를 받는다. 이 얼리 심도 테스트는 "교차" 조건을 갖는 제1 조건부 태스크에 의해 타일에 대한 심도 버퍼로 이미 로드된 이전 프레임의 심도 값과 신규 오브젝트(40)에 대한 프래그먼트의 심도 값을 비교할 것이다. 이렇게 함으로서, 얼리 프래그먼트 테스트(22)(특히 얼리 심도 테스트)는 이전 (배경) 프레임(30)에 대해 점차적으로 렌더링되고 있는 신규 오브젝트(40)에 대한 프리미티브들과 프래그먼트들에 관해서 정확하게 작동할 수 있다.
신규 오브젝트(40)에 대한 프래그먼트가 얼리 프래그먼트 스테이지(22)에서 얼리 심도 테스트를 실패하면(즉, 배경 (이전) 프레임 뒤에 있다고 판정되면), 그 후에 프래그먼트는 문제의 그래픽 처리 파이프라인에 대하여 일반적인 방식으로 추가 처리로부터 폐기될 것이다.
반면에, 신규 오브젝트(40)에 대한 프래그먼트가 얼리 프래그먼트 테스트(22)를 통과하면, 그 후에 그것은 렌더링을 위한 파이프라인에서 앞으로 전달될 것이다.
이 경우에는, 렌더링 동작이 증분 렌더링 동작이므로, 신규 오브젝트(40)가 점차적으로 렌더링되는 이전 (배경) 프레임(30)에 대한 컬러 값들은, 증분 렌더링 동작(즉, 신규 오브젝트(40)에 대한 프래그먼트들의 렌더링)을 정확하게 수행할 수 있게 하기 위해서 그래픽 처리 파이프라인에 의해 필요하게 될 것이다. 상기 설명한 것처럼, 이것은, 필요한 경우에, 증분 렌더링 동작을 위한 "실제" 지오메트리에 대한(즉, 본 예에 있어서는 신규 오브젝트(40)에 대한) 프래그먼트들이 그 컬러 데이터를 필요로 하기 전에 처리되고 있는 타일에 대한 컬러 버퍼로 이전 (배경) 프레임(30)에 대한 컬러 값들을 로드하도록 작동될 수 있는 제2 조건부 프리 프레임 쉐이더를 가짐으로써 가능하게 된다.
본 실시예에 있어서는 이 동작이 어떻게 그래픽 처리 파이프라인(3)에서 달성되는지의 2가지의 예에 대해서 도 9 및 10을 참조하여 이하에서 설명할 것이다. 도 9는 이 동작의 일 실시예를 나타내고, 도 10은 대안 실시예를 나타낸다.
도 9에 나타낸 바와 같이, 그래픽 처리 파이프라인(3)의 관련 동작은, 문제의 타일에 대한 "실제" 지오메트리에 대해서 렌더링되는 프래그먼트(이와 같이 신규 오브젝트(40)에 대한 프래그먼트)가 얼리 프래그먼트 테스트(22)를 통과할 때 시작한다. 그 시점에서 도 9에 나타낸 실시예에 있어서는, 타일에 대해서 처리되는 "실제" 지오메트리로부터의 어떤 더 많은 프래그먼트들이 있는지를 맨 먼저 판정한다(스텝 90). 이것은 예를 들면 타일 내의 각 프래그먼트 위치를 나타내는 비트맵 또는 비트 벡터를 이용해서, 예를 들면, 프래그먼트가 그 프래그먼트 위치에 대해서 발행되었는지 여부를 판정하기 위해서 타일 내의 각 프래그먼트 위치를 추적함으로써 판정될 수 있다.
스텝 90에서, 타일에 대하여 처리되는 더 많은 프래그먼트들이 있다고 판정되면, 그 후에 스텝 91에서는 문제의 프래그먼트가 문제의 타일 내의 위치에 있는 첫 번째의 "실제" 지오메트리 프래그먼트인지 여부를 판정한다. 그렇지 않으면(즉, "실제" 프래그먼트가 문제의 위치에 대해서 이미 전달되었으면), 그 후에 신규 프래그먼트는 프래그먼트 쉐이딩(24)에 대해서 큐잉(queued)되는 프래그먼트 큐(23)에 간단히 전해진다.
반면에, 문제의 프래그먼트가 문제의 타일 위치에 대한 첫 번째의 "실제" 지오메트리 프래그먼트이면, 그 후에는 프래그먼트가 영향을 받는 렌더링 동작(프래그먼트 쉐이딩 동작)이 타일 버퍼 내에 저장된 문제의 타일 위치 또는 위치들에 대한 컬러 값을 이용하는(의존하는)지 여부를 판정한다(이것은 예를 들면 프래그먼트가 현존하는 타일 컬러 버퍼 값들과 혼합되는 경우일 것이다)(스텝 92). 그렇지 않으면(즉, 프래그먼트가 컬러 버퍼에 기록하는 값(들)이 컬러 버퍼 내의 현존하는 값(들)에 의존하지 않으면), 그 후에 다시 프래그먼트가 프래그먼트 쉐이딩 스테이지(24)에 보내기 위해 큐잉하기 위한 프래그먼트 큐(23)에 간단히 전해진다.
반면에, 스텝 92에서는 프래그먼트의 처리가 현재의 타일 컬러 버퍼 값(들)을 이용할 것이라고 판정하면, 그 후에는 타일에 대하여 처리되는 태스크들의 세트가 "프래그먼트들" 조건을 포함하는(즉, 얼리 프래그먼트 테스트(22)를 통과하기 위해서 타일에 대하여 처리되는 비조건부 지오메트리에 대한 프래그먼트를 필요로 하는) 어떤 조건부 태스크들(프리 프레임 쉐이더들)을 포함하는지 여부를 판정한다(스텝 93). 그렇지 않으면, 그 후에는 다시 문제의 프래그먼트는 프래그먼트 쉐이딩 스테이지(24)에 보내기 위해서 큐잉하기 위한 프래그먼트 큐(23)에 간단히 전해진다.
반면에, 타일에 대한 태스크들의 세트가 "프래그먼트들" 조건을 갖는 조건부 프리 프레임 쉐이더를 포함하면, 그 후에 프래그먼트 조건이 충족됨에 따라 프리미티브에 대한 (즉, "실제" 비조건부) 프래그먼트가 얼리 프래그먼트 테스트(22)를 통과했고, 그 후에는 그 "프래그먼트들" 조건부 프리 프레임 쉐이더가 트리거된다.
본 예에 있어서는, 상기 설명한 것처럼, 증분 렌더링 동작을 수행하기 위해서, 그것과 관련된 "프래그먼트들" 조건을 갖고, "프래그먼트들" 조건이 충족될 때 타일에 대한 배경 (이전) 프레임(30)의 컬러 값들을 로드하도록 작동될 수 있는, 조건부 프리 프레임 쉐이더(태스크)가 있을 것이다.
이와 같이, 증분 렌더링 동작의 "실제" 지오메트리에 대한 (렌더링되는 신규 오브젝트(40)의 프리미티브에 대한) 프래그먼트들이 얼리 프래그먼트 테스트(22)를 통과하는 이들 타일에 대해서는, 컬러 값들을 로드하는 프리 프레임 쉐이더가 실행될 것이다.
이전 (배경) 프레임 컬러 값들을 로드하기 위해서, "프래그먼트들" 조건을 갖는 조건부 프리 프레임 쉐이더가 실행하는 처리 동작은, 타일의 각 샘플링 위치에 대해서, 배경 (이전) 프레임(30)으로부터의 적절한 컬러 값을 로드하는 것이다. 이것은 전체 타일을 함께 커버하는 적절한 프래그먼트들을 프래그먼트 쉐이더(24)에 발행함으로써 달성되고, 프리 프레임 쉐이더에 대한 이들 프래그먼트의 렌더링(프래그먼트 쉐이딩) 동작은 그 후에 배경 (이전) 프레임으로부터의 관련 컬러 값들을 처리되고 있는 타일에 대한 컬러 버퍼로 로드하도록 작동한다.
이것을 행하기 위해서 프리미티브 리스트 리더(20)는, 문제의 프리 프레임 쉐이더에 대한 프리 프레임 프래그먼트가 "실제" 지오메트리에 대한(즉, 신규 오브젝트(40)에 관한) 실질적인 프래그먼트(의 앞에) 전에 "실제" 프래그먼트에 대한 타일 위치에서 방출되게 한다(스텝 94). 이 프래그먼트들이 프래그먼트 큐(23)에 발행됨으로써, 프래그먼트 큐(23) 내부에는 첫 번째로 조건부 프리 프레임 쉐이더에 대한 프래그먼트가 있을 것이고, 그 다음에는 문제의 타일 내의 샘플링 위치 또는 위치들의 "실제" 지오메트리에 대한(즉, 신규 오브젝트(40)에 관한) 프래그먼트가 있을 것이다.
그 후에는 이들 프래그먼트가 큐(23)로부터 프래그먼트 쉐이더(24)로 차례로 발행됨으로써, (신규 프리미티브(40)에 대한) "실제" 지오메트리 프래그먼트가 그 중에서도 로드된 컬러 값들을 이용해서 렌더링되기 전에 문제의 프래그먼트 위치에 대한 이전 (배경) 프레임(30)으로부터 컬러 값들을 로드하도록 작동할 것이다.("실제" 지오메트리에 대한(즉, 신규 오브젝트(40)에 관한) 프래그먼트 전에 조건부 프리 프레임 쉐이더에 대한 프래그먼트가 프래그먼트 쉐이더(24)에 발행됨에 따라, 이것은 타일에 대한 "실제" 프래그먼트가 렌더링되기 전에 배경 프레임에 대한 컬러 값들을 컬러 버퍼로 로드한다.)
이것은 렌더링되는 신규 오브젝트(40)에 대한 프래그먼트(혹은 프래그먼트들)가 타일에 대한 얼리 프래그먼트 테스트를 통과하면, 신규 오브젝트(40)에 대한 프래그먼트들이 처리되기 전에 조건부 프리 프레임 쉐이더에 대한 프래그먼트들이 이전 프레임으로부터의 컬러 값들을 그래픽 처리 파이프라인으로 로드하도록 작동할 것이므로, 이들 이전 프레임 컬러 값들은 신규 오브젝트(40)에 대한 프래그먼트들을 렌더링(프래그먼트 쉐이딩)할 때 사용하도록 이용할 수 있는 효과가 있다. 이렇게 함으로써 문제의 타일에 대한 신규 오브젝트(40)의 렌더링이 적절히 수행될 수 있다(정확한 결과를 줄 것이다).
(신규 오브젝트(40)에 대한 "실제" 지오메트리에 대한 어떤 프래그먼트들도 타일에 대한 얼리 프래그먼트 테스트를 통과하지 않으면, 그 후에는 컬러 값들을 로드하는 조건부 프리 프레임 쉐이더가 (그것의 "프래그먼트들" 조건이 충족되지 않음에 따라) 작동하지 않을 것이고, 그래서 배경 (이전) 프레임 컬러 값들의 판독은 문제의 타일에 대하여 발생하지 않을 것이며, 그것에 의해 처리되는 "실제" (즉, 비조건부) 지오메트리가 없는 이들 타일에 대한 동작이 절약된다.
도 9에 나타낸 바와 같이, 스텝 90에서는 타일에 대한 "실제" 지오메트리의 최종 프래그먼트가 도달했다고 판정되면, 그 후에는 "프래그먼트들" 조건을 갖는 프리 프레임 조건부 태스크(쉐이더)가 타일에 대해서 존재하는지를 판정한다. 그렇게 하면, 프리미티브 리스트 리더(20)는 프리 프레임 쉐이더 프래그먼트들이 아직 방출되지 않았던 타일 내의 모든 위치에 대해서 관련 프리 프레임 쉐이더 조건부 태스크에 대한 프래그먼트들을 방출하도록 작동한다(스텝 95). 그렇게 방출된 프리 프레임 조건부 쉐이더 프래그먼트들은 프래그먼트 쉐이딩 스테이지(24)에 보내기 위해서 큐(23)에 다시 전해진다.(이것을 용이하게 하기 위해서, 그래픽 처리 파이프라인은, 예를 들면 상기 설명한 것처럼 타일 내의 각 프래그먼트 위치에 대한 비트맵 또는 비트 벡터를 이용해서, 프리 프레임 조건부 쉐이더 프래그먼트가 타일 내의 각 프래그먼트 위치에 대해서 발행되었는지를 출력한다.)
도 9에 나타낸 방식의 효과는, 타일 내의 주어진 위치가 처리되지 않을 때, 한 번에 "프래그먼트들" 조건을 갖는 조건부 프리 프레임 쉐이더에 대한 프래그먼트를 방출하는 것이다.
도 10은 "실제" 지오메트리에 대한 (이와 같이 이 경우에는 신규 오브젝트(40)의 프리미티브에 대한) 한 개의 프래그먼트가 얼리 프래그먼트 테스트(22)를 통과하자마자 "프래그먼트들" 조건을 갖는(이와 같이 이 예에 있어서는 컬러 값들을 로드하는) 조건부 프리 프레임 쉐이더에 대한 모든 프래그먼트들이 프래그먼트 큐(23)에 발행되는 대안 방식을 나타낸다.
도 10에 나타낸 바와 같이, 그래픽 처리 파이프라인(3)의 관련 동작은, 문제의 타일에 대한 "실제" 지오메트리에 대해서 렌더링되는 프래그먼트(이와 같이 신규 오브젝트(40)에 대한 프래그먼트)가 얼리 프래그먼트 테스트(22)를 통과할 때 다시 시작한다. 이 시점에서는, 스텝 100에서 문제의 프래그먼트가 문제의 타일에 대한 첫 번째의 "실제" 지오메트리 프래그먼트인지 여부를 맨 먼저 판정한다. 그렇지 않으면(즉, "실제" 프래그먼트가 타일에 대해서 이미 통과되었으면, 그 후에는 신규 프래그먼트가 프래그먼트 쉐이딩(24)에 대해서 큐잉되는 프래그먼트 큐(23)에 간단히 전해진다.
반면에, 문제의 프래그먼트가 타일에 대한 첫 번째의 "실제" 지오메트리 프래그먼트이면, 그 후에는 타일에 대하여 처리되는 태스크들의 세트가 "프래그먼트들" 조건을 포함하는(즉, 얼리 프래그먼트 테스트(22)를 통과하기 위해서 타일에 대하여 처리되는 비조건부 지오메트리에 대한 프래그먼트를 필요로 하는) 어떤 조건부 태스크들(프리 프레임 쉐이더들)을 포함하는지 여부를 판정한다(스텝 102). 그렇지 않으면, 그 후에는 다시 문제의 프래그먼트가 프래그먼트 쉐이딩 스테이지(24)에 보내기 위해 큐잉하기 위한 프래그먼트 큐(23)에 간단히 전해진다.
반면에, 타일에 대한 태스크들의 세트가 "프래그먼트들" 조건을 갖는 조건부 프리 프레임 쉐이더를 포함하면, 그 후에 프래그먼트 조건이 충족됨에 따라 프리미티브에 대한 (즉, "실제" 비조건부) 프래그먼트가 얼리 프래그먼트 테스트(22)를 통과했고, 그 후에 그 "프래그먼트들" 조건부 프리 프레임 쉐이더가 트리거된다.
본 예에 있어서는, 상기 설명한 바와 같이, 증분 렌더링 동작을 수행하기 위해서, 그것과 관련된 "프래그먼트들" 조건을 갖고, "프래그먼트들" 조건이 충족될 때 타일에 대한 배경 (이전) 프레임(30)의 컬러 값들을 로드하도록 작동될 수 있는, 조건부 프리 프레임 쉐이더(태스크)가 있을 것이다.
이와 같이, 증분 렌더링 동작을 위한 "실제" 지오메트리에 대한(렌더링되는 신규 오브젝트(40)의 프리미티브에 대한) 프래그먼트들이 얼리 프래그먼트 테스트(22)를 통과하는 이들 타일에 대해서는, 컬러 값들을 로드하는 프리 프레임 쉐이더가 실행될 것이다.
다시, 이전 (배경) 프레임 컬러 값들을 로드하기 위해서, "프래그먼트들" 조건을 갖는 조건부 프리 프레임 쉐이더가 실행하는 처리 동작은, 타일의 각 샘플링 위치에 대해서, 배경 (이전) 프레임(30)으로부터의 적절한 컬러 값을 로드하는 것이다. 이것은 다시 전체 타일 함께 커버하는 적절한 프래그먼트들을 프래그먼트 쉐이더(24)에 발행함으로써 달성되고, 프리 프레임 쉐이더의 이들 프래그먼트들에 대한 렌더링 (프래그먼트 쉐이딩) 동작은 그 후에 배경 (이전) 프레임으로부터의 관련 컬러 값들을 처리되고 있는 타일의 컬러 버퍼로 로드하도록 작동한다.
이것을 행하기 위해서, 도 10에 나타낸 방식에서는, 프리미티브 리스트 리더(20)는, 문제의 프리 프레임 쉐이더에 대한 프리 프레임 프래그먼트들이 "실제" 지오메트리에 대한(즉, 신규 오브젝트(40)에 관한) 실제 프래그먼트(의 앞에) 전에, 타일 내의 모든 위치(에 대해서)에서 방출되게 한다(스텝 103). 프래그먼트들을 프래그먼트 큐(23)에 발행함으로써 프래그먼트 큐(23)에는 첫 번째로 조건부 프리 프레임 쉐이더에 대한 모든 프래그먼트들이 있을 것이고, 그 후에는 문제의 타일 내의 샘플링 위치 또는 위치들의 "실제" 지오메트리에 대한(즉, 신규 오브젝트(40)에 관한) 프래그먼트가 있을 것이다.
이것의 효과는 (도 9에 나타낸 프로세스의 경우와 같이) "실제" 지오메트리 프래그먼트들이 처리되지 않음에 따라 컬러 값들을 로드하는 조건부 프리 프레임 쉐이더에 대한 모든 프래그먼트들을, 하나씩보다는 동시에 프래그먼트 큐(23)에 인가하는 점이다.
그 후에 이들 프래그먼트들을, 큐(23)로부터 프래그먼트 쉐이더(24)로 차례로 발행함으로써, (신규 프리미티브(40)에 대한) "실제" 지오메트리 프래그먼트가 그 중에서도 로드된 컬러 값들 이용해서 렌더링되기 전에, 프리 프레임 쉐이더 프래그먼트들이 타일에 대한 이전 (배경) 프레임(30)으로부터 컬러 값들을 로드하도록 작동할 것이다.
이것은 다시 렌더링되는 신규 오브젝터(40)의 프래그먼트가 타일에 대한 얼리 프래그먼트 테스트를 통과하면, 신규 오브젝트(40)의 프래그먼트들이 처리되기 전에 조건부 프리 프레임 쉐이더의 프래그먼트들이 이전 프레임으로부터의 컬러 값들을 그래픽 처리 파이프라인으로 로드하도록 작동함으로써, 이들 이전 프레임 컬러 값들이 신규 오브젝트(40)의 프래그먼트들을 렌더링(프래그먼트 쉐이딩)할 때 사용하기 위해서 이용될 수 있다는 효과가 있다. 이와 같이 문제의 타일에 대한 신규 오브젝트(40)의 렌더링이 적절히 수행될 수 있다(정확한 결과를 줄 것이다).
(신규 오브젝트(40)에 대한 "실제" 지오메트리의 어떤 프래그먼트들도 타일에 대한 얼리 프래그먼트 테스트를 통과하지 않으면, 그 후에 컬러 값들을 로드하는 조건부 프리 프레임 쉐이더가 (그것의 "프래그먼트들" 조건이 충족되지 않음에 따라) 작동하지 않음으로써, 배경 (이전) 프레임 컬러 값들의 판독은 문제의 타일에 대해서 발생하지 않을 것이고, 그것에 의해 처리되는 어떤 "실제" (즉, 비조건부) 지오메트리도 없는 이들 타일에 대한 동작이 절약된다.)
도 10에 나타낸 바와 같이, 이 실시예에 있어서는, 그래픽 처리 파이프라인은 큐(23) 내에 있는 프래그먼트들이 다른 나중 프래그먼트들에 의해 중복 기재되면 "삭제(kill)(파기)"될 수 있도록 구성되어 있다(스텝 104). 이것을 이용함으로써 그 중에서도 큐(23) 내에 있지만 실제로는 필요하지 않는, 조건부 태스크 프래그먼트들을 처리하는 것을 피할 수 있다.
이 동작은 본 출원인의 이전 UK Patent Application GB-A-2511177에 기재된 메카니즘을 이용해서 달성된다.
이와 같이, 태스크에 대한 프래그먼트가 얼리 프래그먼트 테스트(22)를 통과할 때, 그것의 위치가 프래그먼트 큐(23)로 브로드캐스트(broadcast)되고, 프래그먼트 큐(23)는, 얼리 프래그먼트 테스트를 통과한 프래그먼트에 대한 위치 정보가 큐(23) 내의 어떤 프래그먼트들이 얼리 프래그먼트 테스트(22)를 통과한 프래그먼트에 의해 초과 인출되는지를 판정하고, 어떤 그러한 프래그먼트들이 존재하면, 이들 초과 인출된 프래그먼트들의 추가 처리를 선택적으로 정지하는(그들을 큐로부터 제거하는) 것을 이용하도록 동작될 수 있다.
도 10은 타일 내의 첫 번째의 "실제" 지오메트리 프래그먼트가 얼리 프래그먼트 테스트(22)를 통과("프래그먼트들" 조건을 트리거)할 때 이루어지는 조건부 프리 프레임 쉐이더 프래그먼트들의 전체 타일의 가치의 투입 결정을 나타낸다.
그렇지만, 다른 방식도 가능할 것이다. 예를 들면, 프리 프레임 쉐이더 프래그먼트들의 전체 타일의 가치 투입 결정은, 원한다면 프리미티브 리스트 리더(20) 또는 래스터화기(21) 내에서 이루어질 수 있다. 이 경우에, "프래그먼트들 조건"은, 바람직하게는, 예를 들면 스톨스(stalls)을 피하기 위해서, 타일에 대한 렌더 출력의 "실제" 지오메트리가 "프래그먼트들" 조건을 트리거할 기능성(potential)이 있다고 판정되면 프리 프레임 쉐이더 프래그먼트들을 투입할 목적에 충족되는 것으로 간주된다.
이들 경우에 있어서는, 조건부 프리 프레임 쉐이더의 프래그먼트들은, 태스크의 "프래그먼트들" 조건이 분명히 충족되었는지를 판정하기 전에 발행됨에 따라, 프리 프레임 쉐이더 프래그먼트들은, "프래그먼트들" 조건이 충족되었다고 판정될 때까지는 프래그먼트 큐(23) 내에 홀드된다. 이것을 용이하게 하기 위해서, 조건부 태스크의 프래그먼트들은 (예를 들면, 프래그 또는 다른 마커를 이용해서) "조건부"인 것으로 표시된다("프래그먼트들" 조건이 발생되고 있는 렌더 출력에 충족되지 않으면, 조건부 태스크에 관한 조건부 프래그먼트들이 추가 처리되는 일 없이 프래그먼트 큐(23)로부터 제거된다).
상술한 실시예에 대한 다수의 변경, 변형 및 변화도 원한다면 가능할 것이다.
예를 들면, 상기 실시예에 있어서는 조건부 태스크들의 처리 동작이 이전에 발생된 데이터 값들을 판독하고, 그들을 다음의 렌더링 동작에 이용하기 위해서 저장하는 것을 포함하지만, 다른 방식도 가능할 것이다. 예를 들면, 조건부 태스크가 실행하는 처리 동작은 또한 혹은 대신에 예를 들면, 필터링(예를 들면, 다운샘플링), 압축 또는 그렇지 않으면 인코딩, 및/또는 에버리징(averaging)과 같은, 렌더 출력을 발생할 때 그래픽 처리 파이프라인에 의해 발생되는 처리 데이터와, 상기 출력 데이터를 발생할 때 발생되는 데이터를 구비할 수 있다. 이것은 주어진 렌더 출력을 렌더링할 때 발생되는 데이터를 조건부로 다운샘플링하거나 그렇지 않으면 필터링하는 데에 사용될 수 있고, 게다가 혹은 대신에 예를 들면 데이터를 로딩할 수도 있다.
마찬가지로, 조건부 태스크와 관련될 수 있는(관련되는) 조건은 기재된 실시예의 특정 조건에 한정될 필요는 없다.
예를 들면, 조건부 태스크와 관련될 수 있는 또 다른 조건은, 조건부 태스크 이외의 태스크에 대해서 처리된 어떤 지오메트리가 발생(바람직하게는 저장)되고 있는 다른 태스크에 대한 출력 데이터 값들을 초래하는지 여부일 수도 있다. 예를 들면, 심도 및/또는 컬러 버퍼가 조건부 태스크 이외의 태스크에 의해 갱신되는지 여부, 및 컬러 또는 심도 버퍼가 갱신되는지를 판정할 수 있고, (하지만 그렇지 않은 경우)(혹은 반대로) 그 후에는 배조건부 태스크가 트리거된다.
이 경우에, 예를 들면, "더티 비트(dirty bits") 방식을 이용해서, 출력이 발생되는지 판정하기 위해서 관련 출력을 추적할 수 있다.
예를 들면, (예를 들면, 비조건부) 태스크로부터의 어떤 출력 값들이 같은지 아닌지 여부를 고려하는 것과, 예를 들면 단지 그 후에 모든 출력 값들이 같지 않으면(혹은 반대이면) 조건부 태스크를 트리거하는 것도 가능할 것이다.
몇 가지의 조건과 조건부 태스크를 관련지어서, 모든 선택된 조건이 충족되면 단지 조건부 태스크가 실행될 것이라는 것도 가능할 것이다.
또한, 상기 실시예는 한 번에 개개의 프래그먼트를 처리하는 그래픽 처리 파이프라인의 관점에서 설명되었지만, 이 파이프라인은 프래그먼트들(예를 들면, 2×2 프래그먼트 쿼드(quads))의 처리 그룹과 같은, 대안 방식을 이용할 수 있다.
바람직한 실시예에 있어서는, 본 실시예의 동작은 또한 조건부 태스크가 외부 메모리(예를 들면, 프레임 버퍼)와 관련되는 렌더링 출력의 결과를 라이트 백할 것인지 여부를 판정하는 방식과 결합된다. 이 경우에, 렌더 출력의 타일을 발생할 때 실행되는 조건부 태스크가 실제로 실행되지 않으면, 그 후에는 조건부 태스크가 관련되는 타일용 외부 메모리에의 타일 라이트 백 메카니즘은 수행되지 않는다(파기된다). 이것은 예를 들면, 실제로 발생되고 있는 타일 데이터에 대해 사실상 어떤 갱신도 없는 외부 메모리에 타이들을 라이트 백하는 것을 피하기 위해서 사용될 수 있다(그것은 예를 들면, 출력이 이미 생성되었고, 현존하는 타일 데이터가 증분 렌더링 동작에 의해 변경되지 않은 이전 타일에 대해서 증분 렌더링이 행해지고 있는 증분 렌더링의 경우에 일어날 수도 있다).
이것은 예를 들면, 타일에 대해서 발생되고 있는 렌더링 출력이 (컬러 및/또는 심도 버퍼와 같은 ) 타일 버퍼를 갱신했는지 여부를 추적하고, 이 타일 버퍼가 (예를 들면, 비조건부 태스크에 대한 지오메트리에 의해) 갱신되었으면 단지 외부 메모리에 출력 타일의 라이팅 백을 트리거하는 것만으로 구현될 수 있다.
마찬가지로, 상기 실시예는 증분 렌더링을 참조하여 주로 설명되었지만, 본 실시예의 방식의 조건부 태스크들은 발생되는 렌더링 출력 및 어떤 적절한 원하는 그래픽 처리 동작에 대해서 사용될 수 있다.
예를 들면, 또한(혹은 대신에) 렌더링 출력의 어떤 "실제" (비조건부) 지오메트리가 처리된 후에 실행되는 조건부 태스크를 갖는 것도 가능할 것이고, 예를 들면, 이 조건부 태스크에 대한 조건은 "실제" 지오메트리가 어떤 실제의 출력 값들을 초래하는(예를 들면, 문제의 타일용 타일 버퍼를 갱신하는)지 여부이다. 이것은 예를 들면, 생성된 렌더 출력에 대하여 다운샘플링, 필터링 또는 다른 처리와 같은, 후처리 동작을 수행하기 위해서 사용될 수 있다. 그것은 예를 들면, 특정 프레임 포맷에 대하여 멀티샘플링된 렌더링을 수행하여, 렌더링된 타일(타일 쉐이더) 등에 대해 쉐이더(쉐이딩 프로그램)를 실행하기 위해서 사용될 수 있다.
이 경우에, 조건부 태스크의 지오메트리(예를 들면, 프리미티브(들), 프래그먼트들, 샘플링 위치들)는, 처리되는 다른 지오메트리가 처리하기 위한 그래픽 처리 파이프라인에 발행된 후에(후에만) 직접 발행될 수 있다.
물론 다른 방식도 가능하다.
또한, 렌더 출력을 발생시키기 위한 조건부 태스크만을 이용하는 것도 가능할 것이다. 이것은 캡션(captions)으로 비디오를 표시하는 등, 예를 들면 "간단한" 구성이 필요한 경우에 적합할 수 있다. 예를 들면, 한 개 이상의 조건부 태스크는 처리되는 적절한 데이터 값들에 로드하도록 사용될 수 있고, 그 후에 후처리 조건부 태스크가 예를 들면, 원하는 방식으로 로드된 데이터를 혼합하기 위해서 사용될 수 있다.
적어도 그것의 바람직한 실시예에 있어서는, 본 발명은 적어도 특정한 형태의 렌더링 동작에 대해서, 그래픽 처리 파이프라인에 의해 수행될 수도 있는 궁극적으로 불필요한 처리량을 줄일 수 있는 방식을 제공한다는 것을 알 수 있다. 이것은, 적어도 본 발명의 바람직한 실시예에서, 태스크와 관련된 조건 또는 조건들이 충족될 때 단지 문제의 태스크에 대한 처리를 수행하는 그래픽 처리 파이프라인에 의해 수행되는 처리 태스크들에 조건들을 첨부함으로써 달성된다.

Claims (33)

  1. 그래픽 처리 파이프라인을 포함하는 그래픽 처리 시스템을 작동시키는 방법으로서, 상기 방법은,
    상기 그래픽 처리 파이프라인이 렌더 출력을 발생시킬 때,
    태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 상기 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 태스크를 실행하라고 상기 그래픽 처리 파이프라인에 지시하는 것을 포함하고,
    상기 그래픽 처리 파이프라인은 태스크와 관련된 조건이 충족되었는지를 판정하고,
    상기 그래픽 처리 파이프라인은, 태스크와 관련된 조건이 충족되었다고 판정된 경우에, 태스크와 관련된 상기 렌더 출력의 영역에 대하여 태스크에 대한 처리를 실행하는 것을 특징으로 하는, 방법.
  2. 제 1 항에 있어서,
    상기 그래픽 처리 파이프라인은 타일 기반 그래픽 처리 파이프라인이고, 조건부 태스크의 렌더 출력 영역은 상기 그래픽 처리 파이프라인이 작동되는 단 한 개의 타일을 구비하는 것을 특징으로 하는, 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 조건부 태스크가 수행하는 처리는, 이전에 발생된 데이터 값들을 판독하고, 그들을 상기 렌더 출력을 발생시킬 때 사용하기 위해서 저장하는 것을 포함하는 것을 특징으로 하는, 방법.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 조건부 태스크가 수행하는 처리는, 상기 렌더 출력을 발생시킬 때 상기 그래픽 처리 파이프라인에 의해 발생되는 데이터를 처리하는 것을 포함하는 것을 특징으로 하는, 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    상기 조건부 태스크는 태스크의 조건이 충족될 때 상기 그래픽 처리 파이프라인에 의해 실행되는 쉐이더의 형태인 것을 특징으로 하는, 방법.
  6. 제 1 항 또는 제 2 항에 있어서,
    렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 어플리케이션으로부터 수신된 그래픽 처리 코멘드들로부터, 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는지 여부를, 판정하고,
    상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함한다고 판정될 때, 그래픽 처리 파이프라인이 상기 어플리케이션이 필요로 하는 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 한 개 이상의 그래픽 처리 태스크들의 세트를 실행하라고 지시하는 것을 더 포함하고, 상기 태스크들의 세트 내의 태스크들 중의 적어도 하나는 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 것을 특징으로 하는, 방법.
  7. 렌더 출력을 발생시키기 위한 태스크들을 그래픽 처리 파이프라인에 제공하는 방법으로서, 상기 방법은,
    상기 렌더 출력을 발생시키기 위해서 그래픽 처리를 필요로 하는 어플리케이션으로부터 수신된 그래픽 처리 코멘드들로부터, 상기 어플리케이션이 필요로 하는 상기 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는지 여부를, 판정하고,
    상기 어플리케이션이 필요로 하는 상기 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함한다고 판정될 때, 그래픽 처리 파이프라인이 상기 어플리케이션이 필요로 하는 상기 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 한 개 이상의 그래픽 처리 태스크들의 세트를 실행하라고 지시하는 것을 포함하고, 상기 태스크들의 세트 내의 태스크들 중의 적어도 하나는, 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 상기 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 것을 특징으로 하는, 방법.
  8. 제 1 항, 제 2 항, 또는 제 7 항 중 어느 한 항에 있어서,
    상기 렌더 출력을 발생시키기 위해서 그래픽 처리 파이프라인에 복수의 태스크들의 세트를 실행하라고 지시하는 것을 더 포함하고, 상기 복수의 태스크들의 세트 내의 태스크들 중의 모두가 아닌 일부만이 조건부 태스크들인 것을 특징으로 하는, 방법.
  9. 제 1 항, 제 2 항, 또는 제 7 항 중 어느 한 항에 있어서,
    상기 조건부 태스크와 관련된 조건은 상기 렌더 출력을 발생시키기 위해서 실행되는 또 다른 태스크에 대한 지오메트리의 처리 결과에 의존하고, 상기 조건부 태스크는, 태스크의 조건이 충족될 때, 상기 조건부 태스크를 트리거한 태스크에 대한 지오메트리의 추가 처리에 앞서 상기 조건부 태스크에 대한 처리를 트리거하도록 작동되는 것을 특징으로 하는, 방법.
  10. 제 1 항, 제 2 항, 또는 제 7 항 중 어느 한 항에 있어서,
    조건부 태스크를,
    상기 렌더 출력을 발생시킬 때 실행되는 비조건부 태스크에 대하여 처리되는 지오메트리가 적어도 부분적으로 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역 내부에 있는지의 여부와,
    상기 렌더 출력을 발생시키기 위해서 실행되는 비조건부 태스크에 대한 지오메트리를 래스터화할 때 그래픽 처리 파이프라인의 래스터화기에 의해 발행된 적어도 한 개의 프래그먼트가, 상기 래스터화기에 의해 발행된 프래그먼트들이 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역에 대하여 그래픽 처리 파이프라인에서 겪게 되는 얼리 컬링 테스트를 통과하는지 여부와,
    조건부 태스크 이외의 태스크에 대하여 처리된 지오메트리가 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역에 대해서 발생되어 저장되는 다른 태스크에 대한 출력 데이터 값을 야기하는지 여부와 같은,
    조건들 중의 한 개 이상과 관련짓는 것을 포함하는 것을 특징으로 하는, 방법.
  11. 제 1 항, 제 2 항, 또는 제 7 항 중 어느 한 항에 있어서,
    상기 렌더 출력을 발생시킬 때 실행되는 조건부 태스크가 실행되지 않을 때, 상기 조건부 태스크가 관련되어 있는 렌더링 출력을 외부 메모리에 라이트 백(write back)하지 않는 것을 포함하는 것을 특징으로 하는, 방법.
  12. 제 1 항, 제 2 항, 또는 제 7 항 중 어느 한 항에 있어서,
    발생되고 있는 상기 렌더 출력은 점차적으로 렌더링된 프레임인 것을 특징으로 하는, 방법.
  13. 제 1 항, 제 2 항, 또는 제 7 항 중 어느 한 항에 있어서,
    상기 조건부 태스크와 관련된 조건은 상기 조건부 태스크를 실행하라는 지시로 표시되는 것을 특징으로 하는, 방법.
  14. 그래픽 처리 파이프라인으로서,
    태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 렌더 출력의 영역과 태스크에 대한 처리를 실행할 것인지 아닌지를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 태스크를 실행하라고 상기 그래픽 처리 파이프라인에 지시할 때,
    태스크와 관련된 조건이 충족되었는지 여부를 판정할 수 있고,
    태스크와 관련된 조건이 충족되었다고 판정될 때, 상기 그래픽 처리 파이프라인에 의해 태스크와 관련된 상기 렌더 출력의 영역에 대하여 태스크에 대한 처리의 실행을 트리거할 수 있는,
    처리회로를 구비하는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  15. 제 14 항에 있어서,
    상기 그래픽 처리 파이프라인은 타일 기반 그래픽 처리 파이프라인이고, 조건부 태스크에 대한 렌더 출력 영역은, 상기 그래픽 처리 파이프라인이 작동되는 단 한 개의 타일을 구비하는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  16. 제 14 항 또는 제 15 항에 있어서,
    상기 그래픽 처리 파이프라인이 상기 조건부 태스크에 대하여 수행하는 처리는, 이전에 발생된 데이터 값들을 판독하고, 그들을 상기 렌더 출력을 발생시킬 때 사용하기 위해서 저장하는 것을 포함하는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  17. 제 14 항 또는 제 15 항에 있어서,
    상기 그래픽 처리 파이프라인이 상기 조건부 태스크에 대하여 수행하는 처리는, 상기 렌더 출력을 발생시킬 때 상기 그래픽 처리 파이프라인에 의해 발생되는 데이터를 처리하는 것을 포함하는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  18. 제 14 항 또는 제 15 항에 있어서,
    상기 조건부 태스크는 태스크의 조건이 충족될 때 상기 그래픽 처리 파이프라인에 의해 실행되는 쉐이더의 형태인 것을 특징으로 하는, 그래픽 처리 파이프라인.
  19. 그래픽 처리 파이프라인에 렌더 출력을 발생시키기 위한 태스크들을 제공하는 장치로서, 상기 장치는,
    상기 렌더 출력을 발생시키기 위한 그래픽 처리를 필요로 하는 어플리케이션으로부터 수신된 그래픽 처리 코멘드들로부터, 상기 어플리케이션이 필요로 하는 상기 렌더 출력을 발생시키기 위해서 상기 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는지 여부를 판정할 수 있고,
    상기 어플리케이션이 필요로 하는 상기 렌더 출력을 발생시키기 위해서 상기 그래픽 처리 파이프라인에 의해 실행되는 그래픽 처리 태스크들에 조건부 그래픽 처리 태스크를 포함하는 것으로 판정될 때, 상기 그래픽 처리 파이프라인이 상기 어플리케이션이 필요로 하는 상기 렌더 출력을 발생시키기 위해 한 개 이상의 그래픽 처리 태스크들의 세트를 실행하라고 상기 그래픽 처리 파이프라인에 지시할 수 있는 처리 회로를 구비하고, 상기 태스크들의 세트 내의 태스크들 중의 적어도 하나는, 태스크에 대한 조건이 충족될 때 태스크에 대한 처리가 실행되는 상기 렌더 출력의 영역과 태스크에 대한 처리를 실행할지 아닌지 여부를 판정하기 위해서 상기 그래픽 처리 파이프라인이 사용하는 태스크와 관련된 조건을 갖는 것을 특징으로 하는, 제공장치.
  20. 제 19 항에 있어서,
    렌더 출력을 발생시키기 위해서 복수의 태스크들의 세트를 실행하라고 상기 그래픽 처리 파이프라인에 지시할 수 있는 처리회로를 구비하고, 상기 복수의 태스크들의 세트 내의 태스크들 중의 모두가 아닌 일부만이 조건부 태스크들인 것을 특징으로 하는, 제공장치.
  21. 제 14 항 또는 제 15 항에 있어서,
    상기 조건부 태스크와 관련된 조건은, 상기 렌더 출력을 발생시키기 위해서 실행되는 또 다른 태스크에 대한 지오메트리의 처리 결과에 의존하고, 상기 조건부 태스크는, 태스크의 조건이 충족될 때, 상기 조건부 태스크를 트리거한 태스크에 대한 지오메트리의 추가 처리에 앞서 상기 조건부 태스크에 대한 처리를 트리거하도록 작동되는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  22. 제 14 항 또는 제 15 항에 있어서,
    조건부 태스크를,
    상기 렌더 출력을 발생시킬 때 실행되는 비조건부 태스크에 대하여 처리되는 지오메트리가 적어도 부분적으로 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역 내부에 있는지의 여부와,
    상기 렌더 출력을 발생시키기 위해서 실행되는 비조건부 태스크에 대한 지오메트리를 래스터화할 때 상기 그래픽 처리 파이프라인의 래스터화기에 의해 발행된 적어도 한 개의 프래그먼트가, 상기 래스터화기에 의해 발행된 프래그먼트들이 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역에 대하여 상기 그래픽 처리 파이프라인에서 겪게 되는 얼리 컬링 테스트를 통과하는지 여부와,
    조건부 태스크 이외의 태스크에 대하여 처리된 지오메트리가 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역에 대해서 발생되어 저장되는 다른 태스크에 대한 출력 데이터 값을 야기하는지 여부와 같은,
    조건들 중의 한 개 이상과 관련지을 수 있는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  23. 제 14 항 또는 제 15 항에 있어서,
    렌더 출력을 발생시킬 때 실행되는 조건부 태스크가 실행되지 않을 때, 상기 조건부 태스크가 관련되어 있는 렌더링 출력을 외부 메모리에 라이트 백할 수 없는 처리 회로를 더 구비하는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  24. 제 14 항 또는 제 15 항에 있어서,
    상기 렌더 출력은 점차적으로 렌더링된 프레임인 것을 특징으로 하는, 그래픽 처리 파이프라인.
  25. 제 14 항 또는 제 15 항에 있어서,
    상기 그래픽 처리 파이프라인은 타일 기반 그래픽 처리 파이프라인인 것을 특징으로 하는, 그래픽 처리 파이프라인.
  26. 제 14 항 또는 제 15 항에 있어서,
    상기 조건부 태스크와 관련된 조건은 상기 조건부 태스크를 실행하라는 지시로 표시되는 것을 특징으로 하는, 그래픽 처리 파이프라인.
  27. 컴퓨터 프로그램이 데이터 처리 수단에서 실행될 때 청구항 1, 2 혹은 7 중 어느 한 항에 기재된 방법을 수행하기 위한 컴퓨터 소프트웨어 코드를 구비하는, 매체에 기억된, 컴퓨터 프로그램.
  28. 제 19 항 또는 제 20 항에 있어서,
    상기 조건부 태스크와 관련된 조건은, 상기 렌더 출력을 발생시키기 위해서 실행되는 또 다른 태스크에 대한 지오메트리의 처리 결과에 의존하고, 상기 조건부 태스크는, 태스크의 조건이 충족될 때, 상기 조건부 태스크를 트리거한 태스크에 대한 지오메트리의 추가 처리에 앞서 상기 조건부 태스크에 대한 처리를 트리거하도록 작동되는 것을 특징으로 하는, 제공장치.
  29. 제 19 항 또는 제 20 항에 있어서,
    조건부 태스크를,
    상기 렌더 출력을 발생시킬 때 실행되는 비조건부 태스크에 대하여 처리되는 지오메트리가 적어도 부분적으로 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역 내부에 있는지의 여부와,
    상기 렌더 출력을 발생시키기 위해서 실행되는 비조건부 태스크에 대한 지오메트리를 래스터화할 때 상기 그래픽 처리 파이프라인의 래스터화기에 의해 발행된 적어도 한 개의 프래그먼트가, 상기 래스터화기에 의해 발행된 프래그먼트들이 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역에 대하여 상기 그래픽 처리 파이프라인에서 겪게 되는 얼리 컬링 테스트를 통과하는지 여부와,
    조건부 태스크 이외의 태스크에 대하여 처리된 지오메트리가 상기 조건부 태스크에 대한 조건을 고려하는 상기 렌더 출력의 영역에 대해서 발생되어 저장되는 다른 태스크에 대한 출력 데이터 값을 야기하는지 여부와 같은,
    조건들 중의 한 개 이상과 관련지을 수 있는 것을 특징으로 하는, 제공장치.
  30. 제 19 항 또는 제 20 항에 있어서,
    렌더 출력을 발생시킬 때 실행되는 조건부 태스크가 실행되지 않을 때, 상기 조건부 태스크가 관련되어 있는 렌더링 출력을 외부 메모리에 라이트 백할 수 없는 처리 회로를 더 구비하는 것을 특징으로 하는, 제공장치.
  31. 제 19 항 또는 제 20 항에 있어서,
    상기 렌더 출력은 점차적으로 렌더링된 프레임인 것을 특징으로 하는, 제공장치.
  32. 제 19 항 또는 제 20 항에 있어서,
    상기 그래픽 처리 파이프라인은 타일 기반 그래픽 처리 파이프라인인 것을 특징으로 하는, 제공장치.
  33. 제 19 항 또는 제 20 항에 있어서,
    상기 조건부 태스크와 관련된 조건은 상기 조건부 태스크를 실행하라는 지시로 표시되는 것을 특징으로 하는, 제공장치.
KR1020160018205A 2015-02-18 2016-02-17 그래픽 처리 시스템 KR102623693B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1502705.5A GB2535493B (en) 2015-02-18 2015-02-18 Graphics processing systems
GB1502705.5 2015-02-18

Publications (2)

Publication Number Publication Date
KR20160101874A true KR20160101874A (ko) 2016-08-26
KR102623693B1 KR102623693B1 (ko) 2024-01-11

Family

ID=52781790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160018205A KR102623693B1 (ko) 2015-02-18 2016-02-17 그래픽 처리 시스템

Country Status (3)

Country Link
US (1) US10013790B2 (ko)
KR (1) KR102623693B1 (ko)
GB (1) GB2535493B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152764B2 (en) * 2015-03-24 2018-12-11 Intel Corporation Hardware based free lists for multi-rate shader
US10296473B2 (en) * 2017-03-24 2019-05-21 Western Digital Technologies, Inc. System and method for fast execution of in-capsule commands
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10387160B2 (en) * 2017-04-01 2019-08-20 Intel Corporation Shared local memory tiling mechanism
US10706612B2 (en) 2017-04-01 2020-07-07 Intel Corporation Tile-based immediate mode rendering with early hierarchical-z
CN112116519B (zh) * 2019-06-19 2022-12-27 畅想科技有限公司 图形处理系统中的粗略深度测试
CN111047500A (zh) * 2019-11-18 2020-04-21 中国航空工业集团公司西安航空计算技术研究所 一种超长图形流水线的测试方法
CN115049774B (zh) * 2022-08-12 2022-11-01 深流微智能科技(深圳)有限公司 图形处理方法、处理器、存储介质及终端设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120025534A (ko) * 2009-05-29 2012-03-15 퀄컴 인코포레이티드 연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛
US8736624B1 (en) * 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8736624B1 (en) * 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
KR20120025534A (ko) * 2009-05-29 2012-03-15 퀄컴 인코포레이티드 연기형 버텍스 셰이딩을 갖는 그래픽스 프로세싱 유닛

Also Published As

Publication number Publication date
US10013790B2 (en) 2018-07-03
GB2535493A (en) 2016-08-24
KR102623693B1 (ko) 2024-01-11
US20160239939A1 (en) 2016-08-18
GB201502705D0 (en) 2015-04-01
GB2535493B (en) 2021-02-24

Similar Documents

Publication Publication Date Title
KR102623693B1 (ko) 그래픽 처리 시스템
CN105321199B (zh) 图形处理流水线及其操作方法与介质
US10755473B2 (en) Graphics processing system
KR102455696B1 (ko) 그래픽 처리 시스템
US9767595B2 (en) Graphics processing systems
KR102442487B1 (ko) 그래픽 처리 시스템 및 그래픽 프로세서
TWI637346B (zh) 圖形處理系統
US10311016B2 (en) Hidden surface removal in graphics processing systems
US9741089B2 (en) Graphics processing systems
US10043306B2 (en) Using depth data in a graphics processing system
US9070200B2 (en) Graphics processing systems
US9153070B2 (en) Hidden surface removal in graphics processing systems
CN107438865B (zh) 图形处理系统及其操作方法
KR20150119803A (ko) 그래픽 처리 시스템
US9607356B2 (en) Graphics processing systems
KR20140078568A (ko) 그래픽 처리 시스템에서 히든 표면의 제거
US20180144437A1 (en) Graphics processing systems
CN110738593B (zh) 图形处理器及其操作方法、图形处理系统、编译器
CN115311120A (zh) 图形处理系统
US11972503B2 (en) Graphics processing

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant