KR100668002B1 - 그래픽 문맥 관리자를 구비하는 그래픽스-렌더링 엔진을갖는 장치, 방법, 및 시스템 - Google Patents

그래픽 문맥 관리자를 구비하는 그래픽스-렌더링 엔진을갖는 장치, 방법, 및 시스템 Download PDF

Info

Publication number
KR100668002B1
KR100668002B1 KR1020037017044A KR20037017044A KR100668002B1 KR 100668002 B1 KR100668002 B1 KR 100668002B1 KR 1020037017044 A KR1020037017044 A KR 1020037017044A KR 20037017044 A KR20037017044 A KR 20037017044A KR 100668002 B1 KR100668002 B1 KR 100668002B1
Authority
KR
South Korea
Prior art keywords
graphics
rendering
context
instructions
memory
Prior art date
Application number
KR1020037017044A
Other languages
English (en)
Other versions
KR20040014588A (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 KR20040014588A publication Critical patent/KR20040014588A/ko
Application granted granted Critical
Publication of KR100668002B1 publication Critical patent/KR100668002B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation

Landscapes

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

Abstract

하나 이상의 표시 디바이스 상에 표시하기 위해 독립 화상들을 동시에 렌더링하는 방법, 장치, 및 시스템에 관한 것이다. 일 실시예에서, 그래픽스-렌더링 엔진은 다수의 표시 디바이스 상에 표시하기 위해 독립 화상들을 동시에 렌더링한다. 그래픽 문맥 관리자는 제1 독립 화상과 관련된 제1 렌더링 문맥을 기술하는 정보를 제1 메모리 영역에 저장하고, 제1 메모리 영역으로부터 복구한다. 그래픽 문맥 관리자는 제2 독립 화상과 관련된 제2 렌더링 문맥을 기술하는 정보를 제2 메모리 영역에 저장하고 제2 메모리 영역으로부터 복구한다.
표시 디바이스, 렌더링, 그래픽스-렌더링 엔진, 독립 화상, 그래픽 문맥 관리자, 렌더링 문맥, 메모리 영역

Description

그래픽 문맥 관리자를 구비하는 그래픽스-렌더링 엔진을 갖는 장치, 방법, 및 시스템{APPARATUS, METHOD AND SYSTEM WITH A GRAPHICS-RENDERING ENGINE HAVING A GRAPHICS CONTEXT MANAGER}
본 발명은 일반적으로 다수의 화상을 렌더링하는 것에 관한 것이다. 보다 구체적으로, 본 발명은 다수의 화상을 하나 이상의 표시 디바이스 상에 렌더링하는 것에 관한 것이다.
화상 렌더링은 고-레벨 객체-기반 기술(high-level object-based description)을 그래픽 화상으로 변환하여 임의의 표시 디바이스에 표시하는 것이다. 예를 들어, 화상 렌더링의 액션은, 3차원 객체의 수학적 모델 또는 화면이 비트맵 화상으로 변환하는 동안 발생한다. 화상 렌더링의 또 다른 예는 HTML 문서를 화상으로 변환하여 컴퓨터 모니터 상에 표시하는 것이다. 통상적으로, 그래픽스-렌더링 엔진으로 불리는 하드웨어 디바이스는 이러한 그래픽 처리 태스크를 가속한다.
인터넷 서핑시, 일반적으로 다수의 화상이 컴퓨터 모니터 상에 보여질 수 있다. 예를 들어, 웹페이지 및 그 웹페이지 위에 포개진(super imposed) 두 개의 배너 광고가 인터넷 서핑시 컴퓨터 모니터 상에 표시될 수 있다. 통상적으로, 그래 픽스-렌더링 엔진은 웹페이지 등의 제1 화상과 관련된 모든 명령어들을 렌더링한다. 제1 화상에 대한 명령어의 처리를 완료한 이후에, 그래픽스-렌더링 엔진은 배너 광고 중 하나 등의 제2 화상과 관련된 명령어의 처리를 개시한다. 그러나, 일반적으로, 그래픽스-렌더링 엔진은 제2 화상과 관련된 명령어의 처리를 개시하기 전에, 제1 화상과 관련된 명령어의 렌더링을 종료해야 한다. 따라서, 그래픽스-렌더링 엔진이 명령어를 처리하는 것이 그래픽스 애플리케이션 프로그램이 명령어를 생성하는 것보다 더 빠르다면, 그 때, 그래픽스-렌더링 엔진은 그 시간 주기 동안 휴지 상태(idle)로 남아 있다. 또한, 화상 명령어가 다음 명령어를 실행하기에 앞서, 실세계 이벤트(real world event)가 발생하도록 요구한다면, 그 때, 그래픽스-렌더링 엔진은 그 시간 주기 동안 휴지 상태로 남아 있다. 통상적으로, 그래픽스-렌더링 엔진은 명령어 스트림을 순차적으로 서비스한다. 따라서, 제1 명령어 스트림과 관련된 명령어는 그래픽스-렌더링 엔진이 제2 명령어 스트림과 관련된 명령어에 대한 처리를 개시하기 이전에 처리된다.
또 다른 예는 3차원 환경에서 두 개의 독립 화상을 렌더링하는 것이다. 단일 표시 화면은 3D 화상을 포함하는 제1 윈도우와, 2D 그래픽 사용자 인터페이스를 제어하여 표시된 화상을 포함하는 제2 윈도우를 표시한다. 상술한 바와 같이, 종래 기술에서는, 제1 윈도우에 있는 화상에 대한 명령어는 그래픽스-렌더링 엔진이 제2 윈도우에 있는 화상에 대한 명령어의 처리를 개시하기 이전에 처리되었다.
이전 기술에서는, 다수의 디바이스 상에 다수의 화상을 표시하였다. 통상적으로, 다수의 화상과 관련된 명령어를 처리하기 위해, 두 개 이상의 그래픽스-렌더 링 엔진이 존재한다. 각각의 그래픽스-렌더링 엔진은 단일 표시 디바이스를 서비스한다. 그러나, 실제로, 다수의 그래픽스-렌더링 엔진은 단일 그래픽스-렌더링 엔진에 비해, 보다 넓은 물리적 공간을 점유하고, 보다 많은 전력을 소모하고, 생산 비용도 더 많이 든다. 따라서, 그래픽스-렌더링 엔진의 수를 줄이는 것이 유리하다. 게다가, 두 개 이상의 그래픽스-렌더링 엔진으로, 동일한 표시 화면 상에 서로 다른 화상을 렌더링하도록 시도한 이전 기술은 저 중재 충돌 문제(grave arbitration conflicts)에 대면하게 되었다.
각각의 그래픽스-렌더링 엔진은 일군의 렌더링 상태 변수를 통해 제어된다. 이러한 상태 변수는 렌더링 문맥으로서 일괄적으로 공지된다. 렌더링 상태 변수는 객체 색상, 텍스쳐, 텍스쳐 애플리케이션 모드 등의 그래픽스 렌더링 처리의 특정 양상을 제어한다.
특정한 렌더링 문맥은 렌더링 중인 각각의 화상으로 존재한다. 이전 기술은 화상과 관련된 렌더링 문맥을 설정하기에 충분하지 않은 방법을 사용한다. 그래픽 드라이버 프로그램은 애플리케이션 프로그램으로부터 명령어를 수신하여, 그 명령어를 포함하고 화상과 널리 관련된 상태 변수 세팅을 포함하는 명령어 스트림을 그래픽스-렌더링 엔진에 전송한다. 그래픽스-렌더링 엔진은 또 다른 렌더링 명령어를 실행하기에 앞서, 이러한 렌더링 문맥 명령어를 처리한다. 그래픽스-렌더링 엔진이 제1 화상과 관련된 명령어의 처리와, 제2 화상과 관련된 명령어의 처리 사이를 스위칭할 때, 그래픽스 애플리케이션 프로그램은 렌더링 문맥 명령어를 전송할 필요가 있고, 그래픽스-렌더링 엔진은 이러한 렌더링 문맥 명령어를 처리할 필요가 있다.
이전에, 그래픽스-렌더링 엔진과 관련된 렌더링 문맥은 소프트웨어에서 생성된 명령어 스트림을 통해서만 수정되었고, 호스트 CPU로부터 직접적으로 액세스될 수 없었다. 커런트 렌더링 문맥 등의 제1 렌더링 문맥으로부터 새로운 렌더링 문맥 등의 제2 렌더링 문맥으로의 변경으로 인해, 제2 렌더링 문맥에 대한 상태 변수 세팅을 지정하기 위한 명령어를 생성할 애플리케이션 소프트웨어가 요구되었다. 제1 렌더링 문맥이 판독될 수 없는 것으로 주어지면, 임의의 후반부 지점(later point)에서 제1 렌더링 문맥을 복구하기 위해, 제1 렌더링 문맥의 섀도우 카피를 유지할 애플리케이션 소프트웨어가 요구되었다.
도 1은 다수의 표시 디바이스 상에 하나 이상의 화상을 표시하기 위해, 단일 그래픽스-렌더링 엔진을 사용하여 하나 이상의 화상을 렌더링하는 그래픽 디바이스에 대한 실시예의 블록도.
도 2는 명령어 전송에 대한 실시예와 그래픽 문맥 관리자에 대한 실시예를 갖는 중앙 처리 장치, 캐시, 메모리, 표시 디바이스, 및 그래픽 디바이스를 포함하는 컴퓨터 시스템에 대한 실시예의 블록도.
도 3은 링 버퍼 메모리 영역에 대한 실시예의 블록도.
도 4는 렌더링 중인 각각의 독립 화상들 간에 그래픽스-렌더링 엔진의 사용을 할당하는 시간 할당자에 대한 실시예의 블록도.
도 5 및 도 6은 단일 그래픽-렌더링 엔진을 사용하여, 다수의 표시 디바이스 상에 다수의 화상을 렌더링하는 처리에 대한 실시예의 순서도.
본 발명은 다양한 수정 및 대체 형태를 제시하는 한편, 그들의 특정 실시예는 도면에서 예를 통해 도시되며 여기 상세히 설명될 것이다. 본 발명은 개시된 특정 형태에 한정되지는 않는다는 것에 유의해야 하며, 본 발명은 본 발명의 진의와 범주 내에서 있는 모든 변형, 등가물, 및 대체물을 커버할 것이다.
다음 설명에서는, 본 발명의 완전한 이해를 제공하기 위해, 특정 명령, 명명된 컴포넌트들, 접속들 등의 예로서, 다수의 특정한 상세가 진술된다. 그러나, 당업자라면 이러한 특정한 상세 없이도 본 발명을 실시할 수 있을 것은 명백하다. 또한, 본 발명이 불필요하게 불명료해지는 것을 피하기 위해, 공지된 컴포넌트 또는 방법들은 자세히 설명되지 않고 블록도로 나타낸다. 따라서, 진술된 특정한 상세는 단지 대표적인 것이다. 특정한 상세는 본 발명의 진의 및 범주 내에서 변경될 수 있고 예상될 수 있다. 결합된 용어는 직접 또는 간접적으로 연결된 의미로서 정의된다.
일반적으로, 그래픽스-렌더링 엔진은 다수의 표시 디바이스 상에 표시하기 위한 독립적인 화상을 동시에 렌더링한다. 명령어 전송은 두 개 이상의 독립 화상에 대한 명령어를 그래픽스-렌더링 엔진에 전달한다. 시간 할당자는 렌더링 중인 각각의 독립 화상들 사이에서 그래픽스-렌더링 엔진의 동시 사용을 중재한다. 그래픽 문맥 관리자는 확정된 메모리 위치로부터의 제1 독립 화상과 관련된 렌더링 문맥을 그래픽스-렌더링 엔진에 복구한다.
도 1은 다수의 표시 디바이스 상에 하나 이상의 화상을 표시하기 위해, 그래픽스-렌더링 엔진을 사용하여 하나 이상의 화상을 렌더링하는 그래픽 디바이스에 대한 실시예의 블록도를 도시한다. 도 1을 참조하면, 그래픽 디바이스(100)는 그래픽스-렌더링 엔진(102), 하나 이상의 명령어 전송(104), 그래픽 문맥 관리자(106), 시간 할당자(108), 및 제1 표시 디바이스(110) 및 제2 표시 디바이스(112) 등의 하나 이상의 표시 디바이스를 포함한다. 실시예에 있어, 그래픽 디바이스(100)는 단일 그래픽스-렌더링 엔진(102)을 포함한다.
그래픽스-렌더링 엔진(102)은 단일 표시 디바이스 또는 다수의 표시 디바이스 중 하나에 표시될 독립 화상을 생성한다. 따라서, 예를 들어, 2 개의 독립 화상은 동일한 표시 디바이스에 표시될 수도 있고, 각각 개별 표시 디바이스에 표시될 수도 있다. 각각의 독립 화상에 대한 명령어는 개별 명령어 스트림(114)으로부터 오거나, 다수의 그래픽스 애플리케이션 프로그램으로부터 명령어를 포함하는 단일 명령어 스트림(114)으로부터 온다.
브라우저 애플리케이션을 통해 배너 광고와 함께 웹 페이지를 표시하거나, 2 차원 화상과 관련된 제1 명령어 스트림을 순차적으로 렌더링하고, 그 다음 3차원 화상과 관련된 제2 명령어 스트림을 렌더링하는 종래 기술에 비해, 각각의 독립 화상은 동시에 렌더링될 수 있다. 일반적으로, 종래 기술은 배너 광고 등의 제1 윈도우에 포함된 제1 화상과 관련된 화상 명령어를 완벽하게 렌더링하고, 그 다음 웹 페이지 등의 제2 윈도우에 포함된 제2 명령어에 대한 명령어를 완벽하게 렌더링한다. 통상적으로, 종래 기술에 따른 그래픽스-렌더링 엔진은 각각의 독립 화상에 대한 명령어에 대해 동시에 동작하지 않는다.
시간 할당자(108)는 렌더링 중인 각각의 독립 화상들 사이에서 그래픽스-렌더링 엔진(102)의 사용을 중재한다. 그래픽 문맥 관리자(106)는 메모리 디바이스(도시되지 않음)에서 렌더링 중인 각각의 독립 화상과 관련된 문맥을 저장한다. 프로세서에서 실행중이거나 프로세서에서 실행중인 브라우저에서 실행중인 다양한 그래픽스의 애플리케이션은 화상 렌더링 명령어를 명령어 스트림(114)에 삽입한다. 명령어 전송(104)은 처리를 위해, 명령어 스트림(1114)으로부터의 명령어를 그래픽-렌더링 엔진(102)에 전달한다.
그래픽스-렌더링 엔진(102)의 효율적인 사용을 위해, 그래픽-렌더링 엔진(102)은 그래픽 문맥 관리자(106), 시간 할당자(108), 및 하나 이상의 명령어 전송(104)과 함께 작동한다. 명령어 스트림(114)에 명령어를 공급하는 각각의 그래픽스 애플리케이션은 화상을 생성하고, 서로 다른 속도의 레이트에서 동작할 것이다. 예를 들어, 스트리밍 라이브 비디오 애플리케이션은 보통 워드 처리 애플리케이션보다 훨씬 더 빠른 화상 생성 레이트에서 동작한다. 그래픽스-렌더링 엔진(102)이 휴지 상태로 남아있는 시간을 최소화하기 위해, 그래픽스-렌더링 엔진(102)은 2개 이상의 화상과 관련된 명령어를 동시에 렌더링할 수 있다. 또한, 이전 기술에서는, 만일 제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(ring buffer direct memory access engine; 212), 그래픽스-렌더링 엔진(214), 및 CID(context identification registers; 222, 224)를 포함한다. 다수의 링 버퍼 메모리 영역(208, 210), 다수의 확정 메모리 위치(216, 218, 220), 및 다수의 표시 디바이스(228, 230)는 그래픽 디바이스(200)와 관련된다. 일 실시예에서, 명령어 전송은 다수의 링 버퍼 레지스터(204, 206), 다수의 링 버퍼 메모리 영역(208, 210), 및 직접 메모리 액세스 엔진(212)을 포함한다. 일 실시예에서, 그래픽 문맥 관리자는 CID(context identification registers; 222, 224), 능동 CID(active context identification register; 226), 및 다수의 확정 메모리 위치(216, 218, 220)를 포함한다.
도 3은 링 버퍼 메모리 영역에 대한 실시예의 블록도를 도시한다. 상술한 바와 같이, 명령어 전송에 대한 실시예는 하나 이상의 링 버퍼 레지스터(310)와 하나 이상의 링 버퍼 메모리 영역(300)을 포함하며, 소프트웨어 생성 명령어는 이들을 통해 그래픽스-렌더링 엔진(도시되지 않음)을 통과할 수 있다. 링 버퍼 메모리 영역(300)은 그래픽스 애플리케이션(도시되지 않음)으로부터 실제 화상 렌더링 명령어를 유지한다. 링 버퍼 레지스터(310)는 링 버퍼 메모리 영역(300)의 시작부(start)와 길이를 정의하고, 2 개의 "오프셋", 헤드(304), 및 테일(302)을 링 버퍼 메모리 영역(300)에 포함한다. 테일 오프셋(302)은 실행되어야 하는 유효 명령어의 출현을 그래픽스-렌더링 엔진에게 알린다. 이러한 명령어들이 분석되고(parsed) 실행되는 그래픽스-렌더링 엔진에 의해 헤드 오프셋(304)이 증가된다. 명령어는 링 버퍼 메모리 영역(300)의 상부(top)에 이어, 링 버퍼 메모리 영역(300)의 하부(bottom)로부터 주위를 둘러쌀 수 있다. 일 실시예에서, 링 버퍼 메모리 영역(300)은 일괄 버퍼(batch buffer)(도시되지 않음)의 위치를 지시하는 명령어를 저장한다. 일괄 버퍼는 추가 명령어 저장 용량을 제공하기 위해 이산 메모리 영역에 저장될 수 있는 화상 렌더링 명령어의 개별 리스트를 포함한다. 일 실시예에서, 일괄 버퍼는 명령어 스트림으로부터 요청될 수 있는 독립적인 명령어의 시퀀스를 저장한다.
계속해서 도 2를 참조하면, 각각의 링 버퍼 레지스터(204, 206)는 레지스터 내에 다수의 필드를 가질 수 있다. 제1 링 버퍼 레지스터(204) 등의 링 버퍼 레지스터에 대한 실시예에 포함된 필드는 링 버퍼 유효 필드(V)(232), 시작부 어드레스 필드(S)(234), 버퍼 길이 필드(L)(235), 헤드 오프셋 필드(H)(236), 헤드 랩 카운트 필드(W)(233), 테일 오프셋 필드(T)(237), 자동 기록 헤드 인에이블 필드(R)(238), 시분할 필드(TS)(239) 및 그 외 유사한 필드들일 수 있다.
링 버퍼 유효 필드(232)는 이러한 특정 링 버퍼 레지스터가 그래픽스-렌더링 엔진(214)을 공유하기 위한 중재 처리에 포함되는지 여부를 제어한다. 시작부 어드레스 필드(234)는 링 버퍼 메모리 영역(208, 210)을 포함하는 연속 메모리 영역의 시작부를 지시한다. 링 버퍼 메모리 영역(208, 210)은 시스템 메모리(232) 또는 전용 메모리 중 하나에 위치한다. 버퍼 길이 필드(235)는 할당된 링 버퍼 메모리 영역(208, 210)의 바이트로 그 사이즈를 명기한다. 일 실시예에서, 링 버퍼 길이 필드(235)는 임의의 한 시간에 링 버퍼 메모리 영역(208, 210)에 제출될 수 있는 최대 데이터량을 정의한다. 일 실시예에서, 링 버퍼 메모리 영역(208, 210)은 화상 렌더링 명령어들 및 하나 이상의 일괄 버퍼(240)에 대한 지시자들(points)을 포함할 수 있어, 이로써, 명령어를 포함하는 사실상 무한한 메모리 영역을 만들 수 있다.
헤드 오프셋 필드(236)는 그래픽스-렌더링 엔진(214)이 분석할 다음 명령어의 시작부 어드레스(234)로부터 메모리 오프셋을 지시한다. 예를 들어, 헤드 오프셋(236)은 분석된 최종 명령어를 지나, 하나의 메모리 유닛을 지시할 수 있다. 그래픽스-렌더링 엔진(214)은 명령어들이 분석된 헤드 오프셋 필드(236)를 갱신한다. 헤드 오프셋(236)이 테일 오프셋(237)의 값에 도달하면, 즉, 오프셋이 동일하면, 그래픽스-렌더링 엔진(214)은 링 버퍼 메모리 영역(208, 210)이 비어 있는 것으로 간주하고, 그 상황이 계속되는 한, 그래픽스-렌더링 엔진(214)을 공유하기 위한 중재 처리로부터 대응 링 버퍼 레지스터(204, 206)를 제거한다. 따라서, 명령어는, 특정 표시 디바이스에 대한 명령어 스트림이 중앙 처리로부터 제거되어야 하는 것으로 존재한다. 또한, 보다 효율적인 흐름 제어 알고리즘을 위해, 링 버퍼 레지스터(204, 206)에는, 캐시가능한 메모리에 기입될 헤드 지시자 값 및 헤드 랩 카운트 필드(233)를 인에이블하는 자동 기록 헤드 인에이블 필드가 포함된다. 예를 들어, 흐름 제어 알고리즘은 헤드 오프셋(236)을 폴링하는 동안, 경과를 확인한다.
링 버퍼 메모리 영역(208, 210)은 메모리 영역의 종단부(end)에서 메모리 영역의 시작부(start)까지 명령어를 둘러쌀 수 있다. 헤드 랩 카운트 필드(233)는 매시간 그래픽스-렌더링 엔진(214)에 의해 증가되고, 헤드 오프셋(236)은 링 버퍼 메모리 영역(208, 210)의 시작부 어드레스(234)에 이어 주위를 둘러싼다. 일 실시예에서, 헤드 랩 카운트 필드(233)는 "기록 헤드(report head)" 처리에 기입된 DWord에 포함된다. 그래픽 디바이스(200)는 헤드 랩 카운트 필드(233)를 사용하여, 링 버퍼 메모리 영역(208, 210)이 마치 실제 물리적 버퍼의 사이즈보다 훨씬 더 큰 "가상" 길이를 갖는 것과 같은 명령어 분석 경과를 추적할 수 있다.
테일 오프셋 필드(237)는 시작부 어드레스(234)로부터 특정 거리를 오프셋하는, 링 버퍼 메모리 영역(208, 210) 내의 위치를 지시한다. 테일-오프셋 필드(237)는, 나중에 실행될 추가 화상 렌더링 명령어를 저장하기 위해 그래픽스 애플리케이션이 사용할 수 있는 명령어 데이터의 다음 메모리 유닛을 지시할 수도 있다. 예를 들어, 테일 오프셋 필드(237)는 실행을 위해 그래픽스-렌더링 엔진(214)에 제출된 최종 명령어를 지난 하나의 메모리 유닛(232)을 지시한다. 제출된 명령어는 상부에 이어, 링 버퍼 메모리 영역(208, 210)의 종단부로부터 주위를 둘러쌀 수 있고, 이러한 경우에, 기입된 테일 오프셋(237)은 이전 값보다 적을 것이다. 링 버퍼 메모리 영역(208, 210)이 "텅 빈(empty)" 상황은 "헤드 오프셋 필드(236)가 테일 오프셋 필드(237)와 동일하다"는 것으로 정의될 수 있다.
자동 기록 헤드 인에이블 필드(238)는, 그래픽스 애플리케이션 소프트웨어 또는 운영 소프트웨어가 CPU-스누프된 특정한 시스템 메모리 위치에 기입될 헤드 오프셋 필드(236) 및 헤드 랩 카운트 필드(233) 컨텐츠를 갖기 위해 주기적 방식(periodic basis)으로 요청하는 것을 허용한다. 자동-기록은, 프로그램된 양까지 헤드 오프셋 필드(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)와 관련될 수 있다.
다수의 명령어 전송은 각각의 명령어 전송에 서로 다른 우선 순위로 배당될 수도 있다. 예를 들어, 더 낮은 우선 순위 명령어 전송은 중단 가능한 배경 렌더링 태스크를 위해 사용될 수 있다. 마찬가지로, 더 높은 우선 순위의 명령어 전송은 비디오 프레임 포착 등의 비동기 이벤트를 서비스하기 위해 사용될 수 있다. 또한, 제1 표시(228) 등의 하나의 표시 디바이스를 서비스하기 위한 제1 명령어 전송의 할당과 제2 표시 디바이스(230) 등의 또 다른 표시 디바이스를 서비스하기 위한 제2 명령어 전송의 할당에 의해, 그래픽 디바이스(200)는 표시 디바이스 당 개별 명령어 스트림을 지원할 수 있다. 또한, 그래픽 디바이스(200)는 표시 디바이스 당 개별적으로 제어된 명령어 스트림을 지원할 수 있다.
상술한 바와 같이, 각각의 명령어 전송은 직접 메모리 액세스 엔진(212)을 포함할 수 있다. 직접 메모리 액세스 엔진(212)은 특정 명령어 전송으로부터 명령어를 인출하고, 이러한 명령어를 그래픽스-렌더링 엔진(214)에 전달한다.
그래픽스-렌더링 엔진(214)은 직접 메모리 액세스 엔진(212)을 통해 명령어 전송으로부터 화상 명령어를 판독하고 이러한 화상 명령어를 실행한다. 그래픽스-렌더링 엔진(214)은 링 버퍼 레지스터(204, 206) 내의 헤드 오프셋 필드(236)와 테일 오프셋 필드(237) 간의 차이를 통해, 링 버퍼 메모리 영역(207, 210) 내에서의 명령어의 출현을 검출한다. 그래픽스-렌더링 엔진(214)은 명령어가 포함하는 정보가 무엇인지, 그리고 명령어를 어떻게 실행하는지를 판정하기 위해, 명령어의 공통 "헤더" 필드를 해석하고 디코딩한다. 명령어의 이러한 해석 및 디코딩은 보통 분석(parsing)이라 칭해진다.
일 실시예에서, 그래픽스-렌더링 엔진(214)은 명령어 스트림(242)으로부터 특정한 명령어를 디코딩하여, 명령어가 포함하는 정보가 무엇인지를 찾는다(예컨대, 적용될 상태 변수 변경(246) 또는 렌더링될 프리미티브(248)). 그 다음, 그래픽스-렌더링 엔진(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)에 저장될 수 있다. 일 실시예에서, 명령어 스트림(242)에서 발견된 명령어 형태의 일부는 상태 변수 변경(246), 프리미티브(248), 및 세트 문맥 커맨드(250, 252)일 수 있다. 프리미티브 명령어(248)는 그리기 위한 형상과 그러한 형상의 위치 및 차원에 대해 그래픽스-렌더링 엔진(214)에게 지시한다. 상태 변수 변경 명령어(246)는 화상을 렌더링할 때, 하드웨어 그래픽 문맥 회로(244)에 저장된 상태 변수를 렌더링하는 세트의 커런트 값을 그래픽스-렌더링 엔진(214)이 수정하도록 지시한다. 일 실시예에서, 세트 문맥 커맨드(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)를 포함한다. 그래픽 문맥 관리자에 대한 실시예는 제1 표시 디바이스(228) 등의 동일 표시 디바이스 상에서의 다수의 화상 표시 뿐만 아니라, 다수의 표시 디바이스(228, 230) 상에서의 화상 표시를 지원하는 그래픽스 표시 제어기 회로(GDC; 270)와 대등하다.
하드웨어 그래픽 문맥 회로(244) 내의 다수의 하드웨어 상태 변수의 세팅은 그래픽 디바이스(200)에서 렌더링 등의 그래픽스 동작을 제어한다. 상태 변수는 글로벌 상태 변수와 문맥 상태 변수를 포함할 수 있다. 글로벌 상태 변수는 모든 문맥(예컨대, 국부 어드레스 맵핑 리소스 등)에 공통이고, 따라서, 임의의 특정한 렌더링 문맥의 범주 외의 것으로 간주된다. 그러나, 특정 그래픽스 애플리케이션과 관련된 각각의 렌더링 문맥은 문맥 상태 변수의 개별 세트를 포함한다. 일 실시예에서, 특정 그래픽스 애플리케이션과 관련된 이러한 렌더링 문맥은 능동 온-칩 메모리 상의 확정 메모리 위치 또는 시스템 메모리(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) 값을 추적한다(track). 제1 문맥 식별 레지스터(222) 등의 추적된 문맥 식별 레지스터는 특정한 확정 메모리 위치(216, 218, 220)가 그래픽스 렌더링 엔진에 의해 일반적으로 렌더링되는 화상과 관련되는 것임을 확정한다.
일 실시예에서, 각각의 문맥 식별 레지스터(222, 224)는 확정 메모리 위치 어드레스와 일군의 문맥 Q 비트(qualifier bits)를 포함한다. 문맥 Q 비트는 렌더링 문맥의 부분이 문맥 스위치에 보관/복구될 필요가 있는지 아닌지 여부를 제어한다. 일 실시예에서, 각각의 문맥 식별 레지스터(222, 224)는 "Texture Palette Save Disable" 문맥 Q 비트 및 "Texture Palette Restore Disable" 문맥 Q 비트 등의 문맥 Q 비트를 구현한다. 일 실시예에서, 3차원 화상은 현재의 텍스쳐 팔레트(Texture Palette)가 유지되도록(즉, 렌더링 문맥의 일부로서 보관 및 복구되도록) 요구할 수 있는 반면, 2차원 화상은 요구하지 않을 수 있는데, 상기와 같은 문맥 Q 비트는 2차원 및 3차원 화상 간의 문맥의 교환을 돕는다.
대응 문맥 식별 레지스터(222, 224)의 확정 메모리 위치 어드레스를 통해 확정 메모리 위치(216, 218, 220)를 참조한다. 확정 메모리 위치(216, 218, 220)의 실제 사이즈는 문맥 스위치 동안 저장/복구된 데이터 량이고, 이는 렌더링 문맥이 텍스쳐 팔레트를 포함하는지 여부에 의존한다. 일 실시예에서, 문맥 식별 레지스터(222, 224)는 2 개의 추가 레지스터를 포함하여, 메모리(232) 내의 각각의 확정 메모리 위치(216, 218, 220) 사이즈를 지정할 수 있다. 일 실시예에서, 특정 문맥 식별 레지스터(222, 224)는 대응 링 버퍼 메모리 영역(208, 210)에 저장되는 명령어 스트림(242)으로부터 "set_context" 명령어(250, 252)를 처리하는 동안, 능동 레지스터가 된다. 일 실시예에서, set_context 명령어(250, 252)는 문맥 식별 레지스터(222, 224)에 로드될 새로운 문맥 식별 값(국부 문맥 어드레스 + 팔레트 보관 디스에이블 비트)을 제공한다. 또한, set_context 명령어(250, 252)는 새로운 문맥의 복구를 임의로 억제하도록 사용된 복구 억제 비트를 포함한다. 일 실시예에서, 복구 억제 비트는 문맥 초기화동안 사용되어, 메모리(232)로부터 초기화되지 않은 문맥 데이터가 로드되는 것을 막는다.
능동 문맥 식별 레지스터(226)는 제1 링 버퍼 레지스터(204) 등의 능동 링 버퍼 레지스터의 문맥 식별 값을 포함한다. set_context 명령어(250, 252)에 대한 실행의 일부로써, 능동 문맥 식별 레지스터(226)로부터의 확정 메모리 위치 어드레스 필드와 set_context 명령어가 비교된다. 그들이 다르거나, 능동 문맥 식별 레지스터(226)가 초기화되지 않는다면, 문맥 스위치가 동작한다.
일 실시예에서, 문맥 스위치 동작 동안, 복구 억제 명령어 필드가 설정되지 않는다면, 문맥 복구 동작이 실행될 수도 있다. 여기서, 제1 확정 메모리 위치(216) 등의 확정 메모리 위치에 대한 어드레스 값은 능동 문맥 식별 레지스터(226)를 로드하는데 사용된다. 명령어의 문맥 Q 필드는 렌더링 문맥의 부분들에 대한 복구를 조절할 수도 있음에 주목한다. 예를 들어, 텍스쳐 팔레트는 복구될 수도 있고 복구되지 않을 수도 있다.
HW GFX CXT(244)는 세트 문맥 명령어(250, 252)로부터의 값을 능동 문맥 식별 레지스터에 로딩시킬 뿐만 아니라, 적절한 확정 메모리 위치로부터 새로운 문맥을 로딩시킨다. 이러한 점에서, 대응 링 버퍼 레지스터(204, 206)와 링 버퍼 메모리 영역(208, 210)은 능동 문맥을 새로운 확정 메모리 위치(216, 218, 220)로 스위칭한다.
이전에 설명한 바와 같이, 각각의 그래픽스 애플리케이션은 다른 속도 레이트로 화상 명령어를 생성할 수도 있다. 각각의 표시 디바이스(228, 230)가 서로 다른 속도 레이트에서 표시 및 그것의 관련 화상을 리프레시할 수 있다는 것은 동등하게 사실이다. 일 실시예에서, 그래픽 문맥 관리자와 명령어 전송은, 다른 명령어 스트림들 간의 균일한(seamless) 스위칭, 다른 표시 디바이스(228, 252) 간의 균일한 스위칭, 및 동일한 명령어 스트림(242) 내의 다른 그래픽스 애플리케이션과 관련된 렌더링 문맥들 간의 균일한 스위칭을 지원한다.
도 4는 렌더링 중인 각각의 독립 화상들 사이에 그래픽스-렌더링 엔진의 사용을 할당하기 위한 시간 할당자에 대한 실시예의 블록도를 도시한다. 일 실시예에서, 시간 할당자(400)는 중재 및 스위칭 모듈(410), 타이머 레지스터(412), 단위(unit) 레지스터(414), 단위-시간(unit-time) 카운터(416), 및 시분할 카운터(418)를 포함한다. 일 실시예에서, 시간 할당자(400)는 경과된 시간 기준과 공정 사용 기준을 제공하여, 단일 그래픽스-렌더링 엔진(411)의 사용을 할당한다. 일 실시예에서, 시간 할당자(400)는 그래픽스-렌더링 엔진(411)에 대한 사용을 할당하여, 다수의 표시 디바이스(도시되지 않음), 각각 그 고유의 명령어 스트림을 갖는 다수의 그래픽스 애플리케이션 프로그램(413), 및 단일 명령어 스트림 내의 다수의 그래픽스 애플리케이션 프로그램(413) 중 어느 하나 사이에서 독립 화상을 렌더링할 수 있다.
제1 링 버퍼 레지스터(402) 및 제2 링 버퍼 레지스터(404) 등의 링 버퍼 레지스터 각각은 시분할(time sliced)될 수 있고, 링 버퍼 레지스터는 제3 링 버퍼 레지스터(406)와 같이 시분할 되지 않을(non-time sliced) 수도 있다. 후술될 바와 같이, 각각의 시분할되지 않은 레지스터는 라이브 비디오 등의 하이-우선 순위(hi-priority) 그래픽 화상에 대해 사용될 수 있어, 그래픽스-렌더링 엔진(411)의 사용을 일시적으로 독점할 수 있다.
시분할된 링 버퍼 레지스터(402, 404) 각각은 시분할된 또 다른 링 버퍼로의 스위칭이 체크되었음을 나타내기 전에, 수행될 명령어 실행을 위한 바람직한 지속 시간을 지정하는 TIME_SLICE 레지스터(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 time quanta)을 제공한다. 단위-시간 양의 확정은, 디바이스의 실시간 기준이 구성들(configurations) 및/또는 구현(implementations)들 사이에서 바뀔 수 있다는 점에서 중요하다. 일 실시예에서, 단위 레지스터(414)는 실제 시간 기준으로서 그래픽 디바이스(400)의 코어 클럭 주기를 사용한다. 단위 레지스터(414)는 그래픽 디바이스(400)에 대한 BIOS 팜웨어(426)를 통해 프로그램될 수 있다. 또 다른 시분할 파라미터는 단위 레지스 터(414)에 의해 확정된 이러한 단위-시간 양과 관련하여 정의될 수 있다. 단위 레지스터(414)에 의해 정의된 각각의 단위-시간 할당량(quota)은 예를 들어, 하나의 단위-시간이 50 마이크로초이거나, 하나의 단위-시간이 40 클럭 사이클일 수 있다.
또한, 단위 레지스터(414)는 링 버퍼 시분할을 턴온 또는 턴오프하는 시-분할 인에이블 비트(T)를 포함한다. 일 실시예에서, 단위 레지스터(414)의 시-분할 인에이블 비트(428)가 클리어일 때, 고정된 링 버퍼 우선 순위가 유효하다. 일 실시예에서, 시분할 인에이블 비트(428)가 설정될 때, 시분할 링 버퍼 레지스터(401, 404) 간의 중재는 시분할 필드(420, 422)를 통해 제어된다.
타이머 레지스터(412)는 시분할 타이밍 제어를 구현한다. 시분할 인에이블 비트(428)가 설정될 때, 타이머 레지스터(412)는 각각의 링 버퍼 레지스터(402, 404)의 시분할 필드(420, 422) 부분에 기입된 단위들(units) 내의 값을 판독한다. 이러한 모드에서, 제1 링 버퍼 메모리 영역(430) 등의 특정한 링 버퍼 메모리 영역에 명령어를 공급하는 명령-스트림(413)의 활성화 또는 재개에 의해, 제1 링 버퍼 레지스터(420) 등의 특정한 링 버퍼의 시분할 레지스터(420, 422) 부분 내의 컨텐트 값으로 타이머 카운트다운 필드(TC; 434)가 초기화된다. 링 버퍼 메모리 영역으로부터 명령어 실행이 계속되는 동안, 타이머 카운트다운 필드(434)는 매 시간-단위 감소된다.
시분할 카운터(418)는 타이머 카운트다운 필드(434)를 매시간 단위로 감소시킨다. 단위 시간 카운터(416)는 모든 코어 클럭 사이클을 모니터하고 카운트한다. 단위 시간 카운터(416)는 시분할 카운터(418)에 신호를 보내, 단위 레지스터(414) 에 의해 정의된 확정된 단위 시간 할당량(quota)에 기초하여 타이머 카운트다운 필드(434)를 감소시킨다.
일 실시예에서, 다음 두 조건(conditions)이 존재한다면, 그래픽스-렌더링 엔진(411)은 중재 및 스위칭 모듈(410)로부터 명령어를 수신하여, 링 버퍼 메모리 영역으로부터 명령어를 렌더링하는 것을 중지하고 또 다른 링 버퍼 메모리 영역으로부터 명령어를 렌더링하는 것을 개시한다. 두 조건은 타이머 카운트다운 필드(434)가 0이 될 때, 그리고 펜딩 명령어가 그 외의 링 버퍼 메모리 영역에 존재하는 경우이다. 그 때, 그래픽스-렌더링 엔진(411)은 제2 링 버퍼 메모리 영역(432) 등의 그 외 링 버퍼 메모리 영역을 실행하도록 스위칭하고, 이는 타이머 카운트다운 필드(434)가 제2 링 버퍼 레지스터(404)에서 시분할 필드(422)내의 컨텐츠로 다시 초기화되도록 한다. 스위치는 다음 명령어 중재 지점에서 발생한다.
그러나, 제1 링 버퍼 메모리 영역(430) 등의 그 외 링 버퍼 메모리 영역에 펜딩 명령어가 존재하지 않는다면, 타이머 카운트다운 필드(434)가 0이 될 때, 커런트 링 버퍼 메모리 영역 내에서 명령어의 실행이 계속된다. 일 실시예에서, 커런트 링 버퍼 메모리 영역 내에서 명령어의 실행은 그 외의 링 버퍼 레지스터가 명령어의 출현을 전할 때까지 무기한으로 계속된다. 일 실시예에서, 제1 링 버퍼 레지스터(402) 등의 링 버퍼 레지스터는 헤드 오프셋 필드(415) 내의 값이 테일 오프셋 필드(417)의 값과 다를 때, 실행할 명령어의 출현을 나타낸다. 일 실시예에서, 새로운 명령어의 출현은 중재 및 스위칭 모듈(410)로 전해진다. 중재 및 스위칭 모듈은 시분할 필드(420, 422) 내에 지정된 값에 대해, 커런트 링 버퍼 메모리 영 역 내에서 명령어의 실행을 지속하고, 그 다음, 새로운 명령어를 실행하도록 스위칭한다.
능동 문맥 식별 레지스터는 중재 및 스위칭 모듈(410)을 통해, 능동 링 버퍼 레지스터(도시되지 않음)의 문맥 식별 레지스터 값을 그래픽스-렌더링 엔진(411)에게 전한다.
여러 메커니즘들은 그들 개개의 링 버퍼 메모리 영역 내에 펜딩 명령어가 저장된 두 개의 링 버퍼 레지스터들 사이에서 그래픽스-렌더링 엔진(411)의 사용에 대한 중재 처리를 방해할 수 있다. 상술한 바와 같이, 제3 링 버퍼 레지스터(406) 등의 시분할이 아닌 높은 우선 순위의 링 버퍼는 중재 및 스위칭 모듈(410)과 통신하여, 일반적으로 능동인 시분할 링 버퍼 레지스터에 대한 명령어의 렌더링과 타이머 카운트다운(434)을 중지시킬 수 있다. 이러한 중지는 시분할이 아닌 링 버퍼와 관련된 커런트 명령어의 렌더링을 그래픽 렌더링 엔진(411)이 종료할 때까지 단지 일시적인 것이다.
그래픽스 애플리케이션 소프트웨어로부터의 명령어 스트림(413)은 그래픽스-렌더링 엔진(411)의 중재된 사용을 일시적으로 방해하기 위한 명령어를 포함할 수 있다. 예를 들어, "로드 레지스터" 명령어(423)는 그들 개개의 링 버퍼 메모리 영역(430, 432)에 펜딩 명령어가 저장된 두 개의 시분할 링 버퍼 레지스터(402, 422)들 사이에서 그래픽스 렌더링 엔진(411)의 중재 사용을 방해할 수 있다. 소프트웨어는 타이머 카운트다운 필드(434)를 클리어하는 "로드 레지스터" 명령어(423)를 사용할 수 있고, 이로써, 펜딩 명령어가 또 다른 링 버퍼 메모리 영역에 존재할 때, 그것의 시분할 주기의 리마인더를 능동 링 버퍼 레지스터가 효율적으로 포기하게 만든다. 예를 들어, 실행되는 명령어에 대한 시간이 링 버퍼 레지스터(402, 422)에 주어진 절대 최소 시간 또는 지정된 사용 퍼센트 중 하나를 초과하지 않는 것으로 예상될 때 "로드 레지스터" 명령어(423)가 사용될 수 있다. 일 실시예에서, 제1 스트림과 관련된 명령어가 전체 시분할 주기를 취하지 않을 때, 펜딩 명령어를 포함하는 또 다른 링 버퍼 메모리 영역으로 중재 및 스위칭 모듈(410)이 자동적으로 스위칭된다. 또한, 예를 들어, "로드 레지스터" 명령어(423)는 지나치게 시간 소모적인 명령어 또는 중단시킬 수 없는 명령어의 시퀀스에 앞서 사용되어, 그래픽스 렌더링 엔진(411)이 이러한 특정한 명령어 시퀀스에서 동작하기 전에, 제2 애플리케이션에 대한 펜딩 명령어가 처리되도록 한다.
상술한 바와 같이, 그 외의 어떠한 링 버퍼 메모리 영역(430, 432)도 실행되도록 준비된 명령어를 갖지 않으면, "로드 레지스터" 명령어(423)를 지나 명령어의 실행이 지속된다. 또 다른 링 버퍼 메모리 영역(430, 432)이 실행될 명령어를 갖는다면, 그 외의 링 버퍼의 명령어가 실행된 이후에, 그래픽스 렌더링 엔진(411)은 타이머 카운트다운(434)을 통해 대기하지 않고, 최초 링 버퍼의 명령어로 되돌아 가도록 즉시 스위칭한다.
또한, 명령어 스트림(413)은 "이벤트 대기" 명령어(425)를 포함할 수 있다. "이벤트 대기" 명령어(425)는 임의의 조건이 존재하거나 이벤트가 발생할 때까지, 이러한 특정 명령어 스트림(413)으로부터 명령어의 실행을 일시 중지하도록 사용될 수 있다. "이벤트 대기" 명령어(425)를 실행한 결과, 일시 중지되고, 그 외의 시 분할 링 버퍼 레지스터(402, 404)는 일시 중지된 링 버퍼의 시분할 주기에 대한 리마인더가 만료되기 전에도, 그래픽스-렌더링 엔진이 그들의 관련 명령어를 처리하도록 허용한다. 예를 들어, "이벤트 대기" 명령어(425)는 비디오 포착 이벤트를 대기하는데 사용될 수 있다. 표시 디바이스는 표시 화면 상의 상부(top) 수직 위치에서 표시 화면 상의 하부(low) 수직 위치로 움직일 때, 화상을 표시하기 위해 이러한 명령어들을 사용해야 한다. 따라서, 그래픽스-렌더링 엔진(411)은 완전한 이미지에 대한 전체 명령어를 표시 화면 상에 렌더링하고, 전이 주기(transition period)가 상부 수직 위치에서 하부 수직 위치로 만료할 때까지 그 표시 디바이스에 대한 더 많은 명령어를 렌더링할 수 없다. 그 시간 동안, 그래픽 디바이스(400)는 그러한 이벤트의 발생을 대기하고 있고, 커런트 표시 디바이스에 대해 발생할 비동기 이벤트를 대기하는 동안, "이벤트 대기" 명령어(425)는 다른 표시 디바이스와 관련된 또 다른 시분할 링 버퍼 메모리 영역의 처리를 그래픽스-렌더링 엔진(411)이 리-인에이블(re-enable)하도록 허용한다. 비동기 이벤트는 정규 간격으로 발생하지 않고, 또한 비디오 포착 이벤트 등의 시간에 조정되지 않는다. 일 실시예에서, 비동기 이벤트는 랜덤하게 발생하거나, 명령어 스트림 실행과 관련되지 않은 간격으로 발생한다. 예를 들어, 표시 디바이스의 수직 블랭크 이벤트, 비동기 이벤트는 사실상 실세계 시간(즉, 60Hz)에서 정규 간격으로 발생하지만, 명령어 스트림(413) 실행과 관련된 비정규 서비스 시간에는 비동기이다.
도 5 및 도 6은 단일 그래픽-렌더링 엔진을 사용하여 다수의 표시 디바이스 상에 다수의 화상을 렌더링하는 처리에 대한 실시예의 순서도를 도시한다. 명령어 스트림이 하나 이상의 그래픽스 애플리케이션에서 명령어 전송으로 명령어를 운반할 때 명령어 스트림이 처리를 시작한다.
블록 505에서, 링 버퍼 레지스터에 의해 정의된 제1 링 버퍼 메모리 영역은 다수의 그래픽스 애플리케이션 프로그램으로부터 또는 단일 그래픽스 애플리케이션 프로그램을 통해 명령어를 수신한다. 제1 링 버퍼 메모리 영역의 위치 및 사이즈는 제1 링 버퍼 레지스터에 포함된 프로그램 가능한 컨텐트에 의해 정의될 수 있다. 명령어 전송은 하나 이상의 링 버퍼 메모리 영역 또는 유사한 메모리 영역을 포함할 수 있다. 명령어 전송은 하나 이상의 링 버퍼 레지스터 또는 유사한 디바이스를 포함할 수 있다.
블록 510에서, 드라이버는 제1 링 버퍼 메모리 영역에서 화상을 나타내는 명령어를 저장한다. 일 실시예에서, 대응 링 버퍼 레지스터 내의 Tail Offset 필드는 제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 (23)

  1. 다수의 표시 디바이스 상에 표시하기 위해 2 이상의 독립 화상을 동시에 렌더링하는 그래픽스-렌더링 엔진 -상기 2 이상의 독립 화상은 제1 독립 화상과 제2 독립 화상을 포함함- 과,
    상기 제1 독립 화상과 관련된 제1 렌더링 문맥을 기술하는 정보를 제1 메모리 영역에 저장하고 상기 제1 메모리 영역으로부터 복구하고, 상기 제2 독립 화상과 관련된 제2 렌더링 문맥을 기술하는 정보를 제2 메모리 영역에 저장하고 상기 제2 메모리 영역으로부터 복구하는 그래픽 문맥 관리자
    를 포함하는 장치.
  2. 제1항에 있어서, 상기 그래픽 문맥 관리자는,
    특정한 그래픽스 애플리케이션으로부터의 명령어와 관련된 렌더링 문맥을 각각 저장하는 복수의 메모리 영역 -상기 복수의 메모리 영역은 상기 제1 메모리 영역과 상기 제2 메모리 영역을 포함함- 과,
    제1 문맥 식별 레지스터 및 제2 문맥 식별 레지스터를 포함하는 복수의 문맥 식별 레지스터 -상기 제1 문맥 식별 레지스터는 상기 제1 메모리 영역의 어드레스를 지시하는 정보를 포함하고, 상기 제2 문맥 식별 레지스터는 상기 제2 메모리 영역의 어드레스를 지시하는 정보를 포함함-
    를 더 포함하는 장치.
  3. 제2항에 있어서, 상기 그래픽 문맥 관리자는,
    상기 복수의 메모리 영역 중에서, 상기 그래픽스-렌더링 엔진에 제공될 렌더링 문맥 정보를 포함하는 메모리 영역을 추적하는 제3 레지스터
    를 더 포함하는 장치.
  4. 제1항에 있어서, 상기 제1 메모리 영역은 상기 그래픽스-렌더링 엔진을 포함하는 동일한 칩 상에 위치하는 장치.
  5. 제2항에 있어서, 상기 제1 문맥 식별 레지스터는 2차원 화상과 관련된 제1 렌더링 문맥을 3차원 화상과 관련된 제2 렌더링 문맥으로 스위칭하는 것을 돕는 필드를 포함하는 장치.
  6. 제2항에 있어서, 상기 제1 문맥 식별 레지스터는 텍스쳐 맵 화상(textured-map image)과 관련된 제1 렌더링 문맥을 텍스쳐 맵핑되지 않은 화상(non-texture-mapped image)과 관련된 제2 렌더링 문맥으로 스위칭하는 것을 돕는 필드를 포함하는 장치.
  7. 제2항에 있어서,
    상기 제1 메모리 영역은 제1 명령어 스트림 내에 2 이상의 독립 화상에 대한 명령어를 포함하는 장치.
  8. 제2항에 있어서,
    상기 제1 메모리 영역은 제1 명령어 스트림 내에 1 이상의 독립 화상에 대한 명령어를 포함하고, 제2 명령어 스트림 내에 1 이상의 독립 화상에 대한 명령어를 포함하는 장치.
  9. 제1항에 있어서,
    2 이상의 독립 화상에 대한 명령어를 상기 그래픽스-렌더링 엔진에 전달하는 하나 이상의 명령어 전송을 더 포함하며, 상기 하나 이상의 명령어 전송은 제1 명령어 전송을 포함하는 장치.
  10. 제9항에 있어서, 각각의 명령어 전송은 특정 표시 디바이스와 관련되는 장치.
  11. 제9항에 있어서, 상기 제1 명령어 전송은,
    명령어 메모리 영역과,
    상기 명령어 메모리 영역의 시작부(start)와 종단부(end)를 정의하는 제1 레지스터와,
    상기 명령어 메모리 영역으로부터 상기 그래픽스-렌더링 엔진으로 명령어를 인출 및 전달하는 메모리 액세스 엔진
    을 포함하는 장치.
  12. 제9항에 있어서, 상기 명령어 전송은,
    명령어 스트림으로부터 불러 올 수 있는 독립적인 명령어의 시퀀스(independent sequence of instructions)를 저장하는 제3 메모리 영역을 더 포함하는 장치.
  13. 제1항에 있어서,
    2 이상의 독립 화상들 사이에서 상기 그래픽스-렌더링 엔진의 사용을 중재하는 시간 할당자를 더 포함하는 장치.
  14. 제13항에 있어서, 상기 시간 할당자는,
    제1 레지스터를 포함하는 복수의 레지스터를 포함하며,
    상기 제1 레지스터는 복수의 필드를 갖는데, 제1 필드는 제1 레지스터가 상기 그래픽스 렌더링 엔진을 사용하기 위한 중재 처리에 관여하는지 여부를 판정하고, 제2 필드는 제1 명령어 스트림으로부터의 명령어를 포함하는 메모리 위치를 지시하는 장치.
  15. 제13항에 있어서, 상기 시간 할당자는,
    상기 그래픽스-렌더링 엔진을 사용하기 위해, 프로그램가능한 경과 시간 주 기를 확정하는 제1 모듈을 더 포함하며,
    상기 시간 주기는 프로그램가능한 개수의 단위 시간 주기들에 의해 정의되고, 여기서 각각의 단위 시간 주기는 프로그램가능한 개수의 실시간 시간량(real-time time quanta)에 의해 정의되는 장치.
  16. 제14항에 있어서, 상기 시간 할당자는,
    상기 그래픽스-렌더링 엔진이 제1 독립 화상과 관련된 명령어를 처리하도록 지시하는 제1 모듈을 더 포함하며,
    상기 명령어들은 제1 메모리 영역에 저장되고, 상기 제1 메모리 영역은 복수의 필드 내에 포함된 정보에 의해 정의된 어드레스를 갖는 장치.
  17. 제1 명령어 스트림 내에 있는 다수의 독립 화상들과 관련된 명령어를 동시에 렌더링하는 단계와,
    제1 독립 화상과 관련된 제1 렌더링 문맥을 나타내는 정보를 제1 메모리 영역에 저장하는 단계와,
    제2 독립 화상과 관련된 제2 렌더링 문맥을 나타내는 명령어를 제2 메모리 영역으로부터 복구하는 단계와,
    상기 제1 렌더링 문맥으로부터 상기 제2 렌더링 문맥으로 그래픽스-렌더링 엔진을 스위칭하는 단계와,
    제1 표시 디바이스 상에 상기 제1 독립 화상을 표시하고, 제2 표시 디바이스 상에 상기 제2 독립 화상을 표시하는 단계
    를 포함하는 방법.
  18. 제17항에 있어서,
    제1 그래픽스 애플리케이션과 관련된 명령어와 제2 그래픽스 애플리케이션과 관련된 명령어 사이에 상기 그래픽스-렌더링 엔진의 사용을 할당하기 위해 타이밍 회로를 사용하는 단계를 더 포함하는 방법.
  19. 제17항에 있어서,
    복수의 메모리 영역 내에 상기 제1 메모리 영역과 상기 제2 메모리 영역을 포함하는 단계와,
    상기 복수의 메모리 영역 중에서, 상기 그래픽스-렌더링 엔진에 제공될 렌더링 문맥 정보를 포함하는 메모리 영역을 추적하기 위해 휘발성 메모리 디바이스를 사용하는 단계를 더 포함하는 방법.
  20. 삭제
  21. 중앙 처리 장치와,
    그래픽 디바이스
    를 포함하며,
    상기 중앙 처리 장치는 상기 그래픽 디바이스와 결합되고,
    상기 그래픽 디바이스는 다수의 표시 디바이스 상에 표시하기 위해 2 이상의 독립 화상을 동시에 렌더링하는 그래픽스-렌더링 엔진, 및 제1 독립 화상과 관련된 제1 렌더링 문맥을 기술하는 정보를 제1 메모리 영역에 저장하고 상기 제1 메모리 영역으로부터 복구하는 그래픽 문맥 관리자를 포함하고,
    상기 그래픽 문맥 관리자는 제2 독립 화상과 관련된 제2 렌더링 문맥을 기술하는 정보를 제2 메모리 영역에 저장하고 상기 제2 메모리 영역으로부터 복구하는 시스템.
  22. 제21항에 있어서, 상기 그래픽 디바이스는,
    2 이상의 독립화상들 사이에서 상기 그래픽스-렌더링 엔진의 사용을 중재하는 시간 할당자를 더 포함하는 시스템.
  23. 제21항에 있어서, 상기 그래픽 디바이스는,
    상기 시간 할당자에 의해 제어되어, 독립 화상에 대한 명령어를 상기 그래픽스-렌더링 엔진에 전달하는 명령어 전송을 더 포함하는 시스템.
KR1020037017044A 2001-06-29 2002-06-28 그래픽 문맥 관리자를 구비하는 그래픽스-렌더링 엔진을갖는 장치, 방법, 및 시스템 KR100668002B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/895,777 2001-06-29
US09/895,777 US7173627B2 (en) 2001-06-29 2001-06-29 Apparatus, method and system with a graphics-rendering engine having a graphics context manager
PCT/US2002/020682 WO2003003206A2 (en) 2001-06-29 2002-06-28 Apparatus, method and system with a graphics-rendering engine having a graphics context manager

Publications (2)

Publication Number Publication Date
KR20040014588A KR20040014588A (ko) 2004-02-14
KR100668002B1 true KR100668002B1 (ko) 2007-01-15

Family

ID=25405077

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037017044A KR100668002B1 (ko) 2001-06-29 2002-06-28 그래픽 문맥 관리자를 구비하는 그래픽스-렌더링 엔진을갖는 장치, 방법, 및 시스템

Country Status (8)

Country Link
US (1) US7173627B2 (ko)
EP (1) EP1399816A2 (ko)
JP (1) JP2004536395A (ko)
KR (1) KR100668002B1 (ko)
CN (1) CN1324473C (ko)
AU (1) AU2002322359A1 (ko)
TW (1) TWI242753B (ko)
WO (1) WO2003003206A2 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7099946B2 (en) * 2000-11-13 2006-08-29 Canon Kabushiki Kaishsa Transferring a media browsing session from one device to a second device by transferring a session identifier and a session key to the second device
US9098437B2 (en) 2010-10-01 2015-08-04 Z124 Cross-environment communication framework
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US9047102B2 (en) * 2010-10-01 2015-06-02 Z124 Instant remote rendering
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US20040012627A1 (en) * 2002-07-17 2004-01-22 Sany Zakharia Configurable browser for adapting content to diverse display types
US6980216B2 (en) * 2004-01-27 2005-12-27 Honeywell International Inc. Graphics driver and method with time partitioning
US7242369B2 (en) * 2004-10-26 2007-07-10 Benq Corporation Method of displaying text on multiple display devices
US20060277126A1 (en) * 2005-06-06 2006-12-07 Intel Corporation Ring credit management
US7308565B2 (en) * 2005-06-15 2007-12-11 Seiko Epson Corporation Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions
US20070101325A1 (en) * 2005-10-19 2007-05-03 Juraj Bystricky System and method for utilizing a remote memory to perform an interface save/restore procedure
US7580040B2 (en) 2005-11-10 2009-08-25 Via Technologies, Inc. Interruptible GPU and method for processing multiple contexts and runlists
US7545381B2 (en) * 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7583268B2 (en) * 2005-11-10 2009-09-01 Via Technologies, Inc. Graphics pipeline precise interrupt method and apparatus
US7590774B2 (en) * 2005-12-01 2009-09-15 Kabushiki Kaisha Toshiba Method and system for efficient context swapping
US7340557B2 (en) * 2005-12-15 2008-03-04 Via Technologies, Inc. Switching method and system for multiple GPU support
US7325086B2 (en) * 2005-12-15 2008-01-29 Via Technologies, Inc. Method and system for multiple GPU support
US7876328B2 (en) * 2007-02-08 2011-01-25 Via Technologies, Inc. Managing multiple contexts in a decentralized graphics processing unit
US8051090B2 (en) * 2007-12-28 2011-11-01 Realtek Semiconductor Corp. File management method of a ring buffer and related file management apparatus
JP5246819B2 (ja) * 2009-03-31 2013-07-24 Necディスプレイソリューションズ株式会社 情報処理装置、画面表示制御方法およびプログラム
FR2944692B1 (fr) * 2009-04-27 2011-04-15 Medicrea International Materiel d'osteosynthese vertebrale
US9323438B2 (en) 2010-07-15 2016-04-26 Apple Inc. Media-editing application with live dragging and live editing capabilities
WO2012044557A2 (en) 2010-10-01 2012-04-05 Imerj, Llc Auto-configuration of a docked system in a multi-os environment
US9372618B2 (en) 2010-10-01 2016-06-21 Z124 Gesture based application management
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US20120198319A1 (en) * 2011-01-28 2012-08-02 Giovanni Agnoli Media-Editing Application with Video Segmentation and Caching Capabilities
US8775480B2 (en) 2011-01-28 2014-07-08 Apple Inc. Media clip management
US9997196B2 (en) 2011-02-16 2018-06-12 Apple Inc. Retiming media presentations
US11747972B2 (en) 2011-02-16 2023-09-05 Apple Inc. Media-editing application with novel editing tools
US8907906B2 (en) 2011-09-27 2014-12-09 Z124 Secondary single screen mode deactivation
CN103310479B (zh) * 2012-03-12 2016-09-28 联想(北京)有限公司 图像处理方法和电子设备
US9547356B2 (en) 2013-02-28 2017-01-17 Intel Corporation Context aware power management for graphics devices
US9659342B2 (en) 2013-06-29 2017-05-23 Intel Corporation Mid command buffer preemption for graphics workloads
US10185604B2 (en) * 2013-10-31 2019-01-22 Advanced Micro Devices, Inc. Methods and apparatus for software chaining of co-processor commands before submission to a command queue
US9563466B2 (en) * 2013-11-05 2017-02-07 Intel Corporation Method and apparatus for supporting programmable software context state execution during hardware context restore flow
CN105469354A (zh) * 2014-08-25 2016-04-06 超威半导体公司 图形处理方法、系统和设备
CN110138769B (zh) * 2019-05-09 2021-06-15 深圳市腾讯网域计算机网络有限公司 一种图像传输的方法以及相关装置
CN114756323B (zh) * 2022-06-14 2022-09-27 统信软件技术有限公司 一种模糊控件创建方法、装置与计算设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4530047A (en) * 1980-12-15 1985-07-16 Texas Instruments Incorporated Dual registry digital processor system with external memory interface
US4965559A (en) * 1988-05-31 1990-10-23 Motorola, Inc. Multi-channel graphics controller
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 ネオマジック・コーポレイション メモリインタフェースのないグラフィックスコントローラ集積回路
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
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
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
US6674841B1 (en) * 2000-09-14 2004-01-06 International Business Machines Corporation Method and apparatus in a data processing system for an asynchronous context switching mechanism
US6738069B2 (en) * 2001-12-31 2004-05-18 Intel Corporation Efficient graphics state management for zone rendering

Also Published As

Publication number Publication date
TWI242753B (en) 2005-11-01
US20030001848A1 (en) 2003-01-02
JP2004536395A (ja) 2004-12-02
WO2003003206A3 (en) 2003-12-04
WO2003003206A2 (en) 2003-01-09
CN1324473C (zh) 2007-07-04
KR20040014588A (ko) 2004-02-14
EP1399816A2 (en) 2004-03-24
CN1639686A (zh) 2005-07-13
US7173627B2 (en) 2007-02-06
AU2002322359A1 (en) 2003-03-03

Similar Documents

Publication Publication Date Title
KR100668002B1 (ko) 그래픽 문맥 관리자를 구비하는 그래픽스-렌더링 엔진을갖는 장치, 방법, 및 시스템
US6885374B2 (en) Apparatus, method and system with a graphics-rendering engine having a time allocator
US6252600B1 (en) Computer graphics system with dual FIFO interface
US7760205B2 (en) Information processing apparatus for efficient image processing
EP1647887A2 (en) Apparatus for efficient image processing
JP4011082B2 (ja) 情報処理装置、グラフィックプロセッサ、制御用プロセッサおよび情報処理方法
CA2190119C (en) Method and apparatus for accessing a distributed data buffer
JP4318664B2 (ja) 情報処理装置およびタスク実行方法
US10936365B2 (en) Data processing systems
CN109983435B (zh) 图形处理方法及相关装置和设备
WO1999040518A1 (en) Method and apparatus to synchronize graphics rendering and display
JPH10105154A (ja) グラフィックス表示装置およびグラフィックスプロセッサ
JPH08292914A (ja) データ処理装置及びその方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120104

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee