KR20060126435A - 그래픽 프로세싱 시스템내의 통합 컴포지션 엔진을 위한시스템 및 방법 - Google Patents

그래픽 프로세싱 시스템내의 통합 컴포지션 엔진을 위한시스템 및 방법 Download PDF

Info

Publication number
KR20060126435A
KR20060126435A KR1020067004470A KR20067004470A KR20060126435A KR 20060126435 A KR20060126435 A KR 20060126435A KR 1020067004470 A KR1020067004470 A KR 1020067004470A KR 20067004470 A KR20067004470 A KR 20067004470A KR 20060126435 A KR20060126435 A KR 20060126435A
Authority
KR
South Korea
Prior art keywords
composition
resources
composition engine
integrated
resource table
Prior art date
Application number
KR1020067004470A
Other languages
English (en)
Other versions
KR101087361B1 (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 KR20060126435A publication Critical patent/KR20060126435A/ko
Application granted granted Critical
Publication of KR101087361B1 publication Critical patent/KR101087361B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/61Scene description

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • Stored Programmes (AREA)
  • Image Processing (AREA)
  • Digital Computer Display Output (AREA)

Abstract

본 발명은 일반적으로 개별적인 컴포지션 서비스를 사전에 결합하는 통합 컴포지션 엔진을 위한 시스템 및 방법에 관한 것이다. 통합 컴포지션 엔진은 어플리케이션 프로그래밍 인터페이스(API)와 관련된 프로세스에서 사용되고, 데스크탑 컴포지터로서 데스크탑에서도 사용되는 컴포지션 서비스를 제공한다.
컴포지션, 통합 컴포지션 엔진, 비주얼 시스템

Description

그래픽 프로세싱 시스템내의 통합 컴포지션 엔진을 위한 시스템 및 방법{SYSTEM AND METHOD FOR A UNIFIED COMPOSITION ENGINE IN A GRAPHICS PROCESSING SYSTEM}
현대의 컴퓨팅 시스템에서, 그래픽 및 비디오 하드웨어의 기능이 빠른 속도로 성장하고 있다. 사실상, 현대 컴퓨팅 시스템의 그래픽 시스템은 단순한 그래픽 서브시스템이기보다 보조 프로세서로 여겨질 수 있는 정도이다. 동시에, 소비자는 예를 들어 모니터를 보든지, 텔레비전 또는 휴대폰 디스플레이를 보든지, 디스플레이된 이미지의 품질이 점점 더 나아지기를 기대하고 있다.
그러나, 메모리 및 버스 속도가 메인 프로세서 및/또는 그래픽 프로세서의 진보에 발맞추지 못하였다. 결과로서, 컴퓨터 시스템에서 그래픽을 액세스하는 전통적인 즉각 모드 모델(immediate mode model)이 한계에 도달하고 있다. 동시에, 개발자 및 소비자는 전통적인 그래픽 윈도우 아키텍처로는 충족될 수 없는 새로운 특성 및 특수 효과를 요구하고 있다.
특정 게임 프로그램은 그래픽 하드웨어를 이용하도록 설계되었지만, 주로 게임은 동시에 실행되고 있을 수 있는 다른 프로그램들을 고려할 필요가 없다는 점에서, 그러한 게임 프로그램은 데스크탑 어플리케이션 프로그램 등의 요구사항들과는 상이한 요구사항으로 동작한다. 그러한 게임 프로그램들과는 달리, 어플리케이션 들은 다른 어플리케이션들과 그래픽 및 기타 시스템 자원을 공유할 필요가 있다. 그러나, 어플리케이션들은 일반적으로 그래픽 프로세싱에 관하여 협력적인 기계-규모 공유 모델로 작성되지 않는다.
예를 들어, 데스크탑 어플리케이션을 이용하여 애니메이션을 실행하는 것은 현재 전문화된 단일-목적 코드, 또는 또다른 어플리케이션의 사용을 필요로 한다. 그러한 경우에도, 다중 윈도우 환경에서 자연스러운 애니메이션을 달성하는 것은 불가능하지는 않지만 어려운 일이다. 일반적으로, 이것은 자연스러운 고속 애니메이션을 달성하는 것이 애니메이션 파라미터를 갱신하고, 높은 프레임율, 즉, 이상적으로는 그래픽 장치의 하드웨어 리프레시율(refresh rate)로 장면을 다시 그릴 것(이것은 데이터 구조를 횡단 및 그릴 것을 필요로 함)을 필요로 하기 때문이다. 그러나, 애니메이션 파라미터를 갱신하고, 장면을 정의하는 데이터 구조를 횡단 및 그리는 것은 일반적으로 계산-집약적이다. 장면을 더 크게 또는 더 많이 애니메이팅할수록, 계산 요구사항은 더욱 많아지고, 이것은 자연스럽게 애니메이팅할 수 있는 장면의 복잡도를 제한한다.
그래픽 하드웨어가 디스플레이 리프레시를 수행할 때 제공하기 위해 애니메이션의 각 프레임이 계산되고, 그려지며, 준비되어야 한다는 요구사항이 문제점을 심화시킨다. 하드웨어가 필요로 할 때 프레임이 준비되지 않은 경우, 결과로서 프레임이 드롭되거나 지연된다. 꽤 많은 프레임이 드롭되면, 애니메이팅된 디스플레이에 눈에 띄는 스터터(stutter)가 존재한다. 또한, 프레임 준비가 리프레시율과 동기화되지 않으면, 티어링(tearing)이라고 알려진 바람직하지 않은 효과가 발생할 수 있다. 실제로, 현대의 멀티-태스킹 운영 시스템은 시스템상의 여러 태스크에 계산 자원을 분배한다. 그러나, 운영 시스템 태스크 스케줄러에 의해 프레임 프로세싱을 위해 주어진 시간의 양은 그래픽 하드웨어 프레임율과 좀처럼 맞지 않을 것이다. 결과로서, 충분한 계산 자원이 존재하는 경우에도, 애니메이션 시스템은 스케줄링 문제로 인하여 여전히 프레임들을 놓칠 수 있다. 예를 들어, 애니메이션 태스크가 너무 늦게 실행되도록 스케줄링될 수 있고, 또는 한 프레임을 완료하기 전에 선취되어 다음 하드웨어 리프레시의 스크린에 다음 프레임을 제공하기 위한 적절한 시기에 재스케줄링될 수 없을 수 있다. 이러한 문제점들은 애니메이팅된 그래픽이 비동기적으로 생성된 프레임의 비디오 또는 기타 소스와 함께 컴포지션될 필요가 있는 경우에 훨씬 더 복잡해진다.
일반적으로, 프레임을 준비하기 위한 이전(예를 들어, WM_PAINT) 모델은 (복합 애니메이션과 같은) 복합 그래픽 효과가 바람직한 경우 리프레시율에 보조를 맞추기 위하여 너무 많은 데이터 프로세싱을 필요로 한다. 결과로서, 기존의 모델을 이용하여 복합 그래픽 효과가 시도되는 경우, 다음 프레임에서 변경을 완료하여 다음 프레임에 대한 적절한 시각에 비주얼 효과가 인지되도록 하는 대신에, 다른 프레임들에 대해 변경이 추가되어 시각적으로 및 눈에 띄게 바람직하지 않은 결과를 야기할 수 있다.
그래픽 출력을 제어하기 위한 새로운 모델이 미국 특허 출원들에 기술되어 있다. 이 새로운 모델은 그래픽 프로세싱 기술에 여러 중요한 개선을 제공한다. 예를 들어, 미국 특허 출원 제10/184,795호는 일반적으로 다중-레벨 그래픽 프로세 싱 시스템 및 방법에 관한 것이며, 그 시스템 및 방법에서는, 고레벨 컴포넌트(예를 들어, 운영 시스템의 컴포넌트)는 단순화된 데이터 구조 및/또는 그래픽 명령어를 저레벨 데스크탑 컴포지션 컴포넌트에 전달하기 위하여 비교적 낮은 동작률로 장면 그래프(scene graph)를 형성하고, 애니메이션 파라미터를 갱신하며, 장면 그래프의 데이터 구조를 횡단하는 계산 집약적 양상을 수행한다. 고레벨 프로세싱은 데이터를 매우 단순화시키기 때문에, 저레벨 컴포넌트는 데이터를 그래픽 서브시스템에 대한 일정한 출력 데이터로 프로세싱하기 위하여 그래픽 서브시스템의 프레임 리프레시율에 대응하는 속도와 같이 (고레벨 컴포넌트에 상대적으로) 더 빠른 속도로 동작할 수 있다. 상기 개선들은 그래픽 프로세싱 기술에 상당한 이득을 제공하지만, 특정 개선들은 이제야 실현될 것이다.
<발명의 요약>
간략하게는, 본 발명은 일반적으로 사전에 개별적인 컴포지션 서비스들을 결합하는 통합 컴포지션 엔진(unified composition engine)을 위한 시스템 및 방법을 제공한다. 통합 컴포지션 엔진은 어플리케이션 프로그래밍 인터페이스(API)와 관련된 프로세스에서 사용되고, 데스크탑 컴포지터로서 데스크탑에서도 사용되는 컴포지션 서비스를 제공한다. 통합 컴포지션 엔진은 두 개의 이전 컴포지션 노력들, 즉, 프로세스에서 단일 어플리케이션의 컨텐츠를 컴포지션하기 위해 이용되도록 의도된 API 컴포지션 엔진, 및 최종 디스플레이를 생성하기 위해 모든 윈도우를 컴포지션하도록 의도된 데스크탑 컴포지션 엔진을 결합한다. 데스크탑 컴포지션 엔진 및 API 컴포지션 엔진은 상이한 역할 및 사용 시나리오를 갖는다. 데스크탑 컴포 지션 엔진은 다른 프로세스들에 의해 렌더링된 컨텐츠를 구성하고, 최소한의 컨텐츠를 렌더링하여 윈도우 프레임을 구현하며, 레거시 윈도우 관리자(예를 들어, User32)와 강력하게 조화를 이루기 위해 사용된다. API 컴포지션 엔진은 렌더링을 제어하고, 단일 어플리케이션에 대한 컨텐츠 모두를 구성하며, 효율적인 리모팅(remoting)을 위한 메커니즘을 제공하기 위해 사용된다. API 컴포지션 엔진 및 데스크탑 컴포지션 엔진에 대한 사용 요구사항에서의 최근의 변화는 API 컴포지션 엔진이 다른 프로세스 및 레거시 자식 윈도우로부터의 컨텐츠를 호스팅해야 하도록 하였고, 데스크탑 컴포지션 엔진이 윈도우 프레임을 리모팅하도록 하였다. 두 개의 컴포지션 노력을 결합하는 것은 코드 중복성을 감소시키고, 테스트 적용범위를 개선하며, 복잡했던 레거시 윈도우 상호운용성, 리모팅 및 다중 문서 인터페이싱(Multiple Document Interfacing, MDI)과 같은 특성을 구동하는 것을 단순화한다.
도 1은 본 발명의 예시적인 구현에서 사용될 수 있는 예시적인 컴퓨팅 장치를 도시하는 도면.
도 2는 본 발명에 따른 API 컴포지션 엔진에 대한 일반적이고 계층화된 아키텍처를 나타내는 도면.
도 3은 본 발명이 통합될 수 있는 미디어 통합 계층 아키텍처를 나타내는 블럭도.
도 4는 본 발명에 따른 통합 컴포지션 엔진을 이용하기 위한 개략적 아키텍처를 도시하는 도면.
도 5는 본 발명에 따른 단일 어플리케이션 도메인에 대한 다수의 통합 컴포지션 엔진에 대한 개략적 아키텍처를 도시하는 도면.
도 6은 본 발명에 따른 단일 통합 컴포지션 엔진에 대한 다수의 어플리케이션 도메인에 대한 개략적 아키텍처를 도시하는 도면.
본 발명은 실질적으로 통합 컴포지션 엔진(Unified Composition Engine, UCE)에 대한 시스템 및 방법에 관한 것이다. 본 발명은 어플리케이션 레벨 및 데스크탑 레벨 둘 모두에서 그래픽 출력을 구성하기 위한 방법을 제공하며, 실질적으로 코드 중복성을 감소시킨다.
후술되는 설명은 3개의 부분으로 나누어진다. 설명의 제1 부분은 본 발명이 동작할 수 있는 예시적인 컴퓨팅 환경을 기술한다. 설명의 제2 부분은 예시적인 그래픽 아키텍처를 기술한다. 설명의 제3 부분은 본 발명에 대한 하나의 예시적인 구현을 기술한다.
예시적인 컴퓨팅 환경
도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예를 도시한다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 하나의 예일 뿐이며, 본 발명의 사용 또는 기능의 범위에 어떠한 제한도 가하도록 의도되지 않는다. 컴퓨팅 환경(100)은 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 컴포넌트 또는 그들의 조합에 관하여 어떠한 종속성이나 요구사항도 가지는 것으로 여겨져서는 안 된다.
본 발명은 다양한 기타 범용 또는 특수용 컴퓨팅 시스템 환경 또는 구성으로 동작가능하다. 본 발명의 사용에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예들은 개인용 컴퓨터, 서버 컴퓨터, 포켓형 또는 랩탑 장치, 태블릿 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋탑 박스, 프로그래밍가능한 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함하지만 이들로 제한되지는 않는다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터-실행가능 명령어들의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 통신 네트워크를 통해 링크되는 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 모두에 위치될 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태로 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(120)에 연결하는 시스템 버스(121)를 포함할 수 있지만, 이들로 제한되지는 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 타입의 버스 구조 중 임의의 것일 수 있다. 제한을 가하지 않는 예로서, 그러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 강화된 ISA(EISA) 버스, 비디오 전자 표준 협회(VESA) 로컬 버스, 가속화된 그래픽 포트(AGP) 버스, 및 Mezzanine 버스로도 알려진 주변 컴포넌트 인터커넥트(PCI) 버스를 포함한다.
컴퓨터(110)는 전형적으로 다양한 컴퓨터-판독가능 매체를 포함한다. 컴퓨터-판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고, 휘발성 및 비휘발성 매체, 그리고 분리형 및 비분리형 매체 둘 모두를 포함한다. 제한을 가하지 않는 예로서, 컴퓨터-판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 광 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만 이들로 제한되지는 않는다. 통신 매체는 전형적으로 반송파와 같은 변조된 데이터 신호, 또는 기타 전송 메커니즘에 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구체화하고, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호의 정보를 인코딩하기 위한 것과 같은 방식으로 설정 또는 변경된 하나 이상의 특성을 갖는 신호를 의미한다. 제한을 가하지 않는 예로서, 통신 매체는 유선 네트워크 또는 직접-유선 연결과 같은 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다. 상기 중 임의의 것의 조합 또한 컴퓨터-판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 시작할 때 등에 컴퓨터(110) 내의 구성요소들 사이에 정보 전달을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(BIOS)(133)은 전형적으로 ROM(131)에 저장된다. RAM(132)은 전형적으로 즉시 액세스가능하고/거나 현재 프로세싱 유닛(120)에 의해 실행되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 제한을 가하지 않는 예로서, 도 1은 운영 시스템(134), 어플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 기타 분리형/비분리형 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1은 비분리형 비휘발성 자기 매체에 대해 판독 또는 기입하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)에 대해 판독 또는 기입하는 자기 디스크 드라이브(151), 및 CD ROM 또는 기타 광 매체와 같은 분리형 비휘발성 광 디스크(156)에 대해 판독 또는 기입하는 광 디스크 드라이브(155)를 도시한다. 예시적인 운영 환경에서 사용될 수 있는 기타 분리형/비분리형 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만 이들로 제한되지는 않는다. 하드 디스크 드라이브(141)는 전형적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 연결되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 전형적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 연결된다.
상기에 기술되고 도 1에 도시된 드라이브 및 관련 컴퓨터 저장 매체는 컴퓨터(110)에 대한 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 예를 들어, 도 1에서, 하드 디스크 드라이브(141)는 운영 시스템(144), 어플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이러한 컴포넌트들은 운영 시스템(134), 어플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 상이할 수도 있음을 유의해야 한다. 운영 시스템(144), 어플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 그들이 상이한 것들임을 나타내기 위하여 본원에서 상이한 번호를 부여받는다. 사용자는 태블릿(전자 디지타이저)(164), 마이크(163), 키보드(162) 및 일반적으로 마우스라 불리는 포인팅 장치(161), 트랙볼 또는 터치 패드와 같은 입력 장치를 통해 컴퓨터(110)에 명령어 및 정보를 입력할 수 있다. 기타 입력 장치(도시되지 않음)는 조이스틱, 게임 패드, 위성 디쉬, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 연결되는 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 연결되지만, 병렬 포트, 게임 포트 또는 USB와 같은 기타 인터페이스 및 버스 구조에 의해 연결될 수도 있다. 모니터(191) 또는 기타 타입의 디스플레이 장치 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 연결된다. 모니터(191)는 터치-스크린 인터페이스(192)와 같은 인터페이스를 통해 컴퓨터 시스템(110)에 손으로 작성하는 것과 같이 디지털화된 입력을 입력할 수 있는 터치-스크린 패널(193) 등과 통합될 수도 있다. 모니터 및/또는 터치 스크린 패널은 태블릿-타입 개인용 컴퓨터에서와 같이 컴퓨팅 장치(110)가 통합되는 하우징에 물리적으로 연결될 수 있으며, 터치 스크린 패널(193)은 본질적으로 태블릿(164)으로서 동작함을 유의해야 한다. 또한, 컴퓨팅 장치(110)와 같은 컴퓨터는 출력 주변 인터페이스(194) 등을 통해 연결될 수 있는 스피커(195) 및 프린터(196)와 같은 기타 주변 출력 장치도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터에의 논리적 연결을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 일반적인 네트워크 노드일 수 있고, 메모리 저장 장치(181)만이 도 1에 도시되었지만, 전형적으로 컴퓨터(110)에 관하여 상기 기술된 구성요소들 중 다수 또는 모두를 포함한다. 도 1에 도시된 논리적 연결은 근거리 통신망(LAN)(171) 및 광역 통신망(WAN)(173)을 포함하지만, 다른 네트워크들도 포함할 수 있다. 그러한 네트워킹 환경은 사무실, 기업-규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 연결된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 전형적으로 인터넷과 같은 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장 또는 외장일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적합한 메커니즘을 통해 시스템 버스(121)에 연결될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그들의 일부는 원격 메모리 저장 장치에 저장될 수 있다. 제한을 가하지 않는 예로서, 도 1은 원격 어플리케이션 프로그램(185)을 메모리 장치(181)에 상주하는 것으로 도시한다. 도시된 네트워크 연결은 예시적이며, 컴퓨터들 사이에 통신 링크를 구축하는 다른 수단들이 사용될 수 있음을 잘 알 것이다.
예시적인 그래픽 아키텍처
설명된 한 구현에서, 본 발명은 일반적으로 예를 들어 비주얼 API 계층을 직접 호출하거나, 비주얼 API 계층에의 호출에 통합되는 마크업을 제공함에 의하여 어플리케이션 프로그램, 데스크탑 시스템 등이 다양한 데이터를 고레벨 비주얼 시스템에 제출하는 미디어 통합 계층 스택(media integration layer stack)에 통합된다. 비주얼 시스템(visual system)은 자신에게 제출된 데이터에 기초하여 계층적 장면 그래프를 구성하고, 소정 렌더링 시각에, 장면 그래프를 명령어 및 기타 데이터로 프로세싱하고, 스택에 있는 컴포지터 서비스(compositor service)와 비동기식으로 통신하여 그들의 명령어 및 기타 데이터를 자신이 보유하고 있는 데이터 구조로 프로세싱한다. 저레벨 컴포지터 시스템은 아마도 여러 비주얼 시스템(클라이언트)으로부터의 통신을 그래픽 서브시스템에 의해 이해되는 그래픽 명령어, 및 보유된 그래픽 데이터의 일부를 수정하는 애니메이션 명령어 또는 간격에 통합할 수 있다. 저레벨 컴포지터 시스템은 그래픽 하드웨어의 리프레시율에 대응하는 속도로(예를 들어, 리프레시율로 또는 거의 리프레시율로) 자신의 그래픽 명령어들을 그래픽 서브시스템에 제공한다.
본 발명의 한 양상은 일반적으로 시스템 디스플레이상에 그래픽 출력을 렌더링하기 위하여 프로그램 코드-개시 그리기 명령어 및 기타 정보(예를 들어, 이미지 비트맵)를 수신 및 프로세싱하는 것에 관한 것이다. 이를 위하여, 본 발명은 다양한 컴포넌트, 데이터 구조 및 통신 프로토콜로 구현된 시스템 및 방법을 제공하며, 이들은 데이터를 저레벨 애니메이션 및 컴포지션 엔진 또는 컴포지터에 제공하기 위하여, 예를 들어, 사용자 인터페이스 스레드, 및 비주얼 시스템에 관련된 렌더링 스레드에서 함께 고레벨 컴포지션 엔진을 구동한다. 비주얼 시스템은 자신의 프로그램이 장면 그래프를 데이터 구조, 그리기 프리미티브(명령어) 및 기타 그래픽-관련 데이터로 채울 수 있게 하기 위하여 어플리케이션 프로그램 등에 기능(예를 들어, 어플리케이션 프로그래밍 인터페이스, 또는 API)을 제공한다.
도 2는 API 컴포지션 엔진에 대한 일반적이고 계층화된 아키텍처(200)를 나타낸다. 도 2에 나타내어진 바와 같이, 프로그램 코드(202)(예를 들어, 어플리케이션 프로그램 또는 운영 시스템 컴포넌트 등)는 이미징(204)을 통해, 벡터 그래픽 구성요소(206)를 통해, 및/또는 비주얼 어플리케이션 프로그래밍 인터페이스(API) 계층(212)에 직접 호출된 함수/메소드 호출을 통해서를 포함하는 하나 이상의 다양한 방식으로 그래픽 데이터를 출력하도록 개발될 수 있다. 벡터 그래픽 구성요소의 사용은 전술된 특허 출원 "벡터 그래픽을 위한 마크업 언어 및 객체 모델(Markup Language and Object Model for Vector Graphics)"에 기술되지만, API 계층과의 직접적인 상호작용은 전술된 공동 계류중인 특허 출원 "비주얼 및 장면 그래프 인터페이스(Visual and Scene Graph Interfaces)"에 더욱 기술된다.
일반적으로, 이미징 메커니즘(204)은 예를 들어 비트맵과 같은 이미지를 로드, 편집 및 저장하기 위한 메커니즘을 프로그램 코드에 제공한다. 이러한 이미지들은 시스템의 다른 부분들에 의해 사용될 수 있으며, 프리미티브 그리기 코드를 사용하여 이미지에 직접 그리는 방식도 존재한다. 벡터 그래픽 구성요소(206)는 비주얼 시스템의 객체 모델과 일관되는, 그래픽을 그리기 위한 또다른 방식을 제공한다. 벡터 그래픽 구성요소(206)는 마크업 언어를 통해 생성될 수 있고, 구성요소/속성 시스템(208) 및 제공자 시스템(210)은 비주얼 API 계층(212)에 적합한 호출을 행하도록 프로세싱한다. 일반적으로, 벡터 그래픽 구성요소(206)는 장면 그래프가 그려지는 객체 모델의 객체들로 파싱되며, 그것은 구성요소/속성 시스템(208) 및 제공자 시스템(210)을 통한 구성요소 레벨을 통해 장면 그래프에 제공될 수 있고, 또는 자원 레벨에서 보다 효율적인 방식으로 제공될 수 있다.
한 구현에서, 그래픽 계층 아키텍처(200)는 시각적 시스템(214)을 포함하고, 시각적 시스템은 시각적 API(212)에의 직접적 또는 간접적 호출을 통해 구성된, 계층적으로 배열된 객체들을 포함하는 장면 그래프(216)를 포함하거나, 그렇지 않으면 그와 관련된다. 일반적으로, 장면 그래프는 API 호출에 의해 생성된 구조적 품질 및 특정 렌더링 데이터를 모델링하고, 또한 어플리케이션이 질의할 읽기 서비스 및 속성의 집합을 제공한다. 일반적으로, 시각적 API 계층(212)은 프로그램 코드(및 제공자 시스템)에 장면 그래프(216)에의 인터페이스를 제공하며, 인터페이스는 객체를 생성하고, 객체에 데이터를 제공하기 위하여 객체를 열고 닫는 등의 기능을 포함한다. 즉, 시각적 시스템(214)은 개발자가 그래픽 정보를 디스플레이하기 위하여 그래픽 및 미디어에 대한 의도를 표현하고, 플랫폼이 프로그램 코드에 대한 하드웨어의 사용을 최적화할 수 있도록 충분한 정보를 기반 플랫폼에 제공할 수 있게 하는 통합 미디어 API 계층(212)을 노출한다. 예를 들어, 기반 플랫폼은 캐싱, 자원 협상 및 미디어 통합을 책임질 것이다.
본 발명의 양상에 따라, 그리고 하기에 기술된 바와 같이, 비주얼 시스템(214)은 컴포지터(저레벨 컴포지션 및 애니메이션 엔진)(218)의 클라이언트로서 동작하고, 적합한 데이터를 컴포지터에 전달하여 원하는 프레임이 렌더링되도록 한다. 일반적으로, 비주얼 시스템(214)은 전형적으로 컴포지터(218)보다 더욱 계산 집약적인 동작을 수행하는 사용자 인터페이스 컴포넌트를 포함하고, 따라서 비주얼 시스템(214)의 이러한 양상은 전형적으로 컴포지터의 동작 속도에 비하여 상대적으로 더 느린 속도로 동작한다. 본원에서 사용될 때, "고레벨" 및 "저레벨"이라는 용어는 다른 컴퓨팅 시나리오들에서 사용되는 용어들과 유사하며, 일반적으로 상부 컴포넌트들에 비하여 소프트웨어 컴포넌트가 더 하부에 있을수록, 그 컴포넌트는 하드웨어에 더 가깝다는 점을 유의해야 한다. 따라서, 예를 들어, 비주얼 시스템의 고레벨 컴포지션 및 애니메이션 엔진 코드로부터 전송된 그래픽 정보가 저레벨 데스크탑 컴포지션 및 애니메이션 엔진에서 수신될 수 있고, 그 정보는 하드웨어를 포함하는 그래픽 서브시스템(222)에 그래픽 데이터를 전송하기 위해 사용된다.
본 발명의 양상에 따라, 비주얼 시스템(214)은 렌더링 스레드에 의해 컴포지터(218)에 제공된 데이터로 프로세싱되는 애니메이션 기능 데이터 및 기타 데이터(예를 들어, 비트맵으로의 포인터)와 같은 장면 변경 데이터, 명령어와 같은 다양한 정보를 전달한다. 즉, 비주얼 시스템(214)은 저레벨 컴포지션 시스템(218)상에 형성되고, 하기에 기술된 바와 같이 여러 데스크탑 어플리케이션 사이에 공유되는 사용자 인터페이스 스레드 및 렌더링 스레드를 포함한다. 이러한 저레벨 컴포지션 시스템(218)은 장치 리프레시율에 필적하며, 컨텐츠를 전송하는 어플리케이션과 상이한 프로세스에 상주한다. 개개의 클라이언트(어플리케이션) 비주얼 시스템과의 이러한 분리는 개개의 어플리케이션 애니메이션의 비용이 시스템 스케줄러에 의해 적절히 조정 및 핸들링되도록 한다. 또한, 어플리케이션-상주 컴포지션 엔진(스레드)은 유사한 어플리케이션-상주 컴포지션 스레드들에 공통적인 카테고리에 자신의 전용 스레드를 그룹화할 수 있다. 예를 들어, CPU 스케줄링 예약 시스템을 사용하여, 시스템상에서 실행되는 어플리케이션에 CPU 비율 소모에 대한 최대 및 최소 한도가 적용될 수 있다.
하기에 기술된 바와 같이, 비주얼 시스템(214)은 선언적(또는 기타) 애니메이션 제어(예를 들어, 애니메이션 기능, 간격 및 기타 파라미터) 및 타이밍 제어를 제공하기 위하여 타이밍 및 애니메이션 시스템(220)과 통합한다. 애니메이션 시스템은 애니메이트 값(animate value)이 본질적으로 예를 들어 구성요소 속성 레벨, 비주얼 API 계층(212) 내부, 및 다른 소스들 중 임의의 것을 포함하는 시스템의 어느 곳에든지 전달되도록 함을 유의해야 한다. 타이밍 시스템은 구성요소 및 비주얼 레벨에서 노출된다.
컴포지터(218)는 장면의 구성, 애니메이팅 및 렌더링을 관리하며, 그 후 그래픽 서브시스템(222)에 제공된다. 한 구현에서, 비주얼 시스템은 애니메이션 및 컴포지션 기능을 제공하는 (동일한 프로세스의) 제2 스레드와 관련하여 동작하는 사용자 인터페이스 스레드를 포함한다. 따라서, 여러 어플리케이션의 장면들로부터의 그래픽의 렌더링을 구현하는 (상이한 프로세스의) 컴포지션 컴포넌트들로부터 분리되는 컴포지션 컴포넌트가 각 비주얼 시스템에 존재한다. 예를 들어, 더 낮은 계층들이 여러 어플리케이션으로부터의 요청을 서비스하는 반면, 비주얼 시스템은 어플리케이션별 기반으로 인스턴스화되는 것과 같이, 때때로 렌더링 중 몇몇은 고레벨에서 발생하는 것이 유리하며, 이에 의해 이미징 메커니즘을 통해 고레벨에서 시간-소모적 또는 어플리케이션-특유 렌더링을 수행하고, 비트맵에 대한 참조를 컴포지터(218)에게 전달하는 것이 가능함을 유의해야 한다.
이제 API 컴포지션 엔진과 데스크탑 컴포지션 엔진 둘 사이에 공유되는 것은 API 컴포지션 엔진에 대해 상기에 기술된 저레벨 컴포지션이다. API 컴포지션 엔진과 데스크탑 컴포지션 엔진 둘 모두에 대한 저레벨 컴포지션을 결합하는 것의 결과가 본 발명의 통합 컴포지션 엔진이다. 하기의 예시적인 구현에 대한 논의에 기술된 바와 같이, 통합 컴포지션 엔진은 API 컴포지션 엔진과 데스크탑 컴포지션 엔진 둘 모두에 대한 자원 관리를 달성하여 디스플레이를 위한 장면을 생성한다.
도 3에 나타내어진 바와 같이, 국부적으로 디스플레이된 출력에 대안적으로 또는 부가적으로, 컴포지터(218)(또는 그에 유사한 것)는 프린터(232) 등에 고정 이미지 데이터를 전송하기 위한 적합한 포맷으로 저레벨 프린팅 코드(230)에 렌더링 및 애니메이션 명령어를 제공할 수 있고/거나, 원격 기계(238)에 전송하기 위한 적합한 포맷으로 저레벨 터미널 전송 서버(236)에 렌더링 명령어 및 단순한 애니메이션 간격을 제공할 수 있다. 보다 풍부한 정보도 네트워크를 통해 전달될 수 있음을 유의해야 하며, 예를 들어, 어떠한 네트워크 트래픽 없이도, 원격 기계가 마우스 롤오버 효과를 국부적으로 핸들링하도록 하는 것이 바람직할 수 있다.
예시적인 구현
도 4는 본 발명에 따른 통합 컴포지션 엔진을 이용하기 위한 개략적 아키텍처를 도시한다. 통합 컴포지션 엔진 아키텍처는 마스터 자원 테이블(master resource table)(402), 비주얼 트리(visual tree)(404), 컴포지션 장치 인터페이스(composition device interface)(406), 변경 큐(change queue)(408), 통지 큐(notify queue)(410), 컴포지션 트리(composition tree)(412) 및 슬레이브 자원 테이블(slave resource table)(414)을 포함한다.
통합 컴포지션 엔진 아키텍처는 논리적으로 두 개의 계층으로 분리되며, 상위 계층 또는 클라이언트 계층(401)(즉, 비주얼 시스템)은 통합 컴포지션 엔진의 주요 클라이언트인 비주얼 트리(404)(즉, 계층적 데이터 구조)를 포함하고, 하위 계층은 적합한 통합 컴포지션 엔진(420)이다. 비주얼 트리(404)는 주요 클라이언트에게 통합 컴포지션 엔진 사이의 상호작용을 제공하고, 클라이언트 및 통합 컴포지션 엔진에 의해 유지된 자원 테이블(예를 들어, 402, 414) 사이의 상호작용을 제공한다.
본 발명에 따라, 비주얼 트리(404) 대신 데스크탑 윈도우 관리자가 통합 컴포지션 엔진(420)에 대한 클라이언트가 될 수 있다. 통합 컴포지션 엔진(420)이 데스크탑 컴포지션 엔진으로 사용되는 경우에 데스크탑 윈도우 관리자가 클라이언트이다. 이제 비주얼 트리(404) 및 데스크탑 윈도우 관리자가 통합 컴포지션 엔진(420)의 클라이언트인 경우에 대해 동일한 라이브러리가 동일한 컴포지션을 실행할 것이다. 어플리케이션의 비주얼 트리 및 데스크탑 윈도우 관리자에 대해 상이한 프로세싱이 실행되고, 그들은 각각 상이한 데이터를 다루지만(즉, 패이로드가 변함), 통합 컴포지션 엔진(420)에 대한 프로토콜은 일정하게 유지된다. 일 실시예에서, 데스크탑 윈도우 관리자의 사용을 위한 프로토콜은 어플리케이션이 클라이언트인 경우에 이용가능한 프로토콜들 중 기능적 부분집합을 포함한다.
예로서, 클라이언트 계층(401)과 통합 컴포지션 엔진(420) 사이의 상호작용뿐 아니라 자원 관리도 어플리케이션이 클라이언트인 경우에 대해 하기에 기술된다. 비주얼 트리(404)는 디스플레이될 장면의 어플리케이션 표현 또는 문서 표현을 나타낸다. 이러한 장면은 매우 거대할 수 있고, 어쩌면 현재 보이는 것보다 훨씬 더 거대할 수 있다. 각 비주얼(예를 들어, 참조번호(405))의 컨텐츠는 렌더링 명령어들 또는 RenderData의 리스트, 및 도형, 포인트, 펜, 브러시, 이미지 등과 같은 사용하는 자원에 의해 정의된다. 이러한 자원들은 각 자원에 대해 장치 및 해상도에 독립적인 데이터, 및 몇몇 경우들에는 컬렉션 또는 자원에 의존적인 형태를 포함하는 마스터 자원 테이블(402)에 의해 관리된다. 마스터 자원 테이블(402)은 (예를 들어, 참조 카운팅을 통해) 자원의 수명을 관리할 책임이 있다.
비주얼 트리가 디스플레이될 때까지 비주얼 트리(예를 들어, 참조번호(404)) 또는 자원에 대한 어떠한 정보도 통합 컴포지션 엔진(420)에 전송되지 않는다. 비주얼 트리(예를 들어, 참조번호(404))가 렌더 타겟(render target)에 관련되는 경우, 비주얼 트리는 그 트리의 표현을 적합한 자원과 함께 통합 컴포지션 엔진(420)에 전송한다. 통신은 컴포지션 장치 인터페이스(406)의 변경 큐(408)를 통해 비동기식으로 이루어진다. 본원에서 총괄적으로 컴포지션 트리(412)(즉, 컴포지터 데이터 구조)라고 불리는 비주얼 트리(404)의 잠재적으로 보이는 부분집합만이 통합 컴포지션 엔진(420)에 나타내어진다. 비주얼 트리가 알려진 해상도의 렌더 타겟에 연결되는 경우에 비주얼 트리가 디스플레이된다. 그러므로, 타겟 공간을 렌더링하기 위한 객체로부터의 전체 변환이 클라이언트에게 알려진다.
통합 컴포지션 엔진(420)에 전송된 자원은 콜백 또는 요구된 실현이 전송되지 않고서 통합 컴포지션 엔진(420)에 의해 직접 실현될 수 있다. "Text" 및 "Images"와 같은 자원은 실현하는 데에 비용이 많이 들고(프로세싱 오버헤드 관점에서), 그러므로 비주얼 트리(404)에서 적합한 "렌더링할 준비가 된(ready-to-render)" 형태로 변환된다. 쉽게 렌더링될 수 있는 형태로 자원을 변환하는 것은 통합 컴포지션 엔진(420)에서 컴포지션을 위한 오버헤드를 절약한다. 자원이 사용자 코드에의 임의의 콜백을 필요로 하는 경우에 자원은 비주얼 트리(420)에서도 실현된다. 필요할 때에 통합 컴포지션 엔진(420)에 의해 올바른 해상도로 효율적으로 테셀레이션(tessellation)될 수 있는 "Geometry"와 같은 기타 자원들은 통합 컴포지션 엔진(420) 자체에 의해 실현된다.
통합 컴포지션 엔진(420)은 슬레이브 자원 테이블(414)에 자원을 관리한다. 일 실시예에서, 슬레이브 자원 테이블(414)은 성능을 증가시키도록 어떠한 형태의 참조 카운팅도 수행하지 않는다. 이것은 슬레이브 자원 테이블(414)의 자원이 컴포지션 장치에 대한 단일 컴포지션 스레드에 대해 액세스되기 때문에 가능하다. 일 실시예에서, 슬레이브 자원 테이블(414)의 모든 자원이 마스터 자원 테이블(402)에도 존재한다. 마스터 자원 테이블(402)은 직렬화된 변경 큐(408) 요청을 통해 슬레이브 자원 테이블(414)의 자원의 수명을 제어한다. 통합 컴포지션 엔진(420)은 핸들에 의해 자원을 참조한다. 일 실시예에서, 자원 룩업이 실패하는 경우, 통합 컴포지션 엔진(420)이 통지 큐(410)에 메시지를 포스팅하고, 그 자원을 필요로 하는 프로세싱을 단순히 스킵한다. 통합 컴포지션 엔진(420)은 단일 스레드로서 동작하고, 일정한 컴포지션 루프로 동작한다.
도시된 통합 컴포지션 아키텍처에 대한 본 발명의 한 양상은 아키텍처의 자원 사용이다. 자원은 "상이한 해상도 및/또는 물리적 장치에 대해 상이한 실현을 필요로 하고, 컴포지션 트리 내에서 여러 번 사용되며, 예를 들어 애니메이션을 통해 사용자에 독립적으로 변경할 수 있는 장면을 렌더링하기 위해 필요한 임의의 객체"로서 정의될 수 있다. 자원은 통합 컴포지션 엔진(420) 및 클라이언트 계층(401)에서 테이블(예를 들어, 마스터 자원 테이블(402))의 레코드로서 표현되고, 핸들에 의해 참조된다. 자원을 사용하는 객체들은 핸들에 의해 자원을 사용한다. 핸들은 실제 객체에의 포인터를 획득하기 위하여 자원 테이블(예를 들어, 마스터 자원 테이블(402))에서 룩업될 수 있다. 자원은 자신을 직렬화하고, 갱신을 적용하며, 특정 해상도 및 장치에 대한 실현을 제공할 수 있다.
자원은 일반적으로 그리기 자원(drawing resource), 값 자원(value resource), 및 구조 자원(structural resource)과 같은 몇 가지 타입으로 분리된다. 그리기 자원은 렌더링 계층에 의해 정의된 객체이며, 그 계층에 의해 직접 소비될 수 있다. 그리기 자원의 예는 RenderData, Bitmap, Image, Glyphrun, Geometry 및 Brush를 포함한다. 그리기 자원은 단순 및 복합 카테고리로 더욱 분리될 수 있다.
매우 저렴하고 일정한 렌더링 비용을 갖는 그리기 자원은 컴포지션 동안 장치 및 해상도에 독립적인 소스 데이터로부터 직접 실현될 수 있다. Geometry는 통합 컴포지션 엔진(420)의 컴포지션 루프에서 최종 요구된 해상도로 효율적으로 테셀레이션될 수 있기 때문에 단순 그리기 자원이다. 대조적으로, 복합 그리기 자원은 복합 계산, 사용자 코드로의 콜백, 또는 실현을 생성하기 위한 입력/출력을 필요로 한다. 일 실시예에서, 복합 그리기 자원은 통합 컴포지션 엔진(420)에 의해 실현되지 않는다. 대신, 적합한 실현이 컴포지션 이전에 클라이언트 계층(401)에서 제공된다. "Image"는 복합 자원의 예이다. Image는 디스크로부터 읽혀져 디코딩되어 적합한 해상도로 샘플링되고 필터링된다.
값 자원은 또다른 자원에 의해 사용된 단순 가변성 또는 애니메이트 값을 나타낸다. 값 자원의 예는 Double, Point, Color 및 Transform이다. 예를 들어, 포인트 중 하나가 애니메이션, 또는 어플리케이션에 의한 긴급한 지시를 통해 변경될 것이 예상되는 라인을 그리기 위해 RenderData 자원은 Point 자원을 참조할 수 있다. 값 자원은 정적 또는 애니메이트일 수 있다. 값 자원이 애니메이트인 경우, 값 자원은 값이 시간에 따라 어떻게 변하는지를 정의하는 애니메이션 간격 데이터(animation interval data)를 포함한다.
구조 자원은 컴포지션 프로세스에서의 역할을 맡지만 렌더링의 직접적인 부분은 아닌 객체이다. 이러한 객체들은 변경 큐를 통해 갱신에 참여할 수 있도록, 그리고 Value 자원을 사용하여 내부 값을 갱신하기 위해 사용할 수 있도록 자원으로서 구현된다. 현재 식별된 몇몇 구조 자원들은 Composition Node 및 Render Target을 포함한다.
일반적으로, 자원은 그들이 사용될 수 있기 전에 실현되어야 한다. 실현(realization)은 "주어진 해상도에 적합하고 특정 장치에 의해 사용될 준비가 된 자원의 표현"이라고 할 수 있다. 실현의 예는 특정 해상도 및 변환에 대해 삼각형들로 테셀레이션되고 잠재적으로 이미 비디오 카드상의 정점 버퍼에 로드된 Geometry이다. 실현은 통합 컴포지션 엔진(420)에서 요구 시 생성되거나, 클라이언트 계층(401)에서 생성되어 통합 컴포지션 엔진(420)에 전송된다. 필요한 자원 실현이 발견 또는 생성될 수 없는 경우, 통지 큐(410)를 통해 통지가 클라이언트 레벨(401)에 큐잉된다. 통지는 사용된 실현의 임의의 변환과 함께 자원 핸들, 변환, 및 필요한 장치를 나타낸다.
자원 자체가 중요한 만큼 자원이 어떻게 관리되는지도 중요하다. 자원은 잠재적으로 몇몇 모순적인 요구사항을 갖는다. 즉, 자원이 가능한 한 빨리 제거되도록 효율적인 수명 관리, 자원이 거대할 수 있기 때문에 효율적인 메모리 저장, 멀티-스레드 안전 핸들 프로세싱, 예상된 자원이 손실된 경우에도 동작하는 견고한 코드, 및 자연스러운 컴포지션을 보장하기 위한 실현의 효율적인 룩업이 그것이다. 도시된 통합 컴포지션 엔진 아키텍처는 요구사항들을 두 개의 집합으로 분리되도록 하며, 두 개의 집합은 요구사항 중 제1 집합을 충족시키는 마스터 자원 테이블(402), 및 요구사항 중 제2 집합을 충족시키는 슬레이브 자원 테이블(414)이다.
마스터 자원 테이블(402)은 안전하고 효율적인 메모리 관리를 위해 전체가 참조 카운팅되며, 스레드가 안전하도록 동기화된다. 참조 카운팅은 특정 자원이 이용되는 횟수를 일컫는다. 대조적으로, 슬레이브 자원 테이블(414)은 단일 스레드에 대해 동작하며, 참조 및 락 프리 설계(reference and lock free design)를 이용한다.
마스터 자원 테이블(402)은 클라이언트 계층(401) 어플리케이션 내에서 사용된 자원들 모두를 관리한다. 마스터 자원 테이블(402)은 핸들을 할당하는 것, 핸들 레코드, 자원 및 실현을 참조 카운팅하는 것, 자원을 슬레이브 자원 테이블(414)에 전송하고 슬레이브 자원 테이블(414) 자원의 수명을 제어하는 것을 담당하고 있다. 마스터 자원 테이블(402)은 대부분이 현재 디스플레이되지 않는 수만 개의 객체를 관리할 수 있지만, 비주얼 트리(404)는 자원이 디스플레이에 이용될 때까지 자원을 생성하지 않는다. 비주얼 트리(404)가 디스플레이되면, 비주얼 트리(404)가 순회되어 필수적인 자원들이 통합 컴포지션 엔진(420)에 전송되어 슬레이브 자원 테이블(414)에서 관리된다. 특정 자원이 더이상 컴포지션을 위해 필요하지 않으면, 비주얼 트리(404)는 컴포지션 장치(예를 들어, 도 2의 참조번호(218))에게 자원을 삭제하도록 알린다. 어플리케이션이 여러 뷰어에게 멀티캐스팅되는 경우, 비주얼 트리(404)는 동일한 정보를 여러 컴포지션 장치에 전송한다. 마스터 자원 테이블(412)은 각 자원의 표현을 어느 컴포지션 장치가 보유하는지를 추적한다.
본 발명의 한 양상에서, 자원 데이터는 클라이언트 계층(401)과 통합 컴포지션 엔진(420) 사이에 공유된다. 일단 생성된 공유 데이터가 "읽기 전용"으로 분류되면 자원 데이터가 공유될 수 있고, 공유된 데이터는 통합 컴포지션 엔진(420)에 "복사"되기 전에 완료되며, 비주얼 트리(404)는 공유 데이터의 수명을 제어하고, 통합 컴포지션 엔진(420) 객체는 비주얼 트리(404)로부터의 명시적 요청에 의해 먼저 삭제된다. 이러한 요구사항들의 집합은 슬레이브 자원 테이블(414)의 데이터가 마스터 자원 테이블(402)과 일관된 상태로 유지됨을 보장한다.
도 5는 본 발명에 따른 단일 어플리케이션 도메인에 대한 다수의 통합 컴포지션 엔진(UCE)에 대한 개략적 아키텍처를 도시한다. 이러한 아키텍처는 클라이언트 계층에 단일 어플리케이션 도메인을 포함하지만, 어플리케이션과 관련하여 장면을 컴포지션하기 위한 다수의 통합 컴포지션 엔진을 포함한다. 논리적 컴포지션 장치(예를 들어, UCE C로의 컴포지션 장치)는 어플리케이션(즉, 컴포지션 클라이언트)과, 다수의 통합 컴포지션 엔진 각각의 사이의 연결을 정의한다. 이러한 아키텍처가 사용될 수 있는 경우의 예는 단일 어플리케이션이 네트워크를 통해 하나 이상의 기계에 디스플레이되는 원격 조력 또는 기타 상황의 경우에서이다. 단일 어플리케이션 도메인과 관련하여 사용될 수 있는 통합 컴포지션 엔진의 수는 도시된 3개로 제한되지 않으며, 원하는 대로 임의의 수일 수 있다.
도 6은 본 발명에 따른 단일 통합 컴포지션 엔진에 대한 다수의 어플리케이션 도메인에 대한 개략적 아키텍처를 도시한다. 이러한 아키텍처는 클라이언트 계층에 여러 어플리케이션 도메인을 포함하지만, 다수의 어플리케이션과 관련하여 장면을 컴포지션하기 위한 단일 통합 컴포지션 엔진을 포함한다. 논리적 컴포지션 장치(예를 들어, UCE C로의 컴포지션 장치)는 어플리케이션들 각각(즉, 컴포지션 클라이언트)과 통합 컴포지션 엔진 사이의 연결을 정의한다. 이러한 아키텍처가 사용될 수 있는 경우의 예는 단일 컴퓨팅 장치의 여러 어플리케이션들 각각이 자신의 도메인을 갖도록 요구되는 경우에서이다. 단일 통합 컴포지션 엔진과 관련하여 사용될 수 있는 어플리케이션 도메인의 수는 도시된 3개로 제한되지 않으며, 원하는 대로 임의의 수일 수 있다.
상기 설명, 예 및 데이터는 본 발명의 컴포지션의 제조 및 사용에 대한 완전한 설명을 제공한다. 본 발명의 여러 실시예들이 본 발명의 취지 및 범위를 벗어나지 않고서 행해질 수 있기 때문에, 본 발명은 첨부되는 특허청구범위에 속한다.

Claims (22)

  1. 컴퓨팅 환경에서,
    계층적 데이터 구조를 구성하기 위하여 프로그램 및 윈도우 데스크탑 관리자 중 하나로부터의 호출을 수신하는 비주얼 시스템(visual system), 및
    상기 비주얼 시스템으로부터 명령어를 수신하며, 상기 명령어에 응답하여 그래픽 출력을 제공하도록 컴포지터 데이터 구조(compositor data structure)를 구성하는 통합 컴포지션 엔진(unified composition engine)
    을 포함하는 시스템.
  2. 제1항에 있어서,
    상기 통합 컴포지션 엔진은 제2 컴포지션 서비스로부터 분리된 제1 컴포지션 서비스를 포함하며, 상기 제1 컴포지션 서비스는 상기 비주얼 시스템에 통합되고, 상기 제2 컴포지션 서비스에 데이터를 제공하도록 구성되는 시스템.
  3. 제1항에 있어서,
    상기 비주얼 시스템에 포함되고, 상기 어플리케이션 및 상기 데스크탑 윈도우 관리자 중 하나에 의해 사용된 자원에 관한 제1 자원 리스트를 포함하는 마스터 자원 테이블(master resource table), 및
    상기 통합 컴포지션 엔진에 포함되고, 상기 통합 컴포지션 엔진에 제공된 자 원에 관한 제2 자원 리스트를 포함하며, 상기 마스터 자원 테이블에 의해 관리되는 슬레이브 자원 테이블(slave resource table)
    을 더 포함하는 시스템.
  4. 제3항에 있어서,
    상기 제2 자원 리스트는 상기 제1 자원 리스트에 비교할 때 포괄적인(inclusive) 자원 리스트인 시스템.
  5. 제3항에 있어서,
    상기 마스터 자원 테이블은 핸들을 할당하는 것, 핸들 레코드, 자원 및 실현(realization)을 참조 카운팅(reference counting)하는 것, 상기 슬레이브 자원 테이블에 자원을 전송하고 상기 슬레이브 자원 테이블의 자원의 수명을 제어하는 것을 담당하는 시스템.
  6. 제3항에 있어서,
    상기 마스터 자원 테이블은 직렬화된 요청을 통해 상기 슬레이브 자원 테이블의 자원의 수명을 명시적으로 제어하는 시스템.
  7. 제1항에 있어서,
    상기 통합 컴포지션 엔진이 상기 데스크탑 윈도우 관리자에 응답하여 동작하 는 경우, 및 상기 통합 컴포지션 엔진이 프로그램에 응답하여 동작하는 경우, 동일한 라이브러리가 동일한 컴포지션을 실행하는 시스템.
  8. 제1항에 있어서,
    상기 통합 컴포지션 엔진이 상기 데스크탑 윈도우 관리자에 응답할 때 사용할 프로토콜은, 상기 통합 컴포지션 엔진이 상기 프로그램에 응답할 때 사용할 프로토콜의 기능적 부분집합을 포함하는 시스템.
  9. 제1항에 있어서,
    상기 슬레이브 자원 테이블의 자원은 단일 컴포지션 스레드에 대해 액세스되는 시스템.
  10. 제1항에 있어서,
    상기 통합 컴포지션 엔진은 단일 스레드로서 동작하고, 일정한 컴포지션 루프로 동작하는 시스템.
  11. 제1항에 있어서,
    상기 그래픽 출력이 자신들에 대응하도록 상기 통합 컴포지션 엔진에 통신하는 부가적인 비주얼 시스템들을 더 포함하는 시스템.
  12. 제1항에 있어서,
    상기 비주얼 시스템에 대응하는 다수의 그래픽 출력이 생성되도록 상기 비주얼 시스템에 통신하는 부가적인 통합 컴포지션 엔진들을 더 포함하는 시스템.
  13. 컴퓨팅 시스템에서,
    프로그램 및 데스크탑 윈도우 관리자 중 하나로부터 호출을 수신하는 단계 - 상기 호출에 응답하여 계층적 장면 구조(hierarchical scene structure)가 구성됨 - ,
    상기 계층적 데이터 구조에 대한 변경을 나타내는 정보를 통합 컴포지션 엔진에 전달하는 단계,
    상기 통합 컴포지션 엔진에 자원들의 집합을 전달하는 단계 - 상기 자원들의 집합은 상기 계층적 데이터 구조에 관련되는 마스터 자원 테이블에 대응함 - ,
    상기 전달된 정보에 기초하여 컴포지터 데이터 구조내의 정보를 갱신하는 단계,
    상기 전달된 자원들의 집합에 기초하여 슬레이브 자원 테이블을 갱신하는 단계 - 상기 슬레이브 자원 테이블은 상기 컴포지터 데이터 구조에 관련됨 - , 및
    상기 컴포지터 데이터 구조를 프로세싱하여 그래픽 정보를 출력하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서,
    상기 계층적 장면 구조를 구성하는 프로세스는, 상기 그래픽 정보 출력을 생성하기 위한 상기 컴포지터 데이터 구조의 프로세싱에 비교할 때 비동기식으로 수행되는 방법.
  15. 제13항에 있어서,
    상기 슬레이브 자원 테이블은 상기 마스터 자원 테이블에 비교할 때 포괄적인 자원 리스트인 자원 리스트를 포함하는 방법.
  16. 제13항에 있어서,
    상기 마스터 자원 테이블에 응답하여 상기 슬레이브 자원 테이블의 자원의 수명을 제어하는 단계를 더 포함하는 방법.
  17. 제13항에 있어서,
    상기 통합 컴포지션 엔진이 상기 데스크탑 윈도우 관리자에 응답하여 동작하는 경우 제1 라이브러리에 따라 상기 통합 컴포지션 엔진을 사용하여 컴포지션을 실행하고, 상기 통합 컴포지션 엔진이 프로그램에 응답하여 동작하는 경우 상기 제1 라이브러리에 따라 상기 통합 컴포지션 엔진을 사용하여 컴포지션을 실행하는 단계를 더 포함하는 방법.
  18. 제13항에 있어서,
    상기 통합 컴포지션 엔진이 상기 데스크탑 윈도우 관리자에 응답할 때 사용할 프로토콜은, 상기 통합 컴포지션 엔진이 상기 프로그램에 응답할 때 사용할 프로토콜의 기능적 부분집합을 포함하는 방법.
  19. 제13항에 있어서,
    단일 컴포지션 스레드에 대해 상기 슬레이브 자원 테이블의 자원을 액세스하는 단계를 더 포함하는 방법.
  20. 제13항에 있어서,
    상기 통합 컴포지션 엔진을 단일 스레드로서, 그리고 일정한 컴포지션 루프로 실행하는 단계를 더 포함하는 방법.
  21. 제13항에 있어서,
    상기 그래픽 출력 정보가 부가적인 프로그램에 대응하도록, 부가적인 정보 및 부가적인 자원 집합을 상기 통합 컴포지션 엔진에 전달하는 단계를 더 포함하는 방법.
  22. 제13항에 있어서,
    상기 프로그램 및 데스크탑 윈도우 관리자 중 하나에 대응하는 다수의 그래픽 출력 정보가 생성되도록, 상기 정보 및 자원 집합을 다수의 통합 컴포지션 엔진 에 전달하는 단계를 더 포함하는 방법.
KR1020067004470A 2003-10-23 2004-07-29 그래픽 프로세싱 시스템내의 통합 컴포지션 엔진을 위한시스템 및 방법 KR101087361B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/692,288 US7012606B2 (en) 2003-10-23 2003-10-23 System and method for a unified composition engine in a graphics processing system
US10/692,288 2003-10-23
PCT/US2004/024421 WO2005045580A2 (en) 2003-10-23 2004-07-29 System and method for a unified composition engine in a graphics processing system

Publications (2)

Publication Number Publication Date
KR20060126435A true KR20060126435A (ko) 2006-12-07
KR101087361B1 KR101087361B1 (ko) 2011-11-25

Family

ID=34522083

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067004470A KR101087361B1 (ko) 2003-10-23 2004-07-29 그래픽 프로세싱 시스템내의 통합 컴포지션 엔진을 위한시스템 및 방법

Country Status (14)

Country Link
US (1) US7012606B2 (ko)
EP (1) EP1676245A4 (ko)
JP (2) JP4764345B2 (ko)
KR (1) KR101087361B1 (ko)
CN (1) CN1860505B (ko)
AU (1) AU2004287140B2 (ko)
BR (1) BRPI0414431A (ko)
CA (1) CA2537138A1 (ko)
MX (1) MXPA06003282A (ko)
MY (1) MY137202A (ko)
RU (1) RU2355031C2 (ko)
TW (1) TWI344603B (ko)
WO (1) WO2005045580A2 (ko)
ZA (1) ZA200602390B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140030226A (ko) * 2011-06-02 2014-03-11 마이크로소프트 코포레이션 글로벌 저작 시스템
US10319137B2 (en) 2009-06-18 2019-06-11 Scalable Display Technologies, Inc. System and method for injection of mapping functions

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7064766B2 (en) 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US7619633B2 (en) 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US6919891B2 (en) 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
US7443401B2 (en) * 2001-10-18 2008-10-28 Microsoft Corporation Multiple-level graphics processing with animation interval generation
US7417645B2 (en) 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7486294B2 (en) * 2003-03-27 2009-02-03 Microsoft Corporation Vector graphics element-based model, application programming interface, and markup language
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7466315B2 (en) * 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7603624B2 (en) * 2004-10-21 2009-10-13 Microsoft Corporation System and method for styling content in a graphical user interface control
US8631342B2 (en) * 2004-12-22 2014-01-14 Hewlett-Packard Development Company, L.P. Computer display control system and method
US20060168537A1 (en) * 2004-12-22 2006-07-27 Hochmuth Roland M Computer display control system and method
US8130226B2 (en) * 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
US9019300B2 (en) 2006-08-04 2015-04-28 Apple Inc. Framework for graphics animation and compositing operations
JP5237292B2 (ja) * 2006-10-25 2013-07-17 テレフオンアクチーボラゲット エル エム エリクソン(パブル) リッチ・メディア・ストリームの管理
US7996787B2 (en) * 2007-02-06 2011-08-09 Cptn Holdings Llc Plug-in architecture for window management and desktop compositing effects
US8108799B2 (en) * 2007-03-30 2012-01-31 Microsoft Corporation Remoting of windows presentation framework based applications in a non-composed desktop
US20080250424A1 (en) * 2007-04-04 2008-10-09 Ms1 - Microsoft Corporation Seamless Window Implementation for Windows Presentation Foundation based Applications
KR20080114496A (ko) * 2007-06-26 2008-12-31 삼성전자주식회사 레이저 콘텐츠를 이용하여 장면을 구성하는 방법 및 장치
US9589381B2 (en) * 2008-06-12 2017-03-07 Microsoft Technology Licensing, Llc Copying of animation effects from a source object to at least one target object
KR20100088049A (ko) * 2009-01-29 2010-08-06 삼성전자주식회사 사용자 인터페이스 구성 객체들로 이루어진 콘텐츠의 사전 예측 불가능한 경로를 통하여 수신되는 정보들의 처리 방법 및 이를 위한 장치
US8771064B2 (en) 2010-05-26 2014-07-08 Aristocrat Technologies Australia Pty Limited Gaming system and a method of gaming
US20110298787A1 (en) * 2010-06-02 2011-12-08 Daniel Feies Layer composition, rendering, and animation using multiple execution threads
US9563971B2 (en) * 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
US8793696B2 (en) * 2011-10-13 2014-07-29 Google, Inc. Dynamic scheduling for frames representing views of a geographic information environment
US9075631B2 (en) 2011-10-18 2015-07-07 Blackberry Limited Method of rendering a user interface
EP2584464B1 (en) * 2011-10-18 2020-02-19 BlackBerry Limited Method of rendering a user interface
TWI597662B (zh) 2012-01-30 2017-09-01 晨星半導體股份有限公司 電視系統中的儲存媒體及其應用程式管理方法
US8547480B1 (en) * 2012-06-25 2013-10-01 Google Inc. Coordinating distributed graphics rendering in a multi-window display
US9069905B2 (en) * 2012-07-16 2015-06-30 Microsoft Technology Licensing, Llc Tool-based testing for composited systems
TWM471654U (zh) * 2013-02-07 2014-02-01 Asustek Comp Inc 可攜式電子裝置
US9846597B2 (en) 2013-03-13 2017-12-19 Microsoft Technology Licensing, Llc Durable program execution
RU2580468C9 (ru) * 2013-04-24 2017-03-24 Общество С Ограниченной Ответственностью "Э-Студио" Способ управления доступом к множеству вычислительных ресурсов
US9542906B2 (en) * 2013-05-10 2017-01-10 Microsoft Technology Licensing, Llc Shared compositional resources
US20140344729A1 (en) * 2013-05-15 2014-11-20 Microsoft Corporation Primitive-based composition
US9996892B2 (en) 2014-11-21 2018-06-12 Intel Corporation Apparatus and method for efficient graphics processing in a virtual execution environment
US10147158B2 (en) 2014-12-13 2018-12-04 Microsoft Technology Licensing, Llc Frame invalidation control with causality attribution
US10348997B2 (en) 2015-07-09 2019-07-09 Genetec Inc. Security video monitoring client
CN113515317A (zh) * 2020-03-25 2021-10-19 华为技术有限公司 数据恢复的方法、装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6919891B2 (en) * 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10319137B2 (en) 2009-06-18 2019-06-11 Scalable Display Technologies, Inc. System and method for injection of mapping functions
KR20140030226A (ko) * 2011-06-02 2014-03-11 마이크로소프트 코포레이션 글로벌 저작 시스템

Also Published As

Publication number Publication date
RU2006113596A (ru) 2006-09-10
CA2537138A1 (en) 2005-05-19
TWI344603B (en) 2011-07-01
JP5149411B2 (ja) 2013-02-20
EP1676245A4 (en) 2008-10-29
MY137202A (en) 2009-01-30
MXPA06003282A (es) 2006-06-08
JP2007510976A (ja) 2007-04-26
US20050088436A1 (en) 2005-04-28
RU2355031C2 (ru) 2009-05-10
JP4764345B2 (ja) 2011-08-31
CN1860505A (zh) 2006-11-08
JP2011129153A (ja) 2011-06-30
CN1860505B (zh) 2010-05-12
AU2004287140B2 (en) 2010-02-25
EP1676245A2 (en) 2006-07-05
WO2005045580A2 (en) 2005-05-19
TW200515187A (en) 2005-05-01
WO2005045580A3 (en) 2005-08-25
KR101087361B1 (ko) 2011-11-25
BRPI0414431A (pt) 2006-11-14
AU2004287140A1 (en) 2005-05-19
ZA200602390B (en) 2007-09-26
US7012606B2 (en) 2006-03-14

Similar Documents

Publication Publication Date Title
KR101087361B1 (ko) 그래픽 프로세싱 시스템내의 통합 컴포지션 엔진을 위한시스템 및 방법
JP4904325B2 (ja) イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造
JP4371350B2 (ja) 多重レベル・グラフィックス処理システムおよび方法
JP4374590B2 (ja) シーングラフのための汎用パラメータ設定
US7088374B2 (en) System and method for managing visual structure, timing, and animation in a graphics processing system
JP5101648B2 (ja) ビジュアルおよびシーングラフインタフェース
JP4901261B2 (ja) 高品質なユーザーインターフェイスによる効率的な遠隔表示を行なうシステム
US20060244754A1 (en) Intelligent caching data structure for immediate mode graphics
CN114741081B (zh) 一种基于异构缓存访问的跨运行环境显示输出共享方法
US9563971B2 (en) Composition system thread
AU2004279201B2 (en) Protocol for remote visual composition

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8