KR20180054797A - 프리-페칭에 의한 효율적 디스플레이 프로세싱 - Google Patents

프리-페칭에 의한 효율적 디스플레이 프로세싱 Download PDF

Info

Publication number
KR20180054797A
KR20180054797A KR1020187011134A KR20187011134A KR20180054797A KR 20180054797 A KR20180054797 A KR 20180054797A KR 1020187011134 A KR1020187011134 A KR 1020187011134A KR 20187011134 A KR20187011134 A KR 20187011134A KR 20180054797 A KR20180054797 A KR 20180054797A
Authority
KR
South Korea
Prior art keywords
data
foreground
tile
memory space
tile data
Prior art date
Application number
KR1020187011134A
Other languages
English (en)
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 KR20180054797A publication Critical patent/KR20180054797A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • 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/39Control of the bit-mapped memory
    • G09G5/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • 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
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/18Use of a frame buffer in a display terminal, inclusive of the display panel

Landscapes

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

Abstract

일 예에서, 디스플레이 프로세서의 타일 기반 프로세싱을 위한 방법은 제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하는 단계를 포함할 수도 있다. 본 방법은 판독된 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하는 단계를 포함할 수도 있다. 본 방법은 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하는 단계를 포함할 수도 있다. 본 방법은 판독된 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하는 단계를 포함할 수도 있다. 본 방법은 제 2 메모리 공간으로부터 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하는 단계를 포함할 수도 있다. 본 방법은 제 3 메모리 공간으로부터 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하는 단계를 포함할 수도 있다.

Description

프리-페칭에 의한 효율적 디스플레이 프로세싱
본 개시는 디스플레이 프로세서의 디스플레이 프로세싱에 관한 것이다.
그래픽 유저 인터페이스 및 비디오 게임용 컨텐츠와 같은 디스플레이용 비주얼 컨텐츠는 GPU (graphics processing unit) 에 의해 생성될 수도 있다. 예를 들어, 디스플레이는 프로세싱된 그래픽 데이터의 디스플레이 상으로의 프리젠테이션을 위하여 GPU 에 의해 출력된 그래픽 데이터 (예를 들어, 픽셀 표현들) 을 프로세싱하는 디스플레이 프로세서에 통신가능하게 커플링될 수도 있다.
디스플레이 프로세서는 프로세서와 연관된 영역 프로세싱 효율로 인하여 종종 타일 기반 디스플레이 아키텍처를 이용한다. 그러나, 현재의 디스플레이 프로세서들의 타일 페칭 방식 및/또는 타일 프로세싱 시퀀스는 개선될 수도 있다.
본 개시의 기술은 디스플레이 프로세서의 디스플레이 프로세싱에 관한 것이다. 비주얼 컨텐츠는 중앙 프로세싱 유닛 (CPU), 그래픽 프로세싱 유닛 (GPU), 디지털 신호 프로세서 (DSP), 비디오 프로세싱 유닛, 카메라 프로세싱 유닛, 이미지 프로세싱 유닛, 픽셀 프로세싱 유닛 및/또는 다른 소스에 의해 생성 또는 프로세싱될 수도 있다. 디스플레이 프로세서는 임의의 소스로부터 비주얼 컨텐츠를 수신하도록 구성될 수도 있다. 본 개시의 특정 양태들은, 예를 들어, 디스플레이 프로세서의 대역폭/프로세싱 소모를 감소시키는 것 및/또는 디스플레이 프로세서 (예를 들어, 시스템 메모리) 에 의해 외부 메모리에 메모리 요청들의 수를 감소시키는 방향으로 지향될 수도 있다. 본 개시의 특정 양태들은 디스플레이 프로세서의 스루풋을 증가시키는 방향으로 지향될 수도 있다. 본 개시의 특정 양태들은 의사 평면 포맷 이미지에 대한 메모리 효율을 증가시키는 방향으로 지향될 수 있다.
일 예에서, 본 개시는 디스플레이 프로세서에 의한 타일 기반 프로세싱을 위한 방법을 설명하며, 본 방법은: 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해 제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하는 단계; 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해, 판독된 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하는 단계; 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하는 단계; 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해, 판독된 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하는 단계; 디스플레이 프로세서의 페치 프로세싱 유닛에 의해, 제 2 메모리 공간으로부터 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하는 단계; 및 디스플레이 프로세서의 페치 프로세싱 유닛에 의해, 제 3 메모리 공간으로부터 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하는 단계를 포함한다. 일부 예들에서, 제 1 메모리 공간은 프레임 버퍼일 수도 있고, 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼일 수도 있으며, 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼일 수도 있다.
다른 예에서, 본 개시는 컴퓨팅 디바이스를 개시하고, 컴퓨팅 디바이스는: 제 1 메모리 공간; 포어그라운드 이미지의 포어그라운드 타일 데이터를 저장하는 제 2 메모리 공간; 백그라운드 이미지의 백그라운드 타일 데이터를 저장하는 제 3 메모리 공간; 및 프리-페치 프로세싱 유닛 및 페치 프로세싱 유닛을 포함하는 디스플레이 프로세서를 포함한다. 프리-페치 프로세싱 유닛은 제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하고, 판독된 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하고, 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하고, 그리고 판독된 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하도록 구성될 수도 있다. 페치 프로세싱 유닛은 제 2 메모리 공간으로부터 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하고 제 3 메모리 공간으로부터 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하도록 구성될 수도 있다. 일부 예들에서, 제 1 메모리 공간은 프레임 버퍼일 수도 있고, 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼일 수도 있으며, 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼일 수도 있다.
다른 예에서, 본 개시는 장치를 설명하고, 장치는: 제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하기 위한 수단; 판독된 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하기 위한 수단; 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하기 위한 수단; 판독된 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하기 위한 수단; 제 2 메모리 공간으로부터 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하기 위한 수단; 및 제 3 메모리 공간으로부터 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하기 위한 수단을 포함한다. 일부 예들에서, 제 1 메모리 공간은 프레임 버퍼일 수도 있고, 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼일 수도 있으며, 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼일 수도 있다.
다른 예에서, 본 개시는 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체를 설명하며, 명령들은 실행될 때 컴퓨팅 디바이스의 하나 이상의 프로세서들로 하여금: 제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하게 하고; 판독된 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하게 하고; 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하게 하고; 판독된 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하게 하고; 제 2 메모리 공간으로부터 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하게 하고; 그리고 제 3 메모리 공간으로부터 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하게 한다. 일부 예들에서, 제 1 메모리 공간은 프레임 버퍼일 수도 있고, 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼일 수도 있으며, 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼일 수도 있다.
본 개시의 하나 이상의 양태들의 상세들은 첨부된 도면과 하기의 설명으로부터 설명된다. 다른 특징들, 목적들 및 이점들은 하기의 설명 및 도면들, 및 하기의 특허청구범위로부터 명확해질 것이다.
도 1 은 본 개시의 하나 이상의 양태들을 구현하도록 구성될 수도 있는 일 예의 컴퓨팅 디바이스를 예시하는 블록도이다.
도 2 는 본 개시에 설명된 디스플레이 프로세서의 일 예를 예시하는 블록도이다.
도 3a 는 본 개시에 설명된 핑-퐁 버퍼에 데이터를 기록하는 일 예를 예시하는 개념도이다.
도 3b 는 본 개시에 설명된 핑-퐁 버퍼로부터 데이터를 판독하는 일 예를 예시하는 개념도이다.
도 3c 는 본 개시에 설명된 핑-퐁 버퍼의 일 예에 데이터를 기록하는 일 예를 예시하는 개념도이다.
도 3d 는 본 개시에 설명된 핑-퐁 버퍼의 일 예로부터 데이터를 판독하는 일 예를 예시하는 개념도이다.
도 4a 는 포어그라운드 및 백그라운드 타일들을 프로세싱하는 병렬처리의 일 예를 예시하는 개념도이다.
도 4b 는 포어그라운드 및 백그라운드 타일들을 프로세싱하는 병렬처리의 일 예를 예시하는 개념도이다.
도 5a 는 핑-퐁 버퍼 공간에 대한 메모리 할당의 일 예를 예시한다.
도 5b 는 핑-퐁 버퍼 공간에 대한 메모리 할당의 일 예를 예시한다.
도 6 은 본원에 개시된 기법들에 따라 포어그라운드, 백그라운드 및 라이트-백 핑-퐁 버퍼들을 예시하는 블록도이다.
도 7a 는 본 개시의 디스플레이 프로세싱을 위한 기법에 부합하는 일 예의 프로세스를 예시하는 플로우차트이다.
도 7b 는 본 개시의 디스플레이 프로세싱을 위한 기법에 부합하는 일 예의 프로세스를 예시하는 플로우차트이다.
도 8 은 본 개시에 설명된 디스플레이 프로세서의 타일 기반 프로세싱의 일 예를 예시하는 개념도이다.
일반적으로, 본 개시의 양태들은 이미지 프레임들의 세트 (예를 들어, 그래픽 애니메이션, 비디오, 비디오 게임 등) 또는 단일 이미지 프레임 (예를 들어, 정지 영상) 과 같은 비주얼 컨텐츠를 디스플레이함에 있어 컴퓨팅 시스템의 성능을 개선하는 것을 지향한다. 비주얼 컨텐츠는 CPU, GPU, DSP, 비디오 프로세싱 유닛, 카메라 프로세싱 유닛, 이미지 프로세싱 유닛, 픽셀 프로세싱 유닛 및/또는 다른 소스에 의해 생성될 수도 있다. 본 개시의 하나 이상의 기법을 수행하도록 구성된 디스플레이 프로세서는 임의의 소스로부터 비주얼 컨텐츠를 수신하도록 구성될 수도 있다. 예를 들어, 본 개시의 하나 이상의 기법을 수행하도록 구성된 디스플레이 프로세서는 비주얼적 컨텐츠를 생성 또는 프로세싱할 수도 있는 임의의 소스에 (유선, 무선 또는 이들의 조합으로) 통신가능하게 커플링될 수도 있다. 다른 예로서, 본 개시의 하나 이상의 기법을 수행하도록 구성된 디스플레이 프로세서는 비주얼 컨텐츠를 저장하도록 구성된 임의의 메모리에 (유선, 무선 또는 이들의 조합으로) 통신가능하게 커플링될 수도 있다. 이러한 예에서, 본 개시의 하나 이상의 기법을 수행하도록 구성된 디스플레이 프로세서는 비주얼 컨텐츠를 저장하는 임의의 메모리로부터 비주얼 컨텐츠를 수신하도록 구성될 수도 있다.
본 개시의 일 예에서, 디스플레이 프로세서는 메모리 (예를 들어, 프레임 버퍼) 로부터 포어그라운드 및 백그라운드 타일 데이터를 프리-페치하고, 프리-페치된 타일 데이터를 포어그라운드 핑-퐁 버퍼 및 백그라운드 핑-퐁 버퍼에 각각 저장한다. 메모리로부터 타일 데이터를 프리-페치하는 것은 예를 들어, 통상적으로 요청되는 것보다 더 큰 청크들로 메모리를 요청하는 것에 의해 메모리에 대한 메모리 요청들의 수를 감소시킬 수도 있다. 다른 예로서, 본 개시의 특정 양태들은 디스플레이 프로세서의 스루풋을 증가시키는 방향으로 지향될 수도 있다. 다른 예로서, 본 개시의 특정 양태들은 의사 평면 포맷 프레임(들)에 대한 메모리 효율을 증가시키는 방향으로 지향될 수도 있다. 예를 들어, 본 개시의 하나 이상의 기법들에 따른 디스플레이 프로세서는 프리-페치 프로세스 동안에 크로마 및 루마 타일들의 각각의 라인 간을 교번함이 없이 개별적인 타일들로서 크로마 및 루마를 프리-페치할 수도 있다.
도 1 은 본 개시의 하나 이상의 양태들을 구현하도록 구성될 수도 있는 일 예의 컴퓨팅 디바이스를 예시하는 블록도이다. 도 1 에 도시된 바와 같이, 컴퓨팅 디바이스 (2) 는 비디오 디바이스, 미디어 플레이어, 셋톱 박스, 모바일 전화기와 같은 무선 핸드셋 및 소위, 스마트 폰, PDA (personal digital assistants), 웨어러블 컴퓨팅 디바이스들, 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 게임 콘솔, 화상 회의 유닛들, 태블릿 컴퓨팅 디바이스 등을 포함할 수도 있다. 일부 예들에서, 컴퓨팅 디바이스 (2) 는 모바일 통신 디바이스일 수도 있다. 도 1 의 예에서, 컴퓨팅 디바이스 (2) 는 중앙 프로세싱 유닛 (CPU)(6), 시스템 메모리 (10) 및 GPU (12) 를 포함할 수도 있다. 컴퓨팅 디바이스 (2) 는 또한, 디지털 신호 프로세서 (DSP)(11), 디스플레이 프로세서 (14), 트랜시버 (3), 사용자 인터페이스 (4), 비디오 코덱 (7) 및 디스플레이 디바이스 (8) 를 포함할 수도 있다. 일부 예들에서, 비디오 코덱 (7) 은 소프트웨어 애플리케이션, 이를 테면, CPU (6) 에 의해 프로세싱되도록 구성된 소프트웨어 애플리케이션 (18) 일 수도 있다. 다른 예들에서, 비디오 코덱 (7) 은 CPU (6) 와는 상이한 하드웨어 컴포넌트, CPU (6) 와는 상이한 컴포넌트 상에서 구동되는 소프트웨어 애플리케이션, 또는 하드웨어 및 소프트웨어의 조합일 수도 있다.
도 1 에서의 디스플레이 프로세서 (14) 의 구성은 예시적이다. 다른 예에서, 디스플레이 프로세서 (14) 는 임의의 소스 이를 테면, CPU (예를 들어, CPU (6)), 임의의 GPU (예를 들어, GPU (12)), 임의의 DSP, 임의의 비디오 프로세싱 유닛, 임의의 카메라 프로세싱 유닛, 임의의 이미지 프로세싱 유닛, 임의의 픽셀 프로세싱 유닛, 비주얼 컨텐츠를 저장하는 임의의 메모리, 또는 임의의 다른 소스로부터 비주얼 컨텐츠를 수신하도록 구성될 수도 있다. 일 예로서, 디스플레이 프로세서 (14) 는 컴퓨팅 디바이스 (2) 가 다른 디바이스 (예를 들어, 다른 컴퓨팅 디바이스 (2), 서버, 또는 영구적으로 또는 일시적으로 통신가능하게 커플링하도록 구성될 수도 있는, 컴퓨팅 디바이스 (2) 와는 상이한 임의의 디바이스) 로부터 비주얼 컨텐츠 데이터를 수신하도록 구성될 수도 있다. 이러한 예에서, 컴퓨팅 디바이스 (2) 는 트랜시버 (3) 에서 비주얼 컨텐츠를 수신할 수도 있다. 디스플레이 프로세서 (14) 는 트랜시버 (3) 에 의해 수신된 비주얼 컨텐츠를 프로세싱하도록 구성될 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 는 트랜시버 (3) 로부터 직접 비주얼 컨텐츠를 수신할 수도 있다. 다른 예에서, 디스플레이 프로세서 (14) 는 CPU (6), GPU (12), 또는 컴퓨팅 디바이스 (2) 의 임의의 다른 프로세싱 유닛으로부터 트랜시버 (3) 에 의해 수신된 비주얼 컨텐츠를 수신할 수도 있다. 이러한 예들에서, 디스플레이 프로세서 (14) 는 CPU (6), GPU (12), 또는 컴퓨팅 디바이스 (2) 의 임의의 다른 프로세싱 유닛으로부터 트랜시버 (3) 에 의해 비주얼 컨텐츠가 수신되었을 때 그 비주얼 컨텐츠를 수신할 수도 있다.
본원에 이용된 용어 "비주얼 컨텐츠" 는 임의의 그래픽 데이터, 그래픽컬 데이터, 비디오 데이터, 이미지 데이터, 픽셀 데이터, 그래픽 컨텐츠, 그래픽컬 컨텐츠, 비디오 컨텐츠, 이미지 컨텐츠 및/또는 픽셀 컨텐츠를 포함하지만 이들에 한정되는 것은 아니다.
디스플레이 프로세서 (14) 의 여러 구성들의 관점에서, 디스플레이 프로세서 (14) 는 비주얼 컨텐츠의 임의의 소스 (예를 들어, 임의의 프로세싱 유닛 또는 비주얼 컨텐츠를 저장하는 임의의 메모리) 에 대하여 본원에 설명된 임의의 기능을 수행하도록 구성될 수도 있다. 예를 들어, 도 1 이, GPU 가 그래픽 데이터를 출력하는 프레임 버퍼와 같은 메모리로부터 비주얼 컨텐츠 (예를 들어, 하나 이상의 이미지 계층들) 를 프리-페치 및/또는 페치하도록 구성된 디스플레이 프로세서 (14) 를 갖는 것으로 도시되어 있지만, 디스플레이 프로세서 (14) 는 비주얼 컨텐츠를 프로세싱하도록 구성된 임의의 프로세싱 유닛 및/또는 비주얼 컨텐츠를 저장하도록 구성된 임의의 메모리 (예를 들어, 비주얼 컨텐츠를 프로세싱하도록 구성된 임의의 프로세싱 유닛의 임의의 온-칩 메모리, 비주얼 컨텐츠를 프로세싱하도록 구성된 임의의 프로세싱 유닛에 대해 외부에 있는 임의의 메모리, 또는 임의의 기타 메모리) 로부터 비주얼 컨텐츠를 프리-페치 및/또는 페치하도록 구성될 수도 있다.
디스플레이 프로세서 (14) 는 타일 기반 아키텍처를 이용할 수도 있다. 다른 예들에서, 디스플레이 프로세서 (14) 는 라인 기반 아키텍처를 이용할 수도 있다. 이러한 예들에서, 디스플레이 프로세서 (14) 는 라인 기반 디스플레이 프로세싱 및 타일 기반 디스플레이 프로세싱을 위한 본 개시의 하나 이상의 기법들을 구현하도록 구성될 수도 있다.
일부 예에서, 타일은 높이 및 폭을 포함하는 픽셀들의 영역 표현이며, 높이는 하나 이상의 픽셀들이고 폭은 하나 이상의 픽셀들이다. 이러한 예들에서, 타일들은 사실상 직사각형 또는 정사각형일 수도 있다. 다른 예들에서, 타일은 정사각형 또는 직사각형과는 상이한 형상일 수도 있다. 디스플레이 프로세서 (14) 는 메모리 (예를 들어, GPU 가 픽셀 표현 및/또는 다른 메모리의 형태로 그래픽 데이터를 출력하는 프레임 버퍼) 로부터 복수의 이미지 계층들 (예를 들면, 포어그라운드 및 백그라운드) 을 프리-페치 또는 페치할 수도 있다. 디스플레이 프로세서 (14) 는 다수의 계층들로부터 픽셀들을 프로세싱할 수도 있다. 디스플레이 프로세서 (14) 에 의해 수행될 수도 있는 예시적인 프로세싱은 업샘플링, 다운샘플링, 스케일링, 회전 및 다른 픽셀 프로세싱을 포함할 수도 있다. 예를 들어, 디스플레이 프로세서 (14) 는 포어그라운드 이미지 계층들 및/또는 백그라운드 이미지 계층들과 연관된 픽셀들을 프로세싱할 수도 있다. 디스플레이 프로세서 (14) 는 다수의 계층들으로부터의 픽셀들을 블렌딩할 수 있고 블렌딩된 픽셀들을 타일 포맷으로 메모리 내에 라이트백할 수도 있다. 그 후, 블렌딩된 픽셀들은 래스터 형식으로 메모리로부터 판독되고 프리젠테이션을 위하여 디스플레이 (8) 로 전송된다.
비디오 코덱 (7) 은 인코딩된 비디오 데이터를 수신할 수도 있다. 컴퓨팅 디바이스 (2) 는 소스 디바이스 (예를 들어, 데이터를 인코딩하거나 인코딩된 비디오 데이터를 서버와 같은 컴퓨팅 디바이스 (2) 로 달리 송신하는 디바이스) 로부터 인코딩된 비디오 데이터를 수신할 수도 있다. 다른 예들에서, 컴퓨팅 디바이스 (2) 는 그 자체로 인코딩된 비디오 데이터를 생성할 수도 있다. 예를 들어, 컴퓨팅 디바이스 (2) 는 정지 영상 또는 비디오를 캡처하기 위한 카메라를 포함할 수도 있다. 캡처된 데이터 (예를 들어, 비디오 데이터) 는 비디오 코덱 (7) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 데이터는 비디오 데이터를 디코딩할 때 비디오 코덱 (7) 과 같은 비디오 디코더에 의한 이용을 위하여, 비디오 인코더에 의해 생성된 다양한 신택스 엘리먼트들을 포함할 수도 있다. 비디오 코덱 (7) 은 본원에서 비디오 인코더 및 비디오 디코더 양쪽인 것으로서 설명되어 있지만, 비디오 코덱 (7) 은 다른 예들에서는 인코딩 기능이 없는 비디오 디코더일 수도 있음을 이해해야 한다. 비디오 코덱 (7) 에 의해 디코딩된 비디오 데이터는 디스플레이 프로세서 (14) 에 직접 전송될 수도 있거나 또는 디스플레이 (8) 로 직접 전송될 수도 있거나, 또는 디스플레이 프로세서 (14) 또는 GPU (12), 이를 테면, 시스템 메모리 (10), 출력 버퍼 (16) 또는 버퍼 (17) 에 액세스가능한 메모리에 전송될 수도 있다. 도시된 예에서, 비디오 코덱 (7) 은 디스플레이 프로세서 (14) 에 접속되며, 이는 디코딩된 비디오 데이터가 디스플레이 프로세서 (14) 로 직접 전송되고/되거나 디스플레이 프로세서 (14) 에 액세스가능한 메모리에 저장되는 것을 의미한다. 이러한 예에서, 디스플레이 프로세서 (14) 는 GPU (12) 와 연관된 메모리 (예를 들어, 출력 버퍼 (16)) 로부터 그래픽 (정지 영상 또는 비디오) 데이터를 얻기 위해 하나 이상의 메모리 요청들을 발행할 때와 유사한 방식으로 메모리로부터 디코딩된 비디오 데이터를 얻기 위해 하나 이상의 메모리 요청들을 발행할 수도 있다.
트랜시버 (3), 비디오 코덱 (7) 및 디스플레이 프로세서 (14) 는 CPU (6) 및/또는 GPU (12) 와 동일한 집적 회로 (IC) 의 일부일 수도 있고, CPU (6) 및/또는 GPU (12) 를 포함하는 IC 또는 IC들의 외부에 있을 수도 있거나, 또는 CPU (6) 및/또는 GPU (12) 를 포함하는 IC 외부에 있는 IC 에 형성될 수도 있다. 예를 들어, 비디오 코덱 (7) 은 임의의 다양한 적절한 인코더 회로부, 이를 테면, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적 회로들 (application specific integrated circuits; ASICs), 필드 프로그램가능 게이트 어레이들 (FPGAs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로서 구현될 수도 있다.
디스플레이 프로세서 (14) 는 적어도 하나의 메모리 (예를 들어, CPU (6) 의 온-칩 메모리, 비디오 코덱 (7) 의 온-칩 메모리, GPU (12) 의 온-칩 메모리, DSP (11) 의 온-칩 메모리, 출력 버퍼 (16), 출력 버퍼 (17), 시스템 메모리 (10), 임의의 다른 메모리, 또는 이들의 임의의 조합) 로부터 다수의 이미지 계층들 (예를 들어, 포어그라운드 및 백그라운드 계층들) 을 페치/프리-페치할 수도 있다. 다수의 이미지 계층들은 포어그라운 계층들 및 백그라운드 계층들을 포함할 수도 있다. 본원에서 이용되는 용어 "이미지"는 정지 영상만을 의미하도록 의도되지 않는다. 다만, 이미지 또는 이미지 계층은 정지 영상 (예를 들어, 블렌딩될 때 이미지 또는 이미지 계층들이 이미지일 수도 있음) 또는 비디오 (예를 들어, 블렌드될 때 이미지 또는 이미지 계층들은, 보여졌을 때 동영상 또는 비디오를 시퀀스로 생성하는 이미지들의 시퀀스에서의 단일 이미지일 수도 있음) 와 연관될 수도 있다.
포어그라운드 이미지 계층 (또는 간단히 포어그라운드 이미지) 및 백그라운드 이미지 계층 (또는 간단히 백그라운드 이미지) 가 임의의 비주얼 컨텐츠일 수도 있다. 예를 들어, 포어그라운드 이미지는 비디오 데이터를 구성할 수도 있고 백그라운드 이미지는 그래픽 데이터를 구성할 수도 있다. 이러한 예에서, 포어그라운드 이미지는 GPU (12) 에 의해 생성될 수도 있거나 (예를 들어, 인코딩된 비디오 데이터 또는 인코딩된 이미지 데이터를 디코딩함으로써) 비디오 코덱 (7) 에 의해 생성될 수도 있다. 배그라운드 이미지는 예를 들어 GPU (12) 에 의해 생성될 수도 있다. 다른 예들에서, 백그라운드 이미지는 (예를 들어, 인코딩된 비디오 데이터 또는 인코딩된 이미지 데이터를 디코딩함으로써) 비디오 코덱 (7) 에 의해 생성될 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 에 의해 프로세싱된 포어그라운드 이미지 및 백그라운드 이미지는 프레임 버퍼 (예를 들어, 출력 버퍼 (16)) 로부터 판독된다. 다른 예들에서, 포어그라운드 이미지는 그래픽 데이터를 구성할 수도 있고 백그라운드 이미지는 그래픽 데이터를 구성할 수도 있다.
일부 예들에서, 포어그라운드 이미지 계층은 비디오 데이터 및/또는 그래픽 데이터를 지원할 수도 있다. 이러한 예들에서, 포어그라운드 이미지 계층은 비디오 데이터에 대한 YUV 컬러 포맷 (예를 들어, YCbCr 컬러 포맷, YUV420 의사플래너 포맷, YUV422 의사플래너 포맷, YUV444 플래너 컬러 포맷, YUYV 인터리브 컬러 포맷 및 YUV 컬러 포맷) 에 따를 수도 있다. 포어그라운드 이미지 계층은 그래픽 데이터의 적색, 녹색, 청색 (RGB) 컬러 포맷 (예를 들어, ARGB8888, RGB888, RGB444, RGB565, 및 다른 RGB 또는 RGBA 컬러 포맷) 을 따를 수도 있다.
적색, 녹색, 청색, 알파 (RGBA) 컴포넌트들에서, 각각의 픽셀에 대해, "RGB" 컴포넌트들은 컬러 값들에 대응하고, "A" 컴포넌트는 목적지 알파 값에 대응한다. 다른 예로서, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 YCbCr 컬러 포맷, YUV 컬러 포맷, RGB 컬러 포맷에 따라, 또는 임의의 다른 컬러 포맷에 따라 픽셀 데이터를 저장할 수도 있다.
컴퓨팅 디바이스 (2) 는, 명확화를 위해 도 1 에 도시되지 않은 부가적인 모듈들 또는 유닛들을 포함할 수도 있다. 예를 들어, 컴퓨팅 디바이스 (2) 가 모바일 무선 전화이거나, 컴퓨팅 디바이스 (2) 가 미디어 플레이어인 경우의 스피커인 예들에서 전화 통신을 실시하도록 마이크로폰 또는 및 스피커 (도 1 에는 둘다 도시되어 있지 않음) 을 포함할 수도 있다. 컴퓨팅 디바이스 (2) 는 또한 카메라를 포함할 수도 있다. 또한, 컴퓨팅 디바이스 (2) 에 도시된 다양한 모듈 및 유닛은 컴퓨팅 디바이스 (2) 의 모든 예에서 필요하지 않을 수도 있다. 예를 들어, 사용자 인터페이스 (4) 및 디스플레이 디바이스 (8) 는 컴퓨팅 디바이스 (2) 가 데스크톱 컴퓨터이거나 외부 사용자 인터페이스 또는 디스플레이와 인터페이스하도록 장착된 다른 디바이스인 예에서 컴퓨팅 디바이스 (2) 의 외부에 있을 수도 있다.
사용자 인터페이스 (4) 의 예는 트랙볼, 마우스, 키보드 및 다른 유형의 입력 디바이스를 포함하지만 이에 한정되지 않는다. 사용자 인터페이스 (4) 는 터치스크린일 수도 있고 디스플레이 디바이스 (8) 의 일부로서 통합될 수도 있다. 트랜스시버 (3) 는, 컴퓨팅 디바이스 (2) 및 네트워크 상의 다른 디바이스 사이의 무선 또는 유선 통신을 허용하는 회로부를 포함할 수도 있다. 트랜스시버 (3) 는 변조기들, 복조기들, 증폭기들 및 유선 또는 무선 통신을 위한 다른 이러한 회로부를 포함할 수도 있다. 일부 예들에서, 트랜시버 (3) 는 CPU (6) 와 통합될 수도 있다.
CPU (6) 는 실행을 위해 컴퓨터 프로그램의 명령들을 프로세싱하도록 구성된 중앙 프로세싱 유닛 (CPU) 과 같은 마이크로프로세서일 수도 있다. CPU (6) 는 컴퓨팅 디바이스 (2) 의 동작을 제어하는 범용 또는 특수 목적 프로세서를 포함할 수도 있다. 사용자는 CPU (6) 로 하여금 하나 이상의 소프트웨어 애플리케이션들, 이를 테면, 소프트웨어 애플리케이션 (18) 을 실행하게끔 하는 입력을 컴퓨팅 디바이스 (2) 에 제공할 수도 있다. CPU (6) 상에서 실행하는 소프트웨어 애플리케이션들 (예를 들어, 소프트웨어 애플리케이션 (18)) 은 예를 들어, 오퍼레이팅 시스템, 워드 프로세서 애플리케이션, 이메일 애플리케이션, 스프레드시트 애플리케이션, 미디어 플레이어 애플리케이션, 비디오 게임 애플리케이션, 그래픽 사용자 인터페이스 애플리케이션 또는 2D 또는 3D 그래픽들에 대한 그래픽 데이터를 이용하는 다른 유형의 소프트웨어 애플리케이션을 포함할 수도 있다. 추가로, CPU (6) 는 GPU (12) 의 동작을 제어하기 위하여 GPU 드라이버 (22) 를 실행시킬 수도 있다. 사용자는 하나 이상의 입력 디바이스들 (도시 생략), 이를 테면, 키보드, 마우스, 마이크로 폰, 터치 패드, 또는 사용자 입력 인터페이스 (4) 를 통하여 컴퓨팅 디바이스 (2) 에 커플링되는 다른 입력 디바이스를 통하여 컴퓨팅 디바이스 (2) 에 입력을 제공할 수도 있다.
CPU (6) 를 실행시키는 소프트웨어 애플리케이션 (18) 은 디스플레이 디바이스 (8) 에 대한 그래픽 데이터의 렌더링을 발생시키도록 CPU (6) 에 명령하는 하나 이상의 그래픽 렌더링 애플리케이션들을 포함할 수도 있다. 명령들은 3D 그래픽들을 프로세싱하는 명령들과 2D 그래픽들을 프로세싱하는 명령들을 포함할 수도 있다. 일부 예들에서, 소프트웨어 명령들은 그래픽 애플리케이션 프로그래밍 인터페이스 (graphics application programming interface; API), 이를 테면, Open Graphics Library (OpenGL®) API, Open Graphics Library Embedded Systems (OpenGL ES) API, Direct3D API, X3D API, RenderMan API, WebGL API, Open Computing Language (OpenCL™) 또는 임의의 다른 공용 또는 독점적인 표준 GPU 컴퓨팅 API 에 따를 수도 있다. CPU (6) 상에서 실행하는 소프트웨어 애플리케이션 (18) 의 그래픽 렌더링 명령들을 프로세싱하기 위하여, CPU (6) 는 소프트웨어 애플리케이션 (18) 의 실행 동안, GPU (12) 로 하여금 그래픽 데이터의 렌더링의 일부 또는 전부를 수행하게끔 하도록 하나 이상의 그래픽 렌더링 커맨드들을 GPU (12) 에 (예를 들어, GPU 드라이버 (22) 를 통하여) 발행할 수도 있다. 일부 예들에서, 렌더링될 그래픽 데이터는 그래픽 프리미티브들의 리스트, 예를 들어, 점, 선, 삼각형, 사각형들, 트라이앵글 스트립들 등을 포함할 수도 있다.
소프트웨어 애플리케이션 (18) 은 그래픽 사용자 인터페이스 (GUI) 및/또는 그래픽 신, 그래픽 데이터, 또는 다른 그래픽 관련 데이터를 렌더링하도록 GUI (12) 에 명령하는 하나 이상의 드로잉 명령들을 포함할 수도 있다. 예를 들어, 드로잉 명령들은 GPU (12) 에 의해 렌더링될 하나 이상의 그래픽 프리미티브들의 세트를 정의하는 명령들을 포함할 수도 있다. 일부 예들에서, 드로잉 명령들은 GUI 에 이용되는 복수의 윈도잉 서피스들의 전부 또는 일부를 총괄적으로 정의할 수도 있다. 추가 예들에서, 드로잉 명령들은 애플리케이션에 의해 정의된 모델 공간 또는 실제 공간 내에서 하나 이상의 그래픽 오브젝트들을 포함하는 그래픽 장면의 전부 또는 일부를 총괄적으로 정의할 수도 있다.
GPU (12) 는 하나 이상의 그래픽 프리미티브들을 디스플레이 디바이스 (8) 에 렌더링하기 위해 그래픽 동작들을 수행하도록 구성될 수도 있다. 따라서, CPU (6) 상에서 실행하는 소프트웨어 애플리케이션 (18) 이 그래픽 프로세싱을 요구할 때, CPU (6) 는 디스플레이 디바이스 (8) 에 렌더링하기 위해 GPU (12) 에 그래픽 데이터와 함께 그래픽 커맨드들을 제공할 수도 있다. 그래픽 데이터는 예를 들어, 드로잉 커맨드들, 스테이트 정보, 프리미티브 정보, 텍스쳐 정보 등을 포함할 수도 있다. GPU (12) 는 일부 경우에, CPU (6) 보다 더 효율적인 복잡한 그래픽 관련 동작들의 프로세싱을 제공하는 고병렬 구조 (highly-parallel structure) 로 구축될 수도 있다. 예를 들어, GPU (12) 는 병렬 방식으로 다수의 버텍스들 또는 픽셀들 상에서 동작하도록 구성된 복수의 프로세싱 엘리먼트들, 이를 테면, 쉐이더 유닛들을 포함할 수도 있다. GPU (12) 의 고병렬 특성은 일부 경우에, CPU (6) 를 이용하여, 장면을 직접 디스플레이 디바이스 (8) 에 드로잉하는 것보다 더 신속하게, GPU (12) 로 하여금 그래픽 이미지들 (예를 들어, GUI들 및 2 차원 (2D) 및/또는 3차원 (3D) 그래픽 장면들) 을 디스플레이 디바이스 (8) 상에 드로잉하게 허용할 수도 있다.
소프트웨어 애플리케이션 (18) 은 GPU 드라이버 (22) 를 인보크하여, 하나 이상의 그래픽 프리미티브들을 디스플레이가능 그래픽 이미지들 (예를 들어, 디스플레이 가능한 그래픽 데이터) 로 렌더링하기 위한 하나 이상의 커맨드들을 GPU (12) 에 발행할 수도 있다. 예를 들어, 소프트웨어 애플리케이션 (18) 은 GPU 드라이버 (22) 를 인보크하여 GPU (12) 에 프리미티브 정의들을 제공할 수도 있다. 일부 예들에서, 프리미티브 정의들은 그래픽 프리미티브들의 리스트, 예를 들어, 삼각형, 사각형들, 삼각형 팬들, 삼각형 스트립들 등의 형태로 GPU (12) 에 제공될 수도 있다. 프리미티브 정의들은 렌더링될 프리미티브들과 연관된 하나 이상의 버텍스들을 특정하는 버텍스 사양들을 포함할 수도 있다. 버텍스 사양들은 각각의 버텍스에 대한 포지셔널 좌표들, 및 일부 경우에 버텍스와 연관된 다른 속성들, 이를 테면, 예를 들어, 컬러 좌표, 법선 벡터들, 및 텍스쳐 좌표들을 포함할 수도 있다. 프리미티브 정의들은 또한 프리미티브 유형 정보 (예를 들어, 삼각형, 사각형, 삼각형 팬, 삼각형 스트립 등), 스케일링 정보, 회전 정보 등을 포함할 수도 있다.
소프트웨어 애플리케이션 (18) 에 의해 GPU 드라이버 (22) 에 발행된 명령들에 기초하여, GPU 드라이버 (22) 는 프리미티브를 렌더링하기 위해 GPU (12) 가 수행하는 하나 이상의 동작들을 특정하는 하나 이상의 커맨드들을 퍼뮬레이션할 수도 있다. GPU (12) 가 CPU (6) 로부터 커맨드를 수신할 때, 그래픽 프로세싱 파이프라인은 GPU (12) 의 쉐이더 프로세서들 상에서, 커맨드를 디코딩하고, 커맨드에서 특정된 동작을 수행하도록 그래픽 프로세싱 파이프라인을 구성하도록 실행할 수도 있다. 예를 들어, 그래픽 프로세싱 파이프라인의 입력-어셈블러는 프리미티브 데이터를 판독하고 그래픽 프로세싱 파이프라인에서 다른 그래픽 파이프라인 스테이지에 의해 이용하기 위한 프리미티브들로 데이터를 어셈블리할 수 있다. 특정된 동작들을 수행한 후, 그래픽 프로세싱 파이프라인은 디스플레이 디바이스 (14) 와 액세스가능한 출력 버퍼 (16) 에 렌더링된 데이터를 출력한다. 일부 예들에서, 3D 그래픽 프로세싱 파이프라인은 고정된 기능 로직을 포함할 수 있고/있거나 프로그래밍가능한 쉐이더 코어 상에서 실행될 수도 있다.
출력 버퍼 (16) 는 GPU (12) 에 대한 목적지 픽셀들을 저장한다. 각각의 목적지 픽셀은 고유의 스크린 픽셀 로케이션과 연관될 수도 있다. 이와 유사하게, 출력 버퍼 (17) 는 예에 따라 비디오 코덱 (7) 에 대한 목적지 픽셀들을 저장할 수도 잇다. 출력 버퍼 (17) 는 비디오 코덱 (7) 과 연관된 프레임 버퍼로서 고려될 수도 있다. 일부 예들에서, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 각각의 목적지 픽셀에 대해 컬러 성분들 및 목적지 알파 값을 저장할 수도 있다. 예를 들어, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 임의의 포맷에 따라 픽셀 데이터를 저장할 수도 있다. 예를 들어, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 각각의 픽셀에 대해 RGBA (Red, Green, Blue, Alpha) 성분들을 저장할 수도 있고, 여기에서, "RGB" 성분들은 컬러 값들에 대응하고, "A" 성분은 목적지 알파 값에 대응한다. 다른 예로서, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 YCbCr 컬러 포맷, YUV 컬러 포맷, RGB 컬러 포맷에 따라, 또는 임의의 다른 컬러 포맷에 따라 픽셀 데이터를 저장할 수도 있다. 출력 버퍼 (16) 및 시스템 메모리 (10) 가 별도의 메모리 유닛들로서 예시되어 있지만, 다른 예들에서는 출력 버퍼 (16) 는 시스템 메모리 (10) 의 일부일 수도 있다. 예를 들어, 출력 버퍼 (16) 는 시스템 메모리 (10) 에서 메모리 공간을 할당받을 수도 있다. 출력 버퍼 (16) 는 프레임 버퍼를 구성할 수도 있다. 또한, 위에 논의된 바와 같이, 출력 버퍼 (16) 는 또한 픽셀 이외의 임의의 적절한 데이터를 또한 저장가능할 수도 있다.
이와 유사하게, 출력 버퍼 (17) 및 시스템 메모리 (10) 가 별도의 메모리 유닛들로서 예시되어 있지만, 다른 예들에서는 출력 버퍼 (17) 는 시스템 메모리 (10) 의 일부일 수도 있다. 예를 들어, 출력 버퍼 (17) 는 시스템 메모리 (10) 에서 메모리 공간을 할당받을 수도 있다. 출력 버퍼 (17) 는 비디오 코덱 버퍼 또는 프레임 버퍼를 구성할 수도 있다. 추가로, 위에 논의된 바와 같이, 출력 버퍼 (17) 는 또한 픽셀 이외의 임의의 적절한 데이터를 또한 저장가능할 수도 있다. 일부 예들에서, 출력 버퍼 (16) 및 출력 버퍼 (17) 는 별도의 메모리 유닛들로서 예시되어 있지만, 출력 버퍼 (16) 및 출력 버퍼 (17) 는 동일한 버퍼일 수도 있거나 또는 동일한 버퍼의 상이한 부분일 수도 있다.
GPU (12) 는 일부 경우에, 컴퓨팅 디바이스 (2) 의 마더보드 내에 통합될 수도 있다. 다른 사례들에, GPU (12) 는 컴퓨팅 디바이스 (2) 의 마더보드에서의 포트에 설치된 그래픽 카드 상에 존재할 수도 있거나 또는 컴퓨팅 디바이스 (2) 와 상호동작하도록 구성된 주변 디바이스 내에 달리 통합될 수도 있다. 일부 예들에서, GPU (12) 는 시스템 온 칩 (SOC) 에서와 같이 CPU (6) 와 온 칩일 수도 있고, GPU (12) 는 하나 이상의 프로세서들, 이를 테면, 하나 이상의 마이크로프로세서들, 응용 주문형 집적 회로들 (ASIC), 필드 프로그래밍가능 게이트 어레이들 (FPGA), 디지털 신호 프로세서들 (DSP), 또는 다른 등가의 통합된 또는 별도의 논리 회로를 포함할 수도 있다. GPU (12) 는 또한 하나 이상의 프로세서 코어를 포함할 수도 있어, GPU (12) 가 멀티 코어 프로세서로 지칭될 수도 있다.
일부 예들에서, 그래픽 메모리 (20) 는 GPU (12) 의 일부일 수도 있다. 예를 들어, 그래픽 메모리 (20) 는 GPU (12) 의 집적 회로 칩에 물리적으로 통합된 온-칩 저장부 또는 메모리일 수도 있다. 그래픽 메모리 (20) 가 온-칩이면, GPU (12) 는 시스템 버스를 통해 시스템 메모리 (10) 로부터 값을 판독하거나 시스템 메모리를 통해 값을 기록하는 것보다 더욱 신속하게 그래픽 메모리 (20) 로부터 값을 판독하거나 그래픽 메모리 (20) 에 값을 기록할 수도 있다. 따라서, GPU (12) 는 버스를 이용하지 않고 그래픽 메모리 (20) 로부터 데이터를 판독하고 그래픽 메모리 (20)에 데이터를 기록할 수도 있다. 즉, GPU (12) 는 오프칩 메모리 대신에, 로컬 저장부를 이용하여 국부적으로 데이터를 프로세싱할 수도 있다. 이러한 그래픽 메모리 (20) 는 온-칩 메모리로 지칭될 수도 있다. 이는 GPU (12) 가 과도한 버스 트래픽 및 대역폭에 대한 관련 경합을 경험할 수도 있는 버스를 통해 데이터를 판독하고 기록하기 위해 GPU (12) 의 필요성을 제거하는 것에 의해 보다 효율적인 방식으로 동작하게 한다. 그러나, 일부 경우에, GPU (12) 는 버스를 통하여 시스템 메모리 (10) 를 이용하는 대신에 별도의 메모리를 포함하지 않을 수도 있다. 그래픽 메모리 (20) 는 하나 이상의 휘발성 또는 비휘발성 메모리들, 또는 저장 디바이스들, 이를 테면, 예를 들어, 랜덤 액세스 메모리 (RAM), 정적 RAM (SRAM), 동적 RAM (DRAM), 소거가능 프로그래밍가능 ROM (EPROM), 전기적 소거가능 프로그래밍가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체, 또는 광학 저장 매체를 포함할 수도 있다.
일부 예에서, GPU (12) 는 완전히 형성된 이미지를 시스템 메모리 (10) 에 저장할 수도 있다. 디스플레이 프로세서 (14) 는 시스템 메모리 (10) 및/또는 출력 버퍼 (16) 로부터 이미지를 취출할 수도 있고, 디스플레이 디바이스 (8) 의 픽셀이 이미지를 디스플레이하도록 조명하게 하는 출력 값을 취출할 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 는 스케일링, 회전, 블렌딩 및 작성을 포함한, 디스플레이될 데이터에 대해 2D 동작들을 수행하도록 구성될 수도 있다. 디스플레이 디바이스 (8) 는 GPU (12) 에 의해 생성된 이미지 콘텐츠를 디스플레이하는 컴퓨팅 디바이스 (2) 의 디스플레이일 수도 있다. 디스플레이 디바이스 (8) 는 액정 디스플레이 (LCD), 유기 발광 다이오드 디스플레이 (OLED), 음극선 관 (CRT) 디스플레이, 플라즈마 디스플레이 또는 다른 유형의 디스플레이 디바이스일 수도 있다. 일부 예들에서, 디스플레이 (8) 는 컴퓨팅 디바이스 (2) 내에 통합될 수도 있다. 예를 들어, 디스플레이 (8) 는 모바일 전화기의 스크린일 수도 있다. 다른 예에서, 디스플레이 (8) 는 유선 또는 무선 통신 링크를 통하여 컴퓨팅 디바이스 (2) 에 커플링된 독립형 디바이스일 수도 있다. 예를 들어, 디스플레이 (8) 는 케이블 또는 무선 링크를 통하여 컴퓨팅 디바이스 (예를 들어, 퍼스널 컴퓨터, 모바일 컴퓨터, 테블릿, 모바일 폰 등 ) 에 접속된 컴퓨터 모니터 또는 플랫 패널 디스플레이일 수도 있다.
CPU (6) 는 컴퓨팅 디바이스 (2) 내의 실행을 위한 명령들을 프로세싱한다. CPU (6) 는 GPU (12) 에 의한 실행을 위하여 드라이버 (예를 들어, CPU (6) 에 의해 실행된 소프트웨어에서 구현될 수도 있는 GPU 드라이버 (22)) 를 이용하여 커맨드 스트림을 생성할 수도 있다. 즉, CPU (6) 는 GPU (12) 에 의해 수행될 동작들의 세트를 정의하는 커맨드 스트림을 생성할 수도 있다.
CPU (6) 는 디스플레이 (8) 상에 가시성 컨텐츠가 디스플레이되게 하는 GPU (12) 에 의해 실행될 커맨드 스트림을 생성할 수도 있다. 예를 들어, CPU (6) 는 GPU (12) 가 디스플레이 (8) 에서의 디스플레이를 위해 출력 버퍼 (16) 에 저장될 수도 있는 그래픽 데이터를 렌더링하는 명령들을 제공하는 커맨드 스트림을 생성할 수도 있다. 이 예에서, CPU (6) 는 그래픽 렌더링 파이프라인에 의해 실행되는 커맨드 스트림을 생성할 수도 있다.
추가적으로, 또는 대안으로서, CPU (6) 는 GPU (12) 로 하여금 다른 동작들을 수행하게 하는 GPU (12) 에 의해 실행될 커맨드 스트림을 생성할 수도 있다. 예를 들어, 일부 경우들에서, CPU (6) 는 또한 범용 그래픽 프로세싱 유닛 (GPGPU) 로서 GPU (12) 를 이용하기 위하여 커맨드 스트림을 생성하는 호스트 프로세서일 수도 있다. 이러한 식으로, GPU (12) 는 CPU (6) 에 대한 세컨더리 프로세서로서 역할을 할 수도 있다. 예를 들어, GPU (12) 는 CPU (6) 에 의해 전통적으로 수행되는 다양한 범용 컴퓨팅 기능을 수행할 수도 있다. 예들은 비디오 디코딩 및 포스트프로세싱 (예를 들어, 디블로킹, 노이즈 감소, 컬러 수정 등) 및 기타 애플리케이션 특정 이미지 프로세싱 기능 (예를 들어, 얼굴 검출/인식, 패턴 인식, 웨이브렛 변환 등) 을 포함한 여러 이미지 프로세싱 기능들을 포함한다. 일부 예에서, GPU (12) 는 이러한 GPGPU 애플리케이션을 실행하기 위해 CPU (6) 와 협력할 수도 있다. 예를 들어, CPU (6) 는 GPU (12) 에 의한 실행을 위한 커맨드 스트림을 GPU (12) 에 제공함으로써 특정 기능을 GPU (12) 에 오프로드할 수도 있다. 이 예에서, CPU (6) 는 호스트 프로세서일 수도 있고 GPU (12) 는 제 2 프로세서일 수도 있다.
GPU 드라이버 (22) 는 GPU (12) 의 쉐이더 유닛에 의해 실행될 수 있는 하나 이상의 커맨드 스트림을 GPU (12)에 통신할 수도 있다. GPU (12) 는 GPU 드라이버 (22) 로부터 하나 이상의 커맨드 스트림을 수신할 수 있는 커맨드 프로세서 (24) 를 포함할 수도 있다. 커맨드 프로세서 (30) 는 하나 이상의 커맨드 스트림을 수신하고 프로세싱하도록 구성된 하드웨어 및 소프트웨어의 임의의 조합일 수도 있다. 이와 같이, 커맨드 프로세서 (30) 는 스트림 프로세서이다. 일부 예에서, 커맨드 프로세서 (24) 대신에, 임의의 다른 적합한 스트림 프로세서가 하나 이상의 커맨드 스트림을 수신 및 프로세싱하고 여기에 개시된 기술을 수행하기 위해 커맨드 프로세서 (24) 대신에 이용될 수도 있다. 일 예에서, 커맨드 프로세서 (24) 는 하드웨어 프로세서일 수도 있다. 도 1 에 도시된 예에서, 커맨드 프로세서 (24) 는 GPU (12) 에 포함될 수도 있다. 다른 예에서, 커맨드 프로세서 (24) 는 CPU (6) 및 GPU (12) 로부터 분리된 유닛일 수도 있다. 커맨드 프로세서 (24) 는 커맨드들의 스트림 및/또는 동작을 수신하도록 구성된 임의의 프로세서일 수 있음을 나타내기 위해 스트림 프로세서, 커맨드/스트림 프로세서 등으로 알려질 수도 있다.
커맨드 프로세서 (24) 는 GPU (12) 에 의한 실행을 위해 하나 이상의 커맨드 스트림에 포함된 스케줄링 동작을 포함하는 하나 이상의 커맨드 스트림을 프로세싱할 수도 있다. 구체적으로, 커맨드 프로세서 (24) 는 하나 이상의 커맨드 스트림을 프로세싱하고 쉐이더 유닛들 (46) 에 의한 실행을 위해 하나 이상의 커맨드 스트림의 동작을 스케줄링할 수도 있다. 동작시, GPU 드라이버 (22) 는 GPU (12) 에 의해 실행될 일련의 동작들을 포함하는 커맨드 스트림을 커맨드 프로세서 (24) 에 전송할 수도 있다. 커맨드 프로세서 (24) 는 커맨드 스트림을 포함하는 동작 스트림을 수신할 수 있고, 커맨드 스트림에서의 동작 순서에 기초하여 커맨드 스트림의 동작을 순차적으로 프로세싱할 수 있고, 그리고 GPU (12) 의 쉐이더 유닛들의 쉐이더 프로세서들에 의한 실행을 위하여 커맨드 커맨드 스트림의 동작들을 스케줄링할 수도 있다.
디스플레이 프로세서 (14) 는, 예를 들어, 대역폭 낭비를 줄이거나 제거하고, 디스플레이 프로세서 (14) 에 의해 초기에 타일 데이터를 획득하도록 행해진 메모리 요청들의 수를 줄이고/줄이거나 스루풋을 증가시키도록 포어그라운드 및 백그라운드 타일의 병렬 페치를 가능하게 하도록 본원에 설명된 여러 기법들을 구현할 수도 있다. 다양한 다른 이점들이 본원에 설명된 다양한 기술로부터 도출될 수도 있다.
도 2 는 본 개시의 기술에 부합하는 디스플레이 프로세서 (14) 를 나타내는 개념도이다. 디스플레이 프로세서 (14) 는 버스 인터페이스 (102) 와 통신하는 프리-페치 프로세싱 유닛 (100) 을 포함한다. 일부 예들에서, 프리-페치 프로세싱 유닛 (100) 은 외부 메모리 (예를 들어, 시스템 메모리 (10), 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 와 같은 오프칩 메모리) 로의 메모리 어드레스 요청을 생성하는 어드레스 생성기 로직을 갖는 고정된 함수 회로이다. 프리-페치 프로세싱 유닛 (100) 은 생성된 메모리 어드레스에 저장된 외부 메모리로부터 포어그라운드 및 백그라운드 계층 픽셀 데이터를 프리-페치한다.
일부 예들에서, 버스 인터페이스 (102) 는 AXI 프로토콜에 따라 시스템 컴포넌트와 통신하는 AXI (Advanced eXtensible Interface) 인터페이스일 수도 있다. 예를 들어, 버스 인터페이스 (102) 는 AXI 마스터 인터페이스를 구성할 수도 있고 이 인터페이스가 통신하는 컴포넌트들은 AXI 슬레이브들을 구성할 수 있다. 다른 예들에서, 버스 인터페이스 (102) 는 AXI 인터페이스와는 상이한 버스 인터페이스일 수도 있다. 버스 인터페이스 (102) 는 디스플레이 프로세서 (14) 가 GPU (12), 출력 버퍼 (16), 비디오 코덱 (7) 및/또는 시스템 메모리 (10) 와 같은 다른 시스템 컴포넌트들과 통신할 수 있게 할 수 있다. 프리-페치 프로세싱 유닛 (100) 은 공유 메모리 (104) 와 통신한다. 일부 예들에서, 공유 메모리 (104) 는 시스템 메모리 (10) 의 메모리 공간일 수도 있다. 다른 예들에서, 공유 메모리 (104) 는 시스템 메모리 (10) 와는 상이한 외부 메모리 내의 메모리 공간일 수도 있다. 다른 예들에서, 공용 메모리 (104) 는 디스플레이 프로세서 (14)(예를 들어, 온-칩 메모리) 상의 메모리에서의 메모리 공간일 수도 있다. 디스플레이 프로세서 (14) 의 컴포넌트들, 이를 테면, 프리-페치 프로세싱 유닛 (100), 페치 프로세싱 유닛 (110), 픽셀 프로세싱 유닛 (130) 및/또는 블렌드 프로세싱 유닛 (140) 은 예에 따라, 공유 메모리 (104) 에 액세스하도록 필요에 따라 버스 인터페이스를 이용할 수도 있다.
디스플레이 프로세서 (14) 는 백그라운드 타일 데이터를 페치하기 위한 BG 판독 데이터 팩커 (112) 및 포어그라운드 타일 데이터를 페치하기 위한 FG 판독 데이터 팩커 (114) 를 포함하는 페치 프로세싱 유닛 (110) 을 포함할 수 있다. 또한, 페치 프로세싱 유닛 (110) 은 BG 타일 어드레스 생성기 (116) 및 FG 타일 어드레스 생성기 (118) 를 포함한다.
일부 예들에서, FG 판독 데이터 팩커 (114) 및 BG 판독 데이터 팩커 (112) 는 FG 판독 데이터 팩커 (114) 및 BG 판독 데이터 팩커 (112) 양쪽 모두로서 기능하는 동일한 물리적 모듈일 수도 있다. 다른 예들에서, FG 판독 데이터 팩커 (114) 및 BG 판독 데이터 팩커 (112) 는 FG 판독 데이터 팩커 (114) 에 대한 하나의 인스턴스 생성 및 BG 판독 데이터 팩커 (112) 에 대한 하나의 인스턴스 생성과 같이 2 번 인스턴스화되는 동일한 물리적 모듈일 수도 있다. 이러한 예에서 각 인스턴스화는 동일한 고정 함수 회로부를 갖는 별도의 물리적 모듈이다.
일부 예들에서, FG 타일 어드레스 생성기 (118) 및 BG 타일 어드레스 생성기 (116) 는 FG 타일 어드레스 생성기 (118) 및 BG 타일 어드레스 생성기 (116) 양쪽 모두로서 기능하는 동일한 물리적 모듈일 수도 있다. 다른 예들에서, FG 타일 어드레스 생성기 (118) 및 BG 타일 어드레스 생성기 (116) 는 FG 타일 어드레스 생성기 (118) 에 대한 하나의 인스턴스화 및 BG 타일 어드레스 생성기 (116) 에 대한 하나의 인스턴스화와 같은 2 번 인스턴스화되는 동일한 물리적 모듈일 수도 있다. 이러한 예에서 각 인스턴스화는 동일한 고정 함수 회로부를 갖는 별도의 물리적 모듈이다.
일부 예에서, 공유 메모리 (104) 는 64 픽셀 × 높이 (H) 픽셀의 고정 패턴으로 프리-페치 프로세싱 유닛 (100) 에 의해 충전되거나 달리 기록된다. 페치 프로세싱 유닛 (110) 은 다운 스트림 프로세싱을 위해 공유 메모리 (104) 로부터의 포어그라운드 타일 데이터의 각 라인을 팩킹하기 위해 공유 메모리 (104) 로부터 타일 데이터를 판독할 수도 있다. 다운스트림 프로세싱은 예를 들어, 픽셀 프로세싱 유닛 (130) 및/또는 블렌드 프로세싱 유닛 (140) 에 의해 수행되는 임의의 프로세싱을 포함할 수도 있다. FG 타일 어드레스 생성기 (118) 는 W 가 64 픽셀보다 작거나 같거나 또는 더 클 수 있는 폭 (W) x 높이 (H) 픽셀의 차원을 갖는 포어그라운드 타일을 페치하는데 이용되는 메모리 어드레스를 생성할 수도 있다. FG 타일 어드레스 생성기 (118) 에 의해 생성된 어드레스를 이용하여, FG 판독 데이터 팩커 (114) 는 공유 메모리 (104) 로부터 포어그라운드 타일 데이터를 판독하고 포어그라운드 타일 데이터의 각 라인을 팩킹할 수도 있다. 일단 팩킹되면, FG 판독 데이터 팩커 (114) 는 프로세싱을 위해 각각의 팩킹된 라인을 다운스트림으로 전송할 수 있다.
FG 타일 어드레스 생성기 (118) 와 유사하게, BG 타일 어드레스 생성기 (116) 는 16 픽셀 × 16 픽셀의 차원을 갖는 백그라운드 타일을 페치하는데 이용되는 메모리 어드레스를 생성할 수도 있다. 다른 예에서, BG 타일 어드레스 생성기 (116) 는 폭 (W) x 높이 (H) 픽셀의 차원을 갖는 백그라운드 타일을 페치하는데 이용되는 메모리 어드레스를 생성할 수도 있다.
일부 예에서, 공유 메모리 (104) 의 판독 및 기록 인터페이스는 64 비트이며, 이는 64 비트의 포어그라운드 타일 데이터가 공유 메모리 (104) 에 한번에 기록 및/또는 판독될 수 있음을 의미한다. 프리-페치 프로세싱 유닛 (100) 은 외부 메모리 (예를 들어, 시스템 메모리 (10), 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 와 같은 오프 칩 메모리) 로부터 64 비트 청크로 데이터를 판독할 수도 있다. 프리-페치 프로세싱 유닛 (100) 은 64 비트 청크의 픽셀 데이터를 공유 메모리 (104) 에 저장한다. 픽셀 데이터의 단일 64 비트 라인의 각각의 비트는 실제 포어그라운드 타일 데이터의 한 라인에 대응할 수도 있거나 또는 대응하지 않을 수도 있다. 이러한 비대응성은, 예를 들어, 64 비트 라인이 하나 이상의 포어그라운드 타일에 대한 픽셀 데이터를 포함하는 경우에 발생할 수도 있다. FG 판독 데이터 팩커 (114) 및 BG 판독 데이터 팩커 (112) 각각은 FG 타일 어드레스 생성기 (118) 및 BG 타일 어드레스 생성기 (116) 에 의해 정당하게 생성된 어드레스를 이용하여 공유 메모리 (104) 로부터 타일에 대해 요청된 픽셀 데이터를 판독한다. FG 판독 데이터 팩커 (114) 및 BG 판독 데이터 팩커 (112) 는 각각 사이즈 W × H 의 포어그라운드 타일 및 사이즈 W × H 의 백그라운드 타일을 형성한다. 일부 예에서, BG 판독 데이터 팩커 (112) 에 의해 형성된 백그라운드 타일의 사이즈는 16 픽셀 x 16 픽셀로 고정된다.
BG 판독 데이터 팩커 (112), FG 판독 데이터 팩커 (114), BG 타일 어드레스 생성기 (116) 및 FG 타일 어드레스 생성기 (118) 는 각각 페치 시퀀스 제어기 (120) 와 통신한다. 페치 시퀀스 제어기 (120) 는 BG 판독 데이터 팩커 (112), FG 판독 데이터 팩커 (114), BG 타일 어드레스 생성기 (116) 및 FG 타일 어드레스 생성기 (118) 에 명령들을 발행하거나 이들로부터의 명령들에 응답할 수도 있다. 이와 유사하게, BG 판독 데이터 팩커 (112), FG 판독 데이터 팩커 (114), BG 타일 어드레스 생성기 (116) 및 FG 타일 어드레스 생성기 (118) 각각은 패치 시퀀스 제어기 (120) 에 명령들을 발행하거나 명령들에 응답할 수도 있다.
일부 예에서, 페치 시퀀스 제어기 (120) 는 그래픽 데이터의 프레임에 대응하는 각각의 평면의 페치 시퀀스를 제어한다. 예를 들어, YUV 포맷화된 형식의 이미지 프레임은 단일 평면 (인터리브 포맷으로 지칭됨), 2 개의 평면 (의사 플래너 포맷으로 지칭됨) 또는 3 개의 평면들 (플래너 포맷으로 지칭됨) 으로서 DDR 에 저장될 수도 있다. 이러한 예들에서, 포맷에 의존하여, 각각의 프레임과 연관된 최대 3 개의 평면이 있을 수 있다. 예를 들어, 포어그라운드 타일의 경우에, 하나 이상의 데이터 평면들이 페치될 수도 있다. 페치 시퀀스 제어기 (120) 는, 하나 이상의 평면의 각각이 각각의 포어그라운드 타일 및 백그라운드 타일에 대해 공유 메모리 (104) 로부터 페치되도록 보장할 수도 있다. 컬러 포맷에 따라, 페치 시퀀스 제어기 (120) 는 페칭 동안 하나 이상의 컬러 채널들을 하나 이상의 평면들로 인터리브하도록 구성될 수도 있다. 일부 예들에서, 임의의 다운스트림 프로세싱 (예를 들어, 픽셀 프로세싱 유닛 (130) 에 의해 수행된 다운스트림 프로세싱) 은 각각의 픽셀의 컴포넌트이기 보다는 각각의 픽셀 상에서 수행될 수도 있다. 이를 위하여, 페치 시퀀스 제어기 (120) 는 각각의 타일에 대응하는 각각의 평면이 페칭되는 방법을 제어할 수도 있다. 예를 들어, 페치 시퀀스 제어기 (120) 는 각각의 타일에 대응하는 각각의 평면의 순차적 페칭을 제어할 수도 있다. 다른 예로서, 페치 시퀀스 제어기는 둘 이상의 평면들의 인터리브된 페칭을 제어할 수도 있다. 이 예에서, 페치 시퀀스 제어기 (120) 는 Cb 및 Cr 평면들 각각의 라인을 패치하는 것 간을 교번할 수도 있다. 다른 예로서, 페치 시퀀스 제어기 (120) 는 상이한 컬러 채널들이 인터리브되는 RGB 컬러 포맷되는 타일에 대하여 단일 평면을 페치할 수도 있다. 다른 예로서, 페치 시퀀스 제어기 (120) 는 UV 컬러 포맷 또는 YUV 플러스 알파 컬러 포맷에 따르는 타일의 경우에 3 개의 평면들을 페치하도록 구성될 수도 있다.
타일 데이터의 페칭 시퀀스를 제어하는 것에 더하여, 페치 시퀀스 제어기 (120) 는 각각의 평면에 대해 페치될 입력 타일 사이즈를 생성할 수도 있다. 일 예로서, 페치 시퀀스 제어기는 스케일 비 및 포맷에 기초하여 Y, Cb, 및 Cr 평면에 대해 페칭될 입력 타일 사이즈를 생성할 수도 있다. 페치 시퀀스 제어기 (120) 는 또한, FG 타일 어드레스 생성기 (118) 및 BG 타일 어드레스 생성기 (116) 가 어드레스들을 발생시 이용하는 메모리 포인터들을 업데이트할 수도 있고, 이 어드레스들로부터 FG 판독 데이터 팩커 (114) 및 BG 판독 데이터 팩커 (112) 가 공유 메모리 (104) 로부터 타일 데이터를 판독한다.
페치 프로세싱 유닛 (110) 은 공유 메모리 (104) 에 저장된 프리-페치된 포어그라운드 및 프리-페치된 백그라운드 타일의 페칭을 제어하도록 구성될 수도 있다. 페치 프로세싱 유닛 (110) 에 관한 추가적인 세부사항은 본 개시 전반에 걸쳐 제공된다.
공유 메모리 (104) 가 프리-페치 프로세싱 유닛 (100) 과 페치 프로세싱 유닛 (110) 사이에 위치되는 것으로서 도시되어 있지만, 도 2 는 개념도인 것으로 이해된다. 따라서, 일부 예들에서, 공유 메모리 (104) 의 이러한 배치는 이와 같이 존재할 수도 있다. 그러나, 다른 예들에서, 공유 메모리 (104) 는 도 2 에 도시된 바와 같이 배치될 수도 또는 배치되지 않을 수도 있다. 그러나, 모든 예들 간의 하나의 공통성은 프리-페치 프로세싱 유닛 (100) 및 페치 프로세싱 유닛 (110) 이 직접적이든 또는 간접적이든 (예를 들어, 다른 컴포넌트를 통하여 간접적으로) 간에 공유 메모리 (104) 와 통신하고 있다는 것이다.
디스플레이 프로세서 (14) 는 픽셀 프로세싱 (예를 들어, 업스케일링, 다운스케일링, 및 다른 픽셀 프로세싱) 을 수행하도록 구성된 픽셀 프로세싱 유닛 (130) 을 포함할 수도 있다. 디스플레이 프로세서 (14) 는 블렌드 프로세싱 유닛 (140) 을 포함할 수도 있다. 블렌드 프로세싱 유닛 (140) 은 디스플레이, 이를 테면, 디스플레이 (8) 에 대한 프리젠테이션을 위한 블렌딩된 타일 데이터를 생성하도록 백그라운드 타일 데이터와 포어그라운드 타일 데이터를 블렌딩하도록 구성될 수도 있다. 예를 들어, 포어그라운드 타일 데이터 및 백그라운드 타일 데이터는 포어그라운드 이미지 계층 및 백그라운드 이미지 계층의 부분으로서 각각 간주될 수도 있다. 블렌딩 프로세싱 유닛 (140) 은 블렌딩된 이미지 계층을 생성하도록 포어그라운드 이미지 계층 및 백그라운드 이미지 계층의 타일들을 함께 블렌딩할 수도 있다. 블렌딩된 이미지 계층은 디스플레이를 위한 프레임을 형성할 수도 있다.
프리-페치 프로세싱 유닛 (100) 은 포어그라운드 및/또는 백그라운드 타일 데이터를 적어도 하나의 메모리 (예를 들어, 비디오 코덱 (7) 의 온 칩 메모리, GPU (12) 의 온 칩 메모리, 출력 버퍼 (16) 및/또는 시스템 메모리 (10)) 에 프리-페치하도록 구성될 수도 있다. 일 예로서, 프리-페치 프로세싱 유닛 (100) 은 오프칩 메모리, 이를 테면, DDR 메모리로부터 타일 데이터를 프리-페치하도록 구성될 수도 있다. 다른 예로서, 프리-페치 프로세싱 유닛 (100) 은 타일 데이터를 오프 칩 메모리, 이를 테면, 비디오 코덱 (7) 의 온 칩 메모리 또는 GPU (12) 의 온 칩 메모리로부터 프리-페치하도록 구성될 수도 있지만, 이는 외부 메모리로부터 디스플레이 프로세서 (14) 뿐만 아니라 비디오 코덱 (7) 및 GPU (12) 로 간단히 프리-페치하는 것보다는 더 비용이 드는, 적어도 하나의 프레임에서 이러한 비디오 코덱 (7) 또는 GPU (12) 의 온 칩 메모리에 할당되기에 적어도 충분한 메모리를 요구한다. 프리-페치 프로세싱 유닛 (100) 은 메모리 공간 (예를 들어, 공유 메모리 (104)) 에서 프리-페치된 데이터를 저장하도록 구성될 수도 있다. 페치 프로세싱 유닛 (110) 은 프리-페치 프로세싱 유닛 (100) 에 의해 이용된 메모리 공간으로부터 프리-페치된 포어그라운드 타일 데이터 및 백그라운드 타일 데이터를 페치하도록 구성될 수도 있다. 일부 예들에서, 페치 프로세싱 유닛 (110) 에 의해 이용된 메모리는 디스플레이 프로세서 (14) 에만 액세스가능할 수도 있다. 일 예로서, 페치 프로세싱 유닛 (110) 에 의해 이용된 메모리는 디스플레이 프로세서 (14) 의 온 칩 메모리일 수도 있다. 다른 예로서, 페치 프로세싱 유닛 (110) 에 의해 이용된 메모리는 디스플레이 프로세서 (14) 에 대해 외부 메모리 (예를 들어, 시스템 메모리 (10)) 일 수 있지만, 디스플레이 프로세서 (14) 만이 지정된 메모리 공간에 액세스가 허용되도록 할당된다. 달리 말하면, 시스템 메모리 (10) 가 컴퓨팅 디바이스 (2) 의 많은 컴포넌트들에 넓게 액세스가능할 수도 있지만, 시스템 메모리 (10) 의 메모리 공간은 일부 예들에서 액세스 권한들을 갖고 파티셔닝될 수도 있다.
픽셀 프로세싱 유닛 (130) 은 페치 프로세싱 유닛 (110) 으로부터 수신된 타일 데이터 (예를 들어, 포어그라운드 타일 데이터) 에 대한 픽셀 프로세싱을 수행할 수도 있다. 픽셀 프로세싱의 일부 예들은 업 샘플링, 다운샘플링, 스케일링, 컬러 변환, 회전, 및 다른 픽셀 프로세싱 기법들을 포함한다. 업 샘플링의 2 개의 예들은 YUV420 또는 YUV422 포맷에 따르는 입력 포맷을 YUV444 로 변환하는 것을 포함한다. 픽셀 프로세싱 유닛 (130) 에 의해 수행된 임의의 스케일링은 완전히 업샘플링된 픽셀들에 대해 수행될 수도 있다. 컬러 변환의 일 예는 YUV 컬러 포맷에 따르는 입력 포맷을 RGB 컬러 포맷으로 변환하는 것을 포함한다. 컬러 변환의 다른 예는 RGB 컬러 포맷에 따르는 입력 포맷을 YUV 컬러 포맷으로 변환하는 것을 포함한다. 회전 픽셀 프로세싱의 예들은 이미지를 90, 180, 또는 270 도 회전하는 것을 포함할 수도 있다. 픽셀 프로세싱 유닛 (130) 은 메모리 (예를 들어, 랜덤 액세스 메모리 (RAM)) 에, 프로세싱된 타일 데이터를 저장할 수도 있다.
스케일에 관하여, 픽셀 프로세싱 유닛 (130) 의 스케일링 엔진에 대한 포어그라운드 타일의 입력 사이즈는 포어그라운드 타일과 연관된 스케일 비율에 따라 변한다. 이와 관련하여, 포어그라운드 타일은 가변 사이즈로 이루어질 수도 있다. 그러나, 프리-페치 프로세싱 유닛 (100) 을 이용하는 것에 의해 외부 메모리 요청들로부터의 포어그라운드 타일 사이즈를 디커플링하는 것에 의해, 대역폭 낭비가 감소될 수도 있다. 예를 들어, 외부 메모리로부터 가변 사이즈의 각각의 포어그라운드 타일을 요청하는 페치 프로세싱 유닛 (110) 대신에, 프리-페치 프로세싱 유닛 (100) 은 임의의 스케일 비율과 독립적으로, 고정된 증분값, 이를 테면, 64 픽셀 증분값들로 외부 메모리로부터 포어그라운드 타일 데이터를 판독하고 공유 메모리 공간 (104) 에 프리-페칭된 데이터를 저장한다. 이어서, 페치 프로세싱 유닛 (110) 은 임의의 스케일링 비율에 기초하여 공유 메모리 공간 (104) 으로부터 포어그라운드 타일 데이터를 판독할 수도 있고, 이는 임의의 스케일링 비율과 독립적인, 프리-페치 프로세싱 유닛 (100) 에 대한 판독된 요청 사이즈와 달리, 판독된 요청 사이즈가 스케일링 비율에 의존하기 때문에 판독된 요청 사이즈는 고정되지 않는다는 것을 의미한다. 본원에 달리 언급되어 설명된 바와 같이, 프리-페치 프로세싱 유닛 (100) 은 프리-페치 핑-퐁 버퍼를 이용하는 것에 의해 대역폭 낭비를 보상한다.
픽셀 프로세싱이 페칭된 백그라운드 타일 데이터에 대해 수행된 후, 픽셀 프로세싱 유닛 (130) 은 블렌드 프로세싱 유닛 (140) 에 프로세싱된 포어그라운드 타일을 출력할 수도 있다. 블렌드 프로세싱 유닛 (140) 은 픽셀 프로세싱 유닛 (130) 이 프로세싱된 타일 데이터를 블렌드 프로세싱 유닛 (140) 으로 송신하는 것을 요청할 수도 있다 (예를 들어, 블렌드 프로세싱 유닛 (140) 은 픽셀 프로세싱 유닛 (130) 으로부터 프로세싱된 타일 데이터를 풀링할 수도 있다). 픽셀 프로세싱 유닛 (130) 은 블렌드 프로세싱 유닛 (140) 으로부터 그렇게 하도록 하는 요청을 수신함이 없이 프로세싱된 타일 데이터를 블렌드 프로세싱 유닛 (140) 에 송신할 수도 있다 (예를 들어, 픽셀 프로세싱 유닛 (130) 은 블렌드 프로세싱 유닛 (140) 에 프로세싱된 타일 데이터를 푸시할 수도 있다).
블렌드 프로세싱 유닛 (140) 은 블렌딩된 타일들 (예를 들어, 하나 이상의 블렌딩된 타일들) 을 생성하도록 픽셀 프로세싱 유닛 (130) 에 의해 프로세싱될 수도 또는 프로세싱되지 않을 수도 있는 페칭된 포어그라운드 타일 데이터 (예를 들어, 하나 이상의 타일들) 과 페칭된 백그라운드 타일 데이터 (예를 들어, 하나 이상의 타일들) 을 블렌드할 수도 있다. 예를 들어, 하나의 백그라운드 타일이 하나의 포어그라운드 타일과 블렌딩되면, 블렌딩된 타일은 블렌드 프로세싱 유닛 (140) 에 의해 생성된다. 다른 예로서, 2 개의 인접하는 포어그라운드 타일들이 2 개의 인접하는 백그라운드 타일들과 블렌딩되면, 블렌드 프로세싱 유닛 (140) 에 의해 생성된 블렌딩된 타일 데이터는 2 개의 인접하는 블렌딩된 타일들일 수도 있다. 일부 예들에서, 픽셀 프로세싱 유닛 (130) 에 의해 프로세싱될 필요가 없는 포어그라운드 타일 데이터는 픽셀 프로세싱 유닛 (130) 을 바이패스할 수도 있고, 그 대신에 블렌드 프로세싱 유닛 (140) 에 의해 직접 전송될 수도 있다. 이러한 예들에서, 페치 시퀀스 제어기 (120) 또는 포어그라운드 판독 데이터 팩커 (114) 는 포어그라운드 판독 데이터 팩커 (114) 가 픽셀 프로세싱 유닛 (130) 대신에, 블렌드 프로세싱 유닛 (140) 에 이러한 포어그라운드 타일 데이터를 송신하는 것을 가져오는 결정을 행할 수도 있다. 일부 예들에서, 블렌딩된 타일 데이터는 메모리 (예를 들어, 공유 메모리 (104)) 에 라이트백된다 (블록 150 에 묘사됨). 이러한 예들에서, 이 메모리 공간은 종종 라이트 백 메모리로서 지칭된다. 블렌딩된 타일들의 픽셀들은 디스플레이 프로세서 (14) 에 의해 래스터 순서에서 이 메모리 공간 (예를 들어, 시스템 메모리에서의 라이트백 메모리) 으로부터 판독되고 프리젠테이션을 위하여 디스플레이 (8) 에 전송된다. 예를 들어, 디스플레이 프로세서 (14) 는 라이트백 메모리로부터 블렌딩된 프레임 (즉, 블렌딩된 픽셀들을 포함하는 프레임) 을 판독하는 직접 메모리 액세스 (DMA) 제어기를 포함할 수도 있다. DMA 제어기는 디스플레이 (8) 에 블렌딩된 프레임을 송신할 수도 있거나 또는 DMA 는 디스플레이 (8) 에 블렌딩된 프레임을 송신하기 전에 블렌딩된 프레임을 추가로 프로세싱할 수도 있다. 예를 들어, DMA 는 색영역 맵핑 또는 컬러 수정을 수행할 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 는 디스플레이 (8) 에 블렌딩된 프레임을 전송하기 전에 블렌딩된 프레임에 대한 추가적인 프로세싱을 수행할 수도 있다. 예를 들어, 디스플레이 프로세서 (14) 는 디스플레이 (8) 에 블렌딩된 프레임을 송신하기 전에 블렌딩된 프레임에 대한 컬러 조정들 및/또는 다른 수정들을 수행할 수도 있다.
본원에 이용된 바와 같이, 용어 데이터는 컨텍스트에 따라 픽셀 데이터를 지칭할 수도 있다. 예를 들어, 용어 타일 데이터는 픽셀 데이터를 지칭한다. 다른 예로서, 용어 포어그라운드 타일 데이터는 포어그라운드 픽셀 데이터를 지칭한다. 추가적으로, 용어 타일 데이터는 타일된 픽셀 표현 또는 픽셀 표현으로서 지칭될 수도 있다. 픽셀 데이터는 하나 이상의 비트들의 컬러 포맷에 따를 수도 있다. 예를 들어, 타일 데이터에서의 각각의 픽셀은 컬러 포맷에 따라 하나 이상의 비트들에 의해 표현될 수도 있다.
본원에 설명된 바와 같이, 프리-페치 프로세싱 유닛 (100) 은 메모리 공간, 이를 테면, 공유 메모리 (104) 에서 프리-페치된 데이터를 저장하도록 구성될 수도 있다. 일부 예들에서, 이러한 메모리 공간은 핑-퐁 버퍼 또는 핑-퐁 원형 버퍼일 수도 있다. 핑-퐁 버퍼는 공유 메모리 (104) 에서의 메모리 공간일 수도 있다. 공유 메모리 (104) 에서의 핑-퐁 버퍼는 일부 예들에 따라 핑-퐁 원형 버퍼를 구성할 수도 있다. 본원에 이용된 바와 같이 용어 "핑-퐁 버퍼" 는 비원형 버퍼 (예를 들어, 가상 링이 아닌 것) 또는 원형 (예를 들어, 가상 링) 버퍼를 포함할 수도 있다. 일부 예에서, 용어 "핑-퐁 버퍼"는 본원에 설명된 하나 이상의 기법을 수행하도록 구성된 페이지 플립 버퍼 또는 이중 버퍼링 버퍼를 지칭할 수도 있다. 일부 예에서, 용어 "핑-퐁 버퍼"는 본원에 설명된 하나 이상의 기법을 수행하도록 구성된 트리플 버퍼링 버퍼 또는 쿼드 버퍼링 버퍼를 지칭할 수도 있다. 일부 예에서, 용어 "핑-퐁 버퍼"는 이중 버퍼 (예를 들어, 핑 버퍼 및 퐁 버퍼) 를 지칭할 수도 있다. 핑 버퍼 및 퐁 버퍼는 비원형 버퍼 및/또는 원형으로서 처리될 수도 있다. 핑 버퍼와 퐁 버퍼가 처리되는 방법은 데이터가 버퍼에 기록되고 있는지 또는 버퍼로부터 판독되는지의 여부에 의존할 수도 있다. 일부 예들에서, 용어 "핑-퐁 버퍼"는 이중 버퍼 (예를 들어, 핑 버퍼 및 퐁 버퍼) 를 지칭할 수도 있고, 여기에서, 데이터는 버퍼들 중 하나 (예를 들어, 핑 버퍼) 에 기록될 수도 있는 한편, 데이터는 다른 버퍼 (예를 들어, 퐁 버퍼) 로부터 판독될 수도 있다. 데이터가 퐁 버퍼로부터 기록되고 있다면, 데이터는 핑 버퍼로부터 판독될 수도 있다. 다른 예들에서, 용어 "핑-퐁 버퍼"는 이중 버퍼 (예를 들어, 핑 버퍼 및 퐁 버퍼) 를 지칭할 수도 있고, 여기에서, 데이터는 버퍼들 중 하나 (예를 들어, 핑 버퍼 또는 퐁 버퍼) 에 한번에 하나씩 기록될 수도 있다. 그러나, 데이터가 버퍼들 중 하나만에 기록되고 있지만 데이터가 양쪽 버퍼들로부터 판독될 수도 있도록, 판독 동안 핑 및 퐁 버퍼들은 가상적으로 연속하는 메모리 공간일 수도 있다.
핑-퐁 버퍼가 비원형인 예들에서, 핑 버퍼는 개별적인 원형 버퍼일 수도 있고, 퐁 버퍼는 개별적인 원형 버퍼일 수도 있다. 핑 퐁 버퍼의 사이즈는 예에 의존하여 변할 수도 있다. 디스플레이 프로세서 (14) 는 포어그라운드 타일 데이터 (예를 들어, 블렌드 프로세싱 유닛 (140) 에 의해 출력된 타일 데이터) 에 대한 핑-퐁 버퍼, 백그라운드 타일 데이터에 대한 핑-퐁 버퍼, 및/또는 라이트백 타일 데이터에 대한 핑-퐁 버퍼를 포함할 수도 있다.
예를 들어, 포어그라운드 핑-퐁 버퍼는 폭이 128 픽셀들 및 높이가 64 픽셀일 수도 있다. 이 예에서, 포어그라운드 핑 버퍼 공간은 64 x 64 픽셀들일 수도 있고, 포어그라운드 퐁 버퍼는 또한 64 x 64 픽셀들일 수도 있다. 포어그라운드 핑 버퍼 공간 및 포어그라운드 퐁 버퍼 공간의 사이즈는 픽셀 프로세싱 유닛 (130) 이 타일의 높이 및/또는 폭 뿐만 아니라 포어그라운드 타일에 대해 수행하도록 구성될 수도 있는 최대 다운스케일 비율에 기초할 수도 있다. 핑 버퍼 및 퐁 버퍼의 높이 및 폭이 64 픽셀인 것은 최대 다운스케일 비율이 4분의 1 (1/4) 인 예인데, 그 이유는 64 픽셀들의 1/4 다운스케일링된 것이 16 픽셀이고 이는 백그라운드 타일들에 대해 고정된 픽셀 폭이기 때문이다. 당해 기술 분야의 당업자는 포어그라운드 핑-퐁 버퍼가 픽셀 프로세싱 유닛 (130) 에 의해 포어그라운드 데이터에 대해 수행될 임의의 스케일링에 기초할 수도 있음을 이해할 것이다.
포어그라운드 핑 버퍼 공간이 64 x 64 픽셀들이고 포어그라운드 퐁 버퍼 공간이 64 x 64 픽셀들인 예들을 참조하여 보면, 프리-페치 프로세싱 유닛 (100) 은 도 3 에 도시된 바와 같이, 64 x 최대 64 픽셀들의 타일 높이 픽셀로 포어그라운드 타일 데이터를 페치할 수도 있다. 도 3a 에 도시된 바와 같이, 프리-페치 프로세싱 유닛 (100) 이 포어그라운드 핑 퐁 버퍼에 프리-페치된 타일 데이터를 저장 (예를 들어, 기록) 할 때, 하나의 타일 (64 픽셀 x 타일 높이 픽셀들) 이 포어그라운드 핑 버퍼 공간에 프리-페치되고 기록되며 다른 타일 (64 픽셀 x 타일 높이 픽셀들) 이 포어그라운드 퐁 버퍼 공간에 프리-페치되고 기록된다. 도 3a 는 포어그라운드 핑-퐁 버퍼에 프리-페치된 타일 데이터를 기록하는 일 예를 도시한다. 도 3a 에 도시된 스케일 보상된 타일 페치 예는 64 픽셀들로 고정된다. 본원에 설명된 바와 같이, 64 픽셀들로 페치를 고정하는 것은 최소 액세스 길이 (minimum access length; MAL) 와의 순응성을 보장할 수도 있다.
도 3b 는 포어그라운드 핑-퐁 버퍼로부터 프리-페치된 포어그라운드 타일 데이터를 판독 (예를 들어, 페칭) 하는 일 예를 도시한다. 도 3b 에 도시된 바와 같이, 포어그라운드 핑 퐁 버퍼는 원형 버퍼로서 구성될 수도 있다. 아래 설명된 도 3d 는 핑-퐁 버퍼가 원형 버퍼로서 구성될 때 포어그라운드 핑-퐁 버퍼로부터 픽셀 데이터를 판독하는 프로세스를 예시한다. 타일들은 스케일 알고리즘에 기초하여 계산된 타일 폭 픽셀들 x 타일 높이 픽셀들의 사이즈를 갖는다. 페치 프로세싱 유닛 (110) 은 예를 들어, 공유 메모리 (104) 이외의 프레임 버퍼 또는 메모리 대신에 포어그라운드 핑-퐁 버퍼로부터 타일들을 페치한다. 이 예는 가상 환경에서 128 비트들로 도시되어 있지만, 다른 예들은 최적화를 위하여 보다 적은 비트들을 포함할 수도 있다. 예를 들어, 일 예에서, 포어그라운드 핑-퐁 버퍼는 폭이 96 비트 (그리고 가상 환경) 일 수도 있고 64 픽셀들은 한번에 여전히 페치될 수도 있다.
도 3c 는 포어그라운드 핑-퐁 버퍼로 픽셀 데이터를 기록하는 프로세스를 예시한다. 도 3c 에 도시된 바와 같이, 프리-페치 프로세싱 유닛 (100) 은 복수의 인접하는 타일들을 프리-페치하고 핑-퐁 버퍼에 타일들을 저장하도록 구성될 수도 있다. 페치 프로세싱 유닛 (110) 은 핑-퐁 버퍼 (도 3d 에 도시됨) 로부터 타일들을 판독한다. 동작시, 포어그라운드-퐁 퐁 버퍼의 핑 및 퐁 버퍼들에 대한 64-픽셀 폭 예에 연속하여, 프리-페치 프로세싱 유닛 (100) 은 핑 버퍼에 한번에 하나의 라인씩 픽셀 데이터를 기록한다. 이 기록 프로세스 동안, 프리-페치 프로세싱 유닛 (100) 은 각각의 64 픽셀 폭 라인이 하나 이상의 타일들을 포함하는지의 여부에 관하여 인지하지 못할 수도 있다. 핑 버퍼가 충전되면, 프리-페치 프로세싱 유닛 (100) 은 퐁 버퍼로 스위치오버하여 프로세스를 반복한다. 마찬가지로, 퐁 버퍼가 충전되면, 프리-페치 프로세싱 유닛 (100) 은 핑 버퍼로 리턴하여 프로세스를 반복한다. 프리-페치 프로세싱 유닛 (100) 이 핑-퐁 버퍼에 데이터를 기록하고 있지만, 페치 프로세싱 유닛 (110) 은 핑-퐁 버퍼로부터 픽셀 데이터를 판독할 수도 있다. 예를 들어, 프리-페치 프로세싱 유닛 (100) 은 퐁 버퍼에 기록하고 있는 한편 페치 프로세싱 유닛 (110) 은 핑 버퍼로부터 판독하고 있을 수도 있다. 마찬가지로, 프리-페치 프로세싱 유닛 (100) 은 핑 버퍼에 기록하고 있는 한편 페치 프로세싱 유닛 (110) 은 퐁 버퍼로부터 판독하고 있을 수도 있다.
도 3d 는 포어그라운드 핑-퐁 버퍼로 픽셀 데이터를 판독하는 프로세스를 예시한다. 도 3d 는 프리-페치 프로세싱 유닛 (100) 이 핑 버퍼 및 퐁 버퍼에 기록된 각각의 64 픽셀 폭 라인에서 타일들의 완성도 또는 타일들의 수에 관하여 인지하지 못할 수도 있다. 도 3d 는 핑 버퍼 및 핑 버퍼 (예를 들어, 타일 3) 양쪽에 타일 데이터가 존재할 수도 있는 일 예를 예시한다. 도시된 예에서, 페치 프로세싱 유닛 (110) 이 핑 버퍼로부터 판독할 때, 이는 3 개의 타일들과 연관된 픽셀 데이터를 판독한다. 이 타임 스탬프에서, 페치 프로세싱 유닛 (110) 이 퐁 버퍼를 판독하여 타일 1, 타일 2, 및 타일 3 에 대한 픽셀 데이터를 취득할 때 타일 1 및 타일 3 에 대한 픽셀 데이터는 불완전한 것으로 나타나는데, 그 이유는 이들 타일들의 각각의 전체 폭이 핑 버퍼로부터 판독되지 않기 때문이다. 그러나 페치 프로세싱 유닛 (110) 은 각각의 개별적인 라인에 대해 퐁 버퍼의 마지막 판독 각각 동안에 타일 1 에 대한 각각의 라인에 대하여 이전에 "손실한" 픽셀들을 판독한다. 이는 원형 버퍼이기 때문에, 개념적으로 도 3d 에 도시된 바와 같이 "부분적" 타일이 정말로 존재하지 않는데, 이는 핑 및 퐁 버퍼들이 연속하는 메모리 공간일 수도 있고 연속하는 메모리 공간으로 처리되기 때문이다. 도 3 은 타일 3 에 대한 각각의 라인에 대해 나머지 픽셀들을 포함하는 퐁 버퍼를 갖는 예를 예시한다. 예를 들어, 타일 3 에 대해, 페치 프로세싱 유닛 (110) 은 퐁 버퍼에서 최상단 픽셀 라인으로 시작하여 그 라인을 판독한다. 그러나 페치 프로세싱 유닛 (110) 에 의해 발행된 판독하라는 명령은 타일 폭 (예를 들어, 타일 폭에 대응하는 픽셀들의 수) 에 기초하여 다수의 픽셀들을 판독하는 것이다. 따라서, 페치 프로세싱 유닛 (110) 은 타일 3 에 대한 나머지 픽셀들을 페치하기 위해 퐁 버퍼로 계속 진행된다. 예를 들어, 페치 프로세싱 유닛 (110) 은 라인 하나에서 폭 "a" 를 갖는 픽셀들을 페치한 다음, 퐁 버퍼의 라인 하나에서 폭 "b" 를 갖는 픽셀들을 페치하도록 진행한다. 이와 함께 세그먼트들 "a" 및 "b" 는 타일 3 에 대한 전체 라인을 구성한다. 타일 1 에서는 각각의 라인의 시작이 퐁 버퍼의 종점에서의 메모리 공간에서 시작하고, 타일 5 및 타일 6 데이터에 의해 중복기록되기 전에 판독되었다는 것을 제외하고는, 유사한 프로세스가 타일 1 에 대해 발생하였다. 타일 4 및 타일 5 는 전체적으로 퐁 버퍼로부터 취득되고, 타일 6 은 퐁 버퍼로부터 부분적으로 취득되고 나머지는 핑 버퍼로부터 취득된다. 핑 퐁 버퍼의 원형 (예를 들어, 링) 양태로 인하여 타일 6 의 나머지는 타일 1 위에 기록됨을 주지한다.
다른 예들에서, 프리-페치 프로세싱 유닛 (100) 은 32 픽셀 폭 증분값들, 64 픽셀 증분값들, 또는 128 픽셀 폭 증분값들에서 포어그라운드 타일 데이터를 페치할 수도 있다. 이러한 프리-페치는 하나 이상, 둘 이상의 포어그라운드 타일들을 포함할 수도 있다. 예를 들어, 프리-페치 프로세싱 유닛 (100) 은 32 x 최대 32 픽셀들의 타일 높이 픽셀들에서 포어그라운드 타일 데이터를 페치할 수도 있다. 이러한 예에서, 핑-퐁 버퍼는 폭이 64 픽셀들 및 높이가 32 픽셀일 수도 있다. 다른 예로서, 프리-페치 프로세싱 유닛 (100) 은 128 x 최대 128 픽셀들의 타일 높이 픽셀들에서 포어그라운드 타일 데이터를 페치할 수도 있다. 이러한 예에서, 핑-퐁 버퍼는 폭이 256 픽셀들 및 높이가 128 픽셀들일 수도 있다.
포어그라운드 및/또는 백그라운드 타일 데이터를 프리-페치하는 것에 의해, 프리-페치 프로세싱 유닛 (100) 은 외부 메모리 (예를 들어, GPU (12) 와 연관된 프레임 버퍼) 및 디스플레이 프로세서 (14) 로부터의 내부 프로세싱 요청들 (예를 들어, 페치 프로세싱 유닛 (110) 에 의한 프로세싱 요청들) 을 디커플링한다. 예를 들어, 비디오 코덱 (7) 의 온 칩 메모리, GPU (12) 의 온 칩 메모리, 및/또는 출력 버퍼 (16) 로부터 페치하는 대신에, 페치 프로세싱 유닛 (110) 은 프리-페치 프로세싱 유닛 (100) 에 의해 핑-퐁 버퍼에 저장된 타일 데이터로부터 포어그라운드 및 백그라운드 타일들을 페치한다.
추가적으로, 디스플레이될 이미지의 타일들은 상이한 타일 치수들, 픽셀 비트 깊이들, 및/또는 컬러 표현들을 이용하여 핑-퐁 버퍼들에 저장될 수 있기 때문에, 디스플레이 프로세서 (14) 의 페치 프로세싱 유닛 (110) 은 플렉시블 방식으로 (예를 들어, 타일들의 포맷 및/또는 컬러 컴포넌트들에 대응하여) 핑-퐁 버퍼로부터 타일 데이터를 판독하도록 구성될 수도 있다. 여러 타일 포맷들을 처리하기 위해, 프리-페치 프로세싱 유닛 (100) 은 위에 언급된 바와 같이 한번에 핑-퐁 버퍼로 64 픽셀들을 기록할 수도 있고, 핑-퐁 버퍼의 특정 영역이 특정 컬러 평면 (예를 들어, YCbCr, RGBA 등) 에 대응하는지의 여부를 추가로 결정하는 로직을 포함할 수도 있다. 픽셀 데이터를 핑-퐁 버퍼로 판독하고 핑-퐁 버퍼들을 타일들로 파티셔닝하는 예시적 프로세스는 도 3c 에 예시되어 있다.
위에 식별된 바와 같이, 디스플레이 프로세서 (14) 는 백그라운드 핑-퐁 버퍼를 포함할 수도 있다. 프리-페치 프로세싱 유닛 (100) 은 백그라운드 타일 데이터를 프리-페치할 수도 있으며, 이는 프리-페치 프로세싱 유닛 (100) 이 공유 메모리 (104) (예를 들어, 프레임 버퍼) 이외의 메모리 공간으로부터 백그라운드 타일 데이터를 판독하고 있고 후속하여, 프리-페치된 백그라운드 타일 데이터를 백그라운드 핑 퐁 버퍼에 기록함을 의미한다. 백그라운드 핑-퐁 버퍼는 폭이 64 픽셀들 및 높이가 16 픽셀들일 수도 있다. 이 예에서, 백그라운드 핑 버퍼는 폭이 32 픽셀들 및 높이가 16 픽셀일 수도 있고 포어그라운드 퐁 버퍼는 폭이 32 픽셀들 및 높이가 16 픽셀일 수도 있다. 백그라운드 타일들은 사이즈에서 폭이 16 픽셀들, 및 높이에서 16 픽셀들로 고정되어 있기 때문에, 32 x 16 핑 버퍼 및 32 x 16 퐁 버퍼는 16 의 최대 버스트 사이즈를 가져온다. 달리 말하면, 프리-페치 프로세싱 유닛 (100) 은 오프 칩 메모리의 버스트 길이를 최대 16 으로 최대화하고 대역폭 낭비를 해결하도록 현재 백그라운드 타일 및 인접하는 수평 타일을 프리-페치할 수도 있다. 일부 예들에서, 최대 16 으로 버스트 길이를 최대화하기 위해, 적어도 32 픽셀들이 프리-페치될 필요가 있을 수도 있다. 본원에 설명된 바와 같이, 외부 메모리로의 메모리 요청들의 수를 감소시키기 위해, 프리-페치 프로세싱 유닛 (100) 은 다음 중 하나 이상에 의해 대역폭 낭비를 감소시킬 수도 있다 : 메모리 버스트들의 길이를 증가시키는 것, 임의의 스케일 비율에 독립적으로 포어그라운드 타일 데이터를 프리-페치하는 것 (예를 들어, 임의의 스케일링 비율과 무관하게 폭에서 예를 들어, 64 픽셀들의 고정된 사이즈에 따른 포어그라운드 타일 데이터를 프리-페치하는 것), 수평 오버랩에 기인한 오버페치를 제거하는 것 및/또는 수직 오버랩 요청들을 1/2 로 감소시키는 것).
이와 유사하게, 디스플레이 프로세서 (14) 는 라이트백 핑-퐁 버퍼를 포함할 수도 있다. 디스플레이 프로세서 (14) 는 블렌드 프로세싱 유닛 (14) 에 의하여 블렌딩된 타일 데이터 출력을 라이트백 버퍼에 라이트백할 수도 있다 (도 2 에서 블록 150 으로 도시됨). 라이트백 핑-퐁 버퍼는 폭이 64 픽셀들 및 높이가 16 픽셀들일 수도 있다. 이 예에서, 라이트백 핑 버퍼는 폭이 32 픽셀들 및 높이가 16 픽셀일 수도 있고 라이트백 퐁 버퍼는 폭이 32 픽셀들 및 높이가 16 픽셀일 수도 있다.
일부 예들에서, 프리-페치 프로세싱 유닛 (100) 은 포어그라운드 타일 데이터 및 백그라운드 타일 데이터를 병렬로 프리-페치 (예를 들어, 판독) 하도록 구성될 수도 있다. 다른 예들에서, 프리-페치 프로세싱 유닛 (100) 은 포어그라운드 타일 데이터 및 백그라운드 타일 데이터를 병렬이 아닌 순차적으로 프리-페치하도록 구성될 수도 있다. 프리-페치 프로세싱 유닛 (100) 에 의해 수행된 프리-페치에 기인한 핑-퐁 버퍼 공간 (또는 임의의 버퍼 공간) 에서의 포어그라운드 타일 및 백그라운드 타일의 이용가능성은 페치 프로세싱 유닛 (110) 에 의해 메모리 (예를 들어, 핑-퐁 메모리 공간) 으로부터 포어그라운드 및 백그라운드 타일들의 병렬 판독을 가능하게 할 수도 있다.
도 4a 는 포어그라운드 픽셀 및 백그라운드 픽셀이 단일 클록 사이클에서 블렌딩하는데 이용가능한 일 예를 예시한다. 도시된 예에서, 라인마다 32 개의 픽셀이 존재한다. 그러나, 다른 예들에서, 라인 마다 16 개 픽셀들이 존재할 수도 있거나 라인 마다 임의의 다른 수의 픽셀들이 존재할 수도 있다. 도 4b 는 포어그라운드 픽셀들 (예를 들어, 루마 및 크로마 포맷된 픽셀들) 및 백그라운드 픽셀 (예를 들어, ARGB 포맷된 픽셀) 이 단일 클록 사이클에서 블렌딩하는데 이용가능한 일 예를 예시한다. 도시된 예에서, 라인마다 32 개의 픽셀이 존재한다. 그러나, 다른 예들에서, 라인 마다 16 개 픽셀들이 존재할 수도 있거나 라인 마다 임의의 다른 수의 픽셀들이 존재할 수도 있다.
페치 프로세싱 유닛 (110) 은 제 1 포어그라운드 타일 및 제 1 백그라운드 타일을 병렬로 페치하고, 제 2 포어그라운드 타일 및 제 2 포어그라운드 타일을 병렬로 페치하도록 구성될 수도 있고, 디스플레이 프로세서는 페치된 제 1 포어그라운드 타일에 대한 픽셀 프로세싱을 수행한다. 디스플레이 프로세서 (14) 의 프리-페치 프로세싱 유닛 (100) 은 프리-페치 프로세싱 유닛 (100) 의 부재시 있을 수 있는 비효율적인 프로세싱을 감소 또는 제거할 수도 있다. 예를 들어, 프리-페치 프로세싱 유닛 (100) 은 페치 프로세싱 유닛 (110) 이 병렬로 보다 많은 액션들을 수행할 수 있게 하여, 프로세싱 리소스들을 절감시킨다.
다른 예에서, 프리-페치 프로세싱 유닛 (100) 의 이용은 타일 데이터를 취득하도록 디스플레이 프로세서 (14) 에 대한 초기 메모리 요청들의 수를 감소시킬 수도 있다. 이 예에서, 메모리 요청들은 페치 프로세싱 유닛 (110) 이 요청하도록 구성되는 것에 비해 프리-페치 프로세싱 유닛 (100) 이 요청 마다 보다 큰 양의 타일 데이터를 취득할 수 있기 때문에, 메모리 요청들이 감소될 수도 있다. 일 예에서, 프리-페치 프로세싱 유닛 (100) 은 단일의 메모리 요청에서, 하나 보다 많은 타일에 대응하는 타일 데이터를 판독할 수도 있는 한편, 페치 프로세싱 유닛 (110) 은 단일 타일에 대응하는 타일 데이터를 판독하도록 구성될 수도 있다. 달리 말하면, 프리-페치 프로세싱 유닛 (100) 은 공유 메모리 (104) 이외의 메모리에 덜 미세튜닝된 메모리 요청들을 행할 수도 있는 한편, 페치 프로세싱 유닛 (110) 은 공유 메모리 (104) 에 보다 미세튜닝된 메모리 요청들을 행한다. 이렇게 행하는 것에 의해, 프리-페치 프로세싱 유닛 (100) 은 디스플레이 프로세서 (14) 가 공유 메모리 (104) 이외의 메모리에 행하는 (예를 들어, 송신하는) 메모리 요청들의 수를 감소시킬 수도 있다.
일부 예들에서, 포어그라운드 및 백그라운드 타일 (또는 타일 데이터) 프리-페칭은 프리-페치 프로세싱 유닛 (100) 에 의해 직렬로 (예를 들어, 라운드 로빈 방식으로) 수행된다. 다른 예들에서, 포어그라운드 및 백그라운드 타일 (또는 타일 데이터) 프리-페칭은 프리-페치 프로세싱 유닛 (100) 에 의해 우선순위 임의적 기법을 이용하여 수행된다. 프리-페치 프로세싱 유닛 (100) 에 관한 추가적인 세부사항은 본 개시 전반에 걸쳐 제공된다.
포어그라운드, 백그라운드, 및 라이트백 핑-퐁 버퍼들은 메모리 (예를 들어, 공유 메모리 (104)) 에서 별도의 메모리 공간 또는 연속하는 메모리 공간일 수도 있다. 디스플레이 프로세서 (14) 는 디스플레이되는 이미지의 회전 및 다운스케일링 값들에 기초하여 포어그라운드, 백그라운드, 및 라이트백 핑-퐁 버퍼들에 대한 메모리 공간을 메모리 (예를 들어, 공유 메모리 (104)) 에 동적으로 할당할 수도 있다. 예를 들어, 도 5a 는 디스플레이 프로세서 (14) 가 포어그라운드 핑-퐁 버퍼에 대해 4 개의 64 x 32 픽셀 영역들, 백그라운드 핑-퐁 버퍼에 대해 1 개의 16 x 16 픽셀 영역들, 및 라이트백 핑-퐁 버퍼에 대해 1 개의 16 x 16 픽셀 영역을 할당하는 경우의 일 예를 나타낸다. 일부 예들에서, 디스플레이 프로세서 (14) 는 디스플레이될 이미지가 3분의 1 (1/3) 미만으로 다운스케일링될 필요가 있고 회전되지 않을 때 또는 디스플레이될 이미지가 3분의 2 (2/3) 미만으로 다운스케일링될 필요가 있고 회전될 필요가 있을 때 이러한 할당이 적절한 것으로 보여진다. 도 5a 에 도시된 메모리의 상이한 영역들은 연속적일 수도 또는 연속적이지 않을 수도 있다.
도 5b 는 핑-퐁 버퍼에 대한 메모리 할당의 다른 예를 예시한다. 이 예에서, 디스플레이 프로세서 (14) 는 포어그라운드 핑-퐁 버퍼에 대해 2 개의 64 x 32 픽셀 영역들 및 2 개의 64 x 16 픽셀 영역들, 백그라운드 핑-퐁 버퍼에 대해 2 개의 32 x 16 픽셀 영역들, 및 라이트백 핑-퐁 버퍼에 대해 2 개의 32 x 16 픽셀 영역을 할당하는 경우의 일 예를 나타낸다. 일부 예들에서, 디스플레이 프로세서 (14) 는 디스플레이될 이미지가 3분의 1 (1/3) 이상의 비율로 다운스케일링될 필요가 있고 회전되지 않을 때 또는 디스플레이될 이미지가 3분의 2 (2/3) 이상의 비율로 다운스케일링될 필요가 있고 회전될 필요가 있을 때 이러한 할당이 적절한 것으로 보여진다. 도 5b 에 도시된 메모리의 상이한 영역들은 연속적일 수도 또는 연속적이지 않을 수도 있다.
도 5a 및 도 5b 는 개념적이지만, 그러나, 이들은 스케일링 비율이 증가할 때 디스플레이 프로세서 (14) 가 핑-퐁 버퍼들에 의해 메모리 공간 소모를 감소시킬 수도 있음을 나타낸다. 예를 들어, 도 5b 에서의 핑-퐁 버퍼들에 대하여 할당된 메모리는 도 5a 에서의 핑-퐁 버퍼들에 대하여 할당된 메모리보다 32 x 32 픽셀들 미만이다. 본원에 설명된 바와 같이, 핑-퐁 버퍼 메모리는 다른 무엇보다도, 포어그라운드 타일 데이터에 적용될 스케일링 팩터에 기초하여 할당될 수도 있다. 예를 들어, 포어그라운드 데이터를 위하여 핑-퐁 버퍼 메모리에 대해 할당된 메모리는 (1) 핑-퐁 버퍼 폭 = 16 을 스케일링 팩터로 나누는 것, 및 (2) 핑-퐁 버퍼 높이 = 16 를 스케일링 팩터로 나누는 것과 등가일 수도 있다. 예를 들어, 1/4 의 다운스케일링 팩터는 64 x 64 픽셀들의 사이즈를 갖는 핑-퐁버퍼와 등가이고, 1/2 의 다운스케일링 팩터는 32 x 32 의 사이즈를 갖는 핑-퐁 버퍼와 등가이다.
일부 예들에서, 디스플레이 프로세서 (14) 는 이러한 픽셀들이 단일 타일보다 더 많은 타일 데이터를 유지하는 포어그라운드 핑-퐁 버퍼에 이미 있기 때문에 스케일링으로 인하여 픽셀들의 오버페치를 감소 또는 제거할 수도 있다. 일부 예들에서, 프리-페치 프로세싱 유닛 (100) 은 수직 타일 오버랩으로 인한 픽셀 라인 재페칭을 감소 또는 제거할 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 는 프리-페치 프로세싱 유닛 (100) 을 이용하는 것에 의해 오프칩 메모리 요청들의 수를 감소시킬 수도 있다.
도 6 은 본원에 개시된 기법들에 따라 포어그라운드, 백그라운드 및 라이트-백 핑-퐁 버퍼들을 예시하는 개념도이다. 일부 예들에서, 핑-퐁 버퍼는 복수의 영역들로 가상으로 분할되도록 구성될 수도 있고, 각각의 영역은 의사 플래너 포맷의 픽셀 유형 (예를 들어, 루마, 크로마, 및/또는 알파) 에 대응한다.
의사 플래너 포맷의 경우에, 하나의 타일은 루마 및 크로마 타일들로부터 인터리브된 라인들을 포함한다. 이 포맷에서, 페치 프로세싱 유닛 (110) 은 픽셀 프로세싱 유닛 (130) 또는 블렌드 프로세싱 유닛 (140) 에 이러한 타일을 전송하기 전에 루마-크로마 타일을 생성하도록 공유 메모리 (104) 로부터 지그재그 패턴에서 교번 방식으로 루마 타일과 크로마 타일의 각각의 라인을 페치한다. 예를 들어, 페치 프로세싱 유닛 (110) 은 루마 타일의 최상단 좌측 픽셀로부터 시작하여 프리-페치 프로세싱 유닛 (100) 에 의해 프리페치되는 것에 의해 공유 메모리 (104) 에 저장된 루마의 제 1 라인 상의 모든 픽셀들을 페치하도록 진행할 수도 있다. 다음으로, 페치 프로세싱 유닛 (110) 은 크로마 타일의 최상단 좌측 픽셀로부터 시작하여 크로마 타일의 제 1 라인 상의 모든 픽셀들을 페치한다. 다음으로, 페치 프로세싱 유닛 (110) 은 루마 타일의 제 2 라인으로 이동하고, 루마 타일의 제 2 라인 상의 모든 픽셀들을 페치하기 위해 최좌측의 픽셀로부터 시작한다. 다음으로, 페치 프로세싱 유닛 (110) 은 크로마 타일의 제 2 라인으로 이동하고, 크로마 타일의 제 2 라인 상의 모든 픽셀들을 페치하기 위해 최좌측의 픽셀로부터 시작한다. 이 프로세스는 페치 프로세싱 유닛 (110) 이 루마 및 크로마 타일들에서 최하단우측 픽셀에 도달할 때까지 계속 진행한다.
일부 예들에서, 프리-페치 프로세싱 유닛 (100) 은 페치 동안 라인들을 교번함이 없이 개별적으로 루마 및 크로마 타일들을 역으로 프리-페치 (예를 들어, 판독) 한다 (또는 평면들을 교번하기 전에 둘 이상의 라인들을 적어도 페치한다). 평면 데이터 (예를 들어, 루마 타일 데이터 및 크로마 타일 데이터) 양쪽이 연속하는 메모리 로케이션 (예를 들어, 공유 메모리 (104) 이외의 다른 메모리 또는 프레임 버퍼) 에 개별적으로 저장되기 때문에, 매 라인 뒤에서 평면들 간을 지속적으로 스위칭하는 것은 일 예에서 DDR 메모리 공간을 수반하는 DDR 의 더 높은 수의 페이지들을 오픈하게 한다. 이 개시의 기법들은 페치 프로세스 동안에 매 라인 뒤에 평면들 사이를 스위칭하지 않는 것에 의해 DDR 메모리 (또는 프리-페치 프로세싱 유닛 (100) 이 메모리 요청들을 발행하는 임의의 다른 메모리) 의 효율을 효율적으로 개선하도록 구현될 수도 있다. 달리 말하면, 프리-페치 프로세싱 유닛 (100) 은 루마 및 크로마 타일 데이터를 메모리 (예를 들어, DDR 메모리) 로부터 판독할 때 루마 및 크로마 타일들의 각각의 라인을 판독하는 것 간을 교번하지 않을 수도 있다. 이 방식으로, 더 적은 통신 오버헤드가 수반되기 때문에 (예를 들어, 교번 방식에서는, 루마 및 크로마 라인들을 교번 방식으로 판독할 때 각각의 라인이 별도의 메모리 요청을 요구하고, 하나의 메모리 요청이 타일의 하나 보다 많은 라인을 포함하는 메모리 공간의 범위를 포함할 수 있기 때문에) 프리-페치 프로세싱 유닛 (100) 은 메모리에 메모리 요청들을 전달할 때 상이한 평면들 (예를 들어, 루마 및 크로마) 간을 스위칭하지 않음으로써 메모리로부터 데이터를 판독하는 효율을 개선시킨다. 달리 말하면, 프리-페치 프로세싱 유닛 (100) 은 교번 방식으로 루마 및 크로마 타일들로부터 각각의 라인을 프리-페치하지 않는 것에 의해 판독 요청들의 수를 감소시킬 수도 있다. 더 적은 평면 스위칭은 더 적은 메모리 요청들을 가져오고, 이는 또한 대역폭을 절감하고 (예를 들어, 대역폭 소모를 감소시키고) 메모리 작업 부하를 절감한다.
위에 식별된 바와 같이, 프리-페치 프로세싱 유닛 (100) 은 또한 교번 방식으로 한번에 루마 및 크로마의 둘 이상의 라인들을 프리-페치하는 것에 메모리 요청들의 수를 감소시킬 수도 있다. 그러나, 이 예에서의 메모리 요청 감소는 평면 스위칭이 없는 경우의 메모리 감소의 예보다 더 적다.
위의 예들이 프리-페치 프로세싱 유닛 (100) 이 루마 및 크로마 라인들을 인터리브된/교번 방식으로 페칭하지 않는 것에 관련되어 있지만, 이는 프리-페치 프로세싱 유닛 (100) 이 다른 이러한 타일들에 대해 유사한 프로세싱을 수행할 수 있다는 것을 이해할 것이다. 예를 들어, 3 개의 타일들 (예를 들어, 루마, 크로마 및 알파) 로부터의 3 개의 인터리브된 라인들을 포함하는 타일은, 제 1 블록의 각각의 라인이 프리-페치된 다음, 제 2 블록의 각각의 라인이 프리-페치되고 그 후 제 3 블록의 각각의 라인이 프리-페치되도록, 유사하게 프리-페치될 수도 있다. 일부 예들에서, 제 1, 제 2 및 제 3 블록들 각각의 각각의 라인을 프리-페치하는 것은 프리-페치 프로세싱 유닛 (100) 에 의해 병렬로 수행될 수도 있다. 본원에 설명된 바와 같이, 프리-페치 프로세싱 유닛 (100) 은 페치 프로세싱 유닛 (110) 에 인터리브된 타일의 구축을 그만두는 것에 의해 메모리 요청들을 감소시킬 수도 있다.
일부 예들에서, 대역폭은 비정렬된 타일을 프리-페칭 (예를 들어, 판독) 또는 기록할 때 낭비될 수도 있는데, 그 이유는 이러한 타일이 공유 메모리 (104) 이외의 임의의 메모리 로케이션 또는 오프 칩 메모리 (예를 들어, 더블 데이터 레이트 (DDR) 메모리) 에 액세스할 때 최소 액세스 길이 (minimum access length; MAL) 요건에 어긋나기 때문이다. MAL 요건에 어긋나는 것은 디스플레이 프로세스 (14) 가 MAL 요건들 (예를 들어, 현재 DDR 메모리에서 32, 64, 또는 128 바이트들) 에 따르도록 비트들 (예를 들어, 비트들의 낭비 및 이에 따른 대역폭의 낭비) 을 패딩해야 하는 것을 야기한다. 다른 예들에서, 디스플레이 프로세서는 미사용 비트들을 패딩하지 않을 수도 있지만, 그럼에도 불구하고 대역폭 낭비가 야기될 수도 있다. 예를 들어, DDR-3 에서, 최소 DRAM 버스트 길이는 8 일 수도 있다. 이 예에서, 32 비트의 LPDDR3 데이터 폭을 가정하면, DRAM 은 32 x 8 = 256 비트들 (또는 32 바이트들) 을 페치한다. 이는 이어서 디스플레이 프로세서와 DRAM 사이에 데이터를 전달하기 위해 8 DRAM 하프 사이클들 (즉, 4 사이클들) 을 취한다. 달리 말하면, DRAM 은 4 사이클 바운더리들의 최소값으로 액세스된다. 요청이 32 바이트 미만이면, 아이들 사이클들이 4 개의 사이클을 커버하도록 도입될 것이다. 따라서, 예를 들어, 이 예의 모든 버스트들이 16 바이트 길이이면, 이용가능한 DRAM 대역폭의 50%만이 이용될 수 있다. 본 개시의 기법들은 예를 들어, 미사용 메모리 사이클들의 양을 제거 또는 감소시키거나 또는 임의의 패딩 비트들을 제거 또는 감소시키는 것에 의해 이 대역폭 낭비를 감소 또는 제거하도록 구현될 수도 있다. 예를 들어, 프리-페치 프로세싱 유닛 (100) 은 고정된 64 픽셀 증분값들에서 포어그라운드 타일 데이터의 각각의 라인을 프리-페치할 수도 있다. 이러한 예들에서, 프리-페치 프로세싱 유닛 (100) 에 의한 모든 메모리 요청들은 MAL 에 따르도록 임의의 비트들을 패딩해야 할 필요 없이 64, 128, 196, 또는 256 의 최소 액세스 길이 (MAL) 를 갖도록 정렬될 수도 있다.
다른 예에서, 타일 사이즈는 스케일 알고리즘으로 인하여 수반되는 스케일 비율, 수평 오버랩, 및/또는 수직 오버랩에 기초하여 수정될 수도 있다. 타일 데이터의 하나의 라인은 (타일 폭 + 수평 오버랩) x BPP (픽셀 당 비트들) 와 같을 수도 있으며, 여기에서, BPP 는 입력 포맷에 의존한다. 이 계산은 32 바이트의 배수로 되지 않을 수도 있다. 그러나, DDR 최소 액세스 길이 또는 세분화도는 예를 들어, 32, 64, 128, 및 256 일 수도 있다. 이러한 예에서, 데이터의 하나의 라인이 MAL 의 배수가 아닌 때마다 대역폭 낭비가 야기될 수도 있다. 디스플레이 프로세서 (14) 는 본 개시의 하나 이상의 기법들에 따라 MAL-정렬된 방식으로 메모리 (예를 들어, 임의의 유형의 DDR 메모리) 로부터 데이터를 프리-페치하도록 구성될 수도 있다. 예를 들어, 디스플레이 프로세서 (14) 는 MAL 이 메모리에 대하여 32 바이트이면, 32 바이트 증분값으로 메모리로부터 데이터를 프리-페치하도록 구성될 수도 있다. 다른 예로서, 디스플레이 프로세서 (14) 는 MAL 이 메모리에 대하여 64 바이트이면, 64 바이트 증분값으로 메모리로부터 데이터를 프리-페치하도록 구성될 수도 있다. 다른 예로서, 디스플레이 프로세서 (14) 는 MAL 이 메모리에 대하여 128 바이트이면, 128 바이트 증분값으로 메모리로부터 데이터를 프리-페치하도록 구성될 수도 있다. 프리-페치된 데이터의 사이즈 (예를 들어, 32 바이트, 64 바이트 등) 의 사이즈에 의존하여, 본원에 설명된 하나 이상의 핑-퐁 버퍼들의 사이즈는 조정될 수도 있다.
도 7a 는 본 개시의 디스플레이 프로세싱을 위한 기법에 부합하는 일 예의 프로세스를 예시하는 플로우차트이다. 예를 들어, 도 7a 는 도 2 에 묘사된 디스플레이 프로세서 (14) 의 동작의 일 예이다. 도 7a 의 프로세스는 일반적으로 예시의 목적으로 디스플레이 프로세서 (14) 에 의해 수행되는 것으로 설명되어 있지만, 다양한 다른 프로세서들이 또한 도 7a 에 도시된 프로세스를 수행할 수도 있다. 일부 예들에서, 프리-페치 프로세싱 유닛 (100) 및/또는 페치 프로세싱 유닛 (110) 은 도 7a 에 도시된 하나 이상의 프로세스들을 수행할 수도 있다.
도 7a 의 예에서, 디스플레이 프로세서 (14) 는 제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독할 수도 있다 (200). 일부 예들에서, 디스플레이 프로세서 (14) 는 판독된 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장할 수도 있다 (202). 디스플레이 프로세서 (14) 는 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독할 수도 있다 (204). 디스플레이 프로세서 (14) 는 판독된 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장할 수도 있다 (206). 디스플레이 프로세서 (14) 는 제 2 메모리 공간으로부터 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독할 수도 있다 (208). 디스플레이 프로세서 (14) 는 제 3 메모리 공간으로부터 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독할 수도 있다 (210). 디스플레이 프로세서 (14) 는 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 픽셀들을 프로세싱할 수도 있다. 디스플레이 프로세서 (14) 는 블렌딩된 타일 데이터를 생성하기 위해 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 프로세싱된 픽셀들을 제 1 백그라운드 타일 데이터의 데이터의 서브세트의 픽셀들과 블렌딩할 수도 있다. 디스플레이 프로세서 (14) 는 제 4 메모리 공간에 블렌딩된 타일 데이터를 저장할 수도 있다. 일부 예들에서, 제 1 메모리 공간은 프레임 버퍼일 수도 있고, 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼일 수도 있고, 상기 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼일 수도 있고, 상기 제 4 메모리 공간은 라이트백 핑-퐁 버퍼일 수도 있다.
도 7b 는 본 개시의 디스플레이 프로세싱을 위한 기법에 부합하는 다른 예의 프로세스를 예시하는 플로우차트이다. 예를 들어, 도 7b 는 도 2 에 묘사된 디스플레이 프로세서 (14) 의 동작의 일 예이다. 도 7b 의 프로세스는 일반적으로 예시의 목적으로 디스플레이 프로세서 (14) 에 의해 수행되는 것으로 설명되어 있지만, 다양한 다른 프로세서들이 또한 도 7b 에 도시된 프로세스를 수행할 수도 있다. 일부 예들에서, 프리-페치 프로세싱 유닛 (100) 및/또는 페치 프로세싱 유닛 (110) 은 도 7b 에 도시된 하나 이상의 프로세스들을 수행할 수도 있다.
도 7b 의 예에서, 디스플레이 프로세서 (14) 는 프레임 버퍼로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독할 수도 있다 (220). 디스플레이 프로세서 (14) 는 판독된 제 1 포어그라운드 타일 데이터를 포어그라운드 핑-퐁 버퍼에 저장할 수도 있다 (222). 디스플레이 프로세서 (14) 는 프레임 버퍼로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독할 수도 있다 (224). 디스플레이 프로세서 (14) 는 판독된 제 1 백그라운드 타일 데이터를 백그라운드 핑-퐁 버퍼에 저장할 수도 있다 (226). 디스플레이 프로세서 (14) 는 포어그라운드 핑-퐁 버퍼로부터 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독할 수도 있다 (228). 디스플레이 프로세서 (14) 는 백그라운드 핑-퐁 버퍼로부터 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독할 수도 있다 (230).
도 8 은 디스플레이 프로세서 (14) 의 타일 기반 프로세싱의 일 예를 나타내는 개념도이고, 특히 디스플레이 프로세서 (14) 가 백그라운드 계층 이미지 데이터에 대하여 포어그라운드 계층 이미지 데이터를 회전시킬 때의 일 예에 대해 예시하는 개념도이다. 도 8 은 포어그라운드 이미지 (180), 백그라운드 이미지 (182) 및 블렌딩된 이미지 (184) 를 나타낸다. 포어그라운드 이미지 (180) 및 백그라운드 이미지 (182) 는 GPU (12) 에 의해 출력되어 프레임 버퍼 (예를 들어, 출력 버퍼 (16)) 에 저장될 수도 있다. 이 예에서, 포어그라운드 이미지 (180) 는 타일들 0-15 를 포함하고 백그라운드 이미지 (182) 는 타일 a-p 를 포함한다. 라이트백 이미지 (184) 는 묘사된 바와 같이 블렌드된 타일들을 포함한다. 도 8 에 도시된 예는 디스플레이 프로세서가 포어그라운드 이미지 (또는 이들의 타일들) 의 회전을 수행하여 회전된 백그라운드 이미지 (또는 이들의 타일들) 과 블렌딩하는 방법을 묘사하는 목적으로 도시된다.
프리-페치 프로세싱 유닛 (100) 은 포어그라운드 프리-페치 (186) 및 백그라운드 프리-페치 (188) 를 수행한다. 포어그라운드 프리-페치 (186) 및 백그라운드 프리-페치 (188) 는 병렬로 발생할 수도 또는 발생하지 않을 수도 있다. 포어그라운드 프리-페치 (186) 는 이 예에서, 타일 0-7 인 프리-페치된 포어그라운드 타일 데이터를 디스플레이 프로세서 (14) 에 액세스가능한 포어그라운드 핑-퐁 버퍼에 저장한다. 백그라운드 프리-페치 (188) 는이 예에서, 타일 c 및 d 인 프리-페치된 백그라운드 타일 데이터를 디스플레이 프로세서 (14) 에 액세스가능한 백그라운드 핑-퐁 버퍼에 저장한다.
페치 프로세싱 유닛 (110) 은 포어그라운드 페치 (190) 및 백그라운드 페치 (192) 를 수행한다. 포어그라운드 페치 (190) 및 백그라운드 페치 (192) 는 병렬로 발생할 수도 또는 발생하지 않을 수도 있다. 포어그라운드 페치 (190) 는 하나 이상의 타일들 (또는 포어그라운드 핑-퐁 버퍼로부터의 둘 이상의 타일들) 을 판독할 수도 있다. 이 예에서, 페치 프로세싱 유닛 (110) 은 포어그라운드 핑-퐁 버퍼로부터 포어그라운드 데이터의 2 개의 타일들 (타일 0 및 4) 을 판독 (예를 들어, 페치) 할 수도 있다. 백그라운드 페치 (192) 는 하나 이상의 타일들 (또는 백그라운드 핑-퐁 버퍼로부터의 둘 이상의 타일들) 을 판독할 수도 있다. 이 예에서, 페치 프로세싱 유닛 (110) 은 백그라운드 핑-퐁 버퍼로부터 백그라운드 데이터의 2 개의 타일들 (타일 c 및 d) 을 판독 (예를 들어, 페치) 할 수도 있다.
픽셀 프로세싱 유닛 (130) 은 이 예에서, 수직방향으로 배향된 타일 0 및 4 인 페치된 포어그라운드 타일 데이터를 회전 백그라운드 이미지 (182) 에 따르도록 회전시킬 수도 있다 (도 8 에서의 회전 (194) 으로서 도시됨). 이 예에서, 페치된 포어그라운드 타일 데이터는 타일 0 및 4 가 페치된 백그라운드 타일 데이터와 마찬가지로 수평방향으로 배향되도록 90 도 반시계방향으로 회전된다. 일부 예들에서, 페치 프로세싱 유닛 (110) 이 백그라운드 페치 (192) 를 수행하는 동안, 도시되는 페치된 포어그라운드 데이터의 회전이 수행될 수도 있다. 다른 예에서, 페치된 포어그라운드 데이터의 회전은 포어그라운드 페치 (190) 및 백그라운드 페치 (192) 가 수행된 후에 수행될 수도 있다.
디스플레이 프로세서 (14) 의 블렌드 프로세싱 유닛 (140) 은 블렌딩된 타일 데이터 (예를 들어, 타일들 4/c 및 0/d) 을 생성하기 위해 회전되어진 페치된 포어그라운드 타일 데이터 (예를 들어, 타일 0 및 4) 와 페치된 백그라운드 타일 데이터 (예를 들어, 타일 c 및 도 d) 를 블렌딩할 수도 있다 (도 8 에서 블렌드 (96) 로서 도시됨). 블렌딩된 타일 데이터는 라이트백 핑-퐁 버퍼에 라이트백될 수도 있다 (도 8 에서 라이트백 (198) 으로서 도시됨).
도 8 에 도시된 예에서, 전체 프로세싱 시퀀스는 도시되지 않는다. 일부 예들에서, 프로세싱 시퀀스는 이 패라그래프에 설명된 바와 같을 수도 있다. 다른 예들에서, 프로세싱 시퀀스는 이 패라그래프에 설명된 프로세싱 시퀀스와 상이할 수도 있다. 프리페치 프로세싱 유닛 (100) 은 다음 시퀀스: 0, 4, 1, 5, 2, 6, 3, 7, 8, 12, 9, 13, 10, 14, 11, 15 로 타일 0-15 을 프리페치하도록 구성될 수도 있다. 일부 예들에서, 타일 0-7 이 먼저 프리페치될 수도 있고 타일 8-15 가 두번째로 프리페치될 수도 있다. 다른 예들에서, 하나 이상의 타일들 0-15 이 프리페치될 수도 있다. 타일들 0-15 의 임의의 프리-페칭은 타일들 a-p 의 임의의 프리-페치와 병렬로 프리페치될 수도 또는 프리-페치되지 않을 수도 있다. 프리-페치 프로세싱 유닛 (100) 은 다음의 시퀀스 : d, c, h, g, l, k, p, o, b, a, f, e, j, i, n, m 로 타일들 a-p 을 프리-페치하도록 구성될 수도 있다. 일부 예들에서, 타일들 d 및 c 가 먼저 프리-페치될 수도 있고, 타일들 h 및 g 가 두번째로 프리-페치될 수도 있고, 타일들 l 및 k 가 세번째로 프리-페치될 수도 있고, 타일들 p 및 o 가 네번째로 프리-페치될 수도 있고, 타일들 b 및 a 가 다섯번째로 프리-페치될 수도 있고, 타일들 f 및 e 가 여섯번째로 프리-페치될 수도 있고, 타일들 j 및 i 가 일곱번째로 프리-페치될 수도 있고, 타일들 n 및 m 이 8번째로 프리-페치될 수도 있다. 다른 예들에서, 하나 이상의 타일들 a-p 이 프리-페치될 수도 있다. 타일들 a-p 의 임의의 프리-페칭은 타일들 0-15 의 임의의 프리-페치와 병렬로 프리-페치될 수도 또는 프리-페치되지 않을 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 는 다음 시퀀스 : 0/d, 4/c, 1/h, 5/g, 2/l, 6/k, 3/p, 7/o, 8/b, 12/a, 9/f, 13/e, 10/j, 14/i, 11,/n, 15/m 에 따라 메모리에 블렌딩된 타일들을 라이트백하도록 구성될 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 는 둘 이상의 타일들의 그룹들로 위의 시퀀스에 따라 블렌딩된 타일들을 라이트백하도록 구성될 수도 있다. 예를 들어, 디스플레이 프로세서 (14) 는 타일들 0/d 및 4/c 를 먼저 라이트백하도록 구성될 수도 있고 그 다음 디스플레이 프로세서 (14) 는 타일들 1/h 및 5/g 를 라이트백하도록 구성될 수도 있는 등으로 이루어진다. 일부 예들에서, 디스플레이 프로세서 (14) 는 위의 프로세싱 시퀀스를 따르는 것에 의해 메모리 요청의 버스트 길이를 증가시키도록 구성될 수도 있다. 예를 들어, 디스플레이 프로세서 (14) 는 수평으로 인접하는 백그라운드 타일들을 프리-페치하는 것에 의해 메모리 요청들의 버스트 길이를 증가시키도록 구성될 수도 있다.
본 개시에 따르면, 용어 "또는" 은 컨텍스트에 달리 언급되지 않는 경우 "및/또는" 으로서 해석될 수도 있다. 추가적으로, 어구, 이를 테면, "하나 이상", 또는 "적어도 하나" 등이 본원에 개시된 일부 특징에 이용될 수도 있지만, 이러한 말이 이용되지 않는 특징은 컨텍스트에 달리 언급되지 않는 경우 이러한 함축된 의미를 갖는 것으로 해석될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 예를 들어, 용어 "프로세싱 유닛" 이 본 개시 전반에 걸쳐 이용되어 있지만, 이러한 프로세싱 유닛들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합에서 구현될 수도 있음을 이해한다. 임의의 기능, 프로세싱 유닛, 본원에 설명된 기법 또는 다른 모듈이 소프트웨어로 구현되면, 임의의 기능, 프로세싱 유닛, 본원에 설명된 기법 또는 다른 모듈은 하나 이상의 명령들 또는 컴퓨터 판독가능 매체 상의 코드로서 저저장 또는 송신될 수도 있다. 컴퓨터 판독가능 매체들은 컴퓨터 데이터 스토리지 매체들, 또는 컴퓨터 프로그램을 한 곳에서 다른 곳으로 전송하는 것을 가능하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독 가능한 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 이 개시물에 설명된 기법들의 구현을 위한 명령들, 코드, 및/또는 데이터 구조들을 검색하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 혹은 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들을 포함하고, 본원에서 이용되는 바와 같은 디스크 (disk) 및 디스크 (disc) 는 CD (compact disc), 레이저 디스크, 광 디스크, DVD (digital versatile disc), 플로피 디스크, 및 블루레이 디스크를 포함하는데, 여기서 디스크 (disk) 는 보통 데이터를 자기적으로 재생하며, 반면 디스크 (disc) 는 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
하나 이상의 디지털 신호 프로세서 (DSP) 들, 범용 마이크로프로세서들, ASIC (application specification integrated circuit), FPGA (field programmable gate array), 또는 임의의 다른 균등한 통합된 또는 개별적인 로직 회로부에 의해 코드가 실행될 수도 있다. 따라서, 본원에서 사용된 용어 "프로세서"는 임의의 앞서 설명된 구조 또는 본원에서 설명된 기술들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 또한, 몇몇 양상들에서, 본원에서 설명된 기능성은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 또는 통합 코덱에 통합될 수도 있다. 또한, 상기 기법들은 하나 이상의 회로들 또는 로직 소자들에서 완전히 구현될 수 있다.
본 개시의 기법들은, 무선 헤드셋, 집적 회로(IC) 또는 ICs의 세트를 포함하는 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태를 강조하기 위해 다양한 소자들, 모듈들, 또는 유닛들이 본 개시에서 설명되었지만, 반드시 상이한 하드웨어 유닛들에 의해 실현될 필요는 없다. 대신, 상술한 바와 같이, 다양한 유닛들은, 적절한 소프트웨어 및/또는 펌웨어와 연계하여, 코덱 하드웨어 유닛에 통합되거나 또는 상술한 하나 이상의 프로세서들을 포함하여 상호 동작적인 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
본 개시의 여러 양태들이 설명되었다. 이들 및 다른 양태들은 하기의 특허청구범위의 범위 내에 있다.

Claims (30)

  1. 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법으로서,
    상기 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해, 제 1 메모리 공간으로부터 포어그라운드 (foreground) 이미지의 제 1 포어그라운드 타일 데이터를 판독하는 단계;
    상기 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해, 판독된 상기 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하는 단계;
    상기 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해, 상기 제 1 메모리 공간으로부터 백그라운드 (background) 이미지의 제 1 백그라운드 타일 데이터를 판독하는 단계;
    상기 디스플레이 프로세서의 프리-페치 프로세싱 유닛에 의해, 판독된 상기 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하는 단계;
    상기 디스플레이 프로세서의 페치 프로세싱 유닛에 의해, 상기 제 2 메모리 공간으로부터 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하는 단계; 및
    상기 디스플레이 프로세서의 페치 프로세싱 유닛에 의해, 상기 제 3 메모리 공간으로부터 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하는 단계를 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  2. 제 1 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 픽셀들을 프로세싱하는 단계를 더 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  3. 제 2 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 프로세싱된 픽셀들을 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트의 픽셀들과 블렌딩하는 것에 의해 블렌딩된 타일 데이터를 생성하는 단계를 더 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  4. 제 3 항에 있어서,
    상기 블렌딩된 타일 데이터를 제 4 메모리 공간에 저장하는 단계를 더 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  5. 제 4 항에 있어서,
    상기 제 1 메모리 공간은 프레임 버퍼이고, 상기 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼이고, 상기 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼이고, 상기 제 4 메모리 공간은 라이트백 핑-퐁 버퍼인, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  6. 제 1 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터는 포어그라운드 이미지의 적어도 하나의 타일을 포함하고, 상기 제 1 백그라운드 타일 데이터는 백그라운드 이미지의 적어도 하나의 타일을 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  7. 제 1 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터는 포어그라운드 이미지의 적어도 2 개의 타일들을 포함하고, 상기 제 1 백그라운드 타일 데이터는 백그라운드 이미지의 적어도 2 개의 타일들을 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  8. 제 1 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트는 포어그라운드 이미지의 적어도 하나의 타일을 포함하고, 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트는 백그라운드 이미지의 적어도 하나의 타일을 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  9. 제 1 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트는 포어그라운드 이미지의 적어도 2 개의 타일들을 포함하고, 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트는 백그라운드 이미지의 적어도 2 개의 타일들을 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  10. 제 1 항에 있어서,
    상기 포어그라운드 타일 데이터를 판독하고 저장하는 것은 상기 백그라운드 타일 데이터를 판독하고 저장하기 전에 발생하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  11. 제 1 항에 있어서,
    상기 포어그라운드 타일 데이터를 판독하고 저장하는 것은 상기 백그라운드 타일 데이터를 판독하고 저장하는 것과 병렬로 발생하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  12. 제 1 항에 있어서,
    포어그라운드 타일 데이터 스케일링 정보 또는 백그라운드 타일 데이터 회전 정보에 기초하여 상기 제 2 메모리 공간 또는 상기 제 3 메모리 공간 중 적어도 하나에 대한 사이즈를 결정하는 단계를 더 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  13. 제 12 항에 있어서,
    상기 사이즈에 기초하여 상기 제 2 메모리 공간 또는 상기 제 3 메모리 공간 중 적어도 하나에 대해 메모리를 할당하는 단계를 더 포함하는, 디스플레이 프로세서에 의한 타일 기반 프로세싱 방법.
  14. 컴퓨팅 디바이스로서,
    제 1 메모리 공간;
    포어그라운드 이미지의 포어그라운드 타일 데이터를 저장하는 제 2 메모리 공간;
    백그라운드 이미지의 백그라운드 타일 데이터를 저장하는 제 3 메모리 공간; 및
    프리-페치 프로세싱 유닛 및 페치 프로세싱 유닛을 포함하는 디스플레이 프로세서를 포함하고,
    상기 프리-페치 프로세싱 유닛은 상기 제 1 메모리 공간으로부터 상기 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하고, 판독된 상기 제 1 포어그라운드 타일 데이터를 상기 제 2 메모리 공간에 저장하고, 상기 제 1 메모리 공간으로부터 상기 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하고, 판독된 상기 제 1 백그라운드 타일 데이터를 상기 제 3 메모리 공간에 저장하도록 구성되고,
    상기 페치 프로세싱 유닛은 상기 제 2 메모리 공간으로부터 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하고 상기 제 3 메모리 공간으로부터 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하도록 구성되는, 컴퓨팅 디바이스.
  15. 제 14 항에 있어서,
    상기 컴퓨팅 디바이스는 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 픽셀들을 프로세싱하도록 구성되는 픽셀 프로세싱 유닛을 더 포함하는, 컴퓨팅 디바이스.
  16. 제 15 항에 있어서,
    상기 컴퓨팅 디바이스는 블렌딩된 타일 데이터를 생성하기 위해 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 프로세싱된 픽셀들을 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트의 픽셀들과 블렌딩하도록 구성되는 블렌드 프로세싱 유닛을 더 포함하는, 컴퓨팅 디바이스.
  17. 제 16 항에 있어서,
    상기 디스플레이 프로세서는 또한, 상기 블렌딩된 타일 데이터를 제 4 메모리 공간에 저장하도록 구성되는, 컴퓨팅 디바이스.
  18. 제 17 항에 있어서,
    상기 제 1 메모리 공간은 프레임 버퍼이고, 상기 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼이고, 상기 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼이고, 상기 제 4 메모리 공간은 라이트백 핑-퐁 버퍼인, 컴퓨팅 디바이스.
  19. 제 14 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터는 포어그라운드 이미지의 적어도 하나의 타일을 포함하고, 상기 제 1 백그라운드 타일 데이터는 백그라운드 이미지의 적어도 하나의 타일을 포함하는, 컴퓨팅 디바이스.
  20. 제 14 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터는 포어그라운드 이미지의 적어도 2 개의 타일들을 포함하고, 상기 제 1 백그라운드 타일 데이터는 백그라운드 이미지의 적어도 2 개의 타일들을 포함하는, 컴퓨팅 디바이스.
  21. 제 14 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트는 포어그라운드 이미지의 적어도 하나의 타일을 포함하고, 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트는 백그라운드 이미지의 적어도 하나의 타일을 포함하는, 컴퓨팅 디바이스.
  22. 제 14 항에 있어서,
    상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트는 포어그라운드 이미지의 적어도 2 개의 타일들을 포함하고, 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트는 백그라운드 이미지의 적어도 2 개의 타일들을 포함하는, 컴퓨팅 디바이스.
  23. 제 14 항에 있어서,
    상기 프리-페치 프로세싱 유닛은 상기 백그라운드 타일 데이터를 판독하고 저장하기 전에 상기 포어그라운드 타일 데이터를 판독하고 저장하도록 구성되는, 컴퓨팅 디바이스.
  24. 제 14 항에 있어서,
    상기 프리-페치 프로세싱 유닛은 상기 백그라운드 타일 데이터를 판독하고 저장하는 것과 병렬로 상기 포어그라운드 타일 데이터를 판독하고 저장하도록 구성되는, 컴퓨팅 디바이스.
  25. 제 14 항에 있어서,
    상기 프리-페치 프로세싱 유닛은 포어그라운드 타일 데이터 스케일링 정보 또는 백그라운드 타일 데이터 회전 정보에 기초하여 상기 제 2 메모리 공간 또는 상기 제 3 메모리 공간 중 적어도 하나에 대한 사이즈를 결정하도록 구성되는, 컴퓨팅 디바이스.
  26. 제 25 항에 있어서,
    상기 프리-페치 프로세싱 유닛은 상기 사이즈에 기초하여 상기 제 2 메모리 공간 또는 상기 제 3 메모리 공간 중 적어도 하나에 대해 메모리를 할당하도록 구성되는, 컴퓨팅 디바이스.
  27. 장치로서,
    제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하기 위한 수단;
    판독된 상기 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하기 위한 수단;
    상기 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하기 위한 수단;
    판독된 상기 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하기 위한 수단;
    상기 제 2 메모리 공간으로부터 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하기 위한 수단; 및
    상기 제 3 메모리 공간으로부터 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하기 위한 수단을 포함하는, 장치.
  28. 제 27 항에 있어서,
    제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 픽셀들을 프로세싱하기 위한 수단;
    블렌딩된 타일 데이터를 생성하기 위해 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 프로세싱된 픽셀들을 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트의 픽셀들과 블렌딩하기 위한 수단; 및
    상기 블렌딩된 타일 데이터를 제 4 메모리 공간에 저장하기 위한 수단을 더 포함하고, 상기 제 1 메모리 공간은 프레임 버퍼이고, 상기 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼이고, 상기 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼이고, 상기 제 4 메모리 공간은 라이트백 핑-퐁 버퍼인, 장치.
  29. 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은 실행될 때 컴퓨팅 디바이스의 하나 이상의 프로세서들로 하여금:
    제 1 메모리 공간으로부터 포어그라운드 이미지의 제 1 포어그라운드 타일 데이터를 판독하게 하고;
    판독된 상기 제 1 포어그라운드 타일 데이터를 제 2 메모리 공간에 저장하게 하고;
    상기 제 1 메모리 공간으로부터 백그라운드 이미지의 제 1 백그라운드 타일 데이터를 판독하게 하고;
    판독된 상기 제 1 백그라운드 타일 데이터를 제 3 메모리 공간에 저장하게 하고;
    상기 제 2 메모리 공간으로부터 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트를 판독하게 하고; 그리고
    상기 제 3 메모리 공간으로부터 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트를 판독하게 하는, 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체.
  30. 제 29 항에 있어서,
    상기 명령들은 실행될 때, 컴퓨팅 디바이스의 하나 이상의 프로세서들로 하여금:
    상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 픽셀들을 프로세싱하게 하고;
    블렌딩된 타일 데이터를 생성하기 위해 상기 제 1 포어그라운드 타일 데이터의 데이터의 서브세트의 프로세싱된 픽셀들을 상기 제 1 백그라운드 타일 데이터의 데이터의 서브세트의 픽셀들과 블렌딩하게 하고; 그리고
    상기 블렌딩된 타일 데이터를 제 4 메모리 공간에 저장하게 하며, 상기 제 1 메모리 공간은 프레임 버퍼이고, 상기 제 2 메모리 공간은 포어그라운드 핑-퐁 버퍼이고, 상기 제 3 메모리 공간은 백그라운드 핑-퐁 버퍼이고, 상기 제 4 메모리 공간은 라이트백 핑-퐁 버퍼인, 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체.
KR1020187011134A 2015-09-21 2016-08-01 프리-페칭에 의한 효율적 디스플레이 프로세싱 KR20180054797A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/860,225 US9990690B2 (en) 2015-09-21 2015-09-21 Efficient display processing with pre-fetching
US14/860,225 2015-09-21
PCT/US2016/044979 WO2017052781A1 (en) 2015-09-21 2016-08-01 Efficient display processing with pre-fetching

Publications (1)

Publication Number Publication Date
KR20180054797A true KR20180054797A (ko) 2018-05-24

Family

ID=56853799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187011134A KR20180054797A (ko) 2015-09-21 2016-08-01 프리-페칭에 의한 효율적 디스플레이 프로세싱

Country Status (7)

Country Link
US (1) US9990690B2 (ko)
EP (1) EP3353737A1 (ko)
JP (1) JP2018534607A (ko)
KR (1) KR20180054797A (ko)
CN (1) CN108027958A (ko)
BR (1) BR112018007224A2 (ko)
WO (1) WO2017052781A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150228106A1 (en) * 2014-02-13 2015-08-13 Vixs Systems Inc. Low latency video texture mapping via tight integration of codec engine with 3d graphics engine
USD772889S1 (en) 2014-10-06 2016-11-29 National Comprehensive Cancer Network Display screen or portion thereof with graphical user interface for clinical practice guidelines
USD770468S1 (en) 2014-10-06 2016-11-01 National Comprehensive Cancer Network Display screen or portion thereof with graphical user interface for clinical practice guidelines
KR102583929B1 (ko) * 2017-02-24 2023-10-04 삼성전자주식회사 디스플레이 장치 및 그 제어 방법
KR102554419B1 (ko) * 2017-12-26 2023-07-11 삼성전자주식회사 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US10257487B1 (en) 2018-01-16 2019-04-09 Qualcomm Incorporated Power efficient video playback based on display hardware feedback
US10798510B2 (en) * 2018-04-18 2020-10-06 Philip Scott Lyren Method that expedites playing sound of a talking emoji
GB2575030B (en) * 2018-06-22 2020-10-21 Advanced Risc Mach Ltd Data processing systems
CN109461113B (zh) * 2018-10-11 2021-07-16 中国人民解放军国防科技大学 一种面向数据结构的图形处理器数据预取方法及装置
US10950305B1 (en) * 2018-11-02 2021-03-16 Facebook Technologies, Llc Selective pixel output
CN112997245A (zh) * 2018-11-14 2021-06-18 韦斯特尔电子工业和贸易有限责任公司 用于生成图像的方法、计算机程序和装置
CN110737321B (zh) * 2019-09-03 2024-04-02 珠海亿智电子科技有限公司 一种低功耗显示背景图像的图像显示装置及其方法
CN114168505B (zh) * 2021-11-30 2023-12-01 中国电子科技集团公司第四十七研究所 图像dma控制器及其实现方法
CN114666289B (zh) * 2022-03-18 2024-01-16 安方高科电磁安全技术(北京)有限公司 一种基于电磁屏蔽体的数据传输方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4540753B2 (ja) * 1995-08-04 2010-09-08 マイクロソフト コーポレーション グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
US6002407A (en) 1997-12-16 1999-12-14 Oak Technology, Inc. Cache memory and method for use in generating computer graphics texture
JP3956843B2 (ja) * 2002-12-18 2007-08-08 株式会社デンソー 移動物体検出装置及びプログラム
US7433494B2 (en) * 2002-09-19 2008-10-07 Denso Corporation Moving body detecting apparatus
US6911983B2 (en) * 2003-03-12 2005-06-28 Nvidia Corporation Double-buffering of pixel data using copy-on-write semantics
KR20070095984A (ko) * 2005-01-04 2007-10-01 신세다이 가부시끼가이샤 묘화 장치 및 묘화 방법
TWI397899B (zh) 2007-04-30 2013-06-01 Mstar Semiconductor Inc 多視窗顯示控制器及相關方法
CN101226504B (zh) * 2008-01-25 2010-08-11 炬力集成电路设计有限公司 一种防止存储器读损的方法及装置
JP5202281B2 (ja) * 2008-12-19 2013-06-05 キヤノン株式会社 画像処理装置及び画像処理方法
GB2470611B (en) * 2009-06-25 2011-06-29 Tv One Ltd Apparatus and method for processing data
JP5578400B2 (ja) * 2009-07-16 2014-08-27 Nltテクノロジー株式会社 画像表示装置、及び該画像表示装置に用いられる駆動方法
US8988443B2 (en) 2009-09-25 2015-03-24 Arm Limited Methods of and apparatus for controlling the reading of arrays of data from memory
US8724914B2 (en) 2009-10-26 2014-05-13 Sony Corporation Image file generation device, image processing device, image file generation method, image processing method, and data structure for image files
US8405668B2 (en) 2010-11-19 2013-03-26 Apple Inc. Streaming translation in display pipe
JP2013047747A (ja) * 2011-08-29 2013-03-07 Daito Giken:Kk 遊技台
US8803920B2 (en) 2011-12-12 2014-08-12 Google Inc. Pre-fetching map tile data along a route
CN103310422B (zh) * 2013-06-28 2016-08-31 新晨易捷(北京)科技有限公司 获取图像的方法及装置
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer

Also Published As

Publication number Publication date
EP3353737A1 (en) 2018-08-01
JP2018534607A (ja) 2018-11-22
US20170083999A1 (en) 2017-03-23
CN108027958A (zh) 2018-05-11
BR112018007224A2 (pt) 2018-10-16
WO2017052781A1 (en) 2017-03-30
US9990690B2 (en) 2018-06-05

Similar Documents

Publication Publication Date Title
US9990690B2 (en) Efficient display processing with pre-fetching
WO2021231016A1 (en) Methods and apparatus for atlas management of augmented reality content
WO2018057109A1 (en) Cache and compression interoperability in a graphics processor pipeline
US10163180B2 (en) Adaptive memory address scanning based on surface format for graphics processing
EP3350766B1 (en) Storing bandwidth-compressed graphics data
US20110148894A1 (en) Demand-paged textures
US20170372452A1 (en) Image rotation method and apparatus
TWI786233B (zh) 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體
US10013735B2 (en) Graphics processing unit with bayer mapping
US12020378B2 (en) Compressed geometry rendering and streaming
WO2017000605A1 (zh) 片上系统、图形绘制方法、中间层及嵌入式设备、介质
US11574380B2 (en) Methods and apparatus for optimizing GPU kernel with SIMO approach for downscaling utilizing GPU cache
TW202236205A (zh) 計算工作負載的光柵化
US11622113B2 (en) Image-space function transmission
TW202134996A (zh) 用於減少渲染資訊的傳輸的方法和裝置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application