KR20010006798A - 포착된 그래픽 하드웨어 인스트럭션의 하드웨어 이벤트트리거된 실행을 사용하여 그래픽을 렌더링하는 방법 및시스템 - Google Patents

포착된 그래픽 하드웨어 인스트럭션의 하드웨어 이벤트트리거된 실행을 사용하여 그래픽을 렌더링하는 방법 및시스템 Download PDF

Info

Publication number
KR20010006798A
KR20010006798A KR1020000012742A KR20000012742A KR20010006798A KR 20010006798 A KR20010006798 A KR 20010006798A KR 1020000012742 A KR1020000012742 A KR 1020000012742A KR 20000012742 A KR20000012742 A KR 20000012742A KR 20010006798 A KR20010006798 A KR 20010006798A
Authority
KR
South Korea
Prior art keywords
graphics
program
instructions
hardware
captured
Prior art date
Application number
KR1020000012742A
Other languages
English (en)
Other versions
KR100357295B1 (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 KR20010006798A publication Critical patent/KR20010006798A/ko
Application granted granted Critical
Publication of KR100357295B1 publication Critical patent/KR100357295B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Abstract

본 발명은 단지 명목상으로만 호스트 시스템의 동작을 필요로 하고, 요청시에 그래픽 서브시스템상에서 그래픽 렌더링을 수행하는 방법 및 시스템에 관한 것이다. 컴퓨터 프로그램 내의 그래픽 동작의 상위 레벨의 내역을 I/O 하드웨어 프로그램으로서 메모리에 포착한다. 서브시스템 내의 그래픽 프로세서는 상기 포착된 프로그램 내의 인스트럭션을 그래픽 가속기에 발행하고, 이 그래픽 가속기는 그 인스트럭션을 실행하여 그래픽 동작을 수행한다. 이 그래픽 가속기는 그래픽 동작시에 흔히 발생하는 하드웨어 이벤트와 관련된 상태 정보를 포함하는 상태 표시기를 갖는다. 포착된 프로그램 내의 인스트럭션의 제어하에서, 그래픽 프로세서는 상태 표시기를 감시하고, 이 표시기 내의 상태 정보에 따라 포착된 프로그램 내의 인스트럭션을 발행하거나 그 발행을 지연시킨다.

Description

포착된 그래픽 하드웨어 인스트럭션의 하드웨어 이벤트 트리거된 실행을 사용하여 그래픽을 렌더링하는 방법 및 시스템{METHOD AND SYSTEM FOR GRAPHICS RENDERING USING HARDWARE-EVENT-TRIGGERED EXECUTION OF CAPTURED GRAPHICS HARDWARE INSTRUCTIONS}
본 발명은 컴퓨터 그래픽 시스템에 관한 것으로서, 더 구체적으로 말하자면 렌더링(rendering) 동작을 호스트 프로세서(host processor)로부터 그래픽 렌더링이 요구될 때 이를 수행할 수 있는 레지스터 기반형(register-based) 그래픽 서브시스템(subsystem)으로 오프로딩(offloading)함으로써, 단지 명목상으로만 호스트 프로세서의 동작을 필요로 하여 그래픽 렌더링 속도 및 효율을 높이는 방법 및 시스템에 관한 것이다.
일반적으로, 컴퓨터 그래픽 이미지는 프레임 버퍼(frame buffer)라고 하는 어떤 메모리 위치에 저장된 화소 해상도 값(pixel definition)[휘도(intensity) 및 색(color)]을 디스플레이 스크린에 전송함으로써 생성된다. 현재, 대부분의 디스플레이 시스템은 래스터 기반형(raster-based)인데, 여기서 '래스터 기반형'이란 전자 비임(beam)이 형광체가 코팅된(phosphor-coated) 디스플레이 스크린 내벽을 적절한 주파수로 스캔할 때, 프레임 버퍼에 저장된 값이 어느 특정 화소에서의 전자 비임의 휘도 및 색을 결정한다는 것을 의미한다.
프로그램 코드에 있는 이미지 해상도 값(image definition)의 집합을 CRT에 물리적으로 디스플레이될 수 있는 화소값 집합으로 변환한 다음, 그 화소값을 CRT에 스캔하는 과정을 보통 "렌더링(rendering)"이라고 한다. 이러한 렌더링에 있어서, 프로세서는 응용 프로그램으로부터 좀 더 복잡한 이미지를 만들기 위한 기본적인 구성 요소인 그래픽 프리미티브(graphical primitive)의 내역(內譯)을 가져오고 이것을 화소 해상도 값으로 변환해야 한다.
그래픽 동작이 실행되어야 하는 응용 프로그램은 선, 원, 다각형 등과 같은 프리미티브를 렌더링하는 기본적인 렌더링 함수를 요구하는 것이 보통이다. 이러한 기본적인 렌더링 함수는 하위 레벨(low-level) 코드로 작성되며, 그래픽 라이브러리(library)에 존재한다. 기본적인 렌더링 함수의 집합은 API(Applicaiton Programmer's Interface)라고 알려져 있으며, 프로그래머가 하위 레벨 코드를 작성하지 않고도 이러한 기본적인 함수를 이용하여 C 언어나 포트란(Fortran) 언어와 같은 고급 언어로 그래픽 응용 프로그램을 작성할 수 있도록 한다. 시중에서 구득 가능한 몇 가지 표준 API로는 OpenGL, PHIGS(Programmers Hierarchical Graphics Standard), GKS(Graphical Kernel System)가 있다.
이미지를 렌더링하기 위해서는, 응용 프로그램 내에 있는 상위 레벨(high-level)의 API 내역을 해석하여 하드웨어 레벨 코드로 만들어야 한다. 다음으로, 프레임 버퍼를 채우거나 수정하는 데에 필요한 실제 물리적인 I/O 동작을 실행하려면, 이 하드웨어 레벨 코드를 실행하여야 한다.
이러한 작업은 이미지가 비록 간단한 것이라 하더라도 프로세서 시간과 시스템 메모리의 상당히 많은 부분을 차지할 수 있다. 그러나, 그래픽 응용 프로그램은 점점 더 복잡해져서 명암, 그림자 등을 포함하고 칼라로 렌더링되는 복잡하고 사실적인 이미지를 요구한다. 예컨대, 비디오 게임과 같이 어떤 이미지를 반복적으로 만들 필요가 있는 경우에, 프로세서 시간 및 시스템 메모리에 대한 과다한 요구로 인해 이미지 렌더링이 느려지고 사용자를 실망시킬 수 있다.
따라서, 반복 작업을 호스트 프로세서로부터 오프로딩하여 호스트 프로세서가 자유롭게 다른 필요한 작업을 수행할 수 있도록 하는 렌더링 기법이 요구된다. 좀 더 구체적으로 설명하면, 만약에 반복적으로 렌더링되어야 하는 어떠한 이미지에 대해 그래픽 응용 프로그램의 상위 레벨의 API 내역으로부터 하드웨어로 실행 가능한(hardware-executable) 인스트럭션(instruction)을 생성하는 데에 필요한 호스트 프로세서 동작을 한번만 실행하고, 그 이미지를 렌더링하라는 요구가 있는 경우에 상기 하드웨어로 실행 가능한 인스트럭션을 그 다음에 실행할 수 있다면, 호스트 프로세서 사이클 및 메모리를 절약할 수 있으며, 렌더링 속도는 증가될 것이다. 이러한 기법은 현존하는 종래 기술에는 알려져 있지 않다.
본 명세서의 일부를 이루며, 본 출원과 관련 있는 미국 특허 출원(출원인의 참조 번호가 BU9-98-199이고, 대리인 문서 번호는 1806/057이며, 본 출원과 출원인 및 발명자가 동일함)에는 메모리 내에 실행 가능한 프로그램으로서 그래픽 응용 프로그램이라고 불리는 기본적인 렌더링 함수에 의해 생성된 그래픽 하드웨어에 대한 하드웨어 인스트럭션을 포착하는 방법 및 시스템을 개시하고 있다. 이 하드웨어 인스트럭션이 포착되고 나면, 이는 그래픽 서브시스템에서 실행되어 이미지 렌더링이 요구될 때 매우 적은 호스트 프로세서 동작만으로도 이미지를 렌더링할 수 있다.
통상 호스트 프로세서에 의해 수행되는 그래픽 동작에 관한 하드웨어 인터럽트 서비스를 프로그래밍 가능한 방법으로, 즉 그래픽 응용 프로그램 내에서 호스트 프로세서가 아닌 그래픽 서브시스템에 의해 수행될 특정 하드웨어 인터럽트 처리 루틴(routine)을 지정함으로써 그래픽 서브시스템으로 오프로딩할 수 있다면, 호스트 프로세서 사이클은 훨씬 더 절약될 수 있다. 상기 관련 미국 특허 출원에 따른 방법 및 시스템은 그래픽 동작 중의 하드웨어 인터럽트 처리에 관한 이러한 기법을 가능하게 하며, 이 기법은 종래 기술에는 알려져 있지 않다.
본 발명은 렌더링 작업을 호스트 프로세서로부터 그 렌더링 작업이 요구될 때 이를 수행할 수 있는 그래픽 서브시스템으로 오프로딩하는 방법 및 시스템을 제공한다. 컴퓨터 프로그램 내의 그래픽 동작의 상위 레벨의 내역에 의해 생성된 포착된 I/O 하드웨어 프로그램을 포함하는 메모리가 제공된다. 이 포착된 I/O 프로그램은 상기 관련 미국 특허 출원에 개시된 방법 및 시스템에 따른 메모리 내에서 생성 및 저장된다.
또한, 상기 포착된 프로그램 내의 인스트럭션을 페치(fetch)하여 이를 그래픽 가속기로 발행하고, 이 그래픽 가속기는 그 인스트럭션을 실행하여 그래픽 동작을 수행한다. 이 그래픽 가속기는 가속기에 의해 수행되는 그래픽 동작에 관련된 상태 정보를 포함하는 상태 레지스터를 포함한다.
포착된 프로그램은 그래픽 프로세서로 하여금 상태 레지스터 내의 상태 정보를 감시하고, 상태 레지스터 내에 특정된 상태 정보가 존재할 때까지 포착된 프로그램 내의 인스트럭션을 가속기에 발행하는 것을 지연시키도록 하는 인스트럭션을 포함할 수 있다.
이러한 포착된 프로그램을 상태 정보에 응답하여 실행시킬 수 있는 능력은 사용자가 그래픽 동작을 상태 정보에 의해 표시되는 특정 하드웨어 이벤트(event)와 연결[link]시키는 것을 가능하게 한다. 따라서, 프로그래머는 그래픽 가속기 내의 상태 표시기를 감시하여 이 표시기 내의 상태 정보를 기초로 포착된 프로그램 내의 하드웨어 I/O 인스트럭션을 발행함으로써 호스트 프로세서의 하드웨어 처리 루틴을 개시하지 않고도 그래픽 동작을 실행할 수 있도록 그래픽 응용 프로그램을 코딩(coding)할 수 있다. 이에 따라, 호스트 프로세서 사이클 및 메모리는 절약되며, 그래픽 동작의 효율은 증가한다.
도 1은 종래 그래픽 렌더링 시스템의 전체적인 개략도.
도 2는 본 발명을 구현하는 시스템의 기본적인 소프트웨어 및 하드웨어 부품을 도시한 도면.
도 3은 본 발명에 따른 포착 루틴의 흐름도.
도 4는 본 발명을 사용하는 응용 프로그램의 예를 나타낸 도면.
도 5는 본 발명을 사용하는 응용 프로그램의 예를 나타낸 도면.
[도면의 주요 부분에 대한 부호의 설명]
5 : 호스트 시스템
10 : 그래픽 서브시스템
15 : 그래픽 장치 드라이버
20 : 메모리
25 : DLP
30 : 그래픽 가속기
35 : 프레임 버퍼
40 : 디스플레이 장치
도 1은 종래 그래픽 렌더링 시스템을 개념적으로 도시하고 있다. 도 1에 도시된 시스템에 있어서, 호스트 동작 시스템(host operating system)(5)에는 그래픽 장치 드라이버 소프트웨어(7)가 있는데, 이는 그래픽 응용 프로그램(8)에 있는 상위 레벨의 그래픽 렌더링 내역에 응답하여 그래픽 서브시스템(6) 내의 그래픽 가속기(30)에 하위 레벨 인스트럭션을 발행한다. 그래픽 장치 드라이버(7)의 제어하에서, 가속기(30)는 화소 해상도 값을 프레임 버퍼(35)에 기록하고, 그 화소 해상도 값은 디스플레이 장치(40)상에서 스캔되어 이미지를 물리적으로 렌더링한다.
도 1에 도시된 시스템에 있어서, 그래픽 I/O 동작과 연관된 하드웨어 인터럽트는 호스트 프로세서에 의해 통상적인 방법으로 처리된다. 예컨대, 디스플레이 장치(40)에 의해 발생한 하드웨어 인터럽트에 응답하여 호스트 시스템에 의해 실행되는 인터럽트 서비스 루틴은 장치 인터페이스(interface) 내의 상태 플래그(flag)를 소프트웨어적으로 폴링(polling)하여 인터럽트의 소스 및 장치에 의해 요구되는 서비스 유형을 결정할 수 있는데, 이 소프트웨어 폴링은 통상적으로 더 많은 데이터를 장치에 전송하게 된다. 이와 달리, 하드웨어 폴링이나 하드웨어 벡터링(vectoring)을 인터럽트의 처리에 사용할 수 있다. 어떠한 경우에 있어서도, 호스트 시스템은 인터럽트 서비스를 위한 동작을 수행해야만 하며, 그래픽 장치는 호스트 시스템이 인터럽트 서비스를 수행하는 동안에 대기하여야만 한다.
이와 대조적으로, 도 2는 본 발명에 따른 그래픽을 렌더링하는 방법 및 시스템의 기본적인 소프트웨어 및 하드웨어 부품들을 도시하고 있는데, 이는 이하에서 설명하는 바와 같이 하드웨어 인터럽트 처리와 연관된 호스트 프로세서의 작업을 그래픽 서브시스템(10)으로 오프로딩하는 것을 가능하게 하며, 이 그래픽 서브시스템(10)은 RAM(20), 디스플레이 리스트 프로세서(Display List Processor; DLP)(25)로 알려진 주문형 그래픽 프로세서, 상태 레지스터(100)(바람직한 실시예에서 복수 개의 상태 레지스터의 현재 상태를 나타냄)를 갖는 가속기(30), 프레임 버퍼(25) 및 CRT와 같은 디스플레이 장치(40)를 포함한다. DLP(25)는 메모리(20)에 저장된 하드웨어 인스트럭션을 페치하고 가속기(30)를 제어하기 위하여 그 인스트럭션을 발행할 수 있다. 또한, DLP(25)는 상태 레지스터(100) 내의 상태 비트를 폴링하여, 상태 레지스터(100) 내에 특정 상태 정보가 존재할 때까지 메모리(20) 내의 인스트럭션의 발행을 지연시킬 수 있다. 가속기(30)는 고속 레지스터를 포함하는데, 이 고속 레지스터는 DLP(25)에 의해 발행된 인스트럭션에 따라 화소 해상도 값을 프레임 버퍼(35)에 기록한다. 그 다음, 화소 해상도 값은 프레임 버퍼(35)로부터 디스플레이 장치(40)에 스캔되어 이미지를 생성한다.
도 2 및 도 3을 참조하면, 본 발명의 특징을 달성하기 위한 컴퓨터로 실행 가능한(computer-executable) 인스트럭션이 그래픽 장치 드라이버(15) 내에 구현되어 있다. 장치 드라이버(15)는 포착 루틴(50) 및 API 세트(set)(17)를 포함하는데, 여기서 API 세트(17)는 프리미티브를 렌더링하는 기본적인 렌더링 함수와 DLP(25)로 하여금 가속기(30) 내의 상태 레지스터(100)를 감시하도록 하여 상태 레지스터가 특정 상태 정보를 포함할 때까지 메모리(20) 내의 인스트럭션의 실행을 지연시키는 I/O 명령을 포함한다. API 내의 각 함수는 하드웨어 레벨에서 컴퓨터로 실행 가능한 인스트럭션의 시퀀스(sequence)를 포함한다. DLP(25)로 하여금 메모리(20) 내의 인스트럭션의 실행을 지연시키도록 하는 I/O 명령의 경우에 있어서, 이러한 하드웨어 레벨 인스트럭션은 레지스터 판독/마스크(mask)/비교 프리미티브를 포함함으로써, 이 DLP가 상태 레지스터(100)를 감시하고 메모리 내의 그 다음 인스트럭션으로 이동할 것인지 또는 이동하지 않을 것인 지를 결정하도록 한다.
API(17) 내의 함수는 그 고유의 부호 식별자(mnemonic identifier)에 의해 함수를 특정하여 이를 적절한 사용자 정의 파라미터에 전달함으로써, 상위 레벨의 프로그램 내의 인스트럭션에 의해 호출될 수 있다. 예컨대, "wait_for_vsync"는 "vsync" 신호가 디스플레이 장치(40)로부터 수신되었다는 것[디스플레이 장치가 수직 귀환(vertical retrace)을 수행하고 있다는 것을 나타냄]을 상태 레지스터(100)가 표시할 때까지 포착된 프로그램의 실행을 지연시키는 DLP(25)에 대한 인스트럭션을 포함하는 API(17) 내의 함수에 대한 상위 레벨의 호출을 나타낼 수 있다.
포착 루틴(50)은 호스트 컴퓨터(5)에서 실행되는 상위 레벨의 응용 프로그램(45) 내의 인스트럭션에 응답하여, 하드웨어 인스트럭션으로서 RAM(20)에 미리 저장되는 "API 함수 호출" 시퀀스(47)를 나타내는 컴퓨터로 실행 가능한 인스트럭션을 포함한다. 상위 레벨의 프로그램 내의 인스트럭션은 본 발명에 의해 제공되는 이로운 특징들을 호출하기 위하여, 통상적으로 프로그래머에 의해 렌더링될 그래픽을 요구하는 응용 프로그램 내에 코딩된다.
본 발명의 특징들을 호출하는 상위 레벨의 응용 프로그램(45) 내의 인스트럭션은 API 함수 호출 시퀀스(47)를 포괄하거나 한정하는 "Begin_Program"(46) 및 "End_Program"(48)을 나타내는 식별쌍을 포함하는데, 이는 프로그래머에 의해, 장치 드라이버(15) 내에 제공되는 API 세트(17) 내의 특정 함수에 대한 부호 식별자에 의한 호출로서 필요한 파라미터와 함께 코딩된다. Begin_Program/End_Program 한정쌍은 하드웨어 인스트럭션으로서 메모리(20) 내에 미리 저장되는 API 시퀀스를 식별한다.
응용 프로그램 내의 Begin_Program 인스트럭션(46)이 실행되면, 함수 호출이 장치 드라이버 코드(15) 내의 포착 루틴(50)에 발행된다. 도 3은 포착 루틴의 기본적인 흐름을 도시하고 있다. 이 시퀀스는 응용 프로그램(45) 내의 Begin_Program 인스트럭션(46)에 의해 시작된다. 먼저, 도면 부호 55로 표시된 블록에 나타낸 바와 같이, 포착 루틴은 메모리(20) 내의 API 함수 호출(47)에 의해 발생된 하드웨어 인스트럭션을 가속기(30)에 발행하여 실행시키지 않고 메모리(20)에 저장하도록 장치 드라이버(15)를 지시하는 플래그를 세트시킨다. 이어서, 도면 부호 60으로 표시된 블록에 나타낸 바와 같이, 프로그래머에 의해 지정된 파라미터를 API 라이브러리(17) 내의 해당 API에 전달함으로써 Begin_Program 인스트럭션(46)에 뒤이은 API 함수 호출(47)을 계산하여 해당 하드웨어 인스트럭션을 발생하고, 그 하드웨어 인스트럭션을 메모리(20)에 저장한다. 이 API는 호출 파라미터 내의 프로그래머에 의해 지정된 특정 함수를 수행하는 완전히 기계로 실행 가능한(fully machine-executable) 레지스터 인스트럭션을 포함한다.
포착 루틴(50)은 각 API 함수 호출(47)에 대하여 도면 부호 60의 블록에 표시된 연산을 수행한다. 그 다음, 도면 부호 65로 표시된 블록에 나타낸 바와 같이, 응용 프로그램(45)이 End_Program 인스트럭션(48)을 발행하면, 포착 루틴은 Begin_Program 인스트럭션(46)에 의해 세트된 플래그를 리셋시키고, 프로그래머에 의해 Begin_Program 인스트럭션(46)에 임의로 할당된 고유의 부호 식별자인 "id"를 사용하여 집합적으로 저장된 하드웨어로 실행 가능한 인스트럭션을 호스트 시스템(5)에 실행 가능한 프로그램으로 등록한다.
일단 한정된 API 시퀀스(47)가 실행 가능한 프로그램으로서 메모리(20)에 포착되면, 이는 요청시에 Execute_Program 인스트럭션(49) 내에 할당된 부호인 "id"를 특정함으로써 그래픽 서브시스템(10)에 의해 수행될 수 있다. Execute_Program 인스트럭션은 DLP(25)로 하여금 메모리(20)에 저장된 "id"에 해당하는 하드웨어 인스트럭션을 판독하여 이를 가속기(30)에 발행하도록 한다. 이 인스트럭션은 화소 정보를 프레임 버퍼(40)에 기록함으로써 포착된 프로그램에 의해 정의된 이미지를 렌더링하도록 가속기(30)를 지시할 수 있으며, 상태 레지스터(100)를 감시하여 특정된 상태 정보가 상태 레지스터 내에 존재할 때까지 메모리(20) 내의 명령어의 발행을 지연시키도록 DLP(25)를 지시하는 명령어를 포함할 수 있다.
본 발명은 주기적인 그래픽 동작 및 직렬 그래픽 동작 양자를 호스트 프로세서로부터 그래픽 서브시스템으로 오프로딩하는 데 사용될 수 있다. 가속기(30)는 포착된 프로그램 내의 명령어의 제어하에 가속기에 의해 수행되는 그래픽 동작과 관련된 상태 정보를 포함하는 상태 레지스터[일반적으로 상태 레지스터(100)로 표시함]를 포함한다. 또한, 그 상태 레지스터는 디스플레이 장치(40)와 같은 가속기(30) 외부의 하드웨어 장치상의 이벤트와 연관된 상태 정보를 포함한다. 포착된 프로그램에 의해 수행되는 동작과 연관된 하드웨어 이벤트 인터럽트는 호스트 시스템으로 전달되지 않는다. 그 대신, DLP(25)를 사용하여 가속기 내의 상태 레지스터를 감시하고 그 상태 정보를 기초로 포착된 프로그램 내의 명령어를 발행함으로써, 프로그래머는 그래픽 동작을 상태 정보에 의해 표시된 특정 하드웨어 이벤트와 링크시킬 수 있다. 따라서, 프로그래머는 호스트 프로세서의 하드웨어 인터럽트 처리 루틴을 개시하지 않고도 그래픽 응용 프로그램을 코딩하여 그래픽 동작을 수행할 수 있다.
이하에서는 프로그래머가 호스트 동작 시스템(5)이 아닌 그래픽 서브시스템(10)으로 디스플레이 버퍼 어드레스 스와핑(swapping)을 수행하기를 원하는 경우에 있어서 본 발명의 응용예를 설명한다.
디스플레이 버퍼 어드레스 스와핑은 그래픽 I/O 동작에서 발생하는 주기적인 프로세스(process)이다. 컴퓨터 스크린(CRT) 또는 텔레비젼에 있어서는, 스크린이 수직 귀환을 행하여 효과적으로 블랭크(blank)될 때마다 활성화되는 VSYNC 또는 VBLANK라고 불리는 타이밍 신호가 있다. CRT 디스플레이에 부드러운 시각적 효과(smooth visual effect)를 제공하기 위해서는 이 기간 동안에 그래픽 동작을 수행하는 것이 좋다. 종종 두 가지 버퍼, 즉 액티브 화소 데이터가 페치되는 버퍼와 새로운 화소가 형성되는 버퍼가 디스플레이를 형성하는 데 사용된다. VSYNC 신호에서, 상기 두 버퍼는 스와핑되어 새로운 화소가 디스플레이되고 오래된 디스플레이 버퍼가 새로운 화소에 대해 사용 가능해진다.
스와핑은 매 VSYNC 신호마다 발생하는 주기적인 기능이다. 스와핑은 새로운 디스플레이 버퍼 어드레스를 가속기 내의 레지스터에 기록함으로써 수행되며, 디스플레이 하드웨어는 그 어드레스를 판독하여 현재 디스플레이 버퍼가 어느 것인지를 판단한다. 대개, 스와핑은 호스트 동작 시스템(5)에 의해 수행되며, VSYNC 인터럽트를 처리하고 새로운 버퍼 어드레스를 기록하기 위한 프로세서 사이클을 필요로 한다. 이 작업을 그래픽 서브시스템(10)으로 오프로딩하게 되면, 호스트 프로세서에 의한 인터럽트 처리를 줄이게 된다.
오프로딩을 수행하기 위해서, 프로그래머는 통상적으로 호스프 프로세서, 메모리, 판독/기록 디스크 저장 장치, 그리고 소프트웨어 작성 및 편집용 텍스트 편집기를 포함하는 응용 소프트웨어 및 운영 체제와 사용자간의 상호 작용을 가능하게 하는 키보드 및 마우스와 같은 I/O 장치를 포함하는 컴퓨터 시스템상에서 작업하게 된다. 프로그래머는 텍스트 편집기를 사용하여 본 발명의 장치 드라이버 소프트웨어에 의해 인식 가능한 인스트럭션을 포함하는 스와핑 프로그램 포착용 소스 코드를 작성하거나 편집할 것이다. 본 발명을 구현하기 위해서, 컴퓨터 시스템은 통상적으로 도 2에 도시된 부품들을 포함하는 그래픽 서브시스템을 추가로 필요로할 것이다.
스와핑 프로그램을 포착하기 위한 소스 코드에 있어서, 프로그래머는 스와핑을 수행하기 위한 API 함수의 시퀀스를 한정하는 Begin-Program/End-Program 쌍을 정의한 프로그램 인스트럭션을 작성할 것이다. 예컨대, 스와핑을 수행하기 위한 API function의 시퀀스를 한정하는 의사 코드(pseudo-code)는 다음과 같이 작성할 수 있다.
swap = Begin_Program(); // 디스플레이 버퍼 어드레스 스와핑을
// 수행하기 위한 포착된 프로그램을
// 정의함;
start; // 주기적인 루틴에 대한 시작 지점을
// 정의함;
wait_for_vsync; // vsync 신호에 대하여
// 상태 레지스터(100)를 감시하도록
// DLP(25)를 지시함;
write_pointer1_to_display; // 프레임 버퍼 1을 현재 디스플레이
// 버퍼로 정의함;
wait_for_vsync; // vsync 신호에 대하여
// 상태 레지스터(100)를 감시하도록
// DLP(25)를 지시함;
write_pointer2_to_display; // 프레임 버퍼 2를 현재 디스플레이
// 버퍼로 정의함;
jump_to_start; // 루틴을 종료하고 최초 wait_for_sync부터
// 재개함;
End_Program(); // 디스플레이 버퍼 어드레스 스와핑용
// 하드웨어 인스트럭션을 메모리(20)에
// 저장하고 호스트 시스템(5)에 실행
// 가능한 프로그램으로 등록함;
이 예에 있어서, "swap = Begin_Program()" 인스트럭션 및 "End_Program()" 인스트럭션은 메모리(20)상의 실행 가능한 프로그램으로서 포착될 API 함수의 시퀀스를 정의한다. 프로그램의 실행시에, 상기 인스트럭션은 호스트 프로세서의 개입 없이도 디스플레이 버퍼 어드레스 스와핑을 수행하는 "swap"이라 불리는 포착된 하드웨어 레벨 프로그램을 생성할 것이다.
아래의 설명을 위하여, 포착된 프로그램은 또 다른 포착된 프로그램의 동작의 수행을 포함할 수 있는 동작 시퀀스를 포함하는 것으로 한다.
포착된 프로그램 "swap"의 실행은 도 4에 도시되어 있다. 도면 부호 300으로 표시된 도표는 "swap"의 기본적인 논리 흐름을 도시하고 있으며, 어떠한 동작을 주기적으로 수행하는 임의의 포착된 프로그램에 적용 가능하다. 이 프로그램은 상태 판독 →이벤트 비교 →트리거(trigger)되지 않았으면 점프(jump)의 시퀀스로 나타낸 바와 같이, 하드웨어 상태 레지스터 내의 트리거링 이벤트를 연속적으로 폴링함으로써 실행된다. 이 폴링이 트리거링 이벤트가 발생했다는 것을 나타내면, 그 이벤트에 의해 수행되는 동작이 실행된 다음, 프로그램은 상태 판독 →이벤트 비교 →트리거되지 않았으면 점프의 시퀀스를 폴링함으로써 이벤트 트리거 대기 상태로 복귀한다.
도 4는 "swap" 프로그램예의 인스트럭션 중 "wait_for_vsync" 및 "write_pointer2_to_display"의 제어 하에서 발생하는 동작을 설명하고 있다. 현재 디스플레이 버퍼는 프레임 버퍼 1(35a)이며, 메모리(20)에 저장된 "swap" 프로그램의 "wait_for_vsync" 인스트럭션은 DLP(25)로 하여금 가속기(30) 내의 상태 레지스터(100)를 폴링하게 한다. 상태 레지스터(100)가 VSYNC 신호(200)가 수신되었음을 나타내지 않으면, 폴링은 DLP(25)가 상태 판독 →이벤트 비교 →트리거되지 않았으면 점프의 시퀀스를 연속적으로 수행함으로써 계속된다.
그 후, 수직 귀환 도중에, 디스플레이 장치(40)가 VSYNC 하드웨어 인터럽트(200)를 발생하면, 이는 상태 레지스터(100)에 기록된다. DLP(25)에 의한 폴링으로 VSYNC가 수신되었음을 검출하면, DLP(25)는 메모리(20)에 저장된 "write_pointer2_to_display"(210) 인스트럭션을 가속기(30)에 발행하고, 가속기는 그 인스트럭션을 수행하여 프레임 버퍼 2(35b)의 어드레스를 디스플레이 하드웨어에 의해 판독 가능한 레지스터에 기록한다. 그 결과, 프레임 버퍼 2는 현재 디스플레이 버퍼가 되며, 프레임 버퍼 2의 화소는 디스플레이 장치(40)상에 스캔되어 이미지를 생성한다. "swap" 루틴은 최초 wait_for_sync부터 재개되며, 계속해서 그 다음 VSYNC에서 프레임 버퍼 1의 어드레스를 기록함으로써, 이 루틴은 무한히 반복된다. 따라서, "swap" 루틴은 호스트 프로세서의 개입 없이도 디스플레이 버퍼 어드레스 스와핑을 수행하게 된다.
이하에서는 프로그래머가 직렬 그래픽 동작을 그래픽 서브시스템(10)으로 오프로딩하기를 원하는 경우에 있어서 본 발명의 응용예를 설명한다.
텍스트의 디스플레이는 어느 문자가 디스플레이될 것인지를 특정하는 프로그램의 제어 하에서, 문자 패턴(patter) 또는 비트맵(bitmap)을 폰트(font) 저장 장치로부터 활성 디스플레이로 복사함으로써 수행된다. 문자는 가속기(30) 내의 BLT(bit-logical-transfer) 엔진(engine)에 의해 이동된다. BLT 동작은 각 BLT 동작이 그 다음 BLT 동작의 개시 전에 완료되어야하는 직렬적인 동작이다.
통상적으로, BLT 동작에 있어서는 BLT 동작의 완료로 인해 발생한 하드웨어 인터럽트를 처리하고, 어느 문자를 폰트 저장 장치로부터 복사할 것인지와 프레임 버퍼(35)의 어느 곳에 그 문자를 위치시킬 것인지를 가속기(30)에 특정하는 인스트럭션을 수행하는 데에 호스트 프로세서의 작업이 요구된다. 포착된 프로그램은 아래의 의사 코드에 나타낸 바와 같이, 문자의 블록을 보다 효율적으로 디스플레이하기 위하여 이러한 작업을 호스트 프로세서로부터 오프로딩할 수 있다.
moveblock = Begin_Program(); // 문자의 블록을 이동시키기 위한
// 포착된 프로그램을 정의함;
execute_blt("A"); // 문자 "A"를 폰트 저장 장치로부터 프레임
// 버퍼(35)로 복사하도록 가속기(30)를
// 지시함;
wait_for_blt_complete; // "BLT 완료" 신호에 대하여
// 상태 레지스터(100)를 감시하도록
// DLP(25)를 지시함;
execute_blt("B"); // 문자 "B"를 폰트 저장 장치로부터 프레임
// 버퍼(35)로 복사하도록 가속기(30)를
// 지시함;
wait_for_blt_complete; // "BLT 완료" 신호에 대하여
// 상태 레지스터(100)를 감시하도록
// DLP(25)를 지시함;
execute_blt("C"); // 문자 "C"를 폰트 저장 장치로부터 프레임
// 버퍼(35)로 복사하도록 가속기(30)를
// 지시함;
wait_for_blt_complete; // "BLT 완료" 신호에 대하여
// 상태 레지스터(100)를 감시하도록
// DLP(25)를 지시함;
End_Program(); // 문자의 블록을 이동시키는 하드웨어
// 인스트럭션을 메모리(20)에 저장하고
// 호스트 시스템(5)에 실행 가능한
// 프로그램으로 등록함;
이 예에 있어서, "moveblock = Begin_Program()" 및 "End_Program()"은 실행 가능한 프로그램으로서 메모리(20)에 포착될 API 함수의 시퀀스를 정의한다. 그 실행시에, 상기 인스트럭션은 호스트 프로세서의 개입 없이도 텍스트 문자의 블록을 이동시키는 "moveblock"이라고 불리는 포착된 하드웨어 레벨의 프로그램을 생성할 것이다.
포착된 프로그램 "moveblock"의 실행은 도 5에 도시되어 있다. 도면 부호 400으로 표시된 도표는 "moveblock"의 기본적인 논리 흐름을 도시하고 있으며, 이는 동작을 직렬적으로 수행하는 임의의 포착된 프로그램에 적용 가능하다. 이 프로그램은 상태 판독 →이벤트 비교 →트리거되지 않았으면 점프의 시퀀스로 나타낸 바와 같이, N+1 개의 직렬 동작의 초기 동작을 수행한 다음, 하드웨어 상태 레지스터 내의 제1 트리거링 이벤트를 폴링함으로써 실행된다. 이 폴링이 트리거링 이벤트가 발생했다는 것을 나타내면, 그 이벤트에서 수행되는 동작이 실행된 다음, 프로그램은 그 다음 트리거링 이벤트의 폴링을 시작한다. 모든 트리거링 이벤트가 발생하고 이러한 트리거링 이벤트에 의존하는 모든 동작이 실행되고 나면, 프로그램은 종료한다.
도 5는 "moveblock" 프로그램예의 인스트럭션 중 "wait_for_bit_complete" 및 "execute_blt("B")"의 제어 하에 발생하는 동작을 설명하고 있다. 도 5는 메모리(20) 내에 포착되어 DLP(25)에 의해 발행되는 "moveblock" 프로그램 내의 인스트럭션의 제어 하에서, 문자 "A"가 가속기(30)에 의해 폰트 저장 장치(205)로부터 프레임 버퍼(35)로 복사된 후의 상태를 설명하고 있다. 첫번째 "wait_for_blt_complete" 인스트럭션은 상태 판독 →이벤트 비교 →트리거되지 않았으면 점프의 시퀀스를 연속적으로 수행함으로써, DLP(25)로 하여금 상태 레지스터(100) 내의 "BLT 완료" 신호를 폴링하도록 한다. 그 후, 가속기(30)가 문자 "A"에 대한 BLT 동작을 완료하면, 가속기는 이 상태를 상태 레지스터(100)에 기록한다. DLP(25)에 의한 폴링으로 "BLT 완료" 신호를 검출하면, 그 결과 DLP(25)는 포착된 프로그램 "moveblock" 내의 그 다음 인스트럭션, 즉 "execute_blt("B")"(215)를 발행한다.
이 예에 설명된 것과 유사한 기법은, 예컨대 호스트 프로세서의 개입 없이도 디스플레이 스크린상에 텍스트의 페이지를 효과적으로 스크롤(scroll)하는 데 사용될 수 있다. 또한, 이러한 기법은 선 그리기와 같은 직렬 렌더링 동작을 수행하거나, 복잡한 장면의 구성 요소의 렌더링을 포착된 프로그램에 의해 렌더링되는 보다 간단한 부장면(subscene)을 사용하여 동조하는 데 사용될 수 있다. 이러한 특징은 전술한 관련 응용예에 보다 상세하게 설명되어 있다.
전술한 본 발명의 특징은 그래픽 동작에 제한되지 않는다. 이는 주기적으로 반복되는 동작을 요구하는 임의의 시스템에 적용될 수 있다. 예컨대, UART(Universal Asynchronous Receiver Transmitter)와 같은 통신 장치는 수신기 데이터 버퍼가 가득 차있을 때마다 개시되는 포착된 프로그램을 포함할 수 있다. 이러한 프로그램은 데이터를 더 큰 메모리 버퍼로 언로딩(unloading)할 수 있으며, 이 더 큰 메모리 버퍼가 가득 차있을 때마다 인터럽트를 호스트 프로세서에 포스팅(posting)할 수 있다. 이 기술은 새로운 하드웨어를 요하지 않고도 UART 버퍼 크기를 효과적으로 증가시킬 수 있다.
또한, UART 데이터 송신 프로그램은 상기 "moveblock" 예와 유사하게 작성될 수 있다. 포착된 프로그램은 송신기 버퍼의 상태가 비어있는 지를 폴링할 수 있다. 그 다음, 데이터를 메모리 버퍼로부터 송신기 버퍼로 이동시키는 또 다른 포착된 프로그램이 호스트의 개입 없이도 개시될 수 있다. 메모리 버퍼가 고갈되었을 때에만 포착된 프로그램은 더 많은 송신 데이터를 요구하기 위하여 호스트를 인터럽트할 것이다.
전술한 바와 같이, 본 발명은 그래픽 서브 시스템의 그래픽 장치 드라이버 내의 컴퓨터로 실행 가능한 인스트럭션으로 구현될 수 있다. 그 구현에 있어서, 장치 드라이버 코드를 적절한 위치에서 임의의 컴퓨터로 사용 가능한(computer-usable) 매체상에, 예컨대 컴퓨터 메모리 내에 호스트 운영 체제의 완전히 링크된(fully-linked) 서브루틴으로서 상주시킬 수 있다. 본 발명을 적극적으로 구현하지 않을 때에는, 그 코드를 테이프, 플로피 디스크, 하드 디스크, CD-ROM 등과 같은 휴대용 컴퓨터로 사용 가능한 매체상에 상주시킬 수 있다.
전술한 기재는 본 발명을 설명한다. 또한, 이러한 기재는 본 발명의 바람직한 실시예만을 설명하고 있으나, 본 발명은 여러 가지 기타 조합, 변형 및 환경에서 사용 가능하며, 전술한 설명 및/또는 당업계의 기술 또는 지식 수준에 부합하여 본 명세서에 설명된 발명의 범위 내에서 변경 또는 변형이 가능하다. 또한, 전술한 실시예는 본 발명을 실시하는 데 알려진 최적의 상태를 설명하고, 당업자가 본 발명을 이러한 또는 기타 실시예와 특정 응용 또는 본 발명의 사용에 요구되는 여러 변형에 사용하는 것을 가능하도록 하였다. 따라서, 전술한 설명은 본 발명을 본 명세서에 설명된 형태로 제한하기 위한 것이 아니다. 또한, 첨부된 청구 범위는 대체 실시예를 포함하는 것으로 해석될 수 있다.
본 발명에 따르면, 그래픽 렌더링 동작을 호스트 시스템으로부터 그래픽 서브시스템으로 렌더링함으로써, 호스트 시스템의 프로세서 사이클 및 메모리를 절약할 수 있으며, 그래픽 렌더링 속도 및 효율을 높일 수 있다.

Claims (28)

  1. 그래픽 시스템에 있어서,
    a) 컴퓨터 프로그램 내의 그래픽 동작의 상위 레벨(high-level)의 내역(內譯)에 의해 생성된 포착(capture)된 I/O 하드웨어 프로그램을 포함하는 메모리와,
    b) 그래픽 동작의 실행과 연관되고 그래픽 프로세서에 의해 판독되는 상태 정보에 응답하여 상기 포착된 프로그램 내의 인스트럭션(instruction)을 발행하는 그래픽 프로세서와,
    c) 상기 상태 정보를 포함하는 상태 표시기를 가지고 상기 인스트럭션을 수신 및 실행하여 상기 그래픽 동작을 수행하는 그래픽 가속기
    를 포함하는 그래픽 시스템.
  2. 제1항에 있어서, 상기 포착된 프로그램은 상기 그래픽 프로세서로 하여금 상기 상태 표시기를 감시하고 특정된 상태 정보가 상기 상태 표시기에 존재할 때까지 상기 포착된 프로그램 내의 인스트럭션의 발행을 지연시키도록 하는 인스트럭션을 포함하는 그래픽 시스템.
  3. 제2항에 있어서, 상기 특정된 상태 정보는 특정된 그래픽 동작의 완료와 연관되는 그래픽 시스템.
  4. 제2항에 있어서, 상기 상태 정보는 상기 가속기 외부의 하드웨어 장치상의 이벤트(event)와 연관되는 그래픽 시스템.
  5. 제3항에 있어서, 상기 특정된 그래픽 동작은 주기적으로 반복되는 그래픽 시스템.
  6. 제4항에 있어서, 상기 이벤트는 주기적으로 발생하는 그래픽 시스템.
  7. 제3항에 있어서, 상기 그래픽 동작은 직렬적으로 수행되는 복수 개의 동작 중 하나인 그래픽 시스템.
  8. 제4항에 있어서, 상기 이벤트는 직렬적으로 발생하는 복수 개의 이벤트 중 하나인 그래픽 시스템.
  9. 그래픽 동작을 수행하는 방법에 있어서,
    a) 메모리 내에 실행 가능한 프로그램으로서 컴퓨터 프로그램 내의 그래픽 동작의 상위 레벨의 내역에 의해 생성된 I/O 하드웨어 인스트럭션을 포착하는 단계와,
    b) 그래픽 프로세서를 사용하여, 그래픽 동작의 실행과 연관되고 상기 그래픽 프로세서에 의해 판독되는 상태 정보에 응답하여 상기 포착된 프로그램 내의 인스트럭션을 발행하는 단계와,
    c) 상기 상태 정보를 포함하는 상태 표시기를 가진 그래픽 가속기를 사용하여, 상기 인스트럭션을 수신 및 실행하여 상기 그래픽 동작을 수행하는 단계
    를 포함하는 그래픽 동작의 수행 방법.
  10. 제9항에 있어서, 상기 포착된 프로그램은 상기 그래픽 프로세서로 하여금 상기 상태 표시기를 감시하고 특정된 상태 정보가 상기 상태 표시기 내에 존재할 때까지 상기 포착된 프로그램 내의 인스트럭션의 발행을 지연시키도록 하는 인스트럭션을 포함하는 그래픽 동작의 수행 방법.
  11. 제10항에 있어서, 상기 특정된 상태 정보는 특정된 그래픽 동작의 완료와 연관되는 그래픽 동작의 수행 방법.
  12. 제10항에 있어서, 상기 상태 정보는 상기 가속기 외부의 하드웨어 장치상의 이벤트와 연관되는 그래픽 동작의 수행 방법.
  13. 제11항에 있어서, 상기 특정된 그래픽 동작은 주기적으로 반복되는 그래픽 동작의 수행 방법.
  14. 제12항에 있어서, 상기 이벤트는 주기적으로 발생하는 그래픽 동작의 수행 방법.
  15. 제11항에 있어서, 상기 그래픽 동작은 직렬적으로 수행되는 복수 개의 동작 중 하나인 그래픽 동작의 수행 방법.
  16. 제12항에 있어서, 상기 이벤트는 직렬적으로 발생하는 복수 개의 이벤트 중 하나인 그래픽 동작의 수행 방법.
  17. 그래픽 동작을 수행하는 방법을 구현하기 위하여, 컴퓨터로 실행 가능한(computer-executable) 프로그램 코드를 유형적으로 구체화한 컴퓨터로 사용 가능한(computer-usable) 매체에 있어서,
    상기 코드는 컴퓨터 프로그램 내의 그래픽 동작의 상위 레벨의 내역에 의해 생성된 I/O 하드웨어 프로그램을 포착하는 인스트럭션을 포함하며,
    상기 포착된 프로그램은 그래픽 프로세서로 하여금 그래픽 동작과 연관된 상태 정보에 대하여 그래픽 가속기 내의 상태 표시기를 감시하고 이 상태 표시기가 특정된 상태 정보를 포함할 때까지 그래픽 동작을 수행하는 상기 캡쳐된 프로그램 내의 인스트럭션을 상기 그래픽 가속기에 발행하는 것을 지연시키도록 하는 인스트럭션을 포함하는 컴퓨터로 사용 가능한 매체.
  18. 제17항에 있어서, 상기 특정된 상태 정보는 특정된 그래픽 동작의 완료와 연관되는 컴퓨터로 사용 가능한 매체.
  19. 제17항에 있어서, 상기 상태 정보는 상기 가속기 외부의 하드웨어 장치상의 이벤트와 연관되는 컴퓨터로 사용 가능한 매체.
  20. 제18항에 있어서, 상기 특정된 그래픽 동작은 주기적으로 반복되는 컴퓨터로 사용 가능한 매체.
  21. 제19항에 있어서, 상기 이벤트는 주기적으로 발생하는 컴퓨터로 사용 가능한 매체.
  22. 제18항에 있어서, 상기 그래픽 동작은 직렬적으로 수행되는 복수 개의 동작 중 하나인 컴퓨터로 사용 가능한 매체.
  23. 제19항에 있어서, 상기 이벤트는 직렬적으로 발생하는 복수 개의 이벤트 중 하나인 컴퓨터로 사용 가능한 매체.
  24. 하드웨어 인터럽트 처리를 호스트 시스템으로부터 서브시스템으로 오프로딩(offloading)하는 방법에 있어서,
    a) 메모리 내에 실행 가능한 프로그램으로서, 컴퓨터 프로그램 내의 동작의 상위 레벨의 내역에 의해 생성된 하드웨어 인스트럭션을 포착하는 단계와,
    b) 서브시스템 프로세서를 사용하여, 상기 포착된 인스트럭션을 상기 메모리로부터 서브시스템 하드웨어로 발행하는 단계
    를 포함하고,
    상기 서브시스템 하드웨어는 그 서브시스템 하드웨어상의 동작과 연관된 상태 정보를 포함하는 상태 표시기를 포함하며, 상기 서브시스템 프로세서는 상기 상태 표시기를 감시하고 상기 상태 정보에 응답하여 상기 포착된 인스트럭션을 발행하는 하드웨어 인터럽트 처리를 호스트 시스템으로부터 서브시스템으로 오프로딩하는 방법.
  25. 제24항에 있어서, 상기 포착된 프로그램은 상기 서브시스템 프로세서로 하여금 상기 상태 표시기가 특정된 상태 정보를 포함할 때까지 상기 포착된 프로그램 내의 인스트럭션의 발행을 지연시키도록 하는 인스트럭션을 포함하는 방법.
  26. 제25항에 있어서, 상기 특정된 상태 정보는 특정된 동작의 완료와 연관되는 방법.
  27. 제26항에 있어서, 상기 특정된 동작은 주기적으로 반복되는 방법.
  28. 제26항에 있어서, 상기 동작은 직렬적으로 수행되는 복수 개의 동작 중 하나인 방법.
KR1020000012742A 1999-03-31 2000-03-14 포착된 그래픽 하드웨어 인스트럭션의 하드웨어 이벤트 트리거된 실행을 사용하여 그래픽을 렌더링하는 방법, 시스템 및 기록 매체와, 하드웨어 인터럽트 처리의 오프 로딩 방법 KR100357295B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/283,387 US6762761B2 (en) 1999-03-31 1999-03-31 Method and system for graphics rendering using hardware-event-triggered execution of captured graphics hardware instructions
US09/283,387 1999-03-31

Publications (2)

Publication Number Publication Date
KR20010006798A true KR20010006798A (ko) 2001-01-26
KR100357295B1 KR100357295B1 (ko) 2002-10-19

Family

ID=23085821

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000012742A KR100357295B1 (ko) 1999-03-31 2000-03-14 포착된 그래픽 하드웨어 인스트럭션의 하드웨어 이벤트 트리거된 실행을 사용하여 그래픽을 렌더링하는 방법, 시스템 및 기록 매체와, 하드웨어 인터럽트 처리의 오프 로딩 방법

Country Status (5)

Country Link
US (2) US6762761B2 (ko)
JP (1) JP3218029B2 (ko)
KR (1) KR100357295B1 (ko)
CN (1) CN1120419C (ko)
TW (1) TW561420B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100490401B1 (ko) * 2002-03-26 2005-05-17 삼성전자주식회사 TC(Thin-Client)환경에서 영상 처리 장치 및 방법

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
WO2001014980A1 (fr) * 1999-08-19 2001-03-01 Fujitsu Limited Procede permettant de commander le fonctionnement du systeme d'exploitation d'un systeme informatique et support d'enregistrement sur lequel le programme destine a cet effet est enregistre
US7209140B1 (en) * 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US20010054114A1 (en) * 2000-03-21 2001-12-20 Duval Mary Wireless data transport of internet content to display device
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US7480910B1 (en) 2001-05-15 2009-01-20 Adobe Systems Incorporated System and method for providing information and associating information
US7685229B1 (en) * 2001-05-15 2010-03-23 Adobe Systems Incorporated System and method for displaying server side code results in an application program
EP1495412B1 (en) * 2002-03-22 2012-11-28 Alandro Consulting NY LLC Scalable high performance 3d graphics
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US7219352B2 (en) * 2002-04-15 2007-05-15 Microsoft Corporation Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays
US6981081B2 (en) * 2002-12-19 2005-12-27 Intel Corporation Method for SMI arbitration timeliness in a cooperative SMI/driver use mechanism
US7643675B2 (en) 2003-08-01 2010-01-05 Microsoft Corporation Strategies for processing image information using a color information data structure
FR2868854B1 (fr) * 2004-04-08 2006-08-04 Herve Rostan Procede et systeme pour gerer des objets multimedia a diffuser, au moyen d'une unite de traitement associee a un accelerateur multimedia
US20060012602A1 (en) * 2004-07-15 2006-01-19 George Lyons System and method for efficiently performing automatic partial transfers of image data
US7584415B2 (en) 2004-09-15 2009-09-01 Microsoft Corporation Common charting using shapes
US20060082580A1 (en) * 2004-10-05 2006-04-20 Raymond Chow Method and apparatus for triggering frame updates
US7343482B2 (en) * 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
US7318143B2 (en) * 2004-10-20 2008-01-08 Arm Limited Reuseable configuration data
US7350055B2 (en) 2004-10-20 2008-03-25 Arm Limited Tightly coupled accelerator
US20060150071A1 (en) * 2005-01-05 2006-07-06 Microsoft Corporation Software-based video rendering
US7519845B2 (en) 2005-01-05 2009-04-14 Microsoft Corporation Software-based audio rendering
KR100668326B1 (ko) * 2005-02-01 2007-01-12 삼성전자주식회사 3차원 그래픽스 데이터를 랜더링하는 방법 및 장치
US8166283B2 (en) * 2005-08-11 2012-04-24 Stmicroelectronics S.A. Generator of a signal with an adjustable waveform
JP4745904B2 (ja) * 2006-07-18 2011-08-10 株式会社日本自動車部品総合研究所 電子装置
US8667250B2 (en) * 2007-12-26 2014-03-04 Intel Corporation Methods, apparatus, and instructions for converting vector data
EP2245536B1 (en) 2008-01-27 2018-10-24 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
US8098251B2 (en) 2008-02-22 2012-01-17 Qualcomm Incorporated System and method for instruction latency reduction in graphics processing
KR100948510B1 (ko) * 2008-04-21 2010-03-23 주식회사 코아로직 하드웨어 방식의 벡터 그래픽 가속기, 그 가속기를 포함한어플리케이션 프로세서 및 단말기, 및 그 프로세서에서그래픽 가속방법
US9250966B2 (en) * 2011-08-11 2016-02-02 Otoy, Inc. Crowd-sourced video rendering system
CN103164838B (zh) * 2011-12-12 2015-11-04 扬智科技股份有限公司 图形数据处理方法
EP2831720A4 (en) * 2012-03-30 2015-12-09 Intel Corp PREFERRING MEDIA DEVICES WITH DETERMINED FUNCTIONS
US20170177361A1 (en) * 2015-12-22 2017-06-22 Michael Anderson Apparatus and method for accelerating graph analytics
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2564805B2 (ja) * 1985-08-08 1996-12-18 日本電気株式会社 情報処理装置
US5159665A (en) 1989-11-27 1992-10-27 Sun Microsystems, Inc. Graphics accelerator system
DE69132300T2 (de) * 1990-03-12 2000-11-30 Hewlett Packard Co Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen
US5509115A (en) 1990-08-08 1996-04-16 Peerless Systems Corporation Method and apparatus for displaying a page with graphics information on a continuous synchronous raster output device
US5276798A (en) * 1990-09-14 1994-01-04 Hughes Aircraft Company Multifunction high performance graphics rendering processor
US5265203A (en) 1990-09-14 1993-11-23 Hughes Aircraft Company Hardware multiprocess scheduler in a graphics rendering processor
JPH087715B2 (ja) * 1990-11-15 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理装置及びアクセス制御方法
US5706478A (en) * 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
TW304254B (ko) * 1994-07-08 1997-05-01 Hitachi Ltd
US5727192A (en) 1995-03-24 1998-03-10 3Dlabs Inc. Ltd. Serial rendering system with auto-synchronization on frame blanking
US5798770A (en) 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
US6226695B1 (en) * 1995-09-29 2001-05-01 International Business Machines Corporation Information handling system including non-disruptive command and data movement between storage and one or more auxiliary processors
US5969728A (en) * 1997-07-14 1999-10-19 Cirrus Logic, Inc. System and method of synchronizing multiple buffers for display
US6339427B1 (en) * 1998-12-15 2002-01-15 Ati International Srl Graphics display list handler and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100490401B1 (ko) * 2002-03-26 2005-05-17 삼성전자주식회사 TC(Thin-Client)환경에서 영상 처리 장치 및 방법

