KR101033779B1 - 확장된 버텍스 캐시를 갖는 그래픽스 프로세싱 유닛을 이용하여 이미지를 프로세싱하는 방법 및 장치 - Google Patents

확장된 버텍스 캐시를 갖는 그래픽스 프로세싱 유닛을 이용하여 이미지를 프로세싱하는 방법 및 장치 Download PDF

Info

Publication number
KR101033779B1
KR101033779B1 KR1020097004410A KR20097004410A KR101033779B1 KR 101033779 B1 KR101033779 B1 KR 101033779B1 KR 1020097004410 A KR1020097004410 A KR 1020097004410A KR 20097004410 A KR20097004410 A KR 20097004410A KR 101033779 B1 KR101033779 B1 KR 101033779B1
Authority
KR
South Korea
Prior art keywords
vertex
vertices
attribute
gpu
image
Prior art date
Application number
KR1020097004410A
Other languages
English (en)
Other versions
KR20090043550A (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 KR20090043550A publication Critical patent/KR20090043550A/ko
Application granted granted Critical
Publication of KR101033779B1 publication Critical patent/KR101033779B1/ko

Links

Images

Classifications

    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Landscapes

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

Abstract

확장된 버텍스 캐시를 이용하여, 컴퓨터 처리된 이미지를 그래픽스 프로세싱 유닛 (GPU) 으로 프로세싱하는 기술이 설명된다. 이 기술은 GPU 파이프라인에 커플링된 확장된 버텍스 캐시를 생성하여 GPU 파이프라인을 통과하는 데이터량을 감소시키는 것을 포함한다. GPU 파이프라인은 이미지에 대한 이미지 지오메트리를 수신하고, 그 이미지 지오메트리 내의 버텍스에 대한 속성을 확장된 버텍스 캐시에 저장한다. GPU 파이프라인은, 버텍스를 식별하는 버텍스 좌표, 및 확장된 버텍스 캐시의 버텍스 각각에 대한 속성의 저장 위치를 식별하는 버텍스 캐시 인덱스 값을 GPU 라인을 따라 다른 프로세싱 스테이지로 전달하기만 한다. 여기서 설명하는 기술들은 속성 그레디언트의 셋업을 GPU 파이프라인에서 속성 보간 직전까지 지연한다. 버텍스 속성은 GPU 파이프라인의 속성 보간 직전에 속성 그레디언트 셋업에 대한 확장된 버텍스 캐시로부터 검색될 수도 있다.
GPU, GPU 파이프라인, 그래픽스, 버텍스

Description

확장된 버텍스 캐시를 갖는 그래픽스 프로세싱 유닛을 이용하여 이미지를 프세로세싱하는 방법 및 장치{METHOD AND APPARATUS FOR PROCESSING IMAGES USING GRAPHICS PROCESSING UNIT WITH EXTENDED VERTEX CACHE}
기술분야
본 출원은 그래픽스 프로세싱 유닛에 관한 것이고, 더 상세하게는, 그래픽스 프로세싱 유닛으로 이미지를 프로세싱하는 것에 관한 것이다.
배경기술
그래픽스 프로세싱 유닛 (GPU) 는, 컴퓨터 처리된 그래픽스를 조작하여 디스플레이 디바이스 상에 디스플레이하는데 이용되는 전용 그래픽스 렌더링 디바이스이다. GPU 는, 복잡한 알고리즘에 대해 통상적인 범용 중앙 처리 장치 (CPU) 보다 더 효율적인 프로세싱을 제공하는 높은 병렬성 구조로 구성된다. 예를 들어, 복잡한 알고리즘은 3 차원의 컴퓨터 처리된 그래픽스의 표현에 대응할 수도 있다. GPU 는, 점, 선 및 삼각형의 형성과 같은 다수의 프리미티브 그래픽스 작업을 구현하여, CPU 로 디스플레이 디바이스에 직접 이미지를 그리는 것보다 더 빠르게 디스플레이 디바이스 상에 복잡한 3 차원 이미지를 생성할 수도 있다.
종종 비디오 게임 산업에서는, 광의 흡수 및 확산, 텍스쳐 매핑, 광 연관 및 굴절, 셰도우잉, 표면 변위 및 후처리 효과와 같은 컴퓨터 처리된 이미지의 최종적 표면 특성을 결정하기 위해 버텍스 셰이딩 및 프레그먼트 (픽셀) 셰이딩이 이용된다. GPU 는 통상적인 셰이더 기반 그래픽스 코어에 적어도 3 개의 주요 파이프 라인 스테이지: 버텍스 셰이더 스테이지, 프리미티브 셋업 및 보간 스테이지, 및 프레그먼트 셰이더 스테이지를 포함한다.
버텍스 셰이더는 이미지에 대한 이미지 지오메트리에 적용되어, 그 이미지 지오메트리 내에 버텍스 좌표 및 속성을 발생시킨다. 버텍스 속성은, 예를 들어, 버텍스와 연관된 색, 수직방향 및 텍스쳐 좌표를 포함한다. 프리미티브 셋업 및 제거 모듈은, 이미지 지오메트리 내의 버텍스에 기초하여, 점, 선 또는 삼각형과 같은 프리미티브를 형성하고, 비가시적인 프리미티브를 제거할 것이다. 속성 셋업 모듈은 이미지 지오메트리에 대한 프리미티브 내의 속성의 그레디언트를 연산한다. 속성의 그레디언트 값이 연산되면, 이미지 지오메트리에 대한 프리미티브가 픽셀로 변환될 수도 있고, 숨겨진 프리미티브 및 픽셀 제거가 수행될 수도 있다. 그 후, 속성 보간기가 그 속성의 그레디언트 값에 기초하여, 이미지 지오메트리에 대한 프리미티브 내의 픽셀에 대해 속성을 보간하며, 그 보간된 속성 값을 픽셀 렌더링을 위한 프레그먼트 셰이더에 전송한다. 프레그먼트 셰이더의 결과는 디스플레이 디바이스 상에 프로세싱된 이미지의 프리젠테이션을 위해 후처리 블록 및 프레임 버퍼로 출력될 것이다.
이미지 지오메트리 내의 버텍스의 속성은 GPU 파이프라인을 따라 각각의 프로세싱 스테이지를 통과한다. 따라서, GPU 파이프라인은 대량의 데이터를 이동시켜야 하고, 데이터 스루풋을 충족시키기 위해 넓은 내부 데이터 버스를 요구한다. GPU 파이프라인에서 각각의 프로세싱 스테이지를 통해 대량의 데이터를 이동시키는 것은, 다수의 속성을 포함하는 프리미티브에 대해 병목현상을 발생시킬 수도 있다. 또한, 속성 그레디언트 셋업은 연산 집중적이고, GPU 파이프라인 내에서의 이미지 프로세싱 속도를 감소시킬 수도 있다.
개요
일반적으로, 본 명세서는, 확장된 버텍스 캐시를 이용하여, 컴퓨터 처리된 이미지를 그래픽스 프로세싱 유닛 (GPU) 으로 프로세싱하는 기술에 관한 것이다. 이 기술은, GPU 파이프라인에 커플링된 확장된 버텍스 캐시를 생성하여, GPU 파이프라인을 통과하는 데이터량을 감소시키는 것을 포함한다. GPU 파이프라인은 이미지에 대한 이미지 지오메트리를 수신하고, 그 이미지 지오메트리 내의 버텍스에 대한 속성을 확장된 버텍스 캐시에 저장한다. GPU 파이프라인은, 확장된 버텍스 캐시 내의 각각의 버텍스에 대해 버텍스를 식별하는 버텍스 좌표, 및 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인을 따라 다른 프로세싱 스테이지로 오직 전달하기만 한다. 몇몇 실시형태에서는, GPU 파이프라인이 버텍스 좌표를 확장된 버텍스 캐시에 일시적으로 저장한다.
GPU 는 적어도 3 개의 주요 파이프라인 스테이지: 버텍스 셰이더 스테이지, 프리미티브 셋업 및 보간 스테이지, 및 프레그먼트 셰이더 스테이지를 포함한다. GPU 파이프라인 내의 프리미티브 셋업 및 보간 스테이지는, 버텍스 좌표 또는 버텍스 속성을 이용하는 것을 각각 포함하는 다수의 서브-스테이지를 포함한다. 예를 들어, 프리미티브 셋업 및 프리미티브 제거는 버텍스 좌표만을 이용하여, 프리미티브를 형성하고 그 이미지에 불필요한 프리미티브의 서브세트를 폐기한다. 그러나, 속성 그레디언트 셋업 및 속성 보간은 버텍스 속성을 이용한다. 여기 서 설명하는 기술은 속성 그레디언트의 연산 집중적 셋업을 GPU 파이프라인의 속성 보간 직전으로 연기한다. 버텍스 속성은, GPU 파이프라인에서의 속성 보간 이전에 최종 단계들 중 하나로서 속성 그레디언트 셋업에 대한 확장된 버텍스 캐시로부터 검색될 수도 있다. 따라서, 버텍스 속성은 프리미티브 셋업 및 프리미티브 제거 이후까지 GPU 파이프라인에 도입되지 않는다.
이 방식으로, GPU 파이프라인은, 이미지 지오메트리에 대한 프리미티브, 그 프리미티브 내의 각각의 버텍스를 식별하는 버텍스 좌표, 및 프리미티브 내의 각각의 버텍스에 대한 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 캐시 인덱스 값을 이동시키기만 한다. 이 기술은, 다수의 속성을 포함하는 프리미티브에 대해 GPU 파이프라인에서의 병목현상을 실질적으로 제거할 수 있다. 또한, 이 기술은, 속성 그레디언트 셋업을 GPU 파이프라인의 속성 보간 직전으로 연기함으로써 GPU 파이프라인 내의 이미지 프로세싱 속도를 개선할 수도 있다. 더 상세하게는, 이미지에 필요한 프리미티브의 서브세트에 대해서만 속성 그레디언트 셋업이 수행될 것이기 때문에, GPU 파이프라인 내의 속성 그레디언트 셋섭을 이미지에 불필요한 프리미티브의 서브세트의 제거 이후까지 지연시키는 것은 연산 및 전력 소모를 실질적으로 감소시킬 것이다.
일 실시형태에서, 본 명세서는, GPU 에 포함된 GPU 파이프라인 내의 이미지에 대한 이미지 지오메트리를 수신하는 단계, 및 그 이미지 지오메트리 내의 버텍스에 대한 속성을 GPU 파이프라인에 커플링된 확장된 버텍스 캐시에 저장하는 단계를 포함하는 방법을 제공한다. 이 방법은, 이미지 지오메트리 내의 각각의 버 텍스에 대해 버텍스를 식별하는 버텍스 좌표 및 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여, GPU 파이프라인 내의 이미지를 프로세싱하는 단계를 더 포함한다.
또 다른 실시형태에서, 본 명세서는, 프로그래머블 프로세서로 하여금, GPU 에 포함된 GPU 파이프라인 내의 이미지에 대한 이미지 지오메트리를 수신하게 하고, 그 이미지 지오메트리 내의 버텍스에 대한 속성을 GPU 파이프라인에 커플링된 확장된 버텍스 캐시에 저장하게 하는 명령들을 포함하는 컴퓨터 판독가능 매체를 제공한다. 또한, 이 명령들은, 프로그래머블 프로세서로 하여금, 이미지 지오메트리 내의 각각의 버텍스에 대해 버텍스를 식별하는 버텍스 좌표 및 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여, GPU 파이프라인 내의 이미지를 프로세싱하게 한다.
또 다른 실시형태에서, 본 명세서는, 이미지에 대한 이미지 지오메트리 내의 버텍스를 수신하고, 디스플레이 디바이스 상에 디스플레이하기 위해 그 이미지를 프로세싱하는 GPU 파이프라인, 및 GPU 파이프라인에 커플링되어 그 이미지 지오메트리 내의 버텍스에 대한 속성을 저장하는 확장된 버텍스 캐시를 포함하는 디바이스를 제공한다. GPU 파이프라인은, 이미지 지오메트리 내의 각각의 버텍스에 대해 버텍스를 식별하는 버텍스 좌표 및 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여, 이미지를 프로세싱한다.
또 다른 실시형태에서, 본 명세서는, 이미지에 대한 이미지 지오메트리를 수신하는 프로세싱 수단, 및 그 이미지 지오메트리 내의 버텍스에 대한 속성을 저장 하는 저장 수단을 포함하는 디바이스를 제공한다. 프로세싱 수단은, 이미지 지오메트리 내의 각각의 버텍스에 대해 버텍스를 식별하는 버텍스 좌표 및 저장 수단 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여, 이미지를 프로세싱한다.
여기서 설명하는 기술은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 이 기술이 소프트웨어로 구현되면, 프로세서에 의해 실행되는 경우 여기서 설명한 하나 이상의 방법을 수행하는 명령들을 포함하는 컴퓨터 판독가능 매체에 의해 전체 또는 일부가 실시될 수도 있다.
첨부한 도면 및 다음의 설명에서 하나 이상의 실시형태의 세부사항을 기술한다. 본 발명의 다른 특성, 목적 및 이점은 상세한 설명 및 도면으로부터 그리고 청구항으로부터 명백해질 것이다.
도면의 간단한 설명
도 1 은, 확장된 버텍스 캐시를 이용하여, 컴퓨터 처리된 이미지를 프로세싱하는 기술을 구현하는 그래픽스 프로세싱 유닛 (GPU) 를 포함하는 예시적인 디바이스를 도시하는 블록도이다.
도 2 는 종래의 GPU 내의 GPU 파이프라인을 도시하는 블록도이다.
도 3 은, 도 1 로부터의 예시적인 실시형태의 GPU 이며, GPU 파이프라인 및 그 GPU 파이프라인에 커플링된 확장된 버텍스 캐시를 포함하는 GPU 를 도시하는 블록도이다.
도 4 는, 도 1 로부터의 또 다른 예시적인 실시형태의 GPU 이며, GPU 파이프 라인 및 그 GPU 파이프라인에 커플링된 확장된 버텍스 캐시를 포함하는 GPU 를 도시하는 블록도이다.
도 5 는, 확장된 버텍스 캐시를 이용하여, GPU 내의 이미지를 프로세싱하는 예시적인 동작을 도시하는 흐름도이다.
도 6 은, 확장된 버텍스 캐시를 이용하여, GPU 로 이미지를 프로세싱하는 또 다른 예시적인 동작을 도시하는 흐름도이다.
도 7 은, 이미지 지오메트리 내의 버텍스의 초기 프로세싱을 위한 컴포넌트를 포함하는, 도 3 으로부터의 GPU 를 더 상세히 도시하는 블록도이다.
도 8A 및 도 8B 는, 이미지 지오메트리 내의 버텍스의 초기 프로세싱에 대한 예시적인 동작을 도시하는 흐름도이다.
상세한 설명
도 1 은, 확장된 버텍스 캐시를 이용하여, 컴퓨터 처리된 이미지를 프로세싱하는 기술을 구현하는 그래픽스 프로세싱 유닛 (GPU; 14) 를 포함하는 예시적인 디바이스 (10) 를 도시하는 블록도이다. 도 1 의 예에서, 디바이스 (10) 는 GPU (14) 의 동작을 제어할 수 있는 제어기 (12) 를 포함한다. 또한, 제어기 (12) 는 디바이스 (10) 의 동작을 제어할 수도 있다. 여기서 설명하는 기술에 따르면, GPU (14) 는 GPU 파이프라인 (18) 및 GPU 파이프라인 (18) 에 커플링된 확장된 버텍스 캐시 (16) 를 포함한다. 확장된 버텍스 캐시 (16) 의 통합은 GPU (14) 내의 GPU 파이프라인 (18) 을 통과하는 데이터량을 감소시킬 수도 있다.
GPU (14) 는 디바이스 (10) 내의 제어기 (12) 로부터 이미지에 대한 이미지 지오메트리를 수신한다. 이미지 지오메트리는 복잡한 2 차원 또는 3 차원의 컴퓨터 처리된 그래픽스의 표현에 대응할 수도 있다. GPU (14) 는 이미지 지오메트리를 프로세싱하여, 예를 들어, 이미지 효과, 배경 이미지, 또는 비디오 게임 이미지를 디스플레이 디바이스 (20) 를 통해 디바이스 (10) 의 사용자에게 제공한다. 이미지는 비디오 프레임의 시퀀스에서 비디오 프레임으로서 형성될 수도 있다. 디스플레이 디바이스 (20) 는 액정 디스플레이 (LCD), 음극선관 (CRT) 디스플레이, 플라즈마 디스플레이, 또는 디바이스 (10) 에 커플링되거나 통합되는 다른 타입의 디스플레이 디바이스를 포함할 수도 있다.
몇몇 경우, 제어기 (12) 는 디바이스 (10) 내에서 동작하는 애플리케이션으로부터 이미지 지오메트리를 수신할 수도 있다. 예를 들어, 디바이스 (10) 는, 내부 하드 드라이브 또는 착탈식 데이터 저장 디바이스로부터 수신된 이미지 지오메트리에 기초하여, 비디오 게임 애플리케이션을 동작시키는 연산 디바이스를 포함할 수도 있다. 다른 경우, 제어기 (12) 는 디바이스 (10) 외부에서 동작하는 애플리케이션으로부터 이미지 지오메트리를 수신할 수도 있다. 예를 들어, 디바이스 (10) 는, 인터넷과 같은 유선 또는 무선 네트워크를 통해 외부 서버로부터 수신된 이미지 지오메트리에 기초하여, 비디오 게임 애플리케이션을 동작시키는 연산 디바이스를 포함할 수도 있다. 이미지 지오메트리는, 유선, 무선, 또는 유/무선 조합일 수도 있는 스트리밍 매체 또는 브로드캐스트 매체를 통해 수신될 수도 있다.
디바이스 (10) 의 사용자가 이미지 효과를 트리거링하거나, 배경 이미지를 선택하거나, 비디오 게임을 개시하는 경우, 제어기 (12) 는 애플리케이션으로부터 대응하는 이미지 지오메트리를 수신하고, 그 이미지 지오메트리를 GPU (14) 에 전송한다. GPU (14) 는 그 이미지 지오메트리를 프로세싱하여, 디스플레이 디바이스 (20) 상의 프리젠테이션을 위해 대응 이미지를 준비한다. 예를 들어, GPU (14) 는, 점, 선 및 삼각형을 형성하는 것과 같은 다수의 프리미티브 그래픽스 동작을 구현하여, 그 수신된 이미지 지오메트리에 의해 디스플레이 디바이스 (20) 상에 표현되는 3 차원 이미지를 생성할 수도 있다.
여기서 설명하는 기술에 따르면, GPU 파이프라인 (18) 은 이미지에 대한 이미지 지오메트리를 수신하고, 그 이미지 지오메트리 내의 버텍스에 대한 속성을 확장된 버텍스 캐시 (16) 에 저장한다. GPU 파이프라인 (18) 은, 버텍스를 식별하는 버텍스 좌표, 및 확장된 버텍스 캐시 (16) 내의 각각의 버텍스에 대한 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을, GPU 파이프라인 (18) 을 따라 다른 프로세싱 스테이지로 오직 전달하기만 한다. 몇몇 실시형태에서, GPU 파이프라인 (18) 은 버텍스 좌표를 확장된 버텍스 캐시 (16) 에 일시적으로 저장한다. 이 방식으로, GPU 파이프라인 (18) 은 스테이지들 사이에서 버텍스 속성의 전달에 의해 방해되지 않고, 증가된 스루풋을 지원할 수 있다. 버텍스 좌표는, 예를 들어, 이미지 지오메트리 내의 버텍스의 위치를 식별하는 X, Y 및 Z (폭, 높이 및 깊이) 좌표 및 이미지 지오메트리에 대한 원근 (perspective) 파라미터를 포함하는 W 좌표를 갖는 4 차원 좌표 시스템에 기초하여, 이미지 지오메트리 내의 버텍스를 식별한다. 버텍스 속성은, 예를 들어, 버텍스와 연관된 색, 수직방향 및 텍스쳐 좌표를 포함할 수도 있다.
GPU (14) 내의 GPU 파이프라인 (18) 은 적어도 3 개의 주요 파이프라인 스테이지: 버텍스 셰이더 스테이지, 프리미티브 셋업 및 보간 스테이지, 및 프레그먼트 셰이더 스테이지를 포함한다. GPU 파이프라인 (18) 의 프리미티브 셋업 및 보간 스테이지는, 버텍스 좌표 또는 버텍스 속성을 이용하는 함수를 각각 수행하는 다수의 서브-스테이지를 포함한다. 예를 들어, 프리미티브 셋업 및 프리미티브 제거는 오직 버텍스 좌표만을 이용하여, 프리미티브를 형성하고 이미지에 불필요한 프리미티브의 서브세트를 폐기한다. 프리미티브는, 점, 선, 삼각형 및 다른 다각형을 포함하는 가장 단순한 타입의 기하학적 도형이며, 이미지 지오메트리 내의 하나 이상의 버텍스로 형성될 수도 있다. 프리미티브 또는 프리미티브의 일부는, 그 프리미티브 또는 프리미티브의 일부가 이미지 프레임 내에서 비가시적인 경우 (예를 들어, 객체의 후면에 위치된 경우) 또는 이미지 프레임 내에서 숨겨진 경우 (또 다른 객체의 뒤에 위치되거나 투명한 경우), 이미지의 특정 프레임의 프로세싱 동안 고려되지 않고 제거될 수도 있다.
또 다른 예로, 속성 그레디언트 셋업 및 속성 보간은 버텍스 속성을 이용하여, 속성 그레디언트 값을 연산하고, 그 속성 그레디언트 값에 기초하여 속성을 보간한다. 본 명세서에서 설명하는 기술은 속성 그레디언트의 연산 집중적 셋업을 GPU 파이프라인 (18) 에서 속성 보간 직전으로 연기한다. 버텍스 속성은, GPU 파이프라인 (18) 의 속성 보간 이전의 최종 단계들 중 하나로서 속성 그레디언트 셋업에 대한 확장된 버텍스 캐시 (16) 로부터 검색될 수도 있다. 이 방법으 로, 버텍스 속성은, 프리미티브 셋업 및 프리미티브 제거 이후까지 GPU 파이프라인 (18) 에 도입되지 않는다.
이미지 지오메트리 내의 버텍스에 대한 속성을 확장된 버텍스 캐시 (14) 에 저장하는 것은, 이미지 지오메트리에 대한 프리미티브, 프리미티브 내의 각각의 버텍스를 식별하는 버텍스 좌표, 및 프리미티브 내의 각각의 버텍스에 대한 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18) 이 이동시키기만 하는 것을 가능하게 한다. GPU 파이프라인 (18) 으로부터 대량의 속성 데이터를 제거하는 것은, 다수의 속성을 포함하는 프리미티브에 대한 GPU 파이프라인 (18) 에서의 병목현상을 실질적으로 제거할 수도 있다. 또한, 속성 그레디언트 셋업을 GPU 파이프라인 (18) 에서의 속성 보간 직후로 연기하는 것은 GPU 파이프라인 (18) 에서의 이미지 프로세싱 속도를 개선시킬 수도 있다. 더 상세하게는, 속성 그레디언트 셋업이 이미지에 대해 필요한 프리미티브의 셋업에 대해서만 수행될 것이기 때문에, GPU 파이프라인 (18) 내의 속성 그레디언트 셋업을 이미지에 대해 불필요한 프리미티브의 서브세트의 제거 이후까지 연기하는 것은 연산 및 전력 소모를 실질적으로 감소시킬 것이다.
도 1 에 도시된 실시형태에서, 디스플레이 디바이스 (20) 는 디바이스 (10) 로부터의 개별 디바이스를 포함한다. 디스플레이 디바이스 (20) 는 무선으로 또는 유선 접속으로 디바이스 (10) 에 커플링될 수도 있다. 예를 들어, 디바이스 (10) 는 서버 또는 무선 통신 서비스 제공자의 기타 연산 디바이스를 포함할 수도 있고, 디스플레이 디바이스 (20) 는 무선 통신 디바이스 내에 포함될 수도 있 다. 이 경우, 예를 들어, 디스플레이 디바이스 (20) 는, 무선 전화기, 위성 무선 전화기, 무선 통신 카드를 갖는 휴대용 컴퓨터, 무선 통신 기능을 갖는 개인 휴대 정보 단말기 (PDA), 또는 무선 통신이 가능한 다양한 디바이스들 중 임의의 디바이스 내의 디스플레이를 포함할 수도 있다. 또 다른 예로, 디바이스 (10) 는 유선 네트워크를 통해 디스플레이 디바이스 (20) 에 접속되는 서버 또는 기타 연산 디바이스를 포함할 수도 있고, 디스플레이 디바이스 (20) 는 유선 통신 디바이스 또는 원칙적으로 통신에 의도되지 않은 디바이스 내에 포함될 수도 있다.
다른 실시형태에서, 디스플레이 디바이스 (20) 는 디바이스 (10) 내에 통합될 수도 있다. 예를 들어, 디바이스 (10) 는 무선 통신 디바이스를 포함할 수도 있고, 디스플레이 디바이스 (20) 는 무선 통신 디바이스 내에 디스플레이를 포함할 수도 있다. 또 다른 예로, 디바이스 (10) 는 데스크탑 또는 노트북 컴퓨터를 포함할 수도 있고, 디스플레이 디바이스 (20) 는 전용 모니터 또는 컴퓨터의 디스플레이를 포함할 수도 있다. 또한, 디바이스 (10) 는 유선 통신 디바이스 또는 원칙적으로 통신에 의도되지 않은 디바이스를 포함할 수도 있고, 디스플레이 디바이스 (20) 는 그 디바이스 내에 디스플레이를 포함할 수도 있다. 예를 들어, 디바이스 (10) 는, 디스플레이 디바이스 (20) 를 포함하는 PDA 또는 핸드헬드 비디오 게임 디바이스를 포함할 수도 있다. 따라서, 다양한 실시형태에서, 컴퓨터 처리된 비디오 이미지는, 각각 비디오 또는 비디오 객체를 생성하는 비디오 서버, 또는 저장된 비디오 또는 비디오 객체를 검색하는 비디오 아카이브일 수도 있는 원격 디바이스 또는 로컬 디바이스로부터 획득될 수도 있다.
도 2 는 종래의 GPU (21) 내의 GPU 파이프라인 (22) 을 도시하는 블록도이다. 종래의 GPU (21) 는 도 1 로부터의 디바이스 (10) 와 실질적으로 유사한 디바이스 내에 포함될 수도 있다. GPU 파이프라인 (22) 은, 커맨드 엔진 (24), 버텍스 셰이더 (26), 프리미티브 셋업 및 제거 모듈 (28), 속성 그레디언트 셋업 모듈 (30), 래스터라이저 (31), 숨겨진 프리미티브 및 픽셀 제거 모듈 (32), 속성 보간기 (34), 프레그먼트 셰이더 (36), 및 후처리기 (38) 를 포함한다. 커맨드 엔진 (24) 은, 종래의 GPU (21) 에 상주하는 디바이스의 제어기로부터 이미지 지오메트리 및 이미지에 대한 렌더링 커맨드를 수신한다. 이미지 지오메트리는 복잡한 2 차원 또는 3 차원의 컴퓨터 처리된 그래픽스의 표현에 대응할 수도 있다. 커맨드 엔진 (24) 은 그 이미지 지오메트리 및 렌더링 커맨드를 GPU 파이프라인 (22) 을 따라 다른 프로세싱 스테이지로 전달한다.
GPU 파이프라인 (22) 은 적어도 3 개의 주요 파이프라인 스테이지: 버텍스 셰이더 스테이지, 프리미티브 셋업 및 보간 스테이지, 및 프레그먼트 셰이더 스테이지를 포함한다. 버텍스 셰이더 (26) 가 이미지 지오메트리에 적용되어, 그 이미지 지오메트리 내의 버텍스에서 이미지의 표면 특성을 결정한다. 이 방식으로, 버텍스 셰이더 (26) 는 이미지 지오메트리 내의 버텍스 각각의 버텍스 좌표 및 속성을 발생시킨다. 버텍스 좌표는, 예를 들어, 이미지 지오메트리 내의 버텍스의 위치를 식별하는 X, Y 및 Z (폭, 높이 및 깊이) 좌표 및 이미지 지오메트리에 대한 원근 파라미터를 포함하는 W 좌표를 갖는 4 차원 좌표 시스템에 기초하여, 이미지 지오메트리 내의 버텍스를 식별한다. 버텍스 속성은, 예를 들어, 버텍 스와 연관된 색, 수직방향 및 텍스쳐 좌표를 포함할 수도 있다. 또한, 통상적인 GPU (21) 내의 버텍스 셰이더 (26) 는 집적된 버텍스 캐시를 포함할 수도 있다.
GPU 파이프라인 (26) 의 프리미티브 셋업 및 보간 스테이지는, 각각 버텍스 좌표 또는 버텍스 속성을 이용하여 이미지 지오메트리를 프로세싱하는, 서브 스테이지, 프리미티브 셋업 및 제거 모듈 (28), 속성 그레디언트 셋업 모듈 (30), 래스터라이저 (31), 숨겨진 프리미티브 및 픽셀 제거 모듈 (32) 및 속성 보간기 (34) 를 포함한다. GPU 파이프라인 (22) 의 다른 프로세싱 스테이지가 필요한 입력을 수신하기 위해, 이미지 지오메트리 내의 모든 버텍스의 버텍스 좌표 및 버텍스 속성은 GPU 파이프라인 (22) 을 따라 통과된다. 따라서, GPU 파이프라인 (22) 은 대용량의 데이터를 이동시켜야 하며, 이것은, 데이터 스루풋을 충족시키기 위해 종래의 GPU (21) 가 넓은 내부 데이터 버스를 포함할 것을 요구한다. 또한, 선입선출 (FIFO; first in first out) 버퍼 및 다른 타입의 버퍼가 GPU 파이프라인 (22) 의 프로세싱 스테이지 각각 사이에 포함되어, 버텍스 속성을 저장함으로써 파이프라인 스테이지들을 밸런싱한다.
프리미티브 셋업 및 제거 모듈 (28) 은 이미지 지오메트리 내의 하나 이상의 버텍스로 프리미티브를 형성한다. 프리미티브는 가장 단순한 타입의 기하학적 도형이고, 점, 선, 삼각형 및 다른 다각형을 포함할 수도 있다. 또한, 프리미티브 셋업 및 제거 모듈 (28) 은, 프리미티브 내의 버텍스의 XY 좌표를 이용하여 시저링 (scissoring) 및 백페이스 컬링 (backface culling) 을 수행함으로써 프리미티브를 제거할 수도 있다. 시저링 및 백페이스 컬링은, 프리미티브 및 프리 미티브의 일부가 이미지 프레임 내에서 비가시적인 경우, 그 이미지의 특정 프레임의 프로세싱 동안 그 프리미티브 및 프리미티브의 일부를 고려하지 않는다. 예를 들어, 그 프리미티브 및 프리미티브의 일부는 이미지 프레임 내의 객체 후면에 위치될 수도 있다. 프리미티브 셋업 및 제거 모듈 (28) 은 그 이미지 지오메트리 내의 제거된 프리미티브와 연관된 버텍스의 속성을 고려하지 않을 수도 있다. GPU 파이프라인 (22) 의 프로세싱 스테이지 각각을 통해 버텍스 속성을 이동시키는 것은, 다수의 속성을 포함하는 프리미티브에 대해 병목현상을 생성할 수도 있다.
속성 그레디언트 셋업 모듈 (30) 은 이미지 지오메트리에 대한 프리미티브와 연관된 속성의 그레디언트를 연산한다. 속성 그레디언트는 수평 (X) 방향 또는 수직 (Y) 방향에서 이동하는 프리미티브 내에서 제 1 픽셀에서의 속성 값과 제 2 픽셀에서의 속성 값 사이의 차를 포함한다. 속성 그레디언트 셋업 모듈 (30) 은 그 버텍스 속성을 이용하여 속성 그레디언트를 연산한다. 속성 그레디언트 셋업 프로세싱 단계는 연산 집중적이고, GPU 파이프라인 (22) 내의 이미지 프로세싱을 느리게 할 수도 있다. 속성 그레디언트 셋업 레이트는 프리미티브 내에 포함된 픽셀의 수에 무관하게 프리미티브와 연관된 버텍스 속성의 수에 크게 의존한다.
속성 그레디언트 값이 연산되면, 래스터라이저 (31) 는 프리미티브 내의 각각의 버텍스의 XY 좌표 및 그 프리미티브에 포함된 픽셀의 수에 기초하여, 이미지 지오메트리에 대한 프리미티브를 픽셀로 변환한다. 숨겨진 프리미티브 및 픽셀 제거 모듈 (32) 은 프리미티브 내의 버텍스의 Z 촤표에 기초한 초기 깊이 및 스텐실 테스트 (early depth and stencil test) 를 이용하여, 숨겨진 프리미티브 및 프리미티브 내의 숨겨진 픽셀을 제거한다. 프리미티브 또는 프리미티브 내의 픽셀은 숨겨진 것으로 고려될 수도 있고, 그 프리미티브 또는 프리미티브 내의 픽셀이 이미지 프레임 내에서 또 다른 객체 뒤에 존재하거나 그 이미지 프레임 내에서 투명한 경우, 그 이미지의 특정 프레임을 프로세싱하는 동안 고려되지 않을 수도 있다.
속성 보간기 (34) 는 속성 그레디언트 값에 기초하여 프리미티브 내의 픽셀에 대해 속성을 보간한다. 속성 보간기 (34) 는 이미지 지오메트리 내의 제거된 프리미티브와 연관된 버텍스의 속성을 폐기할 수도 있다. 그 후, 보간된 속성 값은 프레그먼트 셰이더 (36) 에 입력되어, 그 프리미티브의 픽셀 렌더링을 수행한다. 프레그먼트 셰이더 (36) 는 이미지 지오메트리에 대한 프리미티브 내의 픽셀에서 그 이미지의 표면 특성을 결정한다. 프레그먼트 셰이더 (36) 의 결과는 프로세싱된 이미지의 디스플레이 디바이스 상에서의 표현을 위해 후처리기 (38) 에 출력될 것이다.
도 3 은, GPU 파이프라인 (18A) 및 GPU 파이프라인 (18A) 에 커플링된 확장된 버텍스 캐시 (16A) 를 포함하며, 도 1 의 GPU (14) 의 예시적인 실시형태인 GPU (14A) 를 도시하는 블록도이다. GPU (14A) 내의 확장된 버텍스 캐시 (16A) 를 이용하는 것은, GPU (14A) 내의 GPU 파이프라인 (18A) 을 통과하는 데이터량을 감소시킬 수도 있다. 이 예시적인 실시형태에서, GPU 파이프라인 (18A) 은, 커맨 드 엔진 (42), 버텍스 셰이더 (44), 프리미티브 셋업 및 제거 모듈 (46), 래스터라이저 (48), 숨겨진 프리미티브 및 픽셀 제거 모듈 (50), 속성 그레디언트 모듈 (52), 속성 보간기 (54), 프레그먼트 셰이더 (56) 및 후처리기 (58) 를 포함한다.
커맨드 엔진 (42) 은 디바이스 (10) 의 제어기 (12) 로부터 이미지 지오메트리 및 이미지에 대한 렌더링 커맨드를 수신한다. 이미지 지오메트리는 복잡한 2 차원 또는 3 차원의 컴퓨터 처리된 그래픽스의 표현에 대응할 수도 있다. 커맨드 엔진 (42) 은, 확장된 버텍스 캐시 (16A) 에 포함되지 않은, 이미지 지오메트리 내의 버텍스 ("미싱된 버텍스") 에 대한 정보를 버텍스 셰이더 (44) 로 전달한다. 커맨드 엔진 (42) 은, 확장된 버텍스 캐시 (16A) 에 이미 포함된, 이미지 지오메트리 내의 버텍스 ("히트된 버텍스") 에 대한 정보를 프리미티브 셋업 및 제거 모듈 (46) 로 전달한다. 이미지 지오메트리 내의 히트된 버텍스 및 미싱된 버텍스의 초기 프로세싱을 이하 상세히 기술한다.
GPU 파이프라인 (18A) 은 적어도 3 개의 주요 파이프라인 스테이지: 버텍스 셰이더 스테이지, 프리미티브 셋업 및 보간 스테이지, 및 프레그먼트 셰이더 스테이지를 포함한다. 버텍스 셰이더 (44) 는 이미지 지오메트리 내의 미싱된 버텍스에 적용되고, 이미지 지오메트리 내의 그 미싱된 버텍스에서 이미지의 표면 특성을 결정한다. 이 방식으로, 버텍스 셰이더 (44) 는 이미지 지오메트리 내의 미싱된 버텍스 각각의 버텍스 좌표 및 속성을 발생시킨다. 그 후, 버텍스 셰이더 (44) 는 그 미싱된 버텍스에 대한 속성을 확장된 버텍스 캐시 (16A) 에 저장한다. 히트된 버텍스 각각의 버텍스 좌표 및 속성은 이미 발생되어 확장된 버텍스 캐 시 (16A) 에 저장되어 있기 때문에, 이미지 지오메트리 내의 히트된 버텍스 각각에 대해서는 버텍스 셰이더 (44) 가 적용되지 않는다.
버텍스 좌표는, 예를 들어, 이미지 지오메트리 내의 버텍스의 위치를 식별하는 X, Y 및 Z (폭, 높이 및 깊이) 좌표 및 이미지 지오메트리에 대한 원근 파라미터를 포함하는 W 좌표를 갖는 4 차원 좌표 시스템에 기초하여, 이미지 지오메트리 내의 버텍스를 식별한다. 버텍스 속성은, 예를 들어, 버텍스와 연관된 색, 수직방향 및 텍스쳐 좌표를 포함할 수도 있다. 확장된 버텍스 캐시 (16A) 는 상이한 수의 속성 및 프리미티브 타입에 대해 용이하게 구성될 수도 있다. 그 후, 이미지 지오메트리의 히트된 버텍스 및 미싱된 버텍스 모두에 대한 버텍스 좌표 및 속성의 확장된 버텍스 캐시 (16A) 내에서의 저장 위치를 나타내는 버텍스 캐시 인덱스 값이, 커맨드 엔진 (42) 과 프리미티브 셋업 및 제거 모듈 (46) 사이에 위치된 FIFO 버퍼 (미도시) 에 배치된다.
GPU 파이프라인 (18A) 의 프리미티브 셋업 및 보간 스테이지는, 각각 버텍스 좌표 또는 버텍스 속성을 이용하여 이미지 지오메트리를 프로세싱하는, 서브스테이지, 프리미티브 셋업 및 제거 모듈 (46), 래스터라이저 (48), 숨겨진 프리미티브 및 픽셀 제거 모듈 (50), 속성 그레디언트 셋업 모듈 (52), 및 속성 보간기 (54) 를 포함한다. 예를 들어, 프리미티브 셋업 및 제거 모듈 (46), 래스터라이저 (48), 및 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 는 버텍스 좌표만을 이용한다. 그러나, 속성 그레디언트 셋업 모듈 (52) 및 속성 보간기 (54) 는 버텍스 속성을 이용한다. 따라서, 속성 그레디언트 셋업 모듈 (52) 은 GPU 파이프라인 (18A) 에서 속성 보간기 (54) 직전까지 연기된다. 버텍스 속성은, 속성 보간기 (54) 로 속성을 보간하기 이전에 GPU 파이프라인 (18A) 의 마지막 단계들 중 하나로서 속성 그레디언트 셋업 모듈 (52) 에 대한 확장된 버텍스 캐시 (16A) 로부터 검색될 수도 있다. 이 방식으로, 버텍스 속성은, 프리미티브 및 픽셀 제거 모듈 (50) 이후 속성 보간기 (54) 직전까지 GPU 파이프라인 (18A) 에 도입되지 않아서 효율성에서 현저한 이득을 제공한다.
이미지 지오메트리 내의 버텍스에 대한 버텍스 속성을 확장된 버텍스 캐시 (16A) 에 저장하는 것은, 대량의 데이터가 GPU 파이프라인 (18A) 을 통과하는 것을 제거하여, GPU (14A) 에 포함된 내부 데이터 버스의 폭을 감소시킨다. 또한, 데이터 이동량을 감소시키는 것은 GPU (18A) 내의 전력 소비를 감소시킬 수도 있다. 또한, 커맨드 엔진 (42) 과 프리미티브 셋업 및 제거 모듈 (46) 사이에 위치된 FIFO 버퍼를 제외하고, 각각의 프로세싱 스테이지들 사이에 위치된 FIFO 버퍼들 또는 다른 타입의 버퍼들이 GPU 파이프라인 (18A) 으로부터 제거되어 디바이스 (10) 내의 GPU (14A) 의 영역을 감소시킬 수도 있다.
프리미티브 셋업 및 제거 모듈 (46) 은 FIFO 버퍼로부터 이미지 지오메트리의 버텍스 각각의 속성에 대한 버텍스 캐시 인덱스 값을 수신한다. 그 후, 프리미티브 셋업 및 제거 모듈 (46) 은 그 버텍스 캐시 인덱스 값을 이용하여, 이미지 지오메트리 내의 버텍스 각각에 대한 버텍스 좌표를 검색한다. 프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리 내의 하나 이상의 버텍스로 프리미티브를 형성한다. 프리미티브는 가장 단순한 타입의 기하학적 도형이고, 점, 선, 삼각형 및 기타 다각형을 포함할 수도 있다.
또한, 프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리 내의 버텍스의 XY 좌표를 이용하여, 시저링 및 백페이스 컬링을 수행함으로써 프리미티브를 제거할 수도 있다. 시저링 및 백페이스 컬링은, 프리미티브 및 프리미티브의 위치가 이미지 프레임 내에서 비가시적인 경우, 그 이미지의 특정 프레임의 프로세싱 동안 프리미티브 및 프리미티브의 위치를 고려하지 않는다. 예를 들어, 프리미티브 및 프리미티브의 위치는 이미지 프레임 내의 객체 후면에 위치될 수도 있다. 프리미티브 셋업 및 제거 모듈 (46) 은 확장된 버텍스 캐시 (16A) 를 요청하여, 그 제거된 프리미티브와 연관된 속성에 대한 저장 공간을 릴리스할 수도 있다. 이미지 지오메트리에 대한 프리미티브, 그 프리미티브와 연관된 버텍스 좌표, 및 프리미티브 내의 버텍스 각각에 대한 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18A) 을 통해 이동시키는 것만으로, 다수의 속성을 포함하는 프리미티브에 대한 GPU 파이프라인 (18A) 에서의 병목현상을 실질적으로 제거할 수 있다.
래스터라이저 (48) 는, 프리미티브 내의 버텍스의 XY 좌표 및 그 프리미티브에 포함된 픽셀의 수에 기초하여, 이미지 지오메트리에 대한 프리미티브를 픽셀로 변환한다. 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 은, 프리미티브 내의 버텍스의 Z 좌표에 기초하여, 초기 깊이 및 스텐실 테스트를 이용하여 프리미티브 내의 숨겨진 프리미티브 및 숨겨진 픽셀을 제거한다. 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 이 프리미티브 내의 모든 픽셀을 제거하면, 프리미티브는 자동으로 제거된다. 프리미티브 또는 프리미티브 내의 픽셀이 이미지 프레임 내에서 또 다른 객체 뒤에 위치된 경우 또는 그 이미지 프레임 내에서 투명한 경우, 프리미티브 또는 프리미티브 내의 픽셀은 숨겨진 것으로 고려될 수도 있고, 그 이미지의 특정 프레임의 프로세싱 동안 고려되지 않을 수도 있다. 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 은 확장된 버텍스 캐시 (16A) 에 요청하여, 그 제거된 프리미티브에 연관된 속성에 대한 저장 공간을 릴리스할 수도 있다.
통상적으로, 프리미티브 셋업 및 제거 모듈 (46) 에 의해 수행된 시저링 및 백페이스 컬링, 및 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 에 의해 수행된 초기 깊이 및 스텐실 테스트에 의해 큰 비율의 프리미티브가 제거된다. 따라서, 모든 프리미티브 제거가 수행된 이후까지 속성 그레디언트 셋업을 연기하는 것은, 이미지에 불필요한 프리미티브의 서브세트와 연관된 속성에 대한 속성 그레디언트 연산을 제거한다.
속성 그레디언트 셋업 모듈 (52) 은, 프리미티브 내의 버텍스 각각에 대한 버텍스 캐시 인덱스 값을 이용하여, 확장된 버텍스 캐시 (16A) 로부터 버텍스 속성을 검색한다. 속성 그레디언트 셋업 모듈 (52) 은 이미지 지오메트리에 대한 프리미티브와 연관된 속성의 그레디언트를 연산한다. 속성 그레디언트는 수평 (X) 방향 또는 수직 (Y) 방향에서 이동하는 프리미티브 내에서 제 1 픽셀에서의 속성 값과 제 2 픽셀에서의 속성 값 사이의 차를 포함한다. 속성 그레디언트 셋업 모듈 (52) 이 이미지 지오메트리에 대한 프리미티브 내의 모든 버텍스의 언트리뷰트의 그레디언트를 연산한 이후, 속성 그레디언트 셋업 모듈 (52) 은 확장된 버텍스 캐시 (16A) 에 요청하여, 프리미티브 내의 버텍스의 속성에 대한 저장 공간을 릴리스할 수도 있다.
속성 그레디언트 값이 연산되면, 속성 보간기 (54) 는 그 속성 그레디언트 값에 기초하여 프리미티브 내의 픽셀에 대해 속성을 보간한다. 그 후, 보간된 속성 값은 프레그먼트 셰이더 (56) 에 입력되어, 프리미티브의 픽셀 렌더링을 수행한다. 프레그먼트 셰이더 (56) 는 이미지 지오메트리에 대한 프리미티브 내의 픽셀에서 이미지의 표면 특성을 결정한다. 프레그먼트 셰이더 (56) 의 결과는 이미지 디바이스 (20) 상에서의 프로세싱된 이미지의 프리젠테이션을 위해 후처리기 (58) 에 출력될 것이다.
연산 집중적인 속성 그레디언트 셋업 프로세싱 단계를 GPU 파이프라인 (18A) 의 속성 보간 직전까지 연기하는 것은 GPU 파이프라인 (18A) 내의 이미지 프로세싱 속도를 개선시키고 GPU (14A) 내의 전력 소모를 감소시킬 수도 있다. 또한, 속성 그레디언트 셋업 프로세싱 단계를 GPU 파이프라인 (18A) 의 속성 보간 직전까지 연기하는 것은 GPU 파이프라인 (18A) 내의 프로세싱 스테이지들 사이에 저장 버퍼에 대한 필요성을 제거하여, 대량의 데이터에 기인한 래스터라이저 및 프리미티브 제거 프로세싱 단계의 레이턴시를 보상한다. 연기된 속성 그레디언트 셋업 모듈 (52) 은 속성 보간기 (54) 와 산술 논리 유닛 (ALU) 을 공유하여 게이트를 절약할 수도 있다. GPU (14A) 는 더 적은 게이트를 이용할 수도 있고, 또는 현재 게이트에 대한 효율성을 개선시킬 수도 있다.
몇몇 경우, 버텍스 셰이더 (44) 는 이미지 지오메트리 내의 미싱된 버텍스에는 적용되지 않을 수도 있다. 이미지 지오메트리 내의 모든 버텍스의 버텍스 좌표 및 속성이 GPU 파이프라인 (18A) 의 외부에서 결정된다고 가정할 수도 있다. 따라서, 미싱된 버텍스에 의해 형성된 프리미티브는 그 미싱된 버텍스의 속성을 계산하기 위해 버텍스 셰이더 (44) 를 요구하지 않는다. 이 경우, 확장된 버텍스 캐시 (16A) 는 확장된 버텍스 버퍼로서 동작할 수도 있다. 커맨드 엔진 (42) 은, 확장된 버텍스 버퍼 내의 속성에 대한 저장 위치를 식별하는 버텍스 인덱스 값을 할당할 수도 있고, 이미지 지오메트리 내의 버텍스 각각의 미리 결정된 버텍스 좌표 및 속성을 확장된 버텍스 버퍼에 전송할 수도 있다.
도 4 는, GPU 파이프라인 (18B) 및 GPU 파이프라인 (18B) 에 커플링된 확장된 버텍스 캐시 (16B) 를 포함하며, 도 1 의 GPU (14) 의 또 다른 예시적인 실시형태인 GPU (14B) 를 도시하는 블록도이다. 이 예시적인 실시형태에서, GPU 파이프라인 (18B) 은 커맨드 엔진 (62), 버텍스 셰이더 (64), 프리미티브 셋업 및 제거 모듈 (66), 래스터라이저 (68), 숨겨진 프리미티브 및 픽셀 제거 모듈 (70), 속성 그레디언트 셋업 모듈 (72), 속성 보간기 (74), 프레그먼트 셰이더 (76) 및 후처리기 (78) 를 포함한다. 도 4 에 도시된 GPU (14B) 는, 이미지 지오메트리의 버텍스의 초기 프로세싱을 제외하고는 도 3 에 도시된 GPU (14A) 와 실질적으로 동일하게 동작할 수도 있다.
커맨드 엔진 (62) 은 디바이스 (10) 의 제어기 (12) 로부터 이미지에 대한 이미지 지오메트리 및 렌더링 커맨드를 수신한다. 커맨드 엔진 (62) 은 이미지 지오메트리 및 렌더링 커맨드를 GPU 파이프라인 (18B) 을 따라 다른 프로세싱 스테이지로 전달한다. 즉, 커맨드 엔진 (62) 은 이미지 지오메트리 내의 모든 버텍 스에 대한 정보를 버텍스 셰이더 (64) 로 전달한다.
본 실시형태에서, 버텍스 셰이더 (64) 는 이미지 지오메트리 내의 모든 버텍스에 적용된다. 버텍스 셰이더 (64) 는 이미지 지오메트리에 적용되고, 그 이미지 지오메트리 내의 버텍스에서 이미지의 표면 특성을 결정한다. 이 방식으로, 버텍스 셰이더 (64) 는 이미지 지오메트리 내의 버텍스 각각의 버텍스 좌표 및 속성을 발생시킨다. 그 후, 버텍스 셰이더 (64) 는 그 속성만을 확장된 버텍스 캐시 (16B) 에 저장한다. 버텍스 셰이더 (64) 는, 이미지 지오메트리의 버텍스 각각에 대한 확장된 버텍스 캐시 (16B) 내의 속성의 저장 위치를 나타내는 버텍스 좌표 및 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18B) 을 따라 전달한다.
버텍스 셰이더 (64) 가 이미지 지오메트리의 버텍스에 대한 버텍스 좌표 및 버텍스 캐시 인덱스 값을 프리미티브 셋업 및 제거 모듈 (66) 에 직접 전달하기 때문에, 각각의 프로세싱 스테이지들 사이에 위치된 모든 FIFO 버퍼 또는 다른 타입의 버퍼들이 GPU 파이프라인 (18B) 으로부터 제거될 수도 있다. 프리미티브 셋업 및 제거 모듈 (66) 은 이미지 지오메트리 내의 하나 이상의 버텍스로 프리미티브를 형성한다. 또한, 프리미티브 셋업 및 제거 모듈 (66) 은, 이미지 지오메트리 내의 버텍스의 XY 좌표를 이용하여 시저링 및 백페이스 컬링을 수행함으로써 프리미티브를 제거할 수도 있다. 프리미티브 셋업 및 제거 모듈 (46) 은 확장된 버텍스 캐시 (16B) 에 요청하여, 그 제거된 프리미티브와 연관된 속성에 대한 저장 공간을 릴리스할 수도 있다.
래스터라이저 (68) 는 프리미티브에 포함된 버텍스의 XY 좌표 및 프리미티브 에 포함된 픽셀의 수에 기초하여 이미지 지오메트리에 대한 프리미티브를 픽셀로 변환한다. 숨겨진 프리미티브 및 픽셀 제거 모듈 (70) 은 프리미티브 내의 버텍스의 Z 좌표에 기초하여, 초기 깊이 및 스텐실 테스트를 이용하여, 숨겨진 프리미티브 및 프리미티브 내의 숨겨진 픽셀을 제거한다. 숨겨진 프리미티브 및 픽셀 제거 모듈 (70) 은 확장된 버텍스 캐시 (16B) 에 요청하여, 그 제거된 프리미티브와 연관된 속성에 대한 저장 공간을 릴리스할 수도 있다.
속성 그레디언트 셋업 모듈 (72) 은, 프리미티브 내의 버텍스 각각에 대한 버텍스 캐시 인덱스 값을 이용하여, 확장된 버텍스 캐시 (16B) 로부터 버텍스 속성을 검색한다. 속성 그레디언트 셋업 모듈 (72) 은 이미지 지오메트리에 대한 프리미티브와 연관된 속성의 그레디언트를 연산한다. 속성 그레디언트 셋업 모듈 (72) 은 이미지 지오메트리에 대한 프리미티브 내의 모든 버텍스의 속성의 그레디언트를 연산하고, 속성 그레디언트 셋업 모듈 (72) 은 확장된 버텍스 캐시 (16B) 에 요청하여, 그 프리미티브 내의 버텍스의 속성에 대한 저장 공간을 릴리스할 수도 있다.
속성 그레디언트가 연산되면, 속성 보간기 (74) 는 속성 그레디언트 값에 기초하여 그 프리미티브 내의 픽셀에 대해 속성을 보간한다. 그 후, 보간된 속성 값은 프리미티브의 픽셀 렌더링을 수행하기 위해 프레그먼트 셰이더 (76) 에 입력된다. 프레그먼트 셰이더 (76) 는 이미지 지오메트리에 대한 프리미티브 내의 픽셀에서 이미지의 표면 특성을 결정한다. 프레그먼트 셰이더 (76) 의 결과는 디스플레이 디바이스 (20) 상의 프로세싱된 이미지의 프리젠테이션을 위해 후처리 기 (78) 에 출력될 것이다.
도 5 는, 확장된 버텍스 캐시를 이용하여 GPU 내의 이미지를 프로세싱하는 예시적인 동작을 도시하는 흐름도이다. 이 동작을 도 1 의 GPU (14) 를 참조하여 기술한다. 확장된 버텍스 캐시 (16) 는 디바이스 (10) 의 제조동안 GPU (14) 내에서 생성되고 GPU 파이프라인 (18) 에 커플링될 수도 있다 (80). 확장된 버텍스 캐시 (16) 는 상이한 수의 속성 및 프리미티브 타입에 대해 용이하게 구성될 수도 있다.
GPU (14) 는 디바이스 (10) 의 제어기 (12) 로부터 이미지에 대한 이미지 지오메트리 및 렌더링 커맨드를 수신한다 (82). 이미지 지오메트리는 복잡한 2 차원 또는 3 차원 연산 그래픽스의 표현에 대응할 수도 있다. GPU (14) 는 이미지 지오메트리 및 렌더링 커맨드를 GPU 파이프라인 (18) 에 전송하여, 디바이스 (10) 에 접속된 디스플레이 디바이스 (20) 상에서의 디스플레이를 위해 그 이미지를 프로세싱한다. GPU 파이프라인 (18) 은 이미지 지오메트리 내의 버텍스에 대한 속성을 확장된 버텍스 캐시 (16) 에 저장한다 (84). 몇몇 실시형태에서, GPU 파이프라인 (18) 은 이미지 지오메트리 내의 버텍스에 대한 버텍스 좌표를 확장된 버텍스 캐시 (16) 에 일시적으로 저장한다.
그 후, GPU 파이프라인 (18) 은, 버텍스를 식별하는 버텍스 좌표, 및 확장된 버텍스 캐시 (16) 의 버텍스 각각에 대한 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18) 을 따라 다른 프로세싱 스테이지로 전송한다 (86). GPU 파이프라인 (18) 은 이미지 지오메트리의 버텍스 각각에 대한 버텍 스 좌표 및 버텍스 캐시 인덱스 값에 기초하여 이미지를 프로세싱한다 (88).
도 6 은 확장된 버텍스 캐시를 이용하여 GPU 로 이미지를 프로세싱하는 또 다른 예시적인 동작을 도시하는 흐름도이다. 이 동작을 도 3 의 GPU (14A) 를 참조하여 기술한다. 확장된 버텍스 캐시 (16A) 는 디바이스 (10) 의 제조 동안 GPU (14A) 내에서 생성되어 GPU 파이프라인 (18A) 에 커플링될 수도 있다 (90). 확장된 버텍스 캐시 (16A) 는 상이한 수의 속성 및 프리미티브 타입에 대해 용이하게 구성될 수도 있다.
커맨드 엔진 (42) 은 디바이스 (10) 의 제어기 (12) 로부터 이미지 지오메트리 및 이미지에 대한 렌더링 커맨드를 수신한다 (92). 이미지 지오메트리는 복잡한 2 차원 또는 3 차원의 컴퓨터 처리된 그래픽스의 표현에 대응할 수도 있다. 커맨드 엔진 (42) 은, 확장된 버텍스 캐시 (16A) 에 포함되지 않은, 이미지 지오메트리 내의 버텍스 ("미싱된 버텍스") 에 대한 정보를 버텍스 셰이더 (44) 로 전달한다. 커맨드 엔진 (42) 은, 확장된 버텍스 캐시 (16A) 에 이미 포함된, 이미지 지오메트리 내의 버텍스 ("히트된 버텍스") 에 대한 정보를 프리미티브 셋업 및 제거 모듈 (46) 로 전달한다.
버텍스 셰이더 (44) 는 이미지 지오메트리 내의 미싱된 버텍스에 적용되고, 이미지 지오메트리 내의 그 미싱된 버텍스 각각의 버텍스 좌표 및 속성을 발생시킨다 (94). 그 후, 버텍스 셰이더 (44) 는 그 미싱된 버텍스에 대한 속성을 확장된 버텍스 캐시 (16A) 에 저장한다 (96). 히트된 버텍스 각각의 버텍스 좌표 및 속성은 이미 발생되어 확장된 버텍스 캐시 (16A) 에 저장되어 있기 때문에, 이 미지 지오메트리 내의 히트된 버텍스 각각에 대해서는 버텍스 셰이더 (44) 가 적용되지 않는다. 그 후, 이미지 지오메트리의 히트된 버텍스 및 미싱된 버텍스 모두에 대한 속성의 확장된 버텍스 캐시 (16A) 내에서의 저장 위치를 나타내는 버텍스 캐시 인덱스 값이, 커맨드 엔진 (42) 과 프리미티브 셋업 및 제거 모듈 (46) 사이에 위치된 FIFO 버퍼에 배치된다.
프리미티브 셋업 및 제거 모듈 (46) 은 FIFO 버퍼로부터 이미지 지오메트리의 버텍스 각각의 속성에 대한 버텍스 캐시 인덱스 값을 수신한다. 그 후, 프리미티브 셋업 및 제거 모듈 (46) 은 버텍스 캐시 인덱스 값을 이용하여, 확장된 버텍스 캐시 (16A) 로부터 이미지 지오메트리 내의 버텍스 각각에 대한 버텍스 좌표를 검색한다 (98). 프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리 내의 하나 이상의 버텍스로 프리미티브를 생성하고, 이미지 지오메트리 내의 버텍스의 XY 좌표에 기초하여 프리미티브를 제거한다 (100). 프리미티브 셋업 및 제거 모듈 (46) 은 확장된 버텍스 캐시 (16A) 에 요청하여, 제거된 프리미티브와 연관된 속성에 대한 저장 공간을 릴리스할 수도 있다.
래스터라이저 (48) 는 프리미티브 내의 버텍스의 XY 좌표 및 프리미티브에 포함된 픽셀의 수에 기초하여 이미지 지오메트리에 대한 프리미티브를 픽셀로 변환한다 (102). 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 은 프리미티브 내의 버텍스의 Z 좌표에 기초하여, 숨겨진 프리미티브 및 이미지에 대한 프리미티브 내의 숨겨진 픽셀을 제거한다 (104). 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 은 확장된 버텍스 캐시 (16A) 에 요청하여, 제거된 프리미티브와 연관된 속성에 대 한 저장 공간을 릴리스할 수도 있다.
속성 그레디언트 셋업 모듈 (52) 은, 프리미티브 내의 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 확장된 버텍스 캐시 (16A) 로부터 버텍스 속성을 검색한다 (106). 속성 그레디언트 셋업 모듈 (52) 은 이미지 지오메트리에 대한 프리미티브와 연관된 속성의 그레디언트를 연산한다 (108). 속성 그레디언트 셋업 모듈 (52) 이 이미지 지오메트리에 대한 프리미티브 내의 모든 버텍스의 속성의 그레디언트를 연산한 이후, 속성 그레디언트 셋업 모듈 (52) 은 확장된 버텍스 캐시 (16) 에 요청하여, 프리미티브 내의 버텍스의 속성에 대한 저장 공간을 릴리스할 수도 있다. 속성 그레디언트 값이 연산되면, 속성 보간기 (54) 는 속성 그레디언트 값에 기초하여 프리미티브 내의 픽셀에 대해 속성을 보간한다 (110). 프레그먼트 셰이더 (56) 는 보간된 속성 값에 기초하여 이미지 지오메트리에 대한 프리미티브의 픽셀 렌더링을 수행한다 (112). 프레그먼트 셰이더 (56) 는 이미지 지오메트리에 대한 프리미티브 내의 픽셀에서 이미지의 표면 특성을 결정한다. 프레그먼트 셰이어 (56) 의 결과는 디바이스 (10) 에 커플링된 디스플레이 디바이스 (20) 상에서의 프로세싱된 이미지의 프리젠테이션을 위해 후처리기 (58) 로 출력될 것이다.
도 7 은, 이미지 지오메트리 내의 버텍스의 초기 프로세싱을 위한 컴포넌트를 포함하는, 도 3 의 GPU (14A) 를 더 상세히 도시하는 블록도이다. 이 도시된 실시형태에서, GPU 파이프라인 (18A) 은, 버텍스 판정 모듈 (120), 기준 카운트 업데이트 모듈 (122), 및 커맨드 엔진 (42) 과 프리미티브 셋업 및 제거 모듈 (46) 사이에 위치된 프리미티브 어셈블러 (124) 를 포함한다. 또한, GPU 파이프라인 (18A) 은, 버텍스 판정 모듈 (120) 과 버텍스 셰이더 (44) 사이에 미싱된 버텍스 모듈 (126) 을 포함한다. 확장된 버텍스 캐시 (16A) 는 기준 카운트 저장부 (128) 및 저장 릴리스 모듈 (129) 를 포함한다.
커맨드 엔진 (42) 은 디바이스 (10) 의 제어기 (12) 로부터 이미지에 대한 이미지 지오메트리 및 렌더링 커맨드를 수신한다. 그 후, 커맨드 엔진 (42) 은 이미지 지오메트리 내의 버텍스에 대한 버텍스 인덱스를 버텍스 판정 모듈 (120) 로 전송한다. 이미지 지오메트리 내의 버텍스 각각에 대한 버텍스 인덱스는 디바이스 (10) 의 제어기 (12) 에 의해 또는 커맨드 엔진 (42) 에 의해 발생될 수도 있다. 버텍스 판정 모듈 (120) 은, 이미지 지오메트리 내의 버텍스 각각이 확장된 버텍스 캐시 (16A) 내에 포함되어 있는지 여부를 대응하는 버텍스 인덱스에 기초하여 결정한다. 확장된 버텍스 캐시 (16A) 에 포함되지 않은 이미지 지오메트리 내의 버텍스를 "미싱된 버텍스" 라 한다. 확장된 버텍스 캐시 (16A) 에 이미 포함된 이미지 지오메트리 내의 버텍스를 "히트된 버텍스" 라 한다.
히트된 버텍스의 경우, 버텍스 판정 모듈 (120) 은, 그 히트된 버텍스 각각에 대한 버텍스 좌표 및 속성의 확장된 버텍스 캐시 (16A) 내에서의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18A) 내의 기준 카운터 업데이트 모듈 (122) 에 제공한다. 미싱된 버텍스의 경우, 버텍스 판정 모듈 (120) 은 확장된 버텍스 캐시 (16A) 내의 저장 공간에 대한 요청을 그 미싱된 버텍스 각각에 대한 미싱된 버텍스 모듈 (126) 에 전송한다. 미싱된 버텍스 모듈 (126) 은, 확장된 버텍스 캐시 (16A) 의 미싱된 버텍스에 대한 버텍스 좌표 및 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 그 미싱된 버텍스 각각에 할당한다. 그 후, 버텍스 판정 모듈 (120) 은, 그 미싱된 버텍스에 대한 버텍스 좌표 및 속성의 확장된 버텍스 캐시 (16A) 에서의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18A) 내의 기준 카운트 업데이트 모듈 (122) 에 제공한다.
미싱된 버텍스 모듈 (126) 은 미싱된 버텍스에 대한 정보를 판독하고, 관련된 포맷 변환을 수행한다. 예를 들어, 포맷 변환은 정수에서 플로우트 (float) 로의 변환, 16 비트 플로우트에서 32 비트 플로우트로의 변환, 또는 다른 타입의 포맷 변환을 포함할 수도 있다. 미싱된 버텍스 모듈 (126) 은 미싱된 버텍스에 대한 정보에 기초하여 버텍스 스레드를 형성하고, 그 버텍스 스레드를 버텍스 셰이더 (44) 로 전송한다. 버텍스 셰이더 (44) 는 미싱된 버텍스 각각에 적용되고, 이미지 지오메트리 내의 미싱된 버텍스의 버텍스 좌표 및 속성을 생성한다. 그 후, 버텍스 셰이더 (44) 는 할당된 저장 위치에서 미싱된 버텍스에 대한 버텍스 좌표 및 속성을 확장된 버텍스 캐시 (16A) 에 저장한다.
미싱된 버텍스에 대한 버텍스 캐시 인덱스 값의 수신시에, 기준 카운트 업데이트 모듈 (122) 은 미싱된 버텍스 각각에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 0 으로 초기화한다. 그 후, 기준 카운트 업데이트 모듈 (122) 은, 이미지 지오메트리 내의 모든 버텍스, 즉, 히트된 버텍스 및 미싱된 버텍스에 대해 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 증분한다.
프리미티브 어셈블러 (124) 는 이미지 지오메트리 내의 하나 이상의 버텍스로 예비 프리미티브를 형성한다. 프리미티브 어셈블러 (124) 가, 버텍스 각각이 오직 1 회 이용된 예비 프리미티브를 어셈블하는 경우, 그 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트는 증분되지 않고 변경없이 유지된다. 프리미티브 어셈블러 (124) 가, 적어도 하나의 버텍스가 2 회 이상 이용된 예비 프리미티브를 어셈블하는 경우, 프리미티브 어셈블러 (124) 는 그 버텍스가 재이용될 때마다 그 적어도 하나의 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 증분한다. 예를 들어, 버텍스가 프리미티브에서 2 회 이용되면, 그 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트는 1 씩 증분되어, 2 와 동일하게 된다. 프리미티브 어셈블러 (124) 는 그 예비 프리미티브 내의 버텍스에 대한 버텍스 캐시 인덱스 값을 프리미티브 어셈블러 (124) 와 프리미티브 셋업 및 제거 모듈 (46) 사이에 위치된 FIFO 버퍼에 배치한다.
프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리의 버텍스 각각의 속성에 대한 버텍스 캐시 인덱스 값을 FIFO 버퍼로부터 수신한다. 그 후, 프리미티브 셋업 및 제거 모듈 (46) 은 버텍스 캐시 인덱스 값을 이용하여, 이미지 지오메트리 내의 버텍스 각각에 대한 버텍스 좌표를 확장된 버텍스 캐시 (16A) 로부터 검색한다. 더 상세하게는, 프리미티브 셋업 및 제거 모듈 (46) 은 버텍스 캐시 인덱스 값을 이용하여, 주어진 프리미티브 내의 모든 버텍스가 확장된 버텍스 캐시 (16A) 에서 이용가능한지 여부를 체크할 수도 있다. 버텍스가 준비되지 않았으면, 프리미티브 셋업 및 제거 모듈 (46) 은 대기할 것이다. 버텍스가 준 비되었으면, 프리미티브 셋업 및 제거 모듈은 그 대응하는 버텍스 캐시 인덱스 값에 기초하여 프리미티브 내의 버텍스 각각에 대한 버텍스 좌표를 판독한다.
프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리 내의 버텍스 각각에 대한 검색된 버텍스 좌표에 기초하여 이미지를 프로세싱한다. 프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리 내의 하나 이상의 버텍스로 프리미티브를 생성하고, 그 이미지 지오메트리 내의 버텍스의 XY 좌표에 기초하여 프리미티브를 제거한다. 프리미티브 셋업 및 제거 모듈 (46) 이 이미지 지오메트리에 대한 프리미티브를 제거하는 경우, 프리미티브 셋업 및 제거 모듈 (46) 은 그 제거된 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 내의 저장 공간을 릴리스하도록 저장 릴리스 모듈 (129) 에 요청을 전송한다. 요청을 수신하면, 저장 릴리스 모듈 (129) 은 그 제거된 프리미티브 내의 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 감분한다. 기준 카운트 저장부 (128) 내의 기준 카운트가 0 까지 감분되면, 저장 릴리스 모듈 (129) 은 그 제거된 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 내의 저장 공간을 릴리스한다.
그 후, 프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리의 버텍스 각각에 대한 버텍스 좌표 및 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18A) 을 따라 통과시킨다. GPU 파이프라인 (18A) 내의 프로세싱 스테이지들은 전술한 바와 같이 그 이미지 지오메트리 내의 버텍스에 대한 버텍스 좌표에 기초하여 그 이미지를 프로세싱한다. 예를 들어, 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 은 프리미티브 내의 버텍스의 Z 좌표에 기초하여, 초기 깊이 및 스텐실 테스트를 이용하여 숨겨진 프리미티브 및 그 프리미티브 내의 숨겨진 픽셀을 제거한다. 프리미티브 셋업 및 제거 모듈 (46) 과 실질적으로 유사하게, 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 이 이미지 지오메트리에 대한 프리미티브를 제거하는 경우, 숨겨진 프리미티브 및 픽셀 제거 모듈 (50) 은 그 제거된 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 내의 저장 공간을 릴리스하도록 저장 릴리스 모듈 (129) 에 요청을 전송한다. 요청을 수신하면, 저장 릴리스 모듈 (129) 은 그 제거된 프리미티브 내의 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 감분한다. 기준 카운트 저장부 (128) 내의 기준 카운트가 0 까지 감분되면, 저장 릴리스 모듈 (129) 은 그 제거된 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 내의 저장 공간을 릴리스한다.
속성 그레디언트 셋업 모듈 (52) 은 프리미티브 내의 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 확장된 버텍스 캐시 (16A) 로부터 버텍스 속성을 검색한다. 속성 그레디언트 셋업 모듈 (52) 은 이미지 지오메트리 내의 버텍스 각각의 검색된 속성에 기초하여 이미지를 프로세싱한다. 속성 그레디언트 셋업 모듈 (52) 은 이미지 지오메트리에 대한 프리미티브와 연관된 속성의 그레디언트를 연산한다. 속성 그레디언트 셋업 모듈 (52) 이 이미지 지오메트리에 대한 프리미티브 내의 모든 버텍스의 속성의 그레디언트를 연산한 이후, 속성 그레디언트 셋업 모듈 (52) 은 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 내에서의 저장 공간을 릴리스하도록 저장 릴리스 모듈 (129) 에 요청을 전송한다. 요청을 수신하면, 저장 릴리스 모듈 (129) 은 프리미티브 내의 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 감분한다. 기준 카운트 저장부 (128) 내의 기준 카운트가 0 까지 감분되면, 저장 릴리스 모듈 (129) 은 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 내의 저장 공간을 릴리스한다. GPU 파이프라인 (18A) 내의 나머지 프로세싱 스테이지들은 전술한 바와 같이 이미지 지오메트리 내의 버텍스 좌표 및 버텍스의 속성에 기초하여 이미지를 프로세싱한다.
도 8A 및 도 8B 는 이미지 지오메트리 내의 버텍스의 초기 프로세싱의 예시적인 동작을 도시하는 흐름도이다. 이 동작을 도 7 의 GPU (14A) 를 참조하여 기술한다. 기준 카운트 저장부 (128) 및 저장 릴리스 모듈 (129) 을 포함하는 확장된 버텍스 캐시 (16A) 는 디바이스 (10) 의 제조 동안 GPU (14A) 내에 생성되어 GPU 파이프라인 (18A) 에 커플링될 수도 있다. 기준 카운트 저장부 (128) 는 이미지 지오메트리 내의 버텍스 각각에 대한 기준 카운트를 저장한다. 저장 릴리스 모듈 (129) 은 확장된 버텍스 캐시 (16A) 의 저장 공간의 할당과 릴리스, 및 기준 카운트 저장부 (128) 내의 기준 카운트의 업데이트를 관리한다.
커맨드 엔진 (42) 은 디바이스 (10) 의 제어기 (12) 로부터 이미지에 대한 이미지 지오메트리 및 렌더링 커맨드를 수신한다. 버텍스 판정 모듈 (120) 은 커맨드 엔진 (42) 으로부터 이미지 지오메트리 내의 버텍스에 대한 버텍스 인덱스를 수신한다 (130). 버텍스 판정 모듈 (120) 은, 대응하는 버텍스 인덱스에 기초하여 이미지 지오메트리 내의 버텍스 각각이 확장된 버텍스 캐시 (16A) 에 포함 되는지 여부를 결정한다 (131). 확장된 버텍스 캐시 (16A) 에 포함되지 않은 이미지 지오메트리 내의 버텍스를 "미싱된 버텍스" 라 한다. 확장된 버텍스 캐시 (16A) 에 이미 포함된 이미지 지오메트리 내의 버텍스를 "히트된 버텍스" 라 한다.
히트된 버텍스의 경우, 버텍스 판정 모듈 (120) 은, 히트된 버텍스 각각에 대한 버텍스 좌표, 및 속성의 확장된 버텍스 캐시 (16A) 에서의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18A) 내의 기준 카운트 업데이트 모듈 (122) 에 제공한다 (136). 미싱된 버텍스의 경우, 버텍스 판정 모듈 (120) 은 확장된 버텍스 캐시 (16A) 내의 저장 공간에 대한 요청을 그 미싱된 버텍스 각각에 대한 미싱된 버텍스 모듈 (126) 에 전송한다 (132). 미싱된 버텍스 모듈 (126) 은, 확장된 버텍스 캐시 (16A) 의 미싱된 버텍스에 대한 버텍스 좌표 및 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 그 미싱된 버텍스 각각에 할당한다 (134). 그 후, 버텍스 판정 모듈 (120) 은, 그 미싱된 버텍스에 대한 버텍스 좌표, 및 속성의 확장된 버텍스 캐시 (16A) 에서의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18A) 내의 기준 카운트 업데이트 모듈 (122) 에 제공한다 (136).
미싱된 버텍스 모듈 (126) 은 미싱된 버텍스에 대한 정보를 판독하고, 관련된 포맷 변환을 수행한다. 미싱된 버텍스 모듈 (126) 은 미싱된 버텍스에 대한 정보에 기초하여 버텍스 스레드를 형성하고, 그 버텍스 스레드를 버텍스 셰이더 (44) 로 전송한다 (138). 버텍스 셰이더 (44) 는 미싱된 버텍스 각각에 적용되 고, 이미지 지오메트리 내의 미싱된 버텍스의 버텍스 좌표 및 속성을 발생시킨다 (140). 그 후, 버텍스 셰이더 (44) 는 할당된 저장 위치에서 미싱된 버텍스에 대한 버텍스 좌표 및 속성을 확장된 버텍스 캐시 (16A) 에 저장한다 (142).
미싱된 버텍스에 대한 버텍스 캐시 인덱스 값의 수신시에, 기준 카운트 업데이트 모듈 (122) 은 미싱된 버텍스 각각에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 0 으로 초기화한다. 그 후, 기준 카운트 업데이트 모듈 (122) 은, 이미지 지오메트리 내의 모든 버텍스, 즉, 히트된 버텍스 및 미싱된 버텍스에 대해 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 증분한다 (146).
프리미티브 어셈블러 (124) 는 이미지 지오메트리 내의 하나 이상의 버텍스로 예비 프리미티브를 형성한다 (148). 프리미티브 어셈블러 (124) 가, 버텍스 각각이 오직 1 회 이용된 예비 프리미티브를 어셈블하는 경우, 그 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트는 증분되지 않고 변경없이 유지된다. 프리미티브 어셈블러 (124) 가, 적어도 하나의 버텍스가 2 회 이상 이용된 예비 프리미티브를 어셈블하는 경우, 프리미티브 어셈블러 (124) 는 그 버텍스가 재이용될 때마다 그 적어도 하나의 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 증분한다 (150). 프리미티브 어셈블러 (124) 는 그 예비 프리미티브 내의 버텍스에 대한 버텍스 캐시 인덱스 값을 프리미티브 어셈블러 (124) 와 프리미티브 셋업 및 제거 모듈 (46) 사이에 위치된 FIFO 버퍼에 배치한다 (152).
프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리의 버텍스 각각의 속성에 대한 버텍스 캐시 인덱스 값을 FIFO 버퍼로부터 수신한다. 그 후, 프리 미티브 셋업 및 제거 모듈 (46) 은 버텍스 캐시 인덱스 값을 이용하여, 이미지 지오메트리 내의 버텍스 각각에 대한 버텍스 좌표를 확장된 버텍스 캐시 (16A) 로부터 검색한다 (154). 프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리 내의 버텍스 각각에 대한 검색된 버텍스 좌표에 기초하여 이미지를 프로세싱한다 (156). 이미지 지오메트리에 대한 프리미티브의 제거시에, 프리미티브 셋업 및 제거 모듈 (46) 은 그 제거된 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 에서의 저장 공간을 릴리스하도록 저장 릴리스 모듈 (129) 에 요청을 전송한다. 요청의 수신시에, 저장 릴리스 모듈 (129) 은 제거된 프리미티브 내의 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 감분한다 (158). 기준 카운트 저장부 (128) 내의 기준 카운트가 0 까지 감분되면, 저장 릴리스 모듈 (129) 은 그 제거된 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 에서의 저장 공간을 릴리스한다 (160).
그 후, 프리미티브 셋업 및 제거 모듈 (46) 은 이미지 지오메트리의 버텍스 각각에 대한 버텍스 좌표 및 버텍스 캐시 인덱스 값을 GPU 파이프라인 (18A) 을 따라 통과시킨다. GPU 파이프라인 (18A) 내의 프로세싱 스테이지들은 전술한 바와 같이 이미지 지오메트리 내의 버텍스에 대한 버텍스 좌표에 기초하여 이미지를 프로세싱한다. 속성 그레디언트 셋업 모듈 (52) 은 프리미티브 내의 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 확장된 버텍스 캐시 (16A) 로부터 버텍스 속성을 검색한다 (162). 속성 그레디언트 셋업 모듈 (52) 은 이미지 지오메트리 내의 버텍스 각각의 검색된 속성에 기초하여 이미지를 프로세싱한다 (164).
이미지 지오메트리에 대한 프리미티브 내의 모든 버텍스의 속성의 그레디언트를 연산할 때, 속성 그레디언트 셋업 모듈 (52) 은 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 에서의 저장 공간을 릴리스하도록 저장 릴리스 모듈 (129) 에 요청을 전송한다. 요청의 수신시에, 저장 릴리스 모듈 (129) 은 그 프리미티브 내의 버텍스에 대한 기준 카운트 저장부 (128) 내의 기준 카운트를 1 씩 감분한다 (166). 기준 카운트 저장부 (128) 내의 기준 카운트가 0 까지 감분되면, 저장 릴리스 모듈 (129) 은 프리미티브 내의 버텍스의 속성에 대한 확장된 버텍스 캐시 (16A) 의 저장 공간을 릴리스한다 (168).
다수의 실시형태들을 기술하였다. 그러나, 이 실시형태들의 다양한 변형이 가능하며, 본 명세서에 제공된 원리들은 다른 실시형태들에 적용될 수도 있다. 본 명세서에서 기술한 방법들은 하드웨어, 소프트웨어 및/또는 펌웨어에서 구현될 수도 있다. 이러한 방법들의 다양한 작업들은, 마이크로프로세서, 임베디드 제어기 또는 IP 코어와 같은 로직 엘리먼트의 하나 이상의 어레이에 의해 실행가능한 명령들의 세트로서 구현될 수도 있다. 일 예로, 하나 이상의 이러한 작업들은, 셀룰러 전화와 같은 개인용 통신 디바이스의 다양한 디바이스의 동작을 제어하도록 구성된 이동국 모뎀 칩 또는 칩셋 내에서의 실행을 위해 배열된다.
본 명세서에서 설명한 기술들은, 범용 마이크로프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 다른 등가 로직 디바이스 내에서 구현될 수도 있다. 소프트웨어에서 구현되면, 이 기술들은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), NVRAM (non-volatile random access memory), EEPROM (electrically erasable programmable read-only memory), FLASH 메모리 등과 같은 컴퓨터 판독가능 매체 상에서의 명령으로서 수록될 수도 있다. 이 명령들은 하나 이상의 프로세서로 하여금 본 명세서에 기술된 기능의 특정 양태를 수행하게 한다.
또 다른 예로, 실시형태는, 하드 와이어 회로로서, 또는 애플리케이션 특정 집적 회로로 제조된 회로 구성으로서, 또는 비휘발성 저장부에 로딩된 펌웨어 프로그램이나 머신 판독매체 코드로서 데이터 저장 매체에 로딩되거나 그로부터 로딩되는 소프트웨어 프로그램으로서, 부분적으로 또는 전체적으로 구현될 수도 있으며, 이러한 코드는 마이크로프로세서 또는 기타 디지털 신호 프로세싱 유닛과 같은 로직 엘리먼트의 어레이에 의해 실행가능한 명령들이다. 데이터 저장 매체는, 반도체 메모리 (동적 또는 정적 RAM, ROM 및/또는 플래시 RAM 을 포함하지만 이에 한정되는 것은 아님) 또는 강자성, 오보닉, 중합체 또는 상변화 메모리; 또는 자기 또는 광 디스크와 같은 디스크 매체와 같은 저장 엘리먼트의 어레이일 수도 있다.
본 명세서에서, 확장된 버텍스 캐시를 이용하여 GPU 로 이미지를 프로세싱하기 위한 다양한 기술들이 설명되었다. 이 기술들은 GPU 파이프라인의 외부에 확장된 버텍스 캐시를 생성하여 GPU 파이프라인을 통과하는 데이터량을 감소시키는 것을 포함한다. 본 명세서에서 설명한 기술에 따르면, GPU 파이프라인은 이미지에 대한 이미지 지오메트리를 수신하고, 그 이미지 지오메트리 내의 버텍스에 대한 속성을 확장된 버텍스 캐시에 저장한다. 몇몇 실시형태에서, GPU 파이프라인은 버텍스 좌표를 확장된 버텍스 캐시에 일시적으로 저장한다. GPU 파이프라 인은, 버텍스를 식별하는 버텍스 좌표, 및 확장된 버텍스 캐시의 버텍스 각각에 대한 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 GPU 파이프라인을 따라 다른 프로세싱 스테이지로 전달하기만 한다.
또한, 본 명세서에서 설명하는 기술은 속성 그레디언트의 연산 집약적 셋업을 GPU 파이프라인의 속성 보간 직전까지 연기한다. 버텍스 속성은 속성 보간 이전에 GPU 파이프라인의 최후 단계들 중 하나로서 속성 그레디언트 셋업에 대한 확장된 버텍스 캐시로부터 검색될 수도 있다. 따라서, 버텍스 속성은 프리미티브 셋업 및 프리미티브 제거 이후까지 GPU 파이프라인에 도입되지 않는다. 이 방식으로, GPU 파이프라인은, 이미지 지오메트리에 대한 프리미티브, 프리미티브 내의 버텍스 각각을 식별하는 버텍스 좌표, 및 프리미티브 내의 버텍스 각각에 대한 버텍스 캐시 인덱스 값을 이동시키기만 한다.
이 기술은, 다수의 속성을 포함하는 프리미티브에 대한 GPU 파이프라인에서의 병목현상을 실질적으로 제거한다. 또한, 이 기술은 GPU 파이프라인의 속성 보간 직전까지 속성 그레디언트 셋업을 연기함으로써 GPU 파이프라인 내의 이미지 프로세싱 속도를 개선시킨다. 더 상세하게는, GPU 파이프라인 내의 속성 그레디언트 셋업을 이미지에 대해 불필요한 프리미티브의 서브세트의 제거 이후까지 연기시키는 것은, 속성 그레디언트 셋업이 이미지에 필요한 프리미티브의 서브세트에 대해서만 수행될 것이기 때문에, 연산 및 전력 소모를 실질적으로 감소시킬 수도 있다. 이 실시형태들 및 다른 실시형태들은 다음의 청구항의 범주에 속한다.

