KR20070112735A - 프레임 버퍼 병합 - Google Patents

프레임 버퍼 병합 Download PDF

Info

Publication number
KR20070112735A
KR20070112735A KR1020070049927A KR20070049927A KR20070112735A KR 20070112735 A KR20070112735 A KR 20070112735A KR 1020070049927 A KR1020070049927 A KR 1020070049927A KR 20070049927 A KR20070049927 A KR 20070049927A KR 20070112735 A KR20070112735 A KR 20070112735A
Authority
KR
South Korea
Prior art keywords
pixels
group
frame buffer
memory location
polygon
Prior art date
Application number
KR1020070049927A
Other languages
English (en)
Other versions
KR100908779B1 (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 KR20070112735A publication Critical patent/KR20070112735A/ko
Application granted granted Critical
Publication of KR100908779B1 publication Critical patent/KR100908779B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

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

Abstract

지연된 프레임 버퍼 병합을 위한 방법이다. 이 방법은 메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 것을 포함하며, 각각의 픽셀이 기존의 컬러를 갖는다. 다각형에 의해 커버되는 픽셀들이 결정될 수 있고, 각각의 픽셀은 다수의 샘플을 포함한다. 다각형에 의해 커버되는 샘플들에 대응하여 생성될 수 있다. 픽셀들의 그룹은 커버리지 마스크와 다각형의 컬러를 메모리 장소에 저장하여 업데이트될 수 있다. 후속 시간에 픽셀들의 그룹에 프레임 버퍼에 병합된다.
프레임 버퍼, 커버리지 마스크, 픽셀, 그래픽 메모리

Description

프레임 버퍼 병합{FRAME BUFFER MERGING}
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 도시하는 도면.
도 2는 본 발명의 일 실시예에 따른 프로세스 단계들의 흐름도.
도 3은 본 발명의 일 실시예에 따라, 그룹의 어떤 픽셀들이 다각형에 의해 커버되는지에 대한 결정의 예를 도시하는 도면.
도 4는 본 발명의 일 실시예에 따라, 픽셀들의 그룹에 대한 다각형의 커버리지 평가로부터 나오는 결과적인 샘플들을 도시하는 도면.
도 5는 본 발명의 일 실시예에 따라, 픽셀들의 그룹에 대한 메모리 장소에 저장된 커버리지 마스크를 도시하는 도면.
도 6은 본 발명의 일 실시예에 따라, 픽셀들의 그룹을 커버하는 후속 다각형들을 도시하는 도면.
도 7은 본 발명의 일 실시예에 따라, 하나의 픽셀이 완전히 커버되지 않는 경우에 다각형에 의해 커버되는 픽셀들의 샘플들을 도시하는 도면.
도 8은 본 발명의 일 실시예에 따라, 메모리 장소의 하나의 4분면에 저장된 다각형의 결과적인 커버리지 마스크와 컬러를 도시하는 도면.
도 9는 본 발명의 일 실시예에 따라, 픽셀들의 그룹을 커버하는 후속 다각형을 도시하는 도면.
도 10은 본 발명의 일 실시예에 따라, 하나의 픽셀이 완전히 커버되지 않은 경우에 다각형에 의해 커버되는 픽셀들의 샘플들을 도시하는 도면.
도 11은 본 발명의 일 실시예에 따라, 메모리 장소의 우측 하부 4분면에 저장된 다각형의 결과적인 커버리지 마스크 및 컬러를 도시하는 도면.
도 12는 본 발명의 일 실시예에 따라, 픽셀 그룹을 커버하는 후속 다각형을 도시하는 도면.
도 13은 본 발명의 일 실시예에 따라, 메모리 장소의 좌측 상부 4분면에서 제1 컬러를 갖는 메모리 장소를 도시하는 도면.
도 14는 본 발명의 다른 실시예에 따라, 지연된 프레임 버퍼 병합 프로세스에 의해 동작되는 픽셀 그룹을 도시하는 도면.
도 15는 본 발명의 실시예에 따라, 컬러 정보가 한 방식하에서 저장되는 메모리 장소를 도시하는 도면.
도 16은 본 발명의 다른 실시예에 따른, 제2 방식 하에서의 태그값들을 도시하는 도면.
도 17은 본 발명의 다른 실시예 하에서 컬러 정보가 저장되는 메모리 장소의 제2 실례를 도시하는 도면.
도 18은 본 발명의 일 실시예에 따라, 2개의 샘플들과 그에 대응하는 커버리지 마스크들로 표시된 그들 각각의 컬러들을 도시하는 도면.
도 19는 본 발명의 일 실시예에 따라, 4개의 부가 샘플들 및 그에 대응하는 커버리지 마스크들로 표시된 그들 각각의 컬러들을 도시하는 도면.
도 20은 본 발명의 일 실시예에 따라, 컬러 정보가 합성되는 픽셀 그룹의 연속적인 상태들을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
101 CPU
110 GPU
105 브리지
112 디스플레이
115 시스템 메모리
116 로컬 그래픽 메모리
2110, 2120 그래픽 데이터
2101 캐쉬 메모리
2102 레지스터
본 출원은 알벤(Alben) 등에 의해 "압축을 갖는 지연된 프레임 버퍼 병합(DELAYED FRAME BUFFER MERGING WITH COMPRESSION)"라는 명칭으로 가출원된 미국 가출원 번호 제60/802,746호(대리인 문서번호 NVID-P002512)의 이익을 청구하며, 이 가출원의 전체 내용은 본 명세서에 통합되어 있다.
본 발명은 일반적으로 그래픽 컴퓨터 시스템에 관한 것으로, 적어도 압축을 갖는 지연된 프레임 버퍼 병합을 개시한다.
일반적으로, 3D 이미지 데이터를 처리하는데 적합한 컴퓨터 시스템은 종래의 CPU(central processing unit) 이외에, 특수 그래픽 프로세서 유닛, 즉 GPU를 포함한다. GPU는 3D 컴퓨터-생성 오브젝트들을 처리하도록 구성된 특수 하드웨어를 포함한다. GPU는 오브젝트들의 형상, 위치 및 속성을 정의하는 데이터 모델들의 세트 및 그들의 컴포넌트 "프리미티브들(primitives)"(통상 수학적으로 기술된 삼각 다각형들)에 대해 동작하도록 구성된다. GPU의 하드웨어는 오브젝트들을 처리하여, 컴퓨터 시스템의 디스플레이 상에 사실적인 3D 이미지들을 생성하는데 요구되는 계산들을 구현한다.
통상의 그래픽 렌더링 프로세스의 성능은 시스템의 기본적인 하드웨어의 성능에 크게 좌우된다. 고성능 실시간 그래픽 렌더링은 3D 오브젝트 데이터 및 컴포넌트 프리미티브들을 저장하는 메모리에 대한 낮은 대기 시간과 높은 데이터 전송 대역폭을 요구한다. 따라서, 전송 대역폭을 증가시키고 메모리에 대한 데이터 액세스 지연시간(latency)을 감소시키는데 상당한 양의 개발 노력을 기울이고 있다.
따라서, 보다 고가인 종래의 GPU 서브시스템들(예를 들어, 그래픽 카드가 구비된 GPU 등)은 통상적으로 GPU에 요구된 데이터를 공급하기 위한 크고(예를 들어 128 MB 이상) 전문화된, 고가의, 높은 대역폭 로컬 그래픽 메모리들을 포함한다. 이러한 GPU들은 종종 매우 낮은 데이터 액세스 지연시간을 갖는 레지스터들의 세트들과 대형의 온칩 캐쉬들을 포함한다. 덜 고가인 종래의 GPU 서브시스템들은 보다 작은(예를 들어, 64MB 이하) 그러한 로컬 그래픽 메모리들을 포함하고, 가장 덜 고 가인 GPU 서브시스템들의 일부는 로컬 그래픽 메모리를 갖지 않으며, 대신에 그래픽 렌더링 데이터를 저장하기 위해 시스템 메모리에 의존한다.
상술된 유형의 종래의 GPU들 각각이 갖는 문제점은 시스템 메모리, 또는 로컬 그래픽 메모리에 대한 데이터 전송 대역폭이 GPU 내부에 있는 캐쉬들과 레지스터들에 대한 데이터 전송 대역폭보다 매우 작다는 점이다. 예를 들어, GPU들은 커맨드 스트림들과 장면 기술들을 판독하고 프레임 버퍼의 각 픽셀들이 장면을 포함하는 그래픽 프리미티브들의 각각에 의해 영향을 받는 정도를 결정할 필요가 있다. 이러한 프로세스는 픽셀 데이터를 저장하는 프레임 버퍼 메모리에 대해 다수의 판독과 기입을 유발할 수 있다. 온칩 캐쉬들과 레지스터들은 매우 낮은 액세스 지연시간을 제공하지만, 주어진 장면에서의 다수의 픽셀들(예를 들어, 1280x1024, 1600x1200 등)은 프레임 버퍼에 대한 다수의 액세스를 불가피하게 한다.
이에 따라 전반적인 그래픽 렌더링 프로세스에는 큰 지연시간이 유도하는 성능 불이익들(penalties)이 부과된다. 시스템 메모리 내에 그들의 프레임 버퍼들을 저장하는 GPU들에 대한 성능 불이익들이 더 크다. 픽셀 당 다수의 샘플들에 대한 판독 및 기입을 요구하는 렌더링 프로세스들(예를 들어, 안티-에일리어싱(anti-aloasing) 등)은 그러한 지연시간이 유도하는 성능 불이익들에 특히 민감하다.
따라서, 로컬 그래픽 메모리에 대한 통신 경로 및/또는 시스템 메모리에 대한 통신 경로의 데이터 전송 지연시간에 의해 부과되는 제약들을 감소시킬 수 있는 해결책이 요구된다. 본 발명은 상기 요건들에 대한 새로운 해결책을 제공한다.
일 실시예에서, 본 발명은 지연된 프레임 버퍼 병합을 위한 GPU 구현 방법으로서 구현된다. 상기 방법은 메모리 장소에 저장된 픽셀들의 그룹에 관한 다각형(예를 들어, 하나 이상의 타일들)을 액세스하는 단계를 포함하며, 여기서 픽셀들의 각각은 기존의 컬러를 가진다. 다각형에 의해 어떤 픽셀들이 커버되는지에 대한 결정이 이루어지며, 여기서 각 픽셀은 복수의 샘플을 포함한다. 다각형에 의해 커버되는 샘플들에 대응하는 커버리지 마스크(coverage mask)가 생성된다. 픽셀들의 그룹은 다각형의 컬러와 커버리지 마스크를 메모리 장소에 저장함으로써 업데이트된다. 후속 시간에, 픽셀들의 그룹은 프레임 버퍼에 병합된다.
일 실시예에서, 다수의 다각형들이 픽셀 그룹에 업데이트되며, 이에 의해 GPU는 픽셀들의 그룹에 관련된 다수의 후속 다각형들(예를 들어, 픽셀들을 부분적으로 커버하는 후속 다각형들)을 액세스한다. 후속 다각형들의 각각에 대해, 각 후속 다각형들의 각각의 커버리지 마스크와 각각의 컬러를 메모리 장소에 저장함으로써 픽셀들의 그룹이 업데이트된다.
일 실시예에서, 픽셀들의 그룹을 저장하는 메모리 장소의 상태를 추적하기 위하여 태그값이 사용되고, 여기서 태그값은 후속 다각형들에 따라 업데이트된다. 부가적으로, 태그값은 픽셀들의 그룹을 저장하는 메모리 장소가 언제 차 있는지를 결정하고, 이에 의해 픽셀들의 그룹이 언제 프레임 버퍼에 병합되어야 하는지를 나타내기 위해 사용될 수 있다.
이러한 방식으로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는, 프레임 버퍼에 대해 판독 및 기입을 해야하고 이에 의해 높은 지연시간 성능 불이익들을 일으키는 것과는 반대로, 낮은 지연시간 메모리(예를 들어, 레지스터, 캐쉬) 내에서 픽셀 그룹에 도달하는 다각형들로부터 업데이트들을 축적할 수 있다. 따라서, 지연된 프레임 버퍼 병합 프로세스는 로컬 그래픽 메모리 및 시스템 메모리의 더 높은 데이터 액세스 지연시간들에 의해 부과되는 병목현상들을 개선한다.
본 발명은 한정하는 것이 아니라 예로서 도시되고, 이들 도면 내에서 유사한 참조 부호는 유사한 구성요소를 지칭한다.
이제 본 발명의 바람직한 실시예에 대한 참조가 상세하게 이루어질 것이고, 상기 예들은 첨부 도면에 도시된다. 본 발명은 바람직한 실시예들과 관련하여 설명될 것이고, 발명을 이러한 실시예들로 제한하도록 의도되지 않는다는 것을 이해할 것이다. 반대로, 본 발명은 첨부된 특허청구범위에 의해 정의되는 본 발명의 사상 및 범위 내에 포함될 수 있는 변경, 수정 및 등가물들을 포함하도록 의도된다. 또한, 본 발명의 실시예들에 대한 다음의 상세한 설명에는, 본 발명의 전반적인 이해를 제공하기 위해 다수의 특정 상세들이 개시된다. 그러나, 본 기술 분야의 당업자라면 본 발명이 이러한 특정 상세들 없이 실시될 수 있다는 것을 인식할 것이다. 다른 예에서는, 본 발명의 실시예들의 특징들을 불필요하게 모호하게 하지 않기 위해 공지된 방법들, 절차들, 구성요소들, 및 회로들이 상세하게 기술되지 않는다.
주석 및 명명법:
이어지는 상세한 설명들의 일부들은 절차들, 단계들, 논리 블록들, 프로세 싱, 및 컴퓨터 메모리 내에서의 데이터 비트들에 대한 기타의 상징적인 동작 표현들의 관점으로 제시된다. 이러한 기술들 및 표현들은 데이터 프로세싱 분야의 당업자가 다른 당업자에게 그들의 연구 내용을 가장 효과적으로 전달하기 위해 사용하는 수단이다. 절차, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기에서 일반적으로, 바람직한 결과를 유도하는 단계들 또는 명령어들의 일관성있는 문장이 되도록 고안된다. 단계들은 물리적인 양들의 물리적인 조작을 요구하는 것들이다. 보통, 반드시는 아니지만, 이러한 양들은 컴퓨터 시스템에서 저장되고, 전송되고, 연결되고, 비교되고 아니면 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 주로 공공의 사용을 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들(symbols), 문자들, 용어들, 숫자들 등으로서 나타내는 것이 때때로 편리하다는 것이 입증되었다.
그러나 모든 이러한 그리고 유사한 용어들이 적절한 물리적 양들과 관련되고 단순히 이러한 양들에 적용된 편리한 라벨들이라는 것을 염두에 두어야 한다. 구체적으로 언급되지 않는다면, 또는 이하의 논의로부터 명백한 바와 같이, 본 발명에 걸쳐 "프로세싱(processing)" 또는 "액세싱(accessing)" 또는 "압축(compressing)" 또는 "저장(storing)" 또는 "렌더링(rendering)" 등과 같은 용어들을 이용하는 논의들은 컴퓨터 시스템(예를 들면 도 1의 컴퓨터 시스템(100)), 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 양들로서 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 디바이스들 내의 물리적 양들로서 유사하게 표현되는 다 른 데이터로 조작하고 변환하는 유사한 전자 컴퓨팅 디바이스의 작용 및 프로세스에 관련된다는 것을 이해해야 한다.
컴퓨터 시스템 플랫폼
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)을 도시한다. 컴퓨터 시스템(100)은 소정의 하드웨어 기반 및 소프트웨어 기반 기능을 실행 플랫폼에 제공하는 기초 컴퓨터 시스템의 컴포넌트들을 묘사한다. 일반적으로, 컴퓨터 시스템(100)은 적어도 하나의 CPU(101), 시스템 메모리(115) 및 적어도 하나의 GPU(graphics processor unit)(110)를 포함한다. CPU(101)는 브리지 컴포넌트(105)를 통하여 시스템 메모리(115)에 연결될 수 있거나, 또는 CPU(101) 내부의 메모리 컨트롤러(도시 안됨)를 통하여 시스템 메모리(115)에 직접 연결될 수 있다. 브리지 컴포넌트(105)(예를 들면, 노스브리지)는 다양한 I/O 디바이스(예를 들면 하나 이상의 하드 디스크 드라이브, 이더넷 어댑터, CD ROM, DVD 등)를 접속하는 확장 버스들(예를 들면, 확장 버스 (106))를 지원할 수 있다. GPU(110)는 디스플레이(112)에 연결된다. 하나 이상의 부가적인 GPU는 시스템(100)의 컴퓨팅 성능을 한층 더 증가시키기 위해 시스템(100)에 선택적으로 연결될 수 있다. GPU(들)(110)는 브리지 컴포넌트(105)를 통하여 CPU(101)와 시스템 메모리(115)에 연결된다. 시스템(100)은 전용 그래픽 렌더링 GPU(110)에 연결된 강력한 범용 CPU(101)를 가지는, 예를 들면, 데스크톱 컴퓨터 시스템 또는 서버 컴퓨터 시스템으로서 구현될 수 있다. 그러한 실시예에서, 컴포넌트들은 주변 버스들, 전용 로컬 그래픽 메모리, IO 디바이스들 등을 더하는 것에 포함될 수 있다. 유사하게, 시스템(100) 은 핸드헬드 디바이스(예를 들면, 휴대폰 등) 또는 예를 들면, 워싱톤 주 레드몬드의 마이크로소프트사로부터 입수 가능한 Xbox®, 또는 일본 도쿄의 소니 컴퓨터 엔터테인먼트사로부터 입수 가능한 PlayStation3®와 같은 셋톱 비디오 게임 콘솔 디바이스로서 구현될 수 있다.
GPU(110)는 개별적인 컴포넌트, 커넥터(예를 들면, AGP 슬롯, PCI-Express 슬롯 등)를 통하여 컴퓨터 시스템(100)에 연결되도록 설계된 개별적인 그래픽 카드, (예를 들면, 마더보드 상에 직접 실장된) 개별적인 집적 회로 다이, 또는 (예를 들면, 브리지 칩(105) 내에 내장된) 컴퓨터 시스템 칩셋 컴포넌트의 집적된 회로 다이 내에 포함된 내장형 GPU(integrated GPU)로서 구현될 수 있다. 부가적으로, 로컬 그래픽 메모리(116)는 GPU(110)가 높은 대역폭 그래픽 데이터 저장소를 제공하기 위해 선택적으로 포함될 수 있다.
본 기재의 실시예들
본 기재의 실시예들은 지연된 프레임 버퍼 병합을 위한 방법을 구현한다. 일 실시예에서, GPU는 커버리지 마스크를 저장하기 위해 프레임 버퍼 타이틀의 서브 포션(sub-portion) 및 태그 값을 이용한다. 커버리지 마스크는 타일(tile)의 커버리지(예를 들면, 커버된 샘플들의 수)에 대응한다. 프레임 버퍼 타일을 구성하는 픽셀들은 다각형의 컬러 및 다각형의 커버리지 마스크를 타일을 저장하는 메모리 장소(memory location)에 저장함으로써 압축 상태로 저장될 수 있다. 더욱이, 새로운 다각형에 대한 후속 커버리지 마스크 및 새로운 다각형에 대한 컬러를 메모리 장소에 저장함으로써 부가적인 다각형들은 타일로 렌더링될 수 있다.
이것은 프레임 버퍼에 액세스 또는 기입할 필요 없이 새로운 다각형들이 타일에 렌더링되는 것을 가능하게 한다. 예를 들면, 다각형들은 타일이 가득찰 때까지, 즉 타일이 프레임 버퍼에 병합될 수 있는 시점까지 지연된 프레임 버퍼 병합 프로세스를 사용하여 타일에 렌더링될 수 있다. 이러한 방식으로, (예를 들면, 로컬 그래픽 메모리(116) 또는 시스템 메모리(115) 내에 저장된) 프레임 버퍼에 대해 판독 및 기입을 해야 하는 것 및 그에 의해 높은 지연시간 성능 불이익들을 발생시키는 것과는 반대로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는 GPU(110)의 낮은 지연시간 메모리(예를 들면, 레지스터들, 캐쉬들)의 제한된 크기 내에서 타일에 도달하는 다각형들로부터 업데이트들을 축적할 수 있다. 지연된 프레임 버퍼 병합 프로세스는 이하의 도 2에서 매우 상세하게 설명된다.
도 2는 본 발명의 일 실시예에 따라 프로세스(200)의 단계들의 흐름도를 도시한다. 도 2에서 묘사된 바와 같이, 프로세스(200)는 본 발명의 일 실시예에 따라 컴퓨터 시스템(예를 들면 컴퓨터 시스템(100))의 GPU(예를 들면, GPU(110))에 의해 구현되는 것과 같은 지연된 프레임 버퍼 병합 프로세스에 수반되는 동작 단계들을 묘사한다.
도 2의 프로세스(200) 실시예의 단계들은 명세서에서 도 1 및 도 3 내지 도 13의 예시적인 컴퓨터 시스템(100)의 문맥에서, 도 1 및 도 3 내지 도 13의 예시적인 컴퓨터 시스템(100)을 참조하여 설명된다.
프로세스(200)는 GPU(110)가 메모리 장소에 저장된 픽셀들의 그룹과 관련된 다각형을 액세스하는 단계(201)에서 시작한다. 렌더링 프로세스 동안, GPU(110)는 3-D 장면을 구성하는 오브젝트들의 형상들, 위치들 및 속성들을 규정하는, 보통 삼각형들(triangle polygons)인 프리미티브들(primitives)을 받는다. GPU의 하드웨어는 프리미티브들을 처리하고 실제적인 3D 이미지들을 디스플레이(112) 상에 생성하기 위해 필요한 연산들을 구현한다. 이 프로세스의 적어도 일 부분은 프레임 버퍼의 픽셀들에 다각형들을 래스터화(rasterization) 및 안티-에일리어싱하는 것을 수반하고, 그에 의해 장면을 구성하는 각각의 그래픽 프리미티브에 의해 프레임 버퍼의 각각의 픽셀가 영향을 받는 정도를 GPU(110)가 판정한다. 일 실시예에서, GPU(110)는 종종 타일들이라고 지칭되는 그룹들로서 픽셀들을 처리한다. 이러한 그룹들, 즉 타일들은 (예를 들면, 8, 12, 16 또는 그보다 많은 픽셀들을 갖는 타일들이 구현될 수 있음에도 불구하고) 통상적으로 타일당 4개의 픽셀을 포함한다. 일 실시예에서 GPU(110)는 두 개의 인접한 타일(예를 들어, 8개의 픽셀를 포함하는)을 처리하도록 구성된다.
단계(202)에서, 프로세스(200)는 그룹의 어느 픽셀들이 다각형에 의해 커버되는지를 결정한다. 어느 픽셀들이 다각형에 의해 커버되는지에 대한 이러한 결정은, 8개의 픽셀를 포함하는 그룹에 대해 래스터화되는 다각형(301)의 도면을 도시하는 도 3에 예시된다. 도 3은 각각 4개의 픽셀를 갖는 두 개의 나란한(side-by-side) 타일을 도시한다. 각 픽셀는 각각의 서브 픽셀(sub pixel)이 도 3에서 "x"로서 표시된 하나의 샘플 포인트를 갖는 4개의 서브 픽셀로 한층 더 분할되어, 예를 들면 4x 안티-에일리어싱에서 사용되는 것과 같은 16개의 샘플 포인트를 갖는다. 도 4는 다각형에 의해 커버되는 샘플 포인트들은 어둡고 다각형에 의해 커버 되지 않은 샘플 포인트들은 그렇지 않은 결과적인 샘플들을 도시한다. 도 4에서 도시된 바와 같이, 픽셀들은 A, B, C, D, E, F, G 및 H라고 라벨링된다. 픽셀 H는 완전히 커버되지 않았음을 주목해야 한다.
단계(203)에서, 커버리지 마스크는 다각형(301)에 의해 커버되는 샘플들에 대응하여 생성된다. 일 실시예에서, 커버리지 마스크는 그룹의 샘플당 1비트를 갖는 비트 마스크로서 구현될 수 있다. 따라서, 16비트는 그룹의 16개의 샘플들을 표현할 수 있고, 각각의 비트는 샘플들이 커버되었는지 아닌지에 따라 설정된다. 따라서, 다각형(301)이 그룹의 픽셀들을 부분적으로 커버하고, 16개의 샘플들을 부분적으로 커버하는 경우, 이러한 정보, 즉 커버리지 정도는 결과적인 커버리지 마스크 및 다각형(301)의 컬러를 타일을 저장하는 메모리 장소에 저장함으로써 그룹에 업데이트될 수 있다.
이러한 업데이트가 GPU(110) 내부의 메모리내에서 일어날 수 있다는 것을 주목하는 것은 중요하다. 이러한 메모리는 픽셀 그룹들이 다각형들에 대하여 래스터화되고 렌더링됨에 따라 그것을 저장한다. 그리하여 프레임 버퍼로부터 픽셀 그룹을 판독하고, 픽셀 그룹을 업데이트하고, 그 후 업데이트된 픽셀 그룹을 프레임 버퍼에 다시 기입할 (예를 들면, 판독-수정-기입) 필요 없이 다각형이 픽셀 그룹에 래스터화되고 렌더링 될 수 있다.
단계(204)에서, 픽셀들의 그룹은 커버리지 마스크 및 다각형의 대응하는 컬러를 그룹에 대한 메모리 장소에 저장함으로써 업데이트된다. 이것은 도 5에 도시된다. 픽셀 H가 완전히 커버되지 않았기 때문에 커버리지 마스크가 비어있는 메모 리에 저장된다는 것을 주목해야 한다. 도 5에서 예시된 바와 같이, 픽셀들의 그룹을 저장하는 메모리 장소는 4개의 사분면을 갖는 직사각형(500)으로서 묘사된다. 이 공간의 1/4 은(예를 들면, 좌측 상부 사분면) 8개의 픽셀의 압축된 배경 컬러, 또는 이전의 압축 컬러를 저장한다. 예를 들면, 하나의 이전의 다각형이 모든 8개의 픽셀를 완전히 커버하면, 샘플들은 4 대 1로 압축되어 픽셀당 하나의 컬러으로서 저장될 수 있다. 우측 상부 사분면은 커버리지 마스크(501)를 저장하고 픽셀들 A 내지 G에 대해 하나의 컬러를 저장한다. 상술한 바와 같이, 커버리지 마스크는 어떤 샘플들이 다각형에 의해 커버되는지를 나타낸다.
이러한 방식으로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는 업데이트를 프레임 버퍼에 병합할 필요성을 지연하면서 도달하는 픽셀 그룹에 도달하는 다각형들로부터 많은 업데이트들을 축적할 수 있다.
또한, 도 2의 프로세스(200)를 참조하면, 단계(205)에서, 메모리 장소(500)가 가득 찼는지에 대한 결정이 이루어진다. 일 실시예에서 GPU의 내부 메모리 내에 유지되는 많은 태그 비트를 모니터링하여 이러한 결정이 이루어지며, 태그 비트는 메모리 장소(500)의 어떤 위치가 가득 찼는지/비었는지를 나타낸다. 만약 메모리 장소가 가득 차지 않았다면, 프로세스(200)는 단계(206)로 진행하고 픽셀들의 그룹에 관련된 후속 다각형들을 처리하는 것을 계속하고, 각각의 후속 다각형들에 대하여, 단계(202) 내지 단계(204)를 수행한다. 예를 들면, 도 6은 픽셀들의 그룹을 커버하는 후속 다각형(601)을 도시하고, 도 7은 완전히 커버되지 않은 픽셀 A와 함께, 다각형(601)에 의해 커버되는 픽셀들의 샘플들을 도시하고, 도 8은 메모리 장소(500)의 좌측 하부 사분면에 저장된 결과적인 커버리지 마스크(801) 및 다각형(601)의 컬러를 도시한다. 그리고, 도 9는 픽셀들의 그룹을 커버하는 후속 다각형(901)을 도시하고 도 10은 완전히 커버되지 않은 픽셀들 C, D, G 및 H와 함께 다각형(901)에 의해 커버되는 픽셀들의 샘플들을 도시하고, 도 11은 메모리 장소(500)의 우측 하부 사분면에 저장된 결과적인 커버리지 마스크(1001)와 다각형(901)의 컬러를 도시한다.
이러한 방식으로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는 픽셀 그룹에 도달하는 다각형들로부터 많은 업데이트를 축적할 수 있고, 따라서, 픽셀 그룹에 대한 메모리가 가득찰 때까지 병합 동작의 필요성을 지연할 수 있다. 이는 소정의 장면을 랜더링하도록 수행되어야 하는 프레임 버퍼에 판독, 수정, 및 기입하는데 각각 시간을 소모하는 병합 동작의 총 수를 감소시킨다. 상술된 바와 같이, 픽셀 그룹은 각각의 다각형에 대해 프레임 버퍼에의 병합을 강제하지 않고 후속 다각형들을 이용하여 업데이트될 수 있다.
단계(207)에서, 메모리 장소(500)가 도 11에서 도시된 바와 같이 가득찼을 때, 이후의 다각형이 도래하면, 메모리 장소(500)에 저장된 정보는 압축풀기(uncompressed)되어 새로운 다각형과 합성될 필요가 있다. 이러한 정보는 그 후 프레임 버퍼로 병합될 수 있다. 일단 프레임 버퍼에 병합되면, 정보는 압축되지 않은 형태로 남을 수 있다.
일 실시예에서, 정보가 프레임 버퍼로 병합된 후, GPU(110)는 픽셀 그룹의 컬러 정보를 재압축할 수 있고 픽셀 그룹을 낮은 지연시간 메모리에 압축된 형태로 저장할 수 있다. 이러한 컬러 정보는 상술된 바와 같은 커버리지 마스크들 및 컬러들을 사용하여 압축될 수 있다. 이 프로세스는 도 12에 예시되어 있으며, 후속 다각형(1201)이 픽셀 그룹을 커버한다. 메모리 장소(500)에 저장된 정보가 압축풀기되고 다각형(1201)과 합성된 후에, 그 정보는 다시 압축되어 도 13에 도시된 바와 같이 메모리 장소(500) 내에 저장된다. 도 13은 좌측 상단 사분면에 제1 컬러(예를 들어, 배경 컬러), 우측 상단 사분면에 커버리지 마스크(1301) 및 커버리지 마스크(1301)에 대응하는 제2 컬러, 그리고 좌측 하단 사분면에 커버리지 마스크(1302) 및 커버리지 마스크(1302)에 대응하는 제3 컬러를 갖는 메모리 장소(500)를 도시한다. 따라서, 재압축 후에, 메모리 장소(500)의 우측 하단 사분면은 다른 다각형을 수신하기 위해 오픈(open)된다.
그룹의 픽셀들 전체를 완전히 커버하는 후속 다각형이 수신된 경우, 각 픽셀의 모든 샘플들은 동일한 컬러일 것이고, 따라서 예를 들어, 좌측 상단 사분면에 단일 컬러로서 압축되어 저장된 4 대 1일 수 있다는 것에 주목해야 한다. 비록 본 발명의 실시예들은 4x 멀티샘플링(multisampling)의 문맥으로 설명되었지만, 본 발명은 훨씬 더 높은 레벨의 멀티샘플링(예를 들어 8x 멀티샘플링 등)이 실행되는 상황들에서, 그리고 안티-에일리어싱 이외의 애플리케이션들에서 훨씬 더 유용하다는 것에 주목해야 한다.
또한, 일 실시예에서, 픽셀들의 그룹에 대해 메모리 장소(500)의 상태를 추적하기 위해 GPU(110)에 의해 태그 값이 이용된다는 것에 주목해야 한다. 이 태그 값은 GPU(110)가 메모리 장소(500)에 업데이트되어 있는 다각형의 수를 추적할 수 있게 한다. 예를 들어, 일 실시예에서, 태그 값은 3 비트 값으로 구현될 수 있으며, 예를 들어, 태그 값 0은 픽셀 당 한 컬러를 갖는 4 대 1 압축을 나타내고, 태그 값 1은 도 5에 도시된 바와 같이 메모리 장소(500)의 2개의 사분면이 점유된 4 대 1 압축을 나타내고, 태그 값 3은 도 8에 도시된 바와 같이 메모리 장소(500)의 3개의 사분면이 점유된 4 대 1 압축을 나타내고, 태그 값 4는 도 11에 도시된 바와 같이 메모리 장소(500)의 모든 4개의 사분면이 점유된 4 대 1 압축을 나타낸다.
도 14 내지 도 16은 본 발명의 대안적인 실시예에 따른 지연된 프레임 버퍼 병합 프로세스를 예시한다. 대안적인 실시예에서, 태그는 메모리 장소(500)의 프리 포인터(free pointer)로서 구현된다. 이러한 실시예에서, 메모리 장소(500)는 프레임 버퍼와 병합을 수행할 필요 없이 6 업데이트들을 지원할 수 있다. 이러한 실시예에서, 태그 값들은 다음의 의미를 갖도록 구현될 수 있다.
0 = 압축풀기
1 = 완전 압축, 샘플 8에서 프리 포인터
2 = 다수의 단편(fragment), 샘플 12에서 프리 포인터
3 = 샘플 16에서 프리 포인터
4 = 샘플 20에서 프리 포인터
5 = 샘플 24에서 프리 포인터
6 = 샘플 28에서 프리 포인터
7 = 가득 찼지만 여전히 분해되지 않은 메모리 장소(500)
도 14는 표시된 샘플 위치들에 따라 컬러들을 갖는 픽셀 그룹을 도시한다. 도 15는 전술한 도 12의 설명에서 기술한 방식하에서 컬러 정보가 저장되는 메모리 장소(500)를 도시한다. 도 16은 메모리의 (찬/비어 있는) 상태를 나타내는 태그 값이다. 태그 값은 메모리에서 다음 비어있는 장소(free location)가 있는 곳을 나타낸다. 이는 GPU 하드웨어가 데이터의 다음 블록을 저장하는 곳을 알게 한다. 업데이트가 4개 이상의 입력을 요구하는 경우에 태그는 2만큼 증가된다. 따라서, 도 16은 태그 값들을 도시하며, 대안적인 실시예에 따르면, 태그 값 1은 메모리 장소(500)의 샘플 위치 8에 저장된 "1"로서 도시되고, 태그 값(2)은 샘플 위치(16)에서 "2"로서 도시되고, 이와 같은 방식으로 하여, 태그 값(6)은 샘플 위치(28)에서 "6"으로서 도시된다. 도 17은 본 발명의 대안적인 실시예의 방식하에서 컬러 정보가 저장되는 메모리 장소(500)를 도시한다. 따라서, 도 17에도시된 바와 같이, 픽셀 그룹은 배경 컬러, 그리고 샘플 위치들(12 및 8)에 각각 저장된 결과로서 생긴 커버리지 마스크들 (1701 및 1702), 및 거기에 인접해서 저장된 커버리지 마스크(1701 및 1702)와 관련된 컬러들을 갖는 6개의 새로운 업데이트된 컬러들을 가질 수 있다.
도 18 내지 도 20은, 커버리지 마스크들이 후속하여 도달하는 다각형들로부터 업데이트들을 캡처하는 방식을 시각적으로 예시한다. 예를 들어, 도 18은 커버리지 마스크(1701)에 의해 표시되는 2개의 샘플들 및 그들 각각의 컬러들을 도시하고, 도 19는 커버리지 마스크(1702)에 의해 표시되는 2개의 샘플들 및 그들 각각의 컬러들을 도시한다. 도 20은 픽셀들의 그룹의 최종 상태가 메모리 장소(500) 내에 구축되는 방식을 예시하는 픽셀들의 그룹의 3개의 연속하는 상태들을 도시하며, 상 태(2002)는 처음 2개의 샘플을 도시하고, 상태(2003)은 다음 2개의 샘플을 도시하고, 상태(2004)는 배경 컬러들과 합성될 때의 컬러들을 도시하고, 최종 상태(2005)는 메모리 장소(500) 내에 저장되는 결과적인 정보를 도시한다.
그러므로, 대안적인 실시예에 따르면, 32 바이트 기입들보다 효율적일 필요가 없는 16 바이트 기입들이 요구되지만, 여전히 프레임 버퍼로부터의 판독을 절감한다. 더 짙은 픽셀들 또는 더 큰 픽셀 풋프린트들(footprints)에 의하면, 대안적인 실시예 방법은 여전히 3 비트 태그로 기능할 수 있다. 전술한 예들에서, 픽셀 그룹들은 8개의 픽셀 풋프린트를 포함한다. 픽셀 풋프린트가 16 픽셀 그룹들을 포함하는 경우, 프로세서는 8개의 샘플 증분 또는 32 바이트 그레인(grains)에 저장소를 할당한다. 대안적으로, 8 바이트 픽셀들이 기입되고 있는 경우, 본 명세서에서 이용된 바와 같은 2x4 픽셀 그룹은 32 바이트 기입들을 생성하기 위해 적절하게 수행한다.
본 발명을 간략하게 요약하면 다음과 같이 개시된다.
[개념 1]
프레임 버퍼 병합 방법으로서,
메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형(polygon)을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
상기 다각형에 의해 커버되는 상기 픽셀들을 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스 크(coverage mask)를 생성하는 단계;
상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
상기 픽셀들의 그룹을 프레임 버퍼에 계속해서 병합하는 단계
를 포함하는 프레임 버퍼 병합 방법.
[개념 2]
개념 1에 있어서,
상기 픽셀들의 그룹에 관련되는 복수의 후속 다각형을 액세스하는 단계; 및
상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각 후속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 3]
개념 2에 있어서,
태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 4]
개념 2에 있어서,
상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 가득 찰 때를 결정하는 단계; 및
메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 5]
개념 4에 있어서,
상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 6]
개념 4에 있어서,
상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계는, 상기 프레임 버퍼에의 다수의 액세스를 감소시키도록 구성되는 프레임 버퍼 병합 방법.
[개념 7]
개념 1에 있어서,
상기 픽셀들의 그룹을 상기 메모리 장소에 업데이트하는 단계는, 4 대 1 압축(4 to 1 compression)을 야기하는 프레임 버퍼 병합 방법.
[개념 8]
메모리에 연결된 프로세서를 갖는 컴퓨터 시스템에 의해 실행될 때, 상기 컴퓨터 시스템이 지연된 프레임 버퍼 병합을 위한 컴퓨터 판독가능한 매체를 구현하 게 하는 컴퓨터 판독가능한 코드를 저장하는 컴퓨터 판독가능한 매체로서,
메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
상기 다각형에 의해 커버되는 상기 픽셀들을 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스크를 생성하는 단계;
상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계;
상기 픽셀들의 그룹에 관계되는 복수의 후속 다각형을 액세스하는 단계;
상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각각의 후속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
상기 픽셀들의 그룹을 프레임 버퍼에 계속해서 병합하는 단계
를 포함하는 컴퓨터 판독가능한 매체.
[개념 9]
개념 8에 있어서,
태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하 는 컴퓨터 판독가능한 매체.
[개념 10]
개념 8에 있어서,
상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 가득 찰 때를 결정하는 단계; 및
메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 컴퓨터 판독가능한 매체.
[개념 11]
개념 10에 있어서,
상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 컴퓨터 판독가능한 매체.
[개념 12]
개념 10에 있어서,
상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계는, 상기 프레임 버퍼에의 다수의 액세스를 감소시키도록 구성되는 컴퓨터 판독가능한 매체.
[개념 13]
개념 8에 있어서,
상기 픽셀들의 그룹을 상기 메모리 장소에 업데이트하는 단계는, 4 대 1 압 축을 야기하는 컴퓨터 판독가능한 매체.
[개념 14]
컴퓨터 시스템으로서,
프로세서;
상기 프로세서에 연결된 시스템 메모리; 및
상기 프로세서에 연결된 그래픽 처리 유닛
을 포함하고,
상기 그래픽 처리 유닛은, 상기 그래픽 처리 유닛이 지연된 프레임 버퍼 병합을 위한 수법을 구현하게 하는 컴퓨터 판독가능한 코드를 실행하도록 구성되고,
상기 지연된 프레임 버퍼 병합을 위한 수법은,
메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
상기 픽셀들 중 어느 것이 상기 다각형에 의해 커버되는지를 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스크를 생성하는 단계;
상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계;
상기 픽셀들의 그룹에 관계되는 복수의 후속 다각형을 액세스하는 단계;
상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각각의 후 속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
후속해서 상기 픽셀들의 그룹을 프레임 버퍼에 병합하는 단계
를 포함하는 컴퓨터 시스템.
[개념 15]
개념 14에 있어서,
태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 시스템.
[개념 16]
개념 14에 있어서,
상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 언제 가득 차는지를 결정하는 단계; 및
메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 컴퓨터 시스템.
[개념 17]
개념 16에 있어서,
상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀 들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 컴퓨터 시스템.
[개념 18]
개념 14에 있어서,
태그 값을 프리 포인터(free pointer)로서 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 시스템.
[개념 19]
개념 14에 있어서,
상기 프레임 버퍼는 상기 시스템 메모리에 저장되는 컴퓨터 시스템.
[개념 20]
개념 14에 있어서,
상기 프레임 버퍼는 상기 그래픽 처리 유닛에 연결된 로컬 그래픽 메모리에 저장되는 컴퓨터 시스템.
대체로, 본 발명은 적어도 지연된 프레임 버퍼 병합을 위한 방법을 개시한다. 이 방법은 메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계를 포함할 수 있고, 픽셀들의 각각은 기존 컬러를 갖는다. 다각형에 의해 커버되는 픽셀들에 대하여 결정이 행해질 수 있으며, 각각의 픽셀은 복수의 샘플을 포함한다. 다각형에 의해 피복되는 샘플들에 대응하여 커버리지 마스크가 생성될 수 있다. 픽셀들의 그룹은 메모리 장소에 커버리지 마스크 및 다각형의 컬러 를 저장함으로써 업데이트될 수 있다. 후속 시간에, 픽셀들의 그룹은 프레임 버퍼 에 병합될 수 있다.
본 발명의 특정 실시예들의 전술한 설명들은 예시 및 설명을 위해 제시되었다. 전술한 설명들은 본 발명을 개시된 정확한 형태들로 한정하기 위한 것이 아니며, 전술한 교시에 비추어 많은 수정들 및 변형들이 가능하다. 본 실시예들은 본 발명의 원리들 및 그의 실제 응용을 가장 잘 설명하기 위하여 선택되어 기술되었으므로, 이 기술분야의 당업자들이, 본 발명, 및 고려되는 특정 용도로 적합되는 다양한 수정들이 이루어진 다양한 실시예들을 가장 잘 이용할 수 있게 한다. 본 발명의 범위는 본 명세서에 첨부된 특허청구의 범위 및 그 등가물들에 의해 정의되는 것으로 의도된다.
본 발명의 지연된 프레임 버퍼 병합 프로세스는, 프레임 버퍼에 대해 판독 및 기입을 해야하고 이에 의해 높은 지연시간 성능 불이익들을 일으키는 것과는 반대로, 낮은 지연시간 메모리(예를 들어, 레지스터, 캐쉬) 내에서 픽셀 그룹에 도달하는 다각형들로부터 업데이트들을 축적할 수 있다. 따라서, 지연된 프레임 버퍼 병합 프로세스는 로컬 그래픽 메모리 및 시스템 메모리의 더 높은 데이터 액세스 지연시간들에 의해 부과되는 병목현상들을 개선한다.
첨부
프레임 버퍼 병합{FRAME BUFFER MERGING}
기술분야
본 발명은 일반적으로 그래픽 컴퓨터 시스템에 관한 것으로, 적어도 압축을 갖는 지연된 프레임 버퍼 병합을 개시한다.
배경
일반적으로, 3D 이미지 데이터를 처리하는데 적합한 컴퓨터 시스템은 종래의 CPU(central processing unit) 이외에, 특수 그래픽 프로세서 유닛, 즉 GPU를 포함한다. GPU는 3D 컴퓨터-생성 오브젝트들을 처리하도록 구성된 특수 하드웨어를 포함한다. GPU는 오브젝트들의 형상, 위치 및 속성을 정의하는 데이터 모델들의 세트 및 그들의 컴포넌트 "프리미티브들(primitives)"(통상 수학적으로 기술된 삼각 다각형들)에 대해 동작하도록 구성된다. GPU의 하드웨어는 오브젝트들을 처리하여, 컴퓨터 시스템의 디스플레이 상에 사실적인 3D 이미지들을 생성하는데 요구되는 계산들을 구현한다.
통상의 그래픽 렌더링 프로세스의 성능은 시스템의 기본적인 하드웨어의 성능에 크게 좌우된다. 고성능 실시간 그래픽 렌더링은 3D 오브젝트 데이터 및 컴포넌트 프리미티브들을 저장하는 메모리에 대한 낮은 대기 시간과 높은 데이터 전송 대역폭을 요구한다. 따라서, 전송 대역폭을 증가시키고 메모리에 대한 데이터 액세스 지연시간(latency)을 감소시키는데 상당한 양의 개발 노력을 기울이고 있다.
따라서, 보다 고가인 종래의 GPU 서브시스템들(예를 들어, 그래픽 카드가 구비된 GPU 등)은 통상적으로 GPU에 요구된 데이터를 공급하기 위한 크고(예를 들어 128 MB 이상) 전문화된, 고가의, 높은 대역폭 로컬 그래픽 메모리들을 포함한다. 이러한 GPU들은 종종 매우 낮은 데이터 액세스 지연시간을 갖는 레지스터들의 세트 들과 대형의 온칩 캐쉬들을 포함한다. 덜 고가인 종래의 GPU 서브시스템들은 보다 작은(예를 들어, 64MB 이하) 그러한 로컬 그래픽 메모리들을 포함하고, 가장 덜 고가인 GPU 서브시스템들의 일부는 로컬 그래픽 메모리를 갖지 않으며, 대신에 그래픽 렌더링 데이터를 저장하기 위해 시스템 메모리에 의존한다.
상술된 유형의 종래의 GPU들 각각이 갖는 문제점은 시스템 메모리, 또는 로컬 그래픽 메모리에 대한 데이터 전송 대역폭이 GPU 내부에 있는 캐쉬들과 레지스터들에 대한 데이터 전송 대역폭보다 매우 작다는 점이다. 예를 들어, GPU들은 커맨드 스트림들과 장면 기술들을 판독하고 프레임 버퍼의 각 픽셀들이 장면을 포함하는 그래픽 프리미티브들의 각각에 의해 영향을 받는 정도를 결정할 필요가 있다. 이러한 프로세스는 픽셀 데이터를 저장하는 프레임 버퍼 메모리에 대해 다수의 판독과 기입을 유발할 수 있다. 온칩 캐쉬들과 레지스터들은 매우 낮은 액세스 지연시간을 제공하지만, 주어진 장면에서의 다수의 픽셀들(예를 들어, 1280x1024, 1600x1200 등)은 프레임 버퍼에 대한 다수의 액세스를 불가피하게 한다.
이에 따라 전반적인 그래픽 렌더링 프로세스에는 큰 지연시간이 유도하는 성능 불이익들(penalties)이 부과된다. 시스템 메모리 내에 그들의 프레임 버퍼들을 저장하는 GPU들에 대한 성능 불이익들이 더 크다. 픽셀 당 다수의 샘플들에 대한 판독 및 기입을 요구하는 렌더링 프로세스들(예를 들어, 안티-에일리어싱(anti-aloasing) 등)은 그러한 지연시간이 유도하는 성능 불이익들에 특히 민감하다.
따라서, 로컬 그래픽 메모리에 대한 통신 경로 및/또는 시스템 메모리에 대한 통신 경로의 데이터 전송 지연시간에 의해 부과되는 제약들을 감소시킬 수 있는 해결책이 요구된다. 본 발명은 상기 요건들에 대한 새로운 해결책을 제공한다.
개요
일 실시예에서, 본 발명은 지연된 프레임 버퍼 병합을 위한 GPU 구현 방법으로서 구현된다. 상기 방법은 메모리 장소에 저장된 픽셀들의 그룹에 관한 다각형(예를 들어, 하나 이상의 타일들)을 액세스하는 단계를 포함하며, 여기서 픽셀들의 각각은 기존의 컬러를 가진다. 다각형에 의해 어떤 픽셀들이 커버되는지에 대한 결정이 이루어지며, 여기서 각 픽셀은 복수의 샘플을 포함한다. 다각형에 의해 커버되는 샘플들에 대응하는 커버리지 마스크(coverage mask)가 생성된다. 픽셀들의 그룹은 다각형의 컬러와 커버리지 마스크를 메모리 장소에 저장함으로써 업데이트된다. 후속 시간에, 픽셀들의 그룹은 프레임 버퍼에 병합된다.
일 실시예에서, 다수의 다각형들이 픽셀 그룹에 업데이트되며, 이에 의해 GPU는 픽셀들의 그룹에 관련된 다수의 후속 다각형들(예를 들어, 픽셀들을 부분적으로 커버하는 후속 다각형들)을 액세스한다. 후속 다각형들의 각각에 대해, 각 후속 다각형들의 각각의 커버리지 마스크와 각각의 컬러를 메모리 장소에 저장함으로써 픽셀들의 그룹이 업데이트된다.
일 실시예에서, 픽셀들의 그룹을 저장하는 메모리 장소의 상태를 추적하기 위하여 태그값이 사용되고, 여기서 태그값은 후속 다각형들에 따라 업데이트된다. 부가적으로, 태그값은 픽셀들의 그룹을 저장하는 메모리 장소가 언제 차 있는지를 결정하고, 이에 의해 픽셀들의 그룹이 언제 프레임 버퍼에 병합되어야 하는지를 나타내기 위해 사용될 수 있다.
이러한 방식으로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는, 프레임 버퍼에 대해 판독 및 기입을 해야하고 이에 의해 높은 지연시간 성능 불이익들을 일으키는 것과는 반대로, 낮은 지연시간 메모리(예를 들어, 레지스터, 캐쉬) 내에서 픽셀 그룹에 도달하는 다각형들로부터 업데이트들을 축적할 수 있다. 따라서, 지연된 프레임 버퍼 병합 프로세스는 로컬 그래픽 메모리 및 시스템 메모리의 더 높은 데이터 액세스 지연시간들에 의해 부과되는 병목현상들을 개선한다.
도면의 간략한 설명
본 발명은 한정하는 것이 아니라 예로서 도시되고, 이들 도면 내에서 유사한 참조 부호는 유사한 구성요소를 지칭한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 도시하는 도면.
도 2는 본 발명의 일 실시예에 따른 프로세스 단계들의 흐름도.
도 3은 본 발명의 일 실시예에 따라, 그룹의 어떤 픽셀들이 다각형에 의해 커버되는지에 대한 결정의 예를 도시하는 도면.
도 4는 본 발명의 일 실시예에 따라, 픽셀들의 그룹에 대한 다각형의 커버리지 평가로부터 나오는 결과적인 샘플들을 도시하는 도면.
도 5는 본 발명의 일 실시예에 따라, 픽셀들의 그룹에 대한 메모리 장소에 저장된 커버리지 마스크를 도시하는 도면.
도 6은 본 발명의 일 실시예에 따라, 픽셀들의 그룹을 커버하는 후속 다각형들을 도시하는 도면.
도 7은 본 발명의 일 실시예에 따라, 하나의 픽셀이 완전히 커버되지 않는 경우에 다각형에 의해 커버되는 픽셀들의 샘플들을 도시하는 도면.
도 8은 본 발명의 일 실시예에 따라, 메모리 장소의 하나의 4분면에 저장된 다각형의 결과적인 커버리지 마스크와 컬러를 도시하는 도면.
도 9는 본 발명의 일 실시예에 따라, 픽셀들의 그룹을 커버하는 후속 다각형을 도시하는 도면.
도 10은 본 발명의 일 실시예에 따라, 하나의 픽셀이 완전히 커버되지 않은 경우에 다각형에 의해 커버되는 픽셀들의 샘플들을 도시하는 도면.
도 11은 본 발명의 일 실시예에 따라, 메모리 장소의 우측 하부 4분면에 저장된 다각형의 결과적인 커버리지 마스크 및 컬러를 도시하는 도면.
도 12는 본 발명의 일 실시예에 따라, 픽셀 그룹을 커버하는 후속 다각형을 도시하는 도면.
도 13은 본 발명의 일 실시예에 따라, 메모리 장소의 좌측 상부 4분면에서 제1 컬러를 갖는 메모리 장소를 도시하는 도면.
도 14는 본 발명의 다른 실시예에 따라, 지연된 프레임 버퍼 병합 프로세스에 의해 동작되는 픽셀 그룹을 도시하는 도면.
도 15는 본 발명의 실시예에 따라, 컬러 정보가 한 방식하에서 저장되는 메모리 장소를 도시하는 도면.
도 16은 본 발명의 다른 실시예에 따른, 제2 방식 하에서의 태그값들을 도시하는 도면.
도 17은 본 발명의 다른 실시예 하에서 컬러 정보가 저장되는 메모리 장소의 제2 실례를 도시하는 도면.
도 18은 본 발명의 일 실시예에 따라, 2개의 샘플들과 그에 대응하는 커버리지 마스크들로 표시된 그들 각각의 컬러들을 도시하는 도면.
도 19는 본 발명의 실시예에 따라, 2개의 부가 샘플들 및 그에 대응하는 커버리지 마스크들로 표시된 그들 각각의 컬러들을 도시하는 도면.
도 20은 본 발명의 일 실시예에 따라, 컬러 정보가 합성되는 픽셀 그룹의 연속적인 상태들을 도시하는 도면.
도 21은 본 발명의 일 실시예에 따라, 시스템 메모리, 로컬 그래픽 메모리, 및 캐쉬 메모리와 레지스터들의 데이터 액세스 대기시간 사이의 상대적인 차이들을 도시하는 도면.
발명의 상세한 설명
이제 본 발명의 바람직한 실시예에 대한 참조가 상세하게 이루어질 것이고, 상기 예들은 첨부 도면에 도시된다. 본 발명은 바람직한 실시예들과 관련하여 설명될 것이고, 발명을 이러한 실시예들로 제한하도록 의도되지 않는다는 것을 이해할 것이다. 반대로, 본 발명은 첨부된 특허청구범위에 의해 정의되는 본 발명의 사상 및 범위 내에 포함될 수 있는 변경, 수정 및 등가물들을 포함하도록 의도된다. 또한, 본 발명의 실시예들에 대한 다음의 상세한 설명에는, 본 발명의 전반적인 이해를 제공하기 위해 다수의 특정 상세들이 개시된다. 그러나, 본 기술 분야의 당업자라면 본 발명이 이러한 특정 상세들 없이 실시될 수 있다는 것을 인식할 것이다. 다른 예에서는, 본 발명의 실시예들의 특징들을 불필요하게 모호하게 하 지 않기 위해 공지된 방법들, 절차들, 구성요소들, 및 회로들이 상세하게 기술되지 않는다.
주석 및 명명법:
이어지는 상세한 설명들의 일부들은 절차들, 단계들, 논리 블록들, 프로세싱, 및 컴퓨터 메모리 내에서의 데이터 비트들에 대한 기타의 상징적인 동작 표현들의 관점으로 제시된다. 이러한 기술들 및 표현들은 데이터 프로세싱 분야의 당업자가 다른 당업자에게 그들의 연구 내용을 가장 효과적으로 전달하기 위해 사용하는 수단이다. 절차, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기에서 일반적으로, 바람직한 결과를 유도하는 단계들 또는 명령어들의 일관성있는 문장이 되도록 고안된다. 단계들은 물리적인 양들의 물리적인 조작을 요구하는 것들이다. 보통, 반드시는 아니지만, 이러한 양들은 컴퓨터 시스템에서 저장되고, 전송되고, 연결되고, 비교되고 아니면 조작될 수 있는 전기적 또는 자기적 신호들의 형태를 취한다. 주로 공공의 사용을 이유로, 이러한 신호들을 비트들, 값들, 요소들, 심볼들(symbols), 문자들, 용어들, 숫자들 등으로서 나타내는 것이 때때로 편리하다는 것이 입증되었다.
그러나 모든 이러한 그리고 유사한 용어들이 적절한 물리적 양들과 관련되고 단순히 이러한 양들에 적용된 편리한 라벨들이라는 것을 염두에 두어야 한다. 구체적으로 언급되지 않는다면, 또는 이하의 논의로부터 명백한 바와 같이, 본 발명에 걸쳐 "프로세싱(processing)" 또는 "액세싱(accessing)" 또는 "압축(compressing)" 또는 "저장(storing)" 또는 "렌더링(rendering)" 등과 같은 용어 들을 이용하는 논의들은 컴퓨터 시스템(예를 들면 도 1의 컴퓨터 시스템(100)), 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내의 물리적(전자적) 양들로서 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 디바이스들 내의 물리적 양들로서 유사하게 표현되는 다른 데이터로 조작하고 변환하는 유사한 전자 컴퓨팅 디바이스의 작용 및 프로세스에 관련된다는 것을 이해해야 한다.
컴퓨터 시스템 플랫폼
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)을 도시한다. 컴퓨터 시스템(100)은 소정의 하드웨어 기반 및 소프트웨어 기반 기능을 실행 플랫폼에 제공하는 기초 컴퓨터 시스템의 컴포넌트들을 묘사한다. 일반적으로, 컴퓨터 시스템(100)은 적어도 하나의 CPU(101), 시스템 메모리(115) 및 적어도 하나의 GPU(graphics processor unit)(110)를 포함한다. CPU(101)는 브리지 컴포넌트(105)를 통하여 시스템 메모리(115)에 연결될 수 있거나, 또는 CPU(101) 내부의 메모리 컨트롤러(도시 안됨)를 통하여 시스템 메모리(115)에 직접 연결될 수 있다. 브리지 컴포넌트(105)(예를 들면, 노스브리지)는 다양한 I/O 디바이스(예를 들면 하나 이상의 하드 디스크 드라이브, 이더넷 어댑터, CD ROM, DVD 등)를 접속하는 확장 버스들(예를 들면, 확장 버스 (106))를 지원할 수 있다. GPU(110)는 디스플레이(112)에 연결된다. 하나 이상의 부가적인 GPU는 시스템(100)의 컴퓨팅 성능을 한층 더 증가시키기 위해 시스템(100)에 선택적으로 연결될 수 있다. GPU(들)(110)는 브리지 컴포넌트(105)를 통하여 CPU(101)와 시스템 메모리(115)에 연결된 다. 시스템(100)은 전용 그래픽 렌더링 GPU(110)에 연결된 강력한 범용 CPU(101)를 가지는, 예를 들면, 데스크톱 컴퓨터 시스템 또는 서버 컴퓨터 시스템으로서 구현될 수 있다. 그러한 실시예에서, 컴포넌트들은 주변 버스들, 전용 로컬 그래픽 메모리, IO 디바이스들 등을 더하는 것에 포함될 수 있다. 유사하게, 시스템(100)은 핸드헬드 디바이스(예를 들면, 휴대폰 등) 또는 예를 들면, 워싱톤 주 레드몬드의 마이크로소프트사로부터 입수 가능한 Xbox®, 또는 일본 도쿄의 소니 컴퓨터 엔터테인먼트사로부터 입수 가능한 PlayStation3®와 같은 셋톱 비디오 게임 콘솔 디바이스로서 구현될 수 있다.
GPU(110)는 개별적인 컴포넌트, 커넥터(예를 들면, AGP 슬롯, PCI-Express 슬롯 등)를 통하여 컴퓨터 시스템(100)에 연결되도록 설계된 개별적인 그래픽 카드, (예를 들면, 마더보드 상에 직접 실장된) 개별적인 집적 회로 다이, 또는 (예를 들면, 브리지 칩(105) 내에 내장된) 컴퓨터 시스템 칩셋 컴포넌트의 집적된 회로 다이 내에 포함된 내장형 GPU(integrated GPU)로서 구현될 수 있다. 부가적으로, 로컬 그래픽 메모리(116)는 GPU(110)가 높은 대역폭 그래픽 데이터 저장소를 제공하기 위해 선택적으로 포함될 수 있다.
본 기재의 실시예들
본 기재의 실시예들은 지연된 프레임 버퍼 병합을 위한 방법을 구현한다. 일 실시예에서, GPU는 커버리지 마스크를 저장하기 위해 프레임 버퍼 타이틀의 서브 포션(sub-portion) 및 태그 값을 이용한다. 커버리지 마스크는 타일(tile)의 커버리지(예를 들면, 커버된 샘플들의 수)에 대응한다. 프레임 버퍼 타일을 구성 하는 픽셀들은 다각형의 컬러 및 다각형의 커버리지 마스크를 타일을 저장하는 메모리 장소(memory location)에 저장함으로써 압축 상태로 저장될 수 있다. 더욱이, 새로운 다각형에 대한 후속 커버리지 마스크 및 새로운 다각형에 대한 컬러를 메모리 장소에 저장함으로써 부가적인 다각형들은 타일로 렌더링될 수 있다.
이것은 프레임 버퍼에 액세스 또는 기입할 필요 없이 새로운 다각형들이 타일에 렌더링되는 것을 가능하게 한다. 예를 들면, 다각형들은 타일이 가득찰 때까지, 즉 타일이 프레임 버퍼에 병합될 수 있는 시점까지 지연된 프레임 버퍼 병합 프로세스를 사용하여 타일에 렌더링될 수 있다. 이러한 방식으로, (예를 들면, 로컬 그래픽 메모리(116) 또는 시스템 메모리(115) 내에 저장된) 프레임 버퍼에 대해 판독 및 기입을 해야 하는 것 및 그에 의해 높은 지연시간 성능 불이익들을 발생시키는 것과는 반대로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는 GPU(110)의 낮은 지연시간 메모리(예를 들면, 레지스터들, 캐쉬들)의 제한된 크기 내에서 타일에 도달하는 다각형들로부터 업데이트들을 축적할 수 있다. 지연된 프레임 버퍼 병합 프로세스는 이하의 도 2에서 매우 상세하게 설명된다.
도 2는 본 발명의 일 실시예에 따라 프로세스(200)의 단계들의 흐름도를 도시한다. 도 2에서 묘사된 바와 같이, 프로세스(200)는 본 발명의 일 실시예에 따라 컴퓨터 시스템(예를 들면 컴퓨터 시스템(100))의 GPU(예를 들면, GPU(110))에 의해 구현되는 것과 같은 지연된 프레임 버퍼 병합 프로세스에 수반되는 동작 단계들을 묘사한다.
도 2의 프로세스(200) 실시예의 단계들은 명세서에서 도 1 및 도 3 내지 도 13의 예시적인 컴퓨터 시스템(100)의 문맥에서, 도 1 및 도 3 내지 도 13의 예시적인 컴퓨터 시스템(100)을 참조하여 설명된다.
프로세스(200)는 GPU(110)가 메모리 장소에 저장된 픽셀들의 그룹과 관련된 다각형을 액세스하는 단계(201)에서 시작한다. 렌더링 프로세스 동안, GPU(110)는 3-D 장면을 구성하는 오브젝트들의 형상들, 위치들 및 속성들을 규정하는, 보통 삼각형들(triangle polygons)인 프리미티브들(primitives)을 받는다. GPU의 하드웨어는 프리미티브들을 처리하고 실제적인 3D 이미지들을 디스플레이(112) 상에 생성하기 위해 필요한 연산들을 구현한다. 이 프로세스의 적어도 일 부분은 프레임 버퍼의 픽셀들에 다각형들을 래스터화(rasterization) 및 안티-에일리어싱하는 것을 수반하고, 그에 의해 장면을 구성하는 각각의 그래픽 프리미티브에 의해 프레임 버퍼의 각각의 픽셀가 영향을 받는 정도를 GPU(110)가 판정한다. 일 실시예에서, GPU(110)는 종종 타일들이라고 지칭되는 그룹들로서 픽셀들을 처리한다. 이러한 그룹들, 즉 타일들은 (예를 들면, 8, 12, 16 또는 그보다 많은 픽셀들을 갖는 타일들이 구현될 수 있음에도 불구하고) 통상적으로 타일당 4개의 픽셀을 포함한다. 일 실시예에서 GPU(110)는 두 개의 인접한 타일(예를 들어, 8개의 픽셀를 포함하는)을 처리하도록 구성된다.
단계(202)에서, 프로세스(200)는 그룹의 어느 픽셀들이 다각형에 의해 커버되는지를 결정한다. 어느 픽셀들이 다각형에 의해 커버되는지에 대한 이러한 결정은, 8개의 픽셀를 포함하는 그룹에 대해 래스터화되는 다각형(301)의 도면을 도시하는 도 3에 예시된다. 도 3은 각각 4개의 픽셀를 갖는 두 개의 나란한(side-by- side) 타일을 도시한다. 각 픽셀는 각각의 서브 픽셀(sub pixel)이 도 3에서 "x"로서 표시된 하나의 샘플 포인트를 갖는 4개의 서브 픽셀로 한층 더 분할되어, 예를 들면 4x 안티-에일리어싱에서 사용되는 것과 같은 16개의 샘플 포인트를 갖는다. 도 4는 다각형에 의해 커버되는 샘플 포인트들은 어둡고 다각형에 의해 커버되지 않은 샘플 포인트들은 그렇지 않은 결과적인 샘플들을 도시한다. 도 4에서 도시된 바와 같이, 픽셀들은 A, B, C, D, E, F, G 및 H라고 라벨링된다. 픽셀 H는 완전히 커버되지 않았음을 주목해야 한다.
단계(203)에서, 커버리지 마스크는 다각형(301)에 의해 커버되는 샘플들에 대응하여 생성된다. 일 실시예에서, 커버리지 마스크는 그룹의 샘플당 1비트를 갖는 비트 마스크로서 구현될 수 있다. 따라서, 16비트는 그룹의 16개의 샘플들을 표현할 수 있고, 각각의 비트는 샘플들이 커버되었는지 아닌지에 따라 설정된다. 따라서, 다각형(301)이 그룹의 픽셀들을 부분적으로 커버하고, 16개의 샘플들을 부분적으로 커버하는 경우, 이러한 정보, 즉 커버리지 정도는 결과적인 커버리지 마스크 및 다각형(301)의 컬러를 타일을 저장하는 메모리 장소에 저장함으로써 그룹에 업데이트될 수 있다.
이러한 업데이트가 GPU(110) 내부의 메모리내에서 일어날 수 있다는 것을 주목하는 것은 중요하다. 이러한 메모리는 픽셀 그룹들이 다각형들에 대하여 래스터화되고 렌더링됨에 따라 그것을 저장한다. 그리하여 프레임 버퍼로부터 픽셀 그룹을 판독하고, 픽셀 그룹을 업데이트하고, 그 후 업데이트된 픽셀 그룹을 프레임 버퍼에 다시 기입할 (예를 들면, 판독-수정-기입) 필요 없이 다각형이 픽셀 그룹에 래스터화되고 렌더링 될 수 있다.
단계(204)에서, 픽셀들의 그룹은 커버리지 마스크 및 다각형의 대응하는 컬러를 그룹에 대한 메모리 장소에 저장함으로써 업데이트된다. 이것은 도 5에 도시된다. 픽셀 H가 완전히 커버되지 않았기 때문에 커버리지 마스크가 비어있는 메모리에 저장된다는 것을 주목해야 한다. 도 5에서 예시된 바와 같이, 픽셀들의 그룹을 저장하는 메모리 장소는 4개의 사분면을 갖는 직사각형(500)으로서 묘사된다. 이 공간의 1/4 은(예를 들면, 좌측 상부 사분면) 8개의 픽셀의 압축된 배경 컬러를 저장한다. 예를 들면, 하나의 이전의 다각형이 모든 8개의 픽셀를 완전히 커버하면, 샘플들은 4 대 1로 압축되어 픽셀당 하나의 컬러으로서 저장될 수 있다. 우측 상부 사분면은 커버리지 마스크(501)를 저장하고 픽셀들 A 내지 G에 대해 하나의 컬러를 저장한다. 상술한 바와 같이, 커버리지 마스크는 어떤 샘플들이 다각형에 의해 커버되는지를 나타낸다.
이러한 방식으로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는 프레임 버퍼에 대해 판독하고 기입해야 하는 것과는 반대로, 픽셀 그룹에 도달하는 다각형들로부터 낮은 레이턴시 메모리(예를 들면, 레지스터들, 캐쉬들) 내에서 업데이트들을 축적할 수 있다.
여전히 도 2의 프로세스(200)를 참조하면, 단계(205)에서, 메모리 장소(500)가 가득 찼는지에 대한 결정이 이루어진다. 만약 메모리 장소가 가득 차지 않았다면, 프로세스(200)는 단계(206)로 진행하고 픽셀들의 그룹에 관련된 후속 다각형들을 처리하는 것을 계속하고, 각각의 후속 다각형들에 대하여, 단계(202) 내지 단 계(204)를 수행한다. 예를 들면, 도 6은 픽셀들의 그룹을 커버하는 후속 다각형(601)을 도시하고, 도 7은 완전히 커버되지 않은 픽셀 A와 함께, 다각형(601)에 의해 커버되는 픽셀들의 샘플들을 도시하고, 도 8은 메모리 장소(500)의 좌측 하부 사분면에 저장된 결과적인 커버리지 마스크(801) 및 다각형(601)의 컬러를 도시한다. 그리고 도 9는 픽셀들의 그룹을 커버하는 후속 다각형(901)을 도시하고 도 10은 완전히 커버되지 않은 픽셀들 C, D, G 및 H와 함께 다각형(901)에 의해 커버되는 픽셀들의 샘플들을 도시하고, 도 11은 메모리 장소(500)의 우측 하부 사분면에 저장된 결과적인 커버리지 마스크(1101)와 다각형(901)의 컬러를 도시한다.
이러한 방식으로, 본 발명의 지연된 프레임 버퍼 병합 프로세스는 프레임 버퍼에 대해 판독, 수정 및 기입해야 하는 것과는 반대로, 픽셀 그룹에 도달하는 다각형들로부터 업데이트들을 축적할 수 있다. 지연된 프레임 버퍼 병합 프로세스는 그리하여 로컬 그래픽 메모리 및 시스템 메모리의 보다 높은 데이터 액세스 지연시간들에 의해 부과되는 병목현상들을 개선한다. 상술된 바와 같이, 픽셀 그룹은 각각의 다각형에 대해 프레임 버퍼에의 병합을 강제하지 않고 후속 다각형들을 이용하여 업데이트될 수 있다.
단계(207)에서, 메모리 장소(500)가 도 11에서 도시된 바와 같이 가득찼을 때, 이후의 다각형이 도래하면, 메모리 장소(500)에 저장된 정보는 압축풀기되어 새로운 다각형과 합성될 필요가 있다. 이러한 정보는 그 후 프레임 버퍼로 병합될 수 있다. 일단 프레임 버퍼에 병합되면, 정보는 압축되지 않은 형태로 남을 수 있다. .
일 실시예에서, 정보가 프레임 버퍼로 병합된 후, GPU(110)는 픽셀 그룹의 컬러 정보를 재압축할 수 있고 픽셀 그룹을 낮은 지연시간 메모리에 압축된 형태로 저장할 수 있다. 이러한 컬러 정보는 상술된 바와 같은 커버리지 마스크들 및 컬러들을 사용하여 압축될 수 있다. 이 프로세스는 도 12에 예시되어 있으며, 후속 다각형(1201)이 픽셀 그룹을 커버한다. 메모리 장소(500)에 저장된 정보가 압축풀기되고 다각형(1201)과 합성된 후에, 그 정보는 다시 압축되어 도 13에 도시된 바와 같이 메모리 장소(500) 내에 저장된다. 도 13은 좌측 상단 사분면에 제1 컬러(예를 들어, 배경 컬러), 우측 상단 사분면에 커버리지 마스크(1301) 및 커버리지 마스크(1301)에 대응하는 제2 컬러, 그리고 좌측 하단 사분면에 커버리지 마스크(1302) 및 커버리지 마스크(1302)에 대응하는 제3 컬러를 갖는 메모리 장소(500)를 도시한다. 따라서, 재압축 후에, 메모리 장소(500)의 우측 하단 사분면은 다른 다각형을 수신하기 위해 오픈(open)된다.
그룹의 픽셀들 전체를 완전히 커버하는 후속 다각형이 수신된 경우, 각 픽셀의 모든 샘플들은 동일한 컬러일 것이고, 따라서 예를 들어, 좌측 상단 사분면에 단일 컬러로서 압축되어 저장된 4 대 1일 수 있다는 것에 주목해야 한다. 비록 본 발명의 실시예들은 4x 멀티샘플링(multisampling)의 문맥으로 설명되었지만, 본 발명은 훨씬 더 높은 레벨의 멀티샘플링(예를 들어 8x 멀티샘플링 등)이 실행되는 상황들에서, 그리고 안티-에일리어싱 이외의 애플리케이션들에서 훨씬 더 유용하다는 것에 주목해야 한다.
또한, 일 실시예에서, 픽셀들의 그룹에 대해 메모리 장소(500)의 상태를 추 적하기 위해 GPU(110)에 의해 태그 값이 이용된다는 것에 주목해야 한다. 이 태그 값은 GPU(110)가 메모리 장소(500)에 업데이트되어 있는 다각형의 수를 추적할 수 있게 한다. 예를 들어, 일 실시예에서, 태그 값은 3 비트 값으로 구현될 수 있으며, 예를 들어, 태그 값 0은 픽셀 당 한 컬러를 갖는 4 대 1 압축을 나타내고, 태그 값 1은 도 5에 도시된 바와 같이 메모리 장소(500)의 2개의 사분면이 점유된 4 대 1 압축을 나타내고, 태그 값 3은 도 8에 도시된 바와 같이 메모리 장소(500)의 3개의 사분면이 점유된 4 대 1 압축을 나타내고, 태그 값 4는 도 11에 도시된 바와 같이 메모리 장소(500)의 모든 4개의 사분면이 점유된 4 대 1 압축을 나타낸다.
도 14 내지 도 16은 본 발명의 대안적인 실시예에 따른 지연된 프레임 버퍼 병합 프로세스를 예시한다. 대안적인 실시예에서, 태그는 메모리 장소(500)의 프리 포인터(free pointer)로서 구현된다. 이러한 실시예에서, 메모리 장소(500)는 프레임 버퍼와 병합을 수행할 필요 없이 6 업데이트들을 지원할 수 있다. 이러한 실시예에서, 태그 값들은 다음의 의미를 갖도록 구현될 수 있다.
0 = 압축풀기
1 = 완전 압축, 샘플 8에서 프리 포인터
2 = 다수의 단편(fragment), 샘플 12에서 프리 포인터
3 = 샘플 16에서 프리 포인터
4 = 샘플 20에서 프리 포인터
5 = 샘플 24에서 프리 포인터
6 = 샘플 28에서 프리 포인터
9 = 가득 찼지만 여전히 분해되지 않은 메모리 장소(500)
도 14는 표시된 샘플 위치들에 따라 컬러들을 갖는 픽셀 그룹을 도시한다. 도 15는 전술한 도 12의 설명에서 기술한 방식하에서 컬러 정보가 저장되는 메모리 장소(500)를 도시한다. 도 16은 태그 값들을 도시하며, 대안적인 실시예에 따르면, 태그 값 1은 메모리 장소(500)의 샘플 위치 8에 저장된 "1"로서 도시되고, 태그 값(2)은 샘플 위치(16)에서 "2"로서 도시되고, 이와 같은 방식으로 하여, 태그 값(6)은 샘플 위치(28)에서 "6"으로서 도시된다. 도 17은 본 발명의 대안적인 실시예의 방식하에서 컬러 정보가 저장되는 메모리 장소(500)를 도시한다. 따라서, 도 17에도시된 바와 같이, 픽셀 그룹은 배경 컬러, 그리고 샘플 위치들(12 및 8)에 각각 저장된 결과로서 생긴 커버리지 마스크들 (1701 및 1702), 및 거기에 인접해서 저장된 커버리지 마스크(1701 및 1702)와 관련된 컬러들을 갖는 6개의 새로운 업데이트된 컬러들을 가질 수 있다.
도 18 내지 도 20은, 커버리지 마스크들이 후속하여 도달하는 다각형들로부터 업데이트들을 캡처하는 방식을 시각적으로 예시한다. 예를 들어, 도 18은 커버리지 마스크(1701)에 의해 표시되는 2개의 샘플들 및 그들 각각의 컬러들을 도시하고, 도 19는 커버리지 마스크(1702)에 의해 표시되는 2개의 샘플들 및 그들 각각의 컬러들을 도시한다. 도 20은 픽셀들의 그룹의 최종 상태가 메모리 장소(500) 내에 구축되는 방식을 예시하는 픽셀들의 그룹의 4개의 연속하는 상태들을 도시하며, 상태(2002)는 처음 2개의 샘플을 도시하고, 상태(2003)은 다음 2개의 샘플을 도시하고, 상태(2004)는 배경 컬러들과 합성될 때의 컬러들을 도시하고, 최종 상태(2005) 는 메모리 장소(500) 내에 저장되는 결과적인 정보를 도시한다.
그러므로, 대안적인 실시예에 따르면, 32 바이트 기입들보다 효율적일 필요가 없는 16 바이트 기입들이 요구되지만, 여전히 프레임 버퍼로부터의 판독을 절감한다. 더 짙은 픽셀들 또는 더 큰 픽셀 풋프린트들(footprints)에 의하면, 대안적인 실시예 방법은 여전히 3 비트 태그로 기능할 수 있다. 전술한 예들에서, 픽셀 그룹들은 8개의 픽셀 풋프린트를 포함한다. 픽셀 풋프린트가 16 픽셀 그룹들을 포함하는 경우, 프로세서는 8개의 샘플 증분 또는 32 바이트 그레인(grains)에 저장소를 할당한다. 대안적으로, 8 바이트 픽셀들이 기입되고 있는 경우, 본 명세서에서 이용된 바와 같은 2x4 픽셀 그룹은 32 바이트 기입들을 생성하기 위해 적절하게 수행한다.
도 21은 본 발명의 일 실시예에 따른, 시스템 메모리(115), 로컬 그래픽 메모리(116), 그리고 캐쉬 메모리(2101) 및 레지스터들(2102)의 데이터 액세스 지연시간 간의 상대적 차이들을 예시하는 다이어그램(2100)을 도시한다. 전술한 바와 같이, 본 발명의 지연된 프레임 버퍼 병합 프로세스는 낮은 지연시간 메모리(예를 들어, 레지스터들(2102), 캐쉬들(2101)) 내의 픽셀 그룹에 도달한 다각형들로부터의 업데이트들을 누적할 수 있으므로, 프레임 버퍼에 대한 판독들 및 기입들의 수를 감소시킬 수 있고, 이로써 높은 메모리 액세스 지연시간에 의해 가해지는 성능 불이익들을 감소시킬 수 있다. 이 속성은 프레임 버퍼(예를 들어, 그래픽 데이터(2120))가 로컬 그래픽 메모리(116)에 저장될 때 성능을 향상시키고, 프레임 버퍼(예를 들어, 그래픽 데이터(2110))가 시스템 메모리(115)에 저장될 때 훨씬 더 큰 정도로 성능을 향상시킨다. 이러한 방식으로, 지연된 프레임 버퍼 병합 프로세스는 로컬 그래픽 메모리(116) 및 시스템 메모리(115)의 더 높은 데이터 액세스 지연시간에 의해 가해지는 병목 현상들을 개선할 수 있다.
본 발명을 간략하게 요약하면 다음과 같이 개시된다.
[개념 1]
프레임 버퍼 병합 방법으로서,
메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형(polygon)을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
상기 다각형에 의해 커버되는 상기 픽셀들을 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스크(coverage mask)를 생성하는 단계;
상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
상기 픽셀들의 그룹을 프레임 버퍼에 계속해서 병합하는 단계
를 포함하는 프레임 버퍼 병합 방법.
[개념 2]
개념 1에 있어서,
상기 픽셀들의 그룹에 관련되는 복수의 후속 다각형을 액세스하는 단계; 및
상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각 후속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 3]
개념 2에 있어서,
태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 4]
개념 2에 있어서,
상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 가득 찰 때를 결정하는 단계; 및
메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 5]
개념 4에 있어서,
상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 프레임 버퍼 병합 방법.
[개념 6]
개념 4에 있어서,
상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계는, 상기 프레임 버퍼에의 다수의 액세스를 감소시키도록 구성되는 프레임 버퍼 병합 방법.
[개념 7]
개념 1에 있어서,
상기 픽셀들의 그룹을 상기 메모리 장소에 업데이트하는 단계는, 4 대 1 압축(4 to 1 compression)을 야기하는 프레임 버퍼 병합 방법.
[개념 8]
메모리에 연결된 프로세서를 갖는 컴퓨터 시스템에 의해 실행될 때, 상기 컴퓨터 시스템이 지연된 프레임 버퍼 병합을 위한 컴퓨터 판독가능한 매체를 구현하게 하는 컴퓨터 판독가능한 코드를 저장하는 컴퓨터 판독가능한 매체로서,
메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
상기 다각형에 의해 커버되는 상기 픽셀들을 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스크를 생성하는 단계;
상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계;
상기 픽셀들의 그룹에 관계되는 복수의 후속 다각형을 액세스하는 단계;
상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각각의 후속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
상기 픽셀들의 그룹을 프레임 버퍼에 계속해서 병합하는 단계
를 포함하는 컴퓨터 판독가능한 매체.
[개념 9]
개념 8에 있어서,
태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 판독가능한 매체.
[개념 10]
개념 8에 있어서,
상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 가득 찰 때를 결정하는 단계; 및
메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 컴퓨터 판독가능한 매체.
[개념 11]
개념 10에 있어서,
상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 컴퓨터 판독가능한 매체.
[개념 12]
개념 10에 있어서,
상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계는, 상기 프레임 버퍼에의 다수의 액세스를 감소시키도록 구성되는 컴퓨터 판독가능한 매체.
[개념 13]
개념 8에 있어서,
상기 픽셀들의 그룹을 상기 메모리 장소에 업데이트하는 단계는, 4 대 1 압축을 야기하는 컴퓨터 판독가능한 매체.
[개념 14]
컴퓨터 시스템으로서,
프로세서;
상기 프로세서에 연결된 시스템 메모리; 및
상기 프로세서에 연결된 그래픽 처리 유닛
을 포함하고,
상기 그래픽 처리 유닛은, 상기 그래픽 처리 유닛이 지연된 프레임 버퍼 병합을 위한 수법을 구현하게 하는 컴퓨터 판독가능한 코드를 실행하도록 구성되고,
상기 지연된 프레임 버퍼 병합을 위한 수법은,
메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
상기 픽셀들 중 어느 것이 상기 다각형에 의해 커버되는지를 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스크를 생성하는 단계;
상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계;
상기 픽셀들의 그룹에 관계되는 복수의 후속 다각형을 액세스하는 단계;
상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각각의 후속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
후속해서 상기 픽셀들의 그룹을 프레임 버퍼에 병합하는 단계
를 포함하는 컴퓨터 시스템.
[개념 15]
개념 14에 있어서,
태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하 는 컴퓨터 시스템.
[개념 16]
개념 14에 있어서,
상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 언제 가득 차는지를 결정하는 단계; 및
메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 컴퓨터 시스템.
[개념 17]
개념 16에 있어서,
상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 컴퓨터 시스템.
[개념 18]
개념 14에 있어서,
태그 값을 프리 포인터(free pointer)로서 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 시스템.
[개념 19]
개념 14에 있어서,
상기 프레임 버퍼는 상기 시스템 메모리에 저장되는 컴퓨터 시스템.
[개념 20]
개념 14에 있어서,
상기 프레임 버퍼는 상기 그래픽 처리 유닛에 연결된 로컬 그래픽 메모리에 저장되는 컴퓨터 시스템.
대체로, 본 발명은 적어도 지연된 프레임 버퍼 병합을 위한 방법을 개시한다. 이 방법은 메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계를 포함할 수 있고, 픽셀들의 각각은 기존 컬러를 갖는다. 다각형에 의해 커버되는 픽셀들에 대하여 결정이 행해질 수 있으며, 각각의 픽셀은 복수의 샘플을 포함한다. 다각형에 의해 피복되는 샘플들에 대응하여 커버리지 마스크가 생성될 수 있다. 픽셀들의 그룹은 메모리 장소에 커버리지 마스크 및 다각형의 컬러를 저장함으로써 업데이트될 수 있다. 후속 시간에, 픽셀들의 그룹은 프레임 버퍼 에 병합될 수 있다.
본 발명의 특정 실시예들의 전술한 설명들은 예시 및 설명을 위해 제시되었다. 전술한 설명들은 본 발명을 개시된 정확한 형태들로 한정하기 위한 것이 아니며, 전술한 교시에 비추어 많은 수정들 및 변형들이 가능하다. 본 실시예들은 본 발명의 원리들 및 그의 실제 응용을 가장 잘 설명하기 위하여 선택되어 기술되었으므로, 이 기술분야의 당업자들이, 본 발명, 및 고려되는 특정 용도로 적합되는 다양한 수정들이 이루어진 다양한 실시예들을 가장 잘 이용할 수 있게 한다. 본 발명의 범위는 본 명세서에 첨부된 특허청구의 범위 및 그 등가물들에 의해 정의되는 것으로 의도된다.
특허청구범위
1. 컴퓨터 시스템으로서,
프로세서;
상기 프로세서에 연결된 시스템 메모리; 및
상기 프로세서에 연결된 그래픽 처리 유닛
을 포함하고,
상기 그래픽 처리 유닛은, 상기 그래픽 처리 유닛이 지연된 프레임 버퍼 병합을 위한 수법을 구현하게 하는 컴퓨터 판독가능한 코드를 실행하도록 구성되고,
상기 지연된 프레임 버퍼 병합을 위한 수법은,
메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
상기 픽셀들 중 어느 것이 상기 다각형에 의해 커버되는지를 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스크를 생성하는 단계;
상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계;
상기 픽셀들의 그룹에 관련되는 복수의 후속 다각형을 액세스하는 단계;
상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각각의 후 속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
후속해서 상기 픽셀들의 그룹을 프레임 버퍼에 병합하는 단계
를 포함하는 컴퓨터 시스템.
2. 제1항에 있어서,
태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 시스템.
3. 제1항에 있어서,
상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 언제 가득 차는지를 결정하는 단계; 및
메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 컴퓨터 시스템.
4. 제3항에 있어서,
상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 컴퓨터 시스템.
5. 제1항에 있어서,
태그 값을 프리 포인터(free pointer)로서 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 시스템.
6. 제1항에 있어서,
상기 프레임 버퍼는 상기 시스템 메모리에 저장되는 컴퓨터 시스템.
7. 제1항에 있어서,
상기 프레임 버퍼는 상기 그래픽 처리 유닛에 연결된 로컬 그래픽 메모리에 저장되는 컴퓨터 시스템.
요약
지연된 프레임 버퍼 병합을 위한 방법이다. 이 방법은 메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 것을 포함하며, 각각의 픽셀이 기존의 컬러를 갖는다. 다각형에 의해 커버되는 픽셀들이 결정될 수 있고, 각각의 픽셀은 다수의 샘플을 포함한다. 다각형에 의해 커버되는 샘플들에 대응하여 생성될 수 있다. 픽셀들의 그룹은 커버리지 마스크와 다각형의 컬러를 메모리 장소에 저장하여 업데이트될 수 있다. 후속 시간에 픽셀들의 그룹에 프레임 버퍼에 병합된다.
[도 1]
Figure 112007037635263-PAT00001
[도 2]
Figure 112007037635263-PAT00002
[도 3]
Figure 112007037635263-PAT00003
[도 4]
Figure 112007037635263-PAT00004
[도 5]
Figure 112007037635263-PAT00005
[도 6]
Figure 112007037635263-PAT00006
[도 7]
Figure 112007037635263-PAT00007
[도 8]
Figure 112007037635263-PAT00008
[도 9]
Figure 112007037635263-PAT00009
[도 10]
Figure 112007037635263-PAT00010
[도 11]
Figure 112007037635263-PAT00011
[도 12]
Figure 112007037635263-PAT00012
[도 13]
Figure 112007037635263-PAT00013
[도 14]
Figure 112007037635263-PAT00014
[도 15]
Figure 112007037635263-PAT00015
[도 16]
Figure 112007037635263-PAT00016
[도 17]
Figure 112007037635263-PAT00017
[도 18]
Figure 112007037635263-PAT00018
[도 19]
Figure 112007037635263-PAT00019
[도 20]
Figure 112007037635263-PAT00020
[도 21]
Figure 112007037635263-PAT00021

Claims (7)

  1. 컴퓨터 시스템으로서,
    프로세서;
    상기 프로세서에 연결된 시스템 메모리; 및
    상기 프로세서에 연결된 그래픽 처리 유닛
    을 포함하고,
    상기 그래픽 처리 유닛은, 상기 그래픽 처리 유닛이 지연된 프레임 버퍼 병합을 위한 수법을 구현하게 하는 컴퓨터 판독가능한 코드를 실행하도록 구성되고,
    상기 지연된 프레임 버퍼 병합을 위한 수법은,
    메모리 장소에 저장된 픽셀들의 그룹에 관련되는 다각형을 액세스하는 단계 - 상기 픽셀들의 각각은 기존 컬러를 가짐 - ;
    상기 픽셀들 중 어느 것이 상기 다각형에 의해 커버되는지를 결정하는 단계 - 각각의 픽셀은 복수의 샘플을 포함함 - ;
    상기 다각형에 의해 커버되는 상기 샘플들에 대응하는 커버리지 마스크를 생성하는 단계;
    상기 커버리지 마스크 및 상기 다각형의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계;
    상기 픽셀들의 그룹에 관련되는 복수의 후속 다각형을 액세스하는 단계;
    상기 후속 다각형들의 각각에 대하여, 각각의 커버리지 마스크 및 각각의 후 속 다각형의 각각의 컬러를 상기 메모리 장소에 저장함으로써 상기 픽셀들의 그룹을 업데이트하는 단계; 및
    후속해서 상기 픽셀들의 그룹을 프레임 버퍼에 병합하는 단계
    를 포함하는 컴퓨터 시스템.
  2. 제1항에 있어서,
    태그 값을 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
    상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 시스템.
  3. 제1항에 있어서,
    상기 픽셀들의 그룹을 저장하는 상기 메모리 장소가 언제 가득 차는지를 결정하는 단계; 및
    메모리 장소가 가득 찼을 때 상기 픽셀들의 그룹을 상기 프레임 버퍼에 병합하는 단계를 더 포함하는 컴퓨터 시스템.
  4. 제3항에 있어서,
    상기 픽셀들의 상기 컬러들에 따라 적어도 하나의 커버리지 마스크 및 적어도 하나의 컬러를 상기 메모리 장소에 저장함으로써 상기 병합에 이어서 상기 픽셀 들의 그룹을 상기 메모리 장소에 압축하는 단계를 더 포함하는 컴퓨터 시스템.
  5. 제1항에 있어서,
    태그 값을 프리 포인터(free pointer)로서 이용하여, 상기 픽셀들의 그룹을 저장하는 상기 메모리 장소의 상태를 추적하는 단계; 및
    상기 후속 다각형들에 따라 상기 태그 값을 업데이트하는 단계를 더 포함하는 컴퓨터 시스템.
  6. 제1항에 있어서,
    상기 프레임 버퍼는 상기 시스템 메모리에 저장되는 컴퓨터 시스템.
  7. 제1항에 있어서,
    상기 프레임 버퍼는 상기 그래픽 처리 유닛에 연결된 로컬 그래픽 메모리에 저장되는 컴퓨터 시스템.
KR1020070049927A 2006-05-22 2007-05-22 프레임 버퍼 병합 KR100908779B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US80274606P 2006-05-22 2006-05-22
US60/802,746 2006-05-22
US11/804,025 US20070268298A1 (en) 2006-05-22 2007-05-15 Delayed frame buffer merging with compression
US11/804,025 2007-05-15

Publications (2)

Publication Number Publication Date
KR20070112735A true KR20070112735A (ko) 2007-11-27
KR100908779B1 KR100908779B1 (ko) 2009-07-22

Family

ID=38711558

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070049927A KR100908779B1 (ko) 2006-05-22 2007-05-22 프레임 버퍼 병합

Country Status (2)

Country Link
US (1) US20070268298A1 (ko)
KR (1) KR100908779B1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8788996B2 (en) 2003-09-15 2014-07-22 Nvidia Corporation System and method for configuring semiconductor functional circuits
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US9123173B2 (en) * 2005-12-15 2015-09-01 Nvidia Corporation Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US9070213B2 (en) * 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
WO2008032603A1 (fr) * 2006-09-13 2008-03-20 Panasonic Corporation Dispositif de traitement d'image, circuit intégré de traitement d'image, système de traitement d'image, dispositif d'assemblage d'entrée et circuit intégré d'assemblage d'entrée
US8427487B1 (en) * 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US20090033671A1 (en) * 2007-08-02 2009-02-05 Ati Technologies Ulc Multi-sample rendering of 2d vector images
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US20110063309A1 (en) 2009-09-16 2011-03-17 Nvidia Corporation User interface for co-processing techniques on heterogeneous graphics processing units
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
US10043234B2 (en) 2012-12-31 2018-08-07 Nvidia Corporation System and method for frame buffer decompression and/or compression
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123085A (en) 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons
US5335322A (en) * 1992-03-31 1994-08-02 Vlsi Technology, Inc. Computer display system using system memory in place or dedicated display memory and method therefor
JPH0792654B2 (ja) * 1992-10-23 1995-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション ビデオ・データ・フレーム伝送方法および装置
US5990904A (en) * 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
US6128000A (en) * 1997-10-15 2000-10-03 Compaq Computer Corporation Full-scene antialiasing using improved supersampling techniques
US7064771B1 (en) * 1999-04-28 2006-06-20 Compaq Information Technologies Group, L.P. Method and apparatus for compositing colors of images using pixel fragments with Z and Z gradient parameters
JP2001016593A (ja) * 1999-06-25 2001-01-19 Mitsubishi Electric Corp 画像復号表示装置
US6518974B2 (en) * 1999-07-16 2003-02-11 Intel Corporation Pixel engine
JP2002328846A (ja) * 2001-02-20 2002-11-15 Sony Computer Entertainment Inc コピー管理システム,クライアント端末装置の情報処理プログラムが記憶されたコンピュータ読み取り可能な記憶媒体,管理サーバ装置の情報処理プログラムが記憶されたコンピュータ読み取り可能な記憶媒体,クライアント端末装置の情報処理プログラム,管理サーバ装置の情報処理プログラム,コピー管理方法,クライアント端末装置の情報処理方法、及び管理サーバ装置の情報処理方法
US6704026B2 (en) * 2001-05-18 2004-03-09 Sun Microsystems, Inc. Graphics fragment merging for improving pixel write bandwidth
US7564460B2 (en) * 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US20030090498A1 (en) * 2001-11-13 2003-05-15 Photela, Inc. Method and apparatus for the creation of digital photo albums
US6825847B1 (en) * 2001-11-30 2004-11-30 Nvidia Corporation System and method for real-time compression of pixel colors
US6937244B2 (en) 2003-09-23 2005-08-30 Zhou (Mike) Hong Apparatus and method for reducing the memory traffic of a graphics rendering system

Also Published As

Publication number Publication date
KR100908779B1 (ko) 2009-07-22
US20070268298A1 (en) 2007-11-22

Similar Documents

Publication Publication Date Title
KR100908779B1 (ko) 프레임 버퍼 병합
CN102609975B (zh) 使用多图形处理单元的改进的图形去阶梯
TWI498850B (zh) 訊框緩衝區歸併的方法、電腦可讀取記憶體、與電腦系統
KR100965637B1 (ko) 상주 밉맵 데이터를 이용한 비상주 밉맵 데이터의 보외법
US9569862B2 (en) Bandwidth reduction using texture lookup by adaptive shading
US9406149B2 (en) Selecting and representing multiple compression methods
KR101034925B1 (ko) 텍스쳐 정보를 엔코딩하는 방법 및 장치
US20030218614A1 (en) Dynamically adjusting sample density in a graphics system
US8271734B1 (en) Method and system for converting data formats using a shared cache coupled between clients and an external memory
CN111062858A (zh) 高效的提前渲染方法、装置及计算机存储介质
US9280956B2 (en) Graphics memory load mask for graphics processing
JP2005514711A (ja) ゾーン・レンダリングのための効率的なグラフィックス状態管理
US7170512B2 (en) Index processor
US8004522B1 (en) Using coverage information in computer graphics
US7710424B1 (en) Method and system for a texture-aware virtual memory subsystem
US8773447B1 (en) Tag logic scoreboarding in a graphics pipeline
US8427496B1 (en) Method and system for implementing compression across a graphics bus interconnect
JP2003323339A (ja) メモリアクセス装置、半導体デバイス、メモリアクセス制御方法、コンピュータプログラム及び記録媒体
US7928988B1 (en) Method and system for texture block swapping memory management
US8269769B1 (en) Occlusion prediction compression system and method
US8390619B1 (en) Occlusion prediction graphics processing system and method
WO2022095010A1 (en) Methods and apparatus for rasterization of compute workloads
CN116348904A (zh) 用simo方法优化gpu内核以用于利用gpu高速缓存进行缩小
US7508398B1 (en) Transparent antialiased memory access
US9536341B1 (en) Distributing primitives to multiple rasterizers

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: 20130620

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140702

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170710

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190711

Year of fee payment: 11