KR20040015757A - 시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치,방법 및 시스템 - Google Patents

시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치,방법 및 시스템 Download PDF

Info

Publication number
KR20040015757A
KR20040015757A KR10-2003-7016960A KR20037016960A KR20040015757A KR 20040015757 A KR20040015757 A KR 20040015757A KR 20037016960 A KR20037016960 A KR 20037016960A KR 20040015757 A KR20040015757 A KR 20040015757A
Authority
KR
South Korea
Prior art keywords
rendering engine
graphics
graphics rendering
instruction
register
Prior art date
Application number
KR10-2003-7016960A
Other languages
English (en)
Other versions
KR100617998B1 (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 KR20040015757A publication Critical patent/KR20040015757A/ko
Application granted granted Critical
Publication of KR100617998B1 publication Critical patent/KR100617998B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • G06F3/1431Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using a single graphics controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

하나 이상의 디스플레이 장치 상에 디스플레이하기 위한 독립 이미지를 동시에 렌더링하는 방법, 장치 및 시스템에 관한 것이다. 일실시예에서, 그래픽 렌더링 엔진은 다수의 디스플레이 장치 상에 디스플레이하기 위한 독립 이미지를 동시에 렌더링한다. 시간 할당기는 렌더링될 각각의 독립 이미지간의 상기 그래픽 렌더링 엔진의 동시 사용을 조정한다.

Description

시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치, 방법 및 시스템{APPARATUS, METHOD AND SYSTEM WITH A GRAPHICS-RENDERING ENGINE HAVING A TIME ALLOCATOR}
이미지 렌더링은 고레벨 오브젝트 기반 기술(high-level object-based description)을 임의의 디스플레이 장치 상에 디스플레이하기 위한 그래픽 이미지로 변환하는 것이다. 예를 들어, 이미지 렌더링 동작은 3차원 오브젝트 또는 장면의 수학적 모델을 비트맵 이미지(bitmap image)로 변환하는 동안 발생한다. 이미지 렌더링의 또다른 예는 HTML 문서를 컴퓨터 모니터 상에 디스플레이하기 위한 이미지로 변환하는 것이다. 일반적으로, 그래픽 렌더링 엔진이라 지칭되는 하드웨어 장치는 이들 그래픽 처리 작업을 가속화한다.
통상 인터넷을 서핑할 때 컴퓨터 모니터 상에 다수의 이미지를 볼 수 있다. 예를 들어, 웹 페이지 및 웹 페이지 상에 부가된 2개의 배너 광고가 인터넷을 서핑할때 컴퓨터 모니터 상에서 디스플레이될 수 있다. 그래픽 렌더링 엔진은 일반적으로 웹 페이지 등의 제 1 이미지와 관련된 모든 명령을 렌더링한다. 제 1 이미지에 대한 명령의 처리를 완료한 후, 그래픽 렌더링 엔진은 배너 광고 중의 하나인 제 2 이미지와 관련된 명령을 처리하기 시작한다. 그러나, 일반적으로, 그래픽 렌더링 엔진은 제 2 이미지와 관련된 명령을 처리하기 시작하기 전에 제 1 이미지와 관련된 명령의 렌더링을 완료해야 한다. 따라서, 그래픽 애플리케이션 프로그램보다 빠르게 그래픽 렌더링 엔진이 명령을 발생시키면, 그래픽 렌더링 엔진은 그 기간동안 유휴 상태가 된다. 또한, 이미지 명령이 다음의 명령을 실행하기 전에 발생하는 실세계 이벤트(real world event)를 요구하면, 그래픽 렌더링 엔진은 그 기간동안 유휴 상태가 된다. 일반적으로, 그래픽 렌더링 엔진은 명령 스트림을 순차적으로 제공한다. 따라서, 제 1 명령 스트림과 관련된 명령은 그래픽 렌더링 엔진이 제 2 명령 스트림과 관련된 명령을 처리하기 시작하기 전에 처리되었다.
또다른 예로서는 3차원 환경에서의 2개의 독립 이미지의 렌더링이 있을 수 있다. 단일 디스플레이 스크린은 3D 이미지를 포함하는 제 1 윈도우와 제어 2D 그래픽 사용자 인터페이스의 디스플레이된 이미지를 포함하는 제 2 윈도우를 디스플레이한다. 서술한 바와 같이, 종래의 기술에서, 제 1 윈도우 내의 이미지에 대한 명령은 그래픽 렌더링 엔진이 제 2 윈도우 내의 이미지에 대한 명령을 처리하기 시작하기 전에 처리되었다.
종래의 기술은 다수의 이미지를 다수의 장치 상에 디스플레이하였다. 일반적으로, 다수의 이미지와 관련된 명령을 처리하기 위하여 둘 이상의 그래픽 렌더링 엔진이 존재한다. 각각의 그래픽 렌더링 엔진은 단일 디스플레이 장치를 서비스한다. 그러나, 실제적으로, 다수의 그래픽 렌더링 엔진은 단일 그래픽 렌더링 엔진을 생산하는 것보다 더 많은 물리적 공간을 차지하고, 더 많은 전력을 소비하며, 더 많은 비용이 든다. 따라서, 그래픽 렌더링 엔진의 수를 감소시키는 것이 이롭다. 또한, 둘 이상의 그래픽 렌더링 엔진으로 동일한 디스플레이 스크린 상에 상이한 이미지를 렌더링하려고 시도한 종래의 기술은 중대한 조정 갈등에 직면하였다.
각각의 그래픽 렌더링 엔진은 한 셋트의 렌더링 상태 변수를 통해 제어된다. 이들 상태 변수는 렌더링 콘텍스트로서 총괄하여 공지되어 있다. 렌더링 상태 변수는 오브젝트 칼라, 텍스쳐(texture), 텍스쳐 애플리케이션 모드 등의 그래픽 렌더링 프로세스의 특정 형태를 제어한다.
특정 렌더링 콘텍스트는 각각의 이미지를 가지고 존재하며, 그 이미지는 렌더링된다. 종래의 기술은 이미지와 관련된 렌더링 콘텍스트를 설정하기 위한 비효율적인 방법을 사용한다. 그래픽 드라이버 프로그램은 애플리케이션 프로그램으로부터 명령을 수신하고, 이미지와 일반적으로 관련된 상태 변수 셋팅을 포함하는 그 명령을 포함하는 명령 스트림을 그래픽 렌더링 엔진으로 전송한다. 그래픽 렌더링 엔진은 다른 렌더링 명령을 실행하기 전에 이들 렌더링 콘텍스트 명령을 처리한다. 그래픽 렌더링 엔진이 제 1 이미지와 관련된 명령과 제 2 이미지와 관련된 명령의 처리 사이를 변환하면, 그래픽 애플리케이션 프로그램은 렌더링 콘텍스트 명령을 전송할 필요가 있고 그래픽 렌더링 엔진은 이들 렌더링 콘텍스트 명령을 처리할 필요가 있다.
종래에, 그래픽 렌더링 엔진과 관련된 렌더링 콘텍스트는 소프트웨어 발생 명령 스트림만을 통해 변경되었고, 호스트 CPU로부터 직접 액세스되지 않았다. 따라서, 현재의 렌더링 콘텍스트 등의 제 1 렌더링 콘텍스트로부터 새로운 렌더링 콘텍스트 등의 제 2 렌더링 콘텍스트로의 변경은 애플리케이션 소프트웨어가 명령을 발생하여 제 2 렌더링 콘텍스트에 대한 상태 변수 셋팅을 특정할 것을 요구하였다. 제 1 렌더링 콘텍스트가 판독될 수 없으면, 애플리케이션 소프트웨어는 임의의 후속 시점에서 제 1 렌더링 콘텍스트를 복원하기 위하여 제 1 렌더링 콘텍스트의 섀도우 카피(shadow copy)를 유지할 필요가 있었다.
본 발명은 일반적으로 다수의 이미지의 렌더링(rendering)에 관한 것이다. 특히, 본 발명은 하나 이상의 디스플레이 장치 상에 다수의 이미지를 렌더링하는 것에 관한 것이다.
도 1은 단일 그래픽 렌더링 엔진을 사용하여 하나 이상의 이미지를 렌더링하여 하나 이상의 이미지를 다수의 디스플레이 장치 상에 디스플레이하는 일실시예의 그래픽 장치의 블록도.
도 2는 중앙 처리 장치(CPU), 캐쉬, 메모리, 디스플레이 장치, 및 일실시예의 명령 전송기 및 일 실시예의 그래픽 콘텍스트 매니저(graphic context manager)를 갖는 그래픽 장치를 포함하는 일실시예의 컴퓨터 시스템의 블록도.
도 3은 일실시예의 링 버퍼 메모리 영역의 블록도.
도 4는 렌더링되는 각각의 독립 이미지간의 그래픽 렌더링 엔진의 사용을 할당하기 위한 일실시예의 시간 할당기의 블록도.
도 5 및 6은 단일 그래픽 렌더링 엔진을 이용하여 다수의 디스플레이 장치 상에 다수의 이미지를 렌더링하는 일실시예의 프로세스의 흐름도.
본 발명은 다양한 변경 및 다른 형태가 가능하지만, 그 특정 실시예는 도면의 예에 의해 도시되며 여기에 상세히 설명될 것이다. 본 발명은 개시된 특정 형태에 한정되지 않으며 본 발명의 사상 및 범위내의 모든 변경물, 동등물, 대안물을 커버한다.
다음의 설명에서, 본 발명의 이해를 돕기 위하여, 특정 명령, 명명된 컴포넌트, 접속 등의 예 등의 많은 특정 항목을 설명한다. 그러나, 당업자는 본 발명이 이들 특정 항목없이 실행될 수 없음을 이해할 것이다. 다른 예에서, 공지된 컴포넌트 또는 방법은 본 발명을 불명료하게 하는 것을 피하기 위하여 블록도에서 상세하게 설명되어 있지 않다. 따라서, 특정 항목은 단순히 예시적인 것이다. 특정 항목은 변경가능하며 본 발명의 사상 및 범위내에서 예상될 수 있다. 결합된 용어는 직접 또는 간접적으로 결합된 것을 의미한다.
일반적으로, 그래픽 렌더링 엔진은 다수의 디스플레이 장치 상에 디스플레이하기 위한 독립 이미지들을 동시에 렌더링한다. 명령 전송기는 둘 이상의 독립 이미지에 대한 명령을 그래픽 렌더링 엔진에 전달한다. 시간 할당기는 렌더링되는 각각의 독립 이미지 사이의 그래픽 렌더링 엔진의 동시 사용을 조정한다. 그래픽 콘텍스트 매니저는 설정된 메모리 위치로부터 그래픽 렌더링 엔진으로의 제 1 독립 이미지와 관련된 렌더링 콘텍스트를 복원한다.
도 1은 그래픽 렌더링 엔진을 사용하여 하나 이상의 이미지를 렌더링하여 하나 이상의 이미지를 다수의 디스플레이 장치 상에 디스플레이하는 일실시예의 그래픽 장치의 블록도이다. 도 1을 참조하면, 그래픽 장치(100)는 그래픽 렌더링 엔진(102), 하나 이상의 명령 전송기(104), 콘텍스트 매니저(106), 시간 할당기(108) 및 제 1 디스플레이 장치(100)와 제 2 디스플레이 장치(112) 등의 하나 이상의 디스플레이 장치를 포함한다. 일실시예에서, 그래픽 장치(100)는 단일 그래픽 렌더링 엔진(102)을 포함한다.
그래픽 렌더링 엔진(102)은 단일 디스플레이 장치 또는 다수의 디스플레이 장치 상에 디스플레이될 독립 이미지를 발생한다. 따라서, 예를 들어, 2개의 독립 이미지가 동일한 디스플레이 장치 상에 디스플레이될 수 있거나 2개의 독립 이미지가 개별 디스플레이 장치 상에 각각 디스플레이될 수 있다. 각각의 독립 이미지에 대한 명령은 다수의 그래픽 애플리케이션 프로그램으로부터의 명령을 포함하는 단일 명령 스트림(114) 또는 개별 명령 스트림(114)으로부터 기인한다.
각각의 독립 이미지는, 브라우저 애플리케이션을 통해 웹 페이지에 배너 광고를 디스플레이하거나 2차원 이미지와 관련된 제 1 명령 스트림과 3차원 이미지와 관련된 제 2 명령 스트림을 순차적으로 렌더링하는 종래 기술과 비교하여 동시에 렌더링될 수 있다. 일반적으로, 종래 기술은 배너 광고 등의 제 1 윈도우 내에 포함된 제 1 이미지와 관련된 이미지 명령을 완전히 렌더링한 후에 제 2 윈도우 내에 포함된 제 2 이미지에 대한 명령을 완전히 렌더링한다. 일반적으로 종래 기술에서, 그래픽 렌더링 엔진은 각각의 독립 이미지에 대한 명령에 대하여 동시에 동작하지 않는다.
시간 할당기(108)는 렌더링되는 각각의 독립 이미지 사이의 그래픽 렌더링엔진(102)의 사용을 조정한다. 그래픽 콘텍스트 매니저(106)는 렌더링되는 각각의 독립 이미지와 관련된 콘텍스트를 메모리 장치(도시하지 않음) 내에 저장한다. 프로세서 상에서 실행하는 다양한 그래픽 애플리케이션 또는 프로세서 상에서 실행하는 브라우저는 이미지 렌더링 명령을 명령 스트림(114)에 삽입한다. 명령 전송기(104)는 명령을 명령 스트림(114)으로부터 처리용 그래픽 렌더링 엔진(102)으로 전달한다.
그래픽 렌더링 엔진(102)은 그래픽 콘텍스트 매니저(106), 시간 할당기(108), 및 하나 이상의 명령 전송기(104)와 함께 작동하여 그래픽 렌더링 엔진(102)을 효율적으로 이용하도록 한다. 명령을 명령 스트림(114)에 공급하는 각각의 그래픽 애플리케이션은 이미지를 발생하고 다른 속도에서 동작할 수 있다. 예를 들어, 스트리밍 라이브 비디오 애플리케이션(streaming live video application)은 통상 워드 프로세싱 애플리케이션보다 빠른 이미지 발생 속도로 동작한다. 그래픽 렌더링 엔진(102)은 둘 이상의 이미지와 관련된 명령을 동시에 렌더링하여 그래픽 렌더링 엔진(102)이 유휴 상태로 있는 시간을 최소화한다. 또한, 종래의 기술에서는, 제 1 이미지에 대한 명령이 다음의 명령을 실행하기 전에 발생하는 실세계 이벤트를 요구하면, 그래픽 렌더링 엔진(102)은 그 기간동안 유휴 상태로 존재하였다. 그러나, 그래픽 렌더링 엔진(102)은 그래픽 렌더링 엔진(102)에 대한 유휴 시간을 감소시키기 위하여 다수의 이미지로부터 명령을 동시에 렌더링할 수 있다.
그래픽 렌더링 엔진(102)은 제 1 이미지와 관련된 현재의 렌더링 콘텍스트를저장하고 설정 메모리 위치(도시하지 않음)로부터 제 2 이미지와 관련된 새로운 렌더링 콘텍스트를 로드할 수 있다. 일실시예에서, 렌더링 콘텍스트를 저장하기 위하여 사용되는 설정 메모리 위치는 논리적 콘텍스트(도시하지 않음)로서 지칭될 수 있다. 그래픽 렌더링 장치(100)는, 렌더링 콘텍스트의 변환이 요구될 때, (1) 렌더링 상태 변수로부터의 메모리 내의 현재의 렌더링 콘텍스트를 제 1 설정 메모리 위치로 기입하고, (2) 메모리 내의 제 2 설정 메모리 위치로부터 새로운 렌더링 콘텍스트를 판독하고, (3) 새로운 렌더링 콘텍스트로부터 정보를 갖는 렌더링 상태 변수를 로드할 수 있다. 일실시예에서, 콘텍스트 매니저(106) 내의 설정 메모리 위치는 독립 이미지를 발생시키는 각각의 그래픽 애플리케이션과 관련된다. 일실시예에서, 개별 명령 전송기(104)는 각각의 디스플레이 장치(110, 112)와 관련되어 특정 디스플레이 장치(110, 112)에 대하여 처리될 이미지 렌더링 명령의 독립적인 세트를 저장한다.
도 2는 중앙 처리 장치(CPU), 캐쉬, 메모리, 디스플레이 장치, 및 일실시예의 명령 전송기와 일실시예의 그래픽 콘텍스트 매니저를 갖는 그래픽 장치를 포함하는 일실시예의 컴퓨터 시스템의 블록도이다. 그래픽 장치(200)는 다수의 링 버퍼 레지스터(204, 206), 링 버퍼 직접 메모리 액세스 엔진(RB DMA ENG; 212), 그래픽 렌더링 엔진(214), 및 콘텍스트 식별 레지스터(CID; 222, 224)를 포함한다. 다수의 링 버퍼 메모리 영역(208, 210), 다수의 설정 메모리 위치(216, 218, 220) 및 다수의 디스플레이 장치(228, 230)는 그래픽 장치(200)와 관련된다. 일실시예에서, 명령 전송기는 다수의 링 버퍼 레지스터(204, 206), 다수의 링 버퍼 메모리 영역(208, 210) 및 직접 메모리 액세스 엔진(212)을 포함한다. 일실시예에서, 콘텍스트 매니저는 콘텍스트 식별 레지스터(CID; 222, 224), 액티브 콘텍스트 식별 레지스터(액티브 CID; 226) 및 다수의 설정 메모리 위치(216, 218, 220)로 구성된다.
도 3은 일실시예의 링 버퍼 메모리 영역의 블록도이다. 상술한 바와 같이, 일실시예의 명령 전송기는, 소프트웨어 발생 명령을 그래픽 렌더링 엔진(도시하지 않음)으로 전달하는 하나 이상의 링 버퍼 메모리 영역(300) 및 하나 이상의 링 버퍼 레지스터(310)를 포함한다. 링 버퍼 메모리 영역(300)은 그래픽 애플리케이션(도시하지 않음)으로부터의 실제 이미지 렌더링 명령을 유지한다. 링 버퍼 레지스터(310)는 링 버퍼 메모리 영역(300)의 시작 및 길이를 정의하고, 링 버퍼 메모리 영역(300)으로의 2개의 오프셋, 즉, 헤드 오프셋(304) 및 테일 오프셋(tail offset; 302)을 포함한다. 테일 오프셋(302)은 실행되어야 하는 유효 명령의 존재를 그래픽 렌더링 엔진에 알린다. 헤드 오프셋(304)은 그 명령들이 분석(parse)되고 실행됨에 따라 그래픽 렌더링 엔진에 의해 증가된다. 명령은 링 버퍼 메모리 영역(300)의 하부로부터 링 버퍼 메모리 영역(300)의 상부로 랩-어라운드(wrap-around)할 수 있다. 일실시예에서, 링 버퍼 메모리 영역(300)은 명령을 저장하여 배치 버퍼(batch buffer; 도시하지 않음)의 위치를 지시한다. 배치 버퍼는, 별도의 메모리 영역에 저장되어 추가의 명령 기억 용량을 제공할 수 있는 이미지 렌더링 명령의 별개의 리스트를 포함한다. 일실시예에서, 배치 버퍼는 명령 스트림으로부터 호출될 수 있는 독립적인 순서의 명령을 저장한다.
도 2를 다시 참조하면, 각각의 링 버퍼 레지스터(204, 206)는 레지스터 내의다수의 필드를 가질 수 있다. 제 1 링 버퍼 레지스터(204) 등의 일실시예의 링 버퍼 레지스터 내에 포함된 필드는 링 버퍼 유효 필드(V; 232), 시작 어드레스 필드(S; 234), 버퍼 길이 필드(L; 235), 헤드 오프셋 필드(H; 236), 헤드 랩(wrap) 카운트 필드(W; 233), 테일 오프셋 필드(T; 237), 자동 보고 헤드 인에이블 필드(R; 238), 시간 분할 필드(TS; 239) 및 다른 유사한 필드일 수 있다.
링 버퍼 유효 필드(232)는 이 특정 링 버퍼 레지스터가 그래픽 렌더링 엔진(214)을 공유하는 조정 프로세스 내에 포함되는지를 제어한다. 시작 어드레스 필드(234)는 링 버퍼 메모리 영역(208, 210)을 포함하는 연속 메모리 영역의 시작을 지시한다. 링 버퍼 메모리 영역(208, 210)은 시스템 메모리(232) 또는 전용 메모리 중 어느 하나에 위치한다. 버퍼 길이 필드(235)는 할당된 링 버퍼 메모리 영역(208, 210)의 바이트 사이즈를 특정한다. 일실시예에서, 링 버퍼 길이 필드(235)는 임의의 1시간에 링 버퍼 메모리 영역(208, 210)에 제공될 수 있는 데이터의 최대량을 정의한다. 일실시예에서, 링 버퍼 메모리 영역(208, 210)은 이미지 렌더링 명령과 포인터를 하나 이상의 배치 버퍼(240)에 포함시켜, 가상 무한 메모리 영역이 명령을 포함하도록 한다.
헤드 오프셋 필드(236)는 그래픽 렌더링 엔진(214)이 분석할 다음 명령의 시작 어드레스(234)로부터의 메모리 오프셋을 지시한다. 예를 들어, 헤드 오프셋(236)은 분석될 최종 명령을 통과한 하나의 메모리 유닛을 지시할 수 있다. 그래픽 렌더링 엔진(214)은 명령이 분석됨에 따라 헤드 오프셋 필드(236)를 갱신한다. 헤드 오프셋(236)이 테일 오프셋(237)의 값에 도달하면, 즉, 오프셋이 동일하면, 그래픽 렌더링 엔진(214)은 링 버퍼 메모리 영역(208, 210)이 비어 있는 것으로 간주하고, 그 상태가 유지되는 한 그래픽 렌더링 엔진(214)을 공유하는 조정 프로세스로부터 대응하는 링 버퍼 레지스터(204, 206)를 제거한다. 따라서, 그 특정 디스플레이 장치에 대한 명령 스트림이 중앙 처리로부터 제거되어야 한다는 지시가 존재한다. 또한, 링 버퍼 레지스터(204, 206)에는 헤드 포인터 값을 가능하게 하는 자동 보고 헤드 인에이블 필드와 더 유효한 흐름 제어 알고리즘을 위한 캐쉬가능 메모리(cacheable memory)에 기입되는 헤드 랩 카운트 필드(233)가 포함된다. 예를 들어, 흐름 제어 알고리즘은 헤드 오프셋(236)을 폴링하는 동안 진행을 확인한다.
링 버퍼 메모리 영역(208, 210)은 메모리 영역의 끝으로부터 메모리 영역의 시작까지 랩-어라운드할 수 있다. 헤드 랩 카운트 필드(233)는 헤드 오프셋(236)이 링 버퍼 메모리 영역(208, 210)의 시작 어드레스(234)를 랩-어라운드할 때마다 그래픽 렌더링 엔진(214)에 의해 증가된다. 일실시예에서, 헤드 랩 카운트 필드(233)는 "보고 헤드(report head)" 프로세스 내에 기입된 DWord 내에 포함된다. 그래픽 장치(200)는 링 버퍼 메모리 영역(208, 210)이 실제 물리적 버퍼의 사이즈보다 훨씬 큰 "가상" 길이를 갖는 것처럼 명령 분석 진행을 추적하기 위하여 헤드 랩 카운트 필드(233)를 사용할 수 있다.
테일 오프셋 필드(237)는 시작 어드레스(234)로부터 특정 거리만큼 오프셋된 링 버퍼 메모리 영역(208, 210)의 위치를 지시한다. 테일 오프셋 필드(237)는그래픽 애플리케이션 소프트웨어가 후속으로 실행될 추가의 이미지 렌더링 명령을저장하기 위하여 사용할 수 있는 명령 데이터의 다음 메모리 유닛을 지시할 수 있다. 예를 들어, 테일 오프셋 필드(237)는 실행을 위해 그래픽 렌더링 엔진(214)에 제공된 최종 명령을 통과한 하나의 메모리 유닛(232)을 지시한다. 제공된 명령은 링 버퍼 메모리 영역(208, 210)의 끝으로부터 상부로 랩-어라운드할 수 있고, 이 경우, 기입된 테일 오프셋(237)은 이전의 값보다 작을 것이다. 링 버퍼 메모리 영역(208, 210)의 "빈(empty)" 상태는 "헤드 오프셋 필드(236)가 테일 오프셋 필드(237)와 동일함"으로서 정의될 수 있다.
자동 보고 헤드 인에이블 필드(238)는 그래픽 애플리케이션 소프트웨어 또는 오퍼레이팅 소프트웨어가 주기적으로 특정 CPU-스누프드(CPU-snooped) 시스템 메모리 위치에 기입될 헤드 오프셋 필드(236) 및 헤드 랩 카운트 필드(233) 콘텐츠를 갖도록 요구하도록 한다. 자동 보고는 헤드 오프셋 필드(236)가 프로그램 양만큼 진행할 때마다 발생하도록 프로그래밍될 수 있다. 자동 보고 메카니즘은 헤드 오프셋 필드(236) 및 헤드 랩 카운트 필드(233)를 사용하는 소프트웨어가 링 버퍼의 자유 공간의 양을 결정하도록 한다. 따라서, 헤드 오프셋 필드(236)는, 명령을 통해 헤드 포인터 값을 명확하게 얻지 않고 자동적으로 명료한 최근 헤드 오프셋 필드(236)를 제공하도록 시스템 메모리에 주기적으로 보고될 수 있다.
각각의 디스플레이 장치(228, 230)는 개별 디스플레이 장치와 관련된 별개의 명령 전송기를 가질 수 있다. 도 2에 도시된 바와 같이, 제 1 링 버퍼 레지스터(204) 및 제 1 링 버퍼 메모리 영역(208)은 제 1 디스플레이 장치(228)와 관련된다. 제 2 링 버퍼 레지스터(206)와 제 2 링 버퍼 메모리 영역(210)은 제 2디스플레이 장치(230)와 결합된다. 따라서, 이 실시예에서, 제 1 링 버퍼 레지스터(204)와 제 1 링 버퍼 메모리 영역(208)은 제 1 디스플레이 장치(228) 상에 디스플레이될 독립 이미지의 렌더링에 대한 명령을 제공한다. 일실시예에서, 제 1 링 버퍼 레지스터(204) 및 제 1 링 버퍼 메모리 영역(208)은 제 2 디스플레이 장치(230)와 관련될 수 있다.
다수의 명령 전송기는 상이한 우선순위가 각각의 명령 전송기에 할당되도록 한다. 예를 들어, 낮은 우선순위의 명령 전송기는 인터럽트가능 배경 렌더링 작업을 위하여 사용될 수 있다. 마찬가지로, 높은 우선순위의 명령 전송기는 비디오 프레임 캡쳐(capture) 등의 비동기 이벤트를 제공하는 데 사용될 수 있다. 또한, 제 1 디스플레이 장치(228) 등의 하나의 디스플레이 장치에 서비스하는 제 1 명령 전송기를 할당하고 제 2 디스플레이 장치(230) 등의 또다른 디스플레이 장치에 서비스하는 제 2 명령 전송기를 할당함으로써, 그래픽 장치(200)는 디스플레이 장치 당 별개의 명령 스트림을 지원할 수 있다. 또한, 그래픽 장치(200)는 디스플레이 장치 당 별개로 제어되는 명령 스트림을 지원할 수 있다.
상술한 바와 같이, 각각의 명령 전송기는 직접 메모리 액세스 엔진(212)을 포함할 수 있다. 직접 메모리 액세스 엔진(212)은 특정 명령 전송기로부터 명령을 페치(fetch)하고 이들 명령을 그래픽 렌더링 엔진(214)으로 전달한다.
그래픽 렌더링 엔진(214)은 명령 전송기로부터 직접 메모리 액세스 엔진(212)을 통해 이미지 명령을 판독하고 이들 이미지 명령을 실행한다. 그래픽 렌더링 엔진(214)은 링 버퍼 레지스터(204, 206) 내의 헤드 오프셋 필드(236)와 테일 오프셋 필드(237) 사이의 차이를 통해 링 버퍼 메모리 영역(208, 210) 내의 명령의 존재를 검출한다. 그래픽 렌더링 엔진(214)은 명령이 어떤 정보를 포함하는지 및 명령을 또한 어떻게 실행하는지를 판정하기 위하여 명령의 공통 "헤더" 필드를 해석하고 디코딩한다. 이 명령의 해석 및 디코딩은 통상 분석이라고 지칭된다.
일실시예에서, 그래픽 렌더링 엔진(214)은 명령 스트림(242)으로부터의 특정 명령을 디코딩하여 명령이 어떤 정보(예를 들어, 적용될 상태 변수 변경(246) 또는 렌더링될 원형(primitive))를 가지고 있는지를 판명한다. 따라서, 그후, 그래픽 렌더링 엔진(214)은 명령을 실행한다. 상태 변수 변경 명령(246)의 실행은 현재의 렌더링 콘텍스트에 특정 변경을 유발시킨다. 원형 명령(248)의 실행은 메모리(256, 258) 내의 적절한 이미지 정보의 변경을 유발한다(즉, 이미지가 렌더링된다). 그래픽 렌더링 엔진(214)은 그후 제 1 디스플레이 이미지(256)와 제 2 디스플레이 이미지(258) 등의 이미지 정보를 각 디스플레이 장치(228, 230)에 대응하는 메모리 위치에 저장한다. 일실시예에서, 제 1 디스플레이 이미지(256)에 대한 정보 및 제 2 디스플레이 이미지(258)에 대한 정보가 제 1 디스플레이 장치(228) 및 제 2 디스플레이 장치(230)에 제공되는 국부 메모리에 저장된다. 일실시예에서, 제 1 디스플레이 이미지(256)에 대한 명령 및 제 2 디스플레이 이미지(258)에 대한 명령은 시스템 메모리(232)에 저장된다. 그래픽 렌더링 엔진(214)은 메모리로부터 렌더링된 이미지 정보를 판독하고 관련된 디스플레이 장치에 렌더링 이미지 정보를 주기적으로 부여한다. 제 1 디스플레이 장치(228) 등의 디스플레이 장치는 그후 이 정보에 기초하여 디스플레이 상에 실제 이미지를 묘사한다.
일실시예에서, 그래픽 애플리케이션은 명령 스트림(242)에 명령을 공급한다. 서술한 바와 같이, 이들 명령은 특정 디스플레이 장치(228, 230)와 일반적으로 관련된 링 버퍼 메모리 영역(208, 210)에 저장될 수 있다. 일실시예에서, 명령 스트림에서 탐색된 임의의 유형의 명령은 상태 변수 변경(246), 원형(248), 및 설정 콘텍스트 코맨드(250, 252)일 수 있다. 원형 명령(248)은 그래픽 렌더링 엔진(214)이 형상의 속성인 위치 및 크기를 묘사하도록 명령한다. 상태 변수 변경 명령(246)은 이미지를 렌더링할 때 그래픽 렌더링 엔진(214)이 하드웨어 그래픽 콘텍스트 회로(244)에 저장된 렌더링 상태 변수 세트의 현재 값을 변경하도록 명령한다. 일실시예에서, 세트 콘텍스트 코맨드(Set CXT #; 250, 252)는 그래픽 렌더링 엔진(214)이 현재의 렌더링 콘텍스트를 제 1 설정 메모리 위치(216) 등의 설정 메모리 위치에 저장하도록 하고, 제 2 설정 메모리 위치(218) 등의 새로운 설정 메모리 위치로부터 새로운 렌더링 콘텍스트를 복원한다.
제 1 설정 메모리 위치(216) 등의 각각의 설정 메모리 위치는 그래픽 렌더링 엔진(214)에 의해 렌더링될 이미지의 렌더링 콘텍스트를 저장한다. 마찬가지로, 각각의 설정 메모리 위치(216, 218, 220)는 관련된 독립 이미지를 렌더링할 때 사용될 렌더링 상태 변수의 셋팅을 저장할 수 있다. 일실시예에서, 다수의 설정 메모리 위치(216, 218, 220)의 존재는 그래픽 렌더링 엔진(214)이 렌더링될 각각의 이미지와 관련된 렌더링 콘텍스트를 기억하도록 한다. 일실시예의 콘텍스트 매니저는 다수의 이미지의 동시 렌더링을 관리하기 위하여 다수의 설정 메모리위치(216, 218, 220)와 콘텍스트 식별 레지스터(222, 224, 226)를 포함한다. 일실시예의 콘텍스트 매니저는 그래픽 디스플레이 제어기 회로(GDC; 270)를 조정하여 제 1 디스플레이 장치(228) 등의 동일 디스플레이 장치 상에 다수의 이미지를 디스플레이할 뿐만 아니라 다수의 디스플레이 장치(228, 230) 상에 이미지를 디스플레이하는 것을 지원한다.
하드웨어 그래픽 콘텍스트 회로(244) 내의 다수의 하드웨어 상태의 셋팅은 그래픽 장치(200)의 렌더링 등의 그래픽 동작을 제어한다. 상태 변수는 글로벌 상태 변수 및 콘텍스트 상태 변수를 포함할 수 있다. 글로벌 상태 변수는 모든 콘텍스트(예를 들어, 논리 어드레스 맵핑 리소스 등)에 공통이고 따라서 임의의 특정 렌더링 콘텍스트의 범위 밖으로 간주된다. 그러나, 특정 그래픽 애플리케이션과 관련된 각각의 렌더링 콘텍스트는 개별 세트의 콘텍스트 상태 변수를 포함한다. 일실시예에서, 특정 그래픽 애플리케이션과 관련된 이들 렌더링 콘텍스트는 액티브 온칩 메모리(active on-chip memory) 상의 설정 메모리 위치 또는 시스템 메모리(232)의 다수의 설정 메모리 위치(216, 218, 220)에 저장될 수 있다.
서술한 바와 같이, 다수의 설정 메모리 위치(216, 218, 220)는 그래픽 렌더링 이미지에 의해 렌더링되는 독립 이미지와 관련된 렌더링 콘텍스트를 메모리(232)에 저장하고 메모리(232)로부터 복원함으로써 그래픽 렌더링 엔진(214)을 지원한다. 일실시예에서, 세트 콘텍스트-A0(250) 등의 명령 스트림(242)으로부터의 제 2 세트 콘텍스트 명령은 저장을 위하여 제 1 설정 메모리 위치(216) 등의 설정 메모리 위치에 렌더링될 이미지에 대한 현재의 렌더링 콘텍스트를 전송하도록그래픽 렌더링 엔진(214)에 명령한다. 동시에, 제 2 이미지를 발생하는 그래픽 애플리케이션과 관련된 제 2 설정 메모리 위치(218)는 그래픽 렌더링 엔진(214)로부터의 신호를 수신하여 그래픽 렌더링 엔진(214)에 의해 동시에 렌더링되는 제 2 이미지와 관련된 렌더링 콘텍스트를 복원한다. 일실시예에서, 장치 상에 위치하는 콘텍스트 캐쉬(260)의 추가는 콘텍스트를 교환하는데 요구되는 시간 및 메모리 대역폭을 감소시킨다.
콘텍스트 매니저는 또한 콘텍스트 식별 레지스터(CID; 222, 224) 및 액티브 콘텍스트 식별 레지스터(226)로 구성된다. 콘텍스트 식별 레지스터(222, 224)는 특정 링 버퍼 레지스터(204, 206) 및 따라서 특정 디스플레이 이미지 메모리 위치(256, 258)와 관련한다.
일실시예에서, 액티브 콘텍스트 식별 레지스터(226)는 현재의 액티브 링 버퍼 레지스터(204, 206) 내에 포함된 콘텍스트 식별 레지스터(222, 224)를 트랙킹한다. 제 1 콘텍스트 식별 레지스터(222) 등의 트랙킹된 콘텍스트 식별 레지스터는, 어느 특정 설정 메모리 위치(216, 218, 220)가 그래픽 렌더링 엔진에 의해 현재의 렌더링될 이미지와 관련되는 지를 설정한다.
일실시예에서, 각각의 콘텍스트 식별 레지스터(222, 224)는 설정 메모리 위치 어드레스 및 콘텍스트 Q 비트(context qualifier bit)를 포함한다. 콘텍스트 Q 비트는 렌더링 콘텍스트의 부분이 콘텍스트 변환시 저장/복원되어야 하는지 아닌지를 제어한다. 일실시예에서, 각각의 콘텍스트 식별 레지스터(222, 224)는 "텍스쳐 팔레트 저장 디스에이블(Texture Palette Save Disable)" 콘텍스트 Q 비트 및 "텍스쳐 팔레트 복원 디스에이블(Texture Palette Restore Disable)" 콘텍스트 Q 비트 등의 콘텍스트 Q 비트를 구현한다. 일실시예에서, 이들 콘텍스트 Q 비트는 2차원 및 3차원 이미지간의 콘텍스트 교환을 돕고, 3차원 이미지는 현재의 텍스쳐 팔레트를 유지할 것(즉, 렌더링 콘텍스트의 부분으로서 저장 및 복원되는 것)을 요구할 수 있지만, 2차원 이미지는 요구할 수 없다.
설정 메모리 위치(216, 218, 220)는 대응하는 콘텍스트 식별 레지스터(222, 224)의 설정 메모리 위치 어드레스를 통해 참조된다. 설정 메모리 위치(216, 218, 220)의 실제 사이즈는 콘텍스트가 변환하는 동안 저장/복원되는 데이터 양이며, 렌더링 콘텍스트가 텍스쳐 팔레트를 포함하는지에 의존한다. 일실시예에서, 콘텍스트 식별 레지스터(222, 224)는 2개의 추가 레지스터를 포함하여 메모리(232)내의 각각의 설정 메모리 위치(216, 218, 220)를 특정할 수 있다. 일실시예에서, 특정 콘텍스트 식별 레지스터(222, 224)는 대응하는 링 버퍼 메모리 영역(208, 210) 내에 저장되는 명령 스트림(242)으로부터 "세트 콘텍스트(set_context)" 명령(250, 252)을 처리하는 동안 액티브 레지스터가 된다. 일실시예에서, 세트 콘텍스트 명령(250, 252)은 콘텍스트 식별 레지스터(222, 224)로 로드될 새로운 콘텍스트 식별 값(로컬 콘텍스트 어드레스+팔레트 저장 디스에이블 비트)를 제공한다. 세트 콘텍스트 명령(250, 252)은 또한 새로운 콘텍스트의 복원을 선택적으로 금지하기 위하여 사용되는 복원 금지 비트를 포함한다. 일실시예에서, 복원 금지 비트는 메모리(232)로부터 초기화되지 않은 콘텍스트 데이터의 로딩을 피하기 위하여 콘텍스트 초기화 동안 사용될 수 있다.
액티브 콘텍스트 식별 레지스터(226)는 제 1 링 버퍼 레지스터(204) 등의 액티브 링 버퍼 레지스터의 콘텍스트 식별 값을 포함한다. 세트 콘텍스트 명령(250, 252)의 실행의 일부로서, 액티브 콘텍스트 식별 레지스터(226)로부터의 설정 메모리 위치 어드레스 필드와 세트 콘텍스트 명령이 비교된다. 그들이 다르거나 액티브 콘텍스트 식별 레지스터(226)가 초기화되지 않으면, 콘텍스트 변환 동작이 발생한다.
일실시예에서, 콘텍스트 셋팅 동작 동안, 복원 금지 명령 필드가 셋팅되지 않으면, 콘텍스트 복원 동작이 수행될 수 있다. 여기서, 제 1 설정 메모리 위치(216) 등의 설정 메모리 위치에 대한 어드레스 값은 액티브 콘텍스트 식별 레지스터(226)를 로드하는 데 사용된다. 명령의 콘텍스트 Q 필드는 렌더링의 콘텍스트의 부분의 복원을 또한 조절할 수 있다. 예를 들어, 텍스쳐 팔레트는 복원될 수도 있고 복원되지 않을 수도 있다.
HW GFX CXT(244)는 세트 콘텍스트 명령(250, 252)으로부터의 값으로 액티브 콘텍스트 식별 레지스터를 로드할 뿐만 아니라 적절한 설정 메모리 위치로부터 새로운 콘텍스트를 로드하도록 한다. 이 점에서, 대응하는 링 버퍼 레지스터(204, 206)와 링 버퍼 메모리 영역(208, 210)은 액티브 콘텍스트를 새로운 설정 메모리 위치(216, 218, 220)로 변환하였다.
상술한 바와 같이, 각각의 그래픽 애플리케이션은 상이한 속도로 이미지 명령을 발생시킬 수 있다. 각각의 디스플레이 장치(228, 230)는 상이한 속도로 디스플레이 및 그 관련 이미지를 리프레쉬할 수 있다. 일실시예에서, 콘텐츠 매니저와명령 전송기는 상이한 명령 스트림간의 균일한 변환, 상이한 디스플레이 장치(228, 252)간의 변환 및 동일한 명령 스트림(242) 내의 상이한 그래픽 애플리케이션과 관련된 렌더링 콘텍스트간의 변환을 지원한다.
도 4는 렌더링되는 각각의 독립 이미지 사이의 그래픽 렌더링 엔진의 사용을 할당하기 위한 일실시예의 시간 할당기의 블록도이다. 일실시예에서, 시간 할당기(400)는 조정 및 변환 모듈(410), 타이머 레지스터(412), 단위 레지스터(414), 단위 시간 카운터(416) 및 시간 분할 카운터(418)를 포함한다. 일실시예에서, 시간 할당기(400)는 경과된 시간 기준 및 공정한 사용 기준을 제공하여 단일 그래픽 렌더링 엔진(411)의 사용을 할당한다. 일실시예에서, 시간 할당기(400)는 그래픽 렌더링 엔진(411)의 사용을 할당하여 다수의 디스플레이 장치(도시하지 않음), 각각 그 자신의 명령 스트림(413)을 갖는 다수의 그래픽 애플리케이션 프로그램 및 단일 명령 스트림(413) 내의 다수의 그래픽 애플리케이션 프로그램 사이의 독립 이미지를 렌더링할 수 있다.
제 1 링 버퍼 레지스터(402) 및 제 2 링 버퍼 레지스터(404) 등의 각각의 링 버퍼 레지스터는 시간 분할(time slice)될 수 있거나 제 3 링 버퍼 레지스터(406) 등의 링 버퍼 레지스터는 시간 분할되지 않을 수 있다. 후술하는 바와 같이, 시간 분할되지 않은 각각의 레지스터는 라이브 비디오 등의 높은 우선순위의 그래픽 이미지에 사용되어 그래픽 렌더링 엔진(411)의 사용을 일시적으로 독점할 수 있다.
각각의 시간 분할된 링 버퍼 레지스터(402, 404)는 또다른 시간 분할된 링 버퍼로의 변환이 검사되어야 하는 것을 지시하기 전에 수행될 명령 실행의 소망 기간을 특정하는 시간 분할 레지스터(420, 422)와 관련되어 있다. 일실시예에서, 링 버퍼 레지스터(402, 404)의 시간 분할 필드(420, 422)는 이 특정 링 버퍼 레지스터(402, 404)에 일치되어야 하는 그래픽 렌더링 엔진(411)의 사용의 백분율을 특정하기 위하여 존재한다. 시간 분할 필드(420, 422)는 또한 이 링 버퍼 레지스터(402, 404)에 일치되어야 하는 그래픽 렌더링 엔진(411)의 최소 절대 시간 사용을 특정할 수 있다. 일실시예에서, 명령 실행의 소망의 기간은 시간 단위로 프로그램될 수 있다. 일실시예에서, 드라이버 소프트웨어(424)는 이들 시간 단위값을 각각의 시간 분할 필드(420, 422)에 기입할 수 있다. 따라서, 드라이버 소프트웨어(424)는 각각의 시간 분할 링 버퍼 레지스터(420, 422) 각각에 소요되는 절대 및 상대 시간을 제어할 수 있다. CPU(440)는 메모리(442) 등의 메모리로부터 드라이버 소프트웨어(424)를 액세스한다.
단위 레지스터(414)는 드라이버 소프트웨어(424)에 의해 사용될 순방향 호환가능 단위 시간량(forward-compatible unit-time quanta)을 제공한다. 단위 시간량을 설정하는 것은 중요하며, 여기서, 장치의 실제 시간 기준이 구성 및/또는 구현에 따라 변경될 수 있다. 일실시예에서, 단위 레지스터(414)는 실제 시간 기준으로서 그래픽 장치(400)의 코어 클록 기간을 사용한다. 단위 레지스터(414)는 그래픽 장치(400)를 위한 BIOS 펌웨어(426)를 통해 프로그램될 수 있다. 다른 시간 분할 파라미터는 단위 레지스터(414)에 의해 설정된 이 단위 시간량에 상대적으로 정의될 수 있다. 단위 레지스터(414)에 의해 정의된 각각의 단위 시간량은 예를 들어 50 마이크로초의 1 단위 시간 또는 40 클록 사이클의 1 단위 시간일 수 있다.
단위 레지스터(414)는 또한 시간 분할 인에이블 비트(T; 428)을 포함하여 링 버퍼 시간 분할을 온 또는 오프한다. 일실시예에서, 단위 레지스터(414)의 시간 분할 인에이블 비트(428)가 클리어되면, 고정된 링 버퍼 우선순위는 효력이 있다. 일실시예에서, 시간 분할 인에이블 비트(428)가 셋팅되면, 시간 분할 링 버퍼 레지스터(401, 404)간의 조정은 시간 분할 필드(420, 422)를 통해 제어된다.
타이머 레지스터(412)는 시간 분할 타이밍 제어를 구현한다. 시간 분할 인에이블 비트(428)가 셋팅되면, 타이머 레지스터(412)는 각각의 링 버퍼 레지스터(402, 404)의 시간 분할 필드(420, 422) 부분으로 기입되는 단위의 값을 판독한다. 이 모드에서, 제 1 링 버퍼 메모리 영역(430) 등의 특정 버퍼 메모리 영역에 명령을 공급하는 명령 스트림(413)의 활성화 또는 회복은 타이머 카운트다운 필드(TC; 434)가 제 1 링 버퍼 레지스터(420) 등의 특정 링 버퍼의 시간 분할 레지스터(420, 422) 부분의 콘텐츠 값으로 초기화되도록 한다. 타이머 카운트다운 필드(434)는 링 버퍼 메모리 영역으로부터의 명령의 실행이 계속되는 동안 모든 시간 단위를 감소시킨다.
시간 분할 카운터(418)는 타이머 카운트다운 필드(434)의 모든 시간 단위를 감소시킨다. 단위 시간 카운터(416)는 모든 코어 클록 사이클을 모니터하고 카운트한다. 단위 시간 카운터(416)는 시간 분할 카운터(418)로 신호를 전송하여 단위 레지스터(414)에 의해 정의된 설정 단위 시간량에 기초하여 타이머 카운트다운 필드(434)를 감소시킨다.
일실시예에서, 다음의 2 조건이 존재하면, 그래픽 렌더링 엔진(411)은 조정및 변환 모듈(410)로부터 명령을 수신하여 링 버퍼 메모리 영역으로부터의 명령의 렌더링을 중지하고 또다른 링 버퍼 메모리 영역으로부터의 명령의 렌더링을 시작한다. 타이머 카운트다운 필드(434)가 제로가 되고 진행중인 명령은 다른 링 버퍼 메모리 영역에 존재하는 2개의 조건이 존재한다. 그후, 그래픽 렌더링 엔진(411)은 제 2 링 버퍼 메모리 영역(432) 등의 다른 링 버퍼 메모리 영역을 실행하도록 변환하고, 타이머 카운트다운 필드(434)가 제 2 링 버퍼 레지스터(404)의 시간 분할 필드(422) 내의 콘텐츠로 재초기화되도록 한다. 변환은 다음의 명령 조정점에서 발생한다.
그러나, 제 1 링 버퍼 메모리 영역(430) 등의 다른 링 버퍼 메모리 영역 내에 진행중인 명령이 없으면, 타이머 카운트다운 필드(434)가 제로가 될 때, 현재의 링 버퍼 메모리 영역의 명령의 실행이 계속된다. 일실시예에서, 현재의 링 버퍼 메모리 영역의 명령의 실행은 다른 링 버퍼 레지스터가 명령의 존재를 전달할 때까지 무한적으로 계속된다. 일실시예에서, 제 1 링 버퍼 레지스터(402) 등의 링 버퍼 레지스터는 헤드 오프셋 필드(415)의 값이 테일 오프셋 값(417)과 다를 때 실행할 명령이 존재하는 것을 지시한다. 일실시예에서, 새로운 명령의 존재는 조정 및 변환 모듈(410)에 전달된다. 조정 및 변환 모듈은 시간 분할 필드(402, 422)에 특정된 값에 대한 현재의 링 버퍼 메모리 영역의 명령의 실행을 계속하고, 그후 새로운 명령을 실행하도록 변환한다.
액티브 콘텍스트 식별 레지스터는 조정 및 변환 모듈(410)을 통해 그래픽 렌더링 엔진(411)으로 액티브 링 버퍼 레지스터(도시하지 않음)의 콘텍스트 식별 레지스터 값을 전달한다.
몇개의 메카니즘은 그들 각각의 링 버퍼 메모리 영역에 저장된 진행중인 명령을 갖는 2개의 링 버퍼 레지스터 사이의 그래픽 렌더링 엔진(411)을 사용하기 위한 조정 프로세스를 인터럽트할 수 있다. 상술한 바와 같이, 제 3 링 버퍼 레지스터(406) 등의 높은 우선순위의 비시간 분할 링 버퍼는 조정 및 변환 모듈(410)에 타이머 카운트다운(434)을 일시 중지하고 현재의 액티브 시간 분할 링 버퍼 레지스터에 대한 명령을 렌더링한다. 이 일시 중지는 그래픽 렌더링 엔진(411)이 비시간 분할 링 버퍼와 관련된 현재의 명령을 렌더링하는 것을 완료할때까지 일시적인 것이다.
그래픽 애플리케이션 소프트웨어로부터의 명령 스트림(413)은 그래픽 렌더링 엔진(411)의 조정된 사용을 일시적으로 인터럽트하는 명령을 포함할 수 있다. 예를 들어, "로드 레지스터" 명령(423)은 그들 각각의 링 버퍼 메모리 영역(430, 432)에 저장된 진행중인 명령을 갖는 2개의 시간 분할 링 버퍼 레지스터(402, 422) 사이의 그래픽 렌더링 엔진(411)의 조종 사용을 인터럽트할 수 있다. 소프트웨어는 "로드 레지스터" 명령(423)을 사용하여 타이머 카운트다운 필드(434)를 클리어할 수 있고, 따라서, 진행중인 명령이 또다른 링 버퍼 메모리 영역에 존재하면, 액티브 링 버퍼 레지스터가 효율적으로 그 시간 분할 기간 중의 나머지를 포기하도록 한다. 예를 들어, "로드 레지스터" 명령(423)은 실행될 명령에 대한 시간이 링 버퍼 레지스터(402, 422)에 일치하는 절대 최소 시간 또는 사용의 특정 백분율을 초과하지 않는 것으로 예상될 때 사용될 수 있다. 일실시예에서, 제 1 스트림과 관련된 명령이 전체 시간 분할 기간을 차지하지 않으면, 조정 및 변환 모듈(410)은 진행중인 명령을 포함하는 또다른 링 버퍼 메모리 영역을 자동적으로 변환시킨다. 또한, 예를 들어, "로드 레지스터" 명령(423)은 극심한 시간 소비 명령 또는 비인터럽트 시퀀스의 명령 전에 사용되어 그래픽 렌더링 엔진(411)이 이 특정 시퀀스의 명령을 동작시키기 전에 제 2 애플리케이션에 대한 진행중인 명령이 처리되도록 할 수 있다.
서술한 바와 같이, 실행 준비된 명령을 갖는 다른 링 버퍼 메모리 영역(430, 432)이 없으면, 명령의 실행은 "로드 레지스터" 명령(423)을 계속 통과한다. 또다른 링 버퍼 메모리 영역(430, 432)이 실행할 명령을 가지면, 다른 링 버퍼의 명령 실행후에, 그래픽 렌더링 엔진(411)은 타이머 카운트다운(434)을 통해 기다리지 않고 본래의 링 버퍼의 명령으로 즉시 다시 변환된다.
명령 스트림(413)은 또한 "이벤트 대기" 명령(425)을 포함할 수 있다. "이벤트 대기" 명령(425)은 소정의 조건이 존재하거나 이벤트가 발생할 때까지 이 특정 명령 스트림(413)으로부터 명령의 실행을 중지하는 데 사용될 수 있다. "이벤트 대기" 명령(425)의 실행이 중지를 발생시키면, 다른 시간 분할 링 버퍼 레지스터(402, 404)는 중지된 링 버퍼의 시간 분할 기간 중의 나머지가 만료되기 전이라도 그 관련된 명령을 그래픽 렌더링 엔진이 처리하도록 허용한다. 예를 들어, "이벤트 대기" 명령(425)은 비디오 캡쳐 이벤트를 대기하는 데 사용될 수 있다. 디스플레이 장치는 디스플레이 스크린 상의 상부 수직 위치로부터 디스플레이 스크린 상의 하부 수직 위치로 갈때 이미지를 디스플레이하기 위하여 이들 명령을 사용해야 한다. 따라서, 그래픽 렌더링 엔진(411)은 디스플레이 스크린 상의 완전한 이미지에 대한 모든 명령을 렌더링하였고 천이 기간(transition period)이 상부 수직 위치로부터 하부 수직 위치로 만료할 때까지 디스플레이 장치에 대한 임의의 더 많은 명령을 렌더링할 수 없다. 그래픽 장치(400)가 발생되는 이벤트를 대기하는 동안, "이벤트 대기" 명령(425)은 그래픽 렌더링 엔진(411)이 현재의 디스플레이 장치에 대하여 발생하는 비동기 이벤트를 대기하는 동안 다른 디스플레이 장치와 관련된 또다른 시간 분할 링 버퍼 메모리 영역의 처리를 다시 인에이블하도록 허용한다. 비동기 이벤트는 비디오 캡쳐 이벤트 등과 같이 규칙적인 간격 또는 동등한 시간에 발생하지 않는 이벤트이다. 일실시예에서, 비동기 이벤트는 명령 스트림 실행에 관계없는 간격으로 또는 랜덤하게 발생한다. 예를 들어, 디스플레이 장치의 수직 블랭크 이벤트, 비동기 이벤트는 실제적으로 실세계 시간에서 규칙적인 간격(즉, 60 Hz)으로 발생하지만, 명령 스트림(413) 실행과 관련된 불규칙적인 서비스 시간에 비동기이다.
도 5 및 6은 단일 그래픽 렌더링 엔진을 사용하여 다수의 디스플레이 장치 상에 다수의 이미지를 렌더링하는 일실시예의 프로세스의 흐름도이다. 명령 스트림이 하나 이상의 그래픽 애플리케이션으로부터 명령 전송기로 명령을 운반할 때 명령 스트림이 프로세스를 시작한다.
블록(505)에서, 링 버퍼 레지스터에 의해 정의된 제 1 링 버퍼 레지스터 영역은 다수의 그래픽 애플리케이션 프로그램으로부터 또는 단일 그래픽 애플리케이션 프로그램을 통해 명령을 수신한다. 제 1 링 버퍼 레지스터의 위치와 사이즈는제 1 링 버퍼 레지스터에 포함된 프로그램가능 콘텐츠에 의해 정의될 수 있다. 명령 전송기는 하나 이상의 링 버퍼 메모리 영역 또는 유사한 메모리 영역을 포함할 수 있다. 명령 전송기는 하나 이상의 버퍼 레지스터 또는 유사한 장치를 포함할 수 있다.
블록(510)에서, 드라이버는 제 1 링 버퍼 메모리 영역 내의 이미지를 표시하는 명령을 저장한다. 일실시예에서, 대응하는 링 버퍼 레지스터 내의 테일 오프셋 필드는 제 1 링 버퍼 메모리 영역 내에 포함된 이들의 진행중인 명령의 존재를 지시하도록 드라이버에 의해 변경된다. 제 1 링 버퍼 레지스터는 그래픽 렌더링 엔진과 조정 및 변환 모듈에 실행될 명령이 존재함을 전달한다.
블록(515)에서, 명령 전송기는 DMA 엔진을 사용하여 그래픽 렌더링 엔진을 위한 제 1 링 버퍼 메모리로부터 명령을 페치한다. 조정 및 변환 모듈은 그래픽 렌더링 엔진이 메모리로부터의 명령을 처리함에 따라 제 1 링 버퍼 메모리를 셋팅한다.
블록(520)에서, 그래픽 콘텍스트 매니저는 제 1 링 버퍼 레지스터와 관련된 현재의 렌더링 콘텍스트를 셋팅한다.
블록(525)에서, 일실시예에서, 그래픽 렌더링 엔진에 의해 처리되는 제 1 (현재) 이미지는 다음에 처리될 제 2 (다음) 이미지와 다른 렌더링 콘텍스트를 가지며, 다음과 같은 동작이 일어난다. 그래픽 콘텍스트 매니저는 그래픽 렌더링 엔진에 제 1 이미지와 관련된 렌더링 콘텍스트를 저장하고 제 2 이미지와 관련된 콘텍스트를 복원한다. 그래픽 콘텍스트 매니저는 설정 메모리 위치 등의 제 2 메모리영역 내의 특정 그래픽 애플리케이션으로부터 이미지와 관련된 렌더링 콘텍스트를 표시하는 상태 변수 값을 저장하고 복원한다. 제 2 메모리 영역은 콘텍스트 식별 레지스터 등의 제 2 레지스터에 포함된 프로그램가능 콘텐츠에 의해 정의될 수 있다.
블록(530)에서, 그래픽 렌더링 엔진은 제 1 링 버퍼 메모리 영역 등의 제 1 디스플레이 장치와 관련된 링 버퍼 메모리 영역으로부터의 명령을 실행하고 제 1 이미지 디스플레이 메모리 영역을 적절히 변경한다. 시간 할당기에 기초하여, 그래픽 렌더링 엔진은 제 2 디스플레이 장치와 관련된 제 2 링 버퍼 메모리 영역으로부터의 명령 실행을 시작할 수 있다. 일실시예에서, 그래픽 렌더링 엔진은 제 1 링 버퍼 메모리 영역을 공급하는 동일한 명령 스트림내에 포함된 제 2 그래픽 애플리케이션으로부터의 명령을 실행하기 시작할 수 있다. 따라서, 그래픽 렌더링 엔진은 변환에 의해 제 1 독립 이미지와 관련된 명령과 제 2 독립 이미지와 관련된 명령의 처리 사이를 교호할 수 있다. 그래픽 렌더링 엔진은 동일한 명령 스트림 내의 상이한 2개의 그래픽 애플리케이션으로부터의 명령의 처리 또는 상이한 링 버퍼 메모리 영역으로부터의 명령의 처리 사이에서 변환될 수 있다. 그래픽 렌더링 엔진은 제 2 독립 이미지와 관련된 명령을 처리하기 시작하기 전에 제 1 독립 이미지와 관련된 모든 명령을 완전히 처리하는 것을 기다릴 필요가 없다.
블록(535)에서, 시간 할당기는 제 1 독립 이미지와 제 2 독립 이미지와 관련된 명령들 사이의 그래픽 렌더링 엔진의 균형잡힌 사용을 로드할 수 있다. 일실시예에서, 시간 할당기는 둘 이상의 독립 이미지와 관련된 명령들 사이의 그래픽 렌더링 엔진의 균형잡힌 사용을 로드할 수 있다. 일실시예에서, 시간 할당기는 각각의 이미지에 대하여 결정된 백분율 및 각각의 이미지에 대해 결정된 그래픽 렌더링 이미지의 최소 사용 시간에 기초하여 그래픽 렌더링 엔진 사용의 균형을 맞춘다. 시간 할당기는 또한 그래픽 렌더링 엔진의 즉시 사용을 요구하는 높은 우선순위의 이미지와 그래픽 렌더링 엔진의 절대 최소 사용 시간 사용 및 사용의 백분율을 공유하는 이미지 사이의 그래픽 렌더링 엔진 사용의 균형을 맞출 수 있다.
블록(540)에서, 시간 할당기는 상이한 코어 주파수에서 동작하는 장치와 호환가능한 타이밍 회로의 시간 단위량을 설정할 수 있다. 이들 블록은 임의로 설정된 순차적인 순서의 수행을 나타내는 것이 아니다. 예를 들어, 블록(540)은 블록(505) 전에 발생할 수 있다.
블록(545)에서, 시간 할당기는 그래픽 장치 드라이버로부터의 소프트웨어 명령을 통해 그래픽 렌더링 엔진을 사용하도록 제 1 이미지와 관련된 명령에 지정된 시간을 제 2 이미지와 관련된 명령에 양보할 수 있다. 블록(550)에서, 시간 할당기는 그래픽 애플리케이션으로부터의 소프트웨어 명령을 통해 제 1 이미지에 대하여 발생되는 이미지 렌더링 이벤트를 대기하는 동안 그래픽 렌더링 엔진이 제 2 이미지와 관련된 명령을 처리하도록 허용한다.
블록(555)에서, 그래픽 장치는 하나 이상의 디스플레이 장치 상에 이미지를 동시에 디스플레이한다.
블록(570)에서, 그래픽 장치는 블록(505)에서 시작된 이 프로세스를 계속 수행한다.

Claims (32)

  1. 다수의 디스플레이 장치 상에 디스플레이하기 위한 둘 이상의 독립 이미지를 동시에 렌더링하는 그래픽 렌더링 엔진; 및
    둘 이상의 독립 이미지 사이의 그래픽 렌더링 엔진의 사용을 조정하는 시간 할당기를 포함하는 장치.
  2. 제 1 항에 있어서, 상기 시간 할당기는 제 1 레지스터를 포함하는 복수의 레지스터를 포함하고, 상기 제 1 레지스터는 복수의 필드를 구비하고, 상기 복수의 필드는 상기 그래픽 렌더링 엔진을 사용하기 위한 조정 프로세스에 상기 제 1 레지스터가 참여하는지를 판정하기 위한 제 1 필드와 제 1 명령 스트림으로부터의 명령을 포함하는 메모리 위치를 지시하는 제 2 필드를 포함하는 장치.
  3. 제 2 항에 있어서, 상기 시간 할당기는,
    상기 그래픽 렌더링 엔진을 사용할 프로그램가능한 경과 기간을 설정하는 제 1 모듈을 더 포함하는 장치.
  4. 제 3 항에 있어서, 상기 시간 할당기는,
    상기 제 1 레지스터가 프로그램가능한 경과 기간동안 그래픽 렌더링 엔진을 사용한 후 제 2 레지스터가 상기 그래픽 렌더링 엔진을 사용하도록 허용되어야 하는지를 검사하기 위한 신호를 발생시키는 제 1 회로를 더 포함하는 장치.
  5. 제 2 항에 있어서, 상기 시간 할당기는 그래픽 렌더링 엔진이 제 1 독립 이미지와 관련된 명령을 처리하도록 지시하는 제 1 모듈을 더 포함하고, 상기 명령은 제 1 메모리 영역에 저장되고, 상기 제 1 메모리 영역은 복수의 필드 내에 포함된 정보에 의해 정의된 어드레스를 갖는 장치.
  6. 제 5 항에 있어서, 상기 제 1 메모리 영역은 시작 및 끝을 가지며, 상기 제 1 메모리 영역은 상기 제 1 메모리 영역의 끝에서 상기 제 1 메모리 영역의 시작으로 명령을 랩-어라운드(wrap-around)할 수 있는 장치.
  7. 제 5 항에 있어서, 상기 제 1 모듈은,
    상기 복수의 레지스터 중의 어느 레지스터가 상기 그래픽 렌더링 엔진에 의해 현재 서비스되고 있는지를 트랙킹하는 제 2 회로; 및
    조정 프로세스에 참여하지 않는 제 2 레지스터와 조정 프로세스에 참여하는 제 1 및 제 3 레지스터 사이의 그래픽 렌더링 엔진의 사용을 관리하는 제 3 회로
    를 포함하는 장치.
  8. 제 3 항에 있어서, 상기 제 1 모듈은,
    특정 레지스터가 상기 그래픽 렌더링 엔진을 사용하는 경과 기간을 트랙킹하는 제 1 회로; 및
    프로그램가능 경과 기간을 등가 클록 사이클 수로 변환하는 제 2 회로
    를 포함하는 장치.
  9. 제 1 항에 있어서, 상기 시간 할당기는,
    그래픽 애플리케이션으로부터의 그래픽 장치 명령이 상기 그래픽 렌더링 엔진으로 하여금 제 1 독립 이미지에 대하여 발생하는 비동기 이벤트를 대기하는 동안 제 2 독립 이미지와 관련된 명령을 처리하도록 지시하는 것을 허용하는 제 1 회로를 포함하는 장치.
  10. 제 1 항에 있어서, 상기 시간 할당기는,
    그래픽 애플리케이션으로부터의 소프트웨어 명령을 구현하는 제 1 회로를 포함하고, 상기 소프트웨어 명령은 제 2 독립 이미지와 관련된 명령에 할당된 시간을 제 1 독립 이미지와 관련된 명령에 양보하는 장치.
  11. 제 1 항에 있어서, 제 1 디스플레이 장치와 제 2 디스플레이 장치를 더 포함하는 장치.
  12. 제 1 항에 있어서, 메모리로부터 상기 그래픽 렌더링 엔진으로 정보를 복원하는 그래픽 콘텍스트 매니저를 더 포함하고, 상기 정보는 상기 그래픽 렌더링 엔진에 의해 렌더링될 제 1 독립 이미지와 관련된 렌더링 콘텍스트를 기술하고, 상기 제 1 독립 이미지는 둘 이상의 독립 이미지 내에 포함된 장치.
  13. 제 1 항에 있어서,
    둘 이상의 독립 이미지 내에 포함된 하나 이상의 독립 이미지에 대한 명령을 수신하는 제 1 메모리 영역; 및
    상기 둘 이상의 독립 이미지 내에 포함된 하나 이상의 독립 이미지에 대한 명령을 수신하는 제 2 메모리 영역
    을 더 포함하는 장치.
  14. 제 1 항에 있어서, 둘 이상의 독립 이미지에 대한 명령을 상기 그래픽 렌더링 엔진에 전달하는 하나 이상의 명령 전송기를 더 포함하고, 상기 하나 이상의 명령 전송기는 제 1 명령 전송기를 포함하는 장치.
  15. 제 14 항에 있어서, 각각의 명령 전송기는 특정 디스플레이 장치와 관련된 장치.
  16. 제 14 항에 있어서, 상기 제 1 명령 전송기는,
    명령 메모리 영역;
    상기 명령 메모리 영역에 시작과 끝을 정의하는 제 1 레지스터; 및
    상기 명령 메모리 영역으로부터 상기 명령을 페치하여 상기 그래픽 렌더링 엔진으로 전달하는 메모리 액세스 엔진
    을 포함하는 장치.
  17. 제 14 항에 있어서, 상기 명령 전송기는,
    명령 스트림으로부터 호출될 수 있는 독립 명령 시퀀스를 저장하는 제 3 메모리 영역을 더 포함하는 장치.
  18. 제 16 항에 있어서, 상기 제 1 레지스터는, 상기 명령 메모리 영역에서 이용가능한 자유 공간의 양을 자동적으로 보고하기 위하여, 상기 그래픽 장치가 제 2 필드 내에 포함된 콘텐츠를 주기적으로 스누프된(snooped) 메모리 위치에 기입하도록 명령하는 제 1 필드를 포함하는 장치.
  19. 제 1 명령 스트림과 관련된 명령을 실행하기 위해 단일 그래픽 렌더링 엔진을 사용하는 단계;
    상기 단일 그래픽 렌더링 엔진을 사용하여 제 1 명령 스트림과 관련된 명령을 통해 제 1 독립 이미지를, 그리고 제 2 명령 스트림과 관련된 명령을 통해 제 2 독립 이미지를 동시에 렌더링하는 단계; 및
    상기 제 1 명령 스트림과 관련된 명령과 제 2 명령 스트림과 관련된 명령 사이에서 상기 단일 그래픽 렌더링 엔진의 사용을 조정하는 단계
    를 포함하는 방법.
  20. 제 19 항에 있어서,
    타이밍 메카니즘을 사용하여, 상기 제 1 명령 스트림과 관련된 명령과 상기 제 2 명령 스트림과 관련된 명령 사이에서 상기 단일 그래픽 렌더링 엔진의 동시 사용을 할당하는 단계를 더 포함하는 방법.
  21. 제 19 항에 있어서,
    제 1 메모리 어드레스로부터의 정보를 상기 그래픽 렌더링 엔진에 복원하는 단계 - 상기 정보는 상기 단일 그래픽 렌더링 엔진에 의해 렌더링될 제 1 독립 이미지와 관련된 제 1 렌더링 콘텍스트를 기술함 -; 및
    상기 제 2 독립 이미지와 관련된 제 2 렌더링 콘텍스트를 기술하는 정보를 제 2 메모리 어드레스에 저장하는 단계 - 상기 제 2 독립 이미지는 상기 단일 그래픽 렌더링 엔진에 의해 렌더링됨 -
    를 더 포함하는 방법.
  22. 제 19 항에 있어서,
    다수의 디스플레이 장치 상에 하나 이상의 이미지를 디스플레이하는 단계를 더 포함하는 방법.
  23. 그래픽 렌더링 엔진으로 다수의 디스플레이 장치 상에 디스플레이하기 위한 독립 이미지를 동시에 렌더링하는 단계;
    렌더링될 각각의 독립 이미지 사이에 상기 그래픽 렌더링 엔진의 시간 사용을 할당하는 단계; 및
    제 1 독립 이미지와 관련된 제 1 렌더링 콘텍스트를 메모리 영역에 저장하고 상기 메모리 영역으로부터 복원하는 단계
    를 포함하는 방법.
  24. 제 23 항에 있어서,
    제 1 독립 이미지와 관련된 제 1 레지스터가 그래픽 렌더링 엔진을 사용하기 위한 조정 프로세스에 참여하는지를 판정하는 단계를 더 포함하는 방법.
  25. 제 24 항에 있어서,
    그래픽 애플리케이션으로부터 소프트웨어 명령을 통해 그래픽 렌더링 엔진이 제 1 이미지에 대하여 발생하는 비동기 이벤트를 대기하는 동안 제 2 이미지와 관련된 명령을 처리하도록 허용하는 단계를 더 포함하는 방법.
  26. 제 24 항에 있어서,
    그래픽 애플리케이션으로부터의 소프트웨어 명령을 통해 상기 그래픽 렌더링 엔진을 사용하도록 제 2 독립 이미지와 관련된 명령에 할당된 시간을 제 1 독립 이미지와 관련된 명령에 양보하는 단계를 더 포함하는 방법.
  27. 제 23 항에 있어서,
    제 1 레지스터에 포함된 프로그램가능 콘텐츠에 의해 메모리 영역을 정의하는 단계를 더 포함하고, 상기 메모리 영역은 제 1 명령 스트림과 관련된 명령을 저장하도록 제공되는 방법.
  28. 제 23 항에 있어서,
    제 1 코어 주파수에서 동작하는 제 1 장치와 호환가능하고 제 2 코어 주파수에서 동작하는 제 2 장치와 호환가능한 타이밍 회로의 시간 단위량(time unit quanta)을 설정하는 단계를 더 포함하고, 상기 제 1 코어 주파수는 상기 제 2 코어 주파수와 다른 방법.
  29. 제 23 항에 있어서,
    제 1 주파수에서 동작하는 제 1 장치와 호환가능하고 제 2 주파수에서 동작하는 제 1 장치와 호환가능한 타이밍 회로의 시간 단위량을 설정하는 단계를 더 포함하는 방법.
  30. 중앙 처리 장치;
    그래픽 장치 - 상기 중앙 처리 장치는 상기 그래픽 장치에 결합되고, 상기그래픽 장치는 다수의 디스플레이 장치 상에 디스플레이하기 위한 둘 이상의 독립 이미지를 동시에 렌더링하는 그래픽 렌더링 엔진을 포함함 -; 및
    둘 이상의 독립 이미지 사이에서 상기 그래픽 렌더링 엔진의 사용을 조정하는 시간 할당기
    를 포함하는 시스템.
  31. 제 30 항에 있어서, 상기 시간 할당기는 제 1 레지스터를 포함하는 복수의 레지스터를 포함하고,
    상기 제 1 레지스터는 복수의 필드를 포함하고, 상기 복수의 필드는 상기 그래픽 렌더링 엔진을 사용하기 위한 조정 프로세스에 제 1 레지스터가 참여하는지를 판정하는 제 1 필드와 제 1 명령 스트림으로부터의 명령을 포함하는 메모리 위치를 지시하는 제 2 필드를 포함하는 시스템.
  32. 제 31 항에 있어서, 상기 시간 할당기는,
    상기 그래픽 렌더링 엔진을 사용할 프로그램가능 경과 기간을 설정하는 제 1 모듈을 더 포함하는 시스템.
KR1020037016960A 2001-06-29 2002-06-28 시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치,방법 및 시스템 KR100617998B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/895,529 2001-06-29
US09/895,529 US6885374B2 (en) 2001-06-29 2001-06-29 Apparatus, method and system with a graphics-rendering engine having a time allocator
PCT/US2002/020781 WO2003003313A2 (en) 2001-06-29 2002-06-28 Apparatus, method and system with a graphics-rendering engine having a time allocator

Publications (2)

Publication Number Publication Date
KR20040015757A true KR20040015757A (ko) 2004-02-19
KR100617998B1 KR100617998B1 (ko) 2006-09-12

Family

ID=25404642

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037016960A KR100617998B1 (ko) 2001-06-29 2002-06-28 시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치,방법 및 시스템

Country Status (9)

Country Link
US (2) US6885374B2 (ko)
EP (1) EP1399893A2 (ko)
JP (1) JP4383853B2 (ko)
KR (1) KR100617998B1 (ko)
CN (1) CN100336075C (ko)
AU (1) AU2002322363A1 (ko)
HK (1) HK1066619A1 (ko)
TW (1) TWI242139B (ko)
WO (1) WO2003003313A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101108078B1 (ko) * 2010-01-22 2012-01-31 주식회사 에이팩 멀티 유저 컴퓨터의 망 전환 시스템
US9865075B2 (en) 2013-08-12 2018-01-09 Samsung Electronics Co., Ltd. Graphics processing apparatus and graphics processing method
KR20180095646A (ko) * 2016-01-15 2018-08-27 구글 엘엘씨 클라이언트 측 활동 모니터링

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451457B2 (en) * 2002-04-15 2008-11-11 Microsoft Corporation Facilitating interaction between video renderers and graphics device drivers
US7219352B2 (en) * 2002-04-15 2007-05-15 Microsoft Corporation Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays
JP2004171411A (ja) * 2002-11-21 2004-06-17 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置及びバッファメモリの管理方法
US7643675B2 (en) 2003-08-01 2010-01-05 Microsoft Corporation Strategies for processing image information using a color information data structure
US7158668B2 (en) * 2003-08-01 2007-01-02 Microsoft Corporation Image processing using linear light values and other image processing improvements
US7436535B2 (en) * 2003-10-24 2008-10-14 Microsoft Corporation Real-time inking
US8060743B2 (en) * 2003-11-14 2011-11-15 Certicom Corp. Cryptographic method and apparatus
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8698817B2 (en) 2004-11-15 2014-04-15 Nvidia Corporation Video processor having scalar and vector components
US7586492B2 (en) * 2004-12-20 2009-09-08 Nvidia Corporation Real-time display post-processing using programmable hardware
US20060277126A1 (en) * 2005-06-06 2006-12-07 Intel Corporation Ring credit management
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US8817035B2 (en) * 2005-12-21 2014-08-26 Nvidia Corporation Texture pipeline context switch
US8626874B2 (en) * 2006-07-26 2014-01-07 Richard Kaplan Four dimensional (4D) information distribution system and method
JP2008293484A (ja) * 2007-04-27 2008-12-04 Panasonic Corp バッファメモリ共有装置
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
CN101483724B (zh) * 2008-01-11 2012-03-28 新奥特(北京)视频技术有限公司 一种无人值守的分布式多线程字幕渲染和播出方法
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
US10585344B1 (en) 2008-05-19 2020-03-10 Spatial Cam Llc Camera system with a plurality of image sensors
US20110098083A1 (en) * 2008-05-19 2011-04-28 Peter Lablans Large, Ultra-Thin And Ultra-Light Connectable Display For A Computing Device
US11119396B1 (en) 2008-05-19 2021-09-14 Spatial Cam Llc Camera system with a plurality of image sensors
US10896327B1 (en) 2013-03-15 2021-01-19 Spatial Cam Llc Device with a camera for locating hidden object
US9736368B2 (en) 2013-03-15 2017-08-15 Spatial Cam Llc Camera in a headframe for object tracking
US10354407B2 (en) 2013-03-15 2019-07-16 Spatial Cam Llc Camera for locating hidden objects
US8355042B2 (en) * 2008-10-16 2013-01-15 Spatial Cam Llc Controller in a camera for creating a panoramic image
US9171221B2 (en) 2010-07-18 2015-10-27 Spatial Cam Llc Camera to track an object
US8164655B2 (en) 2008-05-19 2012-04-24 Spatial Cam Llc Systems and methods for concurrently playing multiple images from a storage medium
US20100097444A1 (en) * 2008-10-16 2010-04-22 Peter Lablans Camera System for Creating an Image From a Plurality of Images
US20100023942A1 (en) * 2008-07-23 2010-01-28 Philip Sheu Accelerating virtual machine resume time using a pre-cached working set
US8416282B2 (en) * 2008-10-16 2013-04-09 Spatial Cam Llc Camera for creating a panoramic image
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
TWI533286B (zh) 2010-09-06 2016-05-11 元太科技工業股份有限公司 平面顯示裝置
CA2792895C (en) * 2011-10-18 2020-04-28 Research In Motion Limited Method of rendering a user interface
CA2792662C (en) 2011-10-18 2017-11-14 Research In Motion Limited Method of rendering a user interface
CN102520937B (zh) * 2011-11-29 2014-10-29 广东威创视讯科技股份有限公司 优化进程间图像渲染的方法
US9384711B2 (en) * 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
JP5977147B2 (ja) 2012-11-05 2016-08-24 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置および入力装置
WO2014131171A1 (en) * 2013-02-28 2014-09-04 Intel Corporation Context aware power management for graphics devices
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
GB2537910B (en) * 2015-04-30 2018-05-23 Displaylink Uk Ltd Managing display data
US9799094B1 (en) 2016-05-23 2017-10-24 Qualcomm Incorporated Per-instance preamble for graphics processing
US9799089B1 (en) 2016-05-23 2017-10-24 Qualcomm Incorporated Per-shader preamble for graphics processing
CN111359220B (zh) * 2020-03-04 2023-06-13 深圳市腾讯网域计算机网络有限公司 游戏广告生成方法、装置和计算机设备
TWI832061B (zh) * 2021-06-08 2024-02-11 宏正自動科技股份有限公司 影像控制裝置及影像控制方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0786839B2 (ja) * 1990-02-13 1995-09-20 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチタスク式データ処理システム
US5644407A (en) * 1990-12-20 1997-07-01 Canon Kabushiki Kaisha Image processing apparatus having a remote communication function
DE69230462T2 (de) * 1991-11-19 2000-08-03 Sun Microsystems Inc Arbitrierung des Multiprozessorzugriffs zu gemeinsamen Mitteln
FR2705804B1 (fr) * 1993-05-27 1995-08-11 Sgs Thomson Microelectronics Architecture de processeur multi-tâches.
US6396504B1 (en) 1994-04-29 2002-05-28 Sun Microsystems, Inc. Graphical image data reformatting method and apparatus
JPH10502181A (ja) * 1994-06-20 1998-02-24 ネオマジック・コーポレイション メモリインタフェースのないグラフィックスコントローラ集積回路
US5880737A (en) * 1995-08-04 1999-03-09 Microsoft Corporation Method and system for accessing texture data in environments with high latency in a graphics rendering system
US5740343A (en) * 1995-11-03 1998-04-14 3Dfx Interactive, Incorporated Texture compositing apparatus and method
US6311204B1 (en) * 1996-10-11 2001-10-30 C-Cube Semiconductor Ii Inc. Processing system with register-based process sharing
JP3763136B2 (ja) * 1996-12-27 2006-04-05 ソニー株式会社 描画方法および描画装置
US5940086A (en) * 1997-01-10 1999-08-17 Hewlett Packard Company System and method for dynamically allocating data among geometry accelerators in a computer graphics system
US5969726A (en) * 1997-05-30 1999-10-19 Hewlett-Packard Co. Caching and coherency control of multiple geometry accelerators in a computer graphics system
US6188381B1 (en) * 1997-09-08 2001-02-13 Sarnoff Corporation Modular parallel-pipelined vision system for real-time video processing
US6124868A (en) * 1998-03-24 2000-09-26 Ati Technologies, Inc. Method and apparatus for multiple co-processor utilization of a ring buffer
US6092124A (en) * 1998-04-17 2000-07-18 Nvidia Corporation Method and apparatus for accelerating the rendering of images
US6252610B1 (en) * 1998-05-29 2001-06-26 Silicon Graphics, Inc. Method and apparatus for efficiently switching state in a graphics pipeline
WO2000004527A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Apparatus and method of directing graphical data to a display device
US6252600B1 (en) * 1998-10-02 2001-06-26 International Business Machines Corporation Computer graphics system with dual FIFO interface
US6339427B1 (en) * 1998-12-15 2002-01-15 Ati International Srl Graphics display list handler and method
US6392655B1 (en) * 1999-05-07 2002-05-21 Microsoft Corporation Fine grain multi-pass for multiple texture rendering
US6289421B1 (en) * 1999-05-21 2001-09-11 Lucent Technologies, Inc. Intelligent memory devices for transferring data between electronic devices
US6362828B1 (en) * 1999-06-24 2002-03-26 Microsoft Corporation Method and system for dynamic texture replication on a distributed memory graphics architecture
US6353439B1 (en) 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101108078B1 (ko) * 2010-01-22 2012-01-31 주식회사 에이팩 멀티 유저 컴퓨터의 망 전환 시스템
US9865075B2 (en) 2013-08-12 2018-01-09 Samsung Electronics Co., Ltd. Graphics processing apparatus and graphics processing method
KR20180095646A (ko) * 2016-01-15 2018-08-27 구글 엘엘씨 클라이언트 측 활동 모니터링

Also Published As

Publication number Publication date
US6885374B2 (en) 2005-04-26
WO2003003313A3 (en) 2003-10-30
AU2002322363A1 (en) 2003-03-03
EP1399893A2 (en) 2004-03-24
WO2003003313A2 (en) 2003-01-09
CN1520579A (zh) 2004-08-11
KR100617998B1 (ko) 2006-09-12
JP4383853B2 (ja) 2009-12-16
US20030001847A1 (en) 2003-01-02
CN100336075C (zh) 2007-09-05
HK1066619A1 (en) 2005-04-22
US20050174354A1 (en) 2005-08-11
US7164427B2 (en) 2007-01-16
TWI242139B (en) 2005-10-21
JP2004531841A (ja) 2004-10-14

Similar Documents

Publication Publication Date Title
KR100617998B1 (ko) 시간 할당기를 갖는 그래픽 렌더링 엔진을 포함하는 장치,방법 및 시스템
KR100668002B1 (ko) 그래픽 문맥 관리자를 구비하는 그래픽스-렌더링 엔진을갖는 장치, 방법, 및 시스템
US10120187B2 (en) Sub-frame scanout for latency reduction in virtual reality applications
US5917505A (en) Method and apparatus for prefetching a next instruction using display list processing in a graphics processor
JP4925385B2 (ja) 機能拡張型メモリコントローラを備えるグラフィックス処理システム
CN109923519B (zh) 用于加速多核计算架构中的图形工作负荷的机制
US7038686B1 (en) Programmable graphics processor for multithreaded execution of programs
US6252600B1 (en) Computer graphics system with dual FIFO interface
US8941669B1 (en) Split push buffer rendering for scalability
US10769747B2 (en) Intermediate frame generation
US7760205B2 (en) Information processing apparatus for efficient image processing
WO2017052949A1 (en) Position only shader context submission through a render command streamer
US8368704B2 (en) Graphic processor and information processing device
US7793012B2 (en) Information processing unit, system and method, and processor
US7999814B2 (en) Information processing apparatus, graphics processor, control processor and information processing methods
GB2258069A (en) High speed computer graphics bus
CN110352403B (zh) 图形处理器寄存器重命名机制
JPH08292914A (ja) データ処理装置及びその方法

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