KR20150016527A - 가상 서피스 할당 기법 - Google Patents

가상 서피스 할당 기법 Download PDF

Info

Publication number
KR20150016527A
KR20150016527A KR1020147033548A KR20147033548A KR20150016527A KR 20150016527 A KR20150016527 A KR 20150016527A KR 1020147033548 A KR1020147033548 A KR 1020147033548A KR 20147033548 A KR20147033548 A KR 20147033548A KR 20150016527 A KR20150016527 A KR 20150016527A
Authority
KR
South Korea
Prior art keywords
computing device
compositing
update
virtual
request
Prior art date
Application number
KR1020147033548A
Other languages
English (en)
Other versions
KR102055467B1 (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 KR20150016527A publication Critical patent/KR20150016527A/ko
Application granted granted Critical
Publication of KR102055467B1 publication Critical patent/KR102055467B1/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Digital Computer Display Output (AREA)

Abstract

가상 서피스 기술들에 대해 설명한다. 이들 기술은 업데이트의 배치 작업(batching) 및 초기화의 지원, 업데이트 및 룩어사이드 리스트(look aside list)의 사용, 거트(gutter)의 사용, 혼합(blending) 및 BLT 동작, 푸시 다운(push down)과 같은 서피스 최적화 기술, 이뉴머레이션(enumeration)이나 클럼핑(clumping), 메시 사용 및 오클루젼 관리 기술을 포함한다.

Description

가상 서피스 할당 기법{VIRTUAL SURFACE ALLOCATION}
다양한 컴퓨팅 장치 구성들이 계속해서 증가하고 있다. 전통적인 데스크탑 퍼스널 컴퓨터에서부터 모바일폰, 게임 콘솔, 셋탑 박스, 태블릿 컴퓨터 등에 이르기까지 이들 구성들 각각으로부터 이용가능한 기능이 크게 변할 수 있다.
그 결과, 하나의 구성을 위해 개발된 전통적인 디스플레이 기술들이 다른 구성에는 적합하지 않을 수 있다. 예컨대, 상당한 메모리 자원을 갖는 장치에 이용된 예전 디스플레이 기술들이 보다 적은 자원을 갖는 장치에는 적절하지 않을 수 있다.
가상 서피스 기술들에 대해 설명한다. 이들 기술은 업데이트의 배치 작업(batching) 및 초기화의 지원, 업데이트 및 룩어사이드 리스트(look aside list)의 사용, 거트(gutter)의 사용, 혼합(blending) 및 BLT 동작, 푸시 다운(push down)과 같은 서피스 최적화 기술, 이뉴머레이션(enumeration)이나 클럼핑(clumping), 메시 사용 및 오클루젼(occlusion) 관리 기술을 포함한다.
본 개요는 후속하여 발명의 상세한 설명 부분에서 설명되는 개념들 중 선택된 것들을 단순화된 형태로 소개하고자 제공되는 것이다. 본 개요는 청구항의 청구대상의 핵심적인 특징이나 필수적인 특징들을 밝히고자 함이 아니며, 청구항의 청구대상의 범위를 결정하는 데 도움이 되고자 함도 아니다.
상세한 설명은 첨부 도면을 참고하여 설명한다. 도면에서, 참조번호의 맨좌측 숫자는 참조번호가 처음 나타나는 도면을 의미한다. 상세한 설명과 도면에서 상이한 예들에 동일 참조번호를 사용한 것은 동일 또는 유사한 항목들을 나타낼 수 있다.
도 1은 본 명세서에 개시된 가상 서피스 기술을 수행하도록 동작가능한 구현예의 환경을 도시한 도면이다.
도 2는 가상 환경이 크기 조정되는 구현예를 도시한 것이다.
도 3은 가상 서피스의 논리 서피스와 애플리케이션 사이의 상호작용을 보여주는 구현예를 도시한 것이다.
도 4는 도 1의 합성 시스템을 보다 상세히 보여주는 구현예를 도시한 것이다.
도 5는 가상 서피스를 개시하는 합성 시스템의 동작의 구현예를 도시한 것이다.
도 6은 업데이트를 위한 합성 시스템에 의한 서피스의 준비를 보여주는 구현예를 도시한 것이다.
도 7은 도 6의 룩어사이드(look aside) 리스트를 이용하는 합성 시스템의 동작의 구현예를 도시한 것이다.
도 8은 거터(gutter)를 이용하는 합성 시스템의 동작을 보여주는 구현예를 도시한 것이다.
도 9는 합성 시스템에 의해 유효 영역의 관리를 보여주는 구현예를 도시한 것이다.
도 10은 푸시 다운 기법을 이용하여 서피스들을 결합하기 위한 합성 시스템의 동작을 보여주는 구현예를 도시한 것이다.
도 11은 유효 영역을 새로운 서피스에 결합하는 합성 시스템의 동작을 보여주는 구현예를 도시한 것이다.
도 12는 메시를 이용하기 위한 합성 시스템의 동작을 보여주는 구현예를 도시한 것이다.
도 13은 오클루젼(occlusion)에 대한 합성 시스템의 동작을 보여주는 구현예를 도시한 것이다.
도 14는 데이터를 렌더링하기 위한 서피스에 사이즈가 할당되는 구현예에서의 절차를 도시한 순서도이다.
도 15는 합성 시스템에 의해 유효 영역이 추적되는 구현예에서의 절차를 도시한 순서도이다.
도 16은 서피스를 관리하는데 룩어사이드 리스트가 이용되는 구현예에서의 절차를 도시한 순서도이다.
도 17은 서피스가 오클루젼에 기초하여 크기 조정되는 구현예에서의 절차를 도시한 순서도이다.
도 18은 하나의 서피스로부터 다른 서피스로 유효 영역의 푸시 다운을 포함하는 압축(compaction) 기법이 기술되는 구현예에서의 절차를 도시한 순서도이다.
도 19는 유효 영역을 새로운 서피스에 결합하는 것을 포함하는 압축 기법이 기술되는 구현예에서의 절차를 도시한 순서도이다.
도 20은 합성 시스템이 메시를 채용하여 드라이버로 하여금 메시를 사용하여 서피스를 렌더링하게 하는 구현예에서의 절차를 도시한 순서도이다.
도 21은 도 1 내지 20을 참조하여 설명한 임의의 유형의 컴퓨팅 장치로서 구현될 수 있는 예시적인 장치의 다양한 컴포넌트를 포함하는 예시적인 시스템을 도시한 도면이다.
개요
가상 서피스(virtual surface)는 비주얼(visual)을 렌더링하기 위해 서피스를 할당하고 관리하는데 사용될 수 있다. 가상 서피스는, 예컨대, 큰 웹페이지, 몰입 애플리케이션 등을 관리한다거나 비주얼의 렌더링을 위해 하드웨어에 의해 할당될 수 있는 메모리보다 더 큰 웹페이지의 렌더링을 관리하는 것과 같이, 하드웨어의 한계를 극복하는데 사용될 수 있다.
가상 서피스 조합 및 업데이트 기법들이 설명된다. 하나 이상의 구현예에서, 렌더링을 위해 서피스를 관리하는 기법들이 기술된다. 이것은 도 4 및 5와 관련하여 더 설명되는 초기화 및 배칭(batching), 도 6 및 7과 관련하여 설명되는 룩어사이드 리스트, 도 8과 관련하여 설명되는 거터의 사용, 도 9와 관련하여 설명되는 혼합 및 BLT 동작, 도 10과 관련하여 설명되는 푸시 다운과 같은 서피스 최적화 기술, 도 11과 관련하여 설명되는 이뉴머레이션(enumeration) 및 클럼핑(clumping), 도 12와 관련하여 설명되는 메시 사용, 및 도 13과 관련하여 설명되는 오클루젼 관리 기법을 지원하는 기법을 포함한다.
이하의 논의에서는, 본 명세서에서 설명되는 가상 서피스 기법을 수행하도록 동작가능한 예시적인 환경을 먼저 설명한다. 그 다음에 예시적인 절차들을 설명하는데, 이들 절차는 예시적인 환경에서뿐만 아니라 다른 환경에서도 동작가능하다. 마찬가지로, 이 예시적인 환경은 이 예시적인 절차의 수행에 한정되지 않는다.
예시적인 환경
도 1은 하나 이상의 실시예에 따른 동작 환경을 도시한 것으로 일반적으로 100으로 표시된다. 환경(100)은 하나 이상의 프로세서를 포함할 수 있는 프로세싱 시스템(104) 메모리(106)로 도시된 컴퓨터 판독가능 저장 매체, 운영 체제(108), 및 하나 이상의 애플리케이션(110)을 갖는 컴퓨팅 장치(102)를 포함한다. 컴퓨팅 장치(102)는, 예를 들면, 데스크탑 컴퓨터, 휴대용 컴퓨터, PDA(personal digital assistant)와 같은 핸드헬드 컴퓨터, 모바일 폰, 태블릿 컴퓨터 등과 같은 임의의 적절한 컴퓨팅 장치로서 실시될 수 있다. 컴퓨팅 장치(102)의 다른 예는 도 21에 도시되며 뒤에 설명된다.
컴퓨팅 장치(102)는, 프로세싱 시스템(104) 상에서 실행되는 것으로 도시되어 있고 메모리(106)에 저장가능한 운영 체제(108)를 포함한다. 컴퓨팅 장치(102)는 또한 메모리(106)에 저장되는 것으로 도시되며 프로세싱 시스템(104) 상에서 실행가능한 애플리케이션(110)을 더 포함한다. 운영 체제(108)는 애플리케이션(110)에 의해 사용하기 위한 하부 하드웨어 및 소프트웨어 자원을 추상화할 수 있는 컴퓨팅 장치(102)의 기능을 나타낸다. 예를 들어, 운영 체제(108)는 애플리케이션(110)이 이 디스플레이가 어떻게 달성되는지 알 필요없이 데이터가 디스플레이 장치(112)에 어떻게 디스플레이되는지에 대한 기능을 추상화할 수 있다. 컴퓨팅 장치(102)의 프로세싱 시스템(104) 및 메모리(106) 자원, 네트워크 자원 등을 추상화하는 것과 같이, 다양한 다른 예들이 또한 고려된다.
컴퓨팅 장치(102)는 또한 합성 시스템(114)을 포함하는 것으로 도시되어 있다. 합성 시스템(114)은 운영 체제(108)의 일부로서 도시되었지만, 독립형 모듈로서, 별개의 애플리케이션으로서 또는 컴퓨팅 장치(102) 자체의 하드웨어의 일부(예컨대, SOC 또는 ASIC)로서 구현되는 등, 다양한 방법으로 구현될 수 있다. 합성 시스템(114)은, 비주얼을 렌더링하기 위해 애플리케이션(110)에 의해 사용되는 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)(116)를 통해 기능을 노출하는 것과 같이, 비주얼을 렌더링하기 위한 다양한 기법들을 이용할 수 있다.
예를 들어, 그러한 한 기법은 비트맵을 나타내는 버퍼 어레이를 이용할 수 있는 스왑 체인(swap chain)이라고 하는 오브젝트에 기초할 수 있다. 버퍼들 중 하나는, 예컨대, 어느 한 시점에 디스플레이 장치(112) 상에 데이터를 프리젠트하는데 사용될 수 있으며, 따라서 "온스크린 버퍼(onscreen buffer)" 또는 "프런트 버퍼(front buffer)"라고도 한다. 다른 버퍼들은 애플리케이션(110)이 오프 스크린(off screen)을 래스터화(rasterization)하는데 이용가능하도록 만들어질 수 있으며, 따라서 "오프스크린 버퍼" 또는 "백 버퍼(back buffer)"라고도 한다.
애플리케이션(110)은 다양한 방법으로 디스플레이 장치(112) 상에 디스플레이되는 것에 변경을 만들 수 있다. 제1의 그러한 기법에서, 예컨대 포인터를 사용하여 오프스크린 버퍼들 중 하나를 온스크린 버퍼로 만들거나 또는 그 역으로 함으로써, 애플리케이션(110)은 백 버퍼들 중 하나를 수정할 수 있고 컨텐츠를 플립(flip)할 수 있다.
제2의 그러한 기법에서, 상이한 크기의 버퍼가 이용될 수도 있다. 예를 들어, 합성 시스템(114)은 제1 버퍼를 온스크린 버퍼로서 이용할 수 있다. 합성 시스템(114)은 또한 제1 버퍼보다 작은 제2 버퍼를 오프스크린 버퍼로서 이용할 수 있다. 따라서, 컨텐츠에 업데이트가 행해져야 할 때, 업데이트는 제2 버퍼에 래스터화될 수 있다. 그 다음에 업데이트는 예컨대 blt를 사용하여 온스크린 버퍼로 복사될 수 있다. 이런 방식으로, 컴퓨팅 장치(102)의 자원이 보존될 수 있다.
합성 시스템(114)은 가상 서피스 기법들을 지원하도록 구성될 수 있다. 이들 기법은 애플리케이션(110)의 개발자들을 도와 비주얼을 렌더링하는데 사용되는 컴퓨팅 장치(102)의 자원을 감소시키는데 이용될 수 있다. 이것은 가상 서피스(118)의 사용을 포함할 수 있으며, 이로써 애플리케이션(110)이 비주얼 데이터의 서피스를 타일로 분할한 다음 이들 타일을 미리 렌더링할 수 있게 된다. 타일들이 서피스를 분할하는데 사용되지 않는(예컨대, 애플리케이션(110)이 크기를 특정하는) 다른 구현예들도 고려되며, 이하에 보다 상세히 설명된다.
가상 서피스(118)는 하나 이상의 논리 서피스(120)의 집합으로서 구성될 수 있다. 논리 서피스(120)는 애플리케이션(110)에 의해 보여지는 개별 서피스를 나타내며, 하나 이상의 비주얼과 연관될 수 있다. 논리 서피스(120)는, 예컨대, 고정된 크기의 타일로서 구성될 수 있으며, 복수의 타일이 고정된 격자 내에 배치될 수 있지만, 물론 타일들이 고정된 크기로 이용되지 않는 다양한 다른 예들도 고려될 수 있다. 예를 들어, 타일의 크기는 비주얼을 렌더링하기를 원하는 애플리케이션에 의해 지정될 수 있고, 따라서 이 예에서의 타일의 크기는 애플리케이션 자체에 의해 설정될 수 있으며, 이하의 논의에서 "청크(chunk)"라고 지칭된다.
가상 서피스(118)는 텍스처로 표현되는 영역보다 큰 영역을 나타내는데 사용될 수 있다. 예를 들어, 애플리케이션(110)은 생성 시에 가상 텍스처의 크기를 지정할 수 있다. 이 크기는 가상 서피스(118)에 대한 바운더리를 확립한다. 서피스는 하나 또는 복수의 비주얼과 연관될 수 있다. 하나 이상의 구현예에서, 가상 서피스가 처음 초기화될 때, 실제 할당에 의해 백킹(back)되지 않는다. 즉, 가상 서피스(118)는 초기화시에 비트를 보유하지 않고, 나중 시점, 예컨대 할당 시에 비트를 보유할 수 있다.
이하의 논의에서, 비주얼을 기본 구성 요소(basic composition element)라고 할 수 있다. 예를 들어, 비주얼은 합성 시스템(114)에 의한 처리를 위해 비트맵 및 관련 구성 메타데이터를 포함할 수 있다. 비주얼의 비트맵은 스왑 체인(swap chain)(예컨대, 비디오와 같은 다이내믹 컨텐츠의 경우) 또는 아틀라스 서피스(atlas surface)(예컨대, 세미 다이내믹 컨텐츠의 경우)와 연관될 수 있다. 2개의 프리젠테이션 모델이 합성 시스템(114)에 의해 지원되는 단일의 가상 트리에서 지원될 수 있다.
세미 다이내믹 컨텐츠의 경우, 아틀라스는 비주얼의 비트맵에 대한 업데이팅 모델 역할을 할 수 있고 렌더링될 복수 층을 포함할 수 있는 집합 층을 지칭할 수 있는데, 단일 층도 고려해 볼 수 있다. 비주얼 및 그 속성 조작(예컨대, 오프셋, 변환, 효과 등) 및 비주얼의 아틀라스 기반 비트맵을 업데이트하는 방법(드로우 시작(Begin Draw), 드로우 중지(Suspend Draw), 드로우 재개(Resume Draw), 드로우 종료(EndDraw))은 애플리케이션 프로그래밍 인터페이스(116)를 통해 노출되는 반면에, 아틀라스 층의 크기, 타일 크기, 비트맵 업데이트의 패킹/압축/관리는 애플리케이션(110)에게 숨겨질 수 있다.
스왑 체인은, 예컨대 포인터를 변경함으로써 스크린에 차례로 플립(flip)할 수 있는 일련의 버퍼를 가리킨다. 따라서, 플립 모드는, 예컨대, 오프스크린과 온스크린 버퍼 사이의 스와핑 포인트의 사용을 통해 오프스크린 버퍼를 온스크린 버퍼로 만드는데 사용되는 스왑 체인 기법이 이용되는 모드이다. 그러나, blt 모드는 합성 시스템(114)의 런타임이 오프스크린 버퍼로부터 온스크린 버퍼로 "blt"(예컨대, 비트 블록 이미지 전송)를 발행하는 기법을 말하며, 온스크린 버퍼를 업데이트하는데 사용될 수 있다.
전술한 바와 같이, 가상 서피스(118)는 먼저 하나 이상의 구현예에서 초기화되는데, 이는 실제 할당에 의해 백킹되지 않는다. 다시 말하면, 이것은 어떠한 비트도 보유하지 않는다. 애플리케이션(110)이 서피스 업데이트를 시작하면 합성 시스템(114)은 타일(즉, 합성 서피스 객체)의 할당을 수행할 수 있다. 애플리케이션(110)은 각 동작에 대한 API 호출을 통해 드로우 시작, 드로우 중지, 드로우 재개, 및 드로우 종료와 같은 다양한 동작을 통해 가상 서피스(118)를 업데이트할 수 있다. 맵핑은 합성 시스템(114)의 내부 알고리즘에 의해 결정될 수 있고 하나 이상의 실시예에서 애플리케이션에 보이도록 만들어지지 않는다.
또한, 합성 시스템(114)은 API(116)를 통해 애플리케이션(110)이 가상 서피스(118)를 크기 조정하고 잘라낼 수 있게 하는 기능을 노출할 수 있다. 예를 들어, 크기 조정 동작(resize operation)은 가상 서피스(118)의 바운다리를 변경하는데 사용될 수 있다. 이것은 새로운 업데이트 및/또는 할당이 새로운 크기로 설정된 바운다리 내에 포함된다는 것을 의미한다. 애플리케이션(110)은 또한 이 방법을 이용하여 가상 서피스(118)의 영역이 더 이상 이용되지 않으며(예컨대, 유효하지 않으며) 따라서 재활용(reclamation)에 이용가능하지 않다는 것을 합성 시스템(114)에 통지할 수 있다. 크기 조정의 결과 면적이 줄어들면, 애플리케이션(110)은 더 이상 합성 시스템(114)에 의한 관리를 통해 새로운 바운다리 외부의 영역에 업데이트를 할 수 없다.
도 2는 가상 서피스가 크기 조정되는 예시적인 구현예(200)를 도시한 것이다. 도시된 예에서, 제1 및 제2 단계(202, 204)는 3×3의 가상 서피스가 2×2의 가상 서피스로 크기 조정된다는 것을 보여주는데 이용된다. 제2 단계(204)에서의 빗금을 갖는 영역은 크기 조정 동작의 일환으로서 폐기되는 타일을 나타낸다. 전술한 바와 같이, 이들 타일을 저장하는데 사용된 메모리(106)는 이 후에 합성 시스템(114)에 의해 재활용될 수 있다. 크기 조정 후에, 애플리케이션(110)은 먼저 가상 서피스를 다시 크기 조정하지 않고는 더 이상 폐기된 영역(즉, 빗금친 영역)에 업데이트를 할 수 없을 것이다.
또한, 하나 이상의 구현예에서 크기 조정 동작은 동작의 표시 수신에 응답하여 합성 시스템(114)에 의해 개시될 수 있다. 예를 들어, 합성 시스템(114)은 애플리케이션이 "커밋(commit)"을 호출하는 것을 기다리지 않고 표시 수신 시에 크기 조정 업데이트를 구현할 수 있다. 예를 들어, 애플리케이션은 "Resize(0, 0)", "Resize(INT_MAX, INT_MAX)", 및 "Commit()"를 호출할 수 있다. 이 예에서, 애플리케이션(110)은 컨텐츠가 제1 크기 조정 시에 폐기되게 하였고, 따라서 제2 크기 조정은 비록 "Commit()" 전에 호출되었다 하더라도 효과를 갖지 않는다. 이 경우, 어느 것도 디스플레이에 이용가능하지 않기 때문에 디스플레이 장치(112)는 컨텐츠를 디스플레이하지 않는다.
트림(trim) 동작은 애플리케이션(110)에 의해 요구되는 가상 아틀라스의 영역을 합성 시스템(114)에게 설명하는데 사용될 수 있다. 따라서, 트림 동작은 가상 서피스(118)의 바운다리를 크기 조정하지 않고 수행될 수 있다. 그러나, 트림 동작은 어느 논리 서피스가 현재 할당되어야 하는지를 합성 엔진(114)에게 설명하는데, 그 예는 다음 도면과 관련하여 설명된다.
도 3은 애플리케이션과 가상 서피스의 논리 서피스들 사이의 상호작용을 보여주는 예시적인 구현예(300)를 도시한 것이다. 이 예는 또한 제1 및 제2 단계(302, 304)의 사용을 통해 도시된다. 이 예에서, 애플리케이션의 제1 및 제2 단계(302, 304) 모두에서 뷰포트(306)를 볼 수 있다. 따라서, 제1 단계(302)에서 애플리케이션은 뷰포트(306) 내에 있는 (15개의 타일을 포함하는)가상 서피스의 첫번째 6개의 타일에 처음으로 렌더링을 하는데, 이는 빗금으로 표시되어 있다.
가상 서피스에 의해 표현되는 페이지가 스크롤링됨에 따라, 제2 단계(304)에서 볼 수 있는 바와 같이 애플리케이션은 이제 마지막 6개의 타일이 렌더링되게 할 수 있다. 따라서, 애플리케이션(110)은, 마지막 6개의 타일에 의해 정의된 영역이 현재 사용되고 있으며 따라서 컨텐츠의 나머지는 현재 이용되고 있지 않음을 나타내기 위해, "트림(trim)"을 호출할 수 있다. 그 후, 합성 시스템(114)은 원래 첫번째 6개의 타일을 나타낸 논리 서피스(506)를 재활용하기로 선택할 수 있다.
합성 시스템(114)은 논리적(즉, 물리적) 및 가상 서피스를 생성 및 삭제하고 또한 개별 서피스에 업데이트를 만들기 위해 도 1의 API(116)를 노출시킬 수도 있다. 합성 시스템(114)은 업데이트가능한 영역의 외부에서 드로잉할 때 관련없는 비주얼을 피하도록 그 영역이 애플리케이션(110)에 의해 업데이트되게 할 수 있다.
초기화 및 배치( batch )
도 4는 도 1의 합성 시스템(114)을 보다 상세히 도시한 구현예(400)이다. 오늘날의 컴퓨팅 세계에서, 사용자는 흔히 자신이 크고 풍부한 컨텐츠(그 전체가 어느 한 시점에 디스플레이 장치에 의해 디스플레이되지는 않는다)를 보고 그 안에서 내비게이팅하는 것을 알게 된다. 그 예로는 복잡하고 동적인 웹 페이지, 대규모 라이브 아이템의 목록/사진, 음악 또는 기타 라이브 컨텐츠의 그룹을 갖는 현대의 애플리케이션 뷰, 또는 대량의 문서를 들 수 있다.
터치 및 이미지 캡처 기반 조작들과 같은 사용자 인터페이스는 사용자가 슬레이트, 폰, 대형 TV/프로젝션 등에서 사용자의 다수의 디스플레이를 가로질러 신속하게 스크롤, 팬(pan), 및 줌(zoom) 할 수 있게 한다. 대부분의 경우, 전체 컨텐츠가 움직여서 변할 때 이 전체 컨텐츠의 사전 렌더링 및 최신 상태로의 유지는 터무니없이 비용이 많이 들 수 있고 실제로 장치의 하드웨어에 의해 지원되지 않을 수도 있다. 대신에 뷰포트로 들어오는 컨텐츠의 부분이 렌더링되고 지능적으로 캐시될 수 있는데, 예컨대 사용자 조작이 그 컨텐츠를 뷰포트로 가져오기 전에 미리 추론적으로 렌더링될 수 있으며, 전술한 바와 같이 뷰포트가 이동하여 사용된 자원을 줄일 때 캐시로부터 폐기될 수 있다.
원하는 응답을 사용자에게 제공하기 위해, 합성 시스템(114)에 의해 구성 및 렌더링이 별개로 수행될 수 있다. 이것은 합성 시스템(114)에 의한 합성 엔진(402), 컨트롤러(404), 및 렌더러(406)의 통합을 통해 설명된다. 하나 이상의 실시예에서, 합성 시스템(114)의 이들 구성요소는 비동기적으로 실행될 수 있다. 이런 방법으로, 렌더러(406)가 렌더링을 계속하는 동안 사용자 입력 및 합성 엔진(402)에 응답하는 컨트롤러(404)에 의해 사전에 렌더링된 컨텐츠가 패닝/줌잉될 수 있다.
전술한 바와 같이, 합성 시스템(114)은 하나 이상의 가상 서피스(118)를 이용할 수 있다. 가상 서피스(118)를 사용하면 이미 렌더링된 컨텐츠를 캐싱하고 합성할 수 있다. 가상 서피스(118) 상의 영역의 렌더러(406) 업데이트 및 트림은 추론적인 렌더링 폴리시에 기초하여 수행될 수 있는 반면에, 컨트롤러(404) 및 합성 엔진(402)은 가상 서피스(118)를 변환하는데 사용된다. 이 변환은 사용자 입력에 기초하여 수행되어 컨텐츠를 렌더링한 뷰포트 내에 있는 가상 서피스(118)의 영역에 기초하여 사용자 인터페이스에 업데이트를 생성할 수 있다. 합성 엔진(402)은 복수의 가상 서피스(118) 및/또는 비주얼을 한번에 합성하도록 구성될 수 있다.
하나 이상의 실시예에서, 합성 시스템(114)은 논리 서피스(120)를 합성을 위해 프론트 버퍼로서 사용되는 고정 또는 혼합된 크기의 타일로서 이용하도록 구성될 수 있다. 렌더러(406)가 가상 서피스(118)의 일부를 업데이트하기를 원할 경우, 렌더러(406)는 별개의 업데이트 서피스로의 렌더링을 수행하거나 또는 타일 서피스에 직접 렌더링할 수 있다. 별개의 업데이트 서피스를 이용하면, 드로잉 완료시 컨텐츠는 업데이트 서피스로부터 프론트 버퍼 타일로 복사된다. 그 후 렌더러(406)가 타일들로부터 유효 컨텐츠를 잘라낼 경우 타일들이 릴리스된다.
그러나, 이 구현예는 결국, 변경된 컨텐츠가 구(out-of-date) 컨텐츠와 스크린 상에서 합성될 때, 구조적인 티어링(tearing)을 발생할 수 있다. 또한, 가상 서피스 상에서 업데이트되는 영역들의 타일들 또는 청크들 사이에 거터 및 샘플링(예컨대, 바이리니어(bilinear) 또는 T-연결부로 인해 심(seam)이 생성될 수 있으며, 이 심은 거터, 복수의 중첩 업데이트 및 복잡한 유효 영역을 처리하기 위해 CPU 및 GPU를 과도하게 사용하게 할 수 있다. 또한, 동적 컨텐츠 변경 또는 사용자에 의해 조작된 컨텐츠로 인해 메모리 사용이 과도해질 수 있다. 타일 마다의 고정/혼합된 크기의 서피스에 있어서, 타일의 사용되지 않은 부분으로 인해 보다 큰 크기의 타일에 메모리 낭비가 발생할 수 있고, 보다 작은 타일에 대한 업데이트 렌더링/처리 및 합성 시에 이들을 렌더링하는 것으로 인해 CPU/GPU 낭비가 발생할 수 있으며, 별도의 업데이트 버퍼가 사용될 경우 업데이트 버퍼로부터 프론트 버퍼로의 CPU/GPU 복사 비용이 발생할 수 있다. 그러므로, 합성 시스템(114)의 구현에 있어서 다양한 고려사항들 간에 균형화가 수행될 수 있다.
이들 고려사항들은, 뷰포트에 맞지 않는 풍부하고/또는 동적인 컨텐츠를 조작할 때, 사용자 경험의 특성 및 성능에 대한 다음의 원리들의 집합을 포함할 수 있다. 제1의 이러한 원리는 비주얼 응답(visual responsiveness)이라고 일컬어진다. 이것은 가상 서피스(118)가 사용자 조작 및 사용자의 "지문"에서의 실제 서피스처럼 느끼도록 구성될 수 있다. 이것은 체감되는 지연 없이 조작에 응답하고 이를 추적하도록 합성 시스템(114)을 구성하는 것을 통해 지원될 수 있다. 컨트롤러(404) 및 합성 엔진(402)으로부터 렌더러(406)를 분리하는 것이 강인한 방식으로 이 원리를 지원하는데 사용될 수 있다.
제2의 원리는 비주얼 코히어런스(visual coherence)와 관련된다. 이 예에서, 서피스가 조작되고 그 내부의 동적 컨텐츠(예컨대, 애니메이션)가 업데이트됨에 따라, 디스플레이 장치(112) 상의 컨텐츠는 사용자의 몰입 또는 신뢰를 방해하는 부작용을 보여주지 않는다. 예를 들어, 컨텐츠는 심, 눈에 띄는 티어링 또는 결함(corruption) 없이 디스플레이될 수도 있고, 사용자 인터페이스의 부분들이 이들이 부착되는 다른 부분들에 뒤쳐지지 않는 식으로 된다.
제3의 원리는 비주얼 완성과 관련된다. 사용자 인터페이스가 시각적으로 완성되면, 사용자는 디스플레이 장치(112)의 부분들을 커버하는 필러(filler)/플레이스홀더(placeholder) 패턴(예를 들어, 체커보드(checkerboard))을 거의 보지 못하며, 본다고 해도 이 디스플레이는 비교적 짧은 기간으로 제한된다. 게다가, 서피스 컨텐츠 업데이트는 뚜렷하게 뒤쳐지지는 않지만, 이것은 예컨대 줌 레벨에 걸쳐 저 전력 장치 상의 제약이 없는 풍부한 컨텐츠에 대해서는 보장되지 않을 수 있다. 예를 들어, 렌더러(406)가 그것을 구성하기 위해 가상 서피스(118) 및 합성 엔진(402)을 업데이트하는데 더 최적이고 효율적일수록, 렌더러(406)는 부가적인 비주얼 완성을 달성하도록 더 큰 대역폭을 추론적으로 미리 추가로 렌더링해야 한다.
제4의 원리는 라이브 서피스와 관련된다. 이 원리와 관련하여, 애니메이션, 비디오, 및 기타 동적 컨텐츠는 조작 동안에 지연 없이 지속적으로 재생되고 실행된다. 이것은 렌더러(406)가 비주얼 완료를 달성하고 라이브 서피스를 구현하기 위한 대역폭을 가지면 실현될 수 있다. 이것은 가상 서피스(118)의 효율적인 업데이트 및 합성에 의해 지원될 수 있다.
합성 시스템(114)은 이들 원리를 균형화하도록 구성될 수 있다. 이런 방식으로, 렌더러(406)가 비주얼 완성 및 라이브 서피스를 보장하는 충분한 대역폭을 갖도록 가상 서피스 업데이트를 관리하고 작성하기 위한 응답성과 비주얼 정확성 및 코히어런스를 지원하는 포괄적인 솔루션이 구현될 수 있다.
도 5는 가상 서피스(118)를 개시하기 위한 합성 시스템(114)의 동작의 구현예를 도시한 것이다. 이 구현예는 제1 및 제2 단계(502, 504)의 이용을 통해 설명된다. 제1 단계(502)에서, 애플리케이션(110)이 하나 이상의 비주얼과 연관될 수 있는 사용자 인터페이스를 렌더링하기 위한 서피스의 크기를 요청한다. 전술한 바와 같이, 가상 서피스(118)가 먼저 실제 할당에 의해 백킹되지 않도록 초기화(예컨대, 생성)되며, 따라서 초기화 시에 비트를 보유하지 않는다.
그 후, 애플리케이션(110)은 가상 서피스(118)에 렌더링될 비주얼을 특정할 수 있다. 이에 따라 합성 엔진(402)은 렌더러(406)에 의해 렌더링하기 위해 이들 비주얼들을 가상 서피스(118)(도시된 예에서는 자동차)에 합성할 수 있다. 이것은 할당의 크기가 애플리케이션에 의해 특정되는 타일 또는 "청크"의 사용을 통해 수행될 수 있다.
제2 단계(504)에서, 렌더러(406)는 서피스의 직사각형 영역과 같은 가상 서피스(118)의 영역을 업데이트하라는 명령어를 수신할 수 있다. 렌더러(406)와 합성 엔진(402) 사이의 인터페이스는 렌더러(406)가 다수의 가상 서피스(118)에 걸쳐 복수의 업데이트(506)(예컨대, 트림 명령어, 비주얼에 대한 변경, 비주얼의 생성 또는 제거 등을 포함할 수 있음) 및 이들 서피스를 컨텐츠로서 가질 수 있는 비주얼에 대한 변환 업데이트를 구현할 수 있도록 된다. 업데이트(506)의 예로는 커서로서 구성된 비주얼 및 사용자 선택가능 버튼으로서 구성된 비주얼을 포함한다.
일구현예에서, "커밋" 동작은 복수의 업데이트(506)가 렌더러(406)에 의해 렌더링(예컨대, 배치(batch)로 업데이트)될 수 있도록 호출될 수 있다. 이런 방식으로, 합성 시스템(114)은 불완전한 업데이트의 렌더링을 방지할 수 있다. 이것은 렌더러(406)가 비주얼 코히어런스 원리에 따라 디스플레이 장치(112)에 의해 디스플레이된 일관적이고 지속적인 비주얼을 가질 수 있게 한다.
또한, 사용자 입력을 처리하는 컨트롤러(404)는 렌더러(406)를 통과하지 않고 사용자 조작에 기초하여 합성 엔진(402)에서 직접 비주얼에 대한 변환(예컨대, 패닝 또는 줌잉을 위한)을 업데이트할 수 있다. 이 특징은, 예컨대, 애니메이션 또는 동적 컨텐츠에 대한 다른 상태 변화를 처리하기 위해 및/또는 제한된 처리 자원을 갖는 얇은 장치에서 복잡한 컨텐츠를 래스터화하기 위해, 렌더러(406)가 비교적 장기간 동안 사용되더라도 비주얼 반응성을 제공한다.
가상 서피스(118)의 구현예는 렌더러(406)에게 렌더러(406)가 렌더링할 수 있는 서피스 및 오프셋을 제공하는 것과 관련이 있다. 이 서피스는 그 후 합성 엔진(402)이 렌더러(406)에게 커밋된 업데이트들의 전체 배치(batch)를 모아서 처리할 때 합성 엔진(402)에 의해 플립될 수 있다. 이것은 복사(Copy) 동작을 제거하는데 이용될 수 있는데, 그렇지 않으면 별도의 업데이트 서피스가 렌더러(406)에 의해 업데이트의 렌더링에 사용될 경우에 복사 동작이 수행될 것이다.
플립핑(flipping)은 또한 합성 엔진(402)이 (예컨대, 커밋 동작을 통한)단일 배치에서 렌더러(406)에 의해 생성된 각각의 업데이트(506)가 디스플레이 장치(112)에 대해 전체적으로 이루어지도록 보장할 수 있게 한다. 따라서, 합성 시스템(114)에 의해 부분적인 업데이트의 처리가 회피될 수 있다.
업데이트 룩어사이드 리스트
도 6은 업데이트를 위한 합성 시스템(114)에 의한 서피스의 준비를 보여주는 구현예(600)를 도시한 것이다. 합성 시스템(114)은 다양한 기법을 이용하여 업데이트를 위한 서피스를 준비할 수 있다. 첫 번째 경우, 합성 시스템(114)은 애플리케이션으로부터 업데이트를 수행할 영역 할당 요청을 수신할 수 있는데, 이는 도시된 예에서 제1 직사각형(602)으로 도시된다.
이 요청에 응답하여, 합성 시스템(114)은 요청된 영역보다 더 큰 영역을 할당할 수 있는데, 이는 요청된 제1 직사각형(602)을 포함하는 제 직사각형(604)으로서 도시되어 있다. 따라서, 약간 다른 크기의 업데이트가 후속적으로 수신될 경우, 이것은 이전에 할당된 서피스를 재사용하게 할 수 있다.
합성 시스템(114)은, 예를 들어, 합성 시스템(114)에 의해 이전에 할당된 서피스(608)의 룩 어사이드 리스트(606)를 유지할 수 있다. 이것은 서피스(608)의 재사용 및 서피스(608)의 청크(chunk)를 위한 메모리(106)를 확보하기 위해 합성 시스템(114)에 의해 사용될 수 있다.
이들 서피스(608)는, 예를 들어, 더 이상 사용하지 않는 서피스를 위해 컴퓨팅 장치(102)의 메모리(106)에 유지될 수 있다. 따라서, 합성 시스템(114)에 의한 업데이트를 위한 서피스 제공 요청 수신 시에, 합성 시스템(114)은 먼저 룩 어사이드 리스트(606)를 조사하여 이전에 할당된 서피스(608)가 요청에 응답하는 컴퓨팅 장치(102)의 메모리에서 이용가능한 지를 판정할 수 있다. 만약 이용가능하다면, 합성 시스템(114)은 새로운 서피스를 할당하지 않고 이들 서피스를 이용함으로써 시스템의 전체 효율을 항상시킬 수 있다. 또한, 전술한 바와 같이 요청된 것보다 더 큰 크기를 (예컨대, 보다 많은 픽셀을 갖는)서피스에 할당하는 것을 통해, 이들 서피스(608)가 후속 업데이트와 관련되는 확률이 증가할 수 있다.
예를 들어, 소정 기간에 걸쳐 약간 다른 크기의 업데이트가 수신되면, 예컨대, 다음 업데이트가 두 픽셀 더 넓거나 더 긴 영역용인 경우, 이것은 이전에 할당된 서피스(608)를 보다 많이 재사용하게 한다. 따라서, 새로운 서피스를 할당하는 대신에, 합성 시스템(114)은 이전에 만들어진 이용가능한 서피스의 룩어사이드 리스트(606)를 이용하여 관련 서피스를 찾아낼 수 있다. 서피스의 트림 및 다른 업데이트가 또한 이용가능할 수 있다.
이것은 확인된 배치에 기초하는 영역들을 통해 추적될 수 있다. 업데이트가 다른 유효한 컨텐츠를 갖는 기존의 서피스(608)의 이용가능한 부분에 맞으면, 그 서피스가 재사용될 수 있다. 이것은 또한, 각각의 그러한 전환이 셋업 비용을 발생시키므로 복수의 상이한 서피스들의 렌더링을 회피함으로써 합성 면에서 비용을 절감한다. 룩어사이드 리스트(606)(컴퓨팅 장치(102)의 리스트 및 메모리에 유지되는 서피스(608)의 수)의 크기는 최대 사용량 또는 다양한 다른 요인들에 기초하여 설정될 수 있다.
도 7은 도 6의 룩어사이드 리스트(606)를 이용하는 합성 시스템(114)의 동작의 구현예(700)를 도시한 것이다. 이 구현예는 제1, 제2 및 제3 단계(702)를 이용하여 도시된다. 제1 단계(702)에서, 서피스(708)는 렌더러(406)에 의한 렌더링을 위해 할당된다. 렌더러(406)는 렌더링을 수행하기 위한 서피스(708)의 제어부를 제공받을 수 있다.
이 렌더링 동안에, 업데이트를 수행하기 위한 제2 단계(704)에서 다른 서피스(710)가 할당될 수 있다. 이 예에서, 다른 서피스(710)는 렌더러(406)에 의해 렌더링되는 서피스(708)와 동일한 디스플레이 영역 내에 포함된다. 따라서, 서피스(708)가 렌더링되고 있는 동안 서피스(710)가 할당되고 채워진다(예컨대, 드로잉된다). 그 다음에, 이 서피스(710)는 전술한 바와 같이 커밋 커맨드에 응답하여 렌더링을 위해 렌더러(406)로 전달될 수 있다.
제3 단계(706)에서, 사용자 인터페이스를 업데이트하기 위한 다른 업데이트가 수신될 수 있다. 이 예에서, 합성 시스템(114)은 업데이트가 도 6의 룩어사이드 리스트(606)의 사용을 통해 이전에 할당된 서피스, 예컨대 제1 단계(702)에서의 서피스(708)를 포함한다. 따라서, 합성 시스템(114)은 업데이트(712)를 포함하도록 이미 할당된 서피스(708)를 사용할 수 있다. 이런 방법으로, 새로운 서피스를 재할당할 필요없이 서피스(708)가 사용될 수 있으며, 따라서 컴퓨팅 장치(102)의 자원을 절감할 수 있다. 다양한 다른 예들이 또한 고려될 수 있다.
거터( gutter )
도 8은 거터를 이용하는 합성 시스템의 동작을 보여주는 예시적인 구현예(800)를 도시한 것이다. 비주얼 정확성을 유지하는데 있어서의 한 문제점은 거터 소실을 포함한다. 예를 들어, 가상 서피스는 스크롤링 등으로 인해 서브픽셀 오프셋에 위치하거나 스케일링될 수 있다. 따라서, 디스플레이 장치(112)에 의해 디스플레이되는 픽셀들에 대한 값이, 예컨대 바이리니어 샘플링(bilinear sampling)을 이용하는 이웃 픽셀들에 기초하여 결정된다.
그러나, 업데이트(802)의 에지부(804)에 위치한 업데이트의 이웃 픽셀(802)은 오류 정보에 기초한 값을 가질 수 있다. 예를 들어, 업데이트(802) 외부의 이웃 픽셀이 (예컨대, 다른 업데이트로부터의)"트래쉬(trash)"를 포함하면, 래스터라이저(rasterizer)가 이들 픽셀로부터 샘플링될 수 있고, 그에 따라 배드(bad) 값을 갖는 픽셀을 생성할 수 있는데, 이는 디스플레이 장치(112)에 의해 디스플레이될 때 심(seam)처럼 보일 수 있다.
이것을 처리하는 한 방법은 다른 타일/클럼프 서피스(806) 내에 있을 수 있는 에지부에서의 픽셀들의 행 또는 열을 업데이트(802)의 새로이 할당된 서피스 내의 이웃하는 픽셀들로 복사하는 것이다. 그러나, 이들 부가적인 복사는 컴퓨팅 장치(102)의 CPU GPU 자원 모두에 대해 컴퓨팅 장치의 자원 처리에 너무 많은 비용이 든다는 것을 나타낼 수 있다.
따라서, 하나 이상의 구현예에서, 업데이트(802)의 에지들은 서피스 에지와 정렬된다. 그 다음에 서피스 밖의 "이웃하는" 픽셀들을 샘플링할 때 래스터라이저로 하여금 서피스 에지에서의 픽셀의 값을 이용하게 하는 클램핑 동작이 이용된다. 이것은 비용과 비주얼 정확도 사이의 합리적인 트레이드오프를 생성하는데 사용될 수 있는데, 결과가 완전히 시각적으로 정확하지 않는 경우에도 이 결과는 사용자에게 합리적으로 정확하게 보일 수 있다. 하나 이상의 실시예에서, 거터 자체는 업데이트되지 않는다.
몇몇 예에서, 업데이트 에지는 서피스 에지와 정렬되지 못할 수 있다. 이것은 업데이트보다 더 큰 서피스의 할당 때문일 것이다. 그러한 예에서, 클램핑 동작과 유사한 효과를 위해 동일한 서피스 상에서의 업데이트의 에지에서의 픽셀들의 행/열이 이웃 픽셀로 복사될 수 있다.
이와 유사하게, 트리밍되고 업데이트될 때, 거터는, 현재 유효한 픽셀과 함께 디스플레이되는 이전에 유효한 픽셀을 포함하기 때문에, 하나 이상의 구현예에서 드로잉될 수 있는 잠재적으로 새로운 픽셀로 업데이트되지 않는다. 이것은, 정확성과 일반적인 경우에 사용자에게 보여질 때 사용자를 방해하는 최소 비주얼 아티팩트를 생성하는 성능 사이의 트레이드오프를 지원한다.
혼합( blending ) 및 BLT
도 9는 합성 시스템(114)에 의한 유효 영역의 관리를 보여주는 예시적인 구현예(900)를 도시한 것이다. 전술한 바와 같이, 비주얼 서피스(118)는 업데이트에 유효한 부분 및 유효하지 않은 부분을 포함할 수 있다. 도시된 가상 서피스(118)의 예에 있어서, 업데이트는 가상 서피스(118)에 커서를 포함할 수 있지만 차에는 그렇지 않다. 그러므로, 커서는 가상 서피스(118)의 다른 영역들과 대조적으로 유효한 가상 서피스(118)의 영역을 정의하는데 사용될 수 있다. 이 가상 서피스(118) 및 다른 가상 서피스들 모두에 대해 이들 영역을 추적함으로써, 합성 시스템(114)은 다양한 최적화 자체를 이용할 수 있다.
예를 들어, 하나의 서피스로부터 렌더링될 영역을 두 부분, 즉 혼합된 부분과 BLT된 부분으로 분할하는 기법을 설명한다. 이 기법은 업데이트들이 작고 가상 서피스 상의 결과의 유효 영역이 비교적 복잡한 예들을 처리하는데 이용되어, 예컨대, 다수의 작은 소스 서피스를 갖는 복잡한 메시를 생성할 수 있다.
서피스가 미리 곱해지거나(pre multiplied) 또는 투명하면(transparent)(그리고 "불투명(opaque)"하지 않거나 또는 알파 값을 무시하도록 설정되면), 서피스는 혼합된다(blended). 이것은 렌더러에 의해 제공된 컨텐츠가 없는 "클리어된(cleared)" 픽셀들 및/또는 완전히 투명한(fully-transparent) 픽셀들을 갖는 보다 큰 직사각형 형상들을 혼합하는데 사용될 수 있다. 일부 경우에, 이것은 복잡한 형상의 각각의 경로/에지를 윤관을 나타내는 복잡한 메시를 갖고 처리 및 래스터화하는 것보다 더 최적으로 된다.
이 방법은 유효 영역이 불투명 서피스로 인해 복잡할 경우에 거터에 대해 사용될 수도 있다. 예를 들어, 내부 부분은 blt 처리되지만 에지 주위의 픽셀들은 이웃 픽셀들이 클리어되도록 혼합된다. 그러므로, 래스터라이저가 이들 픽셀로부터 샘플링할 때 정확한 값이 얻어질 수 있다. 하나 이상의 구현예에서, 이 기법은 가상 서피스(118)의 에지에 이용되며 가상 서피스를 구성하는 서피스와 타일 클럼프 사이의 내부 에지에는 이용되지 않는다.
타일 크기에 맞게 정렬되는 클럼프 서피스가 할당되고 그 타일을 가진 이전의 서피스들로부터의 컨텐츠가 새로운 서피스로 이동되는 것을 보장하기 위해 비트들이 복사될 수 있고 부분들이 클리어될 수 있다. 하나 이상의 구현예에서, 이것은 렌더러(406)에 의해 업데이트되는 부분들(예를 들어, 도 7에 도시된 가운데 있는 업데이트 직사각형)에 대해 수행되지 않는다. 서피스가 불투명하면, 업데이트 후에, 에지의 픽셀들이 불투명하게 만들어질 수 있는데, 즉, 이들 픽셀들의 알파 채널에서의 완전 불투명에 도달할 수 있다.
복사, 클리어링 및 불투명하게 만드는 작업 각각은 비중첩 직사각형 스트라이프로 이루어진 "영역"을 이용하여 수행될 수 있다. 영역들은 교차될 수 있고, 결합체를 형성할 수도 있고, 제거될 수도 있다. 또한, 영역을 이루는 비중첩 직사각형 스트라이프들은 나열된다. 이것은 다양한 직사각형 및 영역들을 하나의 영역으로 효율적으로 병합할 수 있게 하고, 최적의 직사각형 세트를 추출할 수 있게 한다. 예를 들어, Win32 HRGN은 이들 기능을 이용하는데 채용될 수 있는 GDI 구성이다. 이들 동작은 각 타일마다 개별적으로 무엇을 해야 할 지를 결정하는 대신에 (예컨대 클리어링 또는 복사 같은)동작이 수행되어야 할 직사각형들의 병합되고 최적화된 세트를 식별하는데 이용된다. 이것은 이들 작업을 수행하는데 있어서 CPU 및 GPU 모두에서 상당한 효율을 달성하는데 이용될 수 있으며, 또한 타일/정렬 크기를 32×32 또는 16×16과 같은 비교적 작은 값으로 축소할 수 있게 하여, 전술한 바와 같이 낭비를 줄일 수 있게 한다.
렌더러(406)로부터의 트림 요청은 유효 영역의 복잡도에 기초하여 상이하게 다루어질 수 있다. 통상의 경우에, 타일 클럼프/서피스의 유효 영역은 트림 요청에 따라 업데이트될 수 있다. 그러나, 유효 영역이 복잡하고 BLT/혼합 기법이 이용되고 있으면, 추가적인 동작이 수행될 수 있다. 예를 들어, 유효 영역의 부분들은 불투명해지도록 혼합될 수 있는데, 그 이유는 이들 부분들이 이제 영역의 에지에 위치하기 때문이다. 이것을 다루는 다른 방법은 유효 부분들이 제거되는 이 타일들에 대해 새로운 클럼프를 생성하는 것이다. 그러나, 이들 타일에는 몇몇 유효한 부분이 계속 남을 수 있다. 이들 타일에 대해, 남아있는 유효 부분들은 기존의 서피스로부터 복사될 수 있고, 불투명해질 수 있으며, 트리밍된 부분들이 클리어될 수 있다. 이들 새로운 클럼프는, 예컨대, 커밋 동작으로 인해 렌더러(406)가 업데이트들의 전체 배치를 커밋할 때 커밋될 수 있다. 이 동작은 직사각형 스트라이프의 영역을 이용하여 최적화될 수 있지만, 다른 예들도 고려된다.
렌더러(406)에 의해 업데이트 세트를 커밋할 때, (예컨대, 타일 클럼프/서피스 세트 및 이들의 유효 영역을 생성하는)트림 및 비주얼 변환이 합성 엔진(402)으로 전달될 수 있다. 업데이트는 이들 서피스 상에서의 래스터화를 위한 임의의 CPU/GPU 작업이 완료됨을 보장하기 위해 합성 엔진(402)에 의해 사용될 수 있는 제각기의 토큰과 통신될 수 있다. 이 때, 효율을 더욱 향상시키기 위해 부가적인 기법들이 이용될 수 있는데, 그 예들은 다음 섹션에서 설명한다.
푸시 다운( push down )
도 10은 푸시 다운 기법을 이용하여 서피스를 결합하는 합성 시스템(114)의 동작을 보여주는 구현예(1000)를 도시한 것이다. 이 예에서, 합성 시스템(114)은 서피스 할당(1002)이 비주얼을 디스플레이하도록 만들었는데, 이것은 도면에서 비금 표시를 사용하여 박스로 표시되어 있다. 그 다음에 다른 서피스 할당(1004)이 업데이트를 수행하게 되는데, 이것은 빗금으로 표시된 박스 내에 위치한 화이트 박스로서 표시되어 있다.
합성 시스템(114)에 의해 서피스들의 유효 영역들을 추적함으로써 자원 이용을 향상시키도록 할당들이 결합될 수 있다. 예를 들어, 복수의 서피스로부터의 렌더링이 단일 서피스로부터의 렌더링보다 더 자원 집약적일 수 있다.
도시된 예에서, 서피스 할당(1004)의 유효 부분이 서피스 할당(1002)에 푸시 다운된다. 이것은 서피스 할당(1004)으로부터의 유효 영역이 이제 서피스 할당(1002) 내에 포함됨을 나타내는 빗금친 박스를 사용하여 도시된다. 푸시 다운 후에, 업데이트를 포함하는 서피스 할당(1004)이 릴리스될 수 있고, 이것에 의해 컴퓨팅 장치(102)의 메모리(106)의 부분들이 할당해제(freeing)될 수 있다. 따라서, 이 기법은 결합된 서피스들 중 하나의 할당을 이용함으로써 새로운 서피스 할당을 생성함 없이 서피스들을 결합하는데 사용될 수 있다.
예를 들어, 일부 실시예에서 합성 시스템(114)은 업데이트들의 현재 또는 이전의 배치에서의 큰 업데이트들을 중첩하게 될 수 있다. 이것은 비교적 작은 유효 영역을 포함하는 복수의 서피스의 할당을 발생할 수 있다. 그 결과, 합성 시스템(114)은 할당된 큰 서피스를 가질 수 있지만, 비교적 작은 유효 영역들이 이들 서피스가 릴리스되지 못하게 막을 수 있다.
그러나, 유효 영역들을 제1 서피스(예컨대, 보다 새로운 보다 작은 서피스)로부터 제2 서피스(예컨대, 보다 이전의 보다 큰 서피스)로 푸시 다운함으로써, 제1 서피스로부터의 유효 영역들이 제거될 수 있다. 이것은 제1 서피스의 릴리스를 허용하며, 이것에 의해 메모리가 할당 해제되고 추가적인 서피스 할당에 관계없이 합성 시스템(114)에 의해 관리되는 서피스 할당의 양이 감소한다. 이런 방법으로, 렌더러(406)는 보다 적은 서피스를 렌더링하는 것을 담당할 수 있으며, 이로써 컴퓨팅 시스템(114)의 효율을 향상시킬 수 있다. 새로운 서피스 할당이 이루어지는 다른 기법들이 또한 고려되는데, 그 예가 다음 섹션에 설명된다.
이뉴머레이션 ( enumeration ) 및 클럼핑( clumping )
도 11은 유효 영역을 새로운 서피스에 결합하기 위한 합성 시스템(114)의 동작을 보여주는 구현예(1100)를 도시한 것이다. 전술한 바와 같이, 합성 시스템(114)은 서피스 할당의 유효 영역을 추적하도록 구성될 수 있는데, 그 예들이 제각기의 유효 영역을 갖는 1102(1), 1102(2), 및 1102(n)로 도시되어 있다. 예컨대 다른 서피스로부터의 업데이트 등으로 인해, 시간의 경과에 따라, 영역을 포함하는 서피스에 대한 유효 영역의 크기는 증가할 수 있다. 따라서, 합성 시스템(114)은 서피스 할당(1102(1) 내지 1102(n))으로부터의 유효 영역을 하나 이상의 새로운 서피스 할당(1104)에 결합하도록 구성될 수 있다.
합성 시스템(114)은, 예컨대, 디스플레이 장치(112) 상에 디스플레이를 구성하도록 렌더링되며 소스로서 셋업되는 서피스의 수를 줄임으로써 서피스 할당 및 합성을 처리하도록 구성될 수 있다. 이것은 전체 가상 서피스 유효 영역 내에 최적화된 직사각형 세트를 나열함으로써 수행될 수 있다. 그 후 각각의 그러한 직사각형에 대해 클럼프가 생성될 수 있다. 이 때문에 다수의 보다 작은 직사각형이 생성된다면, 전술한 혼합/BLT 기법이 이용될 수 있다. 이런 방법으로, 클리어된 픽셀 영역에 의해 합성 엔진(402)에 의해 적절히 합성되는 보다 큰 직사각형이 달성될 수 있다.
예컨대, 합성 엔진(402)이 업데이트 배치를 수신할 경우, 엔진은 먼저 업데이트될 디스플레이 트리를 구성하는 가상 서피스 및 비주얼의 오염된(dirtied) 부분을 결정할 수 있다. 이것은 업데이트로부터 지저분한(dirty) 영역을 명확히 계산하고 전달하는 것과 합성자에게 트리밍하는 것을 포함하도록 수행될 수 있지만, 예를 들어, 하부 서피스 또는 "클럼프"가 변할 수도 있고(예컨대, 푸시 다운 또는 리클램핑), 동일한 컨텐츠의 유효 영역이 전달될 수도 있으며, 아무런 새로운 지저분한 영역도 생성되지 않았을 수도 있다. 유효 영역을 나타내는 이들 직사각형은 업데이트/트림 동작 마다 명시적으로 전달될 수 있다. 하나 이상의 구현예에서, 지저분한 영역이 감소되어 결과적으로 셋업 시에 큰 오버헤드를 일으키고 다수의 보다 작은 렌더 동작을 실행하는 것을 회피하도록 보다 적은 수의 보다 큰 직사각형을 생성할 수 있다. 이렇게 하기 위한 하나의 기법은 최대 수 지저분한 직사각형을 허용하는 것이다. 새로운 지저분한 직사각형이 나타나면, 이들 직사각형은 리스트에 추가되거나 또는 직사각형(예컨대, 결합체)과 병합될 수 있으며 그 결과 전반적으로 최소 영역 증대가 일어난다.
메시( mesh )
도 12는 메시를 이용하는 합성 시스템(114)의 동작을 보여주는 구현예(1200)를 도시한 것이다. 메시(예컨대, 포인트들의 리스트)는 단일 드로우 콜(single draw call)이 GPU의 드라이버에 행해질 수 있는 복수의 비주얼을 포함할 수 있다. 이런 방식으로, 드라이버에 행해진 다수의 드로우 콜이 감소할 수도 있고, 이에 따라 각각의 콜과 연관된 오버헤드를 회피할 수 있다.
합성 엔진(402)은 가상 서피스(118)의 클럼프/서피스를 합성하기 위한 다수의 옵션을 갖는다. 예를 들어, 합성 엔진(402)은 각각의 클럼프의 유효 영역을 인식하고 있으므로, 합성 엔진(402)은 업데이트될 지저분한 영역과 중첩되지 않는 클럼프를 생략함으로써 개시될 수 있다. 가상 서피스(118) 내에 포함된 비주얼이 픽셀 정렬되면 전술한 거터 기법들을 이용하지 않고 평행이동 변환한다. 이것은 클럼프 내의 각각의 직사각형에 대해 단순한 BLT/혼합의 사용을 허용한다.
이들 동작을 한번에 한번 수행하는 대신에, 합성 엔진(402)은 직사각형 세트로부터 삼각형 메시를 생성할 수 있고, 서피스가 그 메시를 이용하여 렌더링되게 할 수 있다. 예를 들어, 유효 영역을 갖는 직사각형 세트(1202)가 합성 시스템(114)에 의해 조사될 수 있다. 그 후 각각의 직사각형을 2개의 삼각형으로 분리함으로써 직사각형 세트에 대해 삼각형 메시(1204)가 생성될 수 있다. 그러나, 직사각형으로부터 T형 교차부가 형성될 수도 있다. T형 교차부는 예컨대, 플로팅 포인트 또는 라운딩 에러 때문에 삼각형 메시(1204)가 심(seam)으로 래스터화되게 할 수 있다. 따라서, 합성 시스템(114)은 직사각형 세트를 처리하여 T형 교차부를 포함하지 않는 비중첩 직사각형의 삼각형 메시(1206)를 형성할 수 있다.
생성된 메시는 합성 프레임에 걸쳐 캐시될 수 있고 클럼프의 직사각형이 변경되지 않으면 재사용될 수 있다. 넌픽셀(non-pixel) 정렬된 변환이 존재하지만, 이 변환이 오직 평행이동을 포함하면, 합성 엔진(402)은 여전히 그 자신에 대한 메시를 생성할 수 있고 각각의 클럼프를 렌더링할 수 있다. 그러나, 보다 많은 복잡한 변환이 존재한다면, 합성 엔진(402)은 심 없는 정확한 래스터화를 보장하도록 직사각형 세트를 처리할 수 있다.
이를 위해, 각각의 클럼프는 합성 시스템(114)에 의해 관리된 메시 생성기 오브젝트로 제각기의 직사각형 세트를 등록할 수 있다. 각각의 좌표가 조사됨에 따라, 합성 시스템(114)의 메시 생성기 기능은 이미 등록된 에지 상에 하나 이상의 추가적인 꼭지점을 추가할 수 있다. 각각의 등록 에지는 자신에게 추가된 범위 내에 기존의 꼭지점을 가질 수도 있다. 그 결과는 추가적인 꼭지점을 갖는 각각의 클럼프에 대한 직사각형 세트이다. 이들 직사각형은 그 후 이들 꼭지점을 이용하여 비중첩 삼각형 세트로 분해될 수 있다. 따라서, 단순하지 않은 변환의 경우에, 클럼프는 삼각형 메시(1206)로 도시된 이들 생성된 T형 교차부의 자유 메시를 이용하여 렌더링될 수 있다.
오클루젼( occlusion )
도 13은 오클루젼에 관한 합성 시스템(114)의 동작을 보여주는 구현예(1300)를 도시한 것이다. 각각의 클럼프가 불투명 가상 서피스에 대해 그 서피스의 부분들과 BLT의 다른 부분들을 혼합하게 하는 명령어를 가질 수 있다 하더라도, 합성 시스템(114)은 각각의 클럼프 상의 유효하고 불투명한 영역을 인식한다.
오클루젼에 있어서, 이들 영역은 전체 가상 서피스에 걸쳐 누적될 수 있고 합성 엔진(402)에 의해 오클루젼 검출에 사용될 수 있다. 하나 이상의 구현예에서, 합성 엔진(402)은 등록된 오클루젼을 통해 직사각형들을 열거하여 디스플레이 장치(112)에 의한 디스플레이를 위해 z 오더(z-order)로 사용자에게 가까운 불투명한 비주얼에 의해 오클루젼되는 부분들을 식별한다.
그러나, 오클루젼 경로(occlusion pass)를 통해 직사각형을 복잡한 형상으로 분해하는 것은 비용이 많이 들 수 있다. 영역을 구성하는 비중첩 직사각형 스트라이프가 전체 영역에 의해 가려질 직사각형을 완전히 가리도록 보장하기 위해, 합성 시스템(114)은 직사각형 격납(containment) 및 교차 기법을 이용할 수 있다.
이러한 기법의 일례가 도 13의 구현예(1300)로 도시되어 있는데, 제1 및 제2 단계(1302, 1304)를 통해 보여진다. 제1 단계(1302)에서, 제1 및 제2 직사각형(1306, 1308)이 합성 엔진(402)에 의해 합성된다. 그러나, 합성 엔진(402)은 제1 직사각형(1306)의 일부(1310)가 제2 직사각형(1308)에 의해 가려진다고 판정할 수 있다.
따라서, 가리는 직사각형이 전체 에지를 가려서 그 결과가 여전히 줄어든 단일 직사각형이 되면 합성 엔진(402)은 검사된 직사각형을 줄이도록 구성될 수 있다. 이것의 일례는 제2 단계(1306)에서 보여지는데, 여기서 제2 직사각형(1308)에 의해 가려지는 부분(1310)을 포함하지 않도록 제1 직사각형(1306)이 감소된다. 따라서, 제2 직사각형(1308)의 에지는 제1 직사각형(1306)에 대한 새로운 에지를 정의하는데 사용될 수 있고, 이에 따라 컴퓨팅 장치(102)의 자원이 보존된다. 다양한 다른 예들도 고려된다.
예시적인 절차들
이하에서는 전술한 시스템 및 장치를 이용하여 구현될 수 있는 기법들을 설명한다. 절차들 각각은 하드웨어, 펌웨어, 또는 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 이들 절차는 하나 이상의 장치에 의해 수행된 동작들을 특정하는 블록돌의 집합으로서 도시되어 있고, 제각기의 블록에 의해 동작들을 수행하는데 있어서 반드시 도시된 순서로 제한되지는 않는다. 이하의 논의의 부분들에서, 도 1의 환경(100) 및 도 2 내지 13의 구현예들 및 시스템을 참조할 것이다.
도 14는 데이터를 렌더링하기 위해 서피스에 크기가 할당되는 구현예에서의 절차(1400)를 도시한 것이다. 합성 시스템에 의해 하나 이상의 비주얼을 렌더링하기 위한 서피스 할당 요청이 수신되는데, 이 요청은 서피스의 크기를 특정한다(블록 1402). 이 요청은, 예컨대, 비트 렌더링을 시작하기 위해 애플리케이션으로부터 발생할 수 있다. 하나 이상의 구현예에서, 요청이 수신되었지만 할당되지는 않아 요청이 수신되었을 때 서피스가 비트를 보유하지는 않았을 경우에, 서피스는 이미 초기화되었을 수 있다.
요청의 수신에 응답하여, 서피스가 하나 이상의 비주얼을 렌더링하는데 요구된 크기보다 더 큰 크기를 갖도록 합성 시스템에 의해 할당된다(블록 1404). 전술한 바와 같이, 합성 시스템(114)은 더 이상 유효하지 않은 할당된 서피스의 재사용을 촉진하기 위해 메모리를 확보하도록 구성될 수 있다. 서피스를 애플리케이션에 의해 요구된 것보다 더 크게 형성함으로써, 합성 시스템(114)은 서피스가 나중에 다시 사용될 확률을 증가시킬 수 있다.
도 15는 유효 영역이 합성 시스템에 의해 추적되는 구현예에서의 절차(1500)를 도시한 것이다. 서피스는 디스플레이 장치에 의한 디스플레이를 위해 비주얼을 포함하도록 합성 시스템에 의해 관리된다(블록 1502). 서피스는, 예컨대, 전술한 바와 같이 가상 서피스로서 구성될 수 있다.
유효 영역은 디스플레이 장치에 의해 디스플레이되는 서피스 내에서 추적된다(블록 1504). 서피스는, 예컨대, 처음에 디스플레이의 부분을 업데이트하도록 구성될 수 있다. 그러나, 시간이 경과함에 따라, 다른 서피스가 이미 업데이트된 디스플레이의 부분들을 더 업데이트할 수 있다. 따라서, 서피스의 이 부분들이 디스플레이에 대해 여전히 유효한 반면에 다른 부분들은 유효하지 않다. 합성 시스템(114)은 본 명세서의 다른 부분에서 더 설명되는 오클루젼 관리, 서피스 크기 조정, 서피스 압축 등과 같은 다양한 다른 기능을 지원하는데 사용될 수 있는 이 유효성을 추적하도록 구성될 수 있다.
도 16은 룩어사이드 리스트가 서피스 관리에 이용되는 구현예에서의 절차(1600)를 도시한 것이다. 합성 시스템에 의해 하나 이상의 비주얼을 렌더링하기 위해 서피스를 할당하라는 요청이 수신된다(블록 1602). 앞에서와 같이, 애플리케이션(110)은 합성 시스템(114)의 하나 이상의 API(116)를 통한 호출로서 요청을 할 수 있다.
수신된 요청에 응답하며 컴퓨팅 장치의 디스플레이 장치에 의한 디스플레이에 유효한 비주얼을 포함하지 않는 컴퓨팅 장치의 메모리에 할당되는데 서피스가 이용가능한지를 결정하기 위해 룩어사이드 리스트가 합성 시스템에 의해 검사된다(블록 1604). 룩어사이드 리스트는, 예컨대, 메모리에 할당되지만, 예컨대, 나중에 수신된 업데이트로 인해 더 이상 유효 부분을 갖지 않는 서피스를 참조할 수 있다.
결정된 서피스가 이용가능하다는 검사에 응답하여, 결정된 서피스는 하나 이상의 비주얼의 렌더링에 이용가능하게 된다(블록 1606). 결정된 서피스는, 예컨대, 전술한 바와 같이 요청된 것보다 더 큰 크기를 할당받았을 수 있으며, 따라서 후속 업데이트와 관련될 수 있다. 다양한 다른 예들이 또한 고려된다.
도 17은 서피스가 오클루젼에 기초하여 크기 조정되는 구현예에서의 절차(1700)를 도시한 것이다. 서피스의 일부분이 디스플레이 장치에 의해 디스플레이되는 다른 서피스에 의해 가려진다(블록 1702). 합성 엔진(402)은, 예컨대, 서피스들의 디스플레이에 대한 z 오더를 결정할 수 있고, 적어도 다른 서피스의 부분이 그 서피스의 부분 위에 렌더링된다고 판정할 수 있다.
이 부분이 서피스로부터 제거된다(블록 1704). 이것은 다른 서피스의 에지를 사용하여 감소되는 서피스의 에지를 정의함으로써 서피스의 적어도 하나의 새로운 에지를 정의하는 것과 같은 다양한 방법으로 수행될 수 있다.
제거된 부분을 갖는 서피스가 다른 서피스와 함께 렌더링된다(블록 1706). 이런 방식으로, 서피스로부터 제거되는 부분의 렌더링이 회피될 수 있으며, 이것에 의해 컴퓨팅 장치(102)의 자원을 보존할 수 있다.
도 18은 하나의 서피스로부터 다른 서피스로의 유효 영역의 푸시 다운과 관련된 압축 기법을 기술하는 구현예에서의 절차(1800)를 도시한 것이다. 하나 이상의 비주얼을 렌더링하기 위해 합성 시스템에 의해 이용가능한 복수의 서피스의 유효 영역이 추적된다(블록 1802). 합성 시스템(114)은, 예컨대, 서피스의 어느 부분이 디스플레이에 의해 디스플레이되고 디스플레이되지 않는 지를 판정할 수 있다.
그 후 합성 시스템에 의해 제1 서피스의 제1 유효 영역이 제2 서피스의 할당 내에 포함될 수 있는지에 대한 판정이 이루어진다(블록 1804). 예를 들어, 제1 서피스는 업데이트로서 구성될 수 있다. 그 후, 업데이트의 부분을 제1 유효 영역 이외의 다른 영역에서 무효로 만드는 후속 업데이트가 수행될 수 있다.
제1 유효 영역은 그 후 제2 서피스의 부분으로서 포함하기 위해 푸시 다운된다(블록 1806). 이것은 유효 영역의 비트들을 제2 서피스로 복사하는 것을 포함할 수 있다. 복사 후에, 제1 서피스가 릴리스될 수 있으며, 이로 인해 별도의 서피스를 유지하는데 있어 자원을 보존할 수 있을 뿐만 아니라 보다 적은 수의 서피스의 사용을 통해 렌더링 동작의 효율을 향상시킬 수 있다. 따라서, 이 예에서 새로운 서피스가 할당되지 않고,이것에 의해 할당을 하고 유지하는데 있어 컴퓨팅 장치(102)의 자원을 절감할 수 있다. 다른 예들도 고려되는데, 그 일례를 아래에 설명한다.
도 19는 유효 영역을 새로운 서피스로 결합하는 것과 관련한 압축 기법을 기술하는 구현예에서의 절차(1900)를 도시한 것이다. 하나 이상의 비주얼을 렌더링하기 위해 합성 시스템에 의해 사용가능한 복수의 서피스의 유효 영역이 추적된다(블록 1902). 앞에서와 같이, 합성 시스템(114)은 복수의 서피스 중 어느 부분이 디스플레이 장치에 의해 디스플레이되고 디스플레이되지 않는지를 판정할 수 있다.
그 다음에 복수의 서피스로부터 유효 영역을 포함하는데 이용가능한 새로운 서피스에 대해 할당이 계산된다(블록 1904). 예를 들어, 새로운 서피스는 복수의 유효 영역의 포함을 위해 바운드를 갖는 직사각형으로 구성될 수 있다. 그 후, 새로운 서피스는 복수의 서피스로부터 유효 영역을 포함하도록 할당될 수 있고(블록 1906), 그러면 유효 영역이 새로운 서피스로 복사될 수 있고 이것에 의해 합성 시스템(115)이 원 서피스를 해제시킬 수 있다. 합성 시스템(114)에 의한 서피스 압축의 다양한 다른 예들이 고려된다.
도 20은 합성 시스템(114)이 메시를 채용하여 드라이버로 하여금 메시를 이용하여 서피스를 렌더링하도록 하는 구현예에서의 절차(2000)를 도시한 것이다. 메시는 T 교차부를 포함하지 않는 직사각형 세트로 형성된다(블록 2002). 메시는, 예를 들어, 전술한 바와 같이 T 교차부 및 이로 인한 교차부들(예컨대, 심들)을 렌더링하는 중에 만나는 복잡성을 회피하기 위해 형성되는 삼각형 집합으로 형성될 수 있다. 사용자 인터페이스에서 업데이트를 위해 유효 영역을 갖는 복수의 직사각형을 기술하는데 사용될 수 있는 그래픽 기능(예컨대, GPU)의 드라이버로의 단일 콜과 같은 호출이 메시를 이용하여 서피스를 렌더링하도록 드라이버에게 이루어진다(블록 2004). 따라서, 메시는 위 대응하는 섹션에서 설명한 바와 같이 메시의 삼각형을 형성하는데 사용된 각각의 직사각형에 대한 콜의 사용을 회피하는 것을 도울 수 있다.
예시적인 시스템 및 장치
도 21은 전술한 다양한 기법을 구현할 수 있는 하나 이상의 컴퓨팅 시스템 및/또는 장치를 나타내는 예시적인 컴퓨팅 장치(2102)를 포함하는 예시적인 시스템을 전반적으로 참조부호 2100을 사용하여 도시하고 있다. 컴퓨팅 장치(2102)는, 예를 들어, 서비스 제공자의 서버, 클라이언트와 연관된 장치(예컨대, 클라이언트 장치), 온-칩 시스템 및/또는 기타 적절한 컴퓨팅 장치나 컴퓨팅 시스템일 수 있다. 따라서, 컴퓨팅 장치(2102)는 도 1의 합성 시스템(114)를 포함하는 것으로 도시된다.
전술한 예시적인 컴퓨팅 장치(2102)는 프로세싱 시스템(2104), 하나 이상의 컴퓨터 판독가능 매체(2106), 서로 통신가능하게 연결된 하나 이상의 I/O 인터페이스(2108)를 포함한다. 도시되지는 않았지만, 컴퓨팅 장치(2102)는 시스템 버스 또는 다양한 컴포넌트에 서로 연결되는 기타 데이터 및 명령어 전달 시스템을 더 포함할 수 있다. 시스템 버스는 메모리 버스나 메모리 제어기, 주변형 버스, USB(universal serial bus) 및/또는 다양한 버스 아키텍쳐 중 임의의 것을 이용하는 로컬 버스나 프로세서와 같이 다양한 버스 구조 중 임의의 하나 또는 이들의 조합을 포함할 수 있다. 컨트롤 및 데이터 라인과 같은 다른 다양한 예들도 고려될 수 있다.
프로세싱 시스템(2104)은 하드웨어를 이용하여 하나 이상의 동작을 수행하는 기능을 나타낸다. 따라서, 프로세싱 시스템(2104)은 프로세서, 기능 블럭 등으로서 구성될 수 있는 하드웨어 구성요소(2110)를 포함하는 것으로 도시되어 있다. 이는 ASIC(application specific integrated circuit)이나 하나 이상의 반도체를 사용하여 형성된 기타 로직 장치와 같은 하드웨어로 구현될 수 있다. 하드웨어 구성요소(2110)는 자신을 형성하는 재료나 자신이 이용하는 처리 메커니즘에 의해 제한되지 않는다. 예로서, 프로세서는 반도체(들) 및/또는 트랜지스터로 이루어질 수 있다 (예컨대, 전자 집적 회로 (IC)). 그런 경우, 프로세서-실행가능 명령어는 전자적으로 실행가능한 명령어일 수 있다.
컴퓨터 판독가능 저장 매체(2106)는 메모리/저장부(2112)를 포함하는 것으로 도시되어 있다. 메모리/저장부(2112)는 하나 이상의 컴퓨터 판독가능 매체와 관련된 메모리/저장부 성능을 나타낸다. 메모리/저장부 컴포넌트(2112)는 (RAM과 같은) 휘발성 매체 및/또는 (ROM, 플래시 메모리, 광학 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 메모리/저장부 컴포넌트(2112)는 고정식 매체(예컨대, RAM, ROM, 고정식 하드 드라이브 등) 뿐 아니라 착탈가능형 매체(이를테면, 플래시 메모리, 착탈가능형 하드 드라이브, 광학 디스크 등)도 포함할 수 있다. 컴퓨터 판독가능 매체(2106)는 후속하여 설명할 다양한 방식으로 구성될 수 있다.
입/출력 인터페이스(2108)는 사용자로 하여금 컴퓨팅 장치(2102)에 명령어와 정보를 입력하도록 하고, 사용자 및/또는 다양한 입/출력 장치를 사용하는 다른 컴포넌트나 장치에 정보가 제공되도록 하는 기능을 나타낸다. 입력 장치의 예로는 키보드, 커서 제어 장치(예컨대, 마우스), 마이크로폰, 스캐너, 터치 기능(예를 들어, 물리적 터치를 감지하도록 구성된 용량성 또는 다른 센서), (이를테면 터치가 아닌 제스쳐와 같은 움직임을 인식하기 위한 적외선 주파수와 같은 가시 또는 비가시 파장을 채용하는) 카메라 등이 있다. 출력 장치의 예로는 (모니터나 프로젝터와 같은) 디스플레이 장치, 스피커, 프린터, 네트워크 카드, 촉각-반응(tactile-response) 장치 등이 있다. 따라서, 컴퓨팅 장치(2102)는 이하에서 논의될 다양한 방식으로 구성되어 사용자 상호작용을 지원할 수 있다.
본 명세서에는 소프트웨어, 하드웨어 구성요소, 프로그램 모듈의 일반적인 맥락에서 다양한 기법들이 기술된다. 일반적으로 그러한 모듈은 루틴, 프로그램, 객체, 구성요소, 컴포넌트, 데이터 구조 등 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 것을 포함한다. 본 명세서에서 사용된 "모듈", "기능", "컴포넌트"라는 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다. 본 명세서에 기술된 기법들의 특징은 플랫폼 독립형인데, 이는 다양한 프로세서를 구비하는 다양한 상용화된 컴퓨팅 플랫폼 상에서 구현될 수 있음을 의미한다.
전술한 모듈과 기법의 구현은 컴퓨터 판독가능 매체의 형태를 통해 저장되거나 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨팅 장치(2102)에 의해 액세스 가능한 다양한 매체를 포함할 수 있다. 예를 들면, 컴퓨터 판독가능 매체는 "컴퓨터 판독가능 저장 매체"와 "컴퓨터 판독가능 신호 매체"를 포함할 수 있으며, 이에 제한되지는 않는다.
컴퓨터 판독가능 저장 매체는 신호 전송, 반송파, 신호 자체와는 달리 정보를 영구적 및/또는 비일시적으로 저장하는 매체 및/또는 장치를 가리킨다. 따라서, 컴퓨터 판독가능 저장 매체는 비-신호 전달 매체를 나타낸다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 로직 구성요소/회로, 또는 기타 데이터와 같은 정보 저장에 적합한 방법이나 기법에서 구현되는 휘발성 및 비휘발성, 착탈가능형 및 비착탈가능형 매체 및/또는 저장 장치를 포함한다. 컴퓨터 판독가능 저장 매체의 예로는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기법, CD-ROM, DVD 또는 기타 광학 저장부, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 저장부 또는 기타 자기 저장 장치, 또는 기타 저장 장치, 유형 매체, 또는 원하는 정보를 저장하는 데 적합하고 컴퓨터에 의해 액세스될 수 있는 제조품(article of manufacture)이 있으나, 여기에 제한되지는 않는다.
컴퓨터 판독가능 신호 매체는 예컨대 네트워크를 통해 컴퓨팅 장치(2102)의 하드웨어로 명령어를 전송하도록 구성된 신호 전달 매체를 일컫는다. 신호 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호 내의 데이터, 데이터 신호, 기타 전송 메커니즘을 채용할 수 있다. 신호 매체는 임의의 정보 전달 매체도 포함할 수 있다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하는 것과 같은 방식으로 신호의 하나 이상의 특성이 설정되거나 변경된 신호를 가리킨다. 예를 들어, 통신 매체는 유선 네트워크나 직접-유선 접속(direct-wired connection)과 같은 유선 매체, 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함할 수 있다.
전술한 바와 같이, 하드웨어 구성요소(2110)와 컴퓨터 판독가능 매체(2106)는 하나 이상의 명령어를 수행하는 것과 같이 본 명세서에 기술된 기법의 적어도 일부 특징을 구현하도록 일부 실시예에서 채택될 수 있는 하드웨어 형식으로 구현되는 모듈, 프로그램가능 장치 로직 및/또는 고정형 장치 로직을 나타낸다. 하드웨어는 직접 회로나 온-칩 시스템, ASIC, FPGA(field-programmable gate array), CPLD(complex programmable logic device), 기타 실리콘 내의 구현물, 기타 하드웨어의 컴포넌트를 포함한다. 이러한 맥락에서, 하드웨어는 명령어에 의해 정의된 프로그램 태스크를 수행하는 처리 장치 및/또는 하드웨어에 의해 구현되는 로직으로서 작동할 수 있으며, 예컨대, 전술한 컴퓨터 판독가능 저장 매체의 실행을 위한 명령어를 저장하는 데 사용되는 하드웨어로서 작동할 수도 있다.
전술한 내용의 조합을 이용하여 전술한 다양한 기법을 구현할 수 있다. 따라서, 소프트웨어, 하드웨어, 또는 실행가능한 모듈은 컴퓨터 판독가능 저장 매체의 소정 형식으로 및/또는 하나 이상의 하드웨어 구성요소(2110)에 의해 구현되는 하나 이상의 명령어 및/또는 로직으로서 구현될 수 있다. 컴퓨팅 장치(2102)는 소프트웨어 및/또는 하드웨어 모듈에 대응하는 특정 명령어 및/또는 기능을 구현하도록 구성될 수 있다. 따라서, 컴퓨팅 장치(2102)에 의해 소프트웨어로서 실행가능한 모듈의 구현은 적어도 부분적으로 하드웨어로, 예를 들어, 컴퓨터 판독가능 저장 매체 및/또는 프로세싱 시스템(2104)의 하드웨어 구성요소(2110)를 통해 달성될 수 있다. 명령어 및/또는 기능은 하나 이상의 제조품(예컨대, 하나 이상의 컴퓨팅 장치(2102) 및/또는 프로세싱 시스템(2104))에 의해 실행가능/작동가능하여, 본 명세서에 기술한 기법, 방법 및 실시예를 구현할 수 있다.
도 21에 더 도시되어 있듯이, 예시적인 시스템(2100)은 개인용 컴퓨터(PC), 텔레비전 장치 및/또는 이동 장치 상에서 애플리케이션이 실행될 때 끊김없는 사용자 경험을 위한 유비쿼터스 환경을 가능하게 한다. 애플리케이션을 이용하는 동안, 비디오 게임을 하는 동안, 비디오를 시청하는 동안 하나의 장치로부터 다른 장치로 옮겨갈 때 서비스와 애플리케이션은 공통된 사용자 경험을 위해 세 환경 모두에서 실질적으로 유사하게 실행된다.
예시적인 시스템(2100)에서, 복수 개의 장치가 중앙 컴퓨팅 장치를 통해 상호접속된다. 중앙 컴퓨팅 장치는 복수 개의 장치에 대해 같은 위치에 있거나 복수 개의 장치로부터 원격으로 위치할 수 있다. 일 실시예에서, 중앙 컴퓨팅 장치는 네트워크, 인터넷, 또는 기타 다른 통신 링크를 통해 복수 개의 장치에 접속되는 하나 이상의 서버 컴퓨터의 클라우드일 수 있다.
일 실시예에서, 이러한 상호접속 구조는 복수 개의 장치를 통해 기능들이 전달되도록 하여, 복수 개의 장치의 사용자에게 공통되고 끊김없는 경험을 제공할 수 있다. 복수 개의 장치 각각은 서로 다른 물리적 요구조건과 성능을 가질 수 있고, 중앙 컴퓨팅 장치는 어떤 장치에 대해 맞춤화됨과 동시에 모든 장치들에 대해 공통인 장치에 대한 경험의 전달을 가능하게 하도록 플랫폼을 사용한다. 일 실시예에서, 타겟 장치의 클래스가 생성되고 경험들은 장치의 공통 클래스(generic class)에 대해 맞춤화된다. 장치의 클래스는 물리적 특징, 사용의 유형, 기타 장치의 공통 특성에 의해 정의될 수 있다.
다양한 구현예에서, 컴퓨팅 장치(2102)는 컴퓨터(2114), 모바일(2116), 텔레비전(2118) 용도와 같은 다양한 구성을 상정할 수 있다. 이들 구성 각각은 전반적으로 상이한 구성과 성능을 가질 수 있어서, 컴퓨팅 장치(2102)는 하나 이상의 상이한 장치 클래스에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 장치(2102)는 개인용 컴퓨터, 데스크탑 컴퓨터, 멀티-스크린 컴퓨터, 랩탑 컴퓨터, 넷북 등을 포함하는 장치의 컴퓨터(2114) 클래스로서 구현될 수 있다.
컴퓨팅 장치(2102)는 휴대 전화, 휴대용 뮤직 플레이어, 휴대용 게임 장치, 태블릿 컴퓨터, 멀티-스크린 컴퓨터 등과 같은 모바일 장치를 포함하는 장치의 모바일(2116) 클래스로서 구현될 수도 있다. 컴퓨팅 장치(2102)는 통상의 시청 환경에서 일반적으로 대형 스크린에 접속되거나 대형 스크린을 구비하는 장치를 포함하는 장치의 텔레비전(2118) 클래스로서 구현될 수도 있다. 이들 장치는 텔레비전, 셋탑 박스, 게임 콘솔 등을 포함한다.
본 명세서에 기술된 기법은 컴퓨팅 장치(2102)의 다양한 구성에 의해 지원되며, 본 명세서에 기술된 구체적인 예로 한정되지 않는다. 기능들은 후술하는 플랫폼(2122)을 통한 클라우드(2120)에 걸친 분산형 시스템을 사용하여 전체적 또는 부분적으로 구현될 수 있다.
클라우드(2120)는 자원(2124)을 위한 플랫폼(2122)을 포함하거나 나타낼 수 있다. 플랫폼(2122)은 하드웨어(예컨대, 서버)의 기본 기능과 클라우드(2120)의 소프트웨어 자원을 추출한다. 자원(2124)은 컴퓨팅 장치(2102)로부터 떨어져 있는 서버 상에서 컴퓨터 처리가 수행되는 동안 이용될 수 있는 데이터 및/또는 애플리케이션을 포함할 수 있다. 자원(2124)은 셀룰러 또는 Wi-Fi 네트워크와 같은 가입자 네트워크를 통하거나 인터넷을 통해 제공되는 서비스들도 포함할 수 있다.
플랫폼(2122)은 자원과 기능을 추출하여 컴퓨팅 장치(2102)를 다른 컴퓨팅 장치와 접속할 수 있다. 플랫폼(2122)은 자원의 스케일링을 추출하여, 플랫폼(2122)을 통해 구현되는 자원(2124)에 대한 요구에 상응하는 스케일 레벨을 제공한다. 따라서, 상호접속된 장치의 실시예에서, 본 명세서에 기술된 기능의 구현은 시스템(2100) 전체에 분산될 수 있다. 예를 들어, 기능은 컴퓨팅 장치(2102) 상에서 부분적으로 구현될 수도 있고, 클라우드(2120)의 기능을 추출하는 플랫폼(2122)을 통해 구현될 수도 있다.
결론
본 명세서에서는 본 발명을 구조적 특징 및/또는 방법적 동작에 특유한 표현을 사용하여 기술하였지만, 후속하는 특허청구범위에 정의된 발명은 기술된 구체적인 특징이나 동작으로 한정되는 것은 아님을 이해해야 한다. 오히려, 개시된 구체적인 특징이나 동작은 청구항에 기재된 발명을 구현하기 위한 예시적인 형태로 기술된 것이다.

Claims (10)

  1. 컴퓨팅 장치에 의해 구현되는 방법으로서,
    합성 시스템에 의해, 하나 이상의 비주얼을 렌더링하기 위해 서피스를 할당하라는 요청을 수신하는 단계 -상기 요청은 상기 서피스의 크기를 특정함- 와,
    상기 합성 시스템에 의해, 상기 요청의 수신에 응답하여 상기 하나 이상의 비주얼을 렌더링하기 위해 상기 요청된 크기보다 더 큰 크기를 갖는 서피스를 할당하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 요청은 상기 컴퓨팅 장치에 의해 실행된 하나 이상의 애플리케이션으로부터 상기 합성 시스템에 의해 수신되는
    방법.
  3. 제2항에 있어서,
    상기 요청은 상기 하나 이상의 애플리케이션으로부터 상기 합성 시스템의 하나 이상의 애플리케이션 프로그래밍 인터페이스를 통해 수신되는
    방법.
  4. 제1항에 있어서,
    상기 서피스는 상기 요청이 수신될 때 상기 합성 시스템에 의해 초기화되지만 상기 컴퓨팅 장치의 메모리에 할당되지는 않는
    방법.
  5. 제1항에 있어서,
    상기 서피스는 상기 합성 시스템에 의해 유지되는 가상 서피스이고, 상기 가상 서피스를 생성하고, 업데이트하고, 삭제하는 기능을 포함하는
    방법.
  6. 제5항에 있어서,
    상기 가상 서피스는 상기 컴퓨팅 장치의 디스플레이 장치 상에 상기 하나 이상의 비주얼을 디스플레이하라는 요청이 수신되기 전에 하나 이상의 비주얼을 렌더링하는 기능을 포함하는
    방법.
  7. 제1항에 있어서,
    상기 비주얼 서피스는 초기화될 때 상기 하나 이상의 애플리케이션으로부터 실제 할당에 의해 백킹(back)되지 않는
    방법.
  8. 적어도 부분적으로 하드웨어로 구현되며 하나 이상의 애플리케이션에 의한 액세스를 위해 하나 이상의 애플리케이션 프로그래밍 인터페이스를 노출시켜 상기 하나 이상의 애플리케이션에 의해 특정되는 크기를 갖는 하나 이상의 비주얼을 렌더링하기 위해 가상 서피스를 할당하는 합성 시스템을 구현하도록 구성된 하나 이상의 모듈을 포함하되,
    컴퓨팅 장치.
  9. 제8항에 있어서,
    상기 합성 시스템에 의해 상기 서피스를 할당하는 것은 상기 하나 이상의 애플리케이션에 의해 요청된 크기보다 더 큰 크기를 갖도록 수행되는
    컴퓨팅 장치.
  10. 명령어가 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는, 컴퓨팅 장치에 의한 실행에 응답하여 상기 컴퓨팅 장치로 하여금
    디스플레이 장치에 의해 디스플레이하기 위한 비주얼을 포함하는 서피스를 관리하는 동작과,
    상기 디스플레이 장치에 의해 디스플레이되는 상기 서피스 내의 유효 영역을 추적하는 동작을 포함하는
    하나 이상의 동작을 수행하는 합성 시스템을 구현하게 하는 컴퓨터 판독가능 저장 매체.
KR1020147033548A 2012-05-31 2013-05-17 가상 서피스 할당 기법 KR102055467B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/485,805 US9286122B2 (en) 2012-05-31 2012-05-31 Display techniques using virtual surface allocation
US13/485,805 2012-05-31
PCT/US2013/041485 WO2013180977A1 (en) 2012-05-31 2013-05-17 Virtual surface allocation

Publications (2)

Publication Number Publication Date
KR20150016527A true KR20150016527A (ko) 2015-02-12
KR102055467B1 KR102055467B1 (ko) 2019-12-12

Family

ID=48538069

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147033548A KR102055467B1 (ko) 2012-05-31 2013-05-17 가상 서피스 할당 기법

Country Status (6)

Country Link
US (1) US9286122B2 (ko)
EP (1) EP2859447B1 (ko)
JP (1) JP6230076B2 (ko)
KR (1) KR102055467B1 (ko)
CN (1) CN104321752B (ko)
WO (1) WO2013180977A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9582848B2 (en) 2012-12-28 2017-02-28 Apple Inc. Sprite Graphics rendering system
US20140320592A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Virtual Video Camera
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
CN108961382B (zh) * 2018-07-11 2019-11-26 腾讯科技(深圳)有限公司 一种图像渲染方法、装置和存储介质
CN110570506B (zh) * 2019-09-11 2023-09-22 珠海金山数字网络科技有限公司 一种地图资源管理方法、装置、计算设备及存储介质
US20230059021A1 (en) * 2021-08-23 2023-02-23 Jobby Inc. Portal and interface system and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030097646A (ko) * 2002-06-20 2003-12-31 마이크로소프트 코포레이션 제어 가능한 텍스처 샘플링을 제공하는 시스템 및 방법
KR20060050830A (ko) * 2004-08-30 2006-05-19 큐엔엑스 소프트웨어 시스템즈 하드웨어 그래픽 레이어로의 투명 액세스를 제공하는시스템
KR20080070840A (ko) * 2005-11-30 2008-07-31 마이크로소프트 코포레이션 분광 컬러 관리
KR20110099010A (ko) * 2008-12-18 2011-09-05 마이크로소프트 코포레이션 데이터 시각화 상호 작용 아키텍처

Family Cites Families (197)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0418638A (ja) * 1990-05-11 1992-01-22 Fujitsu Ltd 静的メモリ割当て処理方法
US5270103A (en) 1990-11-21 1993-12-14 Xerox Corporation Coated receiver sheets
EP0620520A1 (en) 1993-03-30 1994-10-19 AT&T Corp. Method for making persistent data objects having hidden pointers
US5729704A (en) * 1993-07-21 1998-03-17 Xerox Corporation User-directed method for operating on an object-based model data structure through a second contextual image
WO1995022104A1 (en) * 1994-02-14 1995-08-17 Ni-Tech Pty. Limited Use of multiple applications and allocation of memory or other resources in a gui environment
JP3346513B2 (ja) 1994-07-01 2002-11-18 ミノルタ株式会社 マップ記憶方法及びそのマップを使用する経路作成方法
AUPM701394A0 (en) 1994-07-22 1994-08-18 Monash University A graphical display system
AUPM704194A0 (en) 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the evaluation of a graphical programming language
US5564002A (en) 1994-08-01 1996-10-08 International Business Machines Corporation Method and apparatus for implementing a virtual desktop through window positioning
US5588071A (en) 1994-10-26 1996-12-24 Minnesota Mining And Manufacturing Company Identifying an area of interest using histogram data arranged in predetermined sequence
US5929852A (en) * 1995-05-05 1999-07-27 Apple Computer, Inc. Encapsulated network entity reference of a network component system
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US5781195A (en) 1996-04-16 1998-07-14 Microsoft Corporation Method and system for rendering two-dimensional views of a three-dimensional surface
US5844569A (en) 1996-04-25 1998-12-01 Microsoft Corporation Display device interface including support for generalized flipping of surfaces
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
US5784699A (en) 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5870769A (en) 1996-06-07 1999-02-09 At&T Corp. Internet access system and method with active link status indicators
US6067093A (en) * 1996-08-14 2000-05-23 Novell, Inc. Method and apparatus for organizing objects of a network map
US5986670A (en) 1996-09-13 1999-11-16 Dries; Roberta L. Method and apparatus for producing a computer generated display that permits visualization of changes to the interior or exterior of a building structure shown in its actual environment
US6249289B1 (en) 1996-11-27 2001-06-19 Silicon Graphics, Inc. Multi-purpose high resolution distortion correction
US5918239A (en) 1997-01-21 1999-06-29 International Business Machines Corporation Deferred display of web pages corresponding to links selected by user
US6639613B1 (en) * 1997-11-21 2003-10-28 Xsides Corporation Alternate display content controller
US6191796B1 (en) 1998-01-21 2001-02-20 Sensable Technologies, Inc. Method and apparatus for generating and interfacing with rigid and deformable surfaces in a haptic virtual reality environment
US6182133B1 (en) 1998-02-06 2001-01-30 Microsoft Corporation Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching
US6278479B1 (en) 1998-02-24 2001-08-21 Wilson, Hewitt & Associates, Inc. Dual reality system
JP4434355B2 (ja) 1998-03-27 2010-03-17 キヤノン株式会社 アニメ―ションフォント作成装置
US6091422A (en) 1998-04-03 2000-07-18 Avid Technology, Inc. System for editing complex visual data providing a continuously updated rendering
US6426750B1 (en) 1998-07-14 2002-07-30 Microsoft Corporation Run-time geomorphs
US6552722B1 (en) 1998-07-17 2003-04-22 Sensable Technologies, Inc. Systems and methods for sculpting virtual objects in a haptic virtual reality environment
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US7031517B1 (en) 1998-10-02 2006-04-18 Canon Kabushiki Kaisha Method and apparatus for segmenting images
US6853385B1 (en) 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6411302B1 (en) * 1999-01-06 2002-06-25 Concise Multimedia And Communications Inc. Method and apparatus for addressing multiple frame buffers
US7013021B2 (en) 1999-03-19 2006-03-14 Digimarc Corporation Watermark detection utilizing regions with higher probability of success
US6636633B2 (en) 1999-05-03 2003-10-21 Intel Corporation Rendering of photorealistic computer graphics images
US6657645B2 (en) 1999-06-11 2003-12-02 Microsoft Corporation System, method, and computer-readable medium for displaying keyboard cues in a window
US6542160B1 (en) 1999-06-18 2003-04-01 Phoenix Technologies Ltd. Re-generating a displayed image
US6330003B1 (en) 1999-07-30 2001-12-11 Microsoft Corporation Transformable graphical regions
US6226017B1 (en) 1999-07-30 2001-05-01 Microsoft Corporation Methods and apparatus for improving read/modify/write operations
US6335765B1 (en) 1999-11-08 2002-01-01 Weather Central, Inc. Virtual presentation system and method
US6501474B1 (en) 1999-11-29 2002-12-31 Ati International Srl Method and system for efficient rendering of image component polygons
US6894698B2 (en) 2000-01-11 2005-05-17 Sun Microsystems, Inc. Recovering added precision from L-bit samples by dithering the samples prior to an averaging computation
US6850967B1 (en) 2000-02-19 2005-02-01 Hewlett-Packard Development Company, L.P. System and method for ensuring transparent sychronization of multiple applications across remote systems
US7738688B2 (en) 2000-05-03 2010-06-15 Aperio Technologies, Inc. System and method for viewing virtual slides
US6704024B2 (en) 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US6864886B1 (en) 2000-08-10 2005-03-08 Sportvision, Inc. Enhancing video using a virtual surface
JP4595228B2 (ja) 2000-08-24 2010-12-08 ソニー株式会社 受信装置および方法、送信装置および方法、記録媒体、並びに通信システム
US7756391B1 (en) 2000-09-01 2010-07-13 Matrox Electronic Systems Ltd. Real-time video editing architecture
US6900813B1 (en) 2000-10-04 2005-05-31 Ati International Srl Method and apparatus for improved graphics rendering performance
US6954218B2 (en) 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for high-performance rendering and hit-testing of a window tree
US6762776B2 (en) 2000-11-10 2004-07-13 Microsoft Corporation Mouse input panel windows class list
US6906985B2 (en) 2001-01-25 2005-06-14 Dphi Acquisitions, Inc. Calibration of tracking error signal gain in a tracking servo system
JP4551018B2 (ja) 2001-04-05 2010-09-22 富士通株式会社 画像結合装置
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6809745B1 (en) 2001-10-01 2004-10-26 Adobe Systems Incorporated Compositing two-dimensional and 3-dimensional images
US6904169B2 (en) 2001-11-13 2005-06-07 Nokia Corporation Method and system for improving color images
US7010755B2 (en) 2002-04-05 2006-03-07 Microsoft Corporation Virtual desktop manager
AU2003230984A1 (en) 2002-04-19 2003-11-03 Computer Associates Think, Inc. System and method for providing inferencing services
US6894692B2 (en) 2002-06-11 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for sychronizing video data streams
US7069396B2 (en) 2002-06-27 2006-06-27 Hewlett-Packard Development Company, L.P. Deferred memory allocation for application threads
US20040008212A1 (en) 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Reshaping irregularly-shaped images for improved compression
US7051040B2 (en) 2002-07-23 2006-05-23 Lightsurf Technologies, Inc. Imaging system providing dynamic viewport layering
JP4158462B2 (ja) 2002-09-04 2008-10-01 ソニー株式会社 画面表示処理装置及び画面表示処理方法、並びにコンピュータ・プログラム
US7130890B1 (en) 2002-09-04 2006-10-31 Hewlett-Packard Development Company, L.P. Method and system for adaptively prefetching objects from a network
US8961316B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for improving the graphics performance of hosted applications
US7127592B2 (en) * 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
US6992675B2 (en) 2003-02-04 2006-01-31 Ati Technologies, Inc. System for displaying video on a portable device and method thereof
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7133054B2 (en) 2004-03-17 2006-11-07 Seadragon Software, Inc. Methods and apparatus for navigating an image
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
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
EP1465116A1 (en) 2003-03-31 2004-10-06 STMicroelectronics Limited Computer graphics
NO20031586L (no) 2003-04-08 2004-10-11 Favourite Systems As Vindussystem for datainnretning
JP3966832B2 (ja) 2003-04-28 2007-08-29 株式会社東芝 描画処理装置、及び、描画処理方法
US7215801B2 (en) 2003-06-05 2007-05-08 General Electric Company Method, system and apparatus for processing radiographic images of scanned objects
DE10326811A1 (de) 2003-06-13 2005-01-20 Siemens Ag Verfahren zur Darstellung von Grafikobjekten und Kommunikationsgerät
US7391424B2 (en) 2003-08-15 2008-06-24 Werner Gerhard Lonsing Method and apparatus for producing composite images which contain virtual objects
US7219209B2 (en) * 2003-08-29 2007-05-15 Motorola, Inc. Bus filter for memory address translation
US20050283566A1 (en) 2003-09-29 2005-12-22 Rockwell Automation Technologies, Inc. Self testing and securing ram system and method
US7949960B2 (en) 2003-09-30 2011-05-24 Sap Ag Predictive rendering of user interfaces
US7839419B2 (en) 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7511718B2 (en) 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7369134B2 (en) * 2003-12-29 2008-05-06 Anark Corporation Methods and systems for multimedia memory management
US7313668B2 (en) * 2004-01-29 2007-12-25 Hewlett-Packard Development Company, L.P. Immediate virtual memory
US7986328B2 (en) 2004-02-26 2011-07-26 Hewlett-Packard Development Company, L.P. Graphics optimization system and method
US7342580B1 (en) 2004-04-02 2008-03-11 Pacific Data Images Llc Surface compression based on reference geometry in animation models
US7484065B2 (en) * 2004-04-20 2009-01-27 Hewlett-Packard Development Company, L.P. Selective memory allocation
US7400322B1 (en) 2004-06-24 2008-07-15 Julian Michael Urbach Viewport-based desktop rendering engine
US20060107229A1 (en) 2004-11-15 2006-05-18 Microsoft Corporation Work area transform in a graphical user interface
US7334104B2 (en) * 2004-11-20 2008-02-19 International Business Machines Corporation Satisfying memory allocation requests from memory pool or lookaside lists based on memory size requested to be allocated
GB0502844D0 (en) 2005-02-11 2005-03-16 Univ Edinburgh Storing digital content for access using a captured image
US7624354B2 (en) 2005-04-29 2009-11-24 Microsoft Corporation Efficient workspace management using content groups
US7404152B2 (en) 2005-06-03 2008-07-22 Research In Motion Limited Displaying messages on handheld devices
US20060290705A1 (en) 2005-06-24 2006-12-28 Microsoft Corporation Performing a pre-rendering pass in digital image processing
US9041744B2 (en) * 2005-07-14 2015-05-26 Telecommunication Systems, Inc. Tiled map display on a wireless device
US7681200B2 (en) 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
US20070040788A1 (en) 2005-08-17 2007-02-22 Texas Instruments, Inc. Modular Graphics Stack With Video Support
JP4305431B2 (ja) 2005-09-06 2009-07-29 ソニー株式会社 画像処理装置、マスク作成方法及びプログラム
EP1770954A1 (en) 2005-10-03 2007-04-04 Amadeus S.A.S. System and method to maintain coherence of cache contents in a multi-tier software system aimed at interfacing large databases
CN101535965B (zh) * 2005-10-14 2013-11-20 塞门铁克操作公司 用于提高存储管理系统的可伸缩性和可移植性的技术
TWI322354B (en) 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
US7383393B2 (en) 2005-10-28 2008-06-03 Freescale Semiconductor, Inc. System and method for cooperative prefetching
US8255818B2 (en) 2005-11-17 2012-08-28 Oracle International Corporation System and method for providing drag and drop functionality in a communities framework
JP2007157063A (ja) 2005-12-08 2007-06-21 Sony Corp 画像処理装置及び画像処理方法、並びにコンピュータ・プログラム
KR101256548B1 (ko) 2005-12-30 2013-04-19 삼성전자주식회사 영상 부호화 및 복호화 장치 및 그 방법
US8244051B2 (en) 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US7880745B2 (en) 2006-06-20 2011-02-01 Via Technologies, Inc. Systems and methods for border color handling in a graphics processing unit
US7401199B2 (en) * 2006-06-28 2008-07-15 Motorola, Inc Method and system for allocating memory to an electronic device
US7733350B2 (en) 2006-06-30 2010-06-08 Microsoft Corporation Anisometric texture synthesis
US20080071559A1 (en) * 2006-09-19 2008-03-20 Juha Arrasvuori Augmented reality assisted shopping
US7594093B1 (en) 2006-10-12 2009-09-22 Foundry Networks, Inc. Virtual memory mapping for efficient memory usage
KR101217559B1 (ko) 2006-10-27 2013-01-02 삼성전자주식회사 전력 소모를 최소화하는 그래픽스 데이터 렌더링 방법 및장치
KR20080051484A (ko) 2006-12-06 2008-06-11 삼성전자주식회사 휴대단말기의 응용프로그램 인터페이스 제공 시스템 및방법
CN101197044B (zh) 2006-12-06 2011-02-02 鸿富锦精密工业(深圳)有限公司 图像合成系统及方法
JP4860488B2 (ja) 2007-01-04 2012-01-25 ルネサスエレクトロニクス株式会社 画像表示制御装置
US20090213081A1 (en) 2007-01-10 2009-08-27 Case Jr Charlie W Portable Electronic Device Touchpad Input Controller
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US20080238928A1 (en) * 2007-03-30 2008-10-02 Bimal Poddar Frame buffer compression for desktop composition
US8108799B2 (en) * 2007-03-30 2012-01-31 Microsoft Corporation Remoting of windows presentation framework based applications in a non-composed desktop
US20080285074A1 (en) 2007-04-20 2008-11-20 Global Graphics Software Limited Systems, devices, and methods for variable data printing
US7843451B2 (en) 2007-05-25 2010-11-30 Google Inc. Efficient rendering of panoramic images, and applications thereof
US7941758B2 (en) 2007-09-04 2011-05-10 Apple Inc. Animation of graphical objects
US8368692B2 (en) 2007-10-19 2013-02-05 Siemens Aktiengesellschaft Clipping geometries in ray-casting
EP2235713A4 (en) 2007-11-29 2012-04-25 Oculis Labs Inc METHOD AND APPARATUS FOR SECURE VISUAL CONTENT DISPLAY
KR100932634B1 (ko) 2007-12-27 2009-12-21 팅크웨어(주) 증강 현실을 이용한 3차원 웹 지도 서비스 방법 및 그시스템
US20090172331A1 (en) * 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
US8555193B2 (en) 2008-01-17 2013-10-08 Google Inc. System for intelligent automated layout and management of interactive windows
US8204338B2 (en) 2008-02-14 2012-06-19 Microsoft Corporation Factoring repeated content within and among images
US7937452B2 (en) 2008-02-19 2011-05-03 Microsoft Corporation Framework for rendering plug-ins in remote access services
US8525825B2 (en) 2008-02-27 2013-09-03 Google Inc. Using image content to facilitate navigation in panoramic image data
US8010624B2 (en) 2008-03-27 2011-08-30 Amazon Technologies, Inc. Dynamic composition for image transmission
US8125495B2 (en) 2008-04-17 2012-02-28 Microsoft Corporation Displaying user interface elements having transparent effects
US8307300B1 (en) 2008-05-13 2012-11-06 Google Inc. Content resizing and caching in multi-process browser architecture
JP5043748B2 (ja) 2008-05-19 2012-10-10 キヤノン株式会社 コンテンツ管理装置、コンテンツ管理装置の制御方法、プログラム及び記録媒体
US8184120B2 (en) * 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
US20090315900A1 (en) * 2008-06-23 2009-12-24 Microsoft Corporation Generic surface manager
US8432405B2 (en) 2008-06-26 2013-04-30 Microsoft Corporation Dynamically transitioning between hardware-accelerated and software rendering
US8176433B2 (en) * 2008-08-18 2012-05-08 International Business Machines Corporation Application window area change surveillance
WO2010030712A1 (en) * 2008-09-09 2010-03-18 Citrix Systems, Inc. Methods and systems for per pixel alpha-blending of a parent window and a portion of a background image
US20100073379A1 (en) 2008-09-24 2010-03-25 Sadan Eray Berger Method and system for rendering real-time sprites
US20100162126A1 (en) 2008-12-23 2010-06-24 Palm, Inc. Predictive cache techniques
US8161087B2 (en) 2008-12-30 2012-04-17 Sap France Displaying and manipulating virtual objects on virtual surfaces
EP2375404A4 (en) 2009-01-06 2013-03-06 Mitsubishi Electric Corp DEVICE FOR CONTROLLING DRAWING PLATES
US8448090B2 (en) 2009-01-23 2013-05-21 Hewlett-Packard Development Company, L.P. Selective plug-in activation for resource-limited platforms
US8207983B2 (en) 2009-02-18 2012-06-26 Stmicroelectronics International N.V. Overlaying videos on a display device
WO2010124397A1 (en) 2009-04-29 2010-11-04 Torch Mobile Inc. Software-based asynchronous tiled backingstore
JP4676011B2 (ja) 2009-05-15 2011-04-27 株式会社東芝 情報処理装置、表示制御方法およびプログラム
US8368707B2 (en) * 2009-05-18 2013-02-05 Apple Inc. Memory management based on automatic full-screen detection
US8368694B2 (en) 2009-06-04 2013-02-05 Autodesk, Inc Efficient rendering of multiple frame buffers with independent ray-tracing parameters
US8681106B2 (en) 2009-06-07 2014-03-25 Apple Inc. Devices, methods, and graphical user interfaces for accessibility using a touch-sensitive surface
US8896505B2 (en) 2009-06-12 2014-11-25 Global Oled Technology Llc Display with pixel arrangement
US8907941B2 (en) 2009-06-23 2014-12-09 Disney Enterprises, Inc. System and method for integrating multiple virtual rendering systems to provide an augmented reality
US9298345B2 (en) 2009-06-23 2016-03-29 Microsoft Technology Licensing, Llc Block view for geographic navigation
US8223180B2 (en) 2009-08-24 2012-07-17 Samsung Electronics Co., Ltd. Gamut mapping which takes into account pixels in adjacent areas of a display unit
JP5451285B2 (ja) 2009-09-24 2014-03-26 キヤノン株式会社 画像処理装置、画像処理方法
US9037972B2 (en) 2009-09-25 2015-05-19 Thomson Licensing Apparatus and method for grid navigation
US8832585B2 (en) 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
US8497876B2 (en) 2009-11-02 2013-07-30 Pacific Data Images Llc Infinite complexity deep-framebuffer rendering
US9268466B2 (en) 2009-12-09 2016-02-23 Citrix Systems, Inc. Methods and systems for updating a dock with a user interface element representative of a remote application
US9146884B2 (en) 2009-12-10 2015-09-29 Microsoft Technology Licensing, Llc Push pull adaptive capture
JP4818427B2 (ja) 2009-12-22 2011-11-16 株式会社東芝 情報処理装置及び画面選択方法
US20110173569A1 (en) 2010-01-13 2011-07-14 Rockmelt, Inc. Preview Functionality for Increased Browsing Speed
KR101661931B1 (ko) 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
DE202011110886U1 (de) 2010-04-12 2017-01-18 Google Inc. Synthetische Navigationselemente für elektronische Dokumente
JP5541974B2 (ja) 2010-06-14 2014-07-09 任天堂株式会社 画像表示プログラム、装置、システムおよび方法
US8839112B2 (en) * 2010-08-10 2014-09-16 Microsoft Corporation Cloning or extending a computer desktop on a wireless display surface
US8493404B2 (en) 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
KR101705581B1 (ko) 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법
US8860716B2 (en) 2010-10-13 2014-10-14 3D Nuri Co., Ltd. 3D image processing method and portable 3D display apparatus implementing the same
KR101174216B1 (ko) 2010-10-25 2012-08-14 엔에이치엔(주) 지역기반의 검색어를 추천하는 시스템 및 그 방법
US8799759B2 (en) 2010-12-13 2014-08-05 International Business Machines Corporation Pre-rendering web content
US10109065B2 (en) * 2011-01-25 2018-10-23 Qualcomm Incorporated Using occlusions to detect and track three-dimensional objects
US9147264B2 (en) 2011-02-23 2015-09-29 Nvidia Corporation Method and system for quantizing and squeezing base values of associated tiles in an image
US9077970B2 (en) 2011-02-25 2015-07-07 Adobe Systems Incorporated Independent layered content for hardware-accelerated media playback
GB201104066D0 (en) 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system
JP2012194794A (ja) 2011-03-16 2012-10-11 Fujitsu Ltd 携帯端末及びコンテンツ表示プログラム
GB2489272B (en) 2011-03-23 2013-03-13 Toshiba Res Europ Ltd An image processing system and method
US9383917B2 (en) 2011-03-28 2016-07-05 Microsoft Technology Licensing, Llc Predictive tiling
KR20130136566A (ko) * 2011-03-29 2013-12-12 퀄컴 인코포레이티드 로컬 멀티-사용자 협업을 위한 모듈식 모바일 접속된 피코 프로젝터들
US8438474B1 (en) 2011-04-27 2013-05-07 Google Inc. Speculative rendering during cache revalidation
US8788711B2 (en) 2011-06-14 2014-07-22 Google Inc. Redacting content and inserting hypertext transfer protocol (HTTP) error codes in place thereof
US8996987B2 (en) 2011-06-30 2015-03-31 Apple Inc. List view optimization
US8745212B2 (en) 2011-07-01 2014-06-03 Google Inc. Access to network content
US8612418B2 (en) 2011-07-14 2013-12-17 Google Inc. Mobile web browser for pre-loading web pages
US8810533B2 (en) * 2011-07-20 2014-08-19 Z124 Systems and methods for receiving gesture inputs spanning multiple input devices
US8384726B1 (en) 2011-08-31 2013-02-26 Google Inc. Selective rendering of off-screen content
US8600921B2 (en) 2011-09-15 2013-12-03 Google Inc. Predicting user navigation events in a browser using directed graphs
US20130073670A1 (en) 2011-09-15 2013-03-21 Microsoft Corporation Geo-Migration Of User State
US9229770B2 (en) 2011-09-16 2016-01-05 Skype Invoking timed iterator for executing tasks within timeout constraint without spawning new thread
US8341245B1 (en) 2011-09-26 2012-12-25 Google Inc. Content-facilitated speculative preparation and rendering
US20130093750A1 (en) 2011-10-12 2013-04-18 Google Inc. Use of banding to optimize map rendering in a three-dimensional tilt view
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030097646A (ko) * 2002-06-20 2003-12-31 마이크로소프트 코포레이션 제어 가능한 텍스처 샘플링을 제공하는 시스템 및 방법
KR20060050830A (ko) * 2004-08-30 2006-05-19 큐엔엑스 소프트웨어 시스템즈 하드웨어 그래픽 레이어로의 투명 액세스를 제공하는시스템
KR20080070840A (ko) * 2005-11-30 2008-07-31 마이크로소프트 코포레이션 분광 컬러 관리
KR20110099010A (ko) * 2008-12-18 2011-09-05 마이크로소프트 코포레이션 데이터 시각화 상호 작용 아키텍처

Also Published As

Publication number Publication date
CN104321752A (zh) 2015-01-28
JP2015528145A (ja) 2015-09-24
WO2013180977A1 (en) 2013-12-05
US9286122B2 (en) 2016-03-15
KR102055467B1 (ko) 2019-12-12
CN104321752B (zh) 2018-01-02
EP2859447B1 (en) 2020-07-08
US20130321453A1 (en) 2013-12-05
EP2859447A1 (en) 2015-04-15
JP6230076B2 (ja) 2017-11-15

Similar Documents

Publication Publication Date Title
KR102055467B1 (ko) 가상 서피스 할당 기법
US9235925B2 (en) Virtual surface rendering
US10043489B2 (en) Virtual surface blending and BLT operations
US9959668B2 (en) Virtual surface compaction
JP7004759B2 (ja) 複数のレンダーターゲット内でアクティブカラーサンプルカウントを変更することによりスクリーンの位置によって有効解像度を変動させること
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
US9715750B2 (en) System and method for layering using tile-based renderers
US10157593B2 (en) Cross-platform rendering engine
CN113112579A (zh) 渲染方法、装置、电子设备和计算机可读存储介质
US9324299B2 (en) Atlasing and virtual surfaces
CN107943805B (zh) 一种动画渲染及发布方法、装置
US8884978B2 (en) Buffer display techniques
CN112001995B (zh) 渲染装置、方法、电子设备及可读存储介质

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right