Also Published As

Publication number Publication date
US20030001849A1 (en) 2003-01-02
US20040054834A1 (en) 2004-03-18
CN1120419C (zh) 2003-09-03
US7176927B2 (en) 2007-02-13
TW561420B (en) 2003-11-11
JP2000331150A (ja) 2000-11-30
CN1268694A (zh) 2000-10-04
KR100357295B1 (ko) 2002-10-19
US6762761B2 (en) 2004-07-13
JP3218029B2 (ja) 2001-10-15

Similar Documents

Publication Publication Date Title
KR100357295B1 (ko) 포착된 그래픽 하드웨어 인스트럭션의 하드웨어 이벤트 트리거된 실행을 사용하여 그래픽을 렌더링하는 방법, 시스템 및 기록 매체와, 하드웨어 인터럽트 처리의 오프 로딩 방법
US6952215B1 (en) Method and system for graphics rendering using captured graphics hardware instructions
US6115054A (en) Graphics processor emulation system and method with adaptive frame skipping to maintain synchronization between emulation time and real time
CA1213085A (en) Method and apparatus for image compression and manipulation
US7737983B2 (en) GPU pipeline multiple level synchronization controller processor and method
KR100482708B1 (ko) 리스트제어비디오동작방법및시스템
US5864711A (en) System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
JP2005525617A (ja) ゾーン・レンダリング用の自動メモリ管理
JP2001084154A (ja) スレッドを使用する、コンピュータ・システム内でのグラフィックス・テクスチャ管理の同期化
US5553228A (en) Accelerated interface between processors and hardware adapters
US9471956B2 (en) Graphic remoting system with masked DMA and graphic processing method
JPH06325182A (ja) グラフィックス描画方法及びその装置と計算機システム
KR100371253B1 (ko) 화상생성방법및장치
CN114089896A (zh) 一种渲染图像截取方法及装置
US5727190A (en) Method and system for the acceleration of graphics images in a multiprocessor or preemptive processing computer system
KR20040066559A (ko) 이차원 그래픽 가속방법 및 장치
JP2829051B2 (ja) 文字表示方式
JP2988936B2 (ja) 三次元図形の処理装置
Petzold Metafiles, Mapping Modes, and Transforms
JPH06180759A (ja) グラフィックディスプレイ装置
JP2005148995A (ja) 画像表示装置ならびにその表示方法、表示プログラム
JP2011018291A (ja) 画像描画装置
JPH04248590A (ja) データ転送装置
KR19990084292A (ko) 그래픽 이미지 처리장치 및 방법
KR980010874A (ko) 그래픽 컨트롤러용 랜더웨어 드라이버

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

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee