KR20040072696A - 지리적 프리미티브를 포함하는 장면을 묘사하는 장치,메모리 자동 관리 방법 및 머신 판독가능 매체 - Google Patents

지리적 프리미티브를 포함하는 장면을 묘사하는 장치,메모리 자동 관리 방법 및 머신 판독가능 매체 Download PDF

Info

Publication number
KR20040072696A
KR20040072696A KR10-2004-7010420A KR20047010420A KR20040072696A KR 20040072696 A KR20040072696 A KR 20040072696A KR 20047010420 A KR20047010420 A KR 20047010420A KR 20040072696 A KR20040072696 A KR 20040072696A
Authority
KR
South Korea
Prior art keywords
scene
memory
binning
instructions
empty
Prior art date
Application number
KR10-2004-7010420A
Other languages
English (en)
Other versions
KR100575143B1 (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 KR20040072696A publication Critical patent/KR20040072696A/ko
Application granted granted Critical
Publication of KR100575143B1 publication Critical patent/KR100575143B1/ko

Links

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Electrotherapy Devices (AREA)
  • Image Input (AREA)
  • Control Of Motors That Do Not Use Commutators (AREA)
  • Liquid Developers In Electrophotography (AREA)
  • Traffic Control Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 빈잉 및 묘사 단계들 사이의 빈 메모리의 자동 관리를 제공함으로써, 영역 묘사 동안 그래픽 성능을 최적화한다. 본 발명의 실시예는 비너(binner) 및 묘사기가 물리적 메모리 페이지의 풀을 자동으로 공유하여, 빈 버퍼를 형성하고, 그들이 묘사에 사용된 후 그들을 재순환시키는 메카니즘을 제공한다. 이것은 예외적인 조건하에서의 수행을 제외하고는 소프트웨어 중재에 대한 요건없이, 다수의 빈잉된 장면이 동시에 큐잉 업(queued up)될 수 있는 방식으로 수행된다. 따라서, 영역 묘사 빈 버퍼 메모리의 소프트웨어 관리에 대한 필요성이 제거된다. 또한, 소프트웨어 중재없이, 빈잉 및 묘사를 위한 다수의 장면이 큐잉될 수 있다.

Description

지리적 프리미티브를 포함하는 장면을 묘사하는 장치, 메모리 자동 관리 방법 및 머신 판독가능 매체{AUTOMATIC MEMORY MANAGEMENT FOR ZONE RENDERING}
일반적으로, 컴퓨터 그래픽 시스템은 2차원 비디오 디스플레이 스크린상에 객체(object)의 그래픽 표현을 디스플레이하는데 사용된다. 현재의 컴퓨터 그래픽 시스템은 매우 상세한 표현을 제공하며, 다양한 응용에서 사용된다. 전형적인 컴퓨터 그래픽 시스템에서, 디스플레이 스크린상에 표현될 객체는 그래픽 프리미티브(graphics primitives)로 분할된다. 프리미티브는 그래픽 디스플레이의 기본적인 성분이며, 점, 선, 벡터, 및 삼각형 및 사변형과 같은 다각형을 포함할 수 있다. 전형적으로, 디스플레이 스크린상에 표현되는 하나 이상의 객체의 뷰를 나타내는 그래픽 프리미티브를 묘사하거나 또는 그리기 위해, 하드웨어/소프트웨어 방안이 구현된다.
묘사될 3차원 객체의 프리미티브는 프리미티브 데이터의 관점에서 호스트 컴퓨터에 의해 정의된다. 예를 들어, 프리미티브가 삼각형일 때, 호스트 컴퓨터는, 각각의 정점(vertex)의 적, 녹 및 청(R, G, B) 컬러값 뿐만 아니라, 정점들의 X, Y, Z 좌표의 관점에서 프리미티브를 정의할 수 있다. 추가적인 프리미티브 데이터가 특정 응용에서 사용될 수 있다.
이미지 묘사는 하이 레벨 객체 기반 서술(high-level object-based description)을 몇몇 디스플레이 장치상에 디스플레이하기 위한 그래픽 이미지로 변환하는 것이다. 예를 들어, 이미지 묘사의 동작은 3차원 객체 또는 장면(scene)의 수학적 모델을 비트맵 이미지로 변환하는 동안 발생된다. 이미지 묘사의 다른 예는 HTML 문서를 컴퓨터 모니터상에 디스플레이하기 위한 이미지로 변환하는 것이다. 전형적으로, 그래픽 묘사 엔진이라고 지칭되는 하드웨어 장치는 이들 그래픽 처리 태스크를 수행한다. 전형적으로, 그래픽 묘사 엔진은 장면을, 차후에 그래픽 출력 장치로 출력되는 버퍼로 묘사하지만, 몇몇 묘사 엔진은 그들의 2차원 출력을 직접 출력 장치에 기록할 수 있다. 그래픽 묘사 엔진은 프리미티브 데이터를 보간하여, 각각의 프리미티브를 표현하는 디스플레이 스크린 픽셀, 및 각 픽셀의 R, G, B 컬러값을 계산한다.
본 명세서 이용된 바와 같은 그래픽 묘사 시스템(또는 서브시스템)은 응용 프로그램과 그래픽 출력 장치 사이의 모든 처리 레벨을 참조한다. 그래픽 엔진은 영역(zonr) 묘사를 포함하는 하나 이상의 묘사 모드를 제공할 수 있다. 영역 묘사는 최적의 묘사 캐쉬 활용도(optimal render cache utilization)를 얻음으로써 전체 3D 묘사 성능을 향상시켜, 픽셀 컬러 및 심도(depth) 메모리 판독/기록 병목현상을 감소시키고자 시도한다. 영역 묘사에서, 스크린은 영역들의 어레이로 세분되고, 각각의 서브 이미지를 묘사하는데 필요한 프리미티브 및 상태 설정 인스트럭션 모두를 유지하는데 사용된 퍼 존 인스트럭션 빈(per-zone instruction bins)이 생성된다. 프리미티브가 영역을 횡단(또는 가능하게 횡단)할 때마다, 해당 프리미티브 인스트럭션이 해당 영역에 대한 빈에 위치된다. 몇몇 프리미티브는 하나보다 많은 영역을 횡단할 것이며, 그러한 경우, 프리미티브 인스트럭션은 대응하는 빈에서 복제된다. 이러한 처리는 전체 장면이 빈내에 정렬될 때까지 계속된다. 프리미티브에 의해 횡단된 각 영역에 대한 빈을 형성하는 제 1 패스(pass) 이후에, 제 2 영역 단위(zone-by-zone) 묘사 패스가 수행된다. 특히, 모든 영역들에 대한 빈이 묘사되어, 최종 이미지를 생성한다.
종래의 영역 묘사 시스템은, 제한적인 것은 아니지만, 빈 메모리 기능, 빈잉 및 묘사를 위한 다수 장면의 큐잉을 포함하는 다양한 기능에 대해 과도한 소프트웨어 중재 및/또는 관리를 필요로 한다는 점에서 효율적이지 못하다.
따라서, 빈잉 및 묘사 단계들 사이의 빈 메모리의 자동 관리를 위한 방법, 장치 및 시스템이 필요하다.
전반적으로, 본 발명은 그래픽 시스템에 관한 것으로서, 특히, 그래픽 묘사 시스템(graphics rendering systems)에 관한 것이다.
도 1은 영역 묘사를 위한 자동 메모리 관리를 위한 그래픽 장치의 실시예를 포함하는 컴퓨터 시스템의 실시예에 대한 블록도를 도시한다.
도 2는 그래픽 빈잉 엔진, 그래픽 묘사 엔진, 빈, 빈 메모리 풀, 빈 포인터리스트 및 장면 카운터를 포함하는 그래픽 장치의 실시예에 대한 블록도를 도시한다.
도 3은 영역 및 기하학적 프리미티브를 포함하는 영역 묘사기 스크린 뷰의 실시예를 도시한다.
도 4는 빈 메모리 풀 메모리 영역과, 그래픽 빈잉 엔진, 그래픽 묘사 엔진, 빈 메모리 풀 링 버퍼 레지스터, 제어 레지스터 및 펜딩 장면 카운터를 포함하는 그래픽 장치의 실시예에 대한 상세 블록도를 도시한다.
도 5는 빈 포인터 리스트 및 관련된 빈의 실시예에 대한 상세 블록도를 도시한다.
도 6은 빈 메모리 풀 링 버퍼 메모리 영역 및 관련된 빈 메모리 풀 링 버퍼 레지스터의 실시예에 대한 블록도를 도시한다.
도 7은 자동 메모리 관리를 위한 프로세스의 실시예에 대한 흐름도를 도시한다.
본 발명은 빈잉 및 묘사 단계들 사이의 빈 메모리의 자동 관리를 제공함으로써, 영역 묘사와 같은 타일 기반 묘사(tile based rendering) 동안 그래픽 성능을 최적화한다. 본 발명의 실시예는 비너(binner) 및 묘사기가 물리적 메모리 페이지의 풀을 자동으로 공유하여, 빈 버퍼를 형성하고, 그들이 묘사에 사용된 후 그들을 재순환시키는 메카니즘을 제공한다. 이것은 예외적인 조건하에서 수행되는 것을 제외하고는 소프트웨어 중재에 대한 요건없이, 다수의 빈잉된 장면이 동시에 큐잉 업(queued up)될 수 있는 방식으로 수행된다. 따라서, 영역 묘사 빈 버퍼 메모리의 소프트웨어 관리에 대한 필요성이 실질적으로 최소화된다. 이들 특성은 시스템 성능을 향상시킨다.
상세한 설명에서, 본 발명에 대한 완전한 이해를 제공하기 위해, 다양한 특정적인 세부 내용이 개시된다. 그러나, 당업자라면 본 발명이 이들 특정적인 세부 내용없이도 실시될 수 있음을 이해할 것이다. 다른 경우, 본 발명을 불명료하게 하지 않도록, 잘 알려진 방법, 절차, 구성 요소 및 회로가 상세히 기술된다.
이하 기술될 상세한 설명의 몇몇 부분은 컴퓨터내의 데이터 비트 또는 이진 신호상의 동작의 알고리즘 및 심볼 표현의 관점에서 제공된다. 이들 알고리즘 서술 및 표현은, 데이터 처리 분야의 당업자가 그들 작업의 내용을 다른 당업자에게 전달하기 위해, 당업자에 의해 이용된 수단이다. 일반적으로, 본 명세서에서의 알고리즘은 원하는 결과로 인도하는 단계들의 자체 조화된 시퀀스인 것으로 고려된다. 단계들은 물리적 양들의 물리적 조작을 포함한다. 통상적으로, 필요한 것은 아니지만, 이들 양은 저장되고, 전송되고, 조합되고, 비교되고, 그렇지 않은 경우 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 때때로, 대개 일반적인 용도의 이유로 이들 신호를 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로서 지칭하는 것이 편리하다는 것이 입증되었다. 그러나, 이들 및 유사한 용어 모두는 적절한 물리적 양과 관련되며, 이들 양에 적용된 단지 편리한 라벨임을 이해해야 한다. 이하의 설명으로부터 명백하게 구체적으로 언급되지 않는 한, 명세서전체를 통해, "처리" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 등과 같은 용어를 이용한 설명은, 컴퓨팅 시스템의 레지스터 및/또는 메모리내에서 물리적 (전자) 양으로서 표현된 데이터를 조작하여 컴퓨팅 시스템의 메모리, 레지스터 또는 다른 그러한 정보 저장 장치, 송신 혹은 디스플레이 장치내에서 물리적 양으로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 혹은 컴퓨팅 시스템, 또는 유사한 전자 컴퓨팅 장치의 동작 및 처리를 의미함을 이해할 것이다.
본 발명의 실시예는 하드웨어나 소프트웨어, 또는 그 두가지의 조합으로 구현될 수 있다. 그러나, 본 발명의 실시예는 적어도 하나의 프로세서, 데이터 저장 시스템(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함하는 프로그램가능 시스템상에서 실행되는 컴퓨터 프로그램으로서 구현될 수 있다. 프로그램 코드가 입력 데이터에 적용되어, 본 명세서에서 기술된 기능을 수행하여, 출력 정보를 생성할 수 있다. 출력 정보는, 알려진 방식으로, 하나 이상의 출력 장치에 적용될 수 있다. 이러한 응용을 위해, 처리 시스템은 예를 들면, 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)는 소프트웨어 및/또는 데이터를 포함한다. 선택사양적 캐쉬 메모리(110)는 그의 액세스 로컬리티(locality)의 이점을 취함으로써, 그래픽 장치(106)에 의한 메모리 액세스를 가속화(speed up)하는데 사용될 수 있다.
몇몇 실시예에서, 그래픽 장치(106)는이미지를 묘사하는데 요구되는 메모리 인텐시브 태스크(memory-intensive tasks)의 다수를 프로세서(102)로부터 오프로딩(offloading)할 수 있다. 그래픽 장치(106)는 데이터 신호를 처리하며, CISC 마이크로프로세서, RISC 마이크로프로세서, VLIW 마이크로프로세서, 인스트럭션 세트들의 조합을 구현하는 프로세스, 또는 예를 들면 디지털 신호 프로세서와 같은 다른 프로세서 장치일 수 있다. 그래픽 장치(106)는 묘사 캐쉬(110) 및 디스플레이 장치(114)를 포함하는 시스템(100)내의 다른 구성 요소와 그래픽 장치(106) 사이에 데이터 신호를 송신하는 공통 버스(112)에 접속될 수 있다. 그래픽 장치(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)을 횡단할 때, 대응하는 프리미티브 인스트럭션이, 횡단된 영역(164)과 관련된 빈(128)내에 위치된다. 따라서, 퍼 존(per-zone) 인스트럭션 빈(128)을 이용하여, 각 서브 이미지를 묘사하는데 요구되고 각 프리미티브(162)의 스크린 공간 범위를 영역(164)의 어레이에 비교함으로써 생성된 프리미티브 인스트럭션 및 상태 설정 인스트럭션을 유지한다. 따라서, 프리미티브(162)가 수신됨에 따라, 본 발명은 각 프리미티브(162)가 횡단하는 영역(들)(164)이 어느 것인지를 결정하고, 프리미티브 인스트럭션을 이들영역(164) 각각과 관련된 빈(128)으로 복제한다. 프리미티브( 및 그들의 속성)(142)을 영역(164)으로 할당하는 프로세스를 빈잉이라고 지칭한다. "빈"(128)은 각 영역에 대해 사용된 추상적 버퍼를 지칭한다(전형적으로, 빈(128)은 일련의 인스트럭션 배치 버퍼(134)로서 실현될 것이다). 빈잉은 필요한 계산을 수행하여, 어떤 프리미티브(162)가 어떤 영역(164)에 놓이는지를 결정하며, 전용 하드웨어 및/또는 소프트웨어 구현에 의해 수행될 수 있다. 한 가지 전형적인 구현에서, 드라이버(122)는 프리미티브(162)에 의해 횡단된 각 영역(164)에 대한 그래픽 빈잉 엔진(126)에 의해 파싱될 코맨드의 세트를 기록하고, 코맨드는 횡단된 영역(164)과 관련된 버퍼(134)내로 기록된다.
몇몇 프리미티브(162)는 하나보다 많은 영역(164)을 횡단할 것이며, 그러한 경우 횡단된 영역(164)에 대응하는 빈(128)에 프리미티브 인스트럭션이 복제된다. 예를 들어, 도 3에 도시된 라이트닝 볼트(lightening bolt)는 9개의 영역(164)을 횡단한다. 이러한 프로세스는 전체 장면이 빈(128)내에 정렬될 때까지 계속된다.
일단 모든 프리미티브(162)가 저장되고, 코맨드 구조가 완료되면, 제 2 패스가 만들어져, 한번에 하나의 영역(164)에 장면을 묘사한다. 프리미티브(162)에 의해 횡단된 각 영역(164)에 대한 빈을 형성하는 제 1 패스 이후에, 제 2 영역 단위 묘사 패스가 수행된다. 특히, 모든 영역(164)에 대한 빈(128)이 묘사되어, 최종 이미지를 생성하며, 한번에 하나의 영역(164)에 각 장면이 묘사된다. 영역이 묘사되는 순서는 중요하지 않다. 특정 영역(164)내의 픽셀을 터치하는 프리미티브(162)와 관련된 모든 빈(128)은 다음 영역(164)이 묘사되기 전에 묘사된다. 단일의 프리미티브(162)가 많은 영역(164)을 횡단할 수 있으므로, 다수의 복제가 요구된다. 결과적으로, 다수의 영역(164)을 횡단하는 프리미티브(162)는 다수회 묘사된다(즉, 횡단된 각 영역(164)에 대해 1회).
프리미티브(162)가 묘사 캐쉬(110)에 대해 정렬되는 영역(164)으로 분해되는 것의 결과로서 묘사 성능이 향상된다. 그래픽 장치(106)는 한번에 스크린의 작은 부분상에서만 동작하기 때문에(즉, 영역(164)), 묘사 캐쉬(110)내의 전체 영역(164)에 대한 프레임 버퍼 내용을 유지할 수 있다. 전형적으로, 영역(164)의 치수는 묘사 캐쉬(110)의 크기 및 구성에 대하여 일정하게 튜닝된다. 묘사 캐쉬(110)가 최적의 이점을 제공하는 것은 이러한 메카니즘에 의한 것이다(캐쉬된 데이터의 재사용은 영역(164)의 공간 코히어런스를 활용함으로써 최대화된다). 영역 묘사 모드를 이용함으로써, 한번에 한 영역(164)의 최종 이미지를 생성하기 위해 단지 최소 수의 컬러 메모리 기록이 수행될 필요가 있으며, 컬러 메모리 판독 및 심도 메모리 판독 및 기록은 최소화되거나 또는 완전히 회피될 수 있다. 따라서, 묘사 캐쉬(110)를 사용함으로써, 메모리 트래픽이 크게 감소되고, 다음 프리미티브를 계속하기 전에 각 프리미티브를 완전히 그리는 종래의 묘사기에 비하여 성능이 향상된다.
도 2를 참조하면, 전형적인 구현에서, 장면 입력 리스트(124)라고 지칭되는 그래픽 프리미티브 및 상태 설정 인스트럭션 스트림이, 그래픽 빈잉 엔진(126)과 관련된 그래픽 빈잉 엔진 링 버퍼(graphics-binning engine ring buffer)(125)에 처음에 적용된다. 장면 입력 리스트(124)는 (응용 프로그래밍 인터페이스에 의해수신된 것으로서) 단일의, 시간적으로 순서화된 장면 서술일 수 있다. 전형적으로, 그래픽 빈잉 엔진(126)은 하드웨어 빈잉 엔진(hardware binning engine; HWB)(126)으로서 구현된다. 당업자라면 소프트웨어 또는 소프트웨어 + 하드웨어 비너(binner)가 마찬가지로 사용될 수 있음을 인식할 것이다. 그래픽 빈잉 엔진(126)은 장면 입력 리스트(124)를 파싱하여, 각 프리미티브(162)가 횡단하는 영역(들)(164)을 결정한다.
전술한 바와 같이, 영역(164)은 빈(128)과 관련된다. 그래픽 빈잉 엔진(126)은 각 프리미티브(162)의 스크린 공간 범위를 영역(164)의 어레이와 비교하고, 관련된 프리미티브 코맨드를 대응하는 빈(128)으로 복제한다. 도 5에 도시되고, 이하에 상세히 기술된 바와 같이, 빈(128)은 전형적으로 비인접 물리적 메모리 페이지에 저장된 체인으로 된 일련의 코맨드 버퍼(134)로 이루어진다. 빈 리스트는 각 빈(132)을 포함하는 버퍼(134)의 리스트이다. 페이지는 처음에 BMP(140)에 할당된다. 빈 포인터 리스트(130)는 페이지의 페이지 번호로 초기화되고, 기록 포인터를 빈 리스트(132)에 저장한다.
또한, 그래픽 빈잉 엔진(126)은 장면 입력 리스트(124)와 함께 포함된 관련 상태 설정 인스트럭션을 파싱함으로써 현재 그래픽 상태를 유지한다. 프리미티브 코맨드를 소정의 빈(128)에 위치시키기 전에, 그래픽 빈잉 엔진(126)은 빈(128)내의 프리미티브 코맨드 이전에 임의의 요구된 상태 설정 인스트럭션을 위치시킨다.
장면 입력 리스트(124)가 완전히 파싱된 후, 관련된 빈(즉, 빈 0, 빈 1, ... 빈 n-1)의 집합은 장면을 묘사하기 위해 그래픽 묘사 엔진(136)에 의해 사용될 준비가 된다. 이하에 상세히 기술된 바와 같이, 장면 입력 리스트(124)의 끝에 인스트럭션이 포함되어, 그래픽 빈잉 엔진(126)으로 하여금 펜딩(pending) 장면 카운터(148)내의 레지스터를 1만큼 증가시키고, 빈잉된 장면의 묘사를 시작하도록 한다. 예를 들어, 그래픽 빈잉 엔진(126)은 묘사 인스트럭션을, 경로(156)를 통해, 그래픽 묘사 엔진(136)과 관련된 그래픽 묘사 엔진 링 버퍼(157)에 전송한다.
도 4는 빈 메모리 풀 메모리 영역(180)과, 그래픽 빈잉 엔진(126), 그래픽 묘사 엔진(136), BMP 링 버퍼 레지스터(174), 제어 레지스터(182) 및 펜딩 장면 카운터(148)를 포함하는 그래픽 장치의 실시예에 대한 상세 블록도를 도시한다. BMP 링 버퍼 메모리 영역(180)은 비너(125)에 의한 사용을 위해 이용가능한 프리 물리적 페이지에 대한 포인터의 리스트를 유지한다. 각 빈(128)에 대한 초기 버퍼가 설정된 후, 장면 생성 인스트럭션 스트림이 생성된다.
도 5를 참조하면, 현재 빈 포인터(132)을 포함하는 빈 포인터 리스트(BPL)(130) 및 빈(128)의 실시예(170)가 도시된다. 메모리에 유지된 빈 포인터 리스트(130)는 초기 및, 차후의, 현재 포인터(132)를 각 빈(128)에 대한 빈 포인터 리스트(130)에 저장하는데 사용된다. BMP 링 버퍼 메모리 영역(180)은 비너(125)에 의한 사용을 위해 이용가능한 프리 물리적 페이지에 대한 포인터의 리스트를 유지한다. 특히, 빈 포인터 리스트(130)는 빈 포인터(132)의 물리적으로 인접하고 있는, 크기 정렬된 어레이이며, 빈 포인터 리스트(130)의 크기는 그래픽 장치(106)에 의해 지원된 빈(128)의 최대 갯수와 동일하거나 대략 동일하다. 각 빈 포인터(142)는 빈 상태 값과 더불어, 빈(128)에 대한 현재 빈 기록 포인터(예를 들면, 물리적 워드 어드레스)를 포함한다. 전형적인 실시예에서, 빈 포인터(132)는 타일 형식(tiled fashion)으로 저장되며, 모든 8 디워드(Dwords)(256 비트 캐쉬 라인)는 빈(128)의 1워드 x 4높이의 직사각형 그룹에 대해 빈 포인터(142)의 재배열된 리스트를 포함한다.
도 6을 참조하면, BMP 링 버퍼 메모리 영역(180)의 실시예가 도시된다. BMP(140)와 관련된 BMP 링 버퍼 메모리 영역(180)은 그래픽 빈잉 엔진(126)에 의한 사용을 위해 이용가능한 프리 물리적 페이지에 대한 포인터의 리스트를 유지한다. 링 버퍼 메모리 영역(18)은 시스템 메모리(108) 또는 전용 메모리에 위치될 수 있다. 이용가능한 프리 페이지(146)의 페이지 번호가 생성되어, BMP 링 버퍼(144)에 위치된다. BMP 링 버퍼 메모리 영역(180)과 관련된 BMP 링 버퍼 레지스터(150)는 레지스터내에 다수의 필드를 가질 수 있다. BMP 링 버퍼 레지스터(174)의 실시예내에 포함된 필드는, 제한적인 것은 아니지만, 시작 어드레스 필드(S)(166), 버퍼 길이 필드(L)(168), 겟 오프셋(get offset) 필드(G)(170), 풋 오프셋(put offset) 필드(P)(172) 및 다른 필드를 포함한다. BMP 링 버퍼 레지스터(174)는 BMP 링 버퍼 메모리 영역(180)의 시작(166) 및 길이(168)를 정의하며, 2개의 "오프셋", 즉 겟(get)(170) 및 풋(put)(172)을 BMP 링 버퍼 메모리 영역(180)에 포함한다. BMP(140) 자체는 시작 물리적 페이지 번호 및 페이지내의 크기(전형적으로 4KB)에 의해 정의된 물리적으로 인접한 메모리(전형적으로 4KB)의 정렬된 리스트에 저장된다.
그래픽 빈잉 엔진(126) 및 그래픽 묘사 엔진(136)을 포함하는 그래픽장치(106)는 겟 및 풋 오프셋 레지스터(170, 172)를 통해 BMP 링 버퍼 메모리 영역(180)을 액세스한다. BMP(140)는 처음에 초기화되고, BMP 시작(166) 및 BMP 크기(168)를 제공하는 BMP 레지스터를 기록함으로써 지정된다. 겟 오프셋(170) 및 풋 오프셋(172)은 임의의 비너 사용 이전에 전형적으로 0으로 초기화되어, 프리 페이지의 완전한 보수를 나타낸다.
도 4를 참조하면, 그래픽 장치(106)는 레지스터내에 다수의 필드를 포함하는 빈 제어 레지스터(182)를 또한 포함한다. 빈 제어 레지스터(182)의 실시예내에 포함된 필드는, 제한적인 것은 아니지만, 재시작 비트(184), 장면 비트의 동기 끝(186), 재개 비트(188) 및 다른 필드를 포함한다. 일단 BMP(140)가 성장되면, 재시작 비트(184)를 설정하기 위한 빈 제어 레지스터(182)의 직접 기록을 통해 장면의 빈잉이 재개된다.
빈잉된 장면이 묘사됨에 따라, 빈 메모리가 할당된 후, 다음 장면 빈잉시의 차후의 이용을 위해 재순환된다. 특히, 각 배치 버퍼(134)는, 물리적 어드레스 및 리클레임 비트를 지정하는 배치 버퍼 시작 인스트럭션(182)으로 시작된다. 그래픽 묘사 엔진(136)은, 각 배치 버퍼(134)를 묘사할 때, 배치 버퍼 시작 인스트럭션(182)을 디코딩 및 실행한다. 그래픽 묘사 엔진(136)은, 물리적 어드레스를 지정하고 "리클레임" 비트 세트를 갖는 배치 버퍼 시작 인스트럭션(182)으로 시작된 배치 버퍼(134) 처리의 끝에서, 프리 페이지(146)를 BMP(140)에 삽입할 것이다. 이러한 처리는 빈 버퍼 메모리(134)(즉, 페이지)가, 소프트웨어 중재없이, 자동으로 리클레임되도록 한다. 풋 오프셋(172)은 그래픽 묘사 엔진(136)에게, 다음 프리 업(freed-up) 버퍼(134)의 페이지 번호가 기록되는 풋 오프셋(172)을 알린다. 그래픽 묘사 엔진(136)은 풋 오프셋(172)을 이용하여, 빈 버퍼(134)의 페이지를, 그들의 실행이 완료됨에 따라 BMP(140)로 리턴한다.
그래픽 빈잉 엔진(126) 및 그래픽 묘사 엔진(136)은 빈잉되는 모든 장면을 모니터링 및 카운팅하는 펜딩 장면 카운터(148)와 통신한다. 펜딩 장면 카운터(148)는 0으로 초기화되며, 0이 아닌 경우, 적어도 하나의 빈잉된 장면의 현재 처리를 나타낸다. 펜딩 장면(들)이 없는 경우, 펜딩 장면 카운터(148)는 0이다. 펜딩 장면 카운터(148)는 장면이 빈잉될 때마다 증가된다. 그에 상응하여, 펜딩 장면 카운터(148)는 빈잉된 장면이 묘사될 때마다 감소된다. 특히, 각 빈(128)의 묘사를 위한 그래픽 상태를 초기화하기 위해, 펜딩 장면 카운터(148)를 1만큼 감소시킬 장면 묘사 리스트(124)의 끝에 특수 인스트럭션이 위치된다. 펜딩 장면 카운터(148)가 1로 감소될 때, 묘사를 위해 큐잉 업된 완료된 장면이 없다.
BMP 링 버퍼 메모리 영역(180)은 하나 이상의 포인터 리스트(130)를 유지할 수 있으며, 각 빈 포인터 리스트(130)는 초기 빈 버퍼를 위해 사용될 물리적 페이지 번호의 리스트이다(영역당 1 페이지 번호). 다수의 빈 리스트(전형적으로, 2중 버퍼에 대해 2개)는 다음 장면의 빈잉이 시작되도록 하며, 그래픽 빈잉 엔진(126)은 현재 장면을 활성적으로 빈잉한다. 현재 장면이 빈잉을 완료하기 전에, 다음 장면의 빈잉이 시작되도록 하기 위해, 하나보다 많은 빈 포인터 리스트(130)를 이용하여 멀티 버퍼링된 입력을 비너(128)에 제공한다. BMP 링 버퍼 메모리 영역(180)내의 디워드 엔트리는 물리적 페이지 번호와, 장치가 다수의 물리적 메모리 공간을 지원하는 경우, 관련된 메모리 공간 선택을 포함한다.
도 4 및 5를 참조하면, 새로운 빈 버퍼(134)를 생성하는 프로세스에서, 그래픽 빈잉 엔진(126)은 1이 이용가능하다는 가정을 하여 BMP(140)로부터 프리 페이지 번호(146)를 추출할 것이다. 특히, 장면의 빈잉 동안, 그래픽 빈잉 엔진(126)은 BMP 링 버퍼 메모리 영역(180)에 질의하여, 프리 페이지가 이용가능한지를 결정한다. 겟 오프셋(170)은 그래픽 빈잉 엔진(126)에게, 검색을 위해 다음 이용가능한 프리 페이지(146)의 페이지 번호의 오프셋을 알린다. 그래픽 빈잉 엔진(126)은 이 오프셋을 이용하여, 빈(128)을 형성하는데 요구되는 물리적 페이지(146)를 획득할 것이다. 그래픽 빈잉 엔진(126)이 프리 페이지 번호(146)를 추출하려고 시도하지만 BMP(140)가 비어 있음을 발견할 때, 그래픽 빈잉 엔진(126)은 펜딩 장면 카운터(148)에게 질의하여, 임의의 "펜딩" 빈잉된 장면이 있는지 여부를 결정한다. 만약, 펜딩 장면 카운터(148)가 0이 아니라면, 그래픽 빈잉 엔진(126)은, 프리 페이지(146)가 이용가능하거나 또는 펜딩 장면 카운터(148)가 0으로 될 때까지 아이들(idle)로 유지된다.
만약, 펜딩 장면 카운터(148)가 0이면, 펜딩 빈잉된 장면이 없는 것이며, 따라서 프리 업 페이지의 잠재적인 소스가 없다. 그 시점에서, 요구된 수의 추가적인 프리 페이지 번호(146)를 수용하는데 필요한 크기만큼 BMP(140)를 증가시킴으로써 BMP(140)가 성장된다. 전형적인 구현에서, BMP(140)는 4KB의 배수로 성장된다. 그 후, 추가적인 프리 페이지 번호가 보다 큰 BMP(140)로 삽입되고, BMP 링버퍼 레지스터(166, 168, 170, 172)가 그에 따라 조정된다. 프리 페이지(146)의 새로운 리스트가 BMP 링 버퍼 메모리 영역(180) 및 조정된 포인터의 최상부에 위치된다. 예를 들어, 두 포인터는, 그래픽 빈잉 엔진(126)이 단지 새로운 포인터 값을 이용하여 재개함에 따라 이동될 수 있다. 그 후, 그래픽 빈잉 엔진(126)은 BMP(140)로부터 프리 페이지 번호(146)를 추출하고, 빈잉 프로세스를 계속한다.
추가적인 프리 메모리가 만들어질 수 없다면, 그래픽 묘사 엔진(136)은 부분적으로 빈잉된 장면을 프리 업 빈 메모리에 묘사한 후, 장면의 나머지에 대한 빈잉을 재시작한다. 전형적인 실시예에서, 동기 끝 장면 비트(186)를 설정하기 위해 빈 제어 레지스터(182)의 직접 기록이 수행된다. 이것은 그래픽 빈잉 엔진(126)이 (a) 배치 버퍼를 끝내라는 인스트럭션으로 그들을 종료함으로써 모든 유효 빈(128)을 폐쇄하고, (b) 임의의 내부적으로 캐쉬된 데이터(예를 들면, 캐쉬된 빈 포인터(132))를 플러쉬 아웃(flush out)하고, (c) 빈(128)과 관련된 상태 트랙킹 정보를 수정하여, 빈잉의 재개시에, 모든 필요한 상태가, 그것이 수신하는 제 1 프리미티브(162) 이전에 빈(128)에 삽입되도록 한다. 부분적으로 빈잉된 장면을 묘사하는데 요구되는 임의의 다른 동작이 또한 취해진다. 이들 동작은, 제한적인 것은 아니지만, 펜딩 장면 카운터(148)가 증가되도록 하기 위한 빈 장면 레지스터(190)의 직접 기록, (장면 계속의 묘사는 심도 값이 메모리에 기록될 것을 요구할 것이므로) 영역 제어 레지스터의 심도 기록 인에이블 비트가 부분적인 장면을 묘사하기 이전에 클리어되도록 보장하는 동작을 포함한다.
장면의 빈잉은 재개 비트(188)를 설정하기 위한 빈 제어 레지스터(182)의 직접 기록을 통해 재개된다. 전술한 바와 같이, 동기 끝 장면 동작은 상태 그룹에 대한 변화를 트랙킹하는데 사용된 모든 빈 비트 벡터를 가질 것이므로, 각 빈(128)은 임의의 새로운 프리미티브 출력 이전에 현재 상태로 리프레쉬될 것이다.
그래픽 묘사 엔진(136)은, 물리적 어드레스를 지정하고 "리클레임" 비트가 설정되도록 하는 배치 버퍼 시작 인스트럭션(182)으로 시작된 배치 버퍼 처리의 끝에서, 프리 페이지 번호(146)를 BMP(140)에 삽입할 것이다. 이 처리는 빈 버퍼 메모리(즉, 페이지)가 소프트웨어 중재없이, 자동으로 리클레임되도록 한다. 빈잉된 장면이 묘사됨에 따라, 빈 메모리가 할당된 후, 다음 장면 빈잉시의 차후의 사용을 위해 재순환된다. 특히, 풋 오프셋(172)은 그래픽 묘사 엔진(136)에게, 다음 프리 업 버퍼의 페이지 번호가 기록되는 풋 오프셋(172)을 알린다. 그래픽 묘사 엔진(136)은 풋 오프셋(172)을 이용하여, 빈 버퍼(134)의 페이지를, 그들의 실행이 완료됨에 따라 BMP(140)로 리턴한다.
도 7은 버퍼 메모리의 자동 리크레임을 포함하는 자동 메모리 관리를 구현하기 위한 실시예(200)의 흐름도이다.
페이지는 처음에 BMP(140)로 할당된다(단계 202). 그 다음, BMP(140)는 초기화된다(단계 204). BMP(140)는 BMP 시작(166) 및 BMP 크기(168)를 제공하는 BMP 버퍼 레지스터를 기록함으로써 지정된다. BMP의 겟 오프셋(170) 및 풋 오프셋(172)은 임의의 비너 사용 이전에 0으로 초기화되어, 프리 페이지의 완전한 보수를 나타낸다.
그 다음, 빈 포인터 리스트(130)는 할당된 물리적 페이지 번호로초기화된다(단계 206). 장면의 빈잉 동안, 본 발명은 이용가능한 프리 페이지가 존재하는지를 결정한다(단계 208). 그래픽 빈잉 엔진(126)이 프리 페이지 번호(146)를 추출하려고 시도하지만 BMP(140)가 비어 있음을 발견할 때, 그래픽 빈잉 엔진(126)은 2가지 동작 중 하나를 수행한다. 만약, 임의의 "펜딩" 빈잉된 장면(즉, 펜딩 장면 카운터(148)가 0이 아님)이 있다면(단계 210), 그래픽 빈잉 엔진(126)은 프리 페이지(146)가 이용가능하거나 또는 펜딩 장면 카운터(148)가 0으로 될 때까지 기다릴 것이다.
그래픽 빈잉 엔진(126)이 메모리 외 조건(out of memory condition)을 조우하는 경우, 펜딩 빈잉된 장면은 없으며(따라서, 프리 업 페이지의 잠재적인 소스가 없음), 메모리 외 차단이 생성된다. 그 시점에서, 소프트웨어는 BMP(140)를 "성장"시킴으로써, 보다 많은 프리 페이지를 제공하는 옵션을 갖는다(단계 218). 처음에 BMP(140)를 요구된 수의 추가적인 프리 페이지 번호(146)를 수용하는데 필요한 크기만큼 증가시킴으로써, BMP(140)가 성장된다. 그 다음, 추가적인 프리 페이지 번호는 보다 큰 BMP(140)로 삽입되고, 겟 및 풋 오프셋 레지스터(166, 168, 170, 172)가 그에 따라 조정된다. 만약, 프리 페이지(146)가 이용가능하게 된다면(단계 212), 그래픽 빈잉 엔진(126)은 BMP(140)로부터 해당 페이지 번호(146)를 추출하고, 빈잉 프로세스를 계속할 것이다.
기다리는 동안 펜딩 장면 카운터(148)가 0(단계 210)이거나, 또는 0이 된다면(단계 212), 그래픽 빈잉 엔진(126)은 프로세서 차단을 생성할 수 있는 메모리 외 예외를 발생시킬 것이다(단계 214).
이 시점에서, 소프트웨어가 추가적인 프리 메모리(단계 216)를 이용가능하게 할 수 있다면, BMP(140)가 성장되고, 재시작 비트(184)를 설정하기 위한 비트 제어 레지스터(182)의 직접 기록을 통해 추가적인 프리 페이지(146)가 삽입되고, 장면의 빈잉이 재개된다.
추가적인 프리 메모리(단계 216)가, BMP(140)가 이용가능한 "비어 있는(empty)" 상태에 있다고 고려되도록 할 수 없다면, 빈 메모리를 프리 업하기 위해 부분적으로 빈잉된 장면의 묘사가 수행되며, 그 후 나머지 장면의 빈잉이 재시작된다(단계 220).
그 후, 그래픽 빈잉 엔진(126)은 (a) 배치 버퍼를 끝내라는 인스트럭션으로 그들을 종료함으로써 모든 유효 빈을 폐쇄하고, (b) 임의의 내부적으로 캐쉬된 데이터(예를 들면, 캐쉬된 빈 포인터(132))를 플러쉬 아웃하고, (c) 빈(128)과 관련된 상태 트랙킹 정보를 수정하여, 빈잉의 재개시에, 모든 필요한 상태가, 그것이 수신하는 제 1 프리미티브(162) 이전에 빈(128)에 삽입되도록 할 것이다. 부분적으로 빈잉된 장면을 묘사하는데 요구되는 임의의 다른 동작이 또한 취해진다. 장면의 빈잉은 재개 비트를 설정하기 위한 빈 제어 레지스터의 직접 기록을 통해 재개된다. 전술한 바와 같이, 동기 끝 장면 동작은 상태 그룹에 대한 변화를 트랙킹하는데 사용된 모든 빈 비트 벡터를 가질 것이므로, 각 빈(128)은 임의의 새로운 프리미티브 출력 이전에 현재 상태로 리프레쉬될 것이다.
따라서, 본 발명에 따르면, 비너 및 묘사기는 물리적 메모리 페이지의 풀을 자동으로 공유하여, 빈잉 단계 동안 빈 버퍼를 형성하고, 그들이 묘사 단계 동안사용된 후 그들을 재순환시킨다. 이것은 다수의 빈잉된 장면이, 최소의 소프트웨어 중재로, 동시에 큐잉 업될 수 있는 형태로 수행된다.
특허법의 요건에 따라 본 발명을 기술하였으며, 당업자라면 특정 요건 또는 조건을 만족시키기 위해 본 발명을 어떻게 변화 및 수정하는지에 대해 이해할 것이다. 그러한 변화 및 수정은 이하의 특허 청구 범위에 개시된 본 발명의 영역 및 정신을 벗어나지 않고서도 수행될 수 있다.

Claims (49)

  1. 지리적 프리미티브(geographical primitives)를 포함하는 장면을 묘사하는 장치에 있어서,
    빈잉 엔진(binning engine)과,
    묘사 엔진과,
    상기 빈잉 엔진과 상기 묘사 엔진 사이의 메모리 페이지를 관리하는 자동 메모리 관리자―상기 자동 메모리 관리자는,
    메모리 페이지를 저장하는 메모리 영역과,
    제 1 레지스터 및 제 2 레지스터를 포함하는 복수의 메모리 영역 레지스터를 포함하고, 상기 제 1 레지스터는 리클레임 코맨드(reclaim command)를 포함하는 버퍼 인스트럭션으로 시작된 버퍼를 형성하기 위해 상기 빈잉 엔진이 메모리 페이지를 검색할 수 있는 상기 메모리 영역내의 메모리 위치를 지시하는 정보를 포함하고, 상기 제 2 레지스터는 상기 묘사된 버퍼와 관련된 상기 리클레임 코맨드에 응답하여 상기 묘사 엔진이 메모리 페이지를 자동으로 리턴할 수 있는 상기 메모리 영역내의 메모리 위치를 지시하는 정보를 포함함―를 포함하는
    지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  2. 제 1 항에 있어서,
    상기 빈잉 엔진은 상기 메모리 페이지를 이용하여, 영역과 관련된 버퍼를 구성하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  3. 제 2 항에 있어서,
    상기 빈잉 엔진은 기하학적 객체가 횡단하는 영역을 결정하고, 관련된 객체 인스트럭션을 상기 횡단된 영역과 관련된 상기 버퍼로 복제하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  4. 제 1 항에 있어서,
    상기 빈잉 엔진은, 상기 제 1 레지스터에 응답하여, 이용가능한 메모리 페이지를 추출함으로써, 영역과 관련된 빈을 구성하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  5. 제 1 항에 있어서,
    상기 빈잉 엔진은 그래픽 빈잉 엔진인 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  6. 제 1 항에 있어서,
    상기 버퍼 인스트럭션은 어드레스 및 리클레임 비트를 포함하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  7. 제 1 항에 있어서,
    상기 묘사 엔진은, 각 버퍼를 묘사할 때, 상기 버퍼 인스트럭션을 디코딩 및 실행하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  8. 제 1 항에 있어서,
    상기 묘사 엔진은 버퍼 인스트럭션으로 시작된 버퍼에 대한 처리의 끝에서 버퍼를 상기 메모리 영역으로 삽입함으로써, 버퍼가 자동으로 리클레임되도록 하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  9. 제 1 항에 있어서,
    상기 제 2 레지스터는 상기 묘사 엔진에게, 다음 이용가능 버퍼의 페이스 번호가 기록되는 오프셋을 알리는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  10. 제 9 항에 있어서,
    상기 묘사 엔진은 상기 오프셋을 이용하여, 상기 버퍼의 페이지를, 그들의 실행이 완료됨에 따라, 상기 메모리 풀로 리턴하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  11. 제 1 항에 있어서,
    상기 메모리 영역은 복수의 빈 리스트를 유지하고, 각 빈 리스트는 초기 빈 버퍼에 대해 사용될 물리적 페이지 번호의 리스트인 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  12. 제 11 항에 있어서,
    상기 빈잉 엔진은 상기 복수의 빈 리스트를 이용하여, 다수의 장면을 큐잉하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  13. 제 12 항에 있어서,
    상기 빈잉 엔진은 상기 복수의 빈 리스트를 이용하여, 제 1 장면의 빈잉 동안, 제 2 장면의 빈잉을 시작하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  14. 제 1 항에 있어서,
    상기 빈잉 엔진 및 상기 묘사 엔진과 통신하여, 빈잉된 장면을 카운팅하는 장면 카운터를 더 포함하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  15. 제 14 항에 있어서,
    상기 장면 카운터는 장면이 빈잉될 때마다 증가되는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  16. 제 14 항에 있어서,
    상기 장면 카운터는 빈잉된 장면이 묘사될 때마다 감소되는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  17. 제 17 항에 있어서,
    상기 장면 카운터는 장면이 묘사된 후 실행된 인스트럭션에 응답하여 감소되는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  18. 제 14 항에 있어서,
    상기 메모리 영역은, 상기 장면 카운터가 펜딩 빈잉된 장면이 없고, 이용가능한 메모리 페이지가 상기 메모리 영역에 할당될 수 있음을 나타낼 때, 추가적인 메모리 페이지를 저장하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  19. 제 14 항에 있어서,
    상기 묘사 엔진은 상기 장면 카운터가 펜딩 빈잉된 장면이 없고, 이용가능한 메모리 페이지가 상기 메모리 영역에 할당될 수 없음을 나타낼 때, 부분적으로 빈잉된 장면을 묘사하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  20. 제 19 항에 있어서,
    상기 묘사 엔진은, 상기 부분적으로 빈잉된 장면을 묘사한 후에, 상기 부분적으로 빈잉된 장면의 버퍼에 대한 처리의 끝에, 관련 버퍼를 상기 메모리 영역으로 리턴함으로써, 버퍼가 자동으로 리클레임되도록 하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  21. 제 20 항에 있어서,
    버퍼가 리클레임된 후 상기 부분적으로 빈잉된 장면의 빈잉을 재개하기 위한 재개 비트를 제공하는 제어 레지스터를 더 포함하는 지리적 프리미티브를 포함하는 장면을 묘사하는 장치.
  22. 장면의 빈잉 및 묘사를 위한 메모리의 자동 관리 방법에 있어서,
    메모리 페이지를 할당하는 단계와,
    타일 기반(tile based) 묘사 이미지를 빈잉 및 묘사하기 위해 액세스가능한 메모리 영역을 정의하는 단계와,
    상기 메모리 페이지를 상기 메모리 영역에 저장하는 단계와,
    상기 장면의 빈잉을 용이하게 하기 위해, 메모리 페이지를 검색하는 단계와,
    상기 장면을 묘사한 후, 상기 검색된 메모리 페이지를 상기 메모리 영역에 리턴함으로써, 메모리 페이지가 자동으로 리클레임되도록 하는
    메모리 자동 관리 방법.
  23. 제 22 항에 있어서,
    상기 빈잉 및 묘사하기 위해 액세스가능한 메모리 영역을 정의하는 단계는,
    다음 이용가능 메모리 페이지의 페이지 번호가 빈잉을 위해 사용될 제 1 오프셋을 정의하는 단계와,
    다음 프리 업 메모리 페이지의 페이지 번호가 기록될 제 2 오프셋을 정의하는 단계를 포함하는 메모리 자동 관리 방법.
  24. 제 23 항에 있어서,
    상기 장면의 빈잉을 용이하게 하기 위해, 메모리 페이지를 검색하는 단계는,
    상기 제 1 오프셋을 이용하여, 빈잉을 위해 요구되는 상기 메모리 페이지를 획득하는 단계를 더 포함하는 메모리 자동 관리 방법.
  25. 제 23 항에 있어서,
    상기 장면을 묘사한 후, 상기 검색된 메모리 페이지를 상기 메모리 영역에 리턴함으로써, 메모리 페이지가 자동으로 리클레임되도록 하는 단계는,
    상기 제 2 오프셋을 이용하여, 실행시에 메모리 페이지를 상기 메모리 영역으로 리턴하는 단계를 더 포함하는 메모리 자동 관리 방법.
  26. 제 22 항에 있어서,
    상기 메모리 페이지를 빈잉 및 묘사를 위해 액세스가능한 메모리 영역에 저장하는 단계는,
    물리적 페이지 번호 및 관련된 메모리 공간 선택에 의해 저장된 각 메모리 페이지를 식별하는 단계를 더 포함하는 메모리 자동 관리 방법.
  27. 제 22 항에 있어서,
    각 장면의 상기 빈잉 이후에, 펜딩 장면 카운터 값을 증가시키는 단계와,
    상기 빈잉된 장면의 묘사를 시작하는 단계를 더 포함하는 메모리 자동 관리 방법.
  28. 제 22 항에 있어서,
    상기 빈잉된 장면의 묘사를 시작하는 단계는,
    상기 장면과 관련된 묘사 리스트를 포맷팅하는 단계와,
    상기 장면 묘사 리스트를 처리한 후, 펜딩 장면 카운터를 감소시키는 단계를 더 포함하는 메모리 자동 관리 방법.
  29. 제 22 항에 있어서,
    상기 장면의 빈잉 동안, 이용가능한 프리 메모리 페이지가 있는지 여부를 결정하는 단계를 더 포함하는 메모리 자동 관리 방법.
  30. 제 29 항에 있어서,
    펜딩 장면 카운터가 0이 아닐 때, 프리 페이지를 기다리는 단계와,
    이용가능한 경우, 상기 메모리 영역으로부터 메모리 페이지를 추출하는 단계와,
    상기 장면의 빈잉을 재개하는 단계를 더 포함하는 메모리 자동 관리 방법.
  31. 제 29 항에 있어서,
    펜딩 장면 카운터가 0이고, 프리 메모리가 이용가능할 때, 상기 메모리 영역을 성장시키는 단계와,
    추가적인 프리 페이지를 상기 메모리 영역으로 삽입하는 단계와,
    상기 장면의 빈잉을 재개하는 단계를 더 포함하는 메모리 자동 관리 방법.
  32. 제 29 항에 있어서,
    펜딩 장면 카운터가 0이고, 프리 메모리가 이용가능하지 않을 때, 빈잉된 장면의 일부를 묘사하는 단계와,
    상기 장면의 상기 묘사되지 않은 부분의 나머지의 빈잉을 재개하는 단계를 포함하는 메모리 자동 관리 방법.
  33. 제 22 항에 있어서,
    상기 메모리 영역은 복수의 빈 리스트를 유지하고, 각 빈 리스트는 초기 빈 버퍼를 위해 사용될 메모리 페이지의 리스트인 메모리 자동 관리 방법.
  34. 제 33 항에 있어서,
    상기 복수의 빈 리스트를 이용하여, 다수의 장면을 큐잉하는 단계를 더 포함하는 메모리 자동 관리 방법.
  35. 제 34 항에 있어서,
    상기 복수의 빈 리스트를 이용하여, 제 1 장면을 빈잉하는 동안, 제 2 장면의 빈잉을 시작하는 단계를 더 포함하는 메모리 자동 관리 방법.
  36. 장면을 빈잉 및 묘사하기 위한 메모리를 자동으로 관리하기 위해 프로세서에 의해 실행가능한 복수의 머신 판독가능 인스트럭션이 저장된 머신 판독가능 매체에 있어서,
    메모리 페이지를 할당하는 인스트럭션과,
    타일 기반 묘사 이미지를 빈잉 및 묘사하기 위해 액세스가능한 메모리 영역을 정의하는 인스트럭션과,
    상기 메모리 페이지를 상기 메모리 영역에 저장하는 인스트럭션과,
    상기 장면의 빈잉을 용이하게 하기 위해, 메모리 페이지를 검색하는 인스트럭션과,
    상기 장면을 묘사한 후, 상기 검색된 메모리 페이지를 상기 메모리 영역에 리턴함으로써, 메모리 페이지가 자동으로 리클레임되도록 하는 인스트럭션을 포함하는
    머신 판독가능 매체.
  37. 제 36 항에 있어서,
    상기 빈잉 및 묘사하기 위해 액세스가능한 메모리 영역을 정의하는 인스트럭션은,
    다음 이용가능 메모리 페이지의 페이지 번호가 빈잉을 위해 사용될 제 1 오프셋을 정의하는 인스트럭션과,
    다음 프리 업 메모리 페이지의 페이지 번호가 기록될 제 2 오프셋을 정의하는 인스트럭션 포함하는 머신 판독가능 매체.
  38. 제 37 항에 있어서,
    상기 장면의 빈잉을 용이하게 하기 위해, 메모리 페이지를 검색하는 인스트럭션은,
    상기 제 1 오프셋을 이용하여, 빈잉을 위해 요구되는 상기 메모리 페이지를 획득하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  39. 제 37 항에 있어서,
    상기 장면을 묘사한 후, 상기 검색된 메모리 페이지를 상기 메모리 영역에 리턴함으로써, 메모리 페이지가 자동으로 리클레임되도록 하는 인스트럭션은,
    상기 제 2 오프셋을 이용하여, 실행시에 메모리 페이지를 상기 메모리 영역으로 리턴하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  40. 제 36 항에 있어서,
    상기 메모리 페이지를 빈잉 및 묘사를 위해 액세스가능한 메모리 영역에 저장하는 인스트럭션은,
    물리적 페이지 번호 및 관련된 메모리 공간 선택에 의해 저장된 각 메모리 페이지를 식별하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  41. 제 36 항에 있어서,
    각 장면의 상기 빈잉 이후에, 펜딩 장면 카운터 값을 증가시키는 인스트럭션과,
    상기 빈잉된 장면의 묘사를 시작하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  42. 제 36 항에 있어서,
    상기 빈잉된 장면의 묘사를 시작하는 인스트럭션은,
    상기 장면과 관련된 묘사 리스트를 포맷팅하는 인스트럭션과,
    상기 장면 묘사 리스트를 처리한 후, 펜딩 장면 카운터를 감소시키는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  43. 제 36 항에 있어서,
    상기 장면의 빈잉 동안, 이용가능한 프리 메모리 페이지가 있는지 여부를 결정하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  44. 제 43 항에 있어서,
    펜딩 장면 카운터가 0이 아닐 때, 프리 페이지를 기다리는 인스트럭션과,
    이용가능한 경우, 상기 메모리 영역으로부터 메모리 페이지를 추출하는 인스트럭션과,
    상기 장면의 빈잉을 재개하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  45. 제 43 항에 있어서,
    펜딩 장면 카운터가 0이고, 프리 메모리가 이용가능할 때, 상기 메모리 영역을 성장시키는 인스트럭션과,
    추가적인 프리 페이지를 상기 메모리 영역으로 삽입하는 인스트럭션과,
    상기 장면의 빈잉을 재개하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  46. 제 43 항에 있어서,
    펜딩 장면 카운터가 0이고, 프리 메모리가 이용가능하지 않을 때, 빈잉된 장면의 일부를 묘사하는 인스트럭션과,
    상기 장면의 상기 묘사되지 않은 부분의 나머지의 빈잉을 재개하는 인스트럭션을 포함하는
    머신 판독가능 매체.
  47. 제 36 항에 있어서,
    상기 메모리 영역은 복수의 빈 리스트를 유지하고, 각 빈 리스트는 상기 초기 빈 버퍼를 위해 사용될 메모리 페이지의 리스트인 머신 판독가능 매체.
  48. 제 47 항에 있어서,
    상기 복수의 빈 리스트를 이용하여, 다수의 장면을 큐잉하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
  49. 제 48 항에 있어서,
    상기 복수의 빈 리스트를 이용하여, 제 1 장면을 빈잉하는 동안, 제 2 장면의 빈잉을 시작하는 인스트럭션을 더 포함하는 머신 판독가능 매체.
KR1020047010420A 2001-12-31 2002-12-11 지리적 프리미티브를 포함하는 장면을 묘사하는 장치,메모리 자동 관리 방법 및 머신 판독가능 매체 KR100575143B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/038,921 2001-12-31
US10/038,921 US6747658B2 (en) 2001-12-31 2001-12-31 Automatic memory management for zone rendering
PCT/US2002/039791 WO2003058555A2 (en) 2001-12-31 2002-12-11 Automatic memory management for zone rendering

Publications (2)

Publication Number Publication Date
KR20040072696A true KR20040072696A (ko) 2004-08-18
KR100575143B1 KR100575143B1 (ko) 2006-05-03

Family

ID=21902658

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047010420A KR100575143B1 (ko) 2001-12-31 2002-12-11 지리적 프리미티브를 포함하는 장면을 묘사하는 장치,메모리 자동 관리 방법 및 머신 판독가능 매체

Country Status (10)

Country Link
US (2) US6747658B2 (ko)
EP (1) EP1461773B1 (ko)
JP (1) JP4071196B2 (ko)
KR (1) KR100575143B1 (ko)
CN (1) CN1669055B (ko)
AT (1) ATE469409T1 (ko)
AU (1) AU2002359689A1 (ko)
DE (1) DE60236542D1 (ko)
TW (1) TWI279737B (ko)
WO (1) WO2003058555A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569813B2 (en) 2012-11-30 2017-02-14 Samsung Electronics Co., Ltd. Method and apparatus for tile-based rendering

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6747658B2 (en) * 2001-12-31 2004-06-08 Intel Corporation Automatic memory management for zone rendering
US8223157B1 (en) * 2003-12-31 2012-07-17 Ziilabs Inc., Ltd. Stochastic super sampling or automatic accumulation buffering
US20060074872A1 (en) * 2004-09-30 2006-04-06 International Business Machines Corporation Adaptive database buffer memory management using dynamic SQL statement cache statistics
US7694097B2 (en) * 2004-11-15 2010-04-06 International Business Machines Corporation System and method for managing an electronic storage volume
US20060153185A1 (en) * 2004-12-28 2006-07-13 Intel Corporation Method and apparatus for dynamically changing ring size in network processing
US20060230428A1 (en) * 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US7764289B2 (en) * 2005-04-22 2010-07-27 Apple Inc. Methods and systems for processing objects in memory
US7280107B2 (en) 2005-06-29 2007-10-09 Microsoft Corporation Procedural graphics architectures and techniques
US8284842B2 (en) 2005-07-08 2012-10-09 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks and a reference grid
US8270439B2 (en) * 2005-07-08 2012-09-18 Activevideo Networks, Inc. Video game system using pre-encoded digital audio mixing
US9060101B2 (en) * 2005-07-08 2015-06-16 Activevideo Networks, Inc. Video game system having an infinite playing field
US9061206B2 (en) * 2005-07-08 2015-06-23 Activevideo Networks, Inc. Video game system using pre-generated motion vectors
US8118676B2 (en) * 2005-07-08 2012-02-21 Activevideo Networks, Inc. Video game system using pre-encoded macro-blocks
ATE475266T1 (de) * 2005-07-08 2010-08-15 Tag Networks Inc Videospielsystem mit vorcodierten makroblöcken
US8074248B2 (en) 2005-07-26 2011-12-06 Activevideo Networks, Inc. System and method for providing video content associated with a source image to a television in a communication network
US8694697B1 (en) * 2006-04-27 2014-04-08 Nvidia Corporation Rescindable instruction dispatcher
US8085272B1 (en) * 2006-11-03 2011-12-27 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
US8139069B1 (en) 2006-11-03 2012-03-20 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
EP3145200A1 (en) 2007-01-12 2017-03-22 ActiveVideo Networks, Inc. Mpeg objects and systems and methods for using mpeg objects
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
US8031194B2 (en) * 2007-11-09 2011-10-04 Vivante Corporation Intelligent configurable graphics bandwidth modulator
GB0723536D0 (en) * 2007-11-30 2008-01-09 Imagination Tech Ltd Multi-core geometry processing in a tile based rendering system
US8522242B2 (en) * 2007-12-31 2013-08-27 Intel Corporation Conditional batch buffer execution
GB0823468D0 (en) * 2008-12-23 2009-01-28 Imagination Tech Ltd Display list control stream grouping in tile based 3D computer graphics systems
US9075559B2 (en) 2009-02-27 2015-07-07 Nvidia Corporation Multiple graphics processing unit system and method
US9135675B2 (en) 2009-06-15 2015-09-15 Nvidia Corporation Multiple graphics processing unit display synchronization system and method
US8194862B2 (en) * 2009-07-31 2012-06-05 Activevideo Networks, Inc. Video game system with mixing of independent pre-encoded digital audio bitstreams
US20110063304A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation Co-processing synchronizing techniques on heterogeneous graphics processing units
JP5866125B2 (ja) 2010-10-14 2016-02-17 アクティブビデオ ネットワークス, インコーポレイテッド ケーブルテレビシステムを使用したビデオ装置間のデジタルビデオストリーミング
US8339409B2 (en) * 2011-02-16 2012-12-25 Arm Limited Tile-based graphics system and method of operation of such a system
CN102654921A (zh) * 2011-03-03 2012-09-05 福建星网视易信息系统有限公司 用于对象管理的三维图形引擎
CN102654922B (zh) * 2011-03-03 2014-11-05 福建星网视易信息系统有限公司 消息管理引擎
EP2695388B1 (en) 2011-04-07 2017-06-07 ActiveVideo Networks, Inc. Reduction of latency in video distribution networks using adaptive bit rates
CN107393502B (zh) 2011-12-14 2019-11-05 英特尔公司 用于多遍渲染的技术
EP2815582B1 (en) 2012-01-09 2019-09-04 ActiveVideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US9800945B2 (en) 2012-04-03 2017-10-24 Activevideo Networks, Inc. Class-based intelligent multiplexing over unmanaged networks
US9123084B2 (en) 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
JP5910310B2 (ja) * 2012-05-22 2016-04-27 富士通株式会社 描画処理装置及び描画処理方法
US9672584B2 (en) * 2012-09-06 2017-06-06 Imagination Technologies Limited Systems and methods of partial frame buffer updating
US9064437B2 (en) 2012-12-07 2015-06-23 Intel Corporation Memory based semaphores
WO2014145921A1 (en) 2013-03-15 2014-09-18 Activevideo Networks, Inc. A multiple-mode system and method for providing user selectable video content
US9219922B2 (en) 2013-06-06 2015-12-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
EP3005712A1 (en) 2013-06-06 2016-04-13 ActiveVideo Networks, Inc. Overlay rendering of user interface onto source video
US9294785B2 (en) 2013-06-06 2016-03-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9818379B2 (en) 2013-08-08 2017-11-14 Nvidia Corporation Pixel data transmission over multiple pixel interfaces
US9788029B2 (en) 2014-04-25 2017-10-10 Activevideo Networks, Inc. Intelligent multiplexing using class-based, multi-dimensioned decision logic for managed networks
KR102276909B1 (ko) 2014-12-09 2021-07-13 삼성전자주식회사 렌더링 방법 및 장치
GB2534567B (en) 2015-01-27 2017-04-19 Imagination Tech Ltd Processing primitives which have unresolved fragments in a graphics processing system
US10248419B2 (en) * 2016-03-09 2019-04-02 International Business Machines Corporation In-memory/register vector radix sort
US10621158B2 (en) * 2017-08-07 2020-04-14 Seagate Technology Llc Transaction log tracking
WO2021012257A1 (en) * 2019-07-25 2021-01-28 Qualcomm Incorporated Methods and apparatus to facilitate a unified framework of post-processing for gaming
CN110704555A (zh) * 2019-08-20 2020-01-17 浙江工业大学 一种基于gis的数据分地区处理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997021192A1 (en) 1995-12-06 1997-06-12 Intergraph Corporation Peer-to-peer parallel processing graphics accelerator
US6344852B1 (en) * 1999-03-17 2002-02-05 Nvidia Corporation Optimized system and method for binning of graphics data
US6380935B1 (en) 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
US6396473B1 (en) * 1999-04-22 2002-05-28 Webtv Networks, Inc. Overlay graphics memory management method and apparatus
FR2797370B1 (fr) * 1999-07-19 2001-10-05 Sual E Procede et systeme pour afficher des images transmises a distance
WO2001037220A1 (en) 1999-11-18 2001-05-25 Info Assets, Inc. Rendering image data
US6747658B2 (en) * 2001-12-31 2004-06-08 Intel Corporation Automatic memory management for zone rendering

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569813B2 (en) 2012-11-30 2017-02-14 Samsung Electronics Co., Ltd. Method and apparatus for tile-based rendering

Also Published As

Publication number Publication date
CN1669055A (zh) 2005-09-14
EP1461773A2 (en) 2004-09-29
US20030122836A1 (en) 2003-07-03
WO2003058555A2 (en) 2003-07-17
DE60236542D1 (de) 2010-07-08
TWI279737B (en) 2007-04-21
US20040222998A1 (en) 2004-11-11
US6747658B2 (en) 2004-06-08
EP1461773B1 (en) 2010-05-26
TW200302437A (en) 2003-08-01
JP4071196B2 (ja) 2008-04-02
US6995773B2 (en) 2006-02-07
AU2002359689A8 (en) 2003-07-24
WO2003058555A3 (en) 2004-02-12
ATE469409T1 (de) 2010-06-15
JP2005525617A (ja) 2005-08-25
AU2002359689A1 (en) 2003-07-24
CN1669055B (zh) 2011-05-25
KR100575143B1 (ko) 2006-05-03

Similar Documents

Publication Publication Date Title
KR100575143B1 (ko) 지리적 프리미티브를 포함하는 장면을 묘사하는 장치,메모리 자동 관리 방법 및 머신 판독가능 매체
US6738069B2 (en) Efficient graphics state management for zone rendering
US6693637B2 (en) Method and apparatus for determining bins to be updated for polygons, including lines
US6747657B2 (en) Depth write disable for zone rendering
US7791601B2 (en) Efficient object storage for zone rendering
JPH10116346A (ja) テクスチャの高速ダウンロード方法
US6762765B2 (en) Bandwidth reduction for zone rendering via split vertex buffers
US20020140710A1 (en) Method and apparatus for dynamically balancing graphics workloads on a demand-based zone renderer
US20030122850A1 (en) Method and apparatus for determining bins to be updated for polygons, including triangles
US20030043171A1 (en) Method, apparatus and system for determining an intersection method for a zone renderer
US20030122851A1 (en) Efficient image allocation for zone rendering
US20030123089A1 (en) Graphics state bandwidth reduction for zone rendering

Legal Events

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

Payment date: 20170330

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee