KR20230121933A - 저 레이턴시 컴포저 - Google Patents

저 레이턴시 컴포저 Download PDF

Info

Publication number
KR20230121933A
KR20230121933A KR1020237026867A KR20237026867A KR20230121933A KR 20230121933 A KR20230121933 A KR 20230121933A KR 1020237026867 A KR1020237026867 A KR 1020237026867A KR 20237026867 A KR20237026867 A KR 20237026867A KR 20230121933 A KR20230121933 A KR 20230121933A
Authority
KR
South Korea
Prior art keywords
layers
dpu
fence
frame
gpu
Prior art date
Application number
KR1020237026867A
Other languages
English (en)
Other versions
KR102603856B1 (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 KR20230121933A publication Critical patent/KR20230121933A/ko
Application granted granted Critical
Publication of KR102603856B1 publication Critical patent/KR102603856B1/ko

Links

Images

Classifications

    • 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/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • 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/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • 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
    • 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
    • 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
    • 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/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • G09G5/397Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0252Improving the response speed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/10Mixing of images, i.e. displayed pixel being the result of an operation, e.g. adding, on the corresponding input pixels
    • 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/06Use of more than one graphics processor to process data before displaying to one or more screens
    • 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/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • 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)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Digital Computer Display Output (AREA)

Abstract

일부 양태들에서, 본 개시는 프레임을 생성하기 위한 방법을 제공한다. 방법은 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 단계를 포함한다. 방법은 또한 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 단계를 포함하고, 복수의 계층들은 제 2 프레임에 대응한다. 방법은 또한 제 2 프레임의 컴포지션(composition)을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 단계를 포함한다. 방법은 또한 DPU 버퍼로부터 제 1 펜스를 페치하고 제 2 펜스를 생성하는 단계를 포함한다.

Description

저 레이턴시 컴포저
관련 출원(들)에 대한 상호 참조
이 출원은 2021 년 2 월 16 일 출원된 미국 출원 제 17/176,767 호의 이익 및 우선권을 주장하며, 이는 하기에서 완전히 제시되는 바와 같이 그 전부가 본 명세서에 참조로 모든 적용가능한 목적들을 위해 포함된다.
개시 분야
본 개시의 교시들은 일반적으로 그래픽스 및 디스플레이 동작들에 관한 것으로, 특히 디스플레이 프레임을 생성하기 위한 기법들에 관한 것이다.
컴퓨팅 디바이스들은 종종 그래픽스 프로세싱 유닛 (graphics processing unit; GPU) 을 사용하여 디스플레이를 위한 그래픽 데이터의 렌더링을 가속화하고, 디스플레이 프로세싱 유닛 (display processing unit; DPU) 을 사용하여 그래픽 데이터를 프로세싱하여 디스플레이를 위한 디스플레이 패널에 전송한다. 이러한 컴퓨팅 디바이스는 예를 들어, 컴퓨터 워크 스테이션, 모바일 폰, 예컨대 소위 스마트폰, 임베디드 시스템, 개인용 컴퓨터, 태블릿 컴퓨터 및 비디오 게임 콘솔을 포함할 수도 있다. GPU들은 통상적으로 함께 동작하여 그래픽스 프로세싱 커맨드들을 실행하고 프레임을 출력하는 하나 이상의 프로세싱 스테이지를 포함하는 그래픽스 프로세싱 파이프라인을 실행한다. 중앙 프로세싱 유닛 (CPU) 은 하나 이상의 그래픽스 프로세싱 커맨드들을 GPU 에 발행함으로써 GPU 의 동작을 제어할 수도 있다. 현대의 CPU들은 통상적으로 다중 애플리케이션들을 동시에 실행할 수 있으며, 그 각각은 실행 동안 GPU 를 활용해야 할 수도 있다.
전자 디바이스 상에서 실행되는 애플리케이션은 모니터와 같은 디스플레이를 위한 프레임을 생성하기 위해 컴포지션될 수 있는 여러 계층들을 렌더링할 수도 있다. 소정의 양태들에서, DPU 및 GPU 는 프레임을 생성하기 위해 소정의 계층들을 부분적으로 컴포지션함으로써 프레임을 생성한다. 이러한 양태들에서, GPU 및 DPU 동작들은 종종 DPU 가 GPU 에 의해 컴포지션된 계층들과 다른 계층들의 컴포지션을 시작할 수 있기 전에 GPU 가 계층 컴포지션을 수행 및 완료하도록 직렬화된다. 그러나, 이러한 직렬화는 DPU 및 GPU, 그리고 다른 소프트웨어 및 하드웨어 컴포넌트들에 대한 비교적 긴 유휴 시간들을 초래할 수 있고, 또한 프레임의 완료를 위해 필요한 시간의 양을 연장할 수 있다.
본 개시의 시스템들, 방법들 및 디바이스들은 각각 여러 양태들을 가지며, 이들 중 단 하나만이 단독으로 그의 바람직한 속성들을 전적으로 담당하지 않는다. 이러한 논의를 고려한 후, 특히, "상세한 설명" 이라는 제목의 섹션을 읽은 후, 본 개시의 특징들이 디스플레이 프레임을 생성하기 위한 동작들에서 감소된 레이턴시를 포함하는 이점들을 어떻게 제공하는지를 이해할 것이다.
소정의 양태들은 프레임을 생성하기 위한 방법에 관한 것이다. 방법은 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 단계를 포함한다. 방법은 또한 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 단계를 포함하고, 복수의 계층들은 제 2 프레임에 대응한다. 방법은 또한 제 2 프레임의 컴포지션(composition)을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 단계를 포함한다. 방법은 또한, 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여: DPU 버퍼로부터 제 1 펜스를 페치하는 단계, 및 제 2 펜스를 생성하는 단계를 포함한다. 방법은 또한 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 단계를 포함하고, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시된다. 방법은 또한 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 단계를 포함하고, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시된다. 방법은 또한 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 단계를 포함한다. 방법은 또한, 제 3 펜스를 수신하는 것에 응답하여: DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하는 단계, 및 DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하는 단계를 포함한다. 방법은 또한 제 2 프레임을 하드웨어 컴포넌트에 제공하는 단계를 포함한다.
소정의 양태들은 프레임을 생성하기 위해 구성된 장치에 관한 것이다. 일부 양태들에서, 장치는 메모리 및 메모리에 커플링된 프로세서를 포함한다. 일부 예들에서, 프로세서 및 메모리는 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하도록 구성된다. 일부 예들에서, 프로세서 및 메모리는, 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하도록 구성되고, 복수의 계층들은 제 2 프레임에 대응한다. 일부 예들에서, 프로세서 및 메모리는 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하도록 구성된다. 일부 예들에서, 프로세서 및 메모리는, 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여: DPU 버퍼로부터 제 1 펜스를 페치하고, 제 2 펜스를 생성하도록 구성된다. 일부 예들에서, 프로세서 및 메모리는 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하도록 구성되고, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시된다. 일부 예들에서, 프로세서 및 메모리는 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하도록 구성되고, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시된다. 일부 예들에서, 프로세서 및 메모리는 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하도록 구성된다. 일부 예들에서, 프로세서 및 메모리는 제 3 펜스를 수신하는 것에 응답하여: DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하고, DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하도록 구성된다. 일부 예들에서, 프로세서 및 메모리는 제 2 프레임을 하드웨어 컴포넌트에 제공하도록 구성된다.
소정의 양태들은 프레임을 생성하기 위한 장치에 관한 것이다. 일부 예들에서, 장치는 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 수단을 포함한다. 일부 예들에서, 장치는 제 1 펜스를 수신하는 것에 응답하여 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 수단을 포함하고, 복수의 계층들은 제 2 프레임에 대응한다. 일부 예들에서, 장치는 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 수단을 포함한다. 일부 예들에서, 장치는 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여 DPU 버퍼로부터 제 1 펜스를 페치하는 수단을 포함한다. 일부 예들에서, 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여 제 2 펜스를 생성하는 수단을 포함한다. 일부 예들에서, 장치는 제 2 펜스를 생성하는 것에 응답하여 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 수단을 포함한다. 일부 예들에서, 장치는 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 수단을 포함하고, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시된다. 일부 예들에서, 장치는 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 수단을 포함한다. 일부 예들에서, 장치는 DPU 프로세스에 의해, 제 3 펜스를 수신하는 것에 응답하여 하나 이상의 컴포지션된 계층들을 페치하는 수단을 포함한다. 일부 예들에서, 장치는 DPU 프로세스에 의해, 제 3 펜스를 수신하는 것에 응답하여 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하는 수단을 포함한다. 일부 예들에서, 장치는 제 2 프레임을 하드웨어 컴포넌트에 제공하는 수단을 포함한다.
소정의 양태들은 프레임을 생성하는 방법을 수행하기 위한 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체에 관련된다. 일부 예들에서, 방법은 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 단계를 포함한다. 방법은 또한 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 단계를 포함하고, 복수의 계층들은 제 2 프레임에 대응한다. 방법은 또한 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 단계를 포함한다. 방법은 또한, 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여: DPU 버퍼로부터 제 1 펜스를 페치하는 단계, 및 제 2 펜스를 생성하는 단계를 포함한다. 방법은 또한 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 단계를 포함하고, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시된다. 방법은 또한 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 단계를 포함하고, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시된다. 방법은 또한 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 단계를 포함한다. 방법은 또한, 제 3 펜스를 수신하는 것에 응답하여: DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하는 단계, 및 DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하는 단계를 포함한다. 방법은 또한 제 2 프레임을 하드웨어 컴포넌트에 제공하는 단계를 포함한다.
전술한 목적 및 관련 목적의 달성을 위해, 하나 이상의 양태가 이하 충분히 설명되고 청구항들에서 특별히 적시되는 특징들을 포함한다. 다음의 설명 및 첨부 도면들은 하나 이상의 양태의 특정한 예시적인 특징들을 상세히 기술한다. 하지만, 이들 특징들은 다양한 양태들의 원리들이 채용될 수도 있는 다양한 방식들 중 몇몇만을 나타낸다.
본 개시의 위에서 언급된 특징들이 상세히 이해될 수 있도록, 위에서 간략하게 요약된 보다 특정한 설명이 양태들을 참조하여 이루어질 수도 있으며, 그 양태들 중 일부가 도면들에 예시된다. 그러나, 첨부된 도면들은 본 개시의 소정의 양태들만을 도시하고 설명은 다른 동등하게 효과적인 양태들을 허용할 수도 있음을 유의해야 한다.
도 1 은 본 개시에 설명된 기법들을 구현하는데 사용될 수도 있는 일 예의 컴퓨팅 디바이스를 도시하는 블록 다이어그램이다.
도 2 는 본 개시의 소정의 양태들에 따른 예시의 디스플레이 파이프라인을 도시하는 블록 다이어그램이다.
도 3 은 본 개시의 소정의 양태들에 따른, 도 2 의 컴포지터, 하드웨어 컴포저 및 드라이버에 의해 수행되는 프레임 프로세싱 동작을 도시하는 블록 다이어그램이다.
도 4 는 본 개시의 소정의 양태들에 따른, 도 2 의 컴포지터, 하드웨어 컴포저 및 드라이버에 의해 수행되는 프레임 프로세싱 동작을 도시하는 블록 다이어그램이다.
도 5 는 본 개시의 소정의 양태들에 따른, 디스플레이를 위한 프레임을 생성하기 위한 예시의 동작들을 도시하는 플로우 챠트이다.
소정의 양태들에서, 컴퓨팅 디바이스는 컴퓨팅 디바이스 및/또는 모니터 또는 프린터와 같은 다른 주변 디바이스들 상에서 그래픽스 및 디스플레이 기능성을 지원하기 위한 그래픽스 프로세싱 유닛 (GPU) 및 디스플레이 프로세싱 유닛 (DPU) 을 포함할 수도 있다.
본 명세서에서 사용된 바와 같이, 용어 "콘텐츠" 의 인스턴스들은 "이미지 데이터의 계층들", "그래픽 콘텐츠", "이미지" 를 지칭할 수도 있으며, 그 역 또한 마찬가지이다. 이것은 용어들이 형용사, 명사 또는 다른 품사들로서 사용되고 있는지에 관계없이 사실이다. 일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽스 프로세싱 파이프라인의 하나 이상의 프로세스에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽스 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽스 프로세싱 유닛 (GPU) 에 의해 생성되거나 그렇지 않으면 디스플레이 프로세싱 유닛 (DPU) 에 의해 수신된 콘텐츠를 지칭할 수도 있다.
일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "디스플레이 콘텐츠" 는 디스플레이 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "디스플레이 콘텐츠" 는 디스플레이 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 그래픽 콘텐츠는 디스플레이 콘텐츠가 되도록 프로세싱될 수도 있다. 예를 들어, GPU 는 프레임과 같은 그래픽 콘텐츠를 버퍼 (프레임버퍼로서 지칭될 수도 있음) 에 출력할 수도 있다. 디스플레이 프로세싱 유닛은 버퍼로부터 하나 이상의 프레임과 같은 그래픽 콘텐츠를 판독하고, 그 상에서 하나 이상의 디스플레이 프로세싱 기법을 수행하여 디스플레이 콘텐츠를 생성할 수도 있다.
예를 들어, DPU 는 프레임을 생성하기 위해 하나 이상의 렌더링된 계층들에 대해 컴포지션을 수행하도록 구성될 수도 있다. 일부 경우들에서, GPU 는 또한, 동일한 것을 행하는데 있어서 DPU 를 보조할 때와 같이, 프레임을 생성하기 위해 하나 이상의 렌더링된 계층들에 대해 컴포지션을 수행하도록 구성될 수도 있다. 다른 예로서, DPU 는 2 이상의 계층들을 단일 프레임으로 함께 컴포즈, 블렌딩 또는 다르게는 조합하도록 구성될 수도 있다. DPU 는 프레임에 대한 스케일링, 예를 들어, 업스케일링 또는 다운스케일링을 수행하도록 구성될 수도 있다. 일부 예들에서, 프레임은 계층을 지칭할 수도 있다. 다른 예들에서, 프레임은 프레임을 형성하기 위해 이미 함께 블렌딩된 2 이상의 계층들을 지칭할 수도 있으며, 즉 프레임은 2 이상의 계층들을 포함하고, 2 이상의 계층들을 포함하는 프레임은 후속하여 블렌딩될 수도 있다.
논의된 바와 같이, GPU 및 DPU 양자 모두는 디스플레이를 위한 특정한 프레임의 생성을 지원하기 위해 소정의 프로세스들 (예를 들어, 컴포지션 계층으로의 계층들의 컴포지션) 을 수행할 필요가 있을 수도 있다. 그러나, GPU 및 DPU 양자 모두를 사용하는 프레임의 생성은 GPU 와 DPU 사이의 상대적으로 확장된 양의 유휴 시간을 생성할 수 있는 직렬화된 프로세싱을 초래할 수더 있고, 그 결과, 프레임을 생성하는데 필요한 시간의 양을 확장한다.
예를 들어, GPU 가 복수의 계층들의 컴포지션 계층을 생성하는 동안, DPU 및 컴퓨팅 디바이스의 다른 컴포넌트들은 그들 자신의 작업을 시작할 수 있기 전에 GPU 가 컴포지션을 완료하기를 대기하고 있을 수도 있다. 이러한 구성은 DPU 및 다른 컴포넌트들을 유휴 상태로 두고, 프레임 생성을 위한 프로세스를 연장한다. 이와 같이, 본 명세서에 설명된 양태들은 GPU 와 DPU, 및 다른 컴포넌트들 사이의 프로세싱의 직렬화를 감소시키기 위한 기법들에 관한 것이다. 이러한 기법들은 시스템들 사이의 유휴 시간의 양을 감소시키고 프레임을 생성하는데 필요한 시간의 양을 감소시키기 위해 소정의 태스크들을 병렬로 수행하기 위한 방법들을 포함한다.
첨부된 도면들과 함께 하기에 제시된 상세한 설명은 다양한 구성들의 설명으로서 의도되고, 본 명세서에서 설명된 개념들이 실시될 수도 있는 유일한 구성들을 나타내도록 의도된 것은 아니다. 상세한 설명은 다양한 개념들의 철저한 이해를 제공하기 위해 특정 상세들을 포함한다. 그러나, 이 개념들은 이러한 특정 상세들 없이 실시될 수도 있음이 당업자들에게 명백할 것이다. 일부 사례들에서는, 이러한 개념들을 모호하게 하는 것을 회피하기 위하여, 잘 알려진 구조들 및 컴포넌트들이 블록 다이어그램 형태로 나타낸다.
다양한 양태들이 첨부 도면들을 참조하여 상세하게 설명될 것이다. 가능하다면, 동일한 참조 번호들은 도면들 전반에 걸쳐 동일하거나 유사한 부분들을 지칭하는데 사용될 것이다. 특정한 예들 및 구현들에 대해 이루어진 참조들은 예시를 위한 것이며, 청구항들 또는 개시의 범위를 제한하도록 의도되지 않는다.
본 개시의 특징들이 하기의 소정의 양태들 및 도면들에 대해 논의될 수도 있지만, 본 개시의 모든 양태들은 본 명세서에서 논의된 유리한 특징들 중 하나 이상을 포함할 수 있다. 즉, 하나 이상의 양태들이 소정의 유리한 특징들을 갖는 것으로 논의될 수도 있지만, 이러한 특징들 중 하나 이상은 또한 본 명세서에 논의된 다양한 다른 양태들에 따라 사용될 수도 있다.
용어 "시스템 온 칩" (SoC) 은 본 명세서에서 단일 기판 상에 집적된 다중 리소스들 및/또는 프로세서들을 포함하는 단일 집적 회로 (IC) 칩을 지칭하도록 사용된다. 단일 SoC 는 디지털, 아날로그, 믹스된 신호, 및 무선 주파수 기능들을 위한 회로부를 포함할 수도 있다. 단일 SoC 는 또한 임의의 수의 범용 및/또는 특수화된 프로세서들 (디지털 신호 프로세서들, 모뎀 프로세서들, 비디오 프로세서들 등), 메모리 블록들 (예를 들어, ROM, RAM, 플래시 등) 및 리소스들 (예를 들어, 타이머들, 전압 레귤레이터들, 오실레이터들 등) 을 포함할 수도 있으며, 이들 중 임의의 것 또는 전부는 하나 이상의 코어들에 포함될 수도 있다.
다수의 상이한 타입들의 메모리 및 메모리 기술들이 미래에 이용가능하거나 고려되며, 이들 모두는 본 개시의 다양한 양태들로 사용하기에 적합하다. 이러한 메모리 기술들/타입들은 상변화 메모리 (PRAM), 동적 랜덤 액세스 메모리 (DRAM), 정적 랜덤 액세스 메모리 (SRAM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 플래시 메모리 (예를 들어, 임베디드 멀티미디어 카드 (eMMC) 플래시, 플래시 소거가능 프로그램가능 판독 전용 메모리 (FEPROM)), 의사정적 랜덤 액세스 메모리 (PSRAM), 더블 데이터 레이트 (DDR) 동기식 동적 랜덤 액세스 메모리 (SDRAM), 및 당업계에 알려진 다른 랜덤 액세스 메모리 (RAM) 및 판독 전용 메모리 (ROM) 기술들을 포함한다. DDR SDRAM 메모리는 DDR 타입 1 SDRAM 메모리, DDR 타입 2 SDRAM 메모리, DDR 타입 3 SDRAM 메모리 또는 DDR 타입 4 SDRAM 메모리일 수도 있다.
위에 언급된 메모리 기술들의 각각은, 예를 들어, 컴퓨터 또는 다른 디지털 전자 디바이스에서 또는 이에 의해 사용하기 위한 명령들, 프로그램들, 제어 신호들, 및/또는 데이터를 저장하기에 적합한 엘리먼트들을 포함한다. 개별 타입의 메모리, 인터페이스, 표준 또는 메모리 기술에 관련된 용어 및/또는 기술적 상세들에 대한 임의의 참조들은 예시적인 목적들만을 위한 것이고, 청구항 언어로 구체적으로 인용되지 않는 한 청구항들의 범위를 특정한 메모리 시스템 또는 기술로 제한하도록 의도되지 않는다. 모바일 컴퓨팅 디바이스 아키텍처들은 복잡성이 증가하였고, 이제 일반적으로 다중 프로세서 코어들, SoC들, 코-프로세서들, 전용 프로세서들 (예를 들어, 통신 모뎀 칩들, 글로벌 포지셔닝 시스템 ((global positioning system; GPS) 프로세서들, 디스플레이 프로세서들 등) 을 포함하는 기능 모듈들, 복잡한 메모리 시스템들, 난해한 전기적 인터커넥션들 (예를 들어, 버스들 및/또는 패브릭들), 및 복잡하고 전력 집약적인 소프트웨어 애플리케이션들 (예를 들어, 비디오 스트리밍 애플리케이션들 등) 을 실행하는 다수의 다른 리소스들을 포함한다. 소정의 양태들이 SoC 에 대해 설명될 수도 있지만, 양태들은 GPU 및 DPU 를 갖는 것과 같은, 임의의 적합한 컴퓨팅 플랫폼에 적용될 수도 있음을 이해해야 한다.
도 1 은 본 개시에 설명된 기법들을 구현하는데 사용될 수도 있는 일 예의 컴퓨팅 디바이스 (100) 를 도시하는 블록 다이어그램이다. 일부 예들에서, 컴퓨팅 디바이스 (100) 는 SoC 를 포함할 수도 있다. SoC 는 디지털, 아날로그, 믹스된-신호, 및 무선 주파수 기능들을 위한 회로부, 및/또는 임의의 수의 범용 및/또는 특수화된 프로세서들 (디지털 신호 프로세서들, 모뎀 프로세서들, 비디오 프로세서들 등), 메모리 블록들 (예를 들어, ROM, RAM, 플래시 등) 및 리소스들 (예를 들어, 타이머들, 전압 레귤레이터들, 오실레이터들 등) 을 포함할 수도 있으며, 이들 중 임의의 것 또는 전부는 하나 이상의 코어들에 포함될 수도 있다.
일부 예들에서, 컴퓨팅 디바이스 (100) 는 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 컴퓨터 워크스테이션, 비디오 게임 플랫폼 또는 콘솔, 무선 통신 디바이스 (이를테면, 예를 들어 모바일 전화, 셀룰러 전화, 위성 전화, 및/또는 모바일 전화 핸드셋), 휴대용 비디오 게임 디바이스 또는 개인용 디지털 보조기 (PDA) 와 같은 핸드헬드 디바이스, 개인용 뮤직 플레이어, 비디오 플레이어, 디스플레이 디바이스, 또는 그래픽 데이터를 생성, 프로세싱, 및/또는 디스플레이하는 임의의 다른 타입의 디바이스를 포함할 수도 있다.
도 1 의 예에 도시된 바와 같이, 컴퓨팅 디바이스 (100) 는 중앙 프로세싱 유닛 (CPU)(102), 디스플레이 프로세싱 유닛 (DPU)(104), 및 그래픽스 프로세싱 유닛 (GPU)(106) 과 같은 복수의 이종 프로세서들 (예를 들어, 범용/특수 목적 프로세서들) 을 포함하는 프로세싱 시스템 (120) 을 포함한다. 나타내지는 않았지만, 프로세싱 시스템 (120) 은 부가적인 프로세싱 유닛들, 예를 들어 디지털 신호 프로세서들 (DSP들), 애플리케이션 프로세서들 등을 포함할 수도 있다.
본 명세서에서 사용된 바와 같이, 프로세싱 유닛은 하나 이상의 프로세서들 및 임의의 적합한 지원 하드웨어 및/또는 소프트웨어 (예를 들어, 레지스터들, 조합 로직, 제어기들 등) 를 포함할 수도 있다. 프로세싱 시스템 (120) 은 하나 이상의 코어들을 포함할 수도 있고, 각각의 프로세서/코어는 다른 프로세서들/코어들과 독립적인 동작들을 수행할 수도 있다. 프로세싱 유닛들 (102, 104, 및 106) 은 신호들이 오프-칩 이동하는 경우 가능한 것보다 훨씬 더 높은 주파수/클록-레이트에서 동작할 수도 있도록 서로 매우 근접하게 (예를 들어, 단일 기판, 다이, 집적 칩 등 상에) 조직화될 수도 있다. 코어들의 근접성은 또한 온-칩 메모리 및 리소스들 (예를 들어, 전압 레일) 의 공유 뿐만 아니라, 코어들 사이의 더 조정된 협력을 허용할 수도 있다.
프로세싱 시스템 (120) 은 재구성가능한 로직 게이트들의 어레이를 포함하고 및/또는 버스 아키텍처 (예를 들어, CoreConnect, 어드밴스드 마이크로제어기 버스 아키텍처 (advanced microcontroller bus architecture; AMBA) 등) 를 구현할 수도 있는 버스 모듈 (110) 을 통해 하나 이상의 제어기 모듈(들)(112), 입력/출력 (I/O) 모듈(들)(114), 메모리 모듈(들)(116), 및 시스템 컴포넌트 및 리소스들 모듈(들)(118) 과 상호연결된다. 버스 모듈 (110) 은 고성능 네트워크 온 칩 (NoC) 과 같은 어드밴스드 인터커넥트들에 의해 제공될 수도 있다. 인터커넥션/버스 모듈 (110) 은 설정된 지속기간, 동작들의 수, 바이트들의 수 등에 대해 (예를 들어, 버스트 모드, 블록 전송 모드 등에서 데이터를 전송하기 위해) 버스의 배타적인 제어를 컴포넌트들 (예를 들어, 프로세서들, 주변기기들 등) 에 승인하도록 구성된 버스 마스터링 시스템을 포함하거나 또는 제공할 수도 있다. 일부 경우들에서, 버스 모듈 (110) 은 다중 마스터 컴포넌트들이 동시에 버스를 구동하려고 시도하는 것을 방지하기 위해 중재 방식을 구현할 수도 있다.
CPU (102) 는 컴퓨팅 디바이스 (100) 의 동작을 제어하는 범용 또는 특수 목적 프로세서를 포함할 수도 있다. 사용자는 I/O 모듈 (114) 을 통해 컴퓨팅 디바이스 (100) 에 입력을 제공하여 CPU (102) 로 하여금 하나 이상의 소프트웨어 애플리케이션들을 실행하게 할 수도 있다. CPU (102) 상에서 실행하는 소프트웨어 어플리케이션들은, 예를 들어, 오퍼레이팅 시스템, 워드 프로세서 애플리케이션, 이메일 애플리케이션, 스프레드시트 애플리케이션, 미디어 플레이어 애플리케이션, 비디오 게임 애플리케이션, 그래픽 사용자 인터페이스 애플리케이션 또는 다른 프로그램을 포함할 수도 있다. 사용자는 하나 이상의 입력 디바이스들 (미도시), 예컨대, 키보드, 마우스, 마이크로폰, 터치 패드, 또는 I/O 모듈 (114) 을 통해 컴퓨팅 디바이스 (100) 에 커플링되는 다른 입력 디바이스를 통해 컴퓨팅 디바이스 (100) 에 입력을 제공할 수도 있다.
CPU (102) 상에서 실행되는 소프트웨어 애플리케이션들은 프레임으로의 믹싱 및 조합을 위해 하나 이상의 계층들 (예를 들어, 그래픽스 데이터) 을 컴포지션하도록 DPU (104) 및 GPU (106) 에 명령하는 하나 이상의 그래픽스 렌더링 및/또는 컴포지션 명령들을 포함할 수도 있다. 일부 예들에서, 소프트웨어 명령들은, 예를 들어, 오픈 그래픽스 라이브러리 (OpenGL®) API, 오픈 그래픽스 라이브러리 임베디드 시스템즈 (OpenGL ES) API, Direct3D API, DirectX API, RenderMan API, WebGL API, 또는 임의의 다른 공개 또는 독점 그래픽스 API 와 같은 그래픽스 애플리케이션 프로그래밍 인터페이스 (API) 에 부합할 수도 있다. 그래픽스 컴포지션 명령들을 프로세싱하기 위해, CPU (102) 는 DPU (104) 및 GPU (106) 로 하여금 하나 이상의 계층들의 렌더링 및/또는 컴포지션 중 일부 또는 전부를 수행하게 하기 위해 하나 이상의 커맨드들을 DPU (104) 및 GPU (106) 에 발행할 수도 있다.
유사하게, CPU (102) 는 DPU (104) 로 하여금 CPU (102) 상에서 실행되는 애플리케이션, 또는 메모리 또는 디지털 스토리지 (예를 들어, 프로세서 메모리 (108) 또는 메모리 모듈 (116)) 로부터 이미지 및/또는 비디오 프레임들 및/또는 계층들을 수신 및 페치하게 하는 하나 이상의 명령들을 포함할 수도 있다. DPU (104) 는 프레임들 및 계층들에 대해 하나 이상의 이미지 프로세싱 동작들을 수행하고, 프로세싱된 프레임들을 디스플레이를 위한 디스플레이 디바이스에 출력할 수도 있다. 이러한 이미지 프로세싱 동작들은 계층 컴포지션, 포맷 변환, 스케일링, 회전, 블렌딩, 부가적인 그래픽스로의 이미지의 계층화 등을 포함할 수도 있다. 즉, DPU (104) 는 비디오 및/또는 이미지 데이터를 획득하고, 디스플레이 디바이스의 픽셀들로 하여금 비디오 또는 이미지를 조명하고 디스플레이하게 하는 값들을 출력할 수도 있다.
제어기 모듈 (112) 은 메모리 모듈 (116) 로 들어가고 나오는 데이터의 전송을 용이하게 한다. 예를 들어, 제어기 모듈 (112) 은 CPU (102), DPU (104), 및/또는 GPU (106) 로부터 메모리 판독 요청들 및 메모리 기입 요청들을 수신하고, 컴퓨팅 디바이스 (100) 에서의 컴포넌트들에 대한 메모리 서비스들을 제공하기 위해 메모리 모듈 (116) 및/또는 프로세서 메모리 (108) 에 대해 이러한 요청들을 서비스할 수도 있다. 제어기 모듈 (112) 은 메모리 모듈 (116) 및 프로세서 메모리 (108) 에 통신가능하게 커플링된다. 제어기 모듈 (112) 이 CPU (102), 프로세서 메모리 (108) 및 메모리 모듈 (116) 과 별도인 프로세싱 모듈인 것으로서 도 1 의 예시의 컴퓨팅 디바이스 (100) 에 도시되어 있지만, 다른 예들에서, 제어기 모듈 (112) 의 기능성의 일부 또는 전부는 CPU (102), DPU (104), GPU (106), 프로세서 메모리 (108) 및 메모리 모듈 (116) 중 하나 이상에서 구현될 수도 있다.
메모리 모듈 (116) 및 프로세서 메모리 (108) 는 컴퓨팅 디바이스 (100) 에서 구현되는 컴퓨터 판독가능 저장 매체들이다. 메모리 모듈 (116) 은 프로세싱 시스템 (120), 제어기 모듈 (112), I/O 모듈 (114), 및/또는 시스템 컴포넌트들 및 리소스들 모듈 (118) 중 하나 이상에 대해, 플래시 메모리와 같은 비휘발성 스토리지를 제공할 수도 있다. 메모리 모듈 (116) 은 정보의 임시 스토리지를 제공하기 위해 캐시 메모리 및 버퍼들을 포함할 수도 있다. 메모리 모듈 (116) 은 CPU (102) 에 의한 실행을 위해 액세스가능한 프로그램 모듈들 및/또는 명령들, 및/또는 CPU (102) 상에서 실행하는 프로그램들에 의한 사용을 위한 데이터를 저장할 수도 있다. 예를 들어, 메모리 모듈 (116) 은 사용자 애플리케이션들 및 그래픽스 데이터를 저장할 수도 있다. 메모리 모듈 (116) 은 또한 컴퓨팅 디바이스 (100) 의 다른 컴포넌트들에 의해 사용하기 위한 및/또는 이에 의해 생성된 정보를 저장할 수도 있다. 예를 들어, 메모리 모듈 (116) 은 GPU (106) 및 DPU (104) 에 대한 디바이스 메모리로서 작용할 수도 있으며, GPU (104) 에 의해 동작될 데이터 뿐만 아니라 GPU (106) 및 DPU (104) 에 의해 수행된 동작들로부터 초래되는 데이터를 저장할 수도 있다. 예를 들어, 메모리 모듈 (116) 은 경로 데이터, 경로 세그먼트 데이터, 표면들, 텍스처 버퍼들, 깊이 버퍼들, 셀 버퍼들, 정점 버퍼들, 프레임 버퍼들 등의 임의의 조합을 저장할 수도 있다. 또한, 메모리 모듈 (116) 은 GPU (106) 및/또는 DPU (104) 에 의한 프로세싱을 위한 커맨드 스트림들을 저장할 수도 있다. 소정의 양태들에서, 메모리 모듈 (116) 은 프로세서들 (102-106) 중 하나 이상의 일부인 메모리를 지칭할 수도 있음을 유의해야 한다.
프로세서 메모리 (108) 는 CPU (102), DPU (104) 및 GPU (106) 중 하나 이상에 의해 사용되는 명령들 및/또는 데이터를 포함할 수도 있다. 프로세서 메모리 (108) 는 다른 메모리에 대한 캐시, 스크래치패드 메모리, 또는 프로세싱 시스템 (120) 을 포함하는 SoC 상의 메모리와 같은, 프로세싱 시스템 (120) 에 의한 사용을 위해 전용되는 로컬 메모리일 수도 있다. 프로세서 메모리 (108) 는 프로세싱 시스템 (120) 에 의한 사용을 위해 전용된 DRAM 메모리일 수도 있다.
I/O 모듈 (114) 은 컴퓨팅 디바이스 (100) 외부의 리소스들과 통신하기 위해 구성된다. 예를 들어, I/O 모듈 (114) 은 특정 기능들 (예를 들어, 메모리, 무선 디바이스, 및 디지털 신호 프로세서) 을 수행하기 위한 하드웨어 설계 또는 입력/출력 인터페이스 (예를 들어, 버스 아키텍처 또는 인터커넥트) 를 포함한다. 일부 예들에서, I/O 모듈 (114) 은 오프-칩 위치된 메모리 또는 디지털 저장 디바이스, 프린터, 디스플레이 디바이스 등과 같은 하나 이상의 주변 디바이스들 (118) 과 인터페이스하기 위한 회로부를 포함한다. 일 예에서, I/O 모듈 (114) 은 프레임 버퍼 (예를 들어, 프로세서 메모리 (108) 또는 메모리 모듈 (116)) 로부터 렌더링된 이미지 데이터를 취출하고 이미지 데이터에 의해 표현된 이미지를 디스플레이하기 위해 주변 디스플레이 디바이스를 구성하도록 구성된다. 일부 예들에서, I/O 모듈 (114) 은 프레임 버퍼로부터 취출된 디지털 값들을 디스플레이에 의해 소비가능한 아날로그 신호로 변환하도록 구성되는 디지털-아날로그 변환기 (DAC) 를 포함할 수도 있다. 다른 예들에서, I/O 모듈 (114) 은 디지털 값들을 프로세싱을 위해 디스플레이에 직접 전달할 수도 있다.
논의된 바와 같이, 하나 이상의 주변 디바이스들 (118) 은 디스플레이 디바이스 또는 다른 하드웨어 컴포넌트 (예를 들어, 프린터) 를 포함할 수도 있다. 디스플레이 디바이스는 모니터, 텔레비전, 프로젝션 디바이스, 액정 디스플레이 (LCD), 플라즈마 디스플레이 패널, 발광 다이오드 (LED) 어레이, CRT (cathode ray tube) 디스플레이, 전자 종이, SED (surface-conduction electron-emitted display), 레이저 텔레비전 디스플레이, 나노결정 디스플레이 또는 다른 타입의 디스플레이 유닛을 포함할 수도 있다. 일부 예들에서, 이러한 디스플레이 디바이스는 컴퓨팅 디바이스 (100) 를 하우징하는 디바이스 내에 통합될 수도 있다. 예를 들어, 디스플레이 디바이스는 모바일 전화 핸드셋 또는 태블릿 컴퓨터의 스크린일 수도 있다. 대안으로, 디스플레이 디바이스는 유선 또는 무선 통신 링크를 통해 컴퓨팅 디바이스에 커플링된 독립형 디바이스일 수도 있다. 예를 들어, 디스플레이 디바이스는 케이블 또는 무선 링크를 통해 개인용 컴퓨터에 연결된 컴퓨터 모니터 또는 플랫 패널 디스플레이일 수도 있다.
컴퓨팅 디바이스 (100) 는 센서 데이터, 아날로그-디지털 변환들, 무선 데이터 송신들을 관리하기 위한, 그리고 (예를 들어, 상이한 디바이스들 사이의 상호운용성을 지원하는) 다른 특수화된 동작들을 수행하기 위한 시스템 컴포넌트들 및 리소스들 모듈 (118) 을 포함한다. 시스템 컴포넌트들 및 리소스들 모듈 (118) 은 또한 전압 레귤레이터들, 오실레이터들, 위상-잠금 루프들, 주변 브리지들, 데이터 제어기들, 시스템 제어기들, 액세스 포트들, 타이머들, 및 컴퓨팅 디바이스 상에서 실행되는 프로세서들 및 소프트웨어 클라이언트들을 지원하는데 사용된 다른 유사한 컴포넌트들과 같은 컴포넌트들을 포함할 수도 있다. 시스템 컴포넌트들 및 리소스들 모듈 (118) 은 또한, 카메라들, 전자 디스플레이들, 무선 통신 디바이스들, 외부 메모리 칩들 등과 같이 주변 디바이스들과 인터페이스하기 위한 회로부를 포함할 수도 있다.
하기에서 더 상세히 설명될 바와 같이, 컴퓨팅 디바이스 (100) 는 본 명세서에 설명된 시스템들 및 방법들에 따라 이미지 프로세싱을 위해 사용될 수도 있다. 예를 들어, CPU (102), DPU (104), GPU (106), 및/또는 임의의 다른 적합한 프로세서와 같은 프로세싱 유닛은, 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제1 펜스를 수신하도록 구성될 수도 있다. 제 1 펜스를 수신하는 것에 응답하여, 프로세서는 또한 애플리케이션 버퍼로부터 복수의 계층들을 페치할 수도 있고, 복수의 계층들은 제 2 프레임에 대응한다. 프로세서는 또한 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정할 수도 있다. 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여, 프로세서는 DPU 버퍼로부터 제 1 펜스를 페치하고, 제 2 펜스를 생성할 수도 있다. 프로세서는 또한 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시할 수도 있고, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시된다. 프로세서는 또한 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시할 수도 있고, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시된다. 프로세서는 또한 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신할 수도 있다. 제 3 펜스를 수신하는 것에 응답하여, 프로세서는, DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하고, DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성할 수도 있다. 프로세서는 또한 제 2 프레임을 하드웨어 컴포넌트에 제공할 수도 있다.
도 2 는 본 개시의 소정의 양태들에 따른 예시의 디스플레이 파이프라인 (200) 을 도시하는 블록 다이어그램이다. 일부 예들에서, 디스플레이 파이프라인 (200) 은 도 1 의 컴퓨팅 디바이스 (100) 또는 임의의 다른 적합한 컴퓨팅 시스템 상에서 구현될 수도 있다.
하기에서 더 상세히 논의되는 바와 같이, 예시적인 디스플레이 파이프라인 (200) 은 프레임 프로세싱 동안 병렬 DPU 및 GPU 동작들을 제공함으로써 개선된 사용자 경험 및 감소된 프로세싱 시간을 제공한다. 일부 예들에서, 미래의 GPU 펜스 및 미래의 DPU 펜스는 GPU 및 DPU 프로세스들을 병렬로 개시하고 실행하도록 구현될 수도 있다. 본 명세서에서 사용된 바와 같이, "펜스(fence)" 는 버퍼에 대응하는 메모리 값과 관련될 수도 있다. 예를 들어, 펜스는 특정한 버퍼가 콘텐츠 (예를 들어, 하나 이상의 계층들 또는 프레임) 를 포함할 때 또는 특정한 버퍼의 콘텐츠가 소비될 때 (예를 들어, 버퍼가 이제 재사용하기에 안전하다는 표시) 를 표시하도록 구성될 수도 있다. 일부 예들에서, DPU 펜스는 버퍼가 하나 이상의 계층들의 프레임 또는 컴포지션을 포함할 때, 또는 버퍼가 비어 있고 사용할 준비가 된 때 (예를 들어, 프레임 또는 컴포지션이 소비된 때) 를 표시한다. 일부 예들에서, GPU 펜스는 특정한 버퍼가 하나 이상의 계층들의 컴포지션을 포함할 때 (예를 들어, 컴포지션이 완료되는 표시) 또는 특정한 버퍼가 비어 있고 사용할 준비가 된 때를 표시할 수도 있다.
도시된 바와 같이, 하나 이상의 애플리케이션들 (202a-202n)(집합적으로 "애플리케이션 (202)" 으로서 지칭됨) 은 CPU (102) 상에서 실행될 수도 있고, 디스플레이 데이터 (예를 들어, 디스플레이를 위한 프레임에 대해 컴포지션될 하나 이상의 계층들) 를 윈도우 관리자 서비스 (WMS)(204) 와 통신할 수도 있다. WMS (204) 는 데이터를 하드웨어 (HW) 컴포저 (208) 에 전달할 수 있는 컴포지터 (206) 와 통신한다. HW 컴포저 (208) 는 디스플레이 디바이스 (212) 와 인터페이스하는 드라이버 (210)(예를 들어, 직접 렌더링 모듈 (DRM) 드라이버 및/또는 커널 레벨 드라이버) 에 데이터를 전달할 수 있다. 컴포지터 (206), 하드웨어 컴포저 (208), 및 드라이버 (210) 는 모두 프레임 프로세싱 시스템 (214) 의 일부이고, DPU (104) 및 GPU (106) 와 같은 도 1 의 컴퓨팅 디바이스 (100) 의 하드웨어 및 소프트웨어 양태들을 포함할 수도 있다.
도 2 에서의 컴포넌트들의 도시는 논리적이며, 반드시 별개의 컴포넌트들의 도시인 것으로 의도되지 않는다. 예를 들어, 도 1 에서의 CPU (102), WMS (204), 컴포지터 (206), HW 컴포저 (208), 및 드라이버 (210) 의 분할은 상이한 기능들을 전달하도록 의도되지만, 2 이상의 이러한 컴포넌트들이 구성 (예를 들어, 도 1 에 도시된 DPU (104) 및/또는 GPU (106)) 에 통합될 수도 있다는 것이 고려된다. 또한, 컴포넌트들은 하드웨어, 하드웨어와 관련되는 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 실현될 수도 있다.
WMS (204) 는 일반적으로 상이한 소스들로부터의 계층들을 관리하고, 계층들이 디스플레이 상에 어떻게 레이아웃되는지를 결정하도록 기능한다. 컴포지터 (206) 는 일반적으로 애플리케이션(들)(202) 에 의해 생성된 다중 계층들을 관리한다. 필요한 것은 아니지만, 컴포지터 (206) 는 ANDROID 프레임워크의 SurfaceFlinger 모듈 (또는 SurfaceFlinger 모듈의 파생물) 로 실현될 수도 있다. 동작 시, 예를 들어, 렌더링되고 컴포지션되는 독립적인 계층들로 많은 실행중인 애플리케이션들이 있을 수도 있다. 컴포지터 (206) 는 디스플레이 상에 무엇이 나타날 것인지를 결정하고, 필요에 따라 오버레이들을 제공한다. 컴포지터 (206) 의 역할의 일 양태는 다중 소스들 (예를 들어, 애플리케이션(들)(202)) 로부터 디스플레이 데이터의 버퍼들을 수용하고, 이들을 나중에 디스플레이를 위해 컴포지션하는 것이다. HW 컴포저 (208) 는 DPU (104) 및 GPU (106) 를 사용하여 컴포지션을 수행하기 위해 하드웨어 추상화 계층 (hardware abstraction layer; HAL) 으로서 동작할 수도 있다. 일반적으로, 컴포지터 (206) 는 컴퓨팅 디바이스 상의 이용가능한 하드웨어와 버퍼들을 컴포지션하는 방법을 결정한다. ANDROID-기반 컴퓨팅 디바이스의 컨텍스트에서, HW 컴포저 (208) 는 ANDROID HW 컴포저 (또는 그의 파생물) 를 사용하여 실현될 수도 있다. 드라이버 (210)는 커널-레벨 드라이버일 수도 있고, 디스플레이 파이프라인 (200) 의 기본 하드웨어를 동작시키기 위한 로우-레벨 하드웨어-특정 명령들을 포함할 수도 있다.
도 3 은 본 개시의 소정의 양태들에 따른, 도 2 의 컴포지터 (206), 하드웨어 컴포저 (208) 및 드라이버 (210) 에 의해 수행되는 프레임 프로세싱 동작 (300) 을 도시하는 블록 다이어그램이다. 도시된 바와 같이, 도 3 은 디스플레이 프레임을 프로세싱하기 위한 4개의 스테이지들을 포함하며, 이들 모두는 컴포지터 (206) 에 의해 개시된다: (i) 프레임 준비 (302) 스테이지, (ii) 프레임 컴포즈 (304) 스테이지, (iii) 프레임 제시 (306) 스테이지, 및 (iv) 포스트 컴포지션 (308) 스테이지.
소정의 양태들에서, 프레임 프로세싱 동작 (300) 의 스테이지들은 시리즈로 수행된다. 예를 들어, 동작 (300) 은 프레임 준비 (302) 스테이지에서 시작할 수도 있고, 그 후 프레임 준비 (302) 스테이지의 완료 후에 프레임 컴포즈 (304) 스테이지로 진행할 수도 있다. 유사하게, 동작 (300) 은 프레임 컴포즈 (304) 스테이지의 완료 후에 프레임 제시 (306) 스테이지로 진행할 수도 있다. 동작 (300) 의 스테이지들은 순환적으로 수행될 수도 있음을 유의해야 한다. 예를 들어, 동작 (300) 이 디스플레이를 위한 제 1 프레임을 생성하고, 제 1 프레임이 패널 (예를 들어, 디스플레이 디바이스) 에 의해 소비된 후에, DPU (예를 들어, 도 1 의 DPU (104)) 는 DPU 버퍼 (예를 들어, 제 1 프레임) 의 콘텐츠가 소비되었고 버퍼가 재사용할 준비가 됨을 컴포지터 (206) 에 표시하기 위해 DPU 펜스를 설정할 수도 있다. DPU 펜스가 설정되면, 컴포지터 (206) 는 하나 이상의 계층들의 새로운 세트를 사용하여 제 2 프레임을 생성하기 위해 프레임 준비 (302) 스테이지에서 동작 (300) 을 개시할 수도 있다.
프레임 준비 (302) 스테이지에서, 컴포지터 (206) 는 하드웨어 (HW) 컴포저 (208) 에 커맨드 (326)(예를 들어, "presentOrValidateDisplay" 커맨드) 를 전송함으로써 프레임을 준비하기 위한 동작 (300) 을 개시한다. 커맨드는 프레임 생성을 위해 컴포지션 및/또는 렌더링될 계층들을 포함하는 애플리케이션 버퍼들을 식별하는 정보, DPU/GPU 펜스(들) 및 프레임 생성 동안 사용될 대응하는 DPU/GPU 버퍼들을 식별하는 정보를 포함할 수도 있다. 커맨드 (326) 는 또한 프레임에 대해 프로세싱될 계층들의 수와 같은, 다른 파라미터들을 포함할 수도 있다.
커맨드 (326) 에 응답하여, HW 컴포저 (208) 는 컴포지션 판정 (310) 에서 하나 이상의 계층들 중 어느 것이 GPU (106) 에 의해 컴포지션되어야 하는지 및/또는 하나 이상의 계층들 중 어느 것이 DPU (104) 에 의해 컴포지션되어야 하는지를 결정할 수도 있다. 컴포지션 판정 (310) 의 일부로서, HW 컴포저 (208) 는 HW 리소스들 (312) 의 제한들을 결정할 수도 있다. 예를 들어, HW 컴포저 (208) 는 컴포지션을 위해 DPU (104) 에 의해 얼마나 많은 계층들이 핸들링될 수도 있는지를 결정할 수도 있다. DPU (104) 가 핸들링할 계층들이 너무 많으면, 잉여 계층들은 컴포지션을 위해 GPU (106) 에 할당될 수도 있다. 따라서, HW 컴포저 (208) 는 소정의 계층들 (예를 들어, 계층 x 및 계층 y) 이 DPU (104) 에 의해 컴포지션될 것인 한편, 다른 계층들 (예를 들어, 계층 w 및 계층 z) 은 GPU (106) 에 의해 컴포지션되어야 한다고 결정할 수도 있다. 프레임 컴포즈 (304) 스테이지와 관련하여 하기에 더 상세히 논의되는 바와 같이, GPU (106) 는 DPU (104) 에 의해 수행되는 임의의 컴포지션 작업 이전에 먼저 계층 x 및 계층 y 의 컴포지션을 생성할 수도 있다. 그 후 GPU (106) 는 컴포지션 계층이 준비될 때 (예를 들어, GPU 버퍼가 컴포지션 계층을 포함함) 를 컴포지터 (206) 에 알리는 GPU 펜스를 설정할 수도 있으며, 이는 그 후 DPU (104) 가 그 컴포지션 작업을 시작하도록 프롬프트한다. 그러나, 이러한 계층들의 컴포지션의 직렬화는 GPU 와 DPU 사이의 유휴 시간을 연장할 수 있고, 프레임을 생성하는데 필요한 시간의 양을 연장할 수 있다.
컴포지션 판정 (310) 동안, 드라이버 (210) 는 입력/출력 제어 (IOCTL) 를 검증할 수도 있다 (314). 예를 들어, 드라이버는 DPU (104) 및 GPU (106) 에 의한 핸들링을 위해 선택된 계층들이 실제로 DPU (104) 및 GPU (106) 하드웨어에 의해 핸들링될 수 있음을 보장할 수도 있다. 즉, IOCTL 검증 (314) 은 계층들이 HW 컴포저 (208) 에 의한 계층들의 할당 후에 DPU (104) 및 GPU (106) 에 의해 프로세싱될 수 있음을 확인하는 루프이다. 그 후 HW 컴포저 (208) 는 계층들 중 어느 것이 GPU (106) 에 의해 컴포지션되어야 하는지 및/또는 하나 이상의 계층들 중 어느 것이 DPU (104) 에 의해 컴포지션되어야 하는지를 컴포지터 (206) 에 제공함으로써 커맨드 (326) 에 응답할 수 있다 (328).
컴포지터 (206) 는 GPU (106) 와 통신 (예를 들어, GPU (106) 를 스케줄링하고 컴포지션될 계층들을 GPU (106) 에 제공) 하기 위해 애플리케이션 프로그래밍 인터페이스 (API) 를 사용할 수도 있다. 예를 들어, 컴포지터는 GPU 컴포지션 및 프로그램 텍스처들, 좌표들 등을 스케줄링 (316) 하기 위해 OpenGL (open graphics library) API 를 사용할 수도 있다. 스케줄링 (316) 후에, 컴포지터 (206) 는 완료 후에 컴포지션 계층(들)을 저장하기 위해 GPU (106) 에 의해 사용될 GPU 버퍼에 대응하는 GPU 펜스를 플러시 (318) 하거나 클리어할 수도 있다. GPU 펜스를 클리어함으로써, GPU (106) 는 어느 GPU (106) 버퍼가 컴포지션 계층을 저장하는데 사용될 것인지, 그리고 컴포지션 계층이 아직 완료되지 않음을 컴포지터 (206) 에 표시한다.
GPU (106) 가 컴포지션 계층을 완료하면, GPU (106) 는 컴포지션 계층을 GPU 버퍼에 저장하고 컴포지션 계층이 완료됨을 컴포지터 (206) 에 표시하도록 GPU 펜스 (320) 를 설정한다. 컴포지터 (206) 는 프레임 제시 (306) 스테이지를 개시하기 전에 GPU 펜스가 설정될 때까지 대기할 수도 있음을 유의해야 한다. 따라서, 타이밍의 관점에서, 컴포지터 (206) 는 GPU 펜스가 설정된 후까지 프레임 제시 (306) 스테이지를 시작하지 않는다.
GPU 펜스가 설정되면, 컴포지터 (206) 는 프레임 제시 (306) 스테이지를 개시한다. 여기서, DPU (104) 는 DPU (104) 및 GPU (106) 양자 모두에 의해 생성된 컴포지션 계층들을 사용하여 나머지 계층들의 컴포지션 및 프레임의 렌더링을 시작한다. 일부 예들에서, 컴포지터 (206) 는 DPU (104) 가 컴포지션 및 렌더링 작업을 시작하도록 프롬프트하는 커맨드 (330)(예를 들어, "presentDisplay") 를 HW 컴포저 (208) 에 전송한다. 커맨드 (330) 는 GPU (106) 에 의해 생성된 컴포지션된 계층을 포함하는 GPU 버퍼의 식별을 포함할 수도 있어서 DPU (104) 는 그것을 페치할 수 있다.
커맨드 (330) 에 응답하여, HW 컴포저 (208) 는 또한 커밋 (322) 프로세스를 개시할 수도 있으며, 여기서 오버레이 엔진의 프로그래밍 및 완성된 프레임을 패널로 푸시하는 것이 수행된다. 커밋 (322) 프로세스 동안, HW 컴포저 (208) 는 DPU (104) 가 프레임을 완료할 필요가 있을 임의의 입력 버퍼들 (예를 들어, 컴포지션 계층을 포함하는 GPU 버퍼) 및 입력 펜스들 (예를 들어, 대응하는 GPU 펜스) 을 식별하는 정보를 드라이버 (210) 에 제공할 수도 있다. 여기서, 드라이버 (210) 는 IOCTL 커밋 (324) 프로세스를 수행할 수도 있으며, 여기서 드라이버 (210) 는 입력 버퍼들 및 입력 펜스들을 DPU (104) 에 제공하고, 드라이버 (210) 는 출력 펜스들을 HW 컴포저 (208) 에 제공하며, 이는 이들을 컴포지터 (206) 에 전달한다. 소정의 양태들에서, 출력 펜스들은 프레임이 완료되었고 패널로 푸시되었음을 컴포지터 (206) 에 알린다. 일부 예들에서, 출력 펜스는 DPU (104) 에 의해 설정되고 다음의 프레임 준비 (302) 스테이지의 개시를 표시하기 위해 컴포지터 (206) 에 의해 사용되는 DPU 펜스이다. 포스트 컴포지션 (308) 스테이지에서, 프레임이 소비되고 디스플레이 디바이스에서 디스플레이된다. 소비 시, DPU (104) 는 동작 (300) 을 재시작 (예를 들어, 하나 이상의 계층들의 다른 세트에 대한 프레임 준비 (302) 스테이지를 개시) 하도록 컴포지터 (206) 에 통지할 출력 펜스를 설정할 수도 있다.
DPU 및 GPU 에 의한 계층들의 병렬 프로세싱을 위한 예시의 기법들
도 3 에 나타낸 바와 같이, DPU (104) 및 GPU (106) 에 의한 계층들의 프로세싱은 일반적으로 직렬화된다. 예를 들어, DPU (104) 는 GPU 가 계층 컴포지션을 완료한 후까지 계층 컴포지션을 수행하지 않는다 (예를 들어, 하나 이상의 계층들이 컴포지션되고 GPU 버퍼에 저장되며, GPU 펜스는 컴포지터 (206) 에 컴포지션 계층의 완료를 표시하도록 설정된다). 이러한 프로세싱의 직렬화는 도 4 에 도시된 것과 같은, 병렬 프로세싱 모델에 비해 계층들을 프로세싱하고 프레임들을 생성하기 위한 더 긴 시간 윈도우를 필요로 한다.
도 4 는 본 개시의 소정의 양태들에 따른, 도 2 의 컴포지터 (206), 하드웨어 컴포저 (208) 및 드라이버 (210) 에 의해 수행되는 프레임 프로세싱 동작 (400) 을 도시하는 블록 다이어그램이다. 보다 구체적으로, 도 4 는 컴포지터 (206) 와 DPU (104) 및 GPU (106) 양자 모두 사이의 버퍼 교환 및 미래지향적 펜스에 기초하는 통합되고 예상되는 트랜잭션 모델을 도시한다. 도 4 의 동작들은 병렬성을 최대화하고 GPU (106) 및 DPU (104) 가 계층들 및 프레임을 프로세싱하기 위해 이용가능한 시간을 상당히 증가시킨다. 소정의 양태들에서, 미래지향적 펜스는 임의의 실제 하드웨어 프로그래밍 전에 생성되고, 미래 펜스는 나중에 실제 하드웨어 동작과 연관된 실제 펜스에 바인딩된다. 일부 예들에서, 미래지향적 펜스는 레거시 시스템들과 역방향 호환가능한 펜스 사양 및 휴대용 오퍼레이팅 시스템 인터페이스 (POSIX) 메모리 배리어의 상단 상에 구축된다.
소정의 양태들에서, 동작 (400) 은 더 이른 동기화 이벤트들을 미래지향적 펜스들로 변환하도록 구성된 통합된 모드를 활용한다. 예를 들어, 도 3 의 프레임 제시 (306) 스테이지는 컴포지터 (206) 가 DPU (104) 를 스케줄링하기 위해 커맨드 (330) 를 발행할 수 있기 전에 GPU (106) 가 컴포지션 계층을 완료했음을 표시하기 위해 컴포지터 (206) 가 GPU 펜스에 대해 대기하고 있기 때문에 프레임 컴포즈 (304) 스테이지 후에 발생한다. 그러나, 통합된 모드에서, HW 컴포저 (208) 는 어느 GPU 버퍼 및 DPU 버퍼가 컴포지션 계층 및 프레임에 대해 각각 이전에 사용되었는지를 결정할 수 있고, 미래의 GPU 펜스 및 미래의 DPU 펜스를 컴포저 (206) 에 제시할 수 있어서 컴포지터 (206) 는 프레임을 프로세싱하기 위한 병렬 명령어들을 DPU (104) 및 GPU (106) 에 제공할 수 있다. DPU (104) 및 GPU (106) 에 대한 명령들을 병렬화함으로써, 프레임을 프로세싱하기 위한 시간의 양이 상당히 감소될 수 있다.
보다 구체적으로, 프레임 준비 (402) 스테이지에서 컴포지터 (206) 에 의해 수신된 미래의 GPU 펜스는 컴포지터 (206) 로 하여금 HW 컴포저 (208) 에 명령들을 전송하게 하여 GPU (106) 가 여전히 그의 계층들을 컴포지션하고 있는 동안 그리고 GPU (106) 가 실제 GPU 펜스를 설정하기 전에 계층들의 컴포지션을 개시할 것이다. 따라서, DPU (104) 및 GPU (106) 양자 모두는 병렬로 동작할 수 있으며, 이는 DPU (104) 가 할당된 계층들의 프로세싱을 완료할 수 있는 한편 (예를 들어, DPU (104) 할당 계층을 컴포지션) GPU (106) 는 그 자신의 할당된 계층들의 컴포지션을 완료함을 의미한다. 결과적으로, HW 컴포저 (208) 는 DPU (104) 및 GPU (106) 가 계층 컴포지션을 위해 스케줄링된 후에, 그리고 DPU (104) 및 GPU (106) 중 어느 하나가 그들의 계층 컴포지션 및 프레임 프로세싱을 완료하기 전에 미래의 DPU 펜스를 생성하고 이를 컴포저 (206) 에 제공할 수 있다. 이와 같이, 컴포지터 (206) 는 DPU (104) 가 다음의 계층들의 세트의 컴포지션을 스케줄링하기 위해 프레임 프로세싱을 완료한 때까지 더 이상 대기할 필요가 없다. 이는 컴포지터 (206) 가 프레임 준비 (402) 스테이지를 훨씬 더 일찍 개시할 수 있도록 하고, 또한 컴포지터 (206) 가 HW 컴포저 (206) 의 커밋 (422) 스테이지와 병렬로 프레임 컴포즈 (404) 스테이지를 수행할 수 있도록 한다. 따라서, 계층 및 프레임 프로세싱에 대한 시간의 감소된 양은 프로세서 성능 뿐만 아니라 사용자 경험을 개선한다. 동작 (400) 에 대한 보다 상세한 설명은 다음과 같다.
초기에, 컴포지터 (206) 는 제 1 프레임의 계층들의 제 1 세트에 대한 커밋 (422) 절차 동안 HW 컴포저 (208) 로부터 미래의 DPU 펜스를 수신한다. 미래의 DPU 펜스에 응답하여, 컴포지터 (206) 는 제 2 프레임의 계층들의 제 2 세트를 컴포지션하기 위한 GPU (106) 및 DPU (104) 를 스케줄링하기 위해 HW 컴포저 (208) 에 커맨드 (426)(예를 들어, presentOrValidateDisplay) 를 전송한다. 소정의 양태들에서, 프레임 준비 (402) 스테이지에서, 컴포지터 (206) 는 GPU (106) 에 의해 사용된 이전 (예를 들어, 캐시된) 펜스에 기초하여 미래의 GPU 펜스를 생성한다. 캐싱된 펜스는 어느 GPU 버퍼가 이전에 사용되었는지를 식별하는 정보를 포함할 수도 있다. 일부 예들에서, 컴포지터 (206) 는 캐싱된 펜스를 미래의 GPU 펜스로서 사용할 수도 있고, 캐싱된 펜스에 관한 정보를 커맨드 (426) 에 포함할 수도 있다.
커맨드 (426) 에 응답하여, HW 컴포저 (208) 는 도 3 과 관련하여 위에 논의된 바와 같이, 컴포지션 판정 (410) 을 수행하고 HW 리소스들 (412) 의 제한들을 결정할 수도 있다. 미래의 GPU 펜스가 DPU (104) 및 GPU (106) 에 대한 소정의 계층들의 커밋을 검증하기 위해 HW 컴포저 (208) 에 의해 사용될 수 있기 때문에 드라이버 (210) 가 더 이상 IOCTL 검증 (414) 스테이지를 수행할 필요가 없을 수도 있음을 유의한다. 그러나, 소정의 양태들에서, 드라이버 (210) 는 안정 장치가 있는 메커니즘으로서 IOCTL 검증 (414) 스테이지를 수행할 수도 있다.
컴포지션 판정 (410) 스테이지 동안, HW 컴포저 (208) 는 미래의 DPU 펜스들로서 사용될 캐싱된 DPU 펜스들을 페치하거나 수신할 수도 있고, 어느 DPU 버퍼가 미래의 DPU 펜스와 연관되는지를 표시하는 정보로 미래의 DPU 펜스들을 컴포지터 (206) 에 전달할 수도 있다. 커맨드 (426) 에 대한 응답 (428) 으로, HW 컴포저 (208) 는 미래의 DPU 펜스들 및 어느 계층들이 GPU (106) 에 의해 프로세싱되어야 하는지 그리고 어느 계층들이 DPU (104) 에 의해 프로세싱되어야 하는지에 대한 표시를 컴포저 (206) 에 제공할 수도 있다.
여기서, 컴포지터 (206) 는 미래의 GPU 펜스를 갖고, 어느 계층들이 GPU (106) 에 의해 프로세싱될 것이고 어느 계층들이 DPU (104) 에 의해 프로세싱될 것인지를 알기 때문에, 컴포지터 (206) 는, 컴포지터 (206) 가 프레임 컴포즈 (404) 스테이지를 수행하는 동안, 드라이버 (210) 에 의해 커밋 (422) 프로세스 및 IOCTL 커밋 (424) 프로세스를 개시하도록 HW 컴포저 (208) 에 명령할 수 있다. 따라서, 컴포지터 (206) 가 계층 컴포지션을 위해 GPU (106) 를 스케줄링할 때 (416), 컴포지터 (206) 는 또한 커밋 (422) 프로세스를 시작하기 위해 HW 컴포저 (208) 에 커맨드 (430)(예를 들어, "presentDisplay") 를 전송할 수도 있으며, 여기서 커맨드 (430) 는 미래의 GPU 펜스 및 대응하는 GPU 버퍼의 식별을 포함할 수도 있다.
위에 논의된 바와 같이, 컴포지터 (206) 는 플러시 (418) 로 진행하거나 미래의 GPU 펜스에 대응하는 GPU 버퍼의 GPU 펜스를 클리어할 수도 있다. GPU (106) 가 생성하도록 스케줄링된 컴포지션 계층을 완료하면, 계층은 GPU 버퍼에 저장되고, 실제 GPU 펜스는 컴포지션 계층의 완료를 컴포지터 (206) 에 표시하도록 설정된다 (420). 여기서, 미래의 GPU 펜스는 2가지: 컴포지터 (206) 가 특정 시간 기간 동안 대기하기 위한 표시 (예를 들어, 여기 및 순방향으로 대기), 및 실제 GPU 펜스가 시그널링될 때 컴포지터 (206) 가 특정 액션을 동작시키거나 수행하기 위한 표시를 제공할 수도 있다. 일부 예들에서, 미래의 GPU 펜스의 가중치는 1초 이상일 수도 있는데, 이는 1초 이상이 동작들 (예를 들어, 동작 (400)) 을 수행하는 프로세서에 대해 상대적으로 긴 시간이기 때문이다. 따라서, 미래의 GPU 펜스에는 실제 GPU 펜스가 시그널링되기 전에 만료되지 않을 가능성이 가장 크게 될 가중치가 주어질 수 있다. 따라서, 미래의 GPU 펜스가 존재하고 실제 GPU 펜스가 시그널링될 때까지 GPU (106) 를 스케줄링하는데 사용될 것이며 (416), 이 지점에서 미래의 GPU 펜스는 실제 GPU 펜스에 바인딩 (예를 들어, 대체) 할 것이다.
컴포지터 (206) 는 그 후 DPU (104) 가 GPU (106) 에 의해 컴포지션된 계층을 페치하고 제 2 프레임을 완료할 수 있도록 실제 GPU 펜스 및 대응하는 GPU 버퍼의 표시를 HW 컴포저 (208) 에 전달할 수도 있다. 여기서, DPU (104) 는 GPU (106) 가 그의 컴포지션된 계층을 완료하기 전에 계층들을 컴포지션하기 시작했기 때문에, DPU (104) 는 제 2 프레임을 상대적으로 더 빨리 완려할 수 있다. 제 2 프레임이 완료되면, 드라이버 (210) 는 실제 DPU 펜스 및 제 2 프레임을 포함하는 대응하는 DPU 버퍼를 HW 컴포저 (208) 에 제공할 수도 있다. 미래의 GPU 펜스와 유사하게, 실제 DPU 펜스는 미래의 DPU 펜스에 바인딩할 수도 있다. 따라서, 계층들의 제 3 세트가 제 3 프레임에 대해 후속하여 수신될 때, HW 컴포저 (208) 는 제 2 프레임에 대해 사용된 캐시된 실제 DPU 펜스를 제 3 프레임에 대한 미래의 DPU 펜스로서 활용할 수도 있다. 동작들 (400) 은 그 후 프레임 제시 (406) 및 제 2 프레임에 대한 포스트 컴포지션 (408) 단계들로 진행할 수도 있다.
도 5 는 디스플레이를 위한 프레임을 생성하기 위한 예시의 동작들 (500) 을 도시하는 플로우 챠트이다. 본 개시의 범위 내의 소정의 양태들에서, 동작들 (500) 은 범용 프로세서, 또는 위에 설명되고 도 1 에 도시된 바와 같은 프로세싱 시스템 (120) 에서의 프로세서들 중 임의의 하나 이상, 또는 설명된 기능들을 수행하기 위한 임의의 다른 적합한 수단에 의해 동작할 수도 있다. 도 5 에 나타낸 단계들 또는 블록들의 특정 순서는 본질적으로 예시적이며, 본 개시의 다양한 양태들에서, 이들 단계들 또는 블록들은 임의의 적합한 순서로 발생할 수도 있고, 일부 예들은 동시에 발생하는 2 이상의 단계들 또는 블록들을 포함한다.
이 예에서, 동작들 (500) 은 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신함으로써 제 1 블록 (502) 에서 시작한다.
동작들 (500) 은 그 후 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치함으로써, 블록 (504) 으로 진행하며, 복수의 계층들은 제 2 프레임에 대응한다.
동작들 (500) 은 그 후 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정함으로써 블록 (506) 으로 진행한다.
동작들 (500) 은 그 후 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여: DPU 버퍼로부터 제 1 펜스를 페치하고, 제 2 펜스를 생성함으로써, 블록 (508) 으로 진행한다.
동작들 (500) 은 그 후 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시함으로써 블록 (510) 으로 진행하며, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시된다.
동작들 (500) 은 그 후, 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시함으로써 블록 (512) 으로 진행하며, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시된다.
동작들 (500) 은 그 후 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신함으로써 블록 (514) 으로 진행한다.
동작들 (500) 은 그 후, 제 3 펜스를 수신하는 것에 응답하여: DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하고, DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성함으로써, 블록 (516) 으로 진행한다.
동작들 (500) 은 그 후 제 2 프레임을 하드웨어 컴포넌트에 제공함으로써 블록 (518) 으로 진행한다.
소정의 양태들에서, GPU 프로세스를 개시하는 것은 GPU 프로세스 이전에 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 구성하는 것을 포함하고, DPU 프로세스를 개시하는 것은 DPU 프로세스 이전에 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 구성하는 것을 포함한다.
소정의 양태들에서, 제 2 펜스는 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 제 3 펜스는 그 기간을 중단하고 하나 이상의 계층들의 컴포지션을 개시하도록 구성된다.
소정의 양태들에서, 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 양자 모두를 사용하기로 결정하는 것은 복수의 계층들 중 어느 계층이 복수의 계층들의 서브세트를 형성하는지를 결정하는 것을 더 포함한다.
소정의 양태들에서, 제 2 프레임을 생성하는 것은, 제 2 프레임을 DPU 버퍼에 저장하는 것; 및 DPU 에 의한 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하는 것을 더 포함한다.
소정의 양태들에서, 제 1 펜스는 DPU 에 의한 제 1 프레임의 해제를 표시하는 DPU 에 의해 설정된 메모리 값이다.
소정의 양태들에서, 제 3 펜스는 DPU 프로세스를 개시하는 동안 수신된다.
소정의 양태들에서, 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 것은, 하나 이상의 컴포지션된 계층들을 포함하는 하나 이상의 GPU 버퍼들의 표시를 수신하는 것을 더 포함하고, 하나 이상의 컴포지션된 계층들을 페치하는 것은 하나 이상의 GPU 버퍼들로부터 하나 이상의 컴포지션된 계층들을 페치하는 것을 더 포함한다.
예시의 양태들
구현 예들은 다음의 넘버링된 조항들에서 설명된다.
1. 프레임을 생성하기 위한 방법으로서, 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 단계; 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 단계로서, 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 페치하는 단계; 제 2 프레임의 컴포지션(composition)을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 단계; 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여: DPU 버퍼로부터 제 1 펜스를 페치하는 단계; 및 제 2 펜스를 생성하는 단계; 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 단계로서, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시되는, 상기 GPU 프로세스를 개시하는 단계; 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 단계로서, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하는 단계; 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 단계; 제 3 펜스를 수신하는 것에 응답하여: DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하는 단계; 및 DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하는 단계; 그리고 제 2 프레임을 하드웨어 컴포넌트에 제공하는 단계를 포함한다.
2. 양태 1 의 방법에서, GPU 프로세스를 개시하는 단계는 GPU 프로세스 이전에 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 구성하는 단계를 포함하고, DPU 프로세스를 개시하는 단계는 DPU 프로세스 이전에 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 구성하는 단계를 포함한다.
3. 양태들 1 및 2 중 임의의 것의 방법에서, 제 2 펜스는 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 제 3 펜스는 기간을 중단하고 하나 이상의 계층들의 컴포지션을 개시하도록 구성된다.
4. 양태들 1-3 중 임의의 것의 방법에서, 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 양자 모두를 사용하기로 결정하는 단계는 복수의 계층들 중 어느 계층이 복수의 계층들의 서브세트를 형성하는지를 결정하는 단계를 더 포함한다.
5. 양태들 1-4 중 임의의 것의 방법에서, 제 2 프레임을 생성하는 단계는 제 2 프레임을 DPU 버퍼에 저장하는 단계; 및 DPU 에 의한 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하는 단계를 더 포함한다.
6. 양태들 1-5 중 임의의 것의 방법에서, 제 1 펜스는 DPU 에 의한 제 1 프레임의 해제를 표시하는 DPU 에 의해 설정된 메모리 값이다.
7. 양태들 1-6 중 임의의 것의 방법에서, 제 3 펜스는 DPU 프로세스를 개시하는 동안 수신된다.
8. 양태들 1-7 중 임의의 것의 방법에서, 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 단계는, 하나 이상의 컴포지션된 계층들을 포함하는 하나 이상의 GPU 버퍼들의 표시를 수신하는 단계를 더 포함하고, 하나 이상의 컴포지션된 계층들을 페치하는 단계는 하나 이상의 GPU 버퍼들로부터 하나 이상의 컴포지션된 계층들을 페치하는 단계를 더 포함한다.
9. 프레임을 생성하기 위한 장치로서, 장치는 메모리; 및 메모리에 커플링된 프로세서를 포함하고, 메모리 및 프로세서는, 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하고; 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 것으로서, 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 페치하고; 제 2 프레임의 컴포지션(composition)을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하고; 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여: DPU 버퍼로부터 제 1 펜스를 페치하고; 그리고 제 2 펜스를 생성하며; 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 것으로서, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시되는, 상기 GPU 프로세스를 개시하고; 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 것으로서, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하고; 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하고; 제 3 펜스를 수신하는 것에 응답하여: DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하고; 그리고 DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하며; 그리고 제 2 프레임을 하드웨어 컴포넌트에 제공하도록 구성된다.
10. 양태 9 의 장치에서, GPU 프로세스를 개시하도록 구성되는, 프로세서 및 메모리는 추가로, GPU 프로세스 이전에 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 결정하도록 구성되고, DPU 프로세스를 개시하도록 구성되는, 프로세서 및 메모리는 추가로, DPU 프로세스 이전에 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 결정하도록 구성된다.
11. 양태들 9 및 10 중 임의의 것의 장치에서, 제 2 펜스는 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 제 3 펜스는 기간을 중단하고 하나 이상의 계층들의 컴포지션을 개시하도록 구성된다.
12. 양태들 9-11 중 임의의 것의 장치에서, 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 양자 모두를 사용하기로 결정하도록 구성되는, 프로세서 및 메모리는 추가로, 복수의 계층들 중 어느 계층이 복수의 계층들의 서브세트를 형성하는지를 결정하도록 구성된다.
13. 양태들 9-12 중 임의의 것의 장치에서, 제 2 프레임을 생성하도록 구성되는, 프로세서 및 메모리는 추가로, 제 2 프레임을 DPU 버퍼에 저장하고; 그리고 DPU 에 의한 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하도록 구성된다.
14. 양태들 9-13 중 임의의 것의 장치에서, 제 1 펜스는 DPU 에 의한 제 1 프레임의 해제를 표시하는 DPU 에 의해 설정된 메모리 값이다.
15. 양태들 9-14 중 임의의 것의 장치에서, 제 3 펜스는 DPU 프로세스를 개시하는 동안 수신된다.
16. 양태들 9-15 중 임의의 것의 장치에서, 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하도록 구성되는, 프로세서 및 메모리는 추가로, 하나 이상의 컴포지션된 계층들을 포함하는 하나 이상의 GPU 버퍼들의 표시를 수신하도록 구성되고, 하나 이상의 컴포지션된 계층들을 페치하도록 구성되는, 프로세서 및 메모리는 추가로, 하나 이상의 GPU 버퍼들로부터 하나 이상의 컴포지션된 계층들을 페치하도록 구성된다.
17. 프레임을 생성하기 위한 장치로서, 장치는, 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 수단; 제 1 펜스를 수신하는 것에 응답하여 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 수단으로서, 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 폐치하는 수단; 제 2 프레임의 컴포지션(composition)을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 수단; 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여 DPU 버퍼로부터 제 1 펜스를 페치하는 수단; 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여 제 2 펜스를 생성하는 수단; 제 2 펜스를 생성하는 것에 응답하여 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 수단; 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 수단으로서, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하는 수단; 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 수단; DPU 프로세스에 의해, 제 3 펜스를 수신하는 것에 응답하여 하나 이상의 컴포지션된 계층들을 페치하는 수단; DPU 프로세스에 의해, 제 3 펜스를 수신하는 것에 응답하여 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하는 수단; 및 제 2 프레임을 하드웨어 컴포넌트에 제공하는 수단을 포함한다.
18. 양태 17 의 장치에서, GPU 프로세스를 개시하는 수단은 GPU 프로세스 이전에 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 구성하는 수단을 포함하고, DPU 프로세스를 개시하는 수단은 DPU 프로세스 이전에 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 구성하는 수단을 포함한다.
19. 양태들 17 및 18 중 임의의 것의 장치에서, 제 2 펜스는 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 제 3 펜스는 기간을 중단하고 하나 이상의 계층들의 컴포지션을 개시하도록 구성된다.
20. 양태들 17-19 중 임의의 것의 장치에서, 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 양자 모두를 사용하기로 결정하는 수단은, 복수의 계층들 중 어느 계층이 복수의 계층들의 서브세트를 형성하는지를 결정하는 수단을 더 포함한다.
21. 양태들 17-20 중 임의의 것의 장치에서, 제 2 프레임을 생성하는 수단은 제 2 프레임을 DPU 버퍼에 저장하는 수단; 및 DPU 에 의한 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하는 수단을 더 포함한다.
22. 양태들 17-21 중 임의의 것의 장치에서, 제 1 펜스는 DPU 에 의한 제 1 프레임의 해제를 표시하는 DPU 에 의해 설정된 메모리 값이다.
23. 양태들 17-22 중 임의의 것의 장치는, DPU 프로세스를 개시하는 동안 제 3 펜스를 수신하는 수단을 더 포함한다.
24. 양태들 17-23 중 임의의 것의 장치에서, 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 수단은, 하나 이상의 컴포지션된 계층들을 포함하는 하나 이상의 GPU 버퍼들의 표시를 수신하는 수단을 더 포함하고, 하나 이상의 컴포지션된 계층들을 페치하는 수단은 하나 이상의 GPU 버퍼들로부터 하나 이상의 컴포지션된 계층들을 페치하는 수단을 더 포함한다.
25. 프레임을 생성하기 위한 방법을 수행하기 위한 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서, 방법은, 디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 단계; 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 단계로서, 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 페치하는 단계; 제 2 프레임의 컴포지션(composition)을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 단계; 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 를 사용하기로 한 결정에 기초하여: DPU 버퍼로부터 제 1 펜스를 페치하는 단계; 및 제 2 펜스를 생성하는 단계; 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 단계로서, GPU 프로세스는 제 2 펜스를 생성하는 것에 응답하여 개시되는, 상기 GPU 프로세스를 개시하는 단계; 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 단계로서, DPU 프로세스는 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하는 단계; 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 단계; 제 3 펜스를 수신하는 것에 응답하여: DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들을 페치하는 단계; 및 DPU 프로세스에 의해, 하나 이상의 컴포지션된 계층들 및 나머지 계층들에 기초하여 제 2 프레임을 생성하는 단계; 그리고 제 2 프레임을 하드웨어 컴포넌트에 제공하는 단계를 포함한다.
26. 양태 25 의 비일시적 컴퓨터 판독가능 저장 매체에서, GPU 프로세스를 개시하는 단계는 GPU 프로세스 이전에 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 구성하는 단계를 포함하고, DPU 프로세스를 개시하는 단계는 DPU 프로세스 이전에 하나 이상의 컴포지션된 계층들 및 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 구성하는 단계를 포함한다.
27. 양태들 25 및 26 중 임의의 것의 비일시적 컴퓨터 판독가능 저장 매체에서, 제 2 펜스는 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 제 3 펜스는 기간을 중단하고 하나 이상의 계층들의 컴포지션을 개시하도록 구성된다.
28. 양태들 25-27 중 임의의 것의 비일시적 컴퓨터 판독가능 저장 매체에서, 제 2 프레임의 컴포지션을 위한 복수의 계층들을 프로세싱하기 위해 DPU 및 GPU 양자 모두를 사용하기로 결정하는 단계는 복수의 계층들 중 어느 계층이 복수의 계층들의 서브세트를 형성하는지를 결정하는 단계를 더 포함한다.
29. 양태들 25-28 중 임의의 것의 비일시적 컴퓨터 판독가능 저장 매체에서, 제 2 프레임을 생성하는 단계는 제 2 프레임을 DPU 버퍼에 저장하는 단계; 및 DPU 에 의한 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하는 단계를 더 포함한다.
30. 양태들 25-29 중 임의의 것의 비일시적 컴퓨터 판독가능 저장 매체에서, 제 1 펜스는 DPU 에 의한 제 1 프레임의 해제를 표시하는 DPU 에 의해 설정된 메모리 값이다.
부가 고려사항들
일부 구성들에서, 용어(들) '통신하다', '통신하는', 및/또는 '통신'은 반드시 본 개시의 범위를 벗어나지 않으면서 '수신하다', '수신하는', '수신', 및/또는 다른 관련된 또는 적합한 양태들을 지칭할 수도 있다. 일부 구성들에서, 용어(들) '통신하다', '통신하는', '통신'은 반드시 본 개시의 범위를 벗어나지 않으면서 '송신하다', '송신하는', '송신', 및/또는 다른 관련된 또는 적합한 양태들을 지칭할 수도 있다.
본 개시 내에서, 단어 "예시적인" 은 "예, 사례, 또는 예시로서 작용하는 것" 을 의미하도록 사용된다. "예시적인" 것으로서 본 명세서에서 설명된 임의의 구현 또는 양태는 본 개시의 다른 양태들에 비해 반드시 선호되거나 유리한 것으로서 해석될 필요는 없다. 마찬가지로, 용어 "양태들" 은 본 개시의 모든 양태들이 논의된 특징, 이점 또는 동작 모드를 포함할 것을 요구하지는 않는다. 용어 "커플링된" 은 2개의 오브젝트들 간의 직접 또는 간접 커플링을 지칭하도록 본 명세서에서 사용된다. 예를 들어, 오브젝트 A 가 물리적으로 오브젝트 B 를 접촉하고 오브젝트 B 가 오브젝트 C 를 접촉하면, 오브젝트들 A 및 C 는, 서로 물리적으로 직접 접촉하지 않더라도, 서로 커플링된 것으로 여전히 간주될 수도 있다. 예를 들면, 심지어 제 1 오브젝트가 제 2 오브젝트와는 결코 물리적으로 접촉하고 있지 않더라도 제 1 오브젝트는 제 2 오브젝트에 커플링될 수도 있다. 용어 "회로" 및 "회로부"는 광범위하게 사용되고, 연결되고 구성될 때, 본 개시에서 설명된 기능들의 수행을 가능하게 하는 전기 디바이스들 및 전도체들의 하드웨어 구현들 양자 모두를 포함하도록 의도된다.
본 명세서에 예시된 컴포넌트들, 단계들, 피처들 및/또는 기능들 중 하나 이상은 단일 컴포넌트, 단계, 피처 또는 기능으로 재배열 및/또는 결합되거나, 또는 몇몇 컴포넌트들, 단계들, 피처들 또는 기능들로 구현될 수도 있다. 부가적인 엘리먼트들, 컴포넌트들, 단계들, 및/또는 기능들이 또한, 본 명세서에 개시된 신규한 특징들로부터 벗어나지 않으면서 부가될 수도 있다. 본 명세서에 예시된 장치들, 디바이스들, 및/또는 컴포넌트들은 여기서 설명된 방법들, 피처들, 또는 단계들 중 하나 이상을 수행하도록 구성될 수도 있다. 본 명세서에서 설명되는 신규한 알고리즘들은 또한 효율적으로 소프트웨어로 구현되거나 및/또는 하드웨어에 임베딩될 수도 있다.
개시된 방법들에서 단계들의 특정 순서 또는 계층이 예시적인 프로세스들의 일 예시라는 것이 이해되야 한다. 설계 선호들에 기초하여, 방법들에서 단계들의 특정 순서 또는 계위(hierarchy)는 재배열될 수도 있다는 것이 이해된다. 수반하는 방법 청구항들은, 샘플 순서에서 다양한 단계들의 엘리먼트들을 제시하고, 거기에서 특별히 언급되지 않는다면 제시된 특정 순서 또는 계층에 한정되도록 의도된 것이 아니다.
이전의 설명은 당업자가 본 명세서에 기재된 다양한 양태들을 실시하는 것을 가능하게 하기 위해서 제공된다. 이 양태들에 대한 다양한 수정들은 당해 분야의 당업자들에게 용이하게 명백할 것이고, 본 명세서에서 정의된 일반적인 원리들은 다른 양태들에 적용될 수도 있다. 따라서, 청구항들은 본 명세서에서 설명된 양태들로 한정되도록 의도되지 않지만, 청구항들의 언어와 부합하는 충분한 범위를 부여받아야 하며, 여기서, 단수로의 엘리먼트들에 대한 언급은 명확하게 그렇게 서술되지 않으면 "하나 또는 단지 하나만" 을 의미하도록 의도되지 않고 오히려 "하나 이상" 을 의미하도록 의도된다. 명확하게 달리 서술되지 않으면, 용어 "일부" 는 하나 이상을 지칭한다. 아이템들의 리스트 "중 적어도 하나"를 지칭하는 구절은 단일 멤버들을 포함하여 그 아이템들의 임의의 조합을 지칭한다. 일 예로서, "a, b 또는 c 중 적어도 하나" 는 a; b; c; a 및 b; a 및 c; b 및 c; 그리고 a, b 및 c 를 커버하도록 의도된다. 당업자에게 알려지게 되거나 나중에 알려지게 되는 본 개시 전반에 걸쳐 설명된 다양한 양태들의 엘리먼트들에 대한 모든 구조적 및 기능적 균등물들은 본 명세서에 참조로 명확히 통합되고 청구항들에 의해 포괄되도록 의도된다. 또한, 본원에 개시된 어느 것도 그러한 개시가 명시적으로 청구항들에 인용되는지에 상관 없이 공중에 바쳐지는 것으로 의도되지 않았다. 어떠한 청구항 엘리먼트도 구절 "하는 수단" 을 사용하여 명백하게 인용되지 않거나, 또는 방법 청구항의 경우, 그 엘리먼트가 단순히 도면에 도시된 "블록" 으로서, 또는 구절 "하는 단계" 를 사용하여 인용되지 않는 한, 35 U.S.C.§112(f) 의 규정 하에서 해석되지 않아야 한다.
이들 장치 및 방법들은 다양한 블록들, 모듈들, 컴포넌트들, 회로들, 단계들, 프로세스들, 알고리즘들 등 ("엘리먼트들" 로서 총칭됨) 에 의해 상세한 설명에서 설명되고 첨부 도면들에 예시된다. 이들 엘리먼트들은 하드웨어, 소프트웨어, 또는 이들의 조합들을 이용하여 구현될 수도 있다. 그러한 엘리먼트들이 하드웨어로서 구현될지 또는 소프트웨어로서 구현될지는 전체 시스템에 부과된 설계 제약들 및 특정 어플리케이션에 의존한다.
예로서, 엘리먼트, 또는 엘리먼트의 임의의 부분, 또는 엘리먼트들의 임의의 조합은 하나 이상의 프로세서들을 포함하는 "프로세싱 시스템" 으로 구현될 수도 있다. 프로세서들의 예들은 마이크로프로세서들, 마이크로제어기들, 디지털 신호 프로세서들 (DSP들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 프로그래밍가능 로직 디바이스들 (PLD들), 상태 머신들, 게이티드 로직, 이산 하드웨어 회로들, 및 본 개시 전반에 걸쳐 설명된 다양한 기능을 수행하도록 구성된 다른 적합한 하드웨어를 포함한다. 프로세싱 시스템에서의 하나 이상의 프로세서들은 소프트웨어를 실행할 수도 있다. 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션 언어, 또는 기타 등등으로서 지칭되든간에, 명령들, 명령 세트들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브프로그램들, 소프트웨어 모듈들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능물들, 실행 스레드들, 프로시저들, 함수들 등을 의미하도록 넓게 해석될 것이다. 소프트웨어는 프로세싱 시스템에 포함된 비일시적 컴퓨터 판독가능 매체 상에 저장될 수도 있다.
따라서, 하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현되는 경우, 그 기능들은 하나 이상의 명령 또는 코드로서 컴퓨터 판독가능 매체 상으로 저장 또는 인코딩될 수도 있다. 컴퓨터 판독가능 매체들은 컴퓨터 저장 매체들을 포함한다. 저장 매체들은, 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 한정이 아닌 예로서, 그러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, PCM (상변화 메모리), 플래시 메모리, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 수록 또는 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.

Claims (30)

  1. 프레임을 생성하기 위한 방법으로서,
    디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 단계;
    상기 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 단계로서, 상기 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 페치하는 단계;
    상기 제 2 프레임의 컴포지션(composition)을 위한 상기 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 단계;
    상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 를 사용하기로 한 결정에 기초하여:
    상기 DPU 버퍼로부터 상기 제 1 펜스를 페치하는 단계; 및
    제 2 펜스를 생성하는 단계;
    상기 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 단계로서, 상기 GPU 프로세스는 상기 제 2 펜스를 생성하는 것에 응답하여 개시되는, 상기 GPU 프로세스를 개시하는 단계;
    상기 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 단계로서, 상기 DPU 프로세스는 상기 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하는 단계;
    상기 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 단계;
    상기 제 3 펜스를 수신하는 것에 응답하여:
    상기 DPU 프로세스에 의해, 상기 하나 이상의 컴포지션된 계층들을 페치하는 단계; 및
    상기 DPU 프로세스에 의해, 상기 하나 이상의 컴포지션된 계층들 및 상기 나머지 계층들에 기초하여 상기 제 2 프레임을 생성하는 단계; 그리고
    상기 제 2 프레임을 상기 하드웨어 컴포넌트에 제공하는 단계를 포함하는, 프레임을 생성하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 GPU 프로세스를 개시하는 단계는 상기 GPU 프로세스 이전에 상기 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 구성하는 단계를 포함하고, 상기 DPU 프로세스를 개시하는 단계는 상기 DPU 프로세스 이전에 상기 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 상기 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 구성하는 단계를 포함하는, 프레임을 생성하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 제 2 펜스는 상기 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 상기 제 3 펜스는 상기 기간을 중단하고 상기 하나 이상의 계층들의 컴포지션을 개시하도록 구성되는, 프레임을 생성하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 제 2 프레임의 컴포지션을 위한 상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 양자 모두를 사용하기로 결정하는 단계는 상기 복수의 계층들 중 어느 계층이 상기 복수의 계층들의 서브세트를 형성하는지를 결정하는 단계를 더 포함하는, 프레임을 생성하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 제 2 프레임을 생성하는 단계는:
    상기 DPU 버퍼에 상기 제 2 프레임을 저장하는 단계; 및
    상기 DPU 에 의한 상기 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하는 단계를 더 포함하는, 프레임을 생성하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 제 1 펜스는 상기 DPU 에 의한 상기 제 1 프레임의 해제를 표시하는 상기 DPU 에 의해 설정된 메모리 값인, 프레임을 생성하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 제 3 펜스는 상기 DPU 프로세스를 개시하는 동안 수신되는, 프레임을 생성하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 하나 이상의 컴포지션된 계층들의 완료를 표시하는 상기 제 3 펜스를 수신하는 단계는, 상기 하나 이상의 컴포지션된 계층들을 포함하는 하나 이상의 GPU 버퍼들의 표시를 수신하는 단계를 더 포함하고, 상기 하나 이상의 컴포지션된 계층들을 페치하는 단계는 상기 하나 이상의 GPU 버퍼들로부터 상기 하나 이상의 컴포지션된 계층들을 페치하는 단계를 더 포함하는, 프레임을 생성하기 위한 방법.
  9. 프레임을 생성하기 위해 구성된 장치로서,
    메모리; 및
    상기 메모리에 커플링된 프로세서를 포함하고, 상기 프로세서 및 상기 메모리는,
    디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하고;
    상기 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 것으로서, 상기 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 페치하고;
    상기 제 2 프레임의 컴포지션(composition)을 위한 상기 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하고;
    상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 를 사용하기로 한 결정에 기초하여:
    상기 DPU 버퍼로부터 상기 제 1 펜스를 페치하고;
    제 2 펜스를 생성하며;
    상기 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 것으로서, 상기 GPU 프로세스는 상기 제 2 펜스를 생성하는 것에 응답하여 개시되는, 상기 GPU 프로세스를 개시하고;
    상기 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 것으로서, 상기 DPU 프로세스는 상기 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하고;
    상기 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하고;
    상기 제 3 펜스를 수신하는 것에 응답하여:
    상기 DPU 프로세스에 의해, 상기 하나 이상의 컴포지션된 계층들을 페치하고;
    DPU 프로세스에 의해, 상기 하나 이상의 컴포지션된 계층들 및 상기 나머지 계층들에 기초하여 상기 제 2 프레임을 생성하며; 그리고
    상기 제 2 프레임을 상기 하드웨어 컴포넌트에 제공하도록 구성되는, 프레임을 생성하기 위해 구성된 장치.
  10. 제 9 항에 있어서,
    상기 GPU 프로세스를 개시하도록 구성되는, 상기 프로세서 및 상기 메모리는 추가로, 상기 GPU 프로세스 이전에 상기 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 결정하도록 구성되고,
    상기 DPU 프로세스를 개시하도록 구성되는, 상기 프로세서 및 상기 메모리는 추가로, 상기 DPU 프로세스 이전에 상기 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 상기 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 결정하도록 구성되는, 프레임을 생성하기 위해 구성된 장치.
  11. 제 9 항에 있어서,
    상기 제 2 펜스는 상기 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 상기 제 3 펜스는 상기 기간을 중단하고 상기 하나 이상의 계층들의 컴포지션을 개시하도록 구성되는, 프레임을 생성하기 위해 구성된 장치.
  12. 제 9 항에 있어서,
    상기 제 2 프레임의 컴포지션을 위한 상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 양자 모두를 사용하기로 결정하도록 구성되는, 상기 프로세서 및 상기 메모리는 추가로, 상기 복수의 계층들 중 어느 계층이 상기 복수의 계층들의 서브세트를 형성하는지를 결정하도록 구성되는, 프레임을 생성하기 위해 구성된 장치.
  13. 제 9 항에 있어서,
    상기 제 2 프레임을 생성하도록 구성되는, 상기 프로세서 및 상기 메모리는 추가로,
    상기 DPU 버퍼에 상기 제 2 프레임을 저장하고;
    상기 DPU 에 의한 상기 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하도록 구성되는, 프레임을 생성하기 위해 구성된 장치.
  14. 제 9 항에 있어서,
    상기 제 1 펜스는 상기 DPU 에 의한 상기 제 1 프레임의 해제를 표시하는 상기 DPU 에 의해 설정된 메모리 값인, 프레임을 생성하기 위해 구성된 장치.
  15. 제 9 항에 있어서,
    상기 제 3 펜스는 상기 DPU 프로세스를 개시하는 동안 수신되는, 프레임을 생성하기 위해 구성된 장치.
  16. 제 9 항에 있어서,
    상기 하나 이상의 컴포지션된 계층들의 완료를 표시하는 상기 제 3 펜스를 수신하도록 구성되는, 상기 프로세서 및 상기 메모리는 추가로, 상기 하나 이상의 컴포지션된 계층들을 포함하는 하나 이상의 GPU 버퍼들의 표시를 수신하도록 구성되고,
    상기 하나 이상의 컴포지션된 계층들을 페치하도록 구성되는, 상기 프로세서 및 상기 메모리는 추가로, 상기 하나 이상의 GPU 버퍼들로부터 상기 하나 이상의 컴포지션된 계층들을 페치하도록 구성되는, 프레임을 생성하기 위해 구성된 장치.
  17. 프레임을 생성하기 위한 장치로서,
    디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 수단;
    상기 제 1 펜스를 수신하는 것에 응답하여 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 수단으로서, 상기 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 폐치하는 수단;
    상기 제 2 프레임의 컴포지션(composition)을 위한 상기 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 수단;
    상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 를 사용하기로 한 결정에 기초하여 상기 DPU 버퍼로부터 상기 제 1 펜스를 페치하는 수단;
    상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 를 사용하기로 한 결정에 기초하여 제 2 펜스를 생성하는 수단:
    상기 제 2 펜스를 생성하는 것에 응답하여 상기 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 수단;
    상기 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 수단으로서, 상기 DPU 프로세스는 상기 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하는 수단;
    상기 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 수단;
    상기 DPU 프로세스에 의해, 상기 제 3 펜스를 수신하는 것에 응답하여 상기 하나 이상의 컴포지션된 계층들을 페치하는 수단;
    DPU 프로세스에 의해, 상기 제 3 펜스를 수신하는 것에 응답하여 상기 하나 이상의 컴포지션된 계층들 및 상기 나머지 계층들에 기초하여 상기 제 2 프레임을 생성하는 수단; 및
    상기 제 2 프레임을 상기 하드웨어 컴포넌트에 제공하는 수단을 포함하는, 프레임을 생성하기 위한 장치.
  18. 제 17 항에 있어서,
    상기 GPU 프로세스를 개시하는 수단은 상기 GPU 프로세스 이전에 상기 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 구성하는 수단을 포함하고,
    상기 DPU 프로세스를 개시하는 수단은 상기 DPU 프로세스 이전에 상기 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 상기 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 구성하는 수단을 포함하는, 프레임을 생성하기 위한 장치.
  19. 제 17 항에 있어서,
    상기 제 2 펜스는 상기 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 상기 제 3 펜스는 상기 기간을 중단하고 상기 하나 이상의 계층들의 컴포지션을 개시하도록 구성되는, 프레임을 생성하기 위한 장치.
  20. 제 17 항에 있어서,
    상기 제 2 프레임의 컴포지션을 위한 상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 양자 모두를 사용하기로 결정하는 수단은, 상기 복수의 계층들 중 어느 계층이 상기 복수의 계층들의 서브세트를 형성하는지를 결정하는 수단을 더 포함하는, 프레임을 생성하기 위한 장치.
  21. 제 17 항에 있어서,
    상기 제 2 프레임을 생성하는 수단은,
    상기 DPU 버퍼에 상기 제2 프레임을 저장하는 수단; 및
    상기 DPU 에 의한 상기 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하는 수단을 더 포함하는, 프레임을 생성하기 위한 장치.
  22. 제 17 항에 있어서,
    상기 제 1 펜스는 상기 DPU 에 의한 상기 제 1 프레임의 해제를 표시하는 상기 DPU 에 의해 설정된 메모리 값인, 프레임을 생성하기 위한 장치.
  23. 제 17 항에 있어서,
    상기 DPU 프로세스를 개시하는 동안 상기 제 3 펜스를 수신하는 수단을 더 포함하는, 프레임을 생성하기 위한 장치.
  24. 제 17 항에 있어서,
    상기 하나 이상의 컴포지션된 계층들의 완료를 표시하는 상기 제 3 펜스를 수신하는 수단은 상기 하나 이상의 컴포지션된 계층들을 포함하는 하나 이상의 GPU 버퍼들의 표시를 수신하는 수단을 더 포함하고,
    상기 하나 이상의 컴포지션된 계층들을 페치하는 수단은 상기 하나 이상의 GPU 버퍼들로부터 상기 하나 이상의 컴포지션된 계층들을 페치하는 수단을 더 포함하는, 프레임을 생성하기 위한 장치.
  25. 프레임을 생성하기 위한 방법을 수행하기 위한 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 방법은:
    디스플레이 프로세서 유닛 (DPU) 버퍼에 저장된 제 1 프레임이 하드웨어 컴포넌트에 의해 소비되었음을 표시하는 제 1 펜스를 수신하는 단계;
    상기 제 1 펜스를 수신하는 것에 응답하여, 애플리케이션 버퍼로부터 복수의 계층들을 페치하는 단계로서, 상기 복수의 계층들은 제 2 프레임에 대응하는, 상기 복수의 계층들을 페치하는 단계;
    상기 제 2 프레임의 컴포지션(composition)을 위한 상기 복수의 계층들을 프로세싱하기 위해 DPU 및 그래픽스 프로세싱 유닛 (GPU) 양자 모두를 사용하기로 결정하는 단계;
    상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 를 사용하기로 한 결정에 기초하여:
    상기 DPU 버퍼로부터 상기 제 1 펜스를 페치하는 단계; 및
    제 2 펜스를 생성하는 단계;
    상기 복수의 계층들의 서브세트로부터 하나 이상의 계층들을 컴포지션하기 위한 GPU 프로세스를 개시하는 단계로서, 상기 GPU 프로세스는 상기 제 2 펜스를 생성하는 것에 응답하여 개시되는, 상기 GPU 프로세스를 개시하는 단계;
    상기 제 2 프레임을 생성하기 위해 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 나머지 계층들을 컴포지션하기 위한 DPU 프로세스를 개시하는 단계로서, 상기 DPU 프로세스는 상기 제 1 펜스를 페치하는 것에 응답하여 개시되는, 상기 DPU 프로세스를 개시하는 단계;
    상기 하나 이상의 컴포지션된 계층들의 완료를 표시하는 제 3 펜스를 수신하는 단계;
    상기 제 3 펜스를 수신하는 것에 응답하여:
    상기 DPU 프로세스에 의해, 상기 하나 이상의 컴포지션된 계층들을 페치하는 단계; 및
    DPU 프로세스에 의해, 상기 하나 이상의 컴포지션된 계층들 및 상기 나머지 계층들에 기초하여 상기 제 2 프레임을 생성하는 단계; 그리고
    상기 제 2 프레임을 상기 하드웨어 컴포넌트에 제공하는 단계를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  26. 제 25 항에 있어서,
    상기 GPU 프로세스를 개시하는 단계는 상기 GPU 프로세스 이전에 상기 하나 이상의 계층들을 컴포지션하기 위한 GPU 파라미터들을 구성하는 단계를 포함하고, 상기 DPU 프로세스를 개시하는 단계는 상기 DPU 프로세스 이전에 상기 하나 이상의 컴포지션된 계층들 및 상기 복수의 계층들의 상기 나머지 계층들을 컴포지션하기 위한 DPU 파라미터들을 구성하는 단계를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  27. 제 25 항에 있어서,
    상기 제 2 펜스는 상기 하나 이상의 계층들의 컴포지션이 계류 중인 기간을 표시하는 시간 지속기간을 포함하고, 상기 제 3 펜스는 상기 기간을 중단하고 상기 하나 이상의 계층들의 컴포지션을 개시하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  28. 제 25 항에 있어서,
    상기 제 2 프레임의 컴포지션을 위한 상기 복수의 계층들을 프로세싱하기 위해 상기 DPU 및 상기 GPU 양자 모두를 사용하기로 결정하는 단계는 상기 복수의 계층들 중 어느 계층이 상기 복수의 계층들의 서브세트를 형성하는지를 결정하는 단계를 더 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  29. 제 25 항에 있어서,
    상기 제 2 프레임을 생성하는 단계는,
    상기 DPU 버퍼에 상기 제 2 프레임을 저장하는 단계; 및
    상기 DPU 에 의한 상기 제 2 프레임의 해제를 표시하는 제 4 펜스를 설정하는 단계를 더 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  30. 제 25 항에 있어서,
    상기 제 1 펜스는 상기 DPU 에 의한 상기 제 1 프레임의 해제를 표시하는 상기 DPU 에 의해 설정된 메모리 값인, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020237026867A 2021-02-16 2022-01-18 저 레이턴시 컴포저 KR102603856B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/176,767 2021-02-16
US17/176,767 US11200866B1 (en) 2021-02-16 2021-02-16 Low latency composer
PCT/US2022/070234 WO2022178471A1 (en) 2021-02-16 2022-01-18 Low latency composer

Publications (2)

Publication Number Publication Date
KR20230121933A true KR20230121933A (ko) 2023-08-21
KR102603856B1 KR102603856B1 (ko) 2023-11-17

Family

ID=78828794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237026867A KR102603856B1 (ko) 2021-02-16 2022-01-18 저 레이턴시 컴포저

Country Status (8)

Country Link
US (1) US11200866B1 (ko)
EP (1) EP4295350A1 (ko)
JP (1) JP7450824B2 (ko)
KR (1) KR102603856B1 (ko)
CN (1) CN116917980A (ko)
BR (1) BR112023015670A2 (ko)
TW (1) TW202303513A (ko)
WO (1) WO2022178471A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11776507B1 (en) * 2022-07-20 2023-10-03 Ivan Svirid Systems and methods for reducing display latency

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170032764A1 (en) * 2015-07-29 2017-02-02 Qualcomm Incorporated Updating image regions during composition
US20180189922A1 (en) * 2016-12-31 2018-07-05 Intel IP Corporation Smart composition of output layers
KR20230091877A (ko) * 2020-10-19 2023-06-23 퀄컴 인코포레이티드 계층 특성을 우선순위화하는 것에 의한 이미지 데이터의 프로세싱

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012177958A (ja) 2011-02-25 2012-09-13 Clarion Co Ltd グラフィックシステム
EP3438965A1 (en) * 2017-08-04 2019-02-06 NXP USA, Inc. Method and apparatus for blending layers within a graphics display component
WO2021000220A1 (en) * 2019-07-01 2021-01-07 Qualcomm Incorporated Methods and apparatus for dynamic jank reduction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170032764A1 (en) * 2015-07-29 2017-02-02 Qualcomm Incorporated Updating image regions during composition
US20180189922A1 (en) * 2016-12-31 2018-07-05 Intel IP Corporation Smart composition of output layers
KR20230091877A (ko) * 2020-10-19 2023-06-23 퀄컴 인코포레이티드 계층 특성을 우선순위화하는 것에 의한 이미지 데이터의 프로세싱

Also Published As

Publication number Publication date
TW202303513A (zh) 2023-01-16
CN116917980A (zh) 2023-10-20
BR112023015670A2 (pt) 2023-10-31
KR102603856B1 (ko) 2023-11-17
US11200866B1 (en) 2021-12-14
JP2024509720A (ja) 2024-03-05
JP7450824B2 (ja) 2024-03-15
EP4295350A1 (en) 2023-12-27
WO2022178471A1 (en) 2022-08-25

Similar Documents

Publication Publication Date Title
US11481865B2 (en) Methods and apparatus for tensor object support in machine learning workloads
US20210241418A1 (en) Workload scheduling and distribution on a distributed graphics device
US10692170B2 (en) Software scoreboard information and synchronization
JP2020173870A (ja) 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構
US10719970B2 (en) Low latency firmware command selection using a directed acyclic graph
US20210240524A1 (en) Methods and apparatus to facilitate tile-based gpu machine learning acceleration
KR20140111980A (ko) 그래픽 관련 워크로드들에 대한 전력 절감 기술
US11762662B2 (en) Instruction prefetch based on thread dispatch commands
KR102603856B1 (ko) 저 레이턴시 컴포저
US20200311859A1 (en) Methods and apparatus for improving gpu pipeline utilization
US11055808B2 (en) Methods and apparatus for wave slot management
KR20230052988A (ko) Gpu 캐시를 활용한 다운스케일링을 위한 simo 접근 방식으로의 gpu 커널 최적화
US20220357983A1 (en) Methods and apparatus for wave slot retirement procedures
US11238772B2 (en) Methods and apparatus for compositor learning models
WO2021142780A1 (en) Methods and apparatus for reducing frame latency
US12124852B2 (en) Instruction prefetch based on thread dispatch commands
US20230197030A1 (en) Avoiding flicker in association with hotplug of a display
WO2021042331A1 (en) Methods and apparatus for graphics and display pipeline management
US20210158470A1 (en) Methods and apparatus for reducing draw command information
WO2023163863A1 (en) Dynamic wave pairing
KR20240026992A (ko) Gpu 스코핑에서의 성능 오버헤드 최적화

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant