KR100615784B1 - 에빅션 억제 방법, 프리미티브를 포함하는 장면을 렌더링하는 장치 및 머신 판독가능 매체 - Google Patents
에빅션 억제 방법, 프리미티브를 포함하는 장면을 렌더링하는 장치 및 머신 판독가능 매체 Download PDFInfo
- Publication number
- KR100615784B1 KR100615784B1 KR1020047010416A KR20047010416A KR100615784B1 KR 100615784 B1 KR100615784 B1 KR 100615784B1 KR 1020047010416 A KR1020047010416 A KR 1020047010416A KR 20047010416 A KR20047010416 A KR 20047010416A KR 100615784 B1 KR100615784 B1 KR 100615784B1
- Authority
- KR
- South Korea
- Prior art keywords
- depth
- memory
- instructions
- data signal
- control data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Input (AREA)
- Position Fixing By Use Of Radio Waves (AREA)
- Holo Graphy (AREA)
- Holding Or Fastening Of Disk On Rotational Shaft (AREA)
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
- Preventing Unauthorised Actuation Of Valves (AREA)
Abstract
영역 렌더링 시스템에서의 깊이(depth) 버퍼에 대응하는 깊이 캐시로부터의 깊이 값과 같은 에빅션(evictions)을 제어하는 깊이 기록 디스에이블 장치 및 방법이 개시된다. 깊이 기록 디스에이블 회로가 인에이블될 때, 깊이 캐시로부터 깊이 버퍼로의 에빅션(다음 영역의 렌더링 동안 전형적으로 발생)이 방지된다. 특히, 일단 깊이 버퍼가 장면의 시작시에 일정한 값으로 초기화(즉, 클리어)되면, 깊이 버퍼는 판독될 필요가 없다. 깊이 캐시는 각 영역내의 중간 깊이 판독 및 기록을 처리한다. 메모리 상주 깊이 버퍼는 장면이 렌더링된 후에는 필요하지 않기 때문에, 결코 기록될 필요가 없다. 따라서, 영역에 대한 최종 깊이 값은 각 영역이 렌더링된 후 무시(즉, 깊이 버퍼에 기록될 필요가 없음)될 수 있다.
Description
전반적으로, 본 발명은 그래픽 시스템에 관한 것으로서, 특히, 깊이(depth) 캐시로부터 깊이 버퍼(depth buffer)로의 데이터 전송을 제어하는 방법 및 장치에 관한 것이다.
일반적으로, 컴퓨터 그래픽 시스템은 2차원 비디오 디스플레이 스크린상에 객체(object)의 그래픽 표현을 디스플레이하는데 사용된다. 현재의 컴퓨터 그래픽 시스템은 매우 상세한 표현을 제공하며, 다양한 응용에서 사용된다. 전형적인 컴퓨터 그래픽 시스템에서, 디스플레이 스크린상에 표현될 객체는 그래픽 프리미티브(graphics primitives)로 분할된다. 프리미티브는 그래픽 디스플레이의 기본적인 성분이며, 점, 선, 벡터, 및 삼각형 및 사변형과 같은 다각형을 포함할 수 있다. 전형적으로, 디스플레이 스크린상에 표현되는 하나 이상의 객체의 뷰를 나타내는 그래픽 프리미티브를 렌더링하거나 또는 그리기 위해, 하드웨어/소프트웨어 방안이 구현된다.
렌더링될 3차원 객체의 프리미티브는 프리미티브 데이터의 관점에서 호스트 컴퓨터에 의해 정의된다. 예를 들어, 프리미티브가 삼각형일 때, 호스트 컴퓨터는, 각각의 정점(vertex)의 적, 녹 및 청(R, G, B) 컬러값 뿐만 아니라, 정점들의 X, Y, Z 좌표의 관점에서 프리미티브를 정의할 수 있다. 추가적인 프리미티브 데이터가 특정 응용에서 사용될 수 있다.
이미지 렌더링은 하이 레벨 객체 기반 기술(high-level object-based description)을 몇몇 디스플레이 장치상에 디스플레이하기 위한 그래픽 이미지로 변환하는 것이다. 예를 들어, 이미지 렌더링의 동작은 3차원 객체 또는 장면(scene)의 수학적 모델을 비트맵 이미지로 변환하는 동안 발생된다. 이미지 렌더링의 다른 예는 HTML 문서를 컴퓨터 모니터상에 디스플레이하기 위한 이미지로 변환하는 것이다. 전형적으로, 그래픽스 렌더링 엔진이라고 지칭되는 하드웨어 장치는 이들 그래픽 처리 태스크를 수행한다. 통상, 그래픽스 렌더링 엔진은 장면을 메모리 버퍼로 렌더링하고 차후에 그래픽 출력 장치로 출력하지만, 몇몇 렌더링 엔진은 그들의 2차원 출력을 출력 장치에 직접 기록할 수도 있다. 그래픽스 렌더링 엔진은 프리미티브 데이터를 보간하여, 각각의 프리미티브를 표현하는 디스플레이 스크린 픽셀, 및 각 픽셀의 R, G, B 컬러값을 계산한다.
본 명세서에 이용된 그래픽스 렌더링 시스템(또는 서브시스템)은 응용 프로그램과 그래픽 출력 장치 사이의 모든 처리 레벨에서 언급되고 있다. 그래픽 엔진은 영역(zone) 렌더링을 포함하는 하나 이상의 렌더링 모드를 제공할 수 있다. 영역 렌더링은 렌더 캐시(render cache)라고도 지칭되는 영역 크기의 컬러 및 깊이 캐시(zone-sized color and depth cache)를 이용함으로써 전체 3D 렌더링 성능을 향상시킨다. 최적의 렌더 캐시의 사용에 의해 픽셀 컬러 및 깊이 메모리 판독/기록 병목 현상이 감소된다.
영역 렌더링에서, 스크린은 영역들의 어레이로 세분된다. 각각의 영역 서브 이미지를 렌더링하는데 필요한 프리미티브 및 상태 설정 인스트럭션을 유지하는데 사용된 퍼 존 인스트럭션 빈(per-zone instruction bins)이 제 1 패스(pass)에서 생성된다. 프리미티브가 영역을 교차한다(또는 교차할 가능성이 있다)고 판정될 때마다, 대응하는 프리미티브 인스트럭션이 해당 영역에 대한 빈에 위치한다. 몇몇 프리미티브는 하나보다 많은 영역과 교차할 것이며, 그러한 경우, 프리미티브 인스트럭션은 대응하는 빈에서 복제된다. 이러한 처리는 전체 장면이 빈내에 정렬될 때까지 계속된다. 이미지의 각 영역에 대한 빈을 생성하는 제 1 패스 이후에, 제 2 영역 단위(zone-by-zone) 렌더링 패스가 수행된다. 특히, 모든 영역들에 대한 빈이 렌더링되어, 최종 이미지를 생성한다. 전형적으로, 각 장면은 한번에 한 영역에 렌더링된다.
전형적으로, 영역의 크기는 렌더 캐시의 크기 및 구성에 대응한다. 렌더 캐시는 렌더링 프로세서에 의해 최근에 사용된 픽셀 데이터를 저장하여, 외부 메모리 장치에 있는 경우보다, 이 정보가 렌더링 프로세서에 대해 보다 신속하게 이용가능하도록 한다. 특히, 렌더 캐시는 각 영역내의 중간 깊이 판독 및 기록을 처리한다. 통상은, 데이터가 렌더 캐시로부터 주 메모리내의 깊이 버퍼로 기록된다. 예를 들어, 깊이 값은, 콘텍스트 스위치(context switch) 또는 부분적 렌더링 및/또는 장면의 재개의 결과로서 렌더 캐시로부터 깊이 버퍼로 에빅팅된다. 전형적으로, 렌더 캐시로부터 깊이 버퍼로의 에빅션은 다음 영역의 렌더링 동안 발생된다. 그러나, 렌더 캐시는 중간 판독 및 기록을 처리하므로, 렌더 캐시로부터 깊이 버퍼로 에빅팅된 값은 전형적으로 판독될 필요가 없다. 깊이 버퍼에 값을 기록하는 것은 시스템의 다른 부분 뿐만 아니라, 메모리 버스 상에 상당한 부하를 불필요하게 제공하여, 시스템의 동작을 저속화시킬 수 있다.
따라서, 깊이 캐시로부터 대응하는 깊이 버퍼로의 에빅션을 인에이블링 및/또는 디스에이블링하기 위한 방법, 장치 및 시스템이 필요하다.
도 1은 영역 렌더링에 대한 깊이 기록 디스에이블을 위한 그래픽 장치의 실시예를 포함하는 컴퓨터 시스템의 실시예에 대한 블록도를 도시한 도면.
도 2는 그래픽 빈잉 엔진 및 그래픽스 렌더링 엔진을 포함하는 그래픽 장치의 실시예에 대한 블록도를 도시한 도면.
도 3은 영역 및 기하학적 프리미티브를 포함하는 영역 렌더링기 스크린 뷰의 실시예를 도시한 도면.
도 4는 깊이 기록 디스에이블 시스템의 실시예에 대한 블록도를 도시한 도면.
도 5는 중앙 처리 유닛과, 메모리와, 깊이 기록 디스에이블 장치의 실시예를 갖는 그래픽 장치를 포함하는 컴퓨터 시스템의 실시예에 대한 상세 블록도를 도시한 도면.
도 6은 깊이 기록 디스에이블 장치를 인에이블링 및/또는 디스에이블링하는 프로세스의 실시예에 대한 흐름도.
본 발명은 깊이 캐시로부터 영역 렌더링 시스템 내의 대응하는 메모리 상주 깊이 버퍼로의 깊이 값 등의 에빅션을 제어하는 깊이 기록 디스에이블 장치 및 방법을 제공한다. 깊이 기록 디스에이블 구성은, 인에이블/디스에이블 비트(178) 형태의 제어 신호에 응답하여, 내부 렌더 캐시(172)로부터 대응하는 깊이 버퍼(174)로의 기록 에빅션을 인에이블/디스에이블하는 에빅션 검출 로직(176)을 구현하는 메모리 제어기(182)를 포함한다. 깊이 기록 인에이블/디스에이블 비트가, 깊이 버퍼 기록이 디스에이블된 것을 나타내면, 렌더 캐시(172)로부터의 에빅션(180)(전형적으로 다음 영역(164)의 렌더링 동안 발생됨)에 의해 에빅팅된 데이터가 깊이 버퍼(174)에 기록되는 대신에 파기된다. 특히, 깊이 캐시는 영역 렌더링의 시작시에 일정한 값으로 초기화(즉, 클리어)되므로, 깊이 버퍼는 판독될 필요가 없다. 깊이 캐시는 각 영역 내의 중간 깊이 판독 및 기록을 처리한다.
메모리에 존재하는 깊이 버퍼는 통상적으로 장면이 렌더링된 후에는 요구되지 않기 때문에, 깊이 값이 전형적으로 깊이 버퍼에 기록될 필요는 없다. 따라서, 장면이 렌더링된 후, 영역에 대한 최종 깊이 값은, 깊이 버퍼에 기록되지 않고 파기될 수 있다. 깊이 버퍼에 최종 깊이 값을 기록하는 것을 생략하는 것에 의해 전체 대역폭 요건이 감소되며, 따라서 특히 대역폭이 제한된 시스템에서 성능이 향상된다. 또한, 본 발명의 실시예는 깊이 캐시로부터 깊이 버퍼로의 에빅션이 필요한 경우, 깊이 기록 디스에이블 구성의 자동 오버라이드를 제공한다.
당업자라면, 본 발명은 3D 렌더링, 프리미티브 등에 한정되지 않는다는 것을 알 수 있을 것이다. 그보다는, 실제 구현은 3D, 2½D, 2D 프리미티브 등에 이용될 수 있다. 본 발명은 영역 렌더링 후 적어도 몇몇 예에서 데이터가 필요하지 않는 경우, 소정의 임시 데이터가 캐시로부터 버퍼로 기록되는 것을 금지하는데 이용될 수 있다. 더욱이, 렌더링 모드는 "영역 렌더링"을 포함할 수 있는데, 이것에 한정되는 것은 아니다. 또한, 본 발명의 실시예는 전형적으로 프리미티브가 스크린 전체에 걸쳐 렌더링되는 비영역 렌더링(non-zone rendering)에 이용하도록 채택될 수 있다. 그러한 예에서는, 캐시의 크기가 이미지의 크기에 따라 정해질 수 있다.
상세한 설명에서, 본 발명에 대한 완전한 이해를 제공하기 위해, 다양한 특정적인 세부 내용이 개시된다. 그러나, 당업자라면 본 발명이 이들 특정적인 세부 내용없이도 실시될 수 있음을 이해할 것이다. 다른 경우, 본 발명을 불명료하게 하지 않도록, 잘 알려진 방법, 절차, 구성 요소 및 회로가 상세히 기술된다.
이하 기술될 상세한 설명의 몇몇 부분은 컴퓨터 내의 데이터 비트 또는 이진 신호 상의 동작의 알고리즘 및 심볼 표현의 관점에서 제공된다. 이들 알고리즘 기술 및 표현은, 데이터 처리 분야의 당업자가 그들 작업의 내용을 다른 당업자에게 전달하기 위해, 당업자에 의해 이용된 수단이다. 일반적으로, 본 명세서에서의 알고리즘은 원하는 결과로 인도하는 단계들의 자체 조화된 시퀀스인 것으로 고려된다. 단계들은 물리적 양들의 물리적 조작을 포함한다. 통상적으로, 필요한 것은 아니지만, 이들 양은 저장되고, 전송되고, 조합되고, 비교되고, 그렇지 않은 경우 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 때때로, 대개 일반적인 용도의 이유로 이들 신호를 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로서 지칭하는 것이 편리하다는 것이 입증되었다. 그러나, 이들 및 유사한 용어 모두는 적절한 물리적 양과 관련되며, 이들 양에 적용된 단지 편리한 라벨임을 이해해야 한다. 이하의 설명으로부터 명백하게 구체적으로 언급되지 않는 한, 명세서 전체를 통해, "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 등과 같은 용어를 이용한 설명은, 컴퓨팅 시스템의 레지스터 및/또는 메모리내에서 물리적 (전자) 양으로서 표현된 데이터를 조작하여 컴퓨팅 시스템의 메모리, 레지스터 또는 다른 그러한 정보 저장 장치, 송신 혹은 디스플레이 장치내에서 물리적 양으로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 혹은 컴퓨팅 시스템, 또는 유사한 전자 컴퓨팅 장치의 동작 및 처리를 의미함을 이해할 것이다.
본 발명의 실시예는 하드웨어나 소프트웨어, 또는 그 두가지의 조합으로 구현될 수 있다. 그러나, 본 발명의 실시예는 적어도 하나의 프로세서, 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그램가능 시스템상에서 실행되는 컴퓨터 프로그램으로서 구현될 수 있다. 프로그램 코드가 입력 데이터에 적용되어, 본 명세서에서 기술된 기능을 수행하여, 출력 정보를 생성할 수 있다. 출력 정보는, 알려진 방식으로, 하나 이상의 출력 장치에 적용될 수 있다. 이러한 응용을 위해, 처리 시스템은 예를 들면, DSP(digital signal processor), 마이크로콘트롤러, ASIC(application specific integrated circuit), 또는 마이크 로프로세서와 같은 프로세서를 갖는 소정의 시스템을 포함한다.
프로그램은 하이 레벨 절차 또는 객체 지향 프로그래밍 언어로 구현되어, 처리 시스템과 통신할 수 있다. 또한, 프로그램은, 원하는 경우, 어셈블리 또는 머신 언어로 구현될 수 있다. 사실상, 본 발명은 임의의 특정 프로그래밍 언어에 대한 영역에 한정되지 않는다. 어떠한 경우이든, 언어는 컴파일 또는 해석된 언어이다.
프로그램은 범용 또는 전용 프로그램가능 처리 시스템에 의해 판독가능한 저장 매체 또는 장치(예를 들면, 하드 디스크 드라이브, 플로피 디스크 드라이브, ROM, CD-ROM 장치, 플래쉬 메모리 장치, DVD(digital versatile disk), 또는 다른 저장 장치)에 저장되어, 본 명세서에서 기술된 절차를 수행하기 위해 처리 시스템에 의해 저장 매체 또는 장치가 판독될 때 처리 시스템을 구성 및 동작할 수 있다. 또한, 본 발명의 실시예는 처리 시스템과의 사용을 위해 구성된 머신 판독가능 저장 매체로서 구현되는 것으로 고려될 수 있는데, 여기서 저장 매체는 처리 시스템이 본 명세서에서 기술된 기능을 수행하기 위해 특정 및 사전정의된 방법으로 동작하도록 그렇게 구성된다.
도 1에는, 그러한 유형의 처리 시스템의 예가 도시된다. 샘플 시스템(100)은, 예를 들면, 본 명세서에서 기술된 실시예와 같은 본 발명에 따른 방법의 처리를 수행하는데 사용될 수 있다. 샘플 시스템(100)은, 비록 다른 시스템(다른 마이크로프로세서, 엔지니어링 워크스테이션, 셋탑 박스 등을 갖는 PC를 포함함)이 사용될 수도 있지만, 인텔 코포레이션(Intel Corporation)으로부터 이용가능한 마 이크로프로세서에 근거하는 처리 시스템을 나타낸다. 일실시예에서, 샘플 시스템(100)은 예를 들면, 다른 오퍼레이팅 시스템 및 그래픽 사용자 인터페이스가 사용될 수도 있지만, 마이크로소프트 코포레이션(Microsoft Corporation)으로부터 이용가능한 WINDOWS.TM. 오퍼레이팅 시스템의 버전을 실행할 수 있다.
도 1은 본 발명의 일실시예의 시스템(100) 블록도이다. 컴퓨터 시스템(100)은 중앙 프로세서(102)와, 그래픽 장치(106)를 포함하는 그래픽 및 메모리 제어기(104)와, 메모리(108)와, 디스플레이 장치(114)를 포함한다. 프로세서(102)는 데이터 신호를 처리하며, CISC(complex instruction set computer) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 인스트럭션 세트들의 조합을 구현하는 프로세스, 또는 예를 들면 디지털 신호 프로세서와 같은 다른 프로세서 장치일 수 있다. 프로세서(102)는 프로세서(102)와 시스템(100)내의 다른 구성 요소 사이에 데이터 신호를 송신하는 공통 버스(112)에 접속될 수 있다. 도 1은 단지 예시를 위한 것이다. 또한, 본 발명은 이산 그래픽 장치를 포함하는 구성에서 이용될 수 있다.
프로세서(102)는 공통 버스(112)를 통해 신호를 발행하여, 메모리(108) 또는 그래픽 및 메모리 제어기(104)와 통신함으로써, 본 명세서에서 기술된 바와 같은 데이터를 조작한다. 프로세서(102)는 메모리(108)로부터 얻은 소프트웨어 인스트럭션에 응답하여 그러한 신호를 발행한다. 메모리(108)는 DRAM(dynamic random access memory) 장치, SRAM(static random access memory) 장치, 또는 다른 메모리 장치일 수 있다. 메모리(108)는 프로세서(102), 그래픽 장치(106) 또는 몇몇 다른 장치에 의해 실행될 수 있는 데이터 신호에 의해 표현된 인스트럭션 및/또는 데이터를 저장할 수 있다. 인스트럭션 및/또는 데이터는 본 발명의 기술 중 임의의 것 및/또는 전부를 수행하기 위한 코드를 포함할 수 있다. 또한, 메모리(108)는 소프트웨어 및/또는 데이터를 포함한다. 몇몇 실시예에서, 그래픽 장치(106)는이미지를 렌더링하는데 요구되는 메모리 인텐시브 태스크(memory-intensive tasks)의 다수를 프로세서(102)로부터 오프로딩(offloading)할 수 있다. 그래픽 장치(106)는 데이터 신호를 처리하며, CISC 마이크로프로세서, RISC 마이크로프로세서, VLIW 마이크로프로세서, 인스트럭션 세트들의 조합을 구현하는 프로세스, 또는 예를 들면 디지털 신호 프로세서와 같은 다른 프로세서 장치일 수 있다. 그래픽 장치(106)는 렌더 캐시(110) 및 디스플레이 장치(114)를 포함하는 시스템(100)내의 다른 구성 요소와 그래픽 장치(106) 사이에 데이터 신호를 송신하는 공통 버스(112)에 접속될 수 있다. 이하에 상세히 기술된 바와 같이, 렌더 캐시(110)는 영역 렌더링을 위해 중간 판독 및 기록을 처리한다. 그래픽 장치(106)는 다른 것들 중에서 특정 속성(예를 들면, 컬러)를 디스플레이(114)의 특정 픽셀에 기록하고, 복잡한 프리미티브를 디스플레이 장치(114)상에 그리는 렌더링 하드웨어를 포함한다. 그래픽 및 메모리 제어기(104)는 디스플레이 장치(114)와 통신하여, 그래픽 제어기(104)에 의해 렌더링되거나 또는 처리된 이미지를 디스플레이한다. 디스플레이 장치(114)는 컴퓨터 모니터, 텔레비전 세트, 평면(flat panel) 디스플레이 또는 다른 적절한 디스플레이 장치를 포함할 수 있다.
메모리(108)는 디스플레이를 위한 그래픽 프리미티브의 이미지를 형성하기 위한 하나 이상의 렌더링 프로그램을 포함할 수 있는 호스트 오퍼레이팅 시스템을 저장한다. 시스템(100)은 고객화된 하드웨어 논리 장치 또는 코프로세서(co-processor)를 이용하는 그래픽 가속기와 같은 그래픽 장치(106)를 포함하여, 호스트 렌더링 프로그램에 의해 처리된 그래픽 프리미티브의 적어도 일부분의 성능을 향상시킨다. 호스트 오퍼레이팅 시스템 프로그램 및 호스트 그래픽 응용 프로그램 인터페이스(application program interface; API)는 드라이버 프로그램을 통해 그래픽 장치(106)를 제어한다.
도 2 및 3을 참조하면, 영역 렌더링 시스템(120)상에 구현된 예시적인 기하학적 프리미티브(즉, 삼각형, 선)(162)에 대한 다양한 그래픽 객체의 실시예(160)가 도시된다. 영역 렌더링에서, 다른 기하학적 변형이 이용될 수도 있지만, 스크린은 일반적으로 스크린 공간 직사각형인 영역들(164)의 어레이로 세분된다. 각 영역(164)은 빈과 관련된다. 각각의 빈(128)은 비인접 물리적 메모리 페이지내에 저장된 체인으로된 일련의 코맨드 버퍼(134)를 포함한다. 따라서, 빈(128)은 독립적인 물리적 페이지의 체인으로서 바람직하게 구현된다.
프리미티브( 및 그들의 속성)(162)를 영역(164)으로 할당하는 프로세스를 빈잉이라고 지칭한다. "빈"(128)은 각 영역에 대해 사용된 추상적 버퍼를 지칭한다(전형적으로, 빈(128)은 일련의 인스트럭션 배치 버퍼(134)로서 실현될 것이다). 빈잉은 필요한 계산을 수행하여, 어떤 프리미티브(162)가 어떤 영역(164)에 놓이는지를 결정하며, 전용 하드웨어 및/또는 소프트웨어 구현에 의해 수행될 수 있다.
프리미티브(162)가 영역(164)과 교차할 때, 대응하는 프리미티브 인스트럭션이, 교차된 영역(164)과 관련된 빈(128)내에 위치된다. 따라서, 퍼 존(per-zone) 인스트럭션 빈(128)을 이용하여, 각 서브 이미지를 렌더링하는데 요구되고 각 프리미티브(162)의 스크린 공간 범위를 영역(164)의 어레이에 비교함으로써 생성된 프리미티브 인스트럭션 및 상태 설정 인스트럭션을 유지한다. 따라서, 프리미티브(162)가 수신됨에 따라, 본 발명은 각 프리미티브(162)가 교차하는 영역(들)(164)이 어느 것인지를 결정하고, 프리미티브 인스트럭션을 이들 영역(164) 각각과 관련된 빈(128)으로 복제한다.
한 가지 전형적인 구현에서, 드라이버(122)는 그래픽 빈잉 엔진(126)에 의해 파싱될 프리미티브 인스트럭션의 세트를 기록한다. 프리미티브(162)와 교차된 각 영역(164)에 대해, 그래픽 빈잉 엔진은 대응하는 프리미티브 인스트럭션과 교차된 영역(164)과 관련된 버퍼(134)에 기록한다. 몇몇 프리미티브(162)는 하나보다 많은 영역(164)과 교차할 것이며, 그러한 경우 교차된 영역(164)에 대응하는 빈(128)에 프리미티브 인스트럭션이 복제된다. 예를 들어, 도 3에 도시된 라이트닝 볼트(lightening bolt)는 9개의 영역(164)과 교차한다. 이러한 프로세스는 전체 장면이 빈(128)내에 정렬될 때까지 계속된다.
도 2를 참조하면, 전형적인 구현에서, 장면 입력 리스트(124)라고 지칭되는 그래픽 프리미티브 및 상태 설정 인스트럭션 스트림이, 그래픽 빈잉 엔진(126)과 관련된 그래픽 빈잉 엔진 링 버퍼(graphics-binning engine ring buffer)(125)에 처음에 적용된다. 장면 입력 리스트(124)는 API에 의해 수신된 것으로서 단일의, 시간적으로 순서화된 장면 기술일 수 있다. 전형적으로, 그래픽 빈잉 엔진(126)은 하드웨어 빈잉 엔진(hardware binning engine; HWB)(126)으로서 구현된다. 당업자라면 소프트웨어 또는 소프트웨어 + 하드웨어 비너(binner)가 마찬가지로 사용될 수 있음을 인식할 것이다. 그래픽 빈잉 엔진(126)은 장면 입력 리스트(124)를 파싱하여, 각 프리미티브(162)와 교차하는 영역(들)(164)을 결정한다.
전술한 바와 같이, 영역(164)은 빈(128)과 관련된다. 그래픽 빈잉 엔진(126)은 각 프리미티브(162)의 스크린 공간 범위를 영역(164)의 어레이와 비교하고, 관련된 프리미티브 코맨드를 대응하는 빈(128)으로 복제한다. 빈(128)은 전형적으로 비인접 물리적 메모리 페이지에 저장된 체인으로 된 일련의 코맨드 버퍼(134)로 이루어진다. 빈 리스트는 각 빈(132)을 포함하는 버퍼(134)의 리스트이다. 페이지는 처음에 BMP(bin memory pool)(140)에 할당된다. 빈 포인터 리스트(130)는 페이지의 페이지 번호로 초기화되고, 기록 포인터를 빈 리스트(132)에 저장한다.
또한, 그래픽 빈잉 엔진(126)은 장면 입력 리스트(124)와 함께 포함된 관련 상태 설정 인스트럭션을 파싱함으로써 현재 그래픽 상태를 유지한다. 프리미티브 코맨드를 소정의 빈(128)에 위치시키기 전에, 그래픽 빈잉 엔진(126)은 빈(128)내의 프리미티브 코맨드 이전에 임의의 요구된 상태 설정 인스트럭션을 위치시킨다.
장면 입력 리스트(124)가 완전히 파싱된 후, 관련된 빈(즉, 빈 0, 빈 1, ... 빈 n-1)은 장면을 렌더링하기 위해 그래픽스 렌더링 엔진(136)에 의해 사용될 준비가 된다. 이하에 상세히 기술된 바와 같이, 장면 입력 리스트(124)의 끝에 인스트럭션이 포함되어, 그래픽 빈잉 엔진(126)으로 하여금 펜딩(pending) 장면 카운터(148)내의 레지스터를 1만큼 증가시키고, 빈잉된 장면의 렌더링을 시작하도록 한다. 예를 들어, 그래픽 빈잉 엔진(126)은 렌더링 인스트럭션을, 경로(156)를 통해, 그래픽스 렌더링 엔진(136)과 관련된 그래픽스 렌더링 엔진 링 버퍼(157)에 전송한다.
렌더링
일단 모든 프리미티브(162)가 저장되고, 코맨드 구조가 완료되면, 제 2 패스가 만들어져, 한번에 하나의 영역(164)에 장면을 렌더링한다. 프리미티브(162)와 교차된 각 영역(164)에 대한 빈을 형성하는 제 1 패스 이후에, 제 2 영역 단위 렌더링 패스가 수행된다. 특히, 모든 영역(164)에 대한 빈(128)이 렌더링되어, 최종 이미지를 생성하며, 한번에 하나의 영역(164)에 각 장면이 렌더링된다. 영역이 렌더링되는 순서는 중요하지 않다. 특정 영역(164)내의 픽셀을 터치하는 프리미티브(162)와 관련된 모든 빈(128)은 다음 영역(164)이 렌더링되기 전에 렌더링된다. 단일의 프리미티브(162)가 많은 영역(164)과 교차할 수 있으므로, 다수의 복제가 요구된다. 결과적으로, 다수의 영역(164)과 교차하는 프리미티브(162)는 다수회 렌더링된다(즉, 교차된 각 영역(164)에 대해 1회).
도 3 및 4를 참조하면, 프리미티브(162)가 렌더 캐시(172)에 대해 정렬되는 영역(164)과의 교차에 의해 정렬되는 것의 결과로서 렌더링 성능이 향상된다. 렌더링 엔진(136)에 의한 나중의 사용을 위해 이용가능한 메모리 주소를 갖는 깊이 캐시(172)에 정보가 저장된다. 그래픽 장치(106)는 한번에 스크린의 작은 부분상에서만 동작하기 때문에(즉, 영역(164)), 렌더 캐시(172)에 전체 영역(164)에 대한 프레임 버퍼 내용을 유지할 수 있다. 렌더 캐시(172)는 각 영역(164)내의 중간 깊이 판독 및 기록을 처리한다. 전형적으로, 영역(164)의 치수는 렌더 캐시(172)의 크기 및 구성에 대하여 일정하게 튜닝된다. 렌더 캐시(172)가 최적의 이점을 제공하는 것은 이러한 메카니즘에 의한 것이다(캐시된 데이터의 재사용은 영역(164)의 공간 코히어런스를 활용함으로써 최대화된다). 영역 렌더링에 의해, 한번에 한 영역(164)의 최종 이미지를 생성하기 위해 단지 최소 수의 컬러 메모리 기록이 수행될 필요가 있으며, 컬러 메모리 판독 및 깊이 메모리 판독 및 기록은 최소화되거나 또는 완전히 회피될 수 있다. 따라서, 렌더 캐시(172)를 사용함으로써, 메모리 트래픽이 크게 감소되고, 다음 프리미티브(162)를 계속하기 전에 각 프리미티브(162)를 완전히 그리는 종래의 렌더링기에 비하여 성능이 향상된다. 따라서, 메모리 상주 깊이 버퍼(174)가 장면이 렌더링된 후에 필요하지 않는 경우에는 항상 렌더 캐시(172)에 저장된 영역(164)에 대한 최종 깊이 값이 깊이 버퍼(174)에 기록되지 않고 파기될 수 있다.
도 4는 깊이 기록 디스에이블 구성의 실시예(170)에 대한 블록도를 도시한다. 깊이 기록 디스에이블 구성은 인에이블/디스에이블 비트(178) 형태의 제어 신호에 응답하여, 내부 렌더 캐시(172)로부터 대응하는 깊이 버퍼(174)로의 기록 에빅션을 인에이블/디스에이블하는 에빅션 검출 로직(176)을 구현하는 메모리 제어기(182)를 포함한다. 깊이 기록 인에이블/디스에이블 비트가, 깊이 버퍼 기록이 디스에이블된 것을 나타내면, 렌더 캐시(172)로부터의 에빅션(180)(전형적으로 다음 영역(164)의 렌더링 동안 발생됨)은 에빅팅된 데이터를 깊이 버퍼(174)에 기록하는 대신에 파기시킨다. 최종 깊이 값 기록을 제거하는 것은 전체 대역폭 요건을 감소시키므로, 특히 대역폭 제한 시스템 구성에서 성능을 향상시킨다.
깊이 기록 인에이블/디스에이블 비트가, 깊이 버퍼가 인에이블된 것을 나타내면, 메모리 제어기(182)는 되기록(write back) 사이클을 수행한다. 메모리 제어기(182)가 버스를 해제하면, 렌더링 프로세서는 캐시 데이터를 메모리 버스 상에 기록한다. 이 데이터는 깊이 버퍼(174)에 도달한다.
도 5는 깊이 캐시(172)와, 깊이 버퍼 메모리 영역(174)과, 그래픽 빈잉 엔진(126), 그래픽스 렌더링 엔진(136) 및 영역 제어 레지스터(182)를 포함하는 그래픽 장치(106)의 상세 블록도를 도시한다. 깊이 버퍼 메모리 영역(174)은 그래픽 빈잉 엔진(126) 및 그래픽스 렌더링 엔진(136)에 의한 사용을 위한 퍼 픽셀(per-pixel) 깊이 및 스텐실(stencil) 값을 저장하는데 통상적으로 사용되는 2차원 표면이다. 깊이 버퍼 메모리 영역(174)에 대응하는 깊이 캐시(172)는 영역 렌더링 모드에서 컬러 및 깊이 값을 유지한다. "깊이 기록 디스에이블" 특성이 인에이블되는 경우, 그것은 깊이 캐시 에빅션이 깊이 버퍼에 기록되는 것을 방지한다. "깊이 기록 인에이블" 특성은 깊이 버퍼 포맷에 관계없이, 깊이 버퍼에 대한 깊이 값의 기록을 인에이블/디스에이블하는 비트에 의해 구현될 수 있다.
도 4 및 5를 참조하면, 영역 제어 레지스터(184)는 전형적으로 1 또는 그 이상의 비트(들)로 구현되는 깊이 기록 제어 신호(178)를 저장하는 깊이 기록 디스에이블 필드(186)를 포함하는 다수의 필드를 포함한다. 메모리 제어기(182)는 깊이 기록 제어 비트(178)를 이용하여, 깊이 캐시(172)로부터의 에빅션이 깊이 버퍼(174)에 기록되어야 하는지를 결정한다. 일실시예에서, 영역 제어 레지스터(184)는 깊이 기록 디스에이블 비트(178)와 같은 깊이 기록 제어 비트를 구현한다.
동작시에, 그래픽 응용(도시되지 않음)은 영역 제어 인스트럭션(116)을 포함하는 인스트럭션(188)을 인스트럭션 스트림에 공급한다. 인스트럭션(188)은 메모리 영역(166)에 저장되며, 그들을 디코딩 및 실행하는 그래픽 빈잉 엔진(126) 및 그래픽스 렌더링 엔진(136)에 액세스가능하다. 영역 렌더링 모드 동안, 영역 제어 레지스터(184)는 인스트럭션 스트림으로부터의 영역 제어 인스트럭션(116)을 처리하는 동안 액티브 레지스터가 되도록 만들어진다.
전형적인 구현에서, 깊이 기록 디스에이블 제어 인스트럭션(118)은 영역 제어 레지스터(184)로 로딩되는 깊이 기록 제어 값(178)(로컬 제어 어드레스 + 깊이 기록 디스에이블 비트)을 제공한다. 깊이 기록 디스에이블 필드(186)는 그래픽 응용 소프트웨어 또는 동작 소프트웨어로 하여금 깊이 기록 디스에이블이 인에이블되도록 요청하도록 함으로써, 깊이 캐시(172)로부터 깊이 버퍼(174)로의 정상 에빅션(180)이 방지되도록 한다. 특히, 빈잉 단계에서, 프리미티브(162)는 깊이 캐시(172)에 대해 정렬되는 영역(164)으로 분해된다. 그래픽 장치(106)는 한번에 스크린의 작은 부분상에서만 동작하기 때문에(즉, 영역(164)), 깊이 캐시(172)내의 전체 영역(164)에 대한 프레임 버퍼 내용을 유지할 수 있다. 한번에 한 영역에 최종 이미지를 생성하기 위해 단지 최소수의 컬러 메모리 기록이 수행될 필요가 있고, 컬러 메모리 판독 및 깊이 버퍼(174)에 대한 깊이 메모리 판독 및 기록이 최소화되거나 또는 완전히 회피될 수 있다. (일정한) 클리어 깊이 값이 생성되어, 깊이 버퍼(174)에 기록될 수 있다. 마찬가지로, (일정한) 클리어 스텐실 값이 깊이 버퍼(174)에 기록된다. 또한, 특수 프리미티브를 이용하여, 깊이 또는 소정의 다른 메모리 영역의 고속 클리어를 수행할 수 있다. 영역 제어 레지스터(184)의 깊이 기록 디스에이블 비트(178)가 설정될 때, 깊이 에빅션 검출 로직(176)은 깊이 버퍼(174)로의 깊이 값 기록(180)을 금지한다.
본 발명의 실시예는 또한 깊이 캐시(172)로부터 깊이 버퍼(174)로의 에빅션이 필요한 경우 깊이 기록 디스에이블 구성(170)을 자동으로 오버라이딩(overriding)한다. 깊이 기록 인에이블 제어 인스트럭션(168)은 영역 제어 레지스터(182)로 로딩되는 깊이 기록 제어 값(로컬 제어 어드레스 및 깊이 기록 인에이블 비트)(178)을 제공한다. 깊이 기록 인에이블 필드(204)는 그래픽 응용 소프트웨어 또는 동작 소프트웨어로 하여금 깊이 기록이 인에이블되도록 요청하도록 함으로써, 깊이 캐시(172)로부터 깊이 버퍼(174)로의 에빅션(180) 기록이 허용되도록 한다.
깊이 버퍼(174)에 기록된 깊이 캐시(172)로부터의 에빅션은 다양한 상황에서 바람직할 수 있으며, 본 명세서에서 기술된 소정의 구성에 한정되지 않는다. 예를 들어, 부분적으로 빈잉된 장면을 렌더링할 때, 캐시가 플러쉬될 때, 유효 캐시 라인이 할당해제되어 캐시내의 새로운 데이터의 라인에 대해 공간을 제공할 때, 또는, 단지 데이터의 유효 카피만이 캐시에 존재하고, 그래픽 엔진(106)이 해당 데이터를 사용 또는 부분적으로 중복기록하고자 원할 때, 깊이 캐시(172)는 다수의 콘텍스트 응용에서 깊이 버퍼(174)에 데이터를 되기록할 필요가 있을 수 있다. 이들 각각의 경우에 있어서, 메모리내의 데이터가 오래되지 않았다는 것을 보장하기 위해 메모리에 대한 기록이 요구되도록 데이터의 유효 카피만이 깊이 캐시(172)에 존재할 수 있다.
예를 들어, 깊이 기록 제어 회로는 그래픽스 렌더링 엔진(136)을 이용하여 다수의 디스플레이 장치상에 다수의 이미지를 렌더링하는 시스템 및 방법과 함께 사용될 수 있다. 그래픽스 렌더링 엔진(136)은 제 1 독립 이미지와 관련된 인스트럭션 및 제 2 독립 이미지와 관련된 인스트럭션의 처리를 교환할 수도 있다. 특히, 그래픽스 렌더링 엔진(136)은 상이한 링 버퍼 메모리 영역으로부터의 처리 인스트럭션들 사이에서, 또는, 동일 인스트럭션 스트림내의 2개의 상이한 그래픽 응용으로부터의 인스트럭션 처리에 의해 스위치할 수 있다. 그래픽스 렌더링 엔진(136)은 제 2 독립 이미지와 관련된 인스트럭션 처리를 시작하기 전에, 제 1 독립 이미지와 관련된 모든 인스트럭션을 완전히 처리하는 것을 기다릴 필요가 없다. 콘텍스트 스위칭을 용이하게 하기 위해, 깊이 캐시(172)는 렌더링의 완료 이전에 다른 그래픽 콘텍스트 또는 목적에 의해 사용될 필요가 있다. 그러한 경우, 깊이 기록 에빅션은 적절한 그래픽 콘텍스트의 깊이 버퍼에 기록될 필요가 있다. 이전에 기록된 깊이 값은 나중에 필요한 경우 깊이 캐시(172)로 되판독(read back)될 수 있다. 그러한 에빅션을 허용함으로써, 캐시된 깊이 값(180)이 적절한 그래픽 콘텍스트의 깊이 버퍼(174)에 기록되도록 허용된다.
깊이 캐시(172)로부터 깊이 버퍼(174)로의 에빅션(180)은, (메모리 자원을 자유롭게 하고/하거나 부분적 장면 결과에 대한 중간 액세스를 허용하기 위해) 부분적으로 빈잉된 장면이 렌더링되고, 그 다음 차후에 재개될 필요가 있는 경우에 바람직할 수 있다. 때때로, 장면의 영역(164)은 장면이 완전하게 빈잉되기 이전에 렌더링된다. 이러한 상황은 전체 장면이 빈잉되는 것을 허용하지 않을 수도 있는 자원(인스트럭션, 버텍스 또는 텍스처 메모리) 제한으로부터 발생될 수 있다.
특히, 추가적인 프리 메모리가 만들어질 수 없다면, 그래픽스 렌더링 엔진(136)은 부분적 빈잉된 장면을 렌더링하여, 빈 메모리를 프리 업(free up)시키고, 그 다음 나머지 장면의 빈잉을 재시작한다. 전형적인 실시예에서, 동기 끝 장면 비트(206)를 설정하기 위해 영역 제어 레지스터(184)의 직접 기록이 수행된다. 이것은 그래픽 빈잉 엔진(126)이 (a) 배치 버퍼를 끝내라는 인스트럭션으로 그들을 종료함으로써 모든 유효 빈(128)을 폐쇄하고, (b) 임의의 내부적으로 캐시된 데이터(예를 들면, 캐시된 빈 포인터(132))를 플러쉬 아웃(flush out)하고, (c) 빈(128)과 관련된 상태 트랙킹 정보를 수정하여, 빈잉의 재개시에, 모든 필요한 상태가, 그것이 수신하는 제 1 프리미티브(162) 이전에 빈(128)에 삽입되도록 한다. 빈 장면 레지스터(208)의 직접 기록은 펜딩 장면 카운터(148)가 증가되도록 한다. 장면 계속의 렌더링은 깊이 값이 메모리에 기록될 것을 요구할 것이므로, 깊이 기록 인에이블 비트(204)는 부분적 장면을 렌더링하기 전에 클리어된다. 장면의 빈잉은 재개 비트(210)를 설정하기 위해 영역 제어 레지스터(184)를 직접 기록함으로써 재개된다.
또한, 본 발명은 영역(164)의 렌더링이 경쟁하는 동작(예를 들면, 2중 디스플레이)의 레이턴시를 증가시키는 것을 방지하고, 장면 자원(빈 리스트 메모리, 텍스처 메모리 등)에 대한 어려운 제한을 효율적으로 제거한다.
전형적인 다른 실시예는 다른 링에 의한 영역(164)의 렌더링의 차단이다. 여기서, 다른 링(실제로, 단순히 다른 링에 대한 논리적 콘텍스트 스위치)에서 수행된 렌더링은 깊이 캐시(172)로부터의 에빅션을 강요할 것이다. 영역(164)의 렌더링을 재개하기 위해, 중간 컬러 및 깊이 값은 깊이 버퍼(174)와 같은 메모리 상주 버퍼에 기록되어야 한다(여기서, 깊이 캐시(172) 미스는, 만약 차후에 요구되는 경우, 영역의 컬러 및 깊이 값을 깊이 캐시(172)로 다시 가져올 것이다).
전형적인 또다른 실시예에서, 논리적 콘텍스트 스위치 또는 플러쉬 동작으로 인한 깊이 캐시(172)로부터의 에빅션(180)은 깊이 기록 디스에이블 비트(178)에 의해 게이팅되지 않는다. 영역 렌더링이 재개될 때, 깊이 기록 디스에이블 비트(178)의 설정은 재저장되고, 차후에 깊이 에빅션을 게이팅(예를 들면, 기록)할 것이다.
더욱이, 다른 실시예는 (지금 렌더링될) 타겟 컬러 및/또는 깊이 버퍼(174)에 대한 액세스를 획득하고자 시도한다. 이 액세스는 로크(lock) 동작을 통해 명시적으로, 또는 렌더링될 컬러 또는 깊이 버퍼(174)를 판독하는 카피 동작을 통해 내포적으로 수행될 수 있다. 이러한 경우, 깊이 기록 디스에이블 특성은 전형적으로 장면 렌더링의 최종 단계 동안에만 사용된다.
도 6은 깊이 캐시(172)로부터 깊이 버퍼(174)로의 깊이 값 에빅션을 억제하는 실시예(190)의 흐름도이다. 영역 렌더링에서, 전형적으로 컬러 및 깊이 값을 유지하는 내부 렌더 캐시(172)는 일정한 값으로 초기화(즉, 클리어)된다(단계 192). 필요한 경우, (일정한) 클리어 깊이 값이 생성되어, 깊이 버퍼(174)에 기록된다. 마찬가지로, 필요한 경우, (일정한) 클리어 스텐실 값이 깊이 버퍼(174)에 기록된다. 특수 프리미티브를 이용하여, 깊이 또는 소정의 다른 버퍼의 고속 클리어를 수행할 수 있다.
대응하는 링 버퍼 메모리 영역에 저장되는 인스트럭션 스트림으로부터의 영역 제어 인스트럭션의 처리 동안, 특정 영역 제어 레지스터는 액티브 레지스터가 되도록 만들어진다(단계 194). 전형적인 구현에서, 그래픽 응용은 인스트럭션을 인스트럭션 스트림으로 공급한다. 그래픽스 렌더링 엔진은 인스트럭션 스트림으로부터의 특정 인스트럭션을 디코딩하여, 인스트럭션이 무슨 정보를 포함하는지를 찾아낸다(예를 들면, 영역 제어 또는 적용될 상태 변수 변화, 또는 렌더링될 프리미티브). 이들 인스트럭션은 통상적으로 특정 디스플레이 장치와 관련되는 링 버퍼 메모리 영역에 저장될 수 있다. 그 후, 그래픽스 렌더링 엔진은 그에 따라 인스트럭션을 실행한다.
전형적인 구현에서, 영역 제어 인스트럭션은 영역 제어 레지스터로 로딩되는 깊이 기록 디스에이블 값(로컬 제어 어드레스 + 깊이 기록 디스에이블 비트)을 제공한다(단계 196).
깊이 및/또는 (스텐실 값과 같은) 다른 값이 렌더 캐시(172)로부터 깊이 버퍼(174)로 에빅팅되어야 하는지의 여부가 결정된다(단계 198). 예를 들어, 실시예(170)는 영역 렌더링과 같은 렌더 구성을 검출하고, 렌더 캐시 또는 다른 캐시가 데이터를 유지하는데 이용되며, 깊이 버퍼(174)로의 정상 에빅션은 필요하지 않다. 본 발명은 깊이 기록 디스에이블 값(로컬 제어 어드레스 + 깊이 기록 디스에이블 비트)이 영역 제어 레지스터로 로딩되었는지 여부를 검출할 수 있다.
만약, 에빅션이 요구되지 않는다면(즉, 영역 제어 레지스터의 깊이 기록 디스에이블 비트(178)가 설정됨)(단계 198), 깊이 에빅션 검출 로직(176)은 깊이 버퍼(174)에 대한 깊이 값 기록(180)을 금지한다(단계 200). 전형적인 실시예에서, 깊이 기록 디스에이블 필드는, 그래픽 응용 소프트웨어 또는 동작 소프트웨어로 하여금 깊이 기록 디스에이블이 인에이블되도록 요청하도록 함으로써, 깊이 캐시(172)로부터 깊이 버퍼(174)로의 에빅션(180)이 금지되도록 한다.
특허법의 요건에 따라 본 발명을 기술하였으며, 당업자라면 특정 요건 또는 조건을 만족시키기 위해 본 발명을 어떻게 변화 및 수정하는지에 대해 이해할 것이다. 그러한 변화 및 수정은 이하의 특허 청구 범위에 개시된 본 발명의 영역 및 정신을 벗어나지 않고서도 수행될 수 있다.
Claims (24)
- 하나 이상의 프리미티브(primitives)의 렌더링 동안, 제 1 메모리로부터 제 2 메모리로의 에빅션(eviction)을 억제하는 방법에 있어서,상기 제 1 메모리를 일정한 값으로 초기화하는 단계와,제어 데이터 신호를 포함하는 인스트럭션을 제공하는 단계와,렌더링 동안, 상기 인스트럭션을 처리하는 단계와,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션 여부를 결정하는 단계를 포함하고,상기 인스트럭션 제공 단계는깊이(depth) 기록 디스에이블 값을 포함하는 영역 제어 인스트럭션을 제공하는 단계와,상기 제어 데이터 신호를 영역 제어 레지스터로 로딩하는 단계를 더 포함하는에빅션 억제 방법.
- 제 1 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 억제하는 단계를 더 포함하는 에빅션 억제 방법.
- 제 1 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 허용하는 단계를 더 포함하는 에빅션 억제 방법.
- 제 3 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 허용하는 단계는,상기 제어 데이터 신호에 근거하여, 깊이 캐시로부터 깊이 버퍼로의 깊이 기록 에빅션을 허용하는 단계를 더 포함하는 에빅션 억제 방법.
- 제 4 항에 있어서,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 필요한 경우, 깊이 기록 에빅션을 자동으로 오버라이딩(overriding)하는 단계를 더 포함하는 에빅션 억제 방법.
- 제 5 항에 있어서,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 필요한 경우, 깊이 기록 에빅션을 자동으로 오버라이딩하는 단계는,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 비동기 그래픽 콘텍스트 스위치(asynchronous graphics context switch)에 응답하는 경우에 깊이 기록 에빅션을 자동으로 오버라이딩하는 단계를 더 포함하는 에빅션 억제 방법.
- 제 2 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 억제하는 단계는,상기 제어 데이터 신호에 근거하여, 깊이 캐시로부터 깊이 버퍼로의 깊이 기록 에빅션을 억제하는 단계를 더 포함하는 에빅션 억제 방법.
- 제 1 항에 있어서,상기 제어 데이터 신호를 억제하는 인스트럭션을 제공하는 단계와,렌더링 동안, 상기 인스트럭션을 처리하는 단계를 더 포함하는 에빅션 억제 방법.
- 프리미티브를 포함하는 장면을 렌더링하는 장치에 있어서,깊이 값을 저장하는 제 1 메모리 영역―상기 제 1 메모리는 일정한 값으로 초기화됨―과,제 2 메모리 영역과,상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역으로의 깊이 값 에빅션을 제어하는 기록 제어 신호를 저장하는 제어 메모리 영역과,프리미티브와 교차하는 영역들과 관련된 복수의 빈잉 메모리 영역과,상기 깊이 값 제어 신호에 응답하여, 상기 제어 신호를 포함하는 인스트럭션을 제공하는 빈잉 엔진과,상기 인스트럭션을 상기 제어 메모리 영역 내의 레지스터로 로딩하는 렌더링 엔진을 포함하는프리미티브를 포함하는 장면을 렌더링하는 장치.
- 제 9 항에 있어서,상기 제어 신호는 상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역으로의 에빅션을 디스에이블하는 프리미티브를 포함하는 장면을 렌더링하는 장치.
- 제 9 항에 있어서,상기 제어 신호는 상기 제 1 메모리 영역으로부터 상기 제 2 메모리 영역으로의 에빅션을 인에이블하는 프리미티브를 포함하는 장면을 렌더링하는 장치.
- 제 9 항에 있어서,상기 제 1 메모리 영역은 깊이 캐시인 프리미티브를 포함하는 장면을 렌더링하는 장치.
- 제 9 항에 있어서,상기 제 2 메모리 영역은 깊이 버퍼인 프리미티브를 포함하는 장면을 렌더링하는 장치.
- 하나 이상의 프리미티브의 렌더링 동안, 제 1 메모리로부터 제 2 메모리로의 에빅션을 억제하기 위한, 프로세서에 의해 실행가능한 복수의 머신 판독가능 인스트럭션이 저장된 머신 판독가능 매체에 있어서,상기 제 1 메모리를 일정한 값으로 초기화하는 인스트럭션과,제어 데이터 신호를 포함하는 인스트럭션을 제공하는 인스트럭션과,렌더링 동안, 상기 인스트럭션을 처리하는 인스트럭션과,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션이 있어야 하는지를 결정하는 인스트럭션을 포함하고,상기 제어 데이터 신호를 포함하는 인스트럭션을 제공하는 인스트럭션은깊이 기록 디스에이블 값을 포함하는 영역 제어 인스트럭션을 제공하는 인스트럭션과,상기 제어 데이터 신호를 영역 제어 레지스터로 로딩하는 인스트럭션을 더 포함하는머신 판독가능 매체.
- 제 14 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 억제하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
- 제 15 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 억제하는 인스트럭션은,상기 제어 데이터 신호에 근거하여, 깊이 캐시로부터 깊이 버퍼로의 깊이 기록 에빅션을 억제하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
- 제 14 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 허용하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
- 제 17 항에 있어서,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션을 허용하는 인스트럭션은,상기 제어 데이터 신호에 근거하여, 깊이 캐시로부터 깊이 버퍼로의 깊이 기록 에빅션을 허용하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
- 제 18 항에 있어서,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 필요한 경우, 깊이 기록 에빅션을 자동으로 오버라이딩하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
- 제 19 항에 있어서,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 필요한 경우, 깊이 기록 에빅션을 자동으로 오버라이딩하는 인스트럭션은,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 비동기 그래픽 콘텍스트 스위치에 응답할 때, 깊이 기록 에빅션을 자동으로 오버라이딩하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
- 제 14 항에 있어서,상기 제어 데이터 신호를 억제하는 인스트럭션을 제공하는 인스트럭션과,렌더링 동안, 상기 인스트럭션을 처리하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
- 하나 이상의 프리미티브의 렌더링 동안, 제 1 메모리로부터 제 2 메모리로의 에빅션을 억제하는 방법에 있어서,상기 제 1 메모리를 일정한 값으로 초기화하는 단계와,제어 데이터 신호를 포함하는 인스트럭션을 제공하는 단계와,렌더링 동안, 상기 인스트럭션을 처리하는 단계와,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션이 있어야 하는지를 결정하는 단계와,상기 제어 데이터 신호에 근거하여, 깊이 캐시로부터 깊이 버퍼로의 깊이 기록 에빅션을 허용하는 단계와,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 필요한 경우, 깊이 기록 에빅션을 자동으로 오버라이딩하는 단계를 포함하는에빅션 억제 방법.
- 하나 이상의 프리미티브의 렌더링 동안, 제 1 메모리로부터 제 2 메모리로의 에빅션을 억제하기 위해 프로세서에 의해 실행가능한 복수의 머신 판독가능 인스트럭션이 저장된 머신 판독가능 매체에 있어서,상기 제 1 메모리를 일정한 값으로 초기화하는 인스트럭션과,제어 데이터 신호를 포함하는 인스트럭션을 제공하는 인스트럭션과,렌더링 동안, 상기 인스트럭션을 처리하는 인스트럭션과,상기 제어 데이터 신호에 근거하여, 상기 제 1 메모리로부터 상기 제 2 메모리로의 에빅션이 있어야 하는지를 결정하는 인스트럭션과,상기 제어 데이터 신호에 근거하여, 깊이 캐시로부터 깊이 버퍼로의 깊이 기록 에빅션을 허용하는 인스트럭션과,상기 깊이 캐시로부터 상기 깊이 버퍼로의 에빅션이 필요한 경우, 깊이 기록 에빅션을 자동으로 오버라이딩하는 인스트럭션을 포함하는머신 판독가능 매체.
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/038,814 US6747657B2 (en) | 2001-12-31 | 2001-12-31 | Depth write disable for zone rendering |
US10/038,814 | 2001-12-31 | ||
PCT/US2002/039776 WO2003058558A1 (en) | 2001-12-31 | 2002-12-11 | Depth write disable for zone rendering |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040072695A KR20040072695A (ko) | 2004-08-18 |
KR100615784B1 true KR100615784B1 (ko) | 2006-08-25 |
Family
ID=21902051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020047010416A KR100615784B1 (ko) | 2001-12-31 | 2002-12-11 | 에빅션 억제 방법, 프리미티브를 포함하는 장면을 렌더링하는 장치 및 머신 판독가능 매체 |
Country Status (10)
Country | Link |
---|---|
US (2) | US6747657B2 (ko) |
EP (1) | EP1461777B1 (ko) |
JP (1) | JP2005514712A (ko) |
KR (1) | KR100615784B1 (ko) |
CN (1) | CN1291355C (ko) |
AT (1) | ATE422085T1 (ko) |
AU (1) | AU2002360575A1 (ko) |
DE (1) | DE60231059D1 (ko) |
TW (1) | TWI281637B (ko) |
WO (1) | WO2003058558A1 (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6747657B2 (en) * | 2001-12-31 | 2004-06-08 | Intel Corporation | Depth write disable for zone rendering |
US20060232595A1 (en) * | 2005-04-18 | 2006-10-19 | Stephen Junkins | Rasterizer driven cache coherency |
US7457901B2 (en) * | 2005-07-05 | 2008-11-25 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling variable width data transfers |
US7502880B2 (en) * | 2005-07-11 | 2009-03-10 | Via Technologies, Inc. | Apparatus and method for quad-pumped address bus |
US7441064B2 (en) * | 2005-07-11 | 2008-10-21 | Via Technologies, Inc. | Flexible width data protocol |
US7444472B2 (en) * | 2005-07-19 | 2008-10-28 | Via Technologies, Inc. | Apparatus and method for writing a sparsely populated cache line to memory |
US7590787B2 (en) * | 2005-07-19 | 2009-09-15 | Via Technologies, Inc. | Apparatus and method for ordering transaction beats in a data transfer |
US8836712B2 (en) * | 2011-01-12 | 2014-09-16 | Intel Corporation | Filtering mechanism for render target line modification |
US9547930B2 (en) | 2011-11-30 | 2017-01-17 | Qualcomm Incorporated | Hardware switching between direct rendering and binning in graphics processing |
WO2013101167A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Five-dimensional rasterization with conservative bounds |
US9633230B2 (en) * | 2012-10-11 | 2017-04-25 | Intel Corporation | Hardware assist for privilege access violation checks |
US9916680B2 (en) * | 2012-10-12 | 2018-03-13 | Nvidia Corporation | Low-power processing in depth read-only operating regimes |
US10181214B2 (en) | 2013-03-14 | 2019-01-15 | Google Llc | Smooth draping layer for rendering vector data on complex three dimensional objects |
GB2506706B (en) * | 2013-04-02 | 2014-09-03 | Imagination Tech Ltd | Tile-based graphics |
US9659342B2 (en) * | 2013-06-29 | 2017-05-23 | Intel Corporation | Mid command buffer preemption for graphics workloads |
GB2543866B (en) * | 2016-03-07 | 2017-11-01 | Imagination Tech Ltd | Task assembly for SIMD processing |
US10453169B2 (en) * | 2016-03-28 | 2019-10-22 | Intel Corporation | Method and apparatus for multi format lossless compression |
US10380789B2 (en) * | 2016-09-16 | 2019-08-13 | Intel Corporation | Method and apparatus for efficient depth prepass |
US10402345B2 (en) * | 2016-10-28 | 2019-09-03 | Intel Corporation | Deferred discard in tile-based rendering |
US10802754B2 (en) * | 2018-03-12 | 2020-10-13 | Micron Technology, Inc. | Hardware-based power management integrated circuit register file write protection |
GB2572404B (en) * | 2018-03-29 | 2020-04-15 | Imagination Tech Ltd | Method and system for controlling processing |
US10936031B2 (en) | 2018-04-13 | 2021-03-02 | Dell Products L.P. | Information handling system dynamic thermal transfer control |
US10969841B2 (en) | 2018-04-13 | 2021-04-06 | Dell Products L.P. | Information handling system housing integrated vapor chamber |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5493637A (en) | 1992-12-04 | 1996-02-20 | Network Computing Devices, Inc. | Video buffer recycling method and apparatus |
US5561780A (en) * | 1993-12-30 | 1996-10-01 | Intel Corporation | Method and apparatus for combining uncacheable write data into cache-line-sized write buffers |
US5760780A (en) | 1996-01-31 | 1998-06-02 | Hewlett-Packard Company | Computer graphics system using caching of pixel Z values to improve rendering performance |
US6212605B1 (en) * | 1997-03-31 | 2001-04-03 | International Business Machines Corporation | Eviction override for larx-reserved addresses |
US6492991B1 (en) * | 1998-08-28 | 2002-12-10 | Ati International Srl | Method and apparatus for controlling compressed Z information in a video graphics system |
US6591347B2 (en) * | 1998-10-09 | 2003-07-08 | National Semiconductor Corporation | Dynamic replacement technique in a shared cache |
GB9915012D0 (en) * | 1999-06-29 | 1999-08-25 | Koninkl Philips Electronics Nv | Z-buffering graphics system |
US6393522B1 (en) * | 2000-01-27 | 2002-05-21 | Ati International Srl | Method and apparatus for cache memory management |
US6747657B2 (en) * | 2001-12-31 | 2004-06-08 | Intel Corporation | Depth write disable for zone rendering |
-
2001
- 2001-12-31 US US10/038,814 patent/US6747657B2/en not_active Expired - Lifetime
-
2002
- 2002-12-11 AU AU2002360575A patent/AU2002360575A1/en not_active Abandoned
- 2002-12-11 JP JP2003558796A patent/JP2005514712A/ja active Pending
- 2002-12-11 WO PCT/US2002/039776 patent/WO2003058558A1/en active Application Filing
- 2002-12-11 KR KR1020047010416A patent/KR100615784B1/ko not_active IP Right Cessation
- 2002-12-11 AT AT02795841T patent/ATE422085T1/de not_active IP Right Cessation
- 2002-12-11 EP EP02795841A patent/EP1461777B1/en not_active Expired - Lifetime
- 2002-12-11 CN CNB028265890A patent/CN1291355C/zh not_active Expired - Fee Related
- 2002-12-11 DE DE60231059T patent/DE60231059D1/de not_active Expired - Lifetime
- 2002-12-25 TW TW091137304A patent/TWI281637B/zh not_active IP Right Cessation
-
2004
- 2004-08-13 US US10/844,094 patent/US6954208B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
TWI281637B (en) | 2007-05-21 |
CN1610927A (zh) | 2005-04-27 |
DE60231059D1 (de) | 2009-03-19 |
KR20040072695A (ko) | 2004-08-18 |
TW200303493A (en) | 2003-09-01 |
EP1461777A1 (en) | 2004-09-29 |
JP2005514712A (ja) | 2005-05-19 |
US6747657B2 (en) | 2004-06-08 |
CN1291355C (zh) | 2006-12-20 |
US20040257373A1 (en) | 2004-12-23 |
WO2003058558A1 (en) | 2003-07-17 |
AU2002360575A1 (en) | 2003-07-24 |
EP1461777B1 (en) | 2009-01-28 |
US6954208B2 (en) | 2005-10-11 |
US20030122835A1 (en) | 2003-07-03 |
ATE422085T1 (de) | 2009-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100615784B1 (ko) | 에빅션 억제 방법, 프리미티브를 포함하는 장면을 렌더링하는 장치 및 머신 판독가능 매체 | |
KR100575143B1 (ko) | 지리적 프리미티브를 포함하는 장면을 묘사하는 장치,메모리 자동 관리 방법 및 머신 판독가능 매체 | |
KR100635437B1 (ko) | 프리미티브를 렌더링하기 위한 상태 변수를 관리하는 방법, 프리미티브를 포함하는 장면을 렌더링하는 장치 및 머신 판독가능 매체 | |
US6693637B2 (en) | Method and apparatus for determining bins to be updated for polygons, including lines | |
US7791601B2 (en) | Efficient object storage for zone rendering | |
US6762765B2 (en) | Bandwidth reduction for zone rendering via split vertex buffers | |
US20030122820A1 (en) | Object culling in zone rendering | |
US20030122850A1 (en) | Method and apparatus for determining bins to be updated for polygons, including triangles | |
US6882349B2 (en) | Efficient image allocation for zone rendering | |
US7385609B1 (en) | Apparatus, system, and method for increased processing flexibility of a graphic pipeline | |
US20030123089A1 (en) | Graphics state bandwidth reduction for zone rendering | |
US20200273142A1 (en) | Bin resolve with concurrent rendering of a next bin |
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: 20121102 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20130801 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20150730 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20160727 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20170804 Year of fee payment: 12 |
|
LAPS | Lapse due to unpaid annual fee |