KR101952983B1 - 콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템 - Google Patents

콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템 Download PDF

Info

Publication number
KR101952983B1
KR101952983B1 KR1020147006551A KR20147006551A KR101952983B1 KR 101952983 B1 KR101952983 B1 KR 101952983B1 KR 1020147006551 A KR1020147006551 A KR 1020147006551A KR 20147006551 A KR20147006551 A KR 20147006551A KR 101952983 B1 KR101952983 B1 KR 101952983B1
Authority
KR
South Korea
Prior art keywords
tile
content
layer
rendering
gpu
Prior art date
Application number
KR1020147006551A
Other languages
English (en)
Other versions
KR20140060307A (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 KR20140060307A publication Critical patent/KR20140060307A/ko
Application granted granted Critical
Publication of KR101952983B1 publication Critical patent/KR101952983B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory

Landscapes

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

Abstract

콘텐트의 타일-기반 렌더링을 위한 방법이 개시된다. 콘텐트는 다수의 타일로서 편성된 메모리 영역 내에서 렌더링될 수 있다. 콘텐트가 레이어로 생성되는 시나리오에서, 이미지 레이어를 합성하는 것을 수반하는 동작에 대해, 이미지의 부분이 프로세싱되는 순서는 총 수의 메모리 액세스 회수를 감소시키도록 선택될 수 있고, 이는 이어서 타일-기반 렌더링을 사용하는 컴퓨터의 성능을 향상시킬 수 있다. 이미지는 동일한 타일에 대응하는 상이한 레이어의 부분을 렌더링하는 것에 관한 동작이 순차적으로 수행되도록 프로세싱될 수 있다. 이러한 프로세싱은 타일-기반 렌더링을 지원하는 그래픽 프로세싱 유닛을 갖는 컴퓨터에 사용될 수 있고, 슬레이트 폼팩터를 갖는 컴퓨터에 특히 양호하게 적합될 수 있다. 컴퓨터 내의 그래픽 프로세싱 유틸리티로의 인터페이스는 애플리케이션이 동작이 재순서화될 수 있는지 여부를 지정하게 하는 플래그를 제공할 수 있다.

Description

콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템{SYSTEM AND METHOD FOR LAYERING USING TILE-BASED RENDERERS}
컴퓨팅 디바이스는 하나 이상의 인간 사용자에 비디오 디스플레이 상에서 이미지 및/또는 텍스트와 같은 콘텐트를 표시할 수 있다. 이를 위해, 컴퓨팅 디바이스는 콘텐트로부터 화소값을 계산하기 위한 렌더링 프로세스(rendering process)를 수행할 수 있는데 - 이미지 평면이라 칭하는 메모리 영역 내에 편성될 수 있는 화소값은 콘텐트를 표시하기 위해 비디오 디스플레이에 의해 사용될 수 있다.
표시될 콘텐트는 "프리미티브(primitive)"라 명명되는 다양한 요소를 포함할 수 있다. 프리미티브의 예는 라인 세그먼트, 곡선, 글리프(glyph), 윈도우, 버튼 및/또는 원 및 다각형과 같은 형상을 포함한다. 이와 같이, 렌더링은 "화소 단위(pixel-by-pixel)" 또는 "프리미티브 단위(primitive-by-primitive)"로 구현될 수 있다. 화소간 렌더링은 이미지 평면 화소 상에서 반복하는 것과 이어서 이들의 값의 각각을 결정하는 것을 수반할 수 있다. 다른 한편으로, 프리미티브간 렌더링은 표시될 콘텐트 내의 프리미티브 상에서 반복하는 것과, 각각의 이러한 프리미티브에 대해 어느 이미지 평면이 화소값이 프리미티브에 의해 영향을 받을 수 있는지를 결정하는 것과, 이에 따라 이들 화소값을 수정하는 것을 수반할 수 있다.
몇몇 컴퓨팅 디바이스는 렌더링 프로세스의 부분으로서 하나 이상의 유형의 동작을 수행하는데 사용될 수 있는 비디오 카드 및/또는 그래픽 프로세싱 유닛과 같은 특정화된 하드웨어일 수 있다. 예를 들어, 그래픽 프로세싱 유닛(GPU)은 하나 이상의 이미지 평면 화소값을 계산하는데 사용될 수 있다. 이들 컴퓨팅 디바이스는 표시를 위한 콘텐트를 생성하고, 예를 들어 적합한 애플리케이션 프로그래밍 인터페이스(예를 들어, 그래픽 라이브러리, 하드웨어 드라이버 등)를 통해 이러한 특정화된 하드웨어에 액세스할 수 있는 소프트웨어 애플리케이션을 제공할 수 있다.
몇몇 GPU는 타일-기반(tile-based) 렌더링을 지원한다. 이러한 GPU는 렌더링된 콘텐트(즉, 이미지 평면)를 저장하기 위해 사용된 메모리보다 작은 고속 온-칩 메모리(on-chip memory)를 가질 수 있고, 이 온-칩 메모리는 특정 GPU 동작을 더 신속하게 수행하는데 사용될 수 있다. 이에 따라, 타일-기반 렌더링에서, 콘텐트는 타일이라 칭하는 부분에서 렌더링될 수 있어, GPU가 렌더링 프로세스의 부분으로서 고속 메모리를 사용함으로써 각각의 이러한 부분 상에 동작을 수행할 수 있게 된다. 콘텐트는 한번에 하나의 타일로 렌더링될 수 있고, 화소값은 타일 단위(per-tile basis)로 계산된다. 화소값을 저장하는 메모리 영역은 다수의 타일로서 편성될 수도 있다. 이에 따라, 여기서, 타일에 연계된 화소값이 저장되어 있는 각각의 서브-영역을 또한 타일이라 칭한다.
몇몇 콘텐트는 하나 이상의 콘텐트 레이어를 포함할 수 있다. 각각의 콘텐트 레이어는 하나 이상의 프리미티브를 포함할 수 있고 그리고/또는 임의의 다른 적합한 콘텐트를 포함할 수 있다. 콘텐트 레이어를 렌더링할 때, 각각의 레이어 내의 정보는 렌더링된 정보가 다수의 레이어 내의 정보의 합성물을 표현하도록 조합될 수 있다. 콘텐트 레이어는 상이한 효과를 성취하기 위해 상이한 방식으로 조합될 수 있다. 예를 들어, 하나 이상의 레이어는 기초 레이어의 부분이 상위의 레이어를 통해 나타나도록 부분적으로 투명한 것처럼 제시될 수 있다. 다른 예로서, 레이어들은 디스플레이 상에 나타나는 것이 다른 레이어의 부분과 조합된 하나의 레이어의 부분이도록 클립될 수 있다. 다수의 콘텐트 레이어를 포함하는 콘텐트는 이미지 평면 화소값에 대해 다수의 패스를 사용하여, 한번에 하나의 레이어로 그리고 각각의 레이어 내에서 한번에 하나의 프리미티브로 렌더링될 수 있다.
개량된 콘텐트 렌더링 기술이 특정화된 그래픽 하드웨어를 포함하는 컴퓨팅 디바이스에서 전력 및 메모리와 같은 리소스의 이용을 향상시킬 수 있다. 기술은 렌더링 프로세스에서의 동작이 수행될 수 있는 순서를 최적화함으로써 다수의 콘텐트 레이어를 포함하는 콘텐트의 더 효율적인 타일-기반 렌더링을 포함한다. GPU와 같은 콘텐트 렌더링을 위한 특정화된 하드웨어는 다른 타일에 대응하는 콘텐트의 렌더링을 수행하기 전에 타일에 대응하는 하나 초과의 콘텐트 레이어를 렌더링하도록 구성될 수 있다. 그 결과, 그 단일 타일과 연계된 화소값이 메모리 내에 유도되는 회수가 감소될 수 있다. 이는 전체 렌더링 프로세스를 한번에 하나의 콘텐트 레이어로 콘텐트를 렌더링하는 종래의 접근법보다 더 효율적이게 하고, 각각의 콘텐트 레이어는 다수의 타일로서 편성되고, 이는 캐시 스래싱(cache thrashing) 및 열악한 전체 성능을 유도한다. 더 효율적인 렌더링 프로세스는 전력 및 메모리와 같은 리소스의 감소된 또는 개량된 이용을 유도할 수 있고, 이는 이러한 리소스가 제한되어 있는 컴퓨팅 디바이스[예를 들어, 랩탑, 휴대폰, 슬레이트 폼팩터(form factor)를 갖는 디바이스, 다른 배터리 전력식 디바이스 등]를 위해 유리할 수 있다.
이에 따라, 몇몇 실시예에서, 복수의 콘텐트 레이어를 포함하고, 콘텐트는 적어도 제 1 타일 및 제 2 타일을 포함하는 복수의 타일로서 편성되는 콘텐트의 타일-기반 렌더링을 위한 방법이 제공된다. 방법은 하나 이상의 화소값을 계산하기 위해 적어도 하나의 프로세서를 사용함으로써 제 1 타일에 대응하는 콘텐트의 적어도 제 1 부분을 렌더링하는 단계와, 렌더링 단계에 응답하여, 임의의 다른 타일에 대응하는 콘텐트를 렌더링하기 전에, 하나 이상의 화소값에 대해 적어도 하나의 연산을 수행하는 단계를 포함할 수 있고, 적어도 하나의 연산은 복수의 레이어 중 적어도 2개를 합성하기 위한 연산을 포함한다.
예를 들어, 몇몇 실시예에서, 콘텐트는 한번에 하나의 타일로 렌더링될 수 있어 렌더링 프로세스의 부분으로서 계산된 화소값이 각각의 타일에 대응하는 그룹으로 계산되게 된다. 게다가, 타일에 대응하는 그룹으로 화소값을 계산하는 것은 다수의 콘텐트 레이어로부터 화소값을 계산하는 것을 포함할 수 있다. 이에 따라, 몇몇 실시예에서, 콘텐트는 한번에 하나의 레이어보다는 한번에 하나의 타일로 렌더링될 수 있어, 임의의 다른 타일에 대응하는 임의의 콘텐트가 렌더링되기 전에 특정의 것에 대응하는 다수의 콘텐트 레이어가 렌더링되어 합성될 수 있게 된다.
몇몇 실시예에서, 적어도 하나의 컴퓨터-판독가능 저장 매체가 제공된다. 적어도 하나의 컴퓨터-판독가능 저장 매체는 적어도 하나의 프로세서에 의해 실행될 때, 제 1 타일 및 제 2 타일을 포함하는 복수의 타일로서 편성된 콘텐트를 렌더링하도록 그래픽 프로세싱 유닛(GPU)을 구성하기 위한 방법을 수행하는 프로세서-실행가능 인스트럭션을 포함하는 애플리케이션을 저장할 수 있다. 방법은 이하의 동작, 즉 제 1 타일에 대응하는 콘텐트를 렌더링하거나 제 2 타일에 대응하는 콘텐트의 적어도 일부를 렌더링함으로써 얻어진 하나 이상의 화소값에 대해 적어도 하나의 연산을 수행하는 동작과, 적어도 하나의 연산이 먼저 수행되어야 하는 것으로 판정되면, 적어도 하나의 연산을 먼저 수행하고 둘째로 렌더링을 수행하도록 GPU에 통지하는 동작 중 어느 것이 먼저 수행되는지를 판정하는 것을 포함할 수 있다.
몇몇 양태에서, 복수의 콘텐트 레이어를 포함하고, 콘텐트는 제 1 타일 및 제 2 타일을 포함하는 복수의 타일로서 편성되는 콘텐트를 렌더링하기 위한 시스템이 제공된다. 시스템은 그래픽 프로세싱 유닛(GPU)에 통신적으로 결합된 메모리와, GPU를 포함하고, GPU는 하나 이상의 화소값을 계산하기 위해 제 1 타일에 대응하는 콘텐트의 적어도 제 1 부분을 렌더링하고, 이하의 동작들, 하나 이상의 화소값에 대해 적어도 하나의 연산을 수행하는 동작 - 적어도 하나의 연산은 복수의 레이어 중 적어도 2개를 합성하기 위한 연산을 포함함 -, 또는 제 2 타일에 대응하는 콘텐트의 적어도 제 2 부분을 렌더링하는 동작 중 어느 것이 먼저 수행되어야 하는지의 지시를 수행하도록 구성되고, 지시가 적어도 하나의 연산이 먼저 수행되어야 하는 것을 지시하면, GPU는 제 1 타일의 하나 이상의 화소값에 대해 적어도 하나의 연산을 수행하고 적어도 하나의 연산을 수행한 후에 제 2 타일에 대응하는 콘텐트의 제 2 부분을 렌더링하도록 구성된다.
상기 설명은 첨부된 청구범위에 의해 규정되는 본 발명의 비한정적인 요약이다.
첨부 도면은 실제 축적대로 도시되도록 의도된 것은 아니다. 도면에서, 다양한 도면에 도시된 각각의 동일한 또는 거의 동일한 구성요소는 유사한 도면 부호에 의해 표현된다. 명료화를 위해, 모든 구성요소가 모든 도면에서 도면 부호 표기되어 있지는 않을 수 있다.
도 1은 본 발명의 몇몇 실시예에 따른 콘텐트를 렌더링하기 위한 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 발명의 몇몇 실시예에 따른 콘텐트를 렌더링하기 위한 예시적인 컴퓨팅 디바이스 내의 하드웨어 및 소프트웨어 구성요소의 블록 다이어그램이다.
도 3은 본 발명의 몇몇 실시예에 따른 콘텐트를 렌더링하기 위한 예시적인 프로세스의 흐름도이다.
도 4a 및 도 4b는 본 발명의 몇몇 실시예에 따른 콘텐트를 렌더링하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 5는 본 발명의 양태를 구현하는데 사용될 수 있는 컴퓨팅 디바이스의 예를 일반적으로 도시하는 블록 다이어그램이다.
본 발명자들은 GPU가 하나 이상의 콘텐트 레이어를 포함하는 콘텐트의 타일-기반 렌더링을 더 효율적으로 수행하도록 구성될 수 있으면, 더 큰 실용성이 타일-기반 렌더링을 지원하는 GPU로부터 유도될 수 있다는 것을 인식하고 이해하였다. 특히, 본 발명자들은 한번에 하나의 레이어로 콘텐트를 렌더링하는 것보다는, 한번에 하나의 타일로 이러한 콘텐트를 렌더링하는 것이 유리할 수 있다는 것을 인식하였다. 전자의 "레이어-후-타일(layer-then-tile)" 접근법에서, 콘텐트는 한번에 하나의 콘텐트 레이어로 렌더링될 수 있고, 각각의 이러한 레이어는 한번에 하나의 타일로 렌더링될 수 있다. 다른 한편으로, 후자의 "타일-후-레이어(tile-then-layer)" 접근법에서, 콘텐트는 한번에 하나의 타일로 렌더링될 수 있는데 - 각각의 타일과 연계된 화소값을 계산하는 것은 다수의 콘텐트 레이어로부터 화소값을 계산하는 것을 포함할 수 있다.
본 발명자들은 타일-기반 렌더링으로부터 이익을 얻을 수 있는 디바이스들이 더 많이 보급되어 있기 때문에, 타일-기반 렌더링이 더 많이 유행할 가능성이 있다는 것을 인식하였다. 타일-기반 렌더링은 이것이 종래의 비-타일-기반 렌더링 기술보다 적은 메모리 대역폭 및 적은 전력을 필요로 할 수 있기 때문에 모바일 디바이스에서 사용을 위해 유리할 수 있다. 모바일 디바이스(예를 들어, 스마트폰, PDA, 태블릿 등)는 더 많이 보급되고 있고, 이들 모바일 디바이스는 타일-기반 렌더링을 지원하는 그래픽 프로세싱 유닛을 포함한다.
본 발명자들은 타일-기반 렌더링 기술이 다른 유형의 렌더링 기술보다 더 효율적일 수 있지만, 타일-기반 렌더링을 지원하는 GPU 상에 타일-기반 렌더링을 사용하는 종래의 기술은 더 개량될 수 있다는 것을 또한 인식하였다. 본 발명자들은 GPU가 타일-기반 렌더링을 수행하도록 구성될 수 있는 방식을 개량하는 것은 더 효율적인 렌더링을 유도할 수 있고, 이는 이어서 이러한 GPU를 포함하는 모바일 디바이스를 위한 부가의 이익(예를 들어, 배터리 수명의 연장)을 유도할 수 있다는 것을 인식하였다. 특히, 본 발명자들은 다수의 콘텐트 레이어를 포함하는 콘텐트의 타일-기반 렌더링을 위한 종래의 기술이 개량될 수도 있다는 것을 인식하였다.
다수의 콘텐트 레이어를 포함하는 콘텐트의 타일-기반 렌더링에 대한 일 통상의 접근법은 전술된 "레이어-후-타일" 접근법이다. 이 접근법에서, 콘텐트 레이어는 한번에 하나의 콘텐트로, 교대로 렌더링될 수 있다. 더욱이, 각각의 콘텐트 레이어는 한번에 하나의 타일로 렌더링될 수도 있다. 이에 따라, 이 접근법에서, 특정 타일에 대응하는 콘텐트 레이어의 부분이 렌더링된 후에, 잔여 타일에 대응하는 콘텐트 레이어의의 비렌더링된 부분은 그 특정 타일에 대응하는 다른 콘텐트 레이어의 임의의 부분이 렌더링될 수 있기 전에 렌더링된다. 이는 다른 레이어의 렌더링과 연계된 임의의 동작이 수행될 수 있기 전에 콘텐트 레이어의 렌더링과 연계된 모든 렌더링 동작을 강요할 수 있기 때문에(이에 의해, 렌더링 동작의 "파이프라인"으로부터 이들 동작을 플러싱함) 때때로 "미드신 플러시(mid-scene flush)"라 칭한다.
다른 레이어의 렌더링과 연계된 동작은 임의의 적합한 유형의 동작일 수 있다. 일 예로서, 동작은 미리 컴퓨팅된 화소값을 사용하여 하나 이상의 계산을 수행하는 것을 포함할 수 있다. 이러한 동작은 수많은 상황에서 사용될 수 있고, 예를 들어 미리 렌더링된 레이어 및 다른 레이어의 정보를 합성할 때 사용될 수 있다. 특정 예로서, 이러한 동작은 투명도 또는 클립핑 효과와 같은 하나 이상의 효과를 렌더링된 콘텐트에 적용하는데 사용될 수 있다.
미드신 플러시의 특정 비한정적인 예로서, 2개의 콘텐트 레이어의 타일-기반 렌더링에서 발생할 수 있는 이벤트의 시퀀스를 고려하자. 이벤트의 시퀀스는 타일 A에 대응하는 제 1 콘텐트 레이어의 부분을 렌더링하고 렌더링을 위해 사용된 고속 메모리(예를 들어, GPU 캐시)로부터 다른 메모리로 얻어진 화소값을 카피하는 것과, 타일 B에 대응하는 제 1 콘텐트 레이어의 다른 부분을 렌더링하는 것과, 이어서 전체 제 1 콘텐트 레이어가 렌더링될 때까지 고속 메모리로부터 다른 메모리로 얻어진 화소를 카피하는 것 등을 포함할 수 있다. 전체 제 1 콘텐트 레이어가 렌더링된 후에, 타일 A에 대응하는 제 2 콘텐트 레이어의 부분이 렌더링될 수 있다. 이 시점에, 투명도 또는 클립핑과 같은 시각적 효과를 성취하기 위해 제 1 및 제 2 콘텐트 레이어의 부분을 합성하도록 요구될 수 있다. 그러나, 타일 A에 대응하는 제 1 및 제 2 콘텐트 레이어의 부분을 합성하기 위해, 고속 메모리로부터 다른 메모리로 이전에 카피된 화소값들은 고속 메모리로 반환될 필요가 있다.
본 발명자들은, 종래의 "레이어-후-타일" 접근법에서, 미드신 플러시를 수행하는 것(예를 들어, 전술된 예에서와 같이)이 특정 타일과 연계된 화소값이 GPU 캐시 내로 다수회 유도되게 할 수 있다는 것을 인식하였다. 예를 들어, 화소값은 다른 콘텐트 레이어가 렌더링될 때마다(전술된 예에서 해당될 수 있는 바와 같이) GPU 캐시 내로 유도될 수도 있어, 새로운 화소값이 다수의 콘텐트 레이어로부터 얻어진 값의 함수로서 계산될 수 있게 된다(예를 들어, 다수의 콘텐트 레이어가 합성될 때).
본 발명자들은 GPU 캐시의 크기가 제한될 수 있고 하나의 타일에 대응하는 콘텐트와 연계된 화소값이 캐시 내로 유도되는 다른 타일에 대응하는 콘텐트와 연계된 화소값에 앞서 캐시로부터 제거되거나 캐시 내에 덮어쓰기될 수 있다는 것을 또한 인식하였다. 그 결과, "레이어-후-타일" 접근법에서, 특정 타일에 대응하는 콘텐트와 연계된 화소값은 콘텐트가 렌더링됨에 따라 캐시 내외로 다수회 유도될 수 있다 - "캐시 스래싱"이라 칭하는 현상- . 캐시 스래싱은 다른 통상적으로 더 저속의 메모리로부터 캐시 내로 값을 반복적으로 판독하는 것 및/또는 캐시로부터 다른 메모리 내로 반복적으로 기록하는 것이 지연을 발생할 수도 있기 때문에 비효율적이다.
본 발명자들은 한번에 하나의 타일로 콘텐트를 렌더링하는 것과, 각각의 타일에 대해 다수의 콘텐트 레이어와 연계된 값에 기초하여 계산을 수행하는 것이 타일-기반 렌더링을 위한 종래의 기술의 전술된 결점의 일부를 극복할 수 있다는 것을 또한 인식하고 이해하였다. 그러나, 모든 실시예가 이들 결점들 중 모든 것을 처리하는 것은 아니고, 몇몇 실시예는 이들 중 임의의 것을 처리하지 않을 수 있다. 이와 같이, 본 발명은 타일-기반 렌더링을 위한 이들 종래의 기술의 전술된 결점의 모두 또는 임의의 것을 처리하는데 한정되지 않는다는 것이 이해되어야 한다.
이에 따라, 몇몇 실시예에서, 전술된 렌더링을 위한 "타일-후-레이어" 접근법이 수행될 수 있다. 이러한 실시예에서, 타일에 대응하는 콘텐트의 레이어의 적어도 일부는 렌더링될 수 있고, 동일한 타일에 대응하는 다른 콘텐트 레이어의 적어도 다른 부분이 렌더링될 수 있고, 양자 모두는 렌더링되는 다른 타일에 대응하는 임의의 콘텐트에 앞서 발생한다. 타일에 대응하는 콘텐트의 렌더링은 GPU 상에 탑재된 고속 메모리를 사용하여 콘텐트의 부분을 렌더링하는 것을 포함할 수 있다. 타일에 대응하는 콘텐트의 다른 레이어의 렌더링은 미리 렌더링된 화소값에 대해 연산을 수행하는 것을 포함할 수 있다. 연산은 임의의 적합한 연산일 수 있고, 렌더링되는 콘텐트에 효과를 적용하는 부분으로서 수행될 수 있다. 몇몇 실시예에서, 타일과 연계된 화소값에 대해 연산을 수행하는 것은 GPU 상에 탑재된 고속 메모리(예를 들어, GPU 캐시) 내에 저장된 값들에 대해 연산을 수행하는 것을 포함할 수 있다.
이 "타일-후-레이어" 접근법에서, 2개의 레이어를 포함하는 콘텐트를 렌더링하기 위한 전술된 예에서의 이벤트의 시퀀스는 하나 이상의 화소값을 얻기 위해 타일 A에 대응하는 제 1 콘텐트 레이어의 부분을 렌더링하는 것과, 계산된 화소값을 다른 메모리에 카피하는 것과, 이어서 타일 A에 대응하는 제 2 레이어의 부분을 렌더링하는 것과, 마지막으로 2개의 콘텐트 레이어로부터 콘텐트를 블렌딩하기 위해 제 2 레이어의 부분을 렌더링하는 것으로부터 얻어진 값과 미리 카피된 화소값을 합성하는 것을 포함할 수 있다. 이 예에서, 캐시 스래싱은 타일 A에 대응하는 콘텐트와 연계된 화소값에 대한 모든 연산이 함께 행해질 수 있기 때문에 회피될 수 있다.
이에 따라, 몇몇 실시예에서, 다수의 콘텐트 레이어를 포함하는 콘텐트의 프로세싱은 콘텐트를 렌더링하기 위한 동작이 프로세싱될 수 있는 순서를 결정하는 것을 수반할 수 있다. 예를 들어, 제 1 타일에 대응하는 콘텐트 레이어의 부분이 렌더링된 후에, 제 1 타일과 연계된 화소값에 대해 임의의 연산을 수행해야 하는지(예를 들어, 제 1 타일에 대응하는 더 많은 콘텐트를 렌더링하고, 레이어의 미리 렌더링된 부분을 다른 레이어와 합성해야 하는지 등) 또는 상이한 타일에 대응하는 콘텐트의 다른 부분을 렌더링해야 하는지에 대한 선택이 존재할 수도 있다. "타일-후-레이어" 접근법이 이용될 때와는 상이한 결정이 "레이어-후-타일" 접근법이 이용될 때 행해질 수 있다. "타일-후-레이어" 접근법이 이용되는 경우에, 제 1 타일에 대응하는 콘텐트와 연계된 화소값에 대한 연산은 다른 타일에 대응하는 임의의 콘텐트가 렌더링될 수 있기 전에 수행될 수 있다.
몇몇 실시예에서, GPU는 "타일-후-레이어" 접근법 또는 종래의 "레이어-후-타일" 접근법을 사용하여 다수의 레이어를 포함하는 콘텐트를 렌더링해야 하는지 여부를 지시하는 지시를 수신할 수 있다. 더 상세히 후술되는 바와 같이, 이러한 지시는 렌더링을 위한 콘텐트를 생성하는 소프트웨어에 의해 행해진 결정의 결과로서 수신될 수 있고, 몇몇 경우에 이러한 지시는 소프트웨어에 의해 설정되었던 파라미터 및/또는 소프트웨어에 의해 행해졌던 함수 호출(function call)을 포함할 수 있다. 특정 예로서, 콘텐트를 렌더링하는 구성요소는 렌더링 동작의 각각의 타일이 합성될 레이어 내의 대응 타일의 콘텐트에만 의존하는 시나리오에서 다수의 레이어의 합성을 수반하는 렌더링 동작과 연계하여 이러한 지시를 제공하도록 구성될 수 있다.
임의의 적합한 컴퓨팅 환경이 본 발명의 실시예를 구현하는데 사용될 수 있다. 일 이러한 컴퓨팅 환경은 콘텐트를 렌더링하기 위한 예시적인 컴퓨팅 환경(100)을 도시하는 도 1에 도시되어 있다.
컴퓨팅 환경(100)은 디스플레이(106)에 통신적으로 결합된 컴퓨팅 디바이스(102)를 포함한다. 컴퓨팅 디바이스(102)는 렌더링된 콘텐트가 디스플레이(106) 상에 표시될 수 있도록 콘텐트를 렌더링하도록 구성될 수 있다. 이 예시적인 예에서, 사용자[예를 들어, 사용자(108)]는 디스플레이(106) 상에 렌더링된 콘텐트를 뷰잉할 수 있다. 렌더링된 콘텐트를 뷰잉하는 사용자의 수는 본 발명의 한정이 아니기 때문에, 임의의 적합한 수의 사용자가 렌더링된 콘텐트를 뷰잉할 수 있다는 것이 인식되어야 한다.
컴퓨팅 디바이스(102)는 임의의 적합한 기술을 사용하여 임의의 적합한 방식으로 콘텐트를 렌더링하도록 구성될 수 있다. 몇몇 실시예에서, 컴퓨팅 디바이스(102)는 타일-기반 렌더링을 사용하여 콘텐트를 렌더링하도록 구성될 수 있다. 또한 다른 실시예에서, 컴퓨팅 디바이스(102)는 타일-기반 렌더링을 사용하여 몇몇 콘텐트를 렌더링하지만, 타일-기반 렌더링을 사용하지 않고 다른 콘텐트를 렌더링하도록 구성될 수도 있다.
컴퓨팅 디바이스(102)는 임의의 적합한 콘텐트를 렌더링하도록 구성될 수 있다. 콘텐트는 시각적으로 제시될 수 있는 임의의 적합한 유형의 콘텐트를 포함할 수 있다. 예를 들어, 콘텐트는 임의의 적합한 유형의 이미지 데이터(예를 들어, 이미지, 사진, 컴퓨터 생성된 이미지, 클립-아트 등)를 포함할 수 있다. 다른 예로서, 콘텐트는 임의의 적합한 유형의 텍스트 데이터를 포함할 수 있다.
몇몇 실시예에서, 콘텐트는 하나 이상의 프리미티브를 포함할 수 있다. 프리미티브는 콘텐트 내의 임의의 적합한 요소일 수 있다. 예를 들어, 프리미티브는 임의의 적합한 2D 또는 3D 형상일 수 있고, 예를 들어 점, 평면, 선분, 곡선, 스플라인 곡선, 다각형, 원, 타원, 구, 큐브, 박스, 환상체, 실린더, 피라미드 등일 수 있다. 다른 예로서, 프리미티브는 윈도우, 프레임, 버튼, 필드 등일 수 있다. 그럼에도, 당 기술 분야에 공지된 바와 같이, 프리미티브의 상기 예들은 단지 예시적인 것이고, 콘텐트는 임의의 다른 적합한 프리미티브를 포함할 수 있다는 것이 인식되어야 한다.
프리미티브는 렌더링된 이미지를 구성하도록 합성되는 다수의 레이어로서 표현될 수 있다. 그럼에도, 타일-후-레이어 기술은 어떻게 이것이 표현되는지에 무관하게 렌더링될 그래픽 정보에 적용될 수도 있다는 것이 이해되어야 한다.
컴퓨팅 디바이스(102)는 임의의 적합한 용도와 관련하여 콘텐트를 렌더링하도록 구성될 수 있다. 몇몇 실시예에서, 컴퓨팅 디바이스(102)는 적어도 부분적으로 컴퓨팅 디바이스(102) 상에서 실행하는 하나 이상의 소프트웨어 구성요소를 위한 콘텐트를 렌더링하도록 구성될 수 있다. 소프트웨어 구성요소는 임의의 적합한 소프트웨어를 포함할 수 있고, 예를 들어 하나 이상의 운영 체제 및/또는 하나 이상의 소프트웨어 애플리케이션을 포함할 수 있다. 소프트웨어 애플리케이션은 사용자에 콘텐트를 렌더링하도록 요구할 수 있는 임의의 적합한 애플리케이션일 수 있고, 예를 들어 텍스트 및/또는 그래픽 사용자 인터페이스를 포함하는 임의의 애플리케이션일 수도 있다. 이러한 애플리케이션의 특정 예는 비디오 게임 애플리케이션, 텍스트 및/또는 이미지 프로세싱 애플리케이션 및 임의의 웹 브라우징 애플리케이션을 포함한다. 다수의 다른 예가 당 기술 분야의 숙련자들에게 명백할 것이다.
컴퓨팅 시스템(102)은 임의의 적합한 유형의 컴퓨팅 시스템일 수 있고, 임의의 적합한 폼팩터를 가질 수 있다. 예를 들어, 컴퓨팅 시스템(102)은 하나 이상의 퍼스널 컴퓨터, 하나 이상의 서버, 하나 이상의 랩탑 및 하나 이상의 소지형 디바이스일 수 있고, 소지형 디바이스는 각각 스마트폰, 태블릿, 슬레이트, 개인 휴대 정보 단말, 텍스트-리더 등일 수 있다. 컴퓨팅 시스템의 유형의 다른 예가 도 5를 참조하여 더 상세히 후술된다.
디스플레이(106)는 임의의 적합한 유형의 디스플레이일 수 있고, 임의의 적합한 기술로 구현될 수 있고, 임의의 적합한 폼팩터를 가질 수 있다. 이와 같이 디스플레이(106)는 텍스트 및/또는 이미지를 표시하도록 구성된 임의의 디스플레이일 수 있다. 컴퓨팅 환경(100)에서, 디스플레이(106)는 유선 접속부(104)를 경유하여 컴퓨팅 시스템(102)에 통신적으로 결합된 것으로서 도시되어 있지만, 디스플레이(106)는 임의의 적합한 방식으로 컴퓨팅 시스템(102)과 통신적으로 결합될 수 있기 때문에 이는 본 발명의 한정은 아니다. 예를 들어, 디스플레이(106)는 컴퓨팅 시스템(102)의 외부에 있을 수 있고, 무선 접속을 경유하여 컴퓨팅 시스템(102)에 통신적으로 결합될 수 있다. 다른 예로서, 디스플레이(106)는 예를 들어 컴퓨팅 시스템(102)이 랩탑 또는 태블릿 컴퓨터와 같은 휴대용 컴퓨팅 시스템일 때 해당할 수도 있는 바와 같이 컴퓨팅 시스템(102)과 통합될 수도 있다.
컴퓨팅 시스템(102)은 임의의 적합한 유형의 하나 이상의 프로세서를 포함할 수 있다. 예를 들어, 컴퓨팅 시스템(102)은 CPU(103)와 같은 하나 이상의 CPU와, GPU(110)와 같은 하나 이상의 그래픽 프로세싱 유닛(GPU)을 포함할 수 있다. 각각의 프로세서는 메모리(120)와 같은 메모리로부터 데이터를 판독하고 그에 데이터를 기록하는 것이 가능할 수 있다. 메모리(120)는 도 5를 참조하여 후술되는 임의의 메모리를 포함하는 임의의 수많은 유형의 메모리일 수 있다.
GPU(110)는 임의의 적합한 유형의 GPU일 수 있다. 몇몇 실시예에서, GPU(110)는 콘텐트의 타일-기반 렌더링을 지원할 수 있고, 반면에 다른 실시예에서 GPU(110)는 콘텐트의 타일-기반 렌더링을 위한 지원을 제공하지 않을 수도 있다.
몇몇 실시예에서, GPU(110)는 콘텐트로부터 하나 이상의 화소값을 계산하고 이들을 메모리에 저장함으로써 콘텐트를 렌더링할 수 있다. 어떻게 화소값이 계산되거나 저장될 수 있는지에 무관하게, 저장된 화소값은 콘텐트를 표시하기 위해 디스플레이[예를 들어, 디스플레이(106)]에 의해 사용될 수 있다.
GPU(110)는 임의의 적합한 메모리에 화소값을 저장할 수 있다. 예를 들어, GPU(110)는 메모리(120)에 화소값을 저장할 수 있다. 몇몇 예에서, GPU(110)는 이미지 평면(122)과 같은 메모리(120)의 영역에 화소값을 저장할 수 있다. 이미지 평면(122)은 메모리의 임의의 적합한 영역일 수 있고, 임의의 적합한 크기를 가질 수 있다. 예를 들어, 이미지 평면(122)의 크기는 콘텐트를 렌더링하도록 계산된 화소값의 상당한 부분을 저장할 수 있도록 이루어질 수 있다. 이미지 평면에 저장된 화소값은 디스플레이(106)와 같은 디스플레이 상에 렌더링된 콘텐트를 제시하는데 사용될 수 있다. 화소값은 메모리(120)의 임의의 적합한 부분에 저장될 수 있고 이미지 평면(122)에 저장되는 것에 한정되는 것은 아니라는 것이 인식되어야 한다. 예를 들어, 화소값은 일시적 화소값 또는 임의의 다른 적합한 영역을 저장하도록 구성된 메모리(120)의 다른 영역에 저장될 수 있다.
이미지 평면(122)과 같은 렌더링된 콘텐트를 저장하기 위해 사용된 메모리 영역은 하나 이상의 서브-영역(또는 타일)으로 편성될 수 있다. 각각의 타일은 임의의 적합한 크기일 수 있다. 몇몇 경우에, 메모리 영역은 각각의 타일이 임의의 다른 타일과 동일한 데이터의 양을 저장할 수 있도록 동일한 크기의 하나 또는 다수의 타일로 타일링될 수 있다. 다른 실시예에서, 타일은 하나의 타일이 다른 타일이 저장할 수 있는 양과는 상이한 데이터의 양을 저장할 수 있도록 상이한 크기를 가질 수 있다. 각각의 콘텐트 레이어가 한번에 하나의 타일로 렌더링됨에 따라, 렌더링된 콘텐트의 각각의 부분은 메모리(120)의 영역[예를 들어, 이미지 평면(122)에]에 저장될 수 있다. 따라서, 이미지 평면(122)은 모든 렌더링된 콘텐트를 저장하는데 사용될 수 있다.
콘텐트를 렌더링하기 위해, GPU(110)는 온-칩 메모리(112)를 사용할 수 있다. 온-칩 메모리(112)는 GPU(110)와 통합될 수 있기 때문에 고속의 저-지연 시간 메모리일 수 있다. 예를 들어, 온-칩 메모리(1120)는 온-칩 캐시일 수 있다. 온-칩 메모리(112)는 임의의 적합한 크기를 가질 수 있고, 예를 들어 콘텐트를 렌더링하기 위해 계산된 화소값의 부분을 저장하기에 충분히 클 수 있다.
몇몇 실시예에서, 온-칩 메모리(112)의 크기는 콘텐트를 렌더링하는데 사용된 타일의 크기와 동일할 수 있다. 그럼에도, 다른 실시예에서, 온-칩 메모리(112)의 크기는 타일의 크기와 동일하지 않을 수도 있다. 예를 들어, 온-칩 메모리(112)의 크기는 타일의 크기보다 클 수 있다. 특정 예로서, 온-칩 메모리의 크기는 콘텐트를 렌더링하는데 사용된 타일의 크기의 배수일 수 있다(예를 들어, 콘텐트를 렌더링하는데 사용된 타일의 크기의 2, 3, 4, 5, 6배 등).
도 2는 컴퓨팅 디바이스(102)의 아키텍처를 더 도시한다. 특히, 도 2는 컴퓨팅 디바이스(102) 내의 하드웨어 및 소프트웨어 구성요소의 예시적인 블록 다이어그램이다.
컴퓨팅 디바이스(102)는 하드웨어 구성요소(240)를 포함한다. 하드웨어 구성요소(240)는 당 기술 분야에 공지된 바와 같은 물리적 컴퓨팅 디바이스의 임의의 수많은 하드웨어 구성요소를 포함할 수 있다. 예를 들어, 하드웨어 구성요소(240)는 도 1을 참조하여 설명된 바와 같은, GPU(110), 메모리(120) 및 CPU(130)를 포함할 수 있다. 그럼에도, 하드웨어 구성요소(240)는 이들 예에 의해 한정되는 것은 아니고, 콘텐트의 렌더링을 지원하는데 필요할 수도 있는 임의의 다른 하드웨어 구성요소를 포함할 수 있다.
도 2는 또한 컴퓨팅 디바이스(102) 내에서 실행할 수 있는 소프트웨어 구성요소를 도시한다. 도시된 실시예에서, 소프트웨어 구성요소는 프로세서-실행가능 인스트럭션 및 구성 파라미터로서 저장될 수 있고, 예를 들어 메모리(120) 또는 CPU(130) 및/또는 GPU(110)와 연계된 임의의 다른 메모리에 저장될 수 있다.
컴퓨팅 디바이스(102) 내에서 실행하는 소프트웨어 구성요소는 임의의 적합한 소프트웨어 구성요소일 수 있고, 하나 이상의 애플리케이션(220), 운영 체제(230) 및/또는 본 명세서에 설명된 바와 같은 임의의 기능성을 수행하도록 GPU를 구성할 수 있는 인스트럭션을 포함할 수 있다. 그럼에도, 소프트웨어 구성요소는 본 명세서에 설명된 소프트웨어 구성요소의 임의의 예에 의해 한정되는 것은 아니고, 이와 같이 컴퓨팅 디바이스(102)는 임의의 적합한 소프트웨어 구성요소를 포함할 수 있다는 것이 인식되어야 한다.
애플리케이션(220)은 임의의 적합한 수의 애플리케이션을 포함할 수 있고, 각각의 애플리케이션은 임의의 적합한 유형일 수 있고 그리고/또는 임의의 적합한 용도를 가질 수 있다. 예를 들어, 애플리케이션은 렌더링된 콘텐트가 하나 이상의 사용자에 표시될 수 있도록 렌더링된 콘텐트를 갖거나 콘텐트를 렌더링하도록 요구할 수 있는 임의의 적합한 애플리케이션일 수 있다. 이러한 애플리케이션의 비한정적인 예는 비디오 게임 애플리케이션, 텍스트 프로세싱 애플리케이션 및 콘텐트 브라우징 애플리케이션(예를 들어, 인터넷 브라우징 소프트웨어, 독서 소프트웨어, 사진 편집 소프트웨어 등)을 포함한다.
몇몇 실시예에서, 애플리케이션은 하나 또는 다수의 콘텐트 레이어를 포함할 수 있는 콘텐트를 렌더링하기를 원할 수 있다. 각각의 콘텐트 레이어는 하나 이상의 프리미티브를 포함할 수 있고, 몇몇 경우에 하나 이상의 프리미티브는 다수회 나타날 수 있다. 예를 들어, 프리미티브는 하나의 콘텐트 레이어 내에서 다수회 나타날 수 있다. 다른 예로서, 프리미티브는 하나 초과의 콘텐트 레이어에서 적어도 1회 나타날 수 있다. 특정 비한정적인 예로서, 박스 또는 아이콘과 같은 프리미티브가 웹페이지 상에 다수회 나타날 수 있다.
몇몇 실시예에서, 콘텐트를 렌더링하기를 원하는 애플리케이션은 렌더링된 콘텐트를 갖도록 하나 이상의 명령을 발행할 수 있다. 애플리케이션은 임의의 적합한 방식으로 명령(들)을 발행할 수 있다. 예를 들어, 명령은 하나 이상의 파라미터를 설정함으로써 그리고/또는 하나 이상의 함수를 호출함으로써 발행될 수도 있다. 특정 예로서, 명령은 그래픽 라이브러리와 같은 애플리케이션 프로그래밍 인터페이스(API)를 사용함으로써 발행될 수 있다. 그럼에도, 명령은 당 기술 분야에 공지된 바와 같은 임의의 다른 적합한 방식으로 발행될 수 있다는 것이 인식되어야 한다.
애플리케이션에 의해 발행된 명령은 임의의 적합한 명령일 수 있고, 임의의 적합한 이유로 발행될 수 있다. 예를 들어, 애플리케이션은 어느 콘텐트가 렌더링될 수 있는지를 지시하기 위해 하나 이상의 명령을 발행할 수 있다. 다른 예로서, 애플리케이션은 그 콘텐트가 렌더링될 수 있는 때를 지시하기 위해 하나 이상의 명령을 발행할 수 있다. 또 다른 예로서, 애플리케이션은 그 콘텐트가 렌더링될 수 있는 방식을 지시하기 위해 하나 이상의 명령을 발행할 수 있다. 이 경우에, 명령(들)은 콘텐트 레이어가 렌더링될 수 있는 방식에 영향을 미칠 수 있고, 예를 들어 콘텐트 레이어의 어느 부분이 타일-기반 렌더링을 사용하여 렌더링될 수 있는지의 순서에 영향을 미칠 수 있다. 특정 비한정적인 예로서, 명령(들)은 하나의 타일에 대응하는 콘텐트 레이어의 부분이 다른 타일과 연계된 콘텐트 레이어의 부분이 렌더링될 수 있기 전에 렌더링될 수 있다는 지시를 제공할 수 있다.
몇몇 실시예에서, 애플리케이션은 효과를 적용하거나 렌더링된 콘텐트에 적용될 효과를 갖기 위해 하나 이상의 명령을 발행할 수 있다. 효과는 임의의 적합한 시각적 효과일 수 있고, 투명도와 같은 효과일 수도 있는데, 여기서 제 1 "상위" 레이어는 제 2 "기초" 레이어의 부분이 제 1 레이어를 통해 나타날 수 있도록 부분적으로 투명한 것으로서 제시될 수 있다. 효과는 또한 다수의 레이어가 함께 클립핑될 수 있어 이들 레이어의 부분이 스크린 상에 함께 나타나게 하는 클립핑과 같은 효과일 수 있다. 그럼에도, 이들 예는 단지 예시일 뿐이고, 당 기술 분야에 공지된 바와 같은 임의의 다른 수많은 시각적 효과가 사용될 수 있다는 것이 이해되어야 한다. 임의의 이러한 효과는 콘텐트가 다수의 레이어를 포함할 수 있을 때의 경우에 콘텐트 내의 하나 이상의 프리미티브 및/또는 하나 이상의 레이어에 적용될 수 있다.
몇몇 실시예에서, 애플리케이션은 컴퓨팅 디바이스(102) 내의 특정화된 하드웨어가 콘텐트를 렌더링하기 위해 사용될 수 있는 방식에 영향을 미치기 위해 하나 이상의 명령을 발행할 수 있다. 예를 들어, 애플리케이션은 GPU가 콘텐트를 렌더링하기 위해 사용될 수 있는 방식에 영향을 미치기 위해 하나 이상의 명령을 발행할 수 있고, GPU가 타일-기반 콘텐트 렌더링을 위해 사용될 수 있는 방식에 영향을 미치기 위해 하나 이상의 명령을 발행할 수도 있다. 예를 들어, 애플리케이션은 콘텐트의 렌더링과 연계된 특정 동작이 수행될 수 있는 순서를 GPU에 통지하기 위해 하나 이상의 명령을 발행할 수 있다. 몇몇 경우에, 애플리케이션은 GPU가 렌더링에 "타일-후-레이어" 접근법을 이용할 수 있는 것을 GPU에 통지할 수 있다. 다른 경우에, 애플리케이션은 GPU가 렌더링에 "레이어-후-타일" 접근법을 이용할 수 있다는 것을 GPU에 통지할 수 있다.
애플리케이션은 타일-기반 렌더링을 위한 전술된 접근법들 중 어느 것이 임의의 적합한 방식으로 사용될 수 있는지에 대한 결정을 행할 수 있다. 예를 들어, 이러한 결정은 하나 이상의 사전 프로그램된 기준에 기초하여 동적으로 행해질 수 있고, 예를 들어 렌더링될 콘텐트에 적어도 부분적으로 기초할 수 있다. 특정 예로서, 애플리케이션은 GPU는 하나의 타일 내에 렌더링될 콘텐트가 임의의 다른 타일 내에 렌더링된 콘텐트에 의존할 수 있으면 "타일-후-레이어" 접근법을 이용할 수 있다.
컴퓨팅 디바이스(102) 내에서 실행하는 소프트웨어 구성요소의 다른 예는 운영 체제(230)이다. 운영 체제(230)는 임의의 적합한 운영 체제일 수 있고, 운영 체제(230)를 위해 기록된 임의의 수많은 애플리케이션[예를 들어, 애플리케이션(220)]을 지원할 수 있다.
운영 체제(230)는 콘텐트 렌더링과 연계된 동작을 수행하기 위해 사용될 수 있는 하나 이상의 그래픽 라이브러리를 포함할 수 있다. 예를 들어, 운영 체제(230)는 그래픽 라이브러리(232)를 포함할 수 있다. 그래픽 라이브러리(232)는 콘텐트를 렌더링하기 위해 하나 이상의 명령을 발행하기 위해 하나 이상의 애플리케이션[예를 들어, 애플리케이션(220)]에 의해 액세스될 수 있는 애플리케이션 프로그래밍 인터페이스를 포함할 수 있다. 이러한 그래픽 라이브러리의 비한정적인 예는 Direct2D, Direct3D 및 OpenGL 그래픽 라이브러리를 포함한다.
그래픽 라이브러리(232)와 같은 그래픽 라이브러리가 렌더링 콘텐트와 연계된 애플리케이션 또는 운영 체제에 의해 발행된 임의의 명령을 실행하기 위해 하드웨어(예를 들어, CPU, GPU, 비디오 카드 등)와 인터페이스할 수 있다. 이를 위해, 그래픽 라이브러리(232)는 하드웨어와 인터페이스하기 위해 하나 이상의 디바이스 드라이버에 명령 및/또는 파라미터(234)를 제공할 수 있다.
이에 따라, 운영 체제(230)는 임의의 적합한 하드웨어와 인터페이스하기 위해 사용될 수 있는 하나 이상의 디바이스 드라이버를 포함할 수 있다. 예를 들어, 운영 체제(230)는 GPU(110)와 같은 GPU와 인터페이스하는데 사용될 수 있는 GPU 디바이스 드라이버(236)를 포함할 수 있다. GPU 디바이스 드라이버(236)는 임의의 수많은 방식으로 GPU와 인터페이스하는데 사용될 수 있다. 예를 들어, 디바이스 드라이버(236)는 GPU에 데이터를 송신하고, GPU에 명령을 송신하고 그리고/또는 GPU로부터 데이터를 수신하는데 사용될 수 있다. 부가적으로 또는 대안적으로, 운영 체제(230)는 컴퓨팅 디바이스(102)[예를 들어, 도 1을 참조하여 설명된 디스플레이(106)와 같은 디스플레이]에 통신적으로 접속된 또는 그 임의의 적합한 하드웨어 부분과 인터페이스하기 위한 임의의 적합한 수의 드라이버를 포함할 수 있다.
몇몇 실시예에서, GPU 디바이스 드라이버(236)는 콘텐트를 렌더링하기 위한 프로세스의 부분으로서 GPU에 데이터를 송신하는 것을 용이하게 할 수 있다. 디바이스 드라이버(236)는 콘텐트를 렌더링하기 위한 프로세스의 부분으로서 임의의 적합한 데이터의 송신을 용이하게 할 수 있고, 예를 들어 렌더링된 콘텐트와 연계된 임의의 데이터의 송신을 용이하게 할 수 있다.
몇몇 실시예에서, 콘텐트를 렌더링하기 위한 프로세스의 부분으로서, GPU 디바이스 드라이버(236)는 하나 이상의 명령 및/또는 파라미터(238)를 GPU(110) 및/또는 렌더링 프로세스의 양태를 수행하는 임의의 다른 적합한 하드웨어에 송신할 수 있다. 명령(및/또는 파라미터)은 임의의 적합한 유형일 수 있고, 예를 들어 타일-기반 렌더링을 수행하도록 GPU를 구성하는 명령 및/또는 파라미터일 수 있다. 예를 들어, 명령 및/또는 파라미터(238)는 특정 크기의 타일을 사용하여 타일-기반 렌더링을 수행하도록 GPU를 구성할 수 있다. 다른 예로서, 명령 및/또는 파라미터(238)는 전술된 바와 같이, "레이어-전-타일(layer-before-tile)" 접근법 또는 "타일-전-레이어(tile-before-layer)" 접근법 중 하나를 사용하여, 다수의 레이어를 포함하는 콘텐트의 타일-기반 렌더링을 수행하도록 GPU를 구성할 수 있다.
도 1 및 도 2를 참조하여 설명된 컴퓨팅 디바이스(102)와 같은 컴퓨팅 디바이스가 콘텐트를 렌더링하도록 구성될 수 있다. 일 이러한 프로세스는 적어도 2개의 레이어를 포함하는 콘텐트를 렌더링하기 위한 예시적인 프로세스(300)의 흐름도인 도 3을 참조하여 설명된다. 프로세스(300)의 동작의 적어도 일부가 GPU 또는 CPU와 같은 프로세서에 의해 수행될 수 있다.
프로세스(300)는 동작 302에서 시작하고, 여기서 렌더링될 콘텐트가 얻어질 수 있다. 콘텐트는 임의의 적합한 콘텐트일 수 있고, 예를 들어 하나 이상의 콘텐트 레이어를 포함할 수 있다. 각각의 콘텐트 레이어는 임의의 적합한 유형의 콘텐트를 포함할 수 있고, 전술된 임의의 유형의 콘텐트를 포함할 수 있다. 특히, 각각의 콘텐트 레이어는 하나 이상의 프리미티브를 포함할 수 있다.
렌더링될 콘텐트는 임의의 적합한 방식으로 얻어질 수 있다. 몇몇 실시예에서, 렌더링될 콘텐트는 프로세스(300)를 실행하도록 구성된 컴퓨팅 디바이스의 하나 이상의 소프트웨어 구성요소로부터 수신될 수 있다. 예를 들어, 렌더링될 콘텐트는 도 2를 참조하여 설명된 임의의 소프트웨어 구성요소로부터 수신될 수 있다. 특정 예로서, 렌더링될 콘텐트는 콘텐트를 렌더링하기를 원할 수 있는 소프트웨어 애플리케이션으로부터 수신될 수 있고, 콘텐트를 렌더링하기 위해 하나 이상의 명령을 발행할 수 있다.
어떻게 렌더링될 콘텐트가 동작 302에서 얻어질 수 있는지에 무관하게, 프로세스(300)는 판정 블록(304)으로 진행하고, 여기서 콘텐트가 미드신 플러시가 사용될 수 있는 "레이어-후-타일" 접근법을 또는 미드신 플러시가 사용되지 않을 수 있는 "타일-후-레이어" 접근법을 사용하여 렌더링될 수 있는지 여부가 판정될 수 있다. 달리 말하면, 판정 블록(304)에서, 타일 A에 대응하는 콘텐트의 적어도 일부를 렌더링한 후에, 다른 타일에 대응하는 콘텐트는 적어도 하나의 연산이 타일 A에 대응하는 콘텐트와 연계된 화소값에 대해 수행될 수 있기 전에 렌더링될 수 있는지 여부가 판정될 수 있다. 이와 같이, 판정 블록(304)에서, 명령이 발생되었던 순서로 렌더링과 연계된 명령을 프로세싱해야 하는지 또는 명령이 특정 타일에 대응하는 콘텐트를 렌더링하는 것에 관련된 각각의 그룹 내의 그룹으로 프로세싱되도록 하는 상이한 순서로 이들 명령을 프로세싱해야 하는지의 여부가 판정될 수 있다.
이 판정은 임의의 적합한 방식으로 행해질 수 있다. 예를 들어, 판정은 콘텐트 렌더링을 위해 상기 2개의 접근법 중 어느 것이 사용될 수 있는지를 지시할 수 있는 지시를 수신함으로써 행해질 수 있다. 지시는 임의의 적합한 유형의 지시일 수 있고, 예를 들어 그 값이 콘텐트 렌더링을 위해 상기 접근법들 중 어느 것이 사용될 수 있는지를 지시할 수 있는 파라미터를 포함할 수 있다. 이에 따라, 지시를 수신하는 것은 이러한 파라미터를 수신하는 것을 포함할 수 있다. 예로서, 이러한 파라미터는 타일과 연계된 합성된 이미지 내의 화소값들이 단지 합성물을 형성하도록 조합된 이미지 레이어 내의 대응 타일의 콘텐트에만 의존할 때와 같은, 미드신 플러시를 수행하는 것을 회피하는 것이 안전할 때를 지시할 수 있어, 이에 의해 렌더링을 위한 타일-후-레이어 접근법이 사용될 수 있다. 이 경우에, 적어도 하나의 연산이 임의의 다른 타일에 대응하는 콘텐트가 렌더링될 수 있기 전에 타일 A에 대응하는 콘텐트와 연계된 화소값에 대해 수행될 수 있는지를 판정하는 것은 하나 이상의 화소값에 대해 적어도 하나의 연산을 먼저 수행하기 위해 지시를 수신하는 것을 포함할 수 있다.
몇몇 실시예에서, "레이어-후-타일" 접근법이 사용될 수 있는 것으로 판정될 수 있다. 이는 임의의 수많은 시나리오에서 발생할 수 있다. 예를 들어, 애플리케이션은 하나의 레이어를 렌더링하는 것이 다른 이전에 렌더링된 레이어 내의 임의의 위치와 연계된 화소값을 렌더링하는 것을 필요로 할 수 있도록 다수의 레이어를 포함하는 콘텐트를 렌더링하도록 구성될 수 있다. 이 경우에, 하나의 레이어를 렌더링하는 것은 다른 레이어의 모든 타일이 렌더링되어 있는 것을 요구할 수 있다. 특정 예로서, 이 상황은 공간 흐려짐 효과가 렌더링되는 콘텐트에 적용될 때 발생할 수 있다. 대조적으로, 하나의 레이어의 화소가 화소와 동일한 레이어 내의 위치에서 다른 레이어로부터 화소값을 필요로 할 수 있을 때 "타일-후-레이어" 접근법이 취해지는 것으로 판정될 수 있다.
판정 블록(304)에서, "레이어-후-타일" 접근법이 미드신 플러시가 사용될 수 있도록 사용될 수 있다고 판정되면, 프로세스(300)는 동작 306으로 진행하고, 여기서 콘텐트 레이어가 렌더링될 수 있다. 콘텐트 레이어는 임의의 적합한 방식으로 렌더링될 수 있다. 예를 들어, 콘텐트 레이어의 렌더링은 콘텐트 레이어로부터 하나 이상의 화소값을 계산하는 것을 포함할 수 있다. 몇몇 경우에, 계산된 화소값(들)은 이미지 평면 내에 저장될 수 있다. 몇몇 경우에, 콘텐트 레이어는 콘텐트 레이어가 타일당 기초로 계산될 수 있어 화소값이 타일에 대응하는 콘텐트와 연계된 그룹 내에서 계산될 수 있게 하도록 타일-기반 렌더링을 사용하여 렌더링될 수 있다. 이 경우에, 콘텐트 레이어는 다수의 타일에 대응하는 콘텐트를 프로세싱함으로써 렌더링될 수 있다.
동작 306에서 타일당 기초로 콘텐트 레이어를 렌더링하는 것은 프로세서(예를 들어, GPU 또는 CPU)에 통신적으로 결합된 고속 메모리를 사용하는 것을 포함할 수 있다. 예를 들어, 타일에 대응하는 콘텐트(또는 타일에 대응하는 콘텐트의 적어도 일부)를 렌더링하는 것은 온-칩 메모리(112)(도 1)를 사용하는 것을 포함할 수 있다. 고속 메모리는 임의의 적합한 방식으로 사용될 수 있고, 예를 들어 타일에 대응하는 콘텐트-레이어 콘텐트로부터 계산된 하나 이상의 화소값을 저장하는데 사용될 수 있다.
타일에 대응하는 콘텐트 레이어의 적어도 일부를 렌더링하는 것은 온-칩 메모리가 전체 콘텐트 레이어와 연계된 화소값을 저장하기에 충분히 크지 않을 수 있기 때문에 온-칩 메모리(112) 내에 저장된 하나 이상의 화소값을 덮어쓰기하는 것을 포함할 수 있다. 그 결과, 콘텐트 레이어를 렌더링하는 것은 고속 메모리로부터 다른 더 대형의 잠재적으로 더 저속의 메모리[예를 들어, 메모리(120), 이미지 평면(122) 등]로 각각의 타일과 연계된 화소값을 카피하여 동일한 콘텐트 레이어의 다른 타일이 미리 계산된 화소값이 손실되지 않고 렌더링될 수 있게 하는 것을 포함할 수 있다. 그럼에도, 콘텐트 레이어와 연계된 하나 이상의 화소를 저장하는 충분한 능력을 갖는 임의의 메모리가 사용될 수 있다는 것이 인식되어야 한다. 이에 따라, 동작 306의 종료시에, 제 1 콘텐트 레이어로부터 계산된 화소값이 메모리[예를 들어, 메모리(120), 이미지 평면(122) 등]에 저장될 수 있다.
고속 메모리[예를 들어, 온-칩 메모리(112)]와 더 대형의 메모리 사이에 화소값을 카피하는 것은 GPU 및/또는 GPU를 제어하는 소프트웨어[예를 들어, GPU 디바이스 드라이버(236)]에 의해 자동으로 수행된 동작일 수 있고, 이와 같은 것은 애플리케이션이 이를 수행하기 위해 GPU 및/또는 GPU를 제어하는 소프트웨어에 명시적으로 명령할 필요가 없을 수 있기 때문에, "암시적" 카피라 칭할 수 있다. 전술된 바와 같이, 온-칩 메모리와 다른 잠재적으로 더 저속의 메모리 사이의 다수의 암시적 카피를 수행하는 것은 캐시 스래싱을 유도할 수 있다.
제 1 콘텐트 레이어가 동작 308에서 렌더링된 후에, 프로세스(300)는 동작 308로 진행하고, 이미지 평면에 저장된 데이터가 카피될 수 있다. 이미지 평면 내에 저장된 데이터는 임의의 적합한 데이터일 수 있고, 예를 들어 하나 이상의 화소값을 포함할 수 있다. 특정 예로서, 데이터는 동작 306에서 제 1 콘텐트 레이어로부터 계산되어 이미지 평면 내에 저장된 하나 이상의 화소값을 포함할 수 있다. 데이터의 임의의 적합한 부분이 카피될 수 있다. 몇몇 실시예에서, 이미지 평면에 저장된 모든 데이터가 카피될 수 있고, 반면에 다른 실시예에서 이미지 평면 내에 저장된 데이터의 부분이 카피될 수 있다.
데이터는 동작 308에서 임의의 적합한 이유로 카피될 수 있다. 몇몇 실시예에서, 데이터는 데이터가 카피되어야 하는 것을 지시하는 지시(예를 들어, 명령, 함수 호출, 파라미터 등)의 결과로서 카피될 수 있다. 이 경우에, 카피는 명시적 카피라 칭한다. 이러한 지시는 임의의 적합한 소스로부터 제공될 수 있고, 예를 들어 컴퓨팅 디바이스의 소프트웨어 구성요소(예를 들어, 도 2를 참조하여 설명된 임의의 소프트웨어 구성요소)에 의해 제공될 수 있다.
데이터의 어느 부분이 카피될 수 있는지에 무관하게, 데이터는 임의의 적합한 목적지에 카피될 수 있다. 예를 들어, 데이터는 데이터의 카피를 저장하는 충분한 용량을 가질 수 있는 임의의 메모리 영역에 카피될 수 있다. 이러한 메모리 영역은 임의의 적합한 메모리의 영역일 수 있다. 예를 들어, 메모리 영역은 도 1을 참조하여 설명된 메모리(120)와 같은 프로세서(예를 들어, CPU 또는 GPU)에 통신적으로 결합된 임의의 메모리의 영역일 수 있다. 이에 따라, 몇몇 실시예에서, 데이터는 메모리(120)의 일 영역[예를 들어, 이미지 평면(122)]으로부터 메모리(120)의 다른 영역으로 카피될 수 있다.
몇몇 실시예에서, 동작 308에서 수행된 카피와 같은 데이터의 명시적 카피가 임의의 적합한 후속의 사용을 위해 데이터의 카피를 생성하도록 수행될 수 있다. 예를 들어, 카피된 데이터는 합성 동작 및/또는 렌더링된 콘텐트에 효과를 적용하는 것의 부분으로서 사용될 수 있다. 특정 예로서, 카피된 데이터는 후술되는 바와 같이, 동작 306에서 제 1 콘텐트 레이어로부터 계산된 화소값과 동작 310에서 제 2 콘텐트 레이어로부터 계산된 화소값 사이의 블렌딩 동작의 부분으로서 사용될 수 있다. 이 경우에, 카피된 데이터의 부분은 제 2 레이어가 렌더링됨에 따라 고속 메모리 내로 유도될 수 있다.
다음에, 프로세스(300)는 동작 310으로 진행하고, 여기서 콘텐트의 다른 레이어가 렌더링될 수 있다. 콘텐트의 다른 레이어는 임의의 적합한 방식으로 렌더링될 수 있고, 예를 들어 제 1 레이어가 렌더링되었던 방식과 유사한 방식으로 한번에 하나의 타일로 렌더링될 수 있다. 이와 같이, 다른 콘텐트 레이어를 렌더링하는 것은 고속 메모리를 사용하는 것과 하나 이상의 암시적 카피 동작을 수행하는 것을 포함할 수 있다. 다른 레이어를 렌더링하는 것은 이미지 평면 내에 저장될 수 있는 하나 이상의 화소값을 덮어쓰기하는 것을 포함할 수 있다는 것이 또한 이해되어야 한다. 예를 들어, 제 2 레이어를 렌더링하는 것은 제 1 콘텐트 레이어를 렌더링하면서 동작 306에서 계산된 하나 이상의 화소값을 덮어쓰기하는 것을 포함할 수 있다. 실제로, 저장된 화소값을 덮어쓰기하는 이 가능성은 동작 308에서 화소값의 카피를 동기할 수 있다. 이와 같이, 카피된 화소값은 검색되어 콘텐트를 렌더링하는데 사용된다.
몇몇 실시예에서, 하나 이상의 연산이 동작 310의 부분으로서 고속 메모리 및/또는 더 대형 메모리[예를 들어, 메모리(120)]에 저장된 데이터에 대해 수행될 수 있다. 연산(들)은 임의의 적합한 연산(들)일 수 있고, 고속 메모리 및/또는 더 대형의 메모리에 저장된 하나 이상의 화소값에 대해 수행될 수 있다. 몇몇 실시예에서, 연산(들)은 고속 메모리 및/또는 더 대형의 메모리 내의 하나 이상의 화소를 사용하여 하나 이상의 새로운 화소값을 계산하는 것을 수반할 수 있다. 몇몇 경우에, 연산(들)은 동작 306에서 카피된 고속 메모리 및 데이터 내에 저장된 하나 이상의 화소(예를 들어, 이미지 평면 내에 미리 저장된 하나 이상의 화소값)를 사용하여 하나 이상의 새로운 화소값을 계산하는 것을 수반할 수 있다.
몇몇 실시예에서, 연산(들)은 콘텐트의 적어도 일부에 효과를 적용하는 것의 부분으로서 수행될 수 있다. 효과는 임의의 수많은 유형의 효과일 수 있고, 예를 들어 투명도, 클립핑 등과 같은 효과일 수 있다. 특정 예로서, 연산은 제 2 콘텐트 레이어로부터 계산된 하나 이상의 화소값 및 동작 308에서 이미지 평면으로부터 카피된 하나 이상의 미리 계산된 화소값으로부터 하나 이상의 새로운 화소값을 계산함으로써, 투명도 또는 클립핑 효과와 같은 블렌딩 효과를 성취하도록 수행될 수 있다. 그럼에도, 이들 효과는 단지 예시적일 뿐이고, 연산(들)은 콘텐트의 적어도 일부에 임의의 다른 적합한 효과를 적용하는 부분으로서 수행될 수 있다. 제 2 콘텐트 레이어가 렌더링되고 하나 이상의 연산이 동작 310에서 수행된 후에, 프로세스(300)는 완료된다.
동작 306 내지 310에서, 다수의 암시적 카피는 렌더링되는 콘텐트의 각각의 타일에 대해 수행될 수 있다는 것이 인식되어야 한다. 특히, 암시적 카피는 렌더링되는 콘텐트 레이어의 각각의 타일에 대해 수행될 수 있다. 후술되는 바와 같이, 타일-후-레이어 접근법에서, 암시적 카피의 수는 암시적 카피가 콘텐트의 각각의 타일에 대해 1회 수행될 수 있기 때문에 감소될 수 있다.
판정 블록(304)에서, "타일-후-레이어" 접근법이 프로세스(300)의 부분으로서 사용될 수 있어, 부가의 레이어가 미드신 플러시를 사용하지 않고 렌더링될 수 있게 된다는 것이 또한 판정될 수 있다는 것을 상기하라. 달리 말하면, 판정 블록(304)에서, 타일 A에 대응하는 콘텐트의 적어도 일부를 렌더링한 후에, 적어도 하나의 연산은 타일 A 이외의 타일에 대응하는 콘텐트의 적어도 다른 부분이 렌더링될 수 있기 전에 타일 A에 대응하는 콘텐트와 연계된 화소값에 대해 수행될 수 있다는 것이 판정될 수 있다.
이 경우에, 프로세스(300)는 동작 316으로 진행하고, 여기서 타일에 대응하는 제 1 콘텐트 레이어의 적어도 일부가 렌더링될 수도 있다. 타일에 대응하는 콘텐트 레이어의 임의의 적합한 부분이 렌더링될 수 있다. 타일에 대응하는 콘텐트 레이어의 부분은 임의의 적합한 방식으로 렌더링될 수 있다. 예를 들어, 콘텐트 레이어의 부분을 렌더링하는 것은 프로세서의 고속 온-칩 메모리를 사용하여 콘텐트 레이어의 부분으로부터 하나 이상의 화소값을 계산하는 것을 포함할 수 있다.
제 1 콘텐트 레이어의 부분이 어떻게 렌더링될 수 있는지에 무관하게, 프로세스(300)는 동작 318로 진행하고, 여기서 부분이 렌더링되었던 고속 메모리 내에 저장된 데이터가 카피될 수 있다. 고속 메모리 내에 저장된 데이터는 임의의 적합한 데이터일 수 있고, 예를 들어 동작 316에서 계산된 하나 이상의 화소값을 포함할 수 있다. 특정 예로서, 데이터는 동작 316에서 콘텐트 레이어의 부분을 렌더링하는 부분으로서 계산된 하나 이상의 화소값을 포함할 수 있다. 고속 메모리 내에 저장된 데이터의 임의의 적합한 부분이 카피될 수 있다.
데이터의 어느 부분이 카피될 수 있는지에 무관하게, 데이터는 임의의 적합한 목적지에 카피될 수 있다. 예를 들어, 데이터는 데이터의 카피를 저장하기 위한 충분한 용량을 가질 수 있는 임의의 메모리 영역에 카피될 수 있다. 이러한 메모리 영역은 임의의 적합한 메모리의 영역일 수 있다. 예를 들어, 메모리 영역은 도 1을 참조하여 설명된 메모리(120)와 같은 프로세서(예를 들어, CPU 또는 GPU)에 통신적으로 결합된 임의의 메모리의 영역일 수 있다.
데이터는 동작 318에서 임의의 적합한 이유로 카피될 수 있다. 몇몇 실시예에서, 데이터는 데이터가 카피되어야 하는 것을 지시하는 지시(예를 들어, 명령, 함수 호출, 파라미터 등)의 결과로서 카피될 수 있다. 이러한 지시는 동작 308을 참조하여 설명된 소스를 포함하는 임의의 적합한 소스로부터 제공될 수 있다. 따라서, 동작 318에서 수행된 카피는 명시적 카피일 수 있다.
몇몇 실시예에서, 동작 318에서 수행된 카피는 임의의 적합한 후속의 사용을 위한 카피를 생성하도록 수행될 수 있다. 예를 들어, 카피된 데이터는 합성 동작 그리고/또는 렌더링된 효과에 효과를 적용하는 것의 부분으로서 사용될 수 있다. 특정 예로서, 카피된 데이터는 후술되는 바와 같이 동작 316에서 제 1 콘텐트 레이어로부터 계산된 화소값들과, 동작 320에서 제 2 콘텐트 레이어로부터 계산된 화소값 사이의 블렌딩 동작의 부분으로서 사용될 수 있다. 이 경우에, 카피된 데이터의 부분은 제 2 레이어가 렌더링됨에 따라 고속 메모리 내로 유도될 수 있다.
다음에, 프로세스(300)는 동작 320으로 진행하고, 여기서 동일한 타일에 대응하는 제 2 콘텐트 레이어의 적어도 일부가 렌더링될 수 있다. 제 2 레이어의 부분은 임의의 적합한 방식으로 렌더링될 수 있고, 예를 들어 제 1 레이어의 부분이 렌더링되었던 것과 동일한 방식으로 렌더링될 수 있다. 전술된 바와 같이, 타일 내의 제 2 레이어의 부분의 렌더링은 고속 온-칩 메모리 내에 저장될 수 있는 하나 이상의 화소값을 덮어쓰기하는 것을 포함할 수 있다. 예를 들어, 제 2 레이어의 부분의 렌더링은 제 1 콘텐트 레이어의 부분을 렌더링하면서 동작 316에서 계산된 하나 이상의 화소값을 덮어쓰기하는 것을 포함할 수 있다.
다음에, 프로세스(300)는 동작 322로 진행하고, 여기서 하나 이상의 연산이 화소값에 대해 수행될 수 있다. 연산(들)은 임의의 적합한 연산(들)일 수 있다. 몇몇 실시예에서, 연산(들)은 고속 온-칩 메모리 내에 저장된 하나 이상의 화소 상에서 수행될 수 있다. 몇몇 실시예에서, 연산(들)은 하나 이상의 새로운 화소값을 계산하기 위해 더 저속의 메모리[예를 들어, 메모리(120)] 내에 저장된 하나 이상의 화소를 사용하는 것을 수반할 수 있다. 몇몇 경우에, 연산(들)은 고속 온-칩 메모리 내에 저장된 하나 이상의 화소 및 동작 318에서 카피된 데이터(예를 들어 제 1 레이어의 부분으로부터 계산된 하나 이상의 화소값)를 사용하여 하나 이상의 새로운 화소값을 계산하는 것을 수반할 수 있다. 부가적으로 또는 대안적으로, 동작(들)은 타일 내에 하나 이상의 새로운 화소값을 저장하는 것을 수반할 수 있다.
전술된 바와 같이, 몇몇 실시예에서, 하나 이상의 연산은 콘텐트의 적어도 일부에 효과를 적용하는 부분으로서 수행될 수 있다. 효과는 임의의 수많은 유형의 효과일 수 있고, 예를 들어 투명도, 클립핑 등과 같은 효과일 수 있다. 특정 예로서, 동작은 고속 온-칩 메모리 내에 저장된 하나 이상의 화소값 및 동작 318에서 고속 온-칩 메모리로부터 카피된 하나 이상의 화소값으로부터 하나 이상의 새로운 화소값을 계산함으로써 투명도 또는 클립핑 효과와 같은 블렌딩 효과를 성취하도록 수행될 수 있다.
하나 이상의 연산이 동작 322에서 수행된 후에, 프로세스(300)는 동작 323으로 진행하고, 여기서 암시적 카피가 수행될 수 있어 고속 메모리[예를 들어, GPU 온-칩 메모리(112)] 내에 저장된 임의의 데이터가 다른 메모리[예를 들어, 메모리(120)]에 카피될 수 있게 된다. 다음의 프로세스(300)가 판정 블록(324)으로 진행하고, 여기서 렌더링될 수 있는 더 많은 콘텐트의 타일이 존재하는지 여부가 판정될 수 있다. 이 판정은 임의의 적합한 방식으로 행해질 수 있고, 예를 들어 동작 316 내지 323이 콘텐트의 각각의 부분에 대해 수행되어 있는지를 점검함으로써 행해질 수 있다. 다른 예로서, 이미지 평면 내의 모든 타일이 콘텐트를 렌더링하는데 사용될 수 있는 것은 아니기 때문에(예를 들어, 콘텐트는 스크린의 단지 일부만을 위한 콘텐트를 포함할 수 있음), 판정은 동작 316 내지 323이 콘텐트로부터 얻어진 화소값을 저장할 수 있는 이미지 평면 내의 각각의 타일에 대해 수행되어 있는지 여부를 점검함으로써 행해질 수 있다.
판정 블록(324)에서 렌더링될 수 있는 더 많은 콘텐트의 타일이 존재하는 것으로 판정되면, 프로세스(300)는 동작 316으로 루프백되고, 동작 316 내지 323이 반복될 수 있다. 대안적으로, 판정 블록(324)에서 렌더링될 수 있는 콘텐트의 타일이 더 이상 존재하지 않는 것으로 판정되면, 프로세스(300)는 완료된다.
프로세스(300)는 예시적인 것이고, 프로세스(300)의 다수의 변형예가 가능하다는 것이 인식되어야 한다. 예를 들어, 예시된 실시예에서, 렌더링될 콘텐트는 2개의 콘텐트 레이어를 포함한다. 그러나, 콘텐트가 임의의 적합한 수의 콘텐트 레이어를 포함할 수 있기 때문에, 이는 본 발명의 한정은 아니다. 이에 따라, 프로세스(300)는 임의의 적합한 수의 콘텐트 레이어(예를 들어, 적어도 3개의 레이어, 적어도 4개의 레이어 등)를 렌더링하도록 수정될 수 있다. 이는 임의의 적합한 방식으로 행해질 수 있고, 예를 들어 프로세스(300)의 부분, 2개 초과의 콘텐트 레이어(예를 들어, 3개의 레이어, 4개의 레이어 등)로부터 하나의 타일에 대응하는 콘텐트의 부분이 렌더링될 수 있도록 행해질 수 있고, 임의의 적합한 연산(예를 들어, 투명도 또는 클립핑 효과를 적용하기 위한)이 다른 타일에 대응하는 콘텐트를 렌더링하는 것으로 이동하기 전에 하나의 타일에 대응하는 콘텐트에 연계된 하나 이상의 화소값에 대해 수행될 수 있다.
다른 예로서, 예시된 실시예에서, 레이어의 합성을 수행하기 위한 연산은 다른 메모리[예를 들어, 메모리(120)]에 카피되고 저장된 화소값을 사용하여 고속 온-칩 메모리 내에 저장된 화소값에 대해 수행될 수 있다. 그러나, 다른 실시예에서, 이러한 연산은 온-칩 메모리로부터 화소값을 사용하여 다른 메모리 내에 저장된 화소값에 대해 수행될 수 있다. 더 일반적으로, 연산은 렌더링 성능을 향상시키기 위해 임의의 적합한 메모리 내의 화소 상에서 수행될 수 있고, 이와 같이 "타일-후-레이어" 접근법에서, 타일에 대응하는 콘텐트와 연계된 화소의 그룹 상에서의 연산은 임의의 메모리 내에서 수행될 수 있고, 예를 들어 GPU에 통신적으로 결합된 임의의 고속 메모리에서 수행될 수 있다.
프로세스(300)의 2개의 경로(즉, 동작 306 내지 310 및 동작 316 내지 323)에서 차이를 더 이해하기 위해, 도 4a 내지 도 4b는 어떻게 콘텐트가 각각의 경우에 렌더링될 수 있는지를 도시한다. 특히, 도 4a는 "레이어-후-타일" 접근법을 사용하고, 미드신 플러시를 이용하는 예시적인 프로세스(400)를 도시한다. 다른 한편으로, 도 4b는 "타일-후-레이어" 접근법을 사용하고 미드신 플러시를 이용하지 않는 예시적인 프로세스(420)를 도시한다.
도시된 바와 같이, 프로세스(400, 420)는 2개의 프리미티브를 각각 포함하는 2개의 콘텐트 레이어를 포함하는 콘텐트를 렌더링하여, 각각의 콘텐트 레이어가 2개의 타일로 렌더링되게 되는 것으로 도시되어 있다. 구체적으로, 이 비한정적인 예에서, 제 1 콘텐트 레이어 및 제 2 콘텐트 레이어는 2개의 프리미티브를 각각 포함하고, 각각의 프리미티브는 특정 타일에 대응한다. 그러나, 이는 본 발명의 한정은 아니며, 이들 프로세스의 각각은 임의의 적합한 수의 레이어를 포함하는 콘텐트를 렌더링하는데 사용될 수 있고, 각각의 콘텐트 레이어는 임의의 적합한 수의 타일에 대응하는 임의의 적합한 콘텐트를 포함한다. 이 예에서, 각각의 도시된 프리미티브는 단일의 타일에 대응하지만, 이는 본 발명의 한정은 아니고, 프리미티브는 다수의 타일과 연계된 화소값이 프리미티브를 렌더링하는데 사용될 수 있도록 임의의 적합한 수의 타일에 대응할 수 있다는 것이 또한 인식되어야 한다.
프로세스(400)는 동작 402 내지 405에서 시작하고, 여기서 제 1 콘텐트 레이어가 렌더링될 수 있다. 제 1 콘텐트 레이어는 임의의 적합한 방식으로 렌더링될 수 있고, 예를 들어 타일-기반 렌더링을 사용하여 렌더링될 수 있다. 이에 따라, 제 1 타일에 대응하는 제 1 콘텐트 레이어의 적어도 일부가 동작 402에서 렌더링될 수 있고, 제 2 타일에 대응하는 제 1 콘텐트 레이어의 적어도 다른 부분이 동작 404에서 렌더링될 수 있다. 암시적 카피는 동작 402 및 404 후에 동작 403 및 405에서 각각 수행될 수 있어, 동작 402 및 404에서 컴퓨팅된 화소값이 저장될 수 있게 된다. 동작 403 및 405에서, 화소값은 고속 메모리[예를 들어, GPU 온-칩 메모리(112)]로부터 이미지 평면[예를 들어, 이미지 평면(122)] 또는 임의의 다른 적합한 메모리로 카피될 수 있다.
다음에, 프로세스(400)는 동작 406으로 진행하고, 여기서 이미지 평면[예를 들어, 이미지 평면(122)]으로부터의 데이터가 카피될 수 있다. 카피된 데이터는 임의의 적합한 데이터일 수 있고, 제 1 콘텐트 레이어의 렌더링의 부분으로서 계산된 화소값을 포함할 수 있다. 데이터는 임의의 적합한 목적지에 카피될 수 있고, 예를 들어 카피된 데이터를 저장하기 위해 충분한 용량을 갖는 메모리의 임의의 다른 영역에 카피될 수 있다. 동작 406에서 수행된 카피 동작은 명시적 카피 동작일 수 있다.
데이터가 어떻게 카피될 수 있는지 또는 데이터가 어느 목적지로 카피될 수 있는지에 관계없이, 프로세스(400)는 동작 408-412로 진행하며 여기서 제 2 콘텐트 층이 렌더링될 수 있다. 제 2 층은 임의의 적절한 방식으로 렌더링될 수 있으며, 예를 들어 타일 기반 렌더링을 이용하여 렌더링될 수도 있다. 따라서, 제 1 타일에 대응하는 제 2 콘텐트 층의 적어도 일부분은 동작 408에서 렌더링될 수 있다.
다음에 동작 409에서, 하나 이상의 연산이 제 1 타일에 대응하는 콘텐트와 연계된 화소에 대해 수행될 수 있다. 예를 들어, 하나 이상의 연산은 동작 409에서 블렌딩 효과를 적용하도록 수행될 수 있다. 이러한 연산은 타일 1에 대응하는 제 1 콘텐트 레이어의 부분으로부터 계산된 화소값(동작 402에서) 및 타일 1에 대응하는 제 2 콘텐트 레이어의 부분으로부터 계산된 화소값(동작 408에서)으로부터 새로운 화소값을 계산하는 것을 포함할 수 있다. 하나 이상의 연산이 수행된 후에, 암시적 카피가 동작 409의 부분으로서 수행될 수 있어 동작 408 내지 409에서 컴퓨팅된 임의의 화소값이 저장될 수 있게 된다.
동작 408 내지 409 후에, 제 2 타일에 대응하는 제 2 콘텐트 레이어의 적어도 다른 부분이 동작 410에서 렌더링될 수 있다. 다음에, 동작 412에서, 하나 이상의 연산이 제 2 타일에 대응하는 콘텐트와 연계된 화소에 대해 수행될 수 있다. 예를 들어, 하나 이상의 연산이 블렌딩 효과를 적용하도록 수행될 수 있다. 이러한 연산은 타일 2에 대응하는 제 1 콘텐트 레이어의 부분으로부터 계산된 화소값(동작 404에서) 및 타일 2에 대응하는 제 2 콘텐트 레이어의 부분으로부터 계산된 화소값(동작 410에서)으로부터 새로운 화소값을 계산하는 것을 포함할 수 있다. 하나 이상의 연산이 수행된 후에, 암시적 카피가 동작 412의 부분으로서 수행될 수 있어 동작 410 내지 412에서 컴퓨팅된 임의의 화소값이 저장될 수 있게 된다.
프로세스(400)에서, 타일 2에 대응하는 제 1 콘텐트 레이어의 적어도 다른 부분이 렌더링되는 동작 404 후까지, 어떠한 연산도 타일 1에 대응하는 콘텐트와 연계된 화소값에 대해 수행되지 않는다는 것이 또한 이해되어야 한다. 그 결과, 프로세스(400)는 미드신 플러시를 수행하는 것으로 일컬어질 수 있는데, 제 1 콘텐트 레이어의 모든 타일은 미리 계산된 화소값에 대한 임의의 연산이 수행되기 전에 실행된다.
대조적으로, 어떠한 미드신 플러시도 프로세스(420)에서 수행되지 않는다. 프로세스(420)는 동작 422에서 시작되고, 여기서 제 1 타일에 대응하는 제 1 콘텐트 레이어의 적어도 일부가 렌더링될 수 있다. 다음에, 프로세스(420)는 동작 424로 진행하고, 여기서 제 1 타일 내에 저장된 데이터가 카피될 수 있다. 프로세스(300)의 동작 318과 관련하여 설명된 바와 같이, 데이터는 임의의 적합한 데이터일 수 있고, 제 1 콘텐트 레이어의 적어도 일부의 렌더링의 부분으로서 계산된 화소값을 포함할 수 있다. 데이터는 고속 메모리[예를 들어, 온-칩 메모리(112)]로부터 이미지 평면[예를 들어, 이미지 평면(122)] 또는 임의의 다른 적합한 메모리에 카피될 수 있다.
어떻게 데이터가 카피되는지 또는 카피될 수 있는 목적지에 무관하게, 프로세스(420)는 제 1 타일에 대응하는 제 1 콘텐트 레이어의 적어도 다른 부분이 렌더링될 수 있는 동작 426으로 진행한다.
다음에, 프로세스(420)는 동작 428로 진행하고, 여기서 하나 이상의 연산이 제 1 타일에 대응하는 콘텐트와 연계된 화소값에 대해 수행될 수 있다. 전술된 바와 같이, 이러한 연산은 임의의 적합한 용도로 수행될 수 있고, 예를 들어 블렌딩 효과를 적용하도록 수행될 수 있다. 이 경우, 새로운 화소값은 동작 424에서 카피되었던 화소값 및 동작 426에서 계산된 화소값으로부터 계산될 수 있다. 하나 이상의 연산이 수행된 후에, 암시적 카피가 동작 428의 부분으로서 수행될 수도 있어 동작 426 내지 428에서 컴퓨팅된 임의의 화소값이 저장될 수 있게 된다.
동작 428 후에, 프로세스(420)는 동작 430 내지 436으로 진행하고, 여기서 제 1 및 제 2 레이어의 모두의 부분은 동작 422 내지 428 중에 어떻게 제 1 및 제 2 레이어의 부분이 제 1 타일 내에서 렌더링되었는지와 유사한 방식으로 제 2 타일 내에 렌더링될 수 있다. 프로세스(420)는 동작 436 후에 완료된다.
프로세스(420)에서, 콘텐트의 어떠한 부분도 하나 이상의 연산이 제 1 타일 내에 저장된 화소값에 대해 수행될 때까지 제 2 타일 내에서 렌더링되지 않는다는 것이 이해되어야 한다. 특히, 양 콘텐트 레이어의 부분은 임의의 콘텐트가 제 2 타일 내에 렌더링되기 전에 제 1 타일 내에 렌더링된다. 그 결과, 프로세스(400)에 비해 프로세스(420)에서 캐시 스래싱(cache thrashing)이 더 적을 수 있다. 알 수 있는 바와 같이, 단지 2개의 암시적 카피가 프로세스(420)에서 수행되고(동작 428 및 436), 반면에 4개의 암시적 카피가 프로세스(400)에서 수행된다(동작 403, 405, 409 및 412).
도 5는 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(500)의 예를 도시한다. 컴퓨팅 시스템 환경(500)은 적합한 컴퓨팅 환경의 단지 일 예일 뿐이고, 본 발명의 사용 또는 기능성의 범주로서 임의의 한정을 제안하도록 의도된 것은 아니다. 컴퓨팅 환경(500)은 예시적인 동작 환경(500)에 도시된 구성요소들의 임의의 하나 또는 조합에 관한 임의의 종속성 또는 요구를 갖는 것으로서 해석되어서는 안된다.
본 발명은 수많은 다른 범용 또는 특정 용도 컴퓨팅 시스템 환경 또는 구성으로 동작한다. 본 발명과 함께 사용을 위해 적합할 수 있는 공지된 컴퓨팅 시스템, 환경 및/또는 구성은 퍼스널 컴퓨터, 서버 컴퓨터, 소지형 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋탑 박스, 프로그램 가능 소비자 전자 기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 디바이스 중 임의의 하나를 포함하는 분산형 컴퓨팅 환경 등을 포함하지만, 이들에 한정되는 것은 아니다.
컴퓨팅 환경은 프로그램 모듈과 같은 컴퓨터-실행가능 인스트럭션을 실행할 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상적 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 본 발명은 또한 작업이 통신 네트워크를 통해 연결된 원격 프로세싱 디바이스에 의해 수행되는 분산형 컴퓨팅 환경에서 실시될 수도 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체의 모두에 위치될 수 있다.
도 5를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(510)의 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(510)의 구성요소는 프로세싱 유닛(520), 시스템 메모리(530) 및 시스템 메모리를 포함하는 다양한 시스템 구성요소를 프로세싱 유닛(520)에 결합하는 시스템 버스(521)를 포함할 수 있지만, 이들에 한정되는 것은 아니다. 시스템 버스(521)는 메모리 버스 또는 메모리 콘트롤러, 주변 버스 및 임의의 다양한 버스 아키텍처를 사용하는 로컬 버스를 포함하는 다수의 유형의 버스 구조체 중 임의의 것일 수 있다. 예로서, 비한정적으로, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 향상된 ISA(EISA) 버스, 비디오 전자 표준 협회(VESA) 로컬 버스 및 메자닌(Mezzanine) 버스로서 또한 공지된 주변 장치 상호접속(PCI) 버스를 포함한다.
컴퓨터(510)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(510)에 의해 액세스될 수 있는 임의의 이용 가능한 데이터일 수 있고, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체의 모두를 포함한다. 예로서, 비한정적으로, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 디바이스 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨터(510)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이들에 한정되는 것은 아니다. 통신 매체는 통상적으로 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호 내의 데이터를 구체화하고, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 신호 내에 정보를 인코딩하는 이러한 방식으로 변경되거나 설정된 그 특성들 중 하나 이상을 갖는 신호를 의미한다. 예로서, 비한정적으로, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 상기의 것들의 임의의 조합이 또한 컴퓨터 판독가능 매체의 범주 내에 포함되어야 한다.
시스템 메모리(530)는 판독 전용 메모리(ROM)(531) 및 랜덤 액세스 메모리(RAM)(532)와 같은 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동 중에와 같이, 컴퓨터(510) 내의 요소들 사이에 정보를 전달하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(533)(BIOS)이 통상적으로 ROM(531) 내에 저장된다. RAM(532)은 통상적으로 프로세싱 유닛(520)에 즉시 액세스 가능하고 그리고/또는 그 위에서 현재 동작하는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 비한정적으로, 도 5는 운영 체제(534), 애플리케이션 프로그램(535), 다른 프로그램 모듈(536) 및 프로그램 데이터(537)를 도시한다.
컴퓨터(510)는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 또한 포함할 수 있다. 단지 예로서, 도 5는 비이동식, 비휘발성 자기 매체로부터 판독 또는 기록하는 하드 디스크 드라이브(541), 이동식, 비휘발성 자기 디스크(552)로부터 판독 또는 기록하는 자기 디스크 드라이브(551) 및 CD ROM 또는 다른 광학 매체와 같은 이동식, 비휘발성 광학 디스크(556)로부터 판독 또는 기록하는 광학 디스크 드라이브(555)를 도시한다. 예시적인 동작 환경에서 사용될 수 있는 다른 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다기능 디스크, 디지털 비디오 테이프, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이들에 한정되는 것은 아니다. 하드 디스크 드라이브(541)는 통상적으로 인터페이스(540)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(521)에 접속되고, 자기 디스크 드라이브(551) 및 광학 디스크 드라이브(555)는 통상적으로 인터페이스(550)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(521)에 접속된다.
전술되고 도 5에 도시된 드라이브 및 이들의 연계된 컴퓨터 저장 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 및 컴퓨터(510)를 위한 다른 데이터의 저장을 제공한다. 도 5에서, 예를 들어, 하드 디스크 드라이브(541)는 운영 체제(544), 애플리케이션 프로그램(545), 다른 프로그램 모듈(546) 및 프로그램 데이터(547)를 저장하는 것으로서 도시되어 있다. 이들 구성요소들은 운영 체제(534), 애플리케이션 프로그램(535), 다른 프로그램 모듈(536) 및 프로그램 데이터(537)와 동일하거나 상이할 수 있다는 것을 주목하라. 운영 체제(544), 애플리케이션 프로그램(545), 다른 프로그램 모듈(546) 및 프로그램 데이터(547)는 최소한 이들이 상이한 카피라는 것을 예시하기 위해 여기서 상이한 도면 부호가 제공되어 있다. 사용자는 키보드(562) 및 통상적으로 마우스, 트랙볼 또는 터치 패드라 칭하는 포인팅 디바이스(561)와 같은 입력 디바이스를 통해 명령 및 정보를 컴퓨터(510)에 입력할 수 있다. 다른 입력 디바이스(도시 생략)는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(560)를 통해 프로세싱 유닛(520)에 접속되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조체에 의해 접속될 수도 있다. 모니터(591) 또는 다른 유형의 디스플레이 디바이스가 또한 비디오 인터페이스(590)와 같은 인터페이스를 경유하여 시스템 버스(521)에 또한 접속된다. 모니터에 추가하여, 컴퓨터는 출력 주변 인터페이스(595)를 통해 접속될 수 있는 스피커(597) 및 프린터(596)와 같은 다른 주변 출력 디바이스를 또한 포함할 수 있다.
컴퓨터(510)는 원격 컴퓨터(580)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속부를 사용하여 네트워킹된 환경에서 동작할 수도 있다. 원격 컴퓨터(580)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(510)에 대해 전술된 다수의 또는 모든 요소를 포함하지만, 단지 메모리 저장 디바이스(581)만이 도 5에 도시되어 있다. 도 5에 도시된 논리적 접속부는 근거리 통신망(LAN)(571) 및 원거리 통신망(WAN)(573)을 포함하지만, 다른 네트워크를 또한 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 기업형 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적이다. LAN 네트워킹 환경에서 사용될 때, 컴퓨터(510)는 네트워크 인터페이스 또는 어댑터(570)를 통해 LAN(571)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(510)는 통상적으로 인터넷과 같은 WAN(573)을 통한 통신을 설정하기 위한 모뎀(572) 또는 다른 수단을 포함한다. 내장 또는 외장일 수도 있는 모뎀(572)은 사용자 입력 인터페이스(560) 또는 다른 적절한 메커니즘을 경유하여 시스템 버스(521)에 접속될 수도 있다. 네트워킹된 환경에서, 컴퓨터(510) 또는 그 부분에 대해 도시된 프로그램 모듈은 원격 메모리 저장 디바이스 내에 저장될 수 있다. 예로서, 비한정적으로, 도 5는 메모리 디바이스(581) 상에 상주하는 것으로서 원격 애플리케이션 프로그램(585)을 도시한다. 도시된 네트워크 접속부 및 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것이 이해될 수 있을 것이다.
본 발명의 적어도 하나의 실시예의 다수의 양태가 설명되었는데, 다양한 변형, 수정 및 개량은 당 기술 분야의 숙련자들에게 즉시 발생할 것이라는 것이 이해되어야 한다.
이러한 변형, 수정 및 개량은 본 발명의 부분인 것으로 의도되고, 본 발명의 사상 및 범주 내에 있는 것으로 의도된다. 또한, 본 발명의 장점이 지시되어 있지만, 본 발명의 모든 실시예가 모든 설명된 장점을 포함하는 것은 아니라는 것이 이해되어야 한다. 이에 따라, 상기 설명 및 도면은 단지 예시적인 것이다.
본 발명의 전술된 실시예는 임의의 수많은 방식으로 구현될 수 있다. 예를 들어, 실시예는 하드웨어, 소프트웨어 또는 이들의 조합을 사용하여 구현될 수 있다. 소프트웨어에 구현될 때, 소프트웨어 코드는 단일의 컴퓨터 내에 제공되거나 다수의 컴퓨터 사이에 분배되건간에, 임의의 적합한 프로세서 또는 프로세서들의 집합 상에서 실행될 수 있다. 이러한 프로세서는 집적 회로 구성요소 내에 하나 이상의 프로세서를 갖는 집적 회로로서 구현될 수 있다. 그럼에도, 프로세서는 임의의 적합한 포맷의 회로를 사용하여 구현될 수 있다.
또한, 컴퓨터는 래크-장착형 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터 또는 태블릿 컴퓨터와 같은 다수의 형태 중 임의의 것으로 구체화될 수 있다는 것이 이해되어야 한다. 부가적으로, 컴퓨터는 일반적으로 컴퓨터로서 간주되지 않지만, 개인 휴대 정보 단말(PDA), 스마트폰 또는 임의의 다른 적합한 휴대용 또는 고정형 전자 디바이스를 포함하는, 적합한 프로세싱 능력을 갖는 디바이스에 구체화될 수도 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 디바이스를 가질 수 있다. 이들 디바이스는 무엇보다도 사용자 인터페이스를 제시하는데 사용될 수 있다. 사용자 인터페이스를 제공하는데 사용될 수 있는 출력 디바이스의 예는 출력의 시각적 제시를 위한 프린터 또는 디스플레이 스크린과, 출력의 가청 제시를 위한 스피커 또는 다른 사운드 생성 디바이스를 포함한다. 사용자 인터페이스를 위해 사용될 수 있는 입력 디바이스의 예는 키보드와, 마우스, 터치 패드 및 디지털화 태블릿과 같은 포인팅 디바이스를 포함한다. 다른 예로서, 컴퓨터는 음성 인식을 통해 또는 다른 가청 포맷으로 입력 정보를 수신할 수 있다.
이러한 컴퓨터는 기업 네트워크 또는 인터넷과 같은 근거리 통신망 또는 원거리 통신망을 포함하는 임의의 적합한 형태의 하나 이상의 네트워크에 의해 상호 접속될 수 있다.
또한, 본 명세서에 개략 설명된 다양한 방법 또는 프로세스는 다양한 운영 체제 또는 플랫폼 중 임의의 하나를 이용하는 하나 이상의 프로세서 상에서 실행가능한 소프트웨어로서 코딩될 수 있다. 부가적으로, 이러한 소프트웨어는 다수의 적합한 프로그래밍 언어 및/또는 프로그래밍 또는 스크립팅 툴 중 임의의 것을 사용하여 기록될 수 있고, 또한 프레임워크 또는 가상 머신 상에서 실행되는 실행가능한 머신 언어 코드 또는 중간 코드로서 컴파일링될 수 있다.
이 관점에서, 본 발명은 하나 이상의 컴퓨터 또는 다른 프로세서 상에서 실행될 때, 전술된 본 발명의 다양한 실시예를 구현하는 방법을 수행하는 하나 이상의 프로그램으로 인코딩된 컴퓨터 판독가능 저장 매체(또는 다수의 컴퓨터 판독가능 매체)[예를 들어, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 콤팩트 디스크(CD), 광학 디스크, 디지털 비디오 디스크(DVD), 자기 테이프, 플래시 메모리, 필드 프로그램가능 게이트 어레이 또는 다른 반도체 디바이스 내의 회로 구성 또는 다른 탠저블 컴퓨터 저장 매체]로서 구체화될 수 있다. 상기 예로부터 명백한 바와 같이, 컴퓨터 판독가능 저장 매체는 비일시적 형태로 컴퓨터-실행가능 인스트럭션을 제공하기 위해 충분한 시간 동안 정보를 보유할 수 있다. 이러한 컴퓨터 판독가능 저장 매체 또는 매체들은 운반 가능하여, 그 위에 저장된 프로그램 또는 프로그램들이 전술된 바와 같은 본 발명의 다양한 양태를 구현하기 위해 하나 이상의 상이한 컴퓨터 또는 다른 프로세서 상에 로딩될 수 있게 된다. 본 명세서에 사용될 때, 용어 "컴퓨터-판독가능 저장 매체"는 제조물(즉, 제조 물품) 또는 머신으로 고려될 수 있는 컴퓨터-판독가능 매체만을 포함한다. 대안적으로 또는 부가적으로, 본 발명은 전파 신호와 같은 컴퓨터-판독가능 저장 매체 이외의 컴퓨터 판독가능 매체로서 구체화될 수도 있다.
용어 "프로그램" 또는 "소프트웨어"는 본 명세서에 사용될 때, 일반적인 개념으로 전술된 바와 같은 본 발명의 다양한 양태를 구현하기 위해 컴퓨터 또는 다른 프로세서를 프로그램하는데 이용될 수 있는 컴퓨터-실행가능 인스트럭션의 세트 또는 임의의 유형의 컴퓨터 코드를 칭하는데 사용된다. 부가적으로, 본 실시예의 일 양태에 따르면, 실행될 때 본 발명의 방법을 수행하는 하나 이상의 컴퓨터 프로그램은 단일의 컴퓨터 또는 프로세서 상에 상주할 필요는 없지만, 본 발명의 다양한 양태를 구현하기 위해 다수의 상이한 컴퓨터 또는 프로세서 사이에 모듈형 방식으로 분배될 수도 있다는 것이 이해되어야 한다.
컴퓨터-실행가능 인스트럭션은 하나 이상의 컴퓨터 또는 다른 디바이스에 의해 실행된 프로그램 모듈과 같은 다수의 형태일 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상적 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능성은 다양한 실시예에서 원하는 바와 같이 조합되거나 분배될 수 있다.
또한, 데이터 구조는 임의의 적합한 형태로 컴퓨터 판독가능 매체에 저장될 수 있다. 예시의 간단화를 위해, 데이터 구조는 데이터 구조 내의 위치를 통해 관련된 필드를 갖는 것으로 도시되어 있을 수도 있다. 이러한 관계는 마찬가지로 필드들 사이의 관계를 전달하는 컴퓨터 판독가능 매체 내의 위치와 필드를 위한 저장 장치를 할당함으로써 성취될 수 있다. 그러나, 임의의 적합한 메커니즘이 포인터, 태그 또는 데이터 요소들 사이의 관계를 설정하는 다른 메커니즘의 사용을 통하는 것을 포함하여, 데이터 구조의 필드 내의 정보 사이의 관계를 설정하는데 사용될 수 있다.
본 발명의 다양한 양태는 단독으로, 조합하여, 또는 상기에 설명된 실시예에 구체적으로 설명되지 않은 다양한 배열로 사용될 수도 있고, 따라서 상기 설명에 설명되거나 도면에 도시되어 있는 구성요소들의 상세 및 배열에 그 용례가 한정되는 것은 아니다. 예를 들어, 일 실시예에서 설명된 양태는 다른 실시예에서 설명된 양태와 임의의 방식으로 조합될 수 있다.
또한, 본 발명은 그 예가 제공되어 있는 방법으로서 구체화될 수도 있다. 방법의 부분으로서 수행되는 동작은 임의의 적합한 방식으로 순서화될 수도 있다. 이에 따라, 동작이 예시된 것과 상이한 순서로 수행되고, 몇몇 동작을 동시에 수행하는 것을 포함할 수 있지만 예시적인 실시예에서 순차적인 동작으로서 도시되어 있는 실시예가 고려될 수도 있다.
청구항 요소를 수식하기 위한 청구범위에서 "제 1", "제 2", "제 3" 등과 같은 서수 용어의 사용은 자체로 다른 요소에 대한 하나의 청구항 요소의 임의의 우선순위, 선행 또는 순서 또는 방법의 동작이 수행되는 시간적 순서를 나타내는 것은 아니고, 단지 청구항 요소들을 구별하기 위해 동일한 명칭(그러나 서수 용어의 사용을 위한)을 갖는 다른 요소로부터 특정 명칭을 갖는 하나의 청구항 요소를 구별하기 위한 라벨로서 단지 사용된다.
또한 본 명세서에 사용된 술어 및 용어는 설명을 위한 것이고 한정으로서 간주되어서는 안된다. "구비하는", "포함하는" 또는 "갖는", "함유하는", "수반하는" 및 이들의 변형의 본 명세서에서의 사용은 그 다음에 열거된 아이템 및 이들의 등가물 뿐만 아니라 부가의 아이템을 포함하는 것으로 의도된다.
100: 컴퓨팅 환경 102: 컴퓨팅 디바이스
103: CPU 106: 디스플레이
108: 사용자 110: GPU
112: 온-칩 메모리 120: 메모리
122: 이미지 평면 220: 애플리케이션(들)
230: 운영 체제 232: 그래픽 라이브러리
234: 명령 및 파라미터 236:: GPU 디바이스 드라이버

Claims (25)

  1. 적어도 하나의 프로세서에 의해 실행될 때, 컴퓨팅 장치의 그래픽 프로세싱 유닛(GPU)을 구성하는 동작을 포함하는 동작을 수행하는 프로세서-실행가능 인스트럭션을 포함하는 애플리케이션이 저장된, 적어도 하나의 컴퓨터-판독가능 저장 매체로서,
    상기 동작은,
    한 타일에 대한 그래픽이 임의의 다른 타일로부터의 콘텐트에 의존하는지 여부에 적어도 부분적으로 기초해서, 상기 GPU가 그래픽을, 타일-후-레이어(tile-then-layer) 접근법을 이용해서 렌더링할지 혹은 레이어-후-타일(layer-then-tile) 접근법을 이용해서 렌더링할지 여부를 판정하는 동작 - 상기 그래픽은, 각각이 콘텐트의 복수의 레이어를 가진 복수의 타일로서 편성되며, 상기 타일-후-레이어 접근법은 상기 그래픽을 타일 단위로 렌더링하는 것을 포함하고, 상기 레이어-후-타일 접근법은 상기 그래픽을 레이어 단위로 렌더링하는 것을 포함함 - 과,
    상기 GPU가 상기 그래픽을 상기 타일-후-레이어 접근법을 이용해서 렌더링한다고 판정되면, 상기 GPU가 상기 그래픽을 타일 단위로 렌더링한다고 상기 GPU에 통지하는 동작
    을 더 포함하는
    적어도 하나의 컴퓨터-판독가능 저장 매체.
  2. 제 1 항에 있어서,
    상기 GPU가 상기 그래픽을 상기 레이어-후-타일 접근법을 이용해서 렌더링한다고 판정되면,
    상기 동작은, 상기 GPU가 상기 그래픽을 레이어 단위로 렌더링한다고 상기 GPU에 통지하는 동작을 더 포함하는
    적어도 하나의 컴퓨터-판독가능 저장 매체.
  3. 제 1 항에 있어서,
    상기 통지하는 것은, 상기 GPU가 상기 그래픽을 타일 단위로 렌더링하는 것을 나타내도록, 파라미터를 설정하는 것과 함수를 호출하는 것 중 적어도 하나를 수행하는 것을 포함하는
    적어도 하나의 컴퓨터-판독가능 저장 매체.
  4. 제 1 항에 있어서,
    상기 애플리케이션은, 상기 적어도 하나의 프로세서에 의해서 실행될 때, 상기 적어도 하나의 프로세서로 하여금 웹페이지의 콘텐트와 비디오 게임의 콘텐트 중 적어도 하나를 렌더링하게 하는 프로세서-실행가능 인스트럭션을 더 포함하는
    적어도 하나의 컴퓨터-판독가능 저장 매체.
  5. 제 1 항에 있어서,
    상기 그래픽을 레이어 단위로 렌더링하는 것은, 상기 그래픽의 적어도 일부에 투명 효과와 클립핑 효과 중 적어도 하나를 적용하는 것을 포함하는
    적어도 하나의 컴퓨터-판독가능 저장 매체.
  6. 복수의 콘텐트 레이어를 포함하는 콘텐트를 렌더링하는 시스템으로서,
    상기 콘텐트는 제 1 타일 및 제 2 타일을 포함한 복수의 타일로서 편성되고,
    상기 시스템은, 렌더링 하드웨어 및 GPU 메모리를 구비한 GPU를 포함하며,
    상기 GPU는
    상기 제 1 타일에 대응하는 콘텐트의 적어도 제 1 부분을 렌더링해서 하나 이상의 화소값을 구하고,
    한 타일의 출력의 다른 타일의 콘텐트에 대한 잠재적인 의존도에 적어도 부분적으로 기초해서, 상기 콘텐트가 상기 GPU에 의해서 타일-후-레이어로 렌더링되는지 혹은 레이어-후-타일로 렌더링되는지에 대한 지시를 수신하며 - 타일-후-레이어로 렌더링하는 것은 상기 제 2 타일에 대응하는 상기 콘텐트의 제 2 부분을 렌더링하기 전에, 상기 제 1 타일과 관련된 적어도 2개의 레이어의 부분에 대한 값을 합성하기 위한 적어도 하나의 동작을 포함함 - ,
    상기 지시에서 상기 콘텐트가 타일-후-레이어로 렌더링된다고 나타내는 경우에, 상기 제 2 타일에 대응하는 상기 콘텐트의 상기 제 2 부분을 렌더링하기 전에, 상기 제 1 타일과 관련된 적어도 2개의 레이어의 부분에 대한 값을 합성하도록
    구성되는
    시스템.
  7. 제 6 항에 있어서,
    상기 콘텐트의 적어도 상기 제 1 부분은 제 1 콘텐트 레이어 및 제 2 콘텐트 레이어를 포함하고,
    상기 하나 이상의 화소값은 제 1 세트의 화소값 및 제 2 세트의 화소값을 포함하며,
    상기 GPU는,
    상기 제 1 타일에 대응하는 상기 제 1 콘텐트 레이어의 적어도 일부를 렌더링해서 상기 제 1 세트의 화소값을 계산하고,
    상기 제 1 콘텐트 레이어의 적어도 일부를 렌더링하는 것에 응답하여, 상기 제 1 세트의 화소값을 다른 메모리 영역에 카피하며,
    상기 카피에 응답하여, 상기 제 1 타일에 대응하는 상기 제 2 콘텐트 레이어의 적어도 일부를 렌더링하여 상기 제 2 세트의 화소값을 계산함으로써
    상기 제 1 타일에 대응하는 콘텐트의 적어도 상기 제 1 부분을 렌더링하도록 더 구성되는
    시스템.
  8. 제 7 항에 있어서,
    상기 GPU에 통신적으로 결합된 메모리를 더 포함하고,
    상기 메모리는 상기 GPU 상에 탑재되어 있지 않은
    시스템.
  9. 제 7 항에 있어서,
    상기 하나 이상의 화소값에 대해 적어도 하나의 동작을 수행하는 것은, 상기 제 1 세트의 화소값과 상기 제 2 세트의 화소값 중 적어도 하나를 사용해서 하나 이상의 새로운 화소값을 얻는 것을 포함하는
    시스템.
  10. 제 6 항에 있어서,
    상기 지시를 수신하는 것은, 그래픽 프로세싱 루틴으로의 인터페이스를 통해 지시를 수신하는 것을 포함하는
    시스템.
  11. 제 10 항에 있어서,
    상기 지시는, 상기 하나 이상의 화소값에 대해 적어도 하나의 동작을 먼저 수행하는 것을 지시하는 값을 갖고 있는 파라미터를 포함하는
    시스템.
  12. GPU를 구성하는 컴퓨팅 장치로서,
    인스트럭션을 저장하는 메모리 및 인스트럭션을 실행하는 프로세서를 포함하고,
    상기 인스트럭션은,
    각각의 타일에 대한 콘텐트가 다른 타일에 대한 콘텐트와는 무관하게 렌더링 가능한지 여부에 적어도 부분적으로 기초해서, 상기 GPU가 그래픽 이미지의 타일 및 레이어를 렌더링하는 서로에 대한 순서를 결정하는 인스트럭션 - 상기 그래픽 이미지는 상기 컴퓨팅 장치와 관련된 디스플레이에 제시됨 - 과,
    상기 결정된 순서에 따라서 상기 GPU를 구성하는 인스트럭션
    을 포함하는,
    컴퓨팅 장치.
  13. 제 12 항에 있어서,
    상기 인스트럭션은 또한, 제 1 타일에 대응하는 상기 그래픽 이미지의 적어도 일부에 투명 효과와 클립핑 효과 중 적어도 하나를 적용하는 적어도 하나의 동작을 수행하는
    컴퓨팅 장치.
  14. 제 13 항에 있어서,
    상기 GPU는, 상기 제 2 타일에 대한 임의의 렌더링을 수행하기 전에, 상기 제 1 타일에 대응하는 하나 이상의 화소값에 대한 적어도 하나의 동작을 완료하도록 구성되는
    컴퓨팅 장치.
  15. 제 12 항에 있어서,
    상기 GPU를 더 포함하고,
    상기 GPU는 상기 프로세서에 의해서 구성되며,
    상기 그래픽 이미지를 렌더링하는
    컴퓨팅 장치.
  16. 제 15 항에 있어서,
    상기 제 1 타일은 제 1 콘텐트 레이어의 제 1 부분 및 제 2 콘텐트 레이어의 제 1 부분을 포함하고,
    상기 제 2 타일은 제 1 콘텐트 레이어의 제 2 부분 및 제 2 콘텐트 레이어의 제 2 부분을 포함하며,
    상기 GPU는 또한,
    적어도 상기 제 1 콘텐트 레이어의 상기 제 1 부분과 관련된 제 1 세트의 화소값을 계산하고,
    적어도 상기 제 2 콘텐트 레이어의 상기 제 1 부분에 대해서 제 2 세트의 화소값을 구하며,
    상기 제 1 세트의 화소값 및 상기 제 2 세트의 화소값에 기초해서 상기 제 1 타일을 렌더링하는
    컴퓨팅 장치.
  17. 컴퓨팅 장치와 관련된 디스플레이 장치에 표시할 그래픽을 렌더링하는 방법으로서,
    상기 컴퓨팅 장치에 의해서, 상기 컴퓨팅 장치와 관련된 상기 디스플레이 장치에 표시하기 위해서 렌더링될 콘텐트를 수신하는 단계와,
    상기 컴퓨팅 장치에 의해서, 타일에 대한 출력이 다른 타일에 대한 데이터와 무관한지 여부에 적어도 부분적으로 기초해서, 상기 수신한 콘텐트를 상기 컴퓨팅 장치의 GPU에 의해서 타일-후-레이어 처리를 통해서 렌더링할지 혹은 레이어-후-타일 처리를 통해서 렌더링할지를 선택하는 단계와,
    상기 컴퓨팅 장치의 상기 GPU에 의해서, 상기 컴퓨팅 장치와 관련된 상기 디스플레이 장치에 표시할 상기 수신한 콘텐트를, 상기 선택한 처리에 따라서 렌더링하는 단계
    를 포함하는
    방법.
  18. 제 17 항에 있어서,
    상기 렌더링된 콘텐트를, 상기 컴퓨팅 장치와 관련된 상기 디스플레이 장치에 표시하는 단계
    를 더 포함하는
    방법.
  19. 제 17 항에 있어서,
    상기 수신한 콘텐트는, 복수의 콘텐트 레이어를 포함하고 복수의 타일로서 편성되는
    방법.
  20. 제 17 항에 있어서,
    상기 수신한 콘텐트를 상기 타일-후-레이어 처리를 통해서 렌더링할지 혹은 상기 레이어-후-타일 처리를 통해서 렌더링할지를 선택하는 것은 또한, 상기 콘텐트가 상기 레이어-후-타일 처리를 통해서 렌더링되었다면 미드신 플러시(mid-scene flush)가 수행되었어야 했는지 여부에도 적어도 부분적으로 기초하는
    방법.
  21. 제 17 항에 있어서,
    상기 수신한 콘텐트를 상기 타일-후-레이어 처리를 통해서 렌더링할지 혹은 상기 레이어-후-타일 처리를 통해서 렌더링할지를 선택하는 것은 또한, 상기 컴퓨팅 장치의 상기 GPU에 결합된 메모리의 크기에도 적어도 부분적으로 기초하는
    방법.
  22. 제 17 항에 있어서,
    상기 수신한 콘텐트를 상기 선택한 처리에 따라서 렌더링하는 것은, 상기 수신한 콘텐트의 일부에 투명 효과와 클립핑 효과 중 적어도 하나를 적용하는 것을 포함하는
    방법.
  23. 제 17 항에 있어서,
    상기 수신한 콘텐트를 상기 선택한 처리에 따라서 렌더링하는 것은, 임의의 다른 타일에 대응하는 콘텐트를 렌더링하기 전에, 한 타일의 적어도 2개의 레이어에 대한 화소값을 합성하는 것을 포함하는
    방법.
  24. 제 17 항에 있어서,
    상기 수신한 콘텐트를 상기 선택한 처리에 따라서 렌더링하는 것은, 적어도 하나의 암시적 카피(implicit copy) 동작을 수행하는 것을 포함하는
    방법.
  25. 제 17 항에 있어서,
    상기 수신한 콘텐트를 상기 타일-후-레이어 처리를 통해서 렌더링할지 혹은 상기 레이어-후-타일 처리를 통해서 렌더링할지를 선택한 결과, 상기 수신한 콘텐트는 상기 타일-후-레이어 처리를 통해서 렌더링되는 것으로 선택되고,
    상기 타일-후-레이어 처리는 적어도 하나의 암시적 카피 동작을 포함하는
    방법.
KR1020147006551A 2011-09-12 2012-09-10 콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템 KR101952983B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/230,436 US9342322B2 (en) 2011-09-12 2011-09-12 System and method for layering using tile-based renderers
US13/230,436 2011-09-12
PCT/US2012/054386 WO2013039812A2 (en) 2011-09-12 2012-09-10 System and method for layering using tile-based renderers

Publications (2)

Publication Number Publication Date
KR20140060307A KR20140060307A (ko) 2014-05-19
KR101952983B1 true KR101952983B1 (ko) 2019-02-27

Family

ID=47696791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006551A KR101952983B1 (ko) 2011-09-12 2012-09-10 콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템

Country Status (6)

Country Link
US (2) US9342322B2 (ko)
EP (1) EP2756481B1 (ko)
JP (1) JP6062438B2 (ko)
KR (1) KR101952983B1 (ko)
CN (1) CN102937892B (ko)
WO (1) WO2013039812A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013057889A (ja) * 2011-09-09 2013-03-28 Toshiba Corp 画像処理装置及びカメラモジュール
US8982134B2 (en) * 2012-03-12 2015-03-17 Advanced Micro Devices, Inc. Area-based dependency chain analysis of shaders and command stream
US9449410B2 (en) 2013-04-11 2016-09-20 Qualcomm Incorporated Intra-frame timestamps for tile-based rendering
GB2517185B (en) * 2013-08-14 2020-03-04 Advanced Risc Mach Ltd Graphics tile compositing control
US9805478B2 (en) 2013-08-14 2017-10-31 Arm Limited Compositing plural layer of image data for display
KR101663023B1 (ko) * 2015-04-23 2016-10-06 (주)넥셀 그래픽 처리 장치 및 방법
CN105511825B (zh) * 2015-12-01 2018-12-28 上海兆芯集成电路有限公司 显示图层的方法及装置
CN107292945B (zh) * 2016-03-31 2021-01-26 阿里巴巴集团控股有限公司 视频图像的图层渲染处理方法及其系统
KR102637736B1 (ko) 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
US11379577B2 (en) 2019-09-26 2022-07-05 Microsoft Technology Licensing, Llc Uniform resource locator security analysis using malice patterns
US11509667B2 (en) 2019-10-19 2022-11-22 Microsoft Technology Licensing, Llc Predictive internet resource reputation assessment
US11431751B2 (en) 2020-03-31 2022-08-30 Microsoft Technology Licensing, Llc Live forensic browsing of URLs
CN113052928B (zh) * 2021-03-08 2024-07-19 贝壳找房(北京)科技有限公司 图像处理方法及图像处理系统
CN113763286A (zh) * 2021-09-27 2021-12-07 北京市商汤科技开发有限公司 图像处理方法及装置、电子设备和存储介质
CN114332324A (zh) * 2021-12-27 2022-04-12 北京字节跳动网络技术有限公司 图像处理方法、装置、设备及介质
US20230334737A1 (en) * 2022-04-13 2023-10-19 Adobe Inc. Partial depth ordering with vector interlacing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544544A (ja) 1999-05-10 2002-12-24 アップル コンピュータ インコーポレイテッド 半透明層の描写
US20100315423A1 (en) 2009-06-10 2010-12-16 Samsung Electronics Co., Ltd. Apparatus and method for hybrid rendering

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321750A (en) 1989-02-07 1994-06-14 Market Data Corporation Restricted information distribution system apparatus and methods
US5339392A (en) 1989-07-27 1994-08-16 Risberg Jeffrey S Apparatus and method for creation of a user definable video displayed document showing changes in real time data
US5297032A (en) 1991-02-01 1994-03-22 Merrill Lynch, Pierce, Fenner & Smith Incorporated Securities trading workstation
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5581670A (en) 1993-07-21 1996-12-03 Xerox Corporation User interface having movable sheet with click-through tools
CA2124624C (en) 1993-07-21 1999-07-13 Eric A. Bier User interface having click-through tools that can be composed with other tools
US5819284A (en) 1995-03-24 1998-10-06 At&T Corp. Personalized real time information display as a portion of a screen saver
US5867166A (en) 1995-08-04 1999-02-02 Microsoft Corporation Method and system for generating images using Gsprites
US5883627A (en) 1996-09-25 1999-03-16 Microsoft Corporation Advanced graphics controls
US5959621A (en) 1996-12-06 1999-09-28 Microsoft Corporation System and method for displaying data items in a ticker display pane on a client computer
US6216141B1 (en) 1996-12-06 2001-04-10 Microsoft Corporation System and method for integrating a document into a desktop window on a client computer
US5870098A (en) 1997-02-26 1999-02-09 Evans & Sutherland Computer Corporation Method for rendering shadows on a graphical display
US6031529A (en) 1997-04-11 2000-02-29 Avid Technology Inc. Graphics design software user interface
US6219058B1 (en) * 1997-09-08 2001-04-17 Intel Corporation Bin-per-span based representation and communication of graphical data
EP1036357A1 (en) 1997-11-14 2000-09-20 Avesta Technologies Inc. System and method for displaying multiple sources of data in near real-time
US6856320B1 (en) 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6449638B1 (en) 1998-01-07 2002-09-10 Microsoft Corporation Channel definition architecture extension
US6311058B1 (en) 1998-06-30 2001-10-30 Microsoft Corporation System for delivering data content over a low bit rate transmission channel
US6278448B1 (en) 1998-02-17 2001-08-21 Microsoft Corporation Composite Web page built from any web content
US6570578B1 (en) 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6832355B1 (en) 1998-07-28 2004-12-14 Microsoft Corporation Web page display system
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6188405B1 (en) 1998-09-14 2001-02-13 Microsoft Corporation Methods, apparatus and data structures for providing a user interface, which exploits spatial memory, to objects
US6510553B1 (en) 1998-10-26 2003-01-21 Intel Corporation Method of streaming video from multiple sources over a network
US6792615B1 (en) 1999-05-19 2004-09-14 New Horizons Telecasting, Inc. Encapsulated, streaming media automation and distribution system
US6456334B1 (en) 1999-06-29 2002-09-24 Ati International Srl Method and apparatus for displaying video in a data processing system
US6976210B1 (en) 1999-08-31 2005-12-13 Lucent Technologies Inc. Method and apparatus for web-site-independent personalization from multiple sites having user-determined extraction functionality
US6657635B1 (en) * 1999-09-03 2003-12-02 Nvidia Corporation Binning flush in graphics data processing
US7028264B2 (en) 1999-10-29 2006-04-11 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US7987431B2 (en) 1999-10-29 2011-07-26 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US6724403B1 (en) 1999-10-29 2004-04-20 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US6697825B1 (en) 1999-11-05 2004-02-24 Decentrix Inc. Method and apparatus for generating and modifying multiple instances of element of a web site
US6819321B1 (en) 2000-03-31 2004-11-16 Intel Corporation Method and apparatus for processing 2D operations in a tiled graphics architecture
US7071937B1 (en) 2000-05-30 2006-07-04 Ccvg, Inc. Dirt map method and apparatus for graphic display system
US6734873B1 (en) 2000-07-21 2004-05-11 Viewpoint Corporation Method and system for displaying a composited image
US20040039934A1 (en) 2000-12-19 2004-02-26 Land Michael Z. System and method for multimedia authoring and playback
US6639594B2 (en) 2001-06-03 2003-10-28 Microsoft Corporation View-dependent image synthesis
US6919891B2 (en) 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
US6717584B2 (en) 2001-11-06 2004-04-06 General Motors Corporation Method and system for visualizing paint on a computer-generated object
US20030197716A1 (en) 2002-04-23 2003-10-23 Krueger Richard C. Layered image compositing system for user interfaces
US20040015610A1 (en) 2002-07-18 2004-01-22 Sytex, Inc. Methodology and components for client/server messaging system
US20040075699A1 (en) 2002-10-04 2004-04-22 Creo Inc. Method and apparatus for highlighting graphical objects
US7106343B1 (en) 2003-04-08 2006-09-12 Carter Hickman Method and process for virtual paint application
US20050132305A1 (en) 2003-12-12 2005-06-16 Guichard Robert D. Electronic information access systems, methods for creation and related commercial models
US7403209B2 (en) 2004-03-24 2008-07-22 Canon Kabushiki Kaisha Rendering images containing video
US7145562B2 (en) 2004-05-03 2006-12-05 Microsoft Corporation Integration of three dimensional scene hierarchy into two dimensional compositing system
JP2006094297A (ja) 2004-09-27 2006-04-06 Fuji Xerox Co Ltd 画像形成装置、画像処理装置、画像処理方法及びそのプログラム
US7474314B2 (en) 2005-01-10 2009-01-06 Columbia Insurance Company Method for representing true colors with device-dependent colors on surfaces and for producing paints and coatings matching the true colors
CA2533279C (en) * 2005-01-18 2011-09-20 Ryan Eccles System and method for processing map data
US8819569B2 (en) 2005-02-18 2014-08-26 Zumobi, Inc Single-handed approach for navigation of application tiles using panning and zooming
US7312801B2 (en) 2005-02-25 2007-12-25 Microsoft Corporation Hardware accelerated blend modes
US7535480B2 (en) 2005-08-24 2009-05-19 Microsoft Corporation Compositing rendering layers
US7933632B2 (en) 2005-09-16 2011-04-26 Microsoft Corporation Tile space user interface for mobile devices
GB0524804D0 (en) * 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
US7474313B1 (en) * 2005-12-14 2009-01-06 Nvidia Corporation Apparatus, method, and system for coalesced Z data and color data for raster operations
US8130226B2 (en) 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
ITMI20070038A1 (it) 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
ITMI20082342A1 (it) 2008-12-30 2010-06-30 St Microelectronics Srl Modulo di renderizzazione per grafica a due dimensioni, preferibilmente basato su primitive di tipo bordo attivo
US8587581B2 (en) 2009-10-15 2013-11-19 Nvidia Corporation Order-preserving distributed rasterizer
KR101609266B1 (ko) 2009-10-20 2016-04-21 삼성전자주식회사 타일 기반의 랜더링 장치 및 방법
US8589815B2 (en) 2010-03-10 2013-11-19 Microsoft Corporation Control of timing for animations in dynamic icons
US8339409B2 (en) * 2011-02-16 2012-12-25 Arm Limited Tile-based graphics system and method of operation of such a system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544544A (ja) 1999-05-10 2002-12-24 アップル コンピュータ インコーポレイテッド 半透明層の描写
US20070040851A1 (en) 1999-05-10 2007-02-22 Brunner Ralph T Rendering translucent layers in a display system
US20100315423A1 (en) 2009-06-10 2010-12-16 Samsung Electronics Co., Ltd. Apparatus and method for hybrid rendering

Also Published As

Publication number Publication date
WO2013039812A2 (en) 2013-03-21
CN102937892A (zh) 2013-02-20
KR20140060307A (ko) 2014-05-19
US9715750B2 (en) 2017-07-25
EP2756481A2 (en) 2014-07-23
CN102937892B (zh) 2016-08-24
JP6062438B2 (ja) 2017-01-18
EP2756481B1 (en) 2019-12-18
US20170061662A1 (en) 2017-03-02
US9342322B2 (en) 2016-05-17
EP2756481A4 (en) 2015-04-15
US20130063473A1 (en) 2013-03-14
WO2013039812A3 (en) 2013-05-10
JP2014530403A (ja) 2014-11-17

Similar Documents

Publication Publication Date Title
KR101952983B1 (ko) 콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템
EP3657327B1 (en) Method for rendering game, and method, apparatus and device for generating game resource file
EP3111318B1 (en) Cross-platform rendering engine
US10437541B2 (en) Graphics engine and environment for efficient real time rendering of graphics that are not pre-known
WO2020156264A1 (zh) 渲染方法及装置
US9373308B2 (en) Multi-viewport display of multi-resolution hierarchical image
JP5166552B2 (ja) グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート
JP2010527077A (ja) レンダリング後のグラフィックスオーバーレイ
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
US10319068B2 (en) Texture not backed by real mapping
WO2010000126A1 (zh) 交互信息生成方法及系统
KR20180056316A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
JP2018532190A (ja) 後期深度試験と保守的深度試験との間の動的切替え
US10628909B2 (en) Graphics processing unit resource dependency viewer
US11010863B2 (en) Bindpoint emulation
WO2023241210A1 (zh) 虚拟场景的渲染方法、装置、设备及存储介质
US10692169B2 (en) Graphics driver virtual channels for out-of-order command scheduling for a graphics processor
CN111402375A (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
GRNT Written decision to grant