Claims (54)

  1. 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법으로서,
    상기 GPU 에 포함된 GPU 파이프라인 내의 이미지에 대한 이미지 지오메트리를 수신하는 단계;
    상기 이미지 지오메트리 내의 버텍스에 대한 속성을 상기 GPU 파이프라인에 커플링된 확장된 버텍스 캐시에 저장하는 단계; 및
    상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 버텍스를 식별하는 버텍스 좌표, 및 상기 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여, 상기 GPU 파이프라인 내의 이미지를 프로세싱하는 단계를 포함하며,
    상기 확장된 버텍스 캐시에 저장된 속성의 저장 위치를 나타내는 상기 버텍스 캐시 인덱스 값은 상기 GPU 파이프라인을 따라 프로세싱 스테이지에 전달되고,
    상기 버텍스 캐시 인덱스 값은, 상기 버텍스 캐시 인덱스 값에 의해 나타내는 상기 확장된 버텍스 캐시에서의 위치에 저장된 속성을 검색하기 위해 상기 프로세싱 스테이지에 의해 사용되는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  2. 제 1 항에 있어서,
    버텍스 셰이딩을 수행함으로써 상기 확장된 버텍스 캐시에 포함되지 않은 이미지 지오메트리 내의 버텍스의 버텍스 좌표 및 속성을 발생시키는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  3. 제 1 항에 있어서,
    상기 이미지 지오메트리 내의 어떠한 버텍스가 상기 확장된 버텍스 캐시에 포함된 히트된 버텍스를 포함하는지를 결정하는 단계;
    상기 이미지 지오메트리 내의 어떠한 버텍스가 상기 확장된 버텍스 캐시에 포함되지 않은 미싱된 버텍스를 포함하는지를 결정하는 단계; 및
    상기 이미지 지오메트리 내의 상기 미싱된 버텍스 각각의 버텍스 좌표 및 속성을 발생시키는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  4. 제 3 항에 있어서,
    상기 이미지 지오메트리 내의 상기 히트된 버텍스 각각에 대한 저장된 속성을 상기 확장된 버텍스 캐시에 유지하는 단계; 및
    상기 히트된 버텍스 각각에 대한 상기 확장된 버텍스 캐시에서의 상기 저장된 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 검색하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  5. 제 3 항에 있어서,
    상기 이미지 지오메트리 내의 상기 미싱된 버텍스 각각에 대한 상기 확장된 버텍스 캐시에서의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 할당하는 단계; 및
    상기 할당된 저장 위치에서 상기 미싱된 버텍스 각각에 대해 발생된 속성을 상기 확장된 버텍스 캐시에 저장하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  6. 제 1 항에 있어서,
    상기 이미지 지오메트리 내의 버텍스 각각에 대한 상기 버텍스 좌표를 상기 확장된 버텍스 캐시에 저장하는 단계; 및
    상기 이미지를 프로세싱하기 위해, 상기 이미지 지오메트리 내의 버텍스 각각에 대한 상기 버텍스 캐시 인덱스 값을 이용하여, 상기 확장된 버텍스 캐시로부터 상기 버텍스 좌표를 검색하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  7. 제 1 항에 있어서,
    상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 확장된 버텍스 캐시에 포함된 기준 카운트 저장부의 기준 카운트를 증분시키는 단계;
    상기 이미지 지오메트리 내의 하나 이상의 버텍스를 갖는 예비 프리미티브를 생성하는 단계;
    상기 예비 프리미티브 내에서 2 회 이상 이용된 버텍스에 대해 상기 기준 카운트 저장부의 기준 카운트를 증분시키는 단계; 및
    상기 이미지를 프로세싱하기 위해, 상기 예비 프리미티브 내의 버텍스에 대한 버텍스 캐시 인덱스 값을 버퍼에 저장하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  8. 제 1 항에 있어서,
    상기 버텍스 각각에 대한 버텍스 좌표 및 버텍스 캐시 인덱스 값을 상기 GPU 파이프라인을 따라 프로세싱 스테이지에 전달하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  9. 제 1 항에 있어서,
    상기 이미지를 프로세싱하는 단계는, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성에 기초하여 상기 이미지 지오메트리의 프로세싱을 상기 GPU 파이프라인의 속성 보간 직전까지 연기하는 단계를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  10. 제 9 항에 있어서,
    상기 이미지 지오메트리의 프로세싱을 연기하는 단계는, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성의 그레디언트 연산을 상기 GPU 파이프라인의 속성 보간 직전까지 연기하는 단계를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  11. 제 1 항에 있어서,
    상기 이미지를 프로세싱하는 단계는,
    상기 이미지 지오메트리 내의 하나 이상의 버텍스를 갖는 프리미티브를 생성하는 단계;
    상기 버텍스 좌표에 기초하여, 상기 이미지에 대해 불필요한 프리미티브의 제 1 서브세트를 제거하는 단계;
    상기 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 상기 이미지에 대해 필요한 프리미티브의 제 2 서브세트 내의 버텍스 각각의 버텍스 속성을 상기 확장된 버텍스 캐시로부터 검색하는 단계; 및
    상기 확장된 버텍스 캐시로부터 검색된 속성에 기초하여, 상기 이미지 지오메트리에 대한 프리미티브의 상기 제 2 서브세트와 연관된 속성의 그레디언트를 연산하는 단계를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  12. 제 11 항에 있어서,
    상기 프리미티브의 제 1 서브세트를 제거하는 단계는,
    상기 버텍스 좌표에 기초하여, 백페이스 컬링 (backface culling) 및 시저링 (scissoring) 을 이용하여 상기 이미지 지오메트리에 대한 비가시적 프리미티브를 제거하는 단계; 및
    상기 버텍스 좌표에 기초하여, 초기 깊이 및 스텐실 테스트 (early depth and stencil test) 를 이용하여 상기 이미지 지오메트리에 대한 숨겨진 프리미티브 및 프리미티브 내의 숨겨진 픽셀을 제거하는 단계를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  13. 제 11 항에 있어서,
    상기 이미지 지오메트리에 대한 프리미티브의 상기 제거된 제 1 서브세트와 연관된 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간의 릴리스를 요청하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  14. 제 13 항에 있어서,
    상기 확장된 버텍스 캐시에서의 저장 공간의 릴리스에 대한 요청의 수신시에, 상기 프리미티브의 제 1 서브세트 내의 버텍스에 대한 기준 카운트를 감분하는 단계; 및
    상기 버텍스에 대한 기준 카운트가 0 까지 감분되는 경우, 상기 프리미티브의 상기 제 1 서브세트 내의 버텍스의 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간을 릴리스하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  15. 제 11 항에 있어서,
    상기 프리미티브의 제 2 서브세트와 연관된 상기 속성의 그레디언트를 연산하기 이전에, 상기 버텍스 좌표에 기초하여 상기 이미지 지오메트리에 대한 프리미티브를 픽셀로 변환하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  16. 제 11 항에 있어서,
    상기 프리미티브의 제 2 서브세트와 연관된 모든 속성의 그레디언트를 연산한 이후에, 상기 이미지 지오메트리에 대한 프리미티브의 제 2 서브세트와 연관된 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간의 릴리스를 요청하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  17. 제 16 항에 있어서,
    상기 확장된 버텍스 캐시에서의 저장 공간을 릴리스하라는 요청의 수신시에, 상기 프리미티브의 제 2 서브세트 내의 버텍스에 대한 기준 카운트를 감분하는 단계; 및
    상기 버텍스에 대한 기준 카운트가 0 까지 감분되는 경우, 상기 프리미티브의 제 2 서브세트 내의 버텍스의 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간을 릴리스하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  18. 제 11 항에 있어서,
    상기 프리미티브의 제 2 서브세트와 연관된 속성의 그레디언트의 연산 직후에, 속성 그레디언트 값에 기초하여 상기 이미지 지오메트리에 대한 프리미티브의 제 2 서브세트 내의 픽셀에 대해 속성을 보간하는 단계; 및
    보간된 속성 값에 기초하여, 상기 이미지 지오메트리에 대한 프리미티브의 제 2 서브세트의 픽셀 렌더링을 수행하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  19. 제 1 항에 있어서,
    상기 이미지를 프로세싱하는 단계는,
    상기 버텍스 좌표에 기초하여 상기 이미지 지오메트리를 프로세싱하는 단계;
    상기 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 상기 버텍스의 속성을 상기 확장된 버텍스 캐시로부터 검색하는 단계; 및
    상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성에 기초하여, 상기 이미지 지오메트리를 프로세싱하는 단계를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  20. 제 1 항에 있어서,
    상기 이미지 지오메트리 내의 버텍스의 버텍스 좌표 및 속성은 상기 GPU 외부에서 발생되고, 상기 확장된 버텍스 캐시는 확장된 버텍스 버퍼를 포함하며,
    상기 방법은,
    상기 버텍스 각각에 대한 속성을 상기 확장된 버텍스 버퍼에 저장하는 단계; 및
    상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 버텍스 좌표, 및 상기 확장된 버텍스 버퍼에서의 속성의 저장 위치를 식별하는 버텍스 인덱스 값에 기초하여, 상기 GPU 파이프라인 내에서 상기 이미지를 프로세싱하는 단계를 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 방법.
  21. 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체로서,
    상기 명령들은,
    프로그래머블 프로세서로 하여금,
    상기 GPU 에 포함된 GPU 파이프라인 내의 이미지에 대한 이미지 지오메트리를 수신하게 하고;
    상기 이미지 지오메트리 내의 버텍스에 대한 속성을 상기 GPU 파이프라인에 커플링된 확장된 버텍스 캐시에 저장하게 하고; 그리고
    상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 버텍스를 식별하는 버텍스 좌표, 및 상기 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여, 상기 GPU 파이프라인 내의 이미지를 프로세싱하게 하고,
    상기 확장된 버텍스 캐시에 저장된 속성의 저장 위치를 나타내는 상기 버텍스 캐시 인덱스 값은 상기 GPU 파이프라인을 따라 프로세싱 스테이지에 전달되고,
    상기 버텍스 캐시 인덱스 값은, 상기 버텍스 캐시 인덱스 값에 의해 나타내는 상기 확장된 버텍스 캐시에서의 위치에 저장된 속성을 검색하기 위해 상기 프로세싱 스테이지에 의해 사용되는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  22. 제 21 항에 있어서,
    상기 프로그래머블 프로세서로 하여금,
    상기 이미지 지오메트리 내의 어떠한 버텍스가 상기 확장된 버텍스 캐시에 포함된 히트된 버텍스를 포함하는지를 결정하게 하고;
    상기 이미지 지오메트리 내의 어떠한 버텍스가 상기 확장된 버텍스 캐시에 포함되지 않은 미싱된 버텍스를 포함하는지를 결정하게 하고;
    상기 이미지 지오메트리 내의 상기 미싱된 버텍스 각각의 버텍스 좌표 및 속성을 발생시키게 하는 명령들을 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  23. 제 22 항에 있어서,
    상기 명령들은 상기 프로그래머블 프로세서로 하여금,
    상기 이미지 지오메트리 내의 상기 히트된 버텍스 각각에 대한 저장된 속성을 상기 확장된 버텍스 캐시에 유지하게 하며, 상기 히트된 버텍스 각각에 대한 상기 확장된 버텍스 캐시에서의 상기 저장된 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 검색하게 하고,
    상기 이미지 지오메트리 내의 상기 미싱된 버텍스 각각에 대한 상기 확장된 버텍스 캐시에서의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 할당하게 하며, 상기 할당된 저장 위치에서 상기 미싱된 버텍스 각각에 대해 발생된 속성을 상기 확장된 버텍스 캐시에 저장하게 하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  24. 제 21 항에 있어서,
    상기 프로그래머블 프로세서로 하여금,
    상기 이미지 지오메트리 내의 버텍스 각각에 대한 상기 버텍스 좌표를 상기 확장된 버텍스 캐시에 저장하게 하고;
    상기 이미지를 프로세싱하기 위해, 상기 이미지 지오메트리 내의 버텍스 각각에 대한 상기 버텍스 캐시 인덱스 값을 이용하여, 상기 확장된 버텍스 캐시로부터 상기 버텍스 좌표를 검색하게 하는 명령들을 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  25. 제 21 항에 있어서,
    상기 명령들은 상기 프로그래머블 프로세서로 하여금, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성에 기초한 상기 이미지 지오메트리의 프로세싱을 상기 GPU 파이프라인의 속성 보간 직전까지 연기하게 하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  26. 제 25 항에 있어서,
    상기 명령들은 상기 프로그래머블 프로세서로 하여금, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성의 그레디언트 연산을 상기 GPU 파이프라인의 속성 보간 직전까지 연기하게 하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  27. 제 21 항에 있어서,
    상기 명령들은 상기 프로그래머블 프로세서로 하여금,
    상기 이미지 지오메트리 내의 하나 이상의 버텍스를 갖는 프리미티브를 생성하게 하고;
    상기 버텍스 좌표에 기초하여, 상기 이미지에 대해 불필요한 프리미티브의 제 1 서브세트를 제거하게 하고;
    상기 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 상기 이미지에 대해 필요한 프리미티브의 제 2 서브세트 내의 버텍스 각각의 속성을 상기 확장된 버텍스 캐시로부터 검색하게 하고;
    상기 확장된 버텍스 캐시로부터 검색된 속성에 기초하여, 상기 이미지 지오메트리에 대한 프리미티브의 상기 제 2 서브세트와 연관된 속성의 그레디언트를 연산하게 하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  28. 제 27 항에 있어서,
    상기 프로그래머블 프로세서로 하여금, 상기 이미지 지오메트리에 대한 프리미티브의 상기 제거된 제 1 서브세트와 연관된 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간의 릴리스를 요청하게 하는 명령들을 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  29. 제 27 항에 있어서,
    상기 프로그래머블 프로세서로 하여금, 상기 프리미티브의 제 2 서브세트와 연관된 상기 속성의 그레디언트를 연산하기 이전에, 상기 버텍스 좌표에 기초하여 상기 이미지 지오메트리에 대한 프리미티브를 픽셀로 변환하게 하는 명령들을 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  30. 제 27 항에 있어서,
    상기 프로그래머블 프로세서로 하여금, 상기 프리미티브의 제 2 서브세트와 연관된 모든 속성의 그레디언트를 연산한 이후에, 상기 이미지 지오메트리에 대한 프리미티브의 제 2 서브세트와 연관된 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간의 릴리스를 요청하게 하는 명령들을 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  31. 제 27 항에 있어서,
    상기 프로그래머블 프로세서로 하여금,
    상기 프리미티브의 제 2 서브세트와 연관된 속성의 그레디언트의 연산 직후에, 속성 그레디언트 값에 기초하여 상기 이미지 지오메트리에 대한 프리미티브의 제 2 서브세트 내의 픽셀에 대해 속성을 보간하게 하고;
    보간된 속성 값에 기초하여, 상기 이미지 지오메트리에 대한 프리미티브의 제 2 서브세트의 픽셀 렌더링을 수행하게 하는 명령들을 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  32. 제 21 항에 있어서,
    상기 명령들은 상기 프로그래머블 프로세서로 하여금,
    상기 버텍스 좌표에 기초하여 상기 이미지 지오메트리를 프로세싱하게 하고;
    상기 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 상기 버텍스의 속성을 상기 확장된 버텍스 캐시로부터 검색하게 하고;
    상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성에 기초하여, 상기 이미지 지오메트리를 프로세싱하게 하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  33. 제 21 항에 있어서,
    상기 이미지 지오메트리 내의 버텍스의 버텍스 좌표 및 속성은 상기 GPU 외부에서 발생되고, 상기 확장된 버텍스 캐시는 확장된 버텍스 버퍼를 포함하며,
    상기 컴퓨터-판독가능 매체는, 상기 프로그래머블 프로세서로 하여금,
    상기 버텍스 각각에 대한 속성을 상기 확장된 버텍스 버퍼에 저장하게 하고;
    상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 버텍스 좌표, 및 상기 확장된 버텍스 버퍼에서의 속성의 저장 위치를 식별하는 버텍스 인덱스 값에 기초하여, 상기 GPU 파이프라인 내에서 상기 이미지를 프로세싱하게 하는 명령들을 더 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체.
  34. 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스로서,
    이미지에 대한 이미지 지오메트리를 수신하고, 디스플레이 디바이스 상에서의 디스플레이를 위해 상기 이미지를 프로세싱하는, 상기 GPU 에 포함된 GPU 파이프라인; 및
    상기 GPU 파이프라인에 커플링되고, 상기 이미지 지오메트리 내의 버텍스에 대한 속성을 저장하는 확장된 버텍스 캐시를 포함하며,
    상기 GPU 파이프라인은, 상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 버텍스를 식별하는 버텍스 좌표 및 상기 확장된 버텍스 캐시 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여, 상기 이미지를 프로세싱하며,
    상기 확장된 버텍스 캐시에 저장된 속성의 저장 위치를 나타내는 상기 버텍스 캐시 인덱스 값은 상기 GPU 파이프라인을 따라 프로세싱 스테이지에 전달되고,
    상기 버텍스 캐시 인덱스 값은, 상기 버텍스 캐시 인덱스 값에 의해 나타내는 상기 확장된 버텍스 캐시에서의 위치에 저장된 속성을 검색하기 위해 상기 프로세싱 스테이지에 의해 사용되는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  35. 제 34 항에 있어서,
    상기 GPU 파이프라인은, 버텍스 셰이딩을 수행함으로써, 상기 확장된 버텍스 캐시에 포함되지 않은 이미지 지오메트리 내의 버텍스의 버텍스 좌표 및 속성을 발생시키는 버텍스 셰이더를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  36. 제 34 항에 있어서,
    상기 GPU 파이프라인은,
    상기 이미지 지오메트리 내의 어떠한 버텍스가 상기 확장된 버텍스 캐시에 포함된 히트된 버텍스를 포함하는지를 결정하고, 상기 이미지 지오메트리 내의 어떠한 버텍스가 상기 확장된 버텍스 캐시에 포함되지 않은 미싱된 버텍스를 포함하는지를 결정하는 버텍스 판정 모듈; 및
    상기 이미지 지오메트리 내의 상기 미싱된 버텍스 각각의 버텍스 좌표 및 속성을 발생시키는 버텍스 셰이더를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  37. 제 36 항에 있어서,
    상기 확장된 버텍스 캐시는 상기 이미지 지오메트리 내의 상기 히트된 버텍스 각각에 대한 저장된 속성을 유지하고;
    상기 버텍스 판정 모듈은 상기 히트된 버텍스 각각에 대한 상기 확장된 버텍스 캐시에서의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 검색하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  38. 제 36 항에 있어서,
    상기 GPU 파이프라인은, 상기 이미지 지오메트리 내의 상기 미싱된 버텍스 각각에 대한 상기 확장된 버텍스 캐시에서의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값을 할당하는 미싱된 버텍스 모듈을 포함하고;
    상기 버텍스 판정 모듈은 상기 미싱된 버텍스 모듈로부터 상기 미싱된 버텍스 각각에 대한 할당된 버텍스 캐시 인덱스 값을 수신하고;
    상기 확장된 버텍스 캐시는 상기 저장 위치에서 상기 미싱된 버텍스 각각에 대해 발생된 속성을 상기 확장된 버텍스 캐시에 저장하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  39. 제 34 항에 있어서,
    상기 확장된 버텍스 캐시는 상기 이미지 지오메트리 내의 버텍스 각각에 대한 상기 버텍스 좌표를 저장하고;
    상기 GPU 파이프라인은 상기 이미지를 프로세싱하기 위해, 상기 이미지 지오메트리 내의 버텍스 각각에 대한 상기 버텍스 캐시 인덱스 값을 이용하여, 상기 확장된 버텍스 캐시로부터 상기 버텍스 좌표를 검색하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  40. 제 34 항에 있어서,
    상기 확장된 버텍스 캐시는 기준 카운트 저장부를 포함하며,
    상기 GPU 파이프라인은,
    상기 이미지 지오메트리 내의 버텍스에 대해 상기 기준 카운트 저장부의 기준 카운트를 증분시키는 기준 카운트 업데이트 모듈;
    상기 이미지 지오메트리 내의 하나 이상의 버텍스를 갖는 예비 프리미티브를 생성하고, 상기 예비 프리미티브 내에서 2 회 이상 이용된 버텍스에 대해 상기 기준 카운트 저장부의 기준 카운트를 증분시키는 프리미티브 어셈블러; 및
    상기 이미지를 프로세싱하기 위해, 상기 예비 프리미티브 내의 버텍스에 대한 버텍스 캐시 인덱스 값을 저장하는 버퍼를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  41. 제 34 항에 있어서,
    상기 GPU 파이프라인은, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성에 기초한 상기 이미지 지오메트리의 프로세싱을 상기 GPU 파이프라인의 속성 보간 직전까지 연기하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  42. 제 41 항에 있어서,
    상기 GPU 파이프라인은, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성의 그레디언트를 연산하며, 상기 GPU 파이프라인의 속성 보간 직전까지 연기되는 속성 그레디언트 셋업 모듈을 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  43. 제 34 항에 있어서,
    상기 GPU 파이프라인은,
    상기 이미지 지오메트리 내의 하나 이상의 버텍스를 갖는 프리미티브를 생성하고, 상기 버텍스 좌표에 기초하여, 상기 이미지에 대해 불필요한 프리미티브의 제 1 서브세트를 제거하는 프리미티브 셋업 및 제거 모듈;
    상기 버텍스 좌표에 기초하여, 상기 이미지에 대해 불필요한 프리미티브의 제 2 서브세트를 제거하는 숨겨진 프리미티브 및 픽셀 제거 모듈; 및
    상기 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 상기 이미지에 대해 필요한 프리미티브의 제 3 서브세트 내의 버텍스 각각의 버텍스 속성을 상기 확장된 버텍스 캐시로부터 검색하고, 상기 확장된 버텍스 캐시로부터 검색된 속성에 기초하여, 상기 이미지 지오메트리에 대한 프리미티브의 상기 제 3 서브세트와 연관된 속성의 그레디언트를 연산하는 속성 그레디언트 셋업 모듈을 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  44. 제 43 항에 있어서,
    상기 프리미티브 셋업 및 제거 모듈은, 상기 버텍스 좌표에 기초하여, 백페이스 컬링 및 시저링을 이용하여 상기 이미지 지오메트리에 대한 비가시적 프리미티브를 제거하고,
    상기 숨겨진 프리미티브 및 픽셀 제거 모듈은, 상기 버텍스 좌표에 기초하여, 초기 깊이 및 스텐실 테스트를 이용하여 상기 이미지 지오메트리에 대한 숨겨진 프리미티브 및 프리미티브 내의 숨겨진 픽셀을 제거하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  45. 제 43 항에 있어서,
    상기 프리미티브 셋업 및 제거 모듈은, 상기 이미지 지오메트리에 대한 프리미티브의 제 1 서브세트와 연관된 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간의 릴리스를 요청하고;
    상기 숨겨진 프리미티브 및 픽셀 제거 모듈은, 상기 이미지 지오메트리에 대한 프리미티브의 상기 제 2 서브세트와 연관된 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간의 릴리스를 요청하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  46. 제 45 항에 있어서,
    상기 확장된 버텍스 캐시는 저장 릴리스 모듈을 포함하며,
    상기 저장 릴리스 모듈은,
    상기 확장된 버텍스 캐시의 저장 공간을 릴리스하라는 요청의 수신시에, 상기 프리미티브의 상기 제 1 서브세트 및 상기 제 2 서브세트 내의 버텍스에 대한 기준 카운트를 감분하고,
    상기 버텍스에 대한, 기준 카운트 저장부의 기준 카운트가 0 까지 감분되는 경우, 상기 프리미티브의 상기 제 1 서브세트 및 상기 제 2 서브세트 내의 버텍스의 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간을 릴리스하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  47. 제 43 항에 있어서,
    상기 GPU 파이프라인은, 상기 속성 그레디언트 셋업 모듈이 상기 프리미티브의 제 3 서브세트와 연관된 상기 속성의 그레디언트를 연산하기 이전에, 상기 버텍스 좌표에 기초하여 상기 이미지 지오메트리에 대한 프리미티브를 픽셀로 변환하는 래스터라이저를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  48. 제 43 항에 있어서,
    상기 속성 그레디언트 셋업 모듈은, 상기 프리미티브의 제 3 서브세트와 연관된 모든 속성의 그레디언트를 연산한 이후에, 상기 이미지 지오메트리에 대한 프리미티브의 제 3 서브세트와 연관된 속성에 대한 저장 공간을 릴리스할 것을 상기 확장된 버텍스 캐시에 요청하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  49. 제 48 항에 있어서,
    상기 확장된 버텍스 캐시는 저장 릴리스 모듈을 포함하며,
    상기 저장 릴리스 모듈은,
    상기 확장된 버텍스 캐시에서의 저장 공간을 릴리스하라는 요청의 수신시에, 상기 프리미티브의 제 2 서브세트 내의 버텍스에 대한 기준 카운트 저장부의 기준 카운트를 감분하고,
    상기 버텍스에 대한 상기 기준 카운트 저장부의 기준 카운트가 0 까지 감분되는 경우, 상기 프리미티브의 제 2 서브세트 내의 버텍스의 속성에 대한, 상기 확장된 버텍스 캐시에서의 저장 공간을 릴리스하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  50. 제 43 항에 있어서,
    상기 GPU 파이프라인은,
    상기 속성 그레디언트 셋업 모듈이 상기 프리미티브의 제 3 서브세트와 연관된 속성의 그레디언트를 연산한 직후에, 속성 그레디언트 값에 기초하여 상기 이미지 지오메트리에 대한 프리미티브의 제 3 서브세트 내의 픽셀에 대해 속성을 보간하는 속성 보간기; 및
    보간된 속성 값에 기초하여, 상기 이미지 지오메트리에 대한 프리미티브의 제 3 서브세트의 픽셀 렌더링을 수행하는 프레그먼트 셰이더를 포함하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  51. 제 34 항에 있어서,
    상기 GPU 파이프라인은, 상기 버텍스 좌표에 기초하여 상기 이미지 지오메트리를 프로세싱하고, 상기 버텍스에 대한 버텍스 캐시 인덱스 값을 이용하여, 상기 버텍스의 속성을 상기 확장된 버텍스 캐시로부터 검색하고, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성에 기초하여, 상기 이미지 지오메트리를 프로세싱하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  52. 제 34 항에 있어서,
    상기 이미지 지오메트리 내의 버텍스의 버텍스 좌표 및 속성은 상기 GPU 파이프라인 외부에서 발생되며, 상기 확장된 버텍스 캐시는 확장된 버텍스 버퍼를 포함하고,
    상기 확장된 버텍스 버퍼는 상기 버텍스 각각에 대한 속성을 저장하고;
    상기 GPU 파이프라인은, 상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 버텍스 좌표, 및 상기 확장된 버텍스 버퍼에서의 속성의 저장 위치를 식별하는 버텍스 인덱스 값에 기초하여, 상기 이미지를 프로세싱하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  53. 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스로서,
    이미지에 대한 이미지 지오메트리를 수신하는, 상기 GPU 내의 프로세싱 수단; 및
    상기 이미지 지오메트리 내의 버텍스에 대한 속성을 저장하는 저장 수단을 포함하며,
    상기 프로세싱 수단은, 상기 이미지 지오메트리 내의 버텍스 각각에 대해 상기 버텍스를 식별하는 버텍스 좌표, 및 상기 저장 수단 내의 속성의 저장 위치를 나타내는 버텍스 캐시 인덱스 값에 기초하여 상기 이미지를 프로세싱하고,
    상기 저장 수단에 저장된 속성의 저장 위치를 나타내는 상기 버텍스 캐시 인덱스 값은 상기 프로세싱 수단을 따라 프로세싱 스테이지에 전달되고,
    상기 버텍스 캐시 인덱스 값은, 상기 버텍스 캐시 인덱스 값에 의해 나타내는 상기 저장 수단에서의 위치에 저장된 속성을 검색하기 위해 상기 프로세싱 스테이지에 의해 사용되는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
  54. 제 53 항에 있어서,
    상기 프로세싱 수단은, 상기 버텍스 좌표에 기초하여 상기 이미지 지오메트리를 프로세싱하고, 상기 버텍스에 대한 상기 버텍스 캐시 인덱스 값을 이용하여 상기 저장 수단으로부터 상기 버텍스의 속성을 검색하고, 상기 이미지 지오메트리에 대한 프리미티브 내의 버텍스의 속성에 기초하여 상기 이미지 지오메트리를 프로세싱하는, 그래픽스 프로세싱 유닛 (GPU) 으로 이미지들을 프로세싱하는 디바이스.
KR1020097004410A 2006-08-03 2007-07-31 확장된 버텍스 캐시를 갖는 그래픽스 프로세싱 유닛을 이용하여 이미지를 프로세싱하는 방법 및 장치 KR101033779B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/499,187 US7952588B2 (en) 2006-08-03 2006-08-03 Graphics processing unit with extended vertex cache
US11/499,187 2006-08-03

Publications (2)

Publication Number Publication Date
KR20090043550A KR20090043550A (ko) 2009-05-06
KR101033779B1 true KR101033779B1 (ko) 2011-05-13

Family

ID=38702064

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097004410A KR101033779B1 (ko) 2006-08-03 2007-07-31 확장된 버텍스 캐시를 갖는 그래픽스 프로세싱 유닛을 이용하여 이미지를 프로세싱하는 방법 및 장치

Country Status (6)

Country Link
US (1) US7952588B2 (ko)
EP (1) EP2047431B1 (ko)
JP (1) JP4938850B2 (ko)
KR (1) KR101033779B1 (ko)
CN (1) CN101496066B (ko)
WO (1) WO2008019261A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8081641B2 (en) * 2006-09-27 2011-12-20 Massachusetts Institute Of Technology Methods and apparatus for network coding
KR100882842B1 (ko) * 2007-02-26 2009-02-17 삼성전자주식회사 피포를 포스트 버텍스 캐쉬처럼 사용하기 위한 기하학 처리장치와 그 방법
US8345045B2 (en) * 2008-03-04 2013-01-01 Microsoft Corporation Shader-based extensions for a declarative presentation framework
US8436854B2 (en) * 2009-05-29 2013-05-07 Qualcomm Incorporated Graphics processing unit with deferred vertex shading
US8471858B2 (en) * 2009-06-02 2013-06-25 Qualcomm Incorporated Displaying a visual representation of performance metrics for rendered graphics elements
US20110043518A1 (en) * 2009-08-21 2011-02-24 Nicolas Galoppo Von Borries Techniques to store and retrieve image data
US8692829B2 (en) * 2009-10-05 2014-04-08 Nvidia Corporation Calculation of plane equations after determination of Z-buffer visibility
US8810592B2 (en) * 2009-10-09 2014-08-19 Nvidia Corporation Vertex attribute buffer for inline immediate attributes and constants
CN101770391B (zh) * 2010-02-02 2011-10-19 北京航空航天大学 一种基于GPU的Cache模拟器及其时间并行加速模拟方法
KR101719485B1 (ko) * 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8587585B2 (en) * 2010-09-28 2013-11-19 Intel Corporation Backface culling for motion blur and depth of field
US8339409B2 (en) * 2011-02-16 2012-12-25 Arm Limited Tile-based graphics system and method of operation of such a system
JP5845910B2 (ja) 2012-01-13 2016-01-20 富士通株式会社 画像描画装置、画像描画プログラム、及び、画像描画方法
KR102116708B1 (ko) * 2013-05-24 2020-05-29 삼성전자 주식회사 그래픽스 프로세싱 유닛
US9177413B2 (en) * 2013-06-26 2015-11-03 Nvidia Corporation Unique primitive identifier generation
US9424686B2 (en) * 2014-08-08 2016-08-23 Mediatek Inc. Graphics processing circuit having second vertex shader configured to reuse output of first vertex shader and/or process repacked vertex thread group and related graphics processing method thereof
WO2017125151A1 (en) * 2016-01-20 2017-07-27 Hewlett-Packard Development Company L.P. Imaging pipeline processing
US10510181B2 (en) * 2017-06-27 2019-12-17 Samsung Electronics Co., Ltd. System and method for cache management using a cache status table
CN110648385A (zh) * 2018-06-27 2020-01-03 北京京东尚科信息技术有限公司 三角面拣选方法、装置、电子设备及计算机可读介质
CN110415161B (zh) * 2019-07-19 2023-06-27 龙芯中科(合肥)技术有限公司 图形处理方法、装置、设备及存储介质
CN110784773A (zh) * 2019-11-26 2020-02-11 北京奇艺世纪科技有限公司 弹幕生成方法、装置、电子设备及存储介质
CN115829825B (zh) * 2023-01-10 2023-05-05 南京砺算科技有限公司 图元数据的装载控制方法、图形处理器、设备及存储介质
CN115880133B (zh) * 2023-01-31 2023-07-25 南京砺算科技有限公司 图形处理单元及终端设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1096427A2 (en) * 1999-10-28 2001-05-02 Nintendo Co., Limited Vertex cache for 3D computer graphics
US20070038692A1 (en) * 2005-08-10 2007-02-15 David Pierce Correlator having user-defined processing

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4951232A (en) 1988-09-12 1990-08-21 Silicon Graphics, Inc. Method for updating pipelined, single port Z-buffer by segments on a scan line
JPH06309471A (ja) * 1993-04-20 1994-11-04 Fujitsu Ltd 3次元グラフィックス描画装置
US5886711A (en) 1997-04-29 1999-03-23 Hewlett-Packard Companu Method and apparatus for processing primitives in a computer graphics display system
US6549209B1 (en) 1997-05-22 2003-04-15 Kabushiki Kaisha Sega Enterprises Image processing device and image processing method
JP3514945B2 (ja) * 1997-05-26 2004-04-05 株式会社ソニー・コンピュータエンタテインメント 画像作成方法および画像作成装置
US5914726A (en) 1997-06-27 1999-06-22 Hewlett-Packard Co. Apparatus and method for managing graphic attributes in a memory cache of a programmable hierarchical interactive graphics system
US7038692B1 (en) 1998-04-07 2006-05-02 Nvidia Corporation Method and apparatus for providing a vertex cache
US6476816B1 (en) 1998-07-17 2002-11-05 3Dlabs Inc. Ltd. Multi-processor graphics accelerator
WO2000011607A1 (en) 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
JP2000182072A (ja) * 1998-12-11 2000-06-30 Hitachi Ltd データ記録媒体、データプロセッサ及び描画情報演算方法
US6690380B1 (en) * 1999-12-27 2004-02-10 Microsoft Corporation Graphics geometry cache
JP2003296748A (ja) * 2002-03-29 2003-10-17 Sony Corp 画像処理装置およびその方法
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7098924B2 (en) 2002-10-19 2006-08-29 Via Technologies, Inc. Method and programmable device for triangle interpolation in homogeneous space
US7259765B2 (en) 2003-04-04 2007-08-21 S3 Graphics Co., Ltd. Head/data scheduling in 3D graphics
US20050206648A1 (en) 2004-03-16 2005-09-22 Perry Ronald N Pipeline and cache for processing data progressively
US7505946B2 (en) * 2004-03-31 2009-03-17 Microsoft Corporation High performance content alteration architecture and techniques
US7710427B1 (en) 2004-05-14 2010-05-04 Nvidia Corporation Arithmetic logic unit and method for processing data in a graphics pipeline
US7505036B1 (en) * 2004-07-30 2009-03-17 3Dlabs Inc. Ltd. Order-independent 3D graphics binning architecture
US7639252B2 (en) 2004-08-11 2009-12-29 Ati Technologies Ulc Unified tessellation circuit and method therefor
US6972769B1 (en) * 2004-09-02 2005-12-06 Nvidia Corporation Vertex texture cache returning hits out of order
US7233334B1 (en) * 2004-09-29 2007-06-19 Nvidia Corporation Storage buffers with reference counters to improve utilization
JP4893621B2 (ja) 2005-05-20 2012-03-07 ソニー株式会社 信号処理装置
US7492373B2 (en) 2005-08-22 2009-02-17 Intel Corporation Reducing memory bandwidth to texture samplers via re-interpolation of texture coordinates
CN100354894C (zh) * 2005-11-10 2007-12-12 北京航空航天大学 基于图形处理单元gpu的粒子***实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1096427A2 (en) * 1999-10-28 2001-05-02 Nintendo Co., Limited Vertex cache for 3D computer graphics
US20070038692A1 (en) * 2005-08-10 2007-02-15 David Pierce Correlator having user-defined processing

Also Published As

Publication number Publication date
KR20090043550A (ko) 2009-05-06
US7952588B2 (en) 2011-05-31
WO2008019261A3 (en) 2008-07-03
EP2047431B1 (en) 2018-01-10
US20080030513A1 (en) 2008-02-07
CN101496066B (zh) 2012-07-18
EP2047431A2 (en) 2009-04-15
JP2009545825A (ja) 2009-12-24
CN101496066A (zh) 2009-07-29
JP4938850B2 (ja) 2012-05-23
WO2008019261A2 (en) 2008-02-14

Similar Documents

Publication Publication Date Title
KR101033779B1 (ko) 확장된 버텍스 캐시를 갖는 그래픽스 프로세싱 유닛을 이용하여 이미지를 프로세싱하는 방법 및 장치
US8421794B2 (en) Processor with adaptive multi-shader
US7928990B2 (en) Graphics processing unit with unified vertex cache and shader register file
US9754407B2 (en) System, method, and computer program product for shading using a dynamic object-space grid
US8009172B2 (en) Graphics processing unit with shared arithmetic logic unit
US9129443B2 (en) Cache-efficient processor and method of rendering indirect illumination using interleaving and sub-image blur
US8384728B2 (en) Supplemental cache in a graphics processing unit, and apparatus and method thereof
US10733785B2 (en) Graphics processing
KR20110016938A (ko) 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품
WO2013101167A1 (en) Five-dimensional rasterization with conservative bounds
US8228337B1 (en) System and method for temporal load balancing across GPUs
US10192348B2 (en) Method and apparatus for processing texture
US11972518B2 (en) Hybrid binning
US8427474B1 (en) System and method for temporal load balancing across GPUs
US20220319091A1 (en) Post-depth visibility collection with two level binning
EP4168976A1 (en) Fine grained replay control in binning hardware
US20150317119A1 (en) Method and apparatus for estimating a fragment count for the display of at least one three-dimensional object

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee