KR20220143667A - 지연된 그래픽 프로세싱 유닛 렌더 시간을 보상하기 위한 감소된 디스플레이 프로세싱 유닛 전달 시간 - Google Patents

지연된 그래픽 프로세싱 유닛 렌더 시간을 보상하기 위한 감소된 디스플레이 프로세싱 유닛 전달 시간 Download PDF

Info

Publication number
KR20220143667A
KR20220143667A KR1020227028136A KR20227028136A KR20220143667A KR 20220143667 A KR20220143667 A KR 20220143667A KR 1020227028136 A KR1020227028136 A KR 1020227028136A KR 20227028136 A KR20227028136 A KR 20227028136A KR 20220143667 A KR20220143667 A KR 20220143667A
Authority
KR
South Korea
Prior art keywords
frame
clock
display
transferred
period
Prior art date
Application number
KR1020227028136A
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 KR20220143667A publication Critical patent/KR20220143667A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal
    • 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/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • 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
    • 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
    • G09G5/005Adapting incoming signals to the display format of the display terminal
    • 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/18Timing circuits for raster scan displays
    • 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
    • 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/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/08Details of image data interface between the display device controller and the data line driver circuit

Abstract

본 개시는 지연된 GPU 렌더 시간을 보상하기 위해 DPU 전달 시간을 감소시키기 위하여, 저장 매체 상에 인코딩된 컴퓨터 프로그램을 포함한, 시스템들, 디바이스들, 장치들 및 방법들을 제공한다. 제 1 프레임을 뒤따르는 제 2 프레임을 렌더링하는 것의 완료 후에, 프레임 프로세서는 제 1 프레임이 디스플레이 패널로 현재 전달 중인지 또는 디스플레이 패널로 이미 전달되었는지를 결정한다. 적어도 하나의 클록이 현재 전달 중인 것으로 결정될 때 클록 속도들의 제 1 세트에 사용되고 그리고 제 1 프레임이 전달되었다고 결정될 때 클록 속도들의 제 2 세트에 사용되며, 클록 속도들의 제 2 세트는 클록 속도들의 제 1 세트보다 더 빠르다. 제 1 프레임의 전달의 완료 후, 제 2 프레임은 클록 속도들의 세트에 기초하여 전달된다.

Description

지연된 그래픽 프로세싱 유닛 렌더 시간을 보상하기 위한 감소된 디스플레이 프로세싱 유닛 전달 시간
본 개시는 일반적으로 프로세싱 시스템에 관한 것이고, 보다 구체적으로 디스플레이 및/또는 그래픽 프로세싱을 위한 하나 이상의 기법들에 관한 것이다.
컴퓨팅 디바이스들은 종종 컴퓨팅 디바이스들에 의한 디스플레이를 위한 그래픽 데이터를 렌더링하기 위해 (예를 들어, 그래픽 프로세싱 유닛 (GPU) 을 활용하여) 그래픽 프로세싱을 수행한다. 이러한 컴퓨팅 디바이스들은 예를 들어, 컴퓨터 워크스테이션, 모바일 폰, 이를 테면, 스마트 폰, 임베디드 시스템들, 퍼스널 컴퓨터, 태블릿 컴퓨터, 및 비디오 게임 콘솔들을 포함할 수도 있다. GPU들은 그래픽 프로세싱 커맨드를 실행하고 프레임을 출력하기 위해 함께 동작하는 하나 이상의 프로세싱 스테이지들을 포함하는 그래픽 프로세싱 파이프라인을 실행하도록 구성된다. 중앙 프로세싱 유닛 (CPU) 은 GPU 에 하나 이상의 그래픽 프로세싱 커맨드를 발행하는 것에 의해 GPU 의 동작을 제어할 수도 있다. 최근의 CPU들은 통상적으로 동시에 다수의 애플리케이션들을 실행가능하고, 애플리케이션들 각각은 실행 동안에 GPU 를 활용하는 것이 필요할 수도 있다. 디스플레이 상의 시각적 표현을 위한 컨텐츠를 제공하는 디바이스는 GPU 를 활용할 수도 있다.
일부 경우들에, GPU 는 가변 레이트들에서 프레임들을 렌더링할 수도 있고, 이는 프레임 프로세서에 의해 누락된 프레임을 초래할 수도 있다. 따라서, 가변 프레임 렌더링 레이트의 관점에서 개선된 프레임 전달 기법에 대한 필요가 존재한다.
다음은 그러한 양태들의 기본적인 이해를 제공하기 위하여 하나 이상의 양태의 간략한 개요를 제시한다. 이 개요는 모든 고려된 양태들의 철저한 개관은 아니며, 모든 양태들의 핵심적인 또는 중요한 엘리먼트들을 식별하지도 않고, 임의의 또는 모든 양태들의 범위를 묘사하지도 않도록 의도된 것이다. 그 유일한 목적은 이후에 제시되는 보다 상세한 설명에 대한 도입부로서 간략화된 형태로 하나 이상의 양태의 일부 개념들을 제시하는 것이다.
디스플레이 컨텐츠 프로세싱 기법들은 적어도 두 개의 프로세싱 스테이지들, 예를 들어: (1) GPU 렌더링; 및 (2) 프레임 전달/디스플레이를 통하여 수행될 수도 있다. 프레임 N+1 의 GPU 렌더링은 물리적 디스플레이 패널로 이전 프레임 N 을 전달하는 것과 동시에 수행될 수도 있다. 프레임 N+1 의 GPU 렌더링이 수직 동기화 (VSYNC) 시구간을 초과하는 경우에, 가변 리프레시 레이트 기술, 이를 테면, Qualcomm® synchronization (QSYNC) 피처가, 프레임 시간의 길이를 연장하여 프레임 N 이 두개의 이웃하는 프레임 시간들 상에 반복적으로 디스플레이되는 것을 방지하도록 실행될 수도 있다. 프레임 시간을 연장하는 것은 GPU 렌더링에 대해 다소 더 많은 시간을 허용할 수도 있지만, 가변 리프레시 레이트 피처를 실행하는 것은 프로세싱 레이트를 초래할 수도 있고, 디스플레이 프로세싱 유닛 (DPU) 하드웨어 구성들에 기초하여 더 나중의 프레임들에서의 프레임 드롭오프들로 이어질 수도 있는 가변 FPS (frame per second) 프로세싱 레이트를 초래할 수도 있다.
따라서, 제 1 프레임의 길이가 가변 리프레시 레이트 피처에 의해 연장되고, 제 1 프레임을 뒤따르는 제 2 프레임은 제 1 프레임의 실행을 보상하고 복수의 프레임들에 걸쳐 안정적인 FPS 프로세싱 레이트를 유지하기 위하여 제 1 프레임이 연장된 길이와 동일한 길이만큼 단축될 수도 있다. 보다 구체적으로, 제 2 프레임의 렌더링의 완료 후에, DPU 는 제 1 프레임이 현재 디스플레이 패널로 전달 중인지 또는 디스플레이 패널에 이미 전달되었는지를 결정할 수도 있고, 제 2 프레임을 렌더링하는 것의 완료 후에 제 1 프레임이 디스플레이 패널로 여전히 현재 전달되는 것은 GPU 렌더링이 초기 VSYNC 시구간 내에서 완료되었음을 제 2 프레임이 나타내고, 그리고 제 2 프레임을 렌더링하는 것의 완료 이전에 제 1 프레임이 디스플레이 패널로 이미 전달되었다는 것은 제 2 프레임의 GPU 렌더링이 초기 VSYNC 시구간을 초과하여 지연되었음을 나타낸다. 제 1 프레임이 현재 전달 중인 것으로 결정될 때, 적어도 하나의 클록이 디스플레이 패널로 제 2 프레임을 전달하기 위한 클록 속도들의 디폴트 세트에서 유지된다. 대안적으로, 제 1 프레임이 이미 전달되었다고 결정될 때, 적어도 하나의 클록은 단축된 기간 내에서 제 2 프레임의 전달을 완료하고 이전 프레임의 연장된 기간/지연을 보상하도록 구성되는 클록 속도들의 제 2 세트를 통하여 가속화된다.
본 개시의 일 양태에서, 프레임 프로세싱을 위한 방법, 컴퓨터 판독가능 매체 및 장치가 제공된다. 장치는 제 1 프레임이 제 2 프레임의 렌더링의 완료 후에 현재 전달 중인지 또는 이미 전달되었는지를 결정하도록 구성될 수도 있고, 제 2 프레임은 제 1 프레임에 후속한다. 장치는 또한 제 1 프레임이 현재 전달 중인 것으로 결정될 때 클록 속도들의 제 1 세트를 사용하고 제 1 프레임이 전달되었다고 결정될 때 클록 속도들의 제 2 세트를 적어도 하나의 클록으로 사용하도록 구성될 수도 있고, 클록 속도들의 제 2 세트는 클록 속도들의 제 1 세트보다 더 빠르다. 제 2 프레임은 제 1 프레임의 전달의 완료 후에 클록 속도들의 사용된 세트에 기초하여 전달된다.
전술한 목적 및 관련 목적의 달성을 위해, 하나 이상의 양태가 이하 충분히 설명되고 청구항들에서 특별히 적시되는 특징들을 포함한다. 다음의 설명 및 부속된 도면들은 하나 이상의 양태의 소정의 예시적인 특징들을 상세하게 기재한다. 그러나, 이들 특징들은, 다양한 양태들의 원리들이 채용될 수도 있는 다양한 방식들 중 단지 몇몇만을 나타내며, 이 설명은 이러한 모든 양태들 및 그들의 균등물들을 포함하도록 의도된다.
도 1 은 본 개시의 하나 이상의 기법들에 따른 일 예의 컨텐츠 생성 시스템을 예시하는 블록 다이어그램이다.
도 2 는 본 개시의 하나 이상의 기법들에 따른 일 예의 GPU 를 예시한다.
도 3a-3b 는 가변 리프레시 레이트 피처가 프레임의 길이를 연장할 수 있게 하는 영향을 예시한다.
도 4 는 DPU 에 의한 전달 시간이 GPU 에 의한 긴 렌더링 시간을 보상하도록 감소되는 비디오 모드 타이밍 다이어그램을 예시한다.
도 5 는 하나 이상의 클록들이 프레임의 전달 시간을 감소시키기 위해 가속화될 필요가 있는지의 여부를 결정하는 것을 예시하는 플로우 다이어그램이다.
도 6 은 본 개시의 하나 이상의 기법들에 따른 일 예의 방법의 플로우차트이다.
도 7 은 예시적인 장치에서 상이한 수단들/컴포넌트들 간의 데이터 플로우를 예시한 개념적 데이터 플로우 다이어그램이다.
시스템들, 장치들, 컴퓨터 프로그램 제품들 및 방법들의 여러 양태들이 첨부된 도면을 참조하여 아래 보다 충분하게 설명될 것이다. 그러나, 본 개시는 많은 상이한 형태들로 구현될 수도 있고 본 개시의 전반에 걸쳐 제시된 어떠한 특정 구조 또는 기능으로 제한되는 것으로 간주되지 않아야 한다. 오히려, 이들 양태들은 본 개시가 철저하고 완전하게 되고, 그리고 본 개시의 범위를 당업자에게 충분히 전달하도록 제공된다. 본원에서의 교시에 기초하여 당해 기술 분야의 당업자는 본 개시의 다른 양태들과 독립적으로 구현되든, 또는 조합하여 구현되든 간에 본 개시의 범위가 본원에 개시된 시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 임의의 양태를 커버하도록 의도됨을 알고 있을 것이다. 예를 들어, 본원에 기술된 임의의 수의 양태를 이용하여 장치가 구현될 수도 있거나 방법이 실시될 수도 있다. 추가로, 본 개시의 범위는 본원에 제시된 본 개시의 다양한 양태들에 더하여 또는 그 이외의 다른 구조, 기능성, 또는 구조 및 기능성을 사용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본원에 개시된 임의의 양태는 청구항의 하나 이상의 엘리먼트들에 의해 구체화될 수도 있다.
여러 양태들이 본원에서 설명되어 있지만 이들 양태들의 많은 변형들 및 치환들이 본 개시의 범위에 속한다. 본 개시의 양태들의 일부 가능한 이점들 및 이익들이 언급되어 있지만, 본 개시의 범위는 특정 이점, 용도 또는 목적으로 제한되는 것으로 의도되지 않는다. 오히려, 본 개시의 양태들은 상이한 무선 기술들, 시스템 구성들, 네트워크들, 및 송신 프로토콜들에 광범위하게 적용가능한 것으로 의도되고, 이들 중 일부는 예로써 도면들에서 그리고 다음의 상세한 설명에서 예시된다. 상세한 설명 및 도면들은 제한적이기보다는 본 개시의 예시일 뿐이며, 본 개시의 범위는 첨부된 청구항들 및 그 등가물들에 의해 정의된다.
수개의 양태들이 여러 장치들 및 방법들을 참조하여 제시된다. 이들 장치 및 방법들은 다양한 블록들, 컴포넌트들, 회로들, 프로세스들, 알고리즘들 등 ("엘리먼트들" 로서 총칭됨) 에 의해 다음의 상세한 설명에서 설명되고 첨부 도면들에 예시될 것이다. 이 엘리먼트들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 그 임의의 조합을 이용하여 구현될 수도 있다. 그러한 엘리먼트들이 하드웨어 또는 소프트웨어로 구현될지 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 의존한다.
예로써, 엘리먼트, 또는 엘리먼트의 임의의 부분, 또는 엘리먼트들의 임의의 조합은 하나 이상의 프로세서들을 포함하는 "프로세싱 시스템"(이는 또한 프로세싱 유닛들로 지칭될 수도 있음) 으로서 구현될 수도 있다. 프로세서들의 예들은 마이크로프로세서들, 마이크로제어기들, 그래픽 프로세싱 유닛들 (GPU들), 범용 GPU들 (GPGPU들), 중앙 프로세싱 유닛들 (CPU들), 애플리케이션 프로세서들, 디지털 신호 프로세서들 (DSP들), RISC (reduced instruction set computing) 프로세서들, 시스템 온 칩 (systems-on-chip; SOC), 베이스밴드 프로세서들, 응용 주문형 집적 회로 (ASIC들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 프로그래밍가능 로직 디바이스들 (PLD들), 상태 머신들, 게이티드 로직, 이산 하드웨어 회로들, 및 본 개시 전반에 걸쳐 설명된 다양한 기능성을 수행하도록 구성된 다른 적합한 하드웨어를 포함한다. 프로세싱 시스템에서의 하나 이상의 프로세서들은 소프트웨어를 실행할 수도 있다. 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 다른 것으로서 지칭되든 간에, 명령들, 명령 세트들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브프로그램들, 소프트웨어 컴포넌트들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능물들, 실행 스레드들, 절차들, 함수들 등을 의미하는 것으로 폭넓게 간주될 수 있다.
용어 애플리케이션은 소프트웨어를 지칭할 수도 있다. 본원에 설명된 바와 같이, 하나 이상의 기법들은 하나 이상의 기능들을 수행하도록 구성되는 애플리케이션 (예를 들어, 소프트웨어) 를 지칭할 수도 있다. 이러한 예들에서, 애플리케이션은 메모리 (예를 들어, 프로세서의 온-칩 메모리, 시스템 메모리, 또는 임의의 다른 메모리) 에 저장될 수도 있다. 본원에 설명된 하드웨어, 이를 테면 프로세서는 애플리케이션을 실행하도록 구성될 수도 있다. 예를 들어, 애플리케이션은 하드웨어에 의해 실행될 때, 하드웨어로 하여금, 본원에 설명된 하나 이상의 기법들을 수행하게 하는 코드를 포함하는 것으로서 설명될 수도 있다. 일 예로서, 하드웨어는 메모리로부터 코드에 액세스하고 본원에 설명된 하나 이상의 기법들을 수행하도록 메모리로부터 액세스되는 코드를 실행할 수도 있다. 일부 예들에서, 컴포넌트들은 본 개시에 식별된다. 이러한 예들에서, 컴포넌트들은 하드웨어, 소프트웨어 또는 이들의 조합일 수도 있다. 컴포넌트들은 별개의 컴포넌트 또는 단일의 컴포넌트의 서브컴포넌트들일 수도 있다.
이에 따라, 본원에 설명된 하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현되면, 그 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 또는 인코딩될 수도 있다. 컴퓨터-판독가능 매체들은 컴퓨터 저장 매체들을 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수도 있는 임의의 가용 매체일 수도 있다. 비한정적 예로서, 이러한 컴퓨터 판독가능 매체는 RAM (random-access memory), ROM (read-only memory), EEPROM (electrically erasable programmable ROM), 광학 디스크 스토리지, 자기 디스크 스토리지, 다른 자기 스토리지 디바이스들, 전술한 유형의 컴퓨터 판독가능 매체의 조합, 또는 컴퓨터에 의해 액세스될 수도 있는 명령 또는 데이터 구조 형태의 컴퓨터 실행가능 코드를 저장하는데 사용될 수도 있는 임의의 다른 매체를 포함할 수도 있다.
일반적으로, 본 개시는 그래픽 컨텐츠의 렌더링을 개선하고/하거나 프로세싱 유닛 (예를 들어, 본원에 설명된 하나 이상의 기법들을 수행하도록 구성되는 임의의 프로세싱 유닛, 이를 테면, GPU) 의 부하를 감소시킬 수도 있는 단일의 디바이스 또는 다수의 디바이스들에서의 그래픽 프로세싱에 대한 기법들을 설명한다. 예를 들어, 본 개시는 그래픽 프로세서를 활용하는 임의의 디바이스에서 그래픽 프로세싱에 적용가능한 기법을 설명한다. 이러한 기법의 다른 가능한 이점들이 본 개시 전반에 걸쳐 설명된다.
본원에 사용된 바와 같이 용어 "컨텐츠"의 사례는 용어가 형용사, 명사, 또는 다른 스피치의 부분들로서 사용되는지 여부에 관계없이, "그래픽 컨텐츠", "이미지" 등을 지칭할 수도 있다. 일부 예들에서, 본원에 사용된 용어 "그래픽 컨텐츠" 는 그래픽 프로세싱 파이프라인의 하나 이상의 프로세스들에 의해 생성되는 컨텐츠를 의미할 수도 있다. 추가의 예들에서, 본원에 사용된 용어 "그래픽 컨텐츠" 는 그래픽 프로세싱을 수행하도록 구성되는 프로세싱 유닛에 의해 생성되는 컨텐츠를 의미할 수도 있다. 추가의 또 다른 예들에서, 본원에 사용된 용어 "그래픽 컨텐츠"는 그래픽 프로세싱 유닛에 의해 생성된 컨텐츠를 의미할 수도 있다.
예들에서, 본원에 사용된 용어 "디스플레이 컨텐츠" 는 디스플레이 프로세싱을 수행하도록 구성되는 프로세싱 유닛에 의해 생성되는 컨텐츠를 의미할 수도 있다. 추가의 예들에서, 본원에 사용된 용어 "디스플레이 컨텐츠" 는 디스플레이 프로세싱 유닛에 의해 생성된 컨텐츠를 의미할 수도 있다. 그래픽 컨텐츠는 디스플레이 컨텐츠로 되도록 프로세싱될 수도 있다. 예를 들어, 그래픽 프로세싱 유닛은 그래픽 컨텐츠, 이를 테면, 프레임을 버퍼 (이는 프레임 버퍼로서 지칭될 수도 있음) 로 출력할 수도 있다. 디스플레이 프로세싱 유닛은 그래픽 컨텐츠, 이를 테면, 버퍼로부터의 하나 이상의 프레임들을 판독할 수도 있고, 그리고 디스플레이 컨텐츠를 생성하도록 그 위에서 하나 이상의 디스플레이 프로세싱 기법들을 수행할 수도 있다. 예를 들어, 디스플레이 프로세싱 유닛은 프레임을 생성하도록 하나 이상의 렌더링된 계층들에 대한 구성을 수행하도록 구성될 수도 있다. 다른 예로서, 디스플레이 프로세싱 유닛은 두 개의 계층들을 단일의 프레임으로 함께, 작성, 블렌딩 또는 결합할 수도 있다. 디스플레이 프로세싱 유닛은 프레임에 대해 스케일링 (예를 들어, 업스케일링 또는 다운스케일링) 을 수행하도록 구성될 수도 있다. 일부 예들에서, 프레임은 계층을 지칭할 수도 있다. 다른 예들에서, 프레임은 프레임이 둘 이상의 계층들을 포함할 때 프레임을 형성하도록 함께 이미 블렌딩되었던 둘 이상의 계층들을 지칭할 수도 있다. 대안적으로, 둘 이상의 계층들을 포함하는 프레임이 후속하여 블렌딩될 수도 있다.
도 1 은 본 개시의 하나 이상의 기법들을 구현하도록 구성된 일 예의 컨텐츠 생성 시스템 (100) 을 예시하는 블록 다이어그램이다. 컨텐츠 생성 시스템 (100) 은 디바이스 (104) 를 포함한다. 디바이스 (104) 는 본원에 설명된 여러 기능들을 수행하기 위한 하나 이상의 컴포넌트들 또는 회로들을 포함할 수도 있다. 일부 예들에서, 디바이스 (104) 의 하나 이상의 컴포넌트들은 SOC 의 컴포넌트들일 수도 있다. 디바이스 (104) 는 본 개시의 하나 이상의 기법들을 수행하도록 구성되는 하나 이상의 컴포넌트들을 포함할 수도 있다. 도시된 예에서, 디바이스 (104) 는 프로세싱 유닛 (120) 및 시스템 메모리 (124) 를 포함할 수도 있다. 일부 양태들에서, 디바이스 (104) 는 복수의 선택적 컴포넌트들 (예를 들어, 통신 인터페이스 (126), 트랜시버 (132), 수신기 (128), 송신기 (130), 디스플레이 프로세서 (127), 및 하나 이상의 디스플레이들 (131)) 을 포함할 수도 있다. 디스플레이(들) (131) 은 하나 이상의 디스플레이들 (131) 을 지칭할 수도 있다. 예를 들어, 디스플레이 (131) 는 제 1 디스플레이 및 제 2 디스플레이를 포함할 수도 있는 단일의 디스플레이 또는 다수의 디스플레이들을 포함할 수도 있다. 제 1 디스플레이는 좌안 디스플레이일 수도 있고 제 2 디스플레이는 우안 디스플레이일 수도 있다. 일부 예들에서, 제 1 및 제 2 디스플레이는 그 위에 제시를 위한 상이한 프레임들을 수신할 수도 있다. 다른 예들에서, 제 1 및 제 2 디스플레이는 그 위에 제시를 위한 동일한 프레임들을 수신할 수도 있다. 추가의 예들에서, 그래픽 프로세싱의 결과들은 디스플레이 상에 디스플레이되지 않을 수도 있고, 예를 들어, 제 1 및 제 2 디스플레이는 그 위에 제시를 위한 어느 프레임들도 수신하지 못할 수도 있다. 그 대신에, 프레임들 또는 그래픽들 프로세싱 결과들은 다른 디바이스로 전달될 수도 있다. 일부 양태들에서, 이는 스플릿 렌더링으로서 지칭될 수도 있다.
프로세싱 유닛 (120) 은 내부 메모리 (121) 를 포함할 수도 있다. 프로세싱 유닛 (120) 은 그래픽 프로세싱 파이프라인 (107) 를 사용하여 그래픽 프로세싱을 수행하도록 구성될 수도 있다. 일부 예들에서, 디바이스 (104) 는 하나 이상의 디스플레이들 (131) 에 의해 디스플레이되기 전에 프로세싱 유닛 (120) 에 의해 생성된 하나 이상의 프레임들에 대해 하나 이상의 디스플레이 프로세싱 기법들을 수행하도록 디스플레이 프로세서, 이를 테면, 디스플레이 프로세서 (127) 를 포함할 수도 있다. 디스플레이 프로세서 (127) 는 디스플레이 프로세싱을 수행하도록 구성될 수도 있다. 예를 들어, 디스플레이 프로세서 (127) 는 프로세싱 유닛 (120) 에 의해 생성된 하나 이상의 프레임들에 대해 하나 이상의 디스플레이 기법들을 수행하도록 구성될 수도 있다. 하나 이상의 디스플레이들 (131) 은 디스플레이 프로세서 (127) 에 의해 프레임들을 디스플레이하거나 달리 제시하도록 구성될 수도 있다. 일부 예들에서, 하나 이상의 디스플레이들 (131) 은 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 프로젝션 디스플레이 디바이스, 증강 현실 디스플레이 디바이스, 가상 현실 디스플레이 디바이스, 헤드 탑재형 디스플레이 또는 임의의 다른 유형의 디스플레이 디바이스 중 하나 이상을 포함할 수도 있다.
프로세싱 유닛 (120), 이를 테면, 시스템 메모리 (124) 의 외부에 있는 메모리는 프로세싱 유닛 (120) 에 액세스가능하다. 예를 들어, 프로세싱 유닛 (120) 은 외부 메모리, 이를 테면, 시스템 메모리 (124) 에 대하여 판독하고/하거나 기록하도록 구성될 수도 있다. 프로세싱 유닛 (120) 은 시스템 메모리 (124) 에 버스를 통하여 통신적으로 커플링될 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 은 상이한 접속을 통하여 또는 버스를 통하여 내부 메모리 (121) 에 통신적으로 커플링될 수도 있다. 내부 메모리 (121) 또는 시스템 메모리 (124) 는 하나 이상의 휘발성 또는 비휘발성 메모리들 또는 저장 디바이스들을 포함할 수도 있다. 일부 예들에서, 내부 메모리 (121) 또는 시스템 메모리 (124) 는 RAM, SRAM (static random access memory), DRAM (dynamic random access memory), EPROM (erasable programmable ROM), EEPROM, 플래시 메모리, 자기 데이터 매체 또는 광학 저장 매체 또는 임의의 다른 유형의 메모리를 포함할 수도 있다.
내부 메모리 (121) 또는 시스템 메모리 (124) 는 일부 예들에 따른 비일시적 저장 매체일 수도 있다. 용어 "비일시적" 은, 저장 매체가 캐리어 파 (carrier wave) 또는 전파되는 신호에서 구체화되지 않는다는 것을 나타낼 수도 있다. 하지만, 용어 "비일시적" 은, 내부 메모리 (121) 또는 시스템 메모리 (124) 가 이동가능하지 않다는 것 또는 그 컨텐츠가 정적이라는 것을 의미하도록 해석되지 않아야 한다. 일 예로서, 시스템 메모리 (124) 는 디바이스 (104) 로부터 제거되고 다른 디바이스로 이동될 수도 있다. 다른 예로서, 시스템 메모리 (124) 는 디바이스 (104) 로부터 제거될 수도 있다.
프로세싱 유닛 (120) 은 그래픽 프로세싱을 수행하도록 구성될 수도 있는 CPU, GPU, GPGPU, 또는 임의의 다른 프로세싱 유닛일 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 은 디바이스 (104) 의 마더보드에 통합될 수도 있다. 추가의 예들에서, 프로세싱 유닛 (120) 은 디바이스 (104) 의 마더보다의 포트에 설치된 그래픽 카드 상에 존재할 수도 있거나 또는 디바이스 (104) 와 상호동작하도록 구성된 주변 디바이스 내에서 달리 통합될 수도 있다. 프로세싱 유닛 (120) 은 하나 이상의 프로세서들, 이를 테면, 하나 이상의 마이크로프로세서들, GPU들, ASIC들, FPGA들, ALU들 (arithmetic logic units), DSP들, 별개의 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 등가의 통합된 또는 별개의 로직 회로부 또는 임의의 이들의 조합을 포함할 수도 있다. 기법들이 부분적으로 소프트웨어에서 구현되면, 프로세싱 유닛 (120) 은 적합한 비-일시적인 컴퓨터 판독가능 저장 매체, 예를 들어 내부 메모리 (121) 에 소프트웨어에 대한 명령들을 저장할 수도 있으며, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 하드웨어에서 명령들을 실행할 수도 있다. 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함한 임의의 전술한 바는 하나 이상의 프로세서들인 것으로 고려될 수도 있다.
일부 양태들에서, 컨텐츠 생성 시스템 (100) 은 선택적 통신 인터페이스 (126) 를 포함할 수 있다. 통신 인터페이스 (126) 는 수신기 (128) 와 송신기 (130) 를 포함할 수도 있다. 수신기 (128) 는 디바이스 (104) 에 대하여 본원에 설명된 임의의 수신 기능을 수행하도록 구성될 수도 있다. 추가적으로, 수신기 (128) 는 다른 디바이스로부터 정보, 예를 들어, 눈 또는 머리 위치 정보, 렌더링 컴포넌트들, 또는 위치 정보를 수신하도록 구성될 수도 있다. 송신기 (130) 는 디바이스 (104) 에 대하여 본원에 설명된 임의의 송신 기능을 수행하도록 구성될 수도 있다. 예를 들어, 송신기 (130) 는 다른 디바이스로, 컨텐츠의 요청을 포함할 수도 있는 정보를 송신하도록 구성될 수도 있다. 수신기 (128) 및 송신기 (130) 는 트랜시버 (132) 로 결합될 수도 있다. 이러한 예들에서, 트랜시버 (132) 는 디바이스 (104) 에 대하여 본원에 설명된 임의의 수신 기능 및/또는 송신 기능을 수행하도록 구성될 수도 있다.
도 1 을 다시 참조하여 보면, 특정 양태들에서, 그래픽 프로세싱 파이프라인 (107) 은 프레임 프로세싱 컴포넌트 (198) 를 포함할 수도 있고, 이 컴포넌트는 제 1 프레임이 제 2 프레임의 렌더링의 완료 후에 현재 전달 중인지 또는 이미 전달되었는지를 결정하는 것으로서, 제 2 프레임은 제 1 프레임에 후속하고, 제 1 프레임이 현재 전달 중인 것으로 결정될 때 클록 속도들의 제 1 세트를 그리고 제 1 프레임이 전달되었다고 결정될 때 클록 속도들의 제 2 세트를 적어도 하나의 클록으로 사용하는 것으로서, 클록 속도들의 제 2 세트는 클록 속도들의 제 1 세트보다 더 빠르고, 제 1 프레임의 전달의 완료 후에 클록 속도들의 사용된 세트에 기초하여 제 2 프레임을 전달하도록 구성된다.
디바이스, 이를 테면, 디바이스 (104) 는 본원에 설명된 하나 이상의 기법들을 수행하도록 구성되는 임의의 디바이스, 장치, 또는 시스템을 지칭할 수도 있다. 예를 들어, 디바이스는 서버, 기지국, 사용자 장비, 클라이언트 디바이스, 스테이션, 액세스 포인트, 컴퓨터, 이를 테면, 퍼스널 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 테블릿 컴퓨터, 컴퓨터 워크스테이션, 또는 메인프레임 컴퓨터, 최종 제품, 장치, 폰, 스마트폰, 서버, 비디오 게임 플랫폼 또는 콘솔, 핸드헬드 디바이스 이를 테면 포터블 비디오 게임 디바이스 또는 개인 휴대 정보 단말기 (PDA), 웨어러블 컴퓨팅 디바이스 이를 테면, 스마트 워치, 증강 현실 디바이스 또는 가상 현실 디바이스, 비-웨어러블 디바이스, 디스플레이 또는 디스플레이 디바이스, 텔레비전, 텔레비전 셋톱박스, 중간 네트워크 디바이스, 디지털 미디어 플레이어, 비디오 스트리밍 디바이스, 컨텐츠 스트리밍 디바이스, 비히클 내 컴퓨터, 임의의 모바일 디바이스, 그래픽 컨텐츠를 생성하도록 구성된 임의의 디바이스, 또는 본원에 설명된 하나 이상의 기법들을 수행하도록 구성되는 임의의 디바이스일 수도 있다. 본원의 프로세스들은 특정 컴포넌트 (예를 들어, GPU) 에 의해 수행된 바와 같이 설명될 수도 있지만, 추가의 실시형태들에서, 개시된 실시형태들에 부합하는 다른 컴포넌트들 (예를 들어, CPU) 을 사용하여 수행될 수 있다.
도 2 는 예시적인 디바이스 (104) 와 연계하여 식별될 수 있는 바와 같이, 프로세싱 유닛 (120), 시스템 메모리 (124), 디스플레이 프로세서 (127), 및 디스플레이(들) (131) 를 포함하는 일 예의 디스플레이 프레임워크를 예시하는 블록 다이어그램 (200) 이다.
GPU 는 일반적으로 디스플레이 상의 시각적 프리젠테이션을 위한 컨텐츠를 제공하는 디바이스에 포함된다. 예를 들어, 프로세싱 유닛 (120) 은 컴퓨터 워크스테이션, 모바일 폰, 스마트폰, 또는 다른 스마트 디바이스, 임베디드 시스템, 퍼스널 컴퓨터, 태블릿 컴퓨터, 비디오 게임 콘솔 등일 수도 있는 컴퓨팅 디바이스 (예를 들어, 디바이스 (104)) 상의 디스플레이를 위하여 그래픽 데이터를 렌더링하도록 구성되는 GPU (210) 를 포함할 수도 있다. GPU (210) 의 동작들은 CPU (215) 에 의해 제공된 하나 이상의 그래픽 프로세싱 커맨드들에 기초하여 제어될 수도 있다. CPU (215) 는 다수의 동작들을 동시에 실행하도록 구성될 수도 있다. 일부 경우들에, 동시적으로 실행되는 다수의 애플리케이션의 각각은 GPU (210) 를 동시에 활용할 수도 있다. 프로세싱 기법들은 물리적 또는 무선 통신 채널을 통해 프레임을 출력하는 프로세싱 유닛 (120) 을 통하여 수행될 수도 있다.
프로세싱 유닛 (120) 에 의해 실행될 수도 있는 시스템 메모리 (124) 는 사용자 공간 (220) 및 커널 공간 (225) 을 포함할 수도 있다. 사용자 공간 (220) (종종 "애플리케이션 공간"으로서 지칭됨) 은 소프트웨어 애플리케이션(들) 및/또는 애플리케이션 프레임워크(들) 을 포함할 수도 있다. 예를 들어, 소프트웨어 애플리케이션(들)은 오퍼레이팅 시스템들, 미디어 애플리케이션들, 그래픽 애플리케이션들, 워크스페이스 애플리케이션 등을 포함할 수도 있다. 애플리케이션 프레임워크(들)은 하나 이상의 소프트웨어 애플리케이션들, 이를 테면, 라이브러리, 서비스 (예를 들어, 디스플레이 서비스, 입력 서비스 등), 애플리케이션 프로그램 인터페이스 (application program interfaces; APIs)) 등에 의해 사용되는 프레임워크들을 포함할 수도 있다. 커널 공간 (225) 은 디스플레이 드라이버 (230) 을 더 포함할 수도 있다. 디스플레이 드라이버 (230) 는 디스플레이 프로세서 (127) 를 제어하도록 구성될 수도 있다. 예를 들어, 디스플레이 드라이버 (230) 는 디스플레이 프로세서 (127) 로 하여금, 생성된 프레임들의 디스플레이 레이트를 (예를 들어, FPS (frames per second) 로) 변경하게 할 수도 있다.
디스플레이 프로세서 (127) 는 디스플레이 제어 블록 (235) 및 디스플레이 인터페이스 (240) 를 포함한다. 디스플레이 프로세서 (127) 는 (예를 들어, 디스플레이 드라이버 (230) 로부터 수신된 입력에 기초하여) 디스플레이(들) (131) 의 기능들을 조작하도록 구성될 수도 있다. 예를 들어, 디스플레이 제어 블록 (235) 은 디스플레이(들) (131) 의 FPS 디스플레이 레이트를 변경하라는 명령들을 디스플레이 드라이버 (230) 로부터 수신하도록 구성될 수도 있다. 디스플레이 제어 블록 (235) 은 또한 디스플레이 드라이버 (230) 에 의해 결정된 디스플레이 리프레시 레이트에 기초하여 디스플레이 인터페이스 (240) 를 통하여 디스플레이(들)(131) 에 이미지 프레임들을 출력하도록 구성될 수도 있다. 디스플레이 드라이버 (230) 는 새로운 디스플레이 리프레시 레이트/현재 디스플레이 리프레시 레이트에 대한 변화량을 나타내는 리프레시 레이트 정보를 출력할 수도 있다. 디스플레이 제어 블록 (235) 은 리프레시 레이트 정보를 수신하고 디스플레이 인터페이스 (240) 로 하여금, 리프레시 레이트 정보에 기초하여 디스플레이(들) (131) 에 이미지 프레임들을 출력하게 할 수도 있다. 일부 예들에서, 디스플레이 제어 블록 (235) 은 추가적으로 또는 대안적으로 프로세싱 유닛 (120) 에 의한 시스템 메모리 (124) 의 실행에 기초하여 제공된 이미지 데이터의 포스트-프로세싱을 수행할 수도 있다.
디스플레이 인터페이스 (240) 는 디스플레이(들) (131) 로 하여금 이미지 프레임들을 디스플레이하게 하고/하거나 디스플레이(들) (131) 이 이미지 프레임들을 디스플레이하는 특정 디스플레이 레이트 (예를 들어, 특정 FPS 디스플레이 레이트) 를 설정하게 하도록 구성될 수도 있다. 디스플레이 인터페이스 (240) 는 인터페이스 프로토콜, 이를 테면, 예를 들어, MIPI DSI (Mobile Industry Processor Interface, Display Serial Interface) 에 따라 디스플레이(들) (131) 에 이미지 데이터를 출력할 수도 있다. 즉, 디스플레이(들) (131) 은 MIPI DSI 표준들에 따라 구성될 수도 있다. MIPI DSI 표준은 비디오 모드 및 커맨드 모드를 지원한다. 디스플레이(들) (131) 이 비디오 모드에서 동작하는 예들에서, 디스플레이 프로세서 (127) 는 디스플레이(들) (131) 의 그래픽 컨텐츠를 연속적으로 리프레시할 수도 있다. 예를 들어, 전체 그래픽 컨텐츠는 리프레시 사이클마다 (예를 들어, 라인 별로) 리프레시될 수도 있다. 디스플레이(들) (131) 이 커맨드 모드에서 동작하는 예들에서, 디스플레이 프로세서 (127) 는 버퍼 (250) 에 프레임의 그래픽 컨텐츠를 기록할 수도 있다.
일부 이러한 예들에서, 디스플레이 프로세서 (127) 는 디스플레이(들) (131) 의 그래픽 컨텐츠를 연속적으로 리프레시하지 않을 수도 있다. 그 대신에, 디스플레이 프로세서 (127) 는 버퍼 (250) 에서 그래픽 컨텐츠의 렌더링 및 소비를 조정하는데 수직 동기화 (vertical synchronization; VSYNC) 펄스를 사용할 수도 있다. 예를 들어, VSYNC 펄스가 생성될 때, 디스플레이 프로세서 (127) 는 버퍼 (250) 에 새로운 그래픽 컨텐츠를 출력할 수도 있다. 따라서, VSYNC 펄스의 생성은 현재 그래픽 컨텐츠가 버퍼 (250) 에서 렌더링되었음을 나타낼 수도 있다. 그러나, VSYNC 펄스의 생성이 예를 들어, 디스플레이(들) (131) 의 현재 FPS 디스플레이 레이트에 기초하는 기간을 나타낼 수도 있음을 또한 알아야 한다.
프레임들은 디스플레이 제어기 (245), 디스플레이 클라이언트 (255), 및 버퍼 (250) 에 기초하여 디스플레이(들) (131) 에 디스플레이된다. 디스플레이 제어기 (245) 는 디스플레이 인터페이스 (240) 로부터 이미지 데이터를 수신하고, 버퍼 (250) 에 수신된 이미지 데이터를 저장할 수도 있다. 일부 예들에서, 디스플레이 제어기 (245) 는 버퍼 (250) 에 저장된 이미지 데이터를 디스플레이 클라이언트 (255) 에 출력할 수도 있다. 따라서, 버퍼 (250) 는 디스플레이(들) (131) 에 대한 로컬 메모리를 나타낼 수도 있다. 일부 예들에서, 디스플레이 제어기 (245) 는 디스플레이 인터페이스 (240) 로부터 수신된 이미지 데이터를 디스플레이 클라이언트 (255) 에 직접 출력할 수도 있다. 디스플레이(들) (131) 의 FPS 디스플레이 레이트를 변경할지의 여부를 결정하는 것은 디스플레이 제어기 (245), 디스플레이 제어 블록 (235), 및/또는 디스플레이 드라이버 (230) 에 의해 수행될 수도 있음을 또한 알아야 한다.
디스플레이 클라이언트 (255) 는 사용자와 디스플레이(들) (131) 사이의 상호작용들을 감지하는 터치 패널과 연관될 수도 있다. 사용자가 디스플레이(들) (131) 과 상호작용할 때, 터치 패널에서의 하나 이상의 센서들은 하나 이상의 센서들 중 어느 것이 센서 활동을 갖는지, 센서 활동의 지속기간, 하나 이상의 센서 등에 인가된 압력을 나타는 신호들을 디스플레이 제어기 (245) 에 출력할 수도 있다. 디스플레이 제어기 (245) 는 사용자가 디스플레이(들) (131) 와 상호작용하였던 방식을 결정하기 위해 센서 출력들을 사용할 수도 있다. 디스플레이(들) (131) 는 또한, 디스플레이 클라이언트 (255) 와 연계하여 동작하는 다른 디바이스들, 이를 테면, 카메라, 마이크로폰, 및/또는 스피커와 연관되고/이를 포함할 수도 있다.
디바이스 (104) 의 일부 프로세싱 기법들은 3 개의 스테이지들 (예를 들어, 스테이지 1: 렌더링 스테이지; 스테이지 2: 구성 스테이지; 및 스테이지 3: 디스플레이/전달 스테이지) 를 통하여 수행될 수도 있다. 그러나, 다른 프로세싱 기법들은 구성 스테이지 및 디스플레이/전달 스테이지를 단일의 스테이지로 결합할 수 있어, 프로세싱 기법이 총 2 개의 스테이지들 (예를 들어, 스테이지 1: 렌더링 스테이지; 및 스테이지 2: 구성/디스플레이/전달 스테이지) 에 기초하여 실행되게 할 수도 있다. 렌더링 스테이지 동안에, GPU (210) 는 픽셀-바이-픽셀 기반으로 컨텐츠를 생성하는 애플리케이션의 실행에 기초하여 컨텐츠 버퍼를 프로세싱할 수도 있다. 구성 및 디스플레이 스테이지(들) 동안에, 픽셀 엘리먼트들은 프레임을 디스플레이하는 물리 디스플레이 패널/서브시스템 (예를 들어, 디스플레이들 (131)) 으로 전달되는 프레임을 형성하도록 어셈블리될 수도 있다.
물리 디스플레이 패널/서브시스템으로의 프레임들의 일정한 FPS (frame per second) 전달 레이트를 유지하기 위해, 프로세싱 파이프라인의 스테이지들은 일정한 기간에 기초하여 수행될 수도 있다. 일부 사례들에서, 기간은 프레임들의 원하는 FPS 전달 레이트에 의해 제어될 수도 있다. 예를 들어, 16.6 ms 프레임 시간을 갖는 60 Hz FPS 디스플레이 패널은 프레임 드롭-오프를 방지하기 위해 16.6 ms 내에서 프로세싱 파이프라인의 스테이지들을 완료하는 것이 필요할 수도 있는 한편, 8.3 ms 프레임 시간을 갖는 120 Hz FPS 디스플레이 패널은 프레임 드롭-오프를 방지하기 위해 8.3 ms 내에서 프로세싱 파이프라인의 스테이지들을 완료하는 것이 필요할 수도 있다. 보다 구체적으로, 컨텐츠가 디스플레이 패널/서브시스템에 의해 원활하게 디스플레이중임을 보장하기 위하여, 프로세싱 파이프라인이 실행되는 기간은 디스플레이 패널/서브시스템의 프레임 시간 이하여야 한다. 프로세싱 파이프라인의 스테이지들을 완료하는데 요구되는 총 시간이 디스플레이 패널의 프레임 시간을 초과하면, 프레임 드롭-오프가 디스플레이되는 컨텐츠에서 원활하지 못함/지각각능한 일시정지를 야기할 수도 있다.
도 3a-3b 는 가변 리프레시 레이트 (VRR) 피처 (312), 이를 테면, QSYNC 피처가 프레임의 길이를 연장할 수 있게 하는 영향을 예시한다. 가변 리프레시 레이트 기법은 온더 플라이로 변경할 수도 있는 레이트에서 프레임 업데이트들을 수행하도록 구성된다. 연관된 디스플레이는 변하는 프레임 레이트에 의해 달리 야기될 수도 있는 프레임들의 셔터들 및/또는 티어들을 그에 의해 감소시키도록 디스플레이 레이트를 프레임이 수신되고 있는 레이트와 동기하여 유지할 수도 있다. 프레임 프로세싱 기법의 양태들에서, GPU 는 DPU 가 디스플레이 패널에 프레임 N 을 디스플레이/전달할 때와 동시에 프레임 N+1 을 렌더링할 수도 있다. 다이어그램 (300) 에서, 프레임 N+2 의 렌더링은 주기 T (302) 보다 더 길게 걸리며, 이는 디스플레이 패널의 프레임 시간 및/또는 VSYNC 시간 (304) 에 대응할 수도 있다. 예를 들어, 주기 T (302) 는 디스플레이 패널의 구성에 의존하여 16.6 ms 또는 8.3 ms 로 설정될 수도 있다. 프레임 N+2 의 렌더링이 프레임 시간을 초과하여 그리고 후속하는 프레임으로 연장되기 때문에 DPU 는 두개의 연속하는 프레임들에 대해 프레임 N+1 을 반복하고 프레임 N+2 의 전달을 다음 프레임으로 지연시킬 수도 있고, 다음 프레임에서 프레임 N+3 의 렌더링을 시작할 것이다. 프레임 N+2 의 전달을 다음 프레임으로 지연시키는 것에 의해 야기되는 프레임 드롭-오프는 정크 (jank) 로서 알려진 디스플레이된 컨텐츠에 지각가능한 일시정지를 야기할 수도 있다.
프레임을 너무 느리게 렌더링하고 프레임 시간을 초과하는 GPU 에 의해 야기된 정크를 감소시키기 위하여, 다이어그램 (310) 은 개별적인 프레임에 대한 프레임 시간의 길이를 연장하기 위해 가변 리프레시 레이트 피처 (312) 를 도입한다. 즉, 프레임의 렌더링이 초기 프레임 시간 내에서 완료될 것으로 예상되지 않을 때, 가변 리프레시 레이트 피처 (312) 는 VSYNC 시간 (304) 을 증가시키는 것에 의해 이전-고정 프레임 시간을 연장된 프레임 시간으로 대체하기 위해 유연성을 제공한다. 프레임 시간을 연장하는 것이 프레임을 렌더링하기 위한 약간 더 많은 시간을 허용할 수도 있는 한편, 가변 VSYNC 시간 (304) 은 FPS 전달 레이트가 또한 가변적으로 되게 하고 DPU 하드웨어 구성에 기초하여 나중의 프레임들에서 다른 프레임 드롭-오프들을 초래할 수도 있다. 이에 따라, 안정적인 FPS 전달 레이트는 또한, 프레임들이 엔드 사용자에 의해 시각적으로 지각되는 방식을 개선할 수도 있다.
가변 리프레시 레이트 피처 (312) 가 인에이블됨이 없이 FPS 전달 레이트는 일반적으로 각각의 개별적인 프레임에 대해 고정된 값이다. 예를 들어, FPS 전달 레이트는 60 Hz 디스플레이 레이트 동안에 16.6 ms 로 고정될 수도 있다. 그러나, 가변 리프레시 레이트 피처 (312) 가 인에이블되면, FPS 전달 레이트는 GPU 의 프레임 렌더링 시간에 기초하여 동적으로 변경될 수도 있다. 예를 들어, 프레임 N+1 은 초기에 16.6 ms 로 설정될 수도 있고, 프레임 N+2 은 20 ms 로 연장될 수도 있고, 프레임 N+3 은 일부 다른 값으로 변경될 수도 있다. DPU 는 그 후, 각각의 개별적인 프레임의 길이에 기초하여 디스플레이 패널들의 리프레시 레이트를 조작하는 것에 의해 동작된다. 따라서, 프레임 렌더 시간이 20 ms 를 소비하면, 가변 리프레시 레이트 피처 (312) 는 추가적인 시간 소비들을 보상하고 이에 의해 정크 문제를 해결하기 위하여 16.6 ms 로부터 20 ms 로 프레임을 연장할 수도 있다. 이와 반대로, 프레임 렌더 시간이 15 ms 만을 소비하면, 렌더링이 프레임 시간 내에서 GPU 에 의해 수행될 수도 있을 때 가변 리프레시 레이트 피처 (312) 는 16.6 ms 프레임을 조작할 필요가 없다. 이전에 주지된 바와 같이, 가변 FPS 전달 레이트는 나중의 프레임들에서 일부 프레임 드롭-오프들을 야기할 수도 있다. 그러나, 디스플레이된 컨텐츠에 대한 프레임 드롭-오프들의 영향은 달리 정크로부터 야기되는 영향보다 덜 상당하다.
도 4 는 DPU 에 의한 전달 시간이 GPU 에 의해 연장된 렌더링 시간을 보상하도록 감소되는 비디오 모드 타이밍 다이어그램 (400) 을 예시한다. 감소된 전달 시간은 심지어 그래픽 프로세싱 파이프라인에 대한 많은 수요를 부과하는 게임 애플리케이션에 대해서도, 안정적인 FPS 전달 레이트를 유지하도록 구성된다. 일 양태에서, 디스플레이 시리얼 인터페이스 (display serial interface; DSI) 클록은 가변 리프레시 레이트 피처 (404) 가 프레임을 연장하도록 실행될 때 디스플레이/전달 시간 및/또는 구성 시간을 가속화하기 위해 동적으로 변경될 수도 있어, 데이터 스트림 프로세싱이 프로세싱의 안정적인 FPS 레이트로 유지될 수 있게 된다. 즉, 하나 이상의 클록들은, GPU 에 의해 이전 프레임을 렌더링하는 것이 초기 프레임 시간 보다 더 걸릴 때 디스플레이/전달 시간 및/또는 구성 시간을 증가시키기 위해 가속화될 수도 있다.
비디오 모드 타이밍 다이어그램 (400) 에서, 초기 프레임 시간은 주기 T (410) 로 표현된다. 다이어그램 (400) 에서 세 개의 프레임들 N, N+1, 및 N+2 의 각각이 오리지널 VSYNC (402) 에 따라 주기 T (410) 의 길이를 가질 때, 데이터 스트림은 일정한 FPS 레이트에서 프로세싱된다. 그러나, 가변 리프레시 레이트 피처 (404) 가 실시될 때, 프레임 N 의 지속기간은 지연 "a" (414) 만큼 T+a 의 지속기간으로 연장된다. 통상의 접근 방식 하에서, 이는 프레임 N 이 프레임들 N+1 및 N+2 각각보다 더 긴 길이를 갖는 것에 기인하여 FPS 가 변경되게 할 수도 있다. 이에 따라, 하나 이상의 클록들은 프레임 N+1 의 길이를 주기 X (412) 로 단축하기 위해 프레임 N+1 에서 애플리케이션 데이터 (AP 데이터)(406) 의 전달 시간을 감소시키기 위해 가속화될 수도 있다. 주기 X (412) 는 안정적인 FPS 프로세싱 레이트를 유지하기 위하여 T-a 와 동일하게 될 수도 있다. 보다 구체적으로 주기들 T+a, T-a, 및 T 에 걸친 FPS 에서의 프로세싱 레이트는, 모든 세 개의 프레임들 N, N+1, 및 N+2 이 각각 T (410) 의 주기를 가질 때와 동일한 FPS 프로세싱 레이트가 된다. 또한, 데이터 딕셔너리 (data dictionary; DDIC)(408) 의 실행 시간은 또한, 주기 X (412) 에 기초하여 프레임 N+1 에서 감소될 수도 있다.
다이어그램 (400) 은 비디오 모드 패널들 및/또는 커맨드 모드 패널들 양쪽 모두에 대하여 구현될 수도 있다. 일 양태에서, DPU 는 높은 프레임 레이트가 검출될 때, 이를 테면, 게이밍 애플리케이션들의 실행 동안에 높은 프레임 레이트의 검출시, 안정적인 FPS 프로세싱 레이트를 제공하도록 커맨드 모드 패널로부터 비디오 모드 패널로 스위칭될 수도 있다.
각각의 프레임 커밋에 대해, DPU 라인 카운터는 데이터 전달이 또한 완료되었는지의 여부를 결정하기 위하여 프레임의 GPU 렌더링이 완료될 때 수직의 총 (VTOTAL) 라인 수에 비교될 수도 있다. VTOTAL 은 디스플레이 패널/서브시스템에서 디스플레이 라인들의 총 수 (예를 들어, 라인들 1 내지 L) 를 나타낸다. 디스플레이 패널/서브시스템은 활성 라인들 및 비활성 라인들 (예를 들어, 수직의 블랙 (vertical black; VBLACK) 라인들) 로 라인별로 분할되고 라인 카운터에 의해 카운될 수도 있다. VTOTAL 은 활성 및 비활성 라인들의 총 수와 동일할 수도 있다. 예를 들어, 스마트폰은 2,008 개의 라인들의 VTOTAL 에 대하여 1,988 개의 활성 라인 및 20 개의 비활성/VBLACK 라인들을 가질 수도 있다. 다른 플랫폼들은 상이한 구성들 (예를 들어, 2,030 개의 라인들의 VTOTAL 에 대해, 2,020 개의 활성 라인들 및 10 개의 비활성 라인들) 을 가질 수도 있다. DPU 라인 카운트는 DPU 가 프레임을 라인별로 프로세싱할 때마다 증가하고 일부 구성에서 VTOTAL 와 동일할 수도 있다. DPU 라인 카운터는 프레임을 렌더링하는 것을 완료한 후에 리셋될 수도 있다.
DPU 라인 카운터가 프레임 (예를 들어, 프레임 N+1) 을 렌더링하는 것을 완료시에 VTOTAL 와 비교되기 때문에 그 때의 VTOTAL 미만인 라인 카운트는 이전 프레임 (예를 들어, 프레임 N) 의 데이터 전달이 여전히 진행중임을 나타낸다. 이는, 현재 프레임의 GPU 렌더링이 적시에 (예를 들어, 주기 T (410) 내에서) 완료되고 그리고 디폴트 DSI 클록들, 모바일 디스플레이 프로세서 (MDP) 클록들 및 다른 디폴트 설정들이 후속하는 프레임에서의 데이터 전달 및/또는 구성 동안에 유지될 수도 있음을 의미한다. 그러나, DPU 라인 카운트가 프레임을 렌더링하는 것의 완료시의 VTOTAL 보다 더 크다는 것은, 가변 리프레시 레이트 피처 (404) 가 프레임을 연장하는 것을 실시하고 있음을 나타낸다. 이는 현재 프레임의 GPU 렌더링이 적시에 (예를 들어, 주기 T (410) 내에서) 완료되지 않았고 클록들 중 하나 이상이 프레임 전달 시간 및/또는 구성 시간을 주기 X (412) 로 감소시키기 위해 후속 프레임에 대해 가속화되어야 하며, 이에 의해 연장된 GPU 렌더 시간에 포함된 지연 a (414) 를 보상함을 의미한다.
지연 a (414) 의 길이는 DPU 라인 카운터, 하나 이상의 DSI 클록들, 및/또는 다른 타이밍 파라미터들을 통하여 식별될 수도 있다. 특히, 주기 X (412) 는 주기 T (410) 에서 지연 a (414) 를 뺀 것과 동일할 수도 있다. 즉, GPU 렌더링이 주기 T (410) 를 지나 추가 시간 (예를 들어, 2 ms) 을 소비하면, DPU 는 추가된 렌더링 비용을 보상하기 위해 동일한 시간량 (예를 들어, 2 ms) 만큼 전달 시간을 감소시킬 수 있다. 후속하는 프레임 동안에 새로운 주기 (예를 들어, T-a 와 동일한 주기 X (412)) 는 하나 이상의 클록들, 이를 테면, DSI 비트 클록, 픽셀 클록, 또는 바이트 클록에 대한 조정을 결정하기 위해 패널 해상도 및 다른 DSI 타이밍 파라미터들 (예를 들어, 수직 포치 및 수평 포치) 와 함께 활용된다. 이러한 조정은 DPU 전달 시간 및/또는 구성 시간이 새로운 주기에 따라 수행될 수도 있음을 보장하도록 구현된다. 예를 들어, DSI 클록은 다른 현재 DSI 타이밍 파라미터들, 이를 테면, 수직 포치, 수평 포치, 및/또는 활성 프레임 영역을 유지하면서 가속화될 수도 있다. MDP 코어 클록 및 다른 관련 클록들은 가속화된 DSI 클록에 매칭하도록 가속화될 수도 있다.
도 5 는 하나 이상의 클록들이 프레임의 전달 시간을 감소시키기 위해 가속화되어야 하는지의 여부를 결정하는 것을 예시하는 플로우 다이어그램 (500) 이다. 502 에서, GPU 에 의해 렌더링하기 위한 프레임을 마무리하는 디스플레이 커밋이 생성된다. 보다 구체적으로, 디스플레이 커밋은 (예를 들어, GPU 가 프레임을 렌더링하는 동작으로 "커밋되는" 디스플레이 커밋 (502) 을 통하여) 프레임을 렌더링하기 전에 영구적으로 프레임을 생성하기 위해 활용되는 데이터에 대한 하나 이상의 잠정적인 변경들을 행한다. 504 에서, 가변 리프레시 레이트 피처가 실행된다. 예를 들어, 프레임을 렌더링하기 위해 GPU 에 의해 요구되는 시간은 현재 프레임 시간을 초과할 수도 있고, 이에 의해 가변 리프레시 레이트 피처로 하여금 활성화하여 프레임 시간을 연장하게 할 수도 있다. 506 에서, 프로세싱 시스템은 GPU 에 의해 프레임을 렌더링하는 것이 완료되는 것을 대기하여, 508 에서 프로세싱 시스템은 디스플레이 패널로 전달하기 위한 프레임을 준비할 수 있도록 한다. 예를 들어, 508 에서, DPU 는 이를 테면, 프레임을 형성하도록 픽셀 엘리먼트들을 어셈블리하는 것에 의해 프레임의 하나 이상의 렌더링된 계층들을 구성할 수도 있다.
510 에서, 프로세싱 시스템은 LINE_COUNT 가 VTOTAL 보다 더 큰지의 여부를 결정한다. 일 양태에서, LINE_COUNT 를 출력하는 라인 카운터는 데이터 스트림에서 각각의 프레임의 완료 후에 초기값으로 리셋되는 하드웨어일 수도 있다. 다른 양태에서, LINE_COUNT 의 초기값은 데이터 스트림에서 각각의 프레임의 제 1 ㅏ인의 시작에 기초할 수도 있고, 여기서 LINE_COUNT 는 각각의 라인을 따라 계속적으로 증가한다. LINE_COUNT 가 VTOTAL 보다 크지 않으면, 일부 실시형태들에서, 가변 리프레시 레이트 피처는 DPU 전달 시간에 대한 어떠한 조정 없이, 의도한 대로 자유롭게 동작한다. 즉, 512 에서, 디폴트 MDP 및 DSI 클록들은 프레임을 전달하기 위해 활용된다.
그러나, LINE_COUNT 가 VTOTAL 보다 더 크면, 가변 리프레시 레이트 피처는 GPU 에 의한 프레임의 느린 렌더링에 기인하여 프레임을 연장할 수도 있다. 따라서, 514 에서, MDP 및 DSI 클록들에 대해 부스트된/가속화된 시간이 프레임을 전달하기 위해 계산된다. 디폴트 클록 속도가 물리 디스플레이 패널의 고정된 프레임 시간에 기초할 수도 있는 한편, 가속화된 클록 속도는 GPU 렌더 시간에 기초할 수도 있다. 예를 들어, 프레임 N+1 의 GPU 렌더 시간이 시간 T 로부터 T-a 로 단축될 때 이전 프레임 N 의 GPU 렌더 시간이 시간 T 보다 더 오래 걸리기 때문에, 클록은 단축된 시간 프레임 T-a 내에서 디스플레이 패널로 프레임 N+1 을 전달하는 것을 허용하는 레이트까지 스피드업될 수도 있다. 어느 경우에도, 가변 리프레시 레이트 피처는 516 에서 종료되고, 518 에서 프레임은 그 디스플레이를 위하여 물리 디스플레이 패널로 전달된다.
도 6 은 본 개시의 하나 이상의 기법들에 따른 일 예의 방법의 플로우차트 (600) 이다. 방법 (600) 은 도 1-5 의 예들과 연계하여 사용된 바와 같이 프레임 구성기, 디스플레이 프로세서, DPU, GPU, 그래픽 프로세싱을 위한 장치, 무선 통신 디바이스 등에 의해 수행될 수도 있다.
602 에서, 프레임 프로세서는 일정한 디스플레이 레이트가 요청될 때 커맨드 모드로부터 비디오 모드로 스위칭될 수도 있다. 예를 들어, 도 4 를 참조하여 보면, 프레임 프로세서는 (예를 들어, 하이 프레임 레이트의 검출, 하이 프레임 레이트 애플리케이션의 론칭, 사용자로부터의 수동 입력 등에 기초하여) 커맨드 모드에 있는 동안 일정한 디스플레이 레이트에 대한 요청을 수신한 후에 비디오 모드 타이밍 다이어그램 (400) 에 의해 표현되는 비디오 모드로 스위칭할 수도 있다.
604 에서, 프레임 프로세서는 제 1 프레임이 제 2 프레임의 렌더링의 완료 후에 현재 전달 중인지 또는 이미 전달되었는지를 결정할 수도 있고, 제 2 프레임은 제 1 프레임에 후속한다. 예를 들어, 도 4 를 참조하면, 프레임 프로세서는 프레임 N of 비디오 모드 타이밍 다이어그램 (400) 의 프레임 N 이 가변 리프레시 레이트 피처 (404) 에 의해 T+a 로 연장되었는지의 여부 (여기서 지연 a (414) 는 프레임 N 이 프레임 N+1 의 렌더링이 완료되는 시간까지 디스플레이 패널로 이미 전달되었음을 나타냄); 또는 프레임 N 의 길이가 (예를 들어, 지연 a (414) 없이) 주기 T (410) 로 유지되는지의 여부 (여기서 주기 T (410) 의 길이는 프레임 N 이 디스플레이 패널로 현재 여전히 전달 중임을 나타냄) 를 결정할 수도 있다. 따라서, 일 양태에서, 프레임 프로세서는 DSI 클록이 지연을 측정하였는지의 여부에 기초하여, 제 1 프레임이 현재 전달 중인지 또는 전달되었는지를 결정할 수도 있다.
606 에서, 제 1 프레임이 현재 전달 중인지 또는 전달되었는지를 결정하는 것은, 제 1 프레임이 디스플레이 버퍼 내에 전달 중이거나 또는 디스플레이 버퍼 내에 완전히 전달되었음을 DPU 라인 카운터가 나타내는지의 여부를 결정하는 것을 더 포함할 수도 있다. 예를 들어, 도 5 를 참조하여 보면, 510 에서, 프레임 프로세서가 LINE_COUNT 가 VTOTAL 보다 더 크다고 결정하면, 그 표시는 프레임 N 이 버퍼 내에 완전하게 이미 전달되었다는 것이고, 이는 또한 프레임 N 이 디스플레이 패널로 이미 전달되었음을 나타낸다. 대안적으로, 510 에서, 프레임 프로세서가 LINE_COUNT 가 VTOTAL 미만이라고 결정하면, 그 표시는 프레임 N 이 버퍼 내에 완전하게 전달되지 않았다는 것이고, 이는 또한 프레임 N 이 디스플레이 패널로 현재 전달 중임을 나타낸다.
608 에서, 제 1 프레임이 현재 전달 중인 것으로 결정할 때, 적어도 하나의 클록은 클록 속도의 제 1 세트로 사용될 수 있다. 적어도 하나의 클록은 DSI 클록 또는 MDP 클록 중 적어도 하나를 포함할 수도 있다. 예를 들어, 도 5 를 참조하여 보면, 프레임 프로세서가 510 에서, LINE_COUNT 가 VTOTAL 미만이라고 결정하면, 512 에서 프레임 프로세서는 디폴트 MDP 및 DSI 클록들을 적용할 수도 있다. 즉, 클록 속도들의 제 1 세트는 제 1 주기 T 내에서 프레임의 전달을 제공하는 디폴트 클록 속도들의 세트일 수도 있다.
610 에서, 제 1 프레임이 이미 전달되었을 때, VSYNC 주기는 제 1 주기 T 로부터 제 2 주기 T+a 로 연장될 수도 있다. 제 2 주기 T+a 에 기초하여, 적어도 하나의 클록은 클록 속도들의 제 1 세트보다 더 고속인 클록 속도의 제 2 세트로 사용될 수도 있다. 예를 들어, 도 4 를 참조하면, 가변 리프레시 레이트 피처 (404) 는 오리지널 VSYNC (402) 을 지연 a (414) 만큼 연장할 수도 있고, 여기서 오리지널 VSYNC (402) 는 프레임 N 에 T (410) 의 초기 주기를 제공하였다. 연장된 주기 T+a 가 주기 T (410) 보다 더 길면, 클록 속도들의 세트는 안정적인 FPS 프로세싱 레이트를 유지하기 위해 프레임 N+1 에 대해 가속화되는 것이 필요할 수도 있다.
612 에서, 클록 속도들의 제 2 세트는 제 3 주기 T-a 내에서 제 2 프레임의 전달을 제공하기 위하여 제 2 프레임의 전달 완료 시간을 감소시키는 것에 기초하여 결정될 수도 있다. 예를 들어, 도 4 를 참조하면, 프레임 프로세서는 프레임 N+1 의 전달 완료 시간을 주기 X (412) 로 감소시키는 것에 기초하여 클록 속도들의 제 2 세트를 결정할 수도 있고, 여기서 주기 X (412) 는 T-a 와 동일하다.
614 에서, 제 1 프레임은 이미 전달되었다고 결정될 때, 적어도 하나의 클록은 클록 속도들의 제 2 세트로 사용될 수도 있고, 여기서 클록 속도들의 제 2 세트는 클록 속도들의 제 1 세트보다 더 고속이다. 예를 들어, 도 5 를 참조하여 보면, 프레임 프로세서가 510 에서, LINE_COUNT 가 VTOTAL 보다 더 크다고 결정하면, 514 에서 프레임 프로세서는 디폴트 MDP 및 DSI 클록들을 계산 및 부스트 (예를 들어, 그 레이트를 증가) 시킬 수도 있다. 즉, 클록 속도들의 제 2 세트는 제 3 주기 T-a 내에서 프레임의 전달을 위해 제공하는 가속화된 클록 속도들의 세트일 수도 있다. 클록 속도들의 제 2 세트는 제 2 프레임의 가변 리프레시 레이트에 기초할 수도 있다.
616 에서, 프레임 프로세서는 제 1 프레임의 전달의 완료 후에 클록 속도들의 사용된 세트에 기초하여 제 2 프레임을 전달할 수도 있다. 즉, 블록 616 은 클록 속도들의 제 1 세트 또는 클록 속도들의 제 2 세트의 어느 것에 기초하여 수행될 수도 있다. 예를 들어, 도 5 를 참조하여 보면, 가변 리프레시 레이트 피처가 516 에서 종료되었을 때 프레임 프로세서는 512 에서 적용된 디폴트 MDP 및 DSI 클록들 또는 514 에서 부스트된 MDP 및 DSI 클록들의 어느 것에 기초하여 518 에서 프레임을 전달한다.
도 7 은 예시적인 장치 (702) 에서 상이한 수단들/컴포넌트들 간의 데이터 플로우를 예시하는 개념적 데이터 플로우 다이어그램 (700) 이다. 장치 (702) 는 프레임 구성기, 프레임 프로세서, 디스플레이 프로세서, DPU, 무선 통신 디바이스, 또는 다른 유사한 장치일 수도 있다. 장치 (702) 는 프레임 N+1 이 렌더링을 완료하였다는 표시를 GPU (740) 로부터 수신하는 수신 컴포넌트 (704) 를 포함한다. 예를 들어, 506 과 연계하여 설명된 바와 같이, 장치 (702) 는 표시가 수신 컴포넌트 (702) 에 의해 수신될 수도 있기 전에 GPU 렌더링이 완료하는 것을 대기할 수도 있다.
장치 (702) 는 장치 (702) 를 커맨드 모드로부터 비디오 모드로 스위칭하는 스위치 컴포넌트 (706) 를 포함한다. 예를 들어, 602 와 연계하여 설명된 바와 같이, 스위치 컴포넌트 (706) 는 일정한 디스플레이 레이트가 요청될 때, 하이 프레임 레이트가 검출될 때, 하이 프레임 레이트가 론칭될 때 등에서 커맨드 모드로부터 비디오 모드로 스위칭할 수도 있다. 표시가 GPU (740) 로부터 수신될 때 장치 (702) 가 이미 비디오 모드에 있는 구성들에서, 수신 컴포넌트 (704) 는 결정 컴포넌트 (708) 에 직접 VSYNC 주기의 표시를 제공할 수도 있다. 추가적으로 또는 대안적으로, 스위칭 컴포넌트 (706) 가 커맨드 모드로부터 비디오 모드로 스위칭한 후에 VSYNC 주기의 표시가 결정 컴포넌트 (708) 에 제공될 수도 있다.
장치 (702) 에 또한 포함된 결정 컴포넌트 (708) 는 이전 프레임 N 의 전달 상태를 결정하도록 구성된다. 예를 들어, 604 와 연계하여 설명된 바와 같이, 결정 컴포넌트 (708) 는 프레임 N 이 디스플레이 패널 (예를 들어, 디스플레이 패널 (750)) 로 현재 여전히 전달 중인 것으로 결정할 수도 있다. 따라서, 프레임 N+1 을 전달하기 위한 클록 속도는 유지될 수도 있다. 606 과 연계하여 설명된 바와 같이, 결정 컴포넌트 (708) 는 프레임 N 이 디스플레이 버퍼에 전달 중이라는 DPU 라인 카운터로부터의 표시에 기초하여 프레임 N 이 여전히 현재 전달 중인 것으로 결정할 수도 있다. 604 와 연계하여 추가로 설명된 바와 같이, 결정 컴포넌트 (708) 는 프레임 N 이 디스플레이 패널 (예를 들어, 디스플레이 패널 (750)) 로 이미 전달되었다고 결정할 수도 있다. 보다 더 구체적으로, 606 과 연계하여 설명된 바와 같이, 결정 컴포넌트 (708) 는 프레임 N 이 디스플레이 버퍼에 완전하게 전달되었다는 DPU 라인 카운터로부터의 표시에 기초하여 프레임 N 이 이미 전달되었다고 결정할 수도 있다.
장치 (702) 는 프레임 N 이 디스플레이 패널 (750) 에 전달되었을 때 VSYNC 주기를 연장하는 연장 컴포넌트 (710) 를 포함한다. 예를 들어, 610 과 연계하여 설명된 바와 같이, 연장 컴포넌트 (710) 는 프레임 N 이 이미 전달되었을 때 제 1 주기 T 로부터 제 2 주기 T+a 로 VSYNC 주기를 연장할 수도 있다. VSYNC 주기를 연장하는 것은 클록 속도가 프레임 N+1 을 전달하기 위하여 증가되어야 함을 요구할 수도 있다. 612 와 연계하여 설명된 바와 같이, 결정 컴포넌트 (708) 는 프레임 N+1 의 전달 완료 시간을 제 3 주기 T-a 로 감소시키는 것에 기초하여 프레임 N+1 을 전달하기 위한 (증가된) 클록 속도들의 제 2 세트를 결정할 수도 있다.
장치 (702) 는 결정 컴포넌트 (708) 가 프레임 N 이 현재 전달 중인지 또는 이미 전달되었는지의 여부에 의존하여 증가된 클록 속도 또는 유지된 클록 속도의 어느 것을 적어도 하나의 클록으로 사용하는 사용 컴포넌트 (712) 를 포함한다. 예를 들어, 608 과 연계하여 설명된 바와 같이, 사용 컴포넌트 (712) 는 프레임 N 이 현재 전달 중일 때 클록 속도들의 제 1 세트를 적어도 하나의 클록으로 사용하고 그리고 714 와 연계하여 설명된 바와 같이, 사용 컴포넌트 (712) 는 프레임 N 이 이미 전달되었을 때 클록 속도들의 제 2 세트를 적어도 하나의 클록으로 사용하며, 클록 속도들의 제 2 세트는 클록 속도들의 제 1 세트보다 더 빠르다. 장치 (702) 에 포함된 송신/전달 컴포넌트 (714) 는 사용 컴포넌트 (712) 에 의해 사용된 클록 속도들에 기초하여 디스플레이 패널 (750) 로 프레임 N+1 을 송신/전달하도록 구성된다.
장치 (702) 는, 도 6 의 전술된 플로우차트에서의 알고리즘의 블록들의 각각을 수행하는 추가적인 컴포넌트들을 포함할 수도 있다. 이와 같이, 도 6 의 전술된 플로우차트에서 각각의 블록은 컴포넌트에 의해 수행될 수도 있고 장치 (702) 는 이들 컴포넌트들 중 하나 이상을 포함할 수도 있다. 컴포넌트들은 언급된 프로세스들/알고리즘을 수행하도록 특별히 구성된 하나 이상의 하드웨어 컴포넌트이거나, 진술된 프로세스들/알고리즘을 수행하도록 구성된 프로세서 (예를 들어, 프로세서에 의해 실행된 로직 및/또는 코드) 에 의해 구현되거나, 프로세서에 의한 구현을 위해 컴퓨터 판독가능 매체 내에 저장되거나, 또는 이들의 일부 조합일 수도 있다.
따라서, 제 1 프레임의 길이가 가변 리프레시 레이트 피처에 의해 연장되고, 제 1 프레임을 뒤따르는 제 2 프레임은 제 1 프레임의 실행을 보상하고 복수의 프레임들에 걸쳐 안정적인 FPS 프로세싱 레이트를 유지하기 위하여 제 1 프레임이 연장된 길이와 동일한 길이만큼 단축될 수도 있다. 보다 구체적으로, 제 2 프레임의 렌더링의 완료 후에, 프레임 프로세서 (예를 들어, DPU) 는 제 1 프레임이 현재 디스플레이 패널로 전달 중인지 또는 디스플레이 패널에 이미 전달되었는지를 결정할 수도 있고, 제 1 프레임이 디스플레이 패널로 여전히 현재 전달되는 것은 GPU 렌더링이 초기 VSYNC 시구간 내에서 완료되었음을 제 2 프레임이 나타내고, 그리고 제 1 프레임이 디스플레이 패널로 이미 전달되었다는 것은 GPU 렌더링이 초기 VSYNC 시구간을 초과하여 지연되었음을 나타낸다. 제 1 프레임이 현재 전달 중인 것으로 결정될 때, 적어도 하나의 클록이 디스플레이 패널로 제 2 프레임을 전달하기 위한 클록 속도들의 디폴트 세트에서 유지될 수도 있다. 대안적으로, 제 1 프레임이 이미 전달되었다고 결정될 때, 적어도 하나의 클록은 단축된 기간 내에서 제 2 프레임의 전달을 완료하고 이전 프레임의 연장된 기간/지연을 보상하도록 구성되는 클록 속도들의 제 2 세트를 통하여 가속화/설정될 수도 있다.
개시된 프로세스들/플로우차트들에 있어서의 블록들의 특정 순서 또는 계위는 예시적인 접근법들의 예시임이 이해된다. 설계 선호도들에 기초하여, 프로세스들/플로우차트들에 있어서의 블록들의 특정 순서 또는 계위가 재배열될 수도 있음이 이해된다. 추가로, 일부 블록들은 결합되거나 또는 생략될 수도 있다. 첨부 방법 청구항들은, 다양한 블록들의 엘리먼트들을 샘플 순서로 제시하고, 제시된 특정 순서 또는 계위로 한정되도록 의도되지 않는다.
이전의 설명은 당업자가 본원에 기재된 다양한 양태들을 실시하는 것을 가능하게 하기 위해서 제공된다. 이들 양태들에 대한 다양한 수정들은 당업자에게 쉽게 자명할 것이며, 본원에 정의된 일반적인 원리들은 다른 양태들에 적용될 수도 있다. 따라서, 청구항들은 본원에서 설명된 양태들로 한정되도록 의도되지 않지만, 청구항들의 언어와 부합하는 충분한 범위를 부여받아야 하며, 여기서, 단수로의 엘리먼트들에 대한 언급은 구체적으로 그렇게 언급되지 않는한, "하나 및 단지 하나만" 을 의미하도록 의도되지 않고 오히려 "하나 이상" 을 의미하도록 의도된다. 단어 "예시적인" 은 "예, 사례, 또는 예시로서 작용하는 것" 을 의미하도록 본원에서 사용된다. "예시적인" 으로서 본원에서 설명된 임의의 양태는 반드시 다른 양태들에 비해 유리하거나 또는 바람직한 것으로서 해석될 필요는 없다.
달리 구체적으로 언급되지 않는 한, 용어 "일부"는 하나 이상을 지칭하고, 용어 "또는"은 컨텍스트가 달리 지시하지 않는 경우 "및/또는"으로서 인터럽트될 수 있다. "A, B, 또는 C 중 적어도 하나", "A, B, 또는 C 중 하나 이상", "A, B, 및 C 중 적어도 하나", "A, B, 및 C 중 하나 이상", 및 "A, B, C 또는 이들의 임의의 조합" 과 같은 조합들은 A, B, 및/또는 C 의 임의의 조합을 포함하고, A 의 배수들, B 의 배수들, 또는 C 의 배수들을 포함할 수도 있다. 구체적으로, "A, B, 또는 C 중 적어도 하나", "A, B, 또는 C 중 하나 이상", "A, B, 및 C 중 적어도 하나", "A, B, 및 C 중 하나 이상", 및 "A, B, C 또는 이들의 임의의 조합" 과 같은 조합들은 A만, B만, C만, A 및 B, A 및 C, B 및 C, 또는 A 와 B 와 C 일 수도 있으며 여기서, 임의의 그러한 조합들은 A, B, 또는 C 의 하나 이상의 멤버 또는 멤버들을 포함할 수도 있다. 당업자에게 공지되거나 나중에 공지되게 될 본 개시 전반에 걸쳐 설명된 다양한 양태들의 엘리먼트들에 대한 모든 구조적 및 기능적 균등물들은 본원에 참조로 명백히 통합되며 청구항들에 의해 포괄되도록 의도된다. 또한, 본원에서 개시된 어떤 것도 이런 개시가 청구항들에 명시적으로 인용되는지에 상관없이, 대중에 지정되도록 의도된 것이 아니다. "모듈", "메커니즘", "엘리먼트", "디바이스” 등의 단어는 "수단" 이라는 단어의 대체물이 아닐 수도 있다. 이로써, 어떠한 청구항 엘리먼트도, 그 엘리먼트가 어구 "하는 수단" 을 사용하여 명백하게 기재되지 않는다면 수단 플러스 기능으로서 해석되지 않아야 한다.
하나 이상의 예에서, 본원에 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 예를 들어, 용어 "프로세싱 유닛"이 본 개시 전반에 걸쳐 사용되었지만, 이러한 프로세싱 유닛들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 임의의 기능, 프로세싱 유닛, 본원에 설명된 기법, 또는 다른 모듈이 소프트웨어로 구현되는 경우, 기능, 프로세싱 유닛, 본원에 설명된 기법, 또는 다른 모듈은 컴퓨터-판독가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장되거나 전송될 수 있다.
컴퓨터 판독가능 매체들은, 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 또는 컴퓨터 데이터 저장 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드, 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 한정이 아닌 예로서, 그러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM (compact disc-read only memory) 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들을 포함할 수 있다. 본원에 사용된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크(disk)들은 통상적으로 데이터를 자기적으로 재생하지만 디스크(disc)들은 통상적으로 레이저들을 이용하여 데이터를 광학적으로 재생한다. 또한, 상기의 조합들은 컴퓨터 판독 가능 매체들의 범위 내에 포함되어야 한다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들면, 칩 세트) 를 포함하는, 매우 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상기 설명된 바와 같이, 다양한 유닛들은 적합한 소프트웨어 및/또는 펌웨어와 함께 상기 설명된 바와 같은 하나 이상의 프로세서들을 포함하여 임의의 하드웨어 유닛에서 결합되거나 또는 상호운용식 하드웨어 유닛들의 집합에 의해 제공될 수도 있다. 따라서, 본원에 사용된 용어 "프로세서" 는 전술한 구조 중 임의의 것 또는 본원에 설명된 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 또한, 그 기법들은 하나 이상의 회로 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
다양한 예들이 기술되었다. 이들 및 다른 예들은 다음 청구항들의 범위 이내이다.

Claims (20)

  1. 프레임 프로세싱의 방법으로서,
    제 1 프레임이 제 2 프레임의 렌더링의 완료 후에 현재 전달 중인지 또는 이미 전달되었는지를 결정하는 단계로서, 상기 제 2 프레임은 상기 제 1 프레임을 뒤따르는, 상기 결정하는 단계;
    상기 제 1 프레임이 현재 전달 중인 것으로 결정될 때 클록 속도들의 제 1 세트를 그리고 상기 제 1 프레임이 전달되었다고 결정될 때 클록 속도들의 제 2 세트를 적어도 하나의 클록으로 사용하는 단계로서, 상기 클록 속도들의 제 2 세트는 상기 클록 속도들의 제 1 세트보다 더 빠른, 상기 사용하는 단계; 및
    상기 제 1 프레임의 전달의 완료 후에 클록 속도들의 사용된 세트에 기초하여 상기 제 2 프레임을 전달하는 단계를 포함하는, 프레임 프로세싱의 방법.
  2. 제 1 항에 있어서,
    상기 제 1 프레임이 현재 전달 중인지 또는 전달되었는지를 결정하는 단계는, 상기 제 1 프레임이 디스플레이 버퍼 내에 전달 중이거나 또는 상기 디스플레이 버퍼 내에 완전히 전달되었음을 디스플레이 프로세싱 유닛 (display processing unit; DPU) 라인 카운터가 나타내는지의 여부를 결정하는 단계를 포함하는, 프레임 프로세싱의 방법.
  3. 제 1 항에 있어서,
    상기 적어도 하나의 클록은 디스플레이 시리얼 인터페이스 (display serial interface; DSI) 클록 또는 모바일 디스플레이 프로세서 (mobile display processor; MDP) 클록 중 적어도 하나를 포함하는, 프레임 프로세싱의 방법.
  4. 제 1 항에 있어서,
    상기 클록 속도들의 제 1 세트는 제 1 주기 T 내에서 프레임의 전달을 위해 제공하는 디폴트 클록 속도들의 세트인, 프레임 프로세싱의 방법.
  5. 제 1 항에 있어서,
    상기 제 1 프레임이 이미 전달되었을 때 수직 동기화 (vertical synchronization; VSYNC) 주기를 제 1 주기 T 로부터 제 2 주기 T+a 로 연장하는 단계를 더 포함하고, 상기 적어도 하나의 클록은 상기 클록 속도들의 제 2 세트에 사용되는, 프레임 프로세싱의 방법.
  6. 제 5 항에 있어서,
    제 3 주기 T-a 내에서 상기 제 2 프레임의 전달을 제공하기 위하여 상기 제 2 프레임의 전달 완료 시간을 감소시키는 것에 기초하여 상기 클록 속도들의 제 2 세트를 결정하는 단계를 더 포함하는, 프레임 프로세싱의 방법.
  7. 제 1 항에 있어서,
    상기 클록 속도들의 제 2 세트는 상기 제 2 프레임의 가변 리프레시 레이트에 기초하는, 프레임 프로세싱의 방법.
  8. 제 1 항에 있어서,
    일정한 디스플레이 레이트가 요청될 때 커맨드 모드로부터 비디오 모드로 스위칭하는 단계를 더 포함하는, 프레임 프로세싱의 방법.
  9. 프레임 프로세싱을 위한 장치로서,
    메모리; 및
    상기 메모리에 커플링된 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는:
    제 1 프레임이 제 2 프레임의 렌더링의 완료 후에 현재 전달 중인지 또는 이미 전달되었는지를 결정하는 것으로서, 상기 제 2 프레임은 상기 제 1 프레임을 뒤따르는, 상기 전달 중인지 또는 이미 전달되었는지를 결정하고;
    상기 제 1 프레임이 현재 전달 중인 것으로 결정될 때 클록 속도들의 제 1 세트를 그리고 상기 제 1 프레임이 전달되었다고 결정될 때 클록 속도들의 제 2 세트를 적어도 하나의 클록으로 사용하는 것으로서, 상기 클록 속도들의 제 2 세트는 상기 클록 속도들의 제 1 세트보다 더 빠른, 상기 적어도 하나의 클록으로 사용하고; 그리고
    상기 제 1 프레임의 전달의 완료 후에 클록 속도들의 사용된 세트에 기초하여 상기 제 2 프레임을 전달하도록 구성되는, 프레임 프로세싱을 위한 장치.
  10. 제 9 항에 있어서,
    상기 제 1 프레임이 현재 전달 중인지 또는 전달되었는지의 결정을 위하여, 상기 적어도 하나의 프로세서는 또한, 상기 제 1 프레임이 디스플레이 버퍼 내에 전달 중이거나 또는 상기 디스플레이 버퍼 내에 완전히 전달되었음을 디스플레이 프로세싱 유닛 (DPU) 라인 카운터가 나타내는지의 여부를 결정하도록 구성되는, 프레임 프로세싱을 위한 장치.
  11. 제 9 항에 있어서,
    상기 적어도 하나의 클록은 디스플레이 시리얼 인터페이스 (DSI) 클록 또는 모바일 디스플레이 프로세서 (MDP) 클록 중 적어도 하나를 포함하는, 프레임 프로세싱을 위한 장치.
  12. 제 9 항에 있어서,
    상기 클록 속도들의 제 1 세트는 제 1 주기 T 내에서 프레임의 전달을 위해 제공하는 디폴트 클록 속도들의 세트인, 프레임 프로세싱을 위한 장치.
  13. 제 9 항에 있어서,
    상기 적어도 하나의 프로세서는 또한, 상기 제 1 프레임이 이미 전달되었을 때 수직 동기화 (VSYNC) 주기를 제 1 주기 T 로부터 제 2 주기 T+a 로 연장하도록 구성되고, 상기 적어도 하나의 클록은 상기 클록 속도들의 제 2 세트에 사용되는, 프레임 프로세싱을 위한 장치.
  14. 제 13 항에 있어서,
    상기 적어도 하나의 프로세서는 또한, 제 3 주기 T-a 내에서 상기 제 2 프레임의 전달을 제공하기 위하여 상기 제 2 프레임의 전달 완료 시간을 감소시키는 것에 기초하여 상기 클록 속도들의 제 2 세트를 결정하도록 구성되는, 프레임 프로세싱을 위한 장치.
  15. 제 9 항에 있어서,
    상기 클록 속도들의 제 2 세트는 상기 제 2 프레임의 가변 리프레시 레이트에 기초하는, 프레임 프로세싱을 위한 장치.
  16. 제 9 항에 있어서,
    상기 적어도 하나의 프로세서는 또한, 일정한 디스플레이 레이트가 요청될 때 커맨드 모드로부터 비디오 모드로 스위칭하도록 구성되는, 프레임 프로세싱을 위한 장치.
  17. 제 9 항에 있어서,
    상기 장치는 무선 통신 디바이스인, 프레임 프로세싱을 위한 장치.
  18. 컴퓨터 실행가능 코드를 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    제 1 프레임이 제 2 프레임의 렌더링의 완료 후에 현재 전달 중인지 또는 이미 전달되었는지를 결정하게 하는 것으로서, 상기 제 2 프레임은 상기 제 1 프레임을 뒤따르는, 상기 전달 중인지 또는 이미 전달되었는지를 결정하게 하고;
    상기 제 1 프레임이 현재 전달 중인 것으로 결정될 때 클록 속도들의 제 1 세트를 그리고 상기 제 1 프레임이 전달되었다고 결정될 때 클록 속도들의 제 2 세트를 적어도 하나의 클록으로 사용하게 하는 것으로서, 상기 클록 속도들의 제 2 세트는 상기 클록 속도들의 제 1 세트보다 더 빠른, 상기 적어도 하나의 클록으로 사용하게 하고; 그리고
    상기 제 1 프레임의 전달의 완료 후에 클록 속도들의 사용된 세트에 기초하여 상기 제 2 프레임을 전달하게 하는, 컴퓨터 실행가능 코드를 저장한 컴퓨터 판독가능 저장 매체.
  19. 제 18 항에 있어서,
    상기 제 1 프레임이 현재 전달 중인지 또는 전달되었는지의 결정을 위하여, 상기 프로세서는 또한, 상기 제 1 프레임이 디스플레이 버퍼 내에 전달 중이거나 또는 상기 디스플레이 버퍼 내에 완전히 전달되었음을 디스플레이 프로세싱 유닛 (DPU) 라인 카운터가 나타내는지의 여부를 결정하도록 구성되는, 컴퓨터 실행가능 코드를 저장한 컴퓨터 판독가능 저장 매체.
  20. 제 18 항에 있어서,
    상기 클록 속도들의 제 1 세트는 제 1 주기 T 내에서 프레임의 전달을 위해 제공하는 디폴트 클록 속도들의 세트인, 컴퓨터 실행가능 코드를 저장한 컴퓨터 판독가능 저장 매체.
KR1020227028136A 2020-02-21 2020-02-21 지연된 그래픽 프로세싱 유닛 렌더 시간을 보상하기 위한 감소된 디스플레이 프로세싱 유닛 전달 시간 KR20220143667A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/076205 WO2021164004A1 (en) 2020-02-21 2020-02-21 Reduced display processing unit transfer time to compensate for delayed graphics processing unit render time

Publications (1)

Publication Number Publication Date
KR20220143667A true KR20220143667A (ko) 2022-10-25

Family

ID=77391822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227028136A KR20220143667A (ko) 2020-02-21 2020-02-21 지연된 그래픽 프로세싱 유닛 렌더 시간을 보상하기 위한 감소된 디스플레이 프로세싱 유닛 전달 시간

Country Status (5)

Country Link
US (1) US20230073736A1 (ko)
EP (1) EP4107719A4 (ko)
KR (1) KR20220143667A (ko)
CN (1) CN115151969A (ko)
WO (1) WO2021164004A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023136984A1 (en) * 2022-01-12 2023-07-20 Qualcomm Incorporated Dpu driven adaptive sync for command mode panels
US11948535B1 (en) 2022-10-11 2024-04-02 Novatek Microelectronics Corp. Electronic device and operating method thereof
WO2024085642A1 (ko) * 2022-10-19 2024-04-25 삼성전자 주식회사 디스플레이를 포함하는 전자 장치 및 이의 동작 방법
CN116866621B (zh) * 2023-09-05 2023-11-03 湖南马栏山视频先进技术研究院有限公司 一种面向视频实时渲染的云端同步方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7889191B2 (en) * 2006-12-01 2011-02-15 Semiconductor Components Industries, Llc Method and apparatus for providing a synchronized video presentation without video tearing
JP2014052548A (ja) 2012-09-07 2014-03-20 Sharp Corp メモリ制御装置、携帯端末、メモリ制御プログラムおよびコンピュータ読み取り可能な記録媒体
US9275601B2 (en) * 2012-12-12 2016-03-01 Intel Corporation Techniques to control frame display rate
US9332216B2 (en) * 2014-03-12 2016-05-03 Sony Computer Entertainment America, LLC Video frame rate compensation through adjustment of vertical blanking
US9786255B2 (en) * 2014-05-30 2017-10-10 Nvidia Corporation Dynamic frame repetition in a variable refresh rate system
US9817431B2 (en) 2016-02-03 2017-11-14 Qualcomm Incorporated Frame based clock rate adjustment for processing unit
US10319065B2 (en) * 2017-04-13 2019-06-11 Microsoft Technology Licensing, Llc Intra-frame real-time frequency control
US10699364B2 (en) * 2017-07-12 2020-06-30 Citrix Systems, Inc. Graphical rendering using multiple graphics processors
US11062674B2 (en) 2019-06-28 2021-07-13 Intel Corporation Combined panel self-refresh (PSR) and adaptive synchronization systems and methods

Also Published As

Publication number Publication date
US20230073736A1 (en) 2023-03-09
CN115151969A (zh) 2022-10-04
EP4107719A4 (en) 2023-10-11
EP4107719A1 (en) 2022-12-28
WO2021164004A1 (en) 2021-08-26

Similar Documents

Publication Publication Date Title
US8687007B2 (en) Seamless display migration
KR20220143667A (ko) 지연된 그래픽 프로세싱 유닛 렌더 시간을 보상하기 위한 감소된 디스플레이 프로세싱 유닛 전달 시간
US11164357B2 (en) In-flight adaptive foveated rendering
WO2021000220A1 (en) Methods and apparatus for dynamic jank reduction
WO2022073182A1 (en) Methods and apparatus for display panel fps switching
US11935502B2 (en) Software Vsync filtering
US20230074876A1 (en) Delaying dsi clock change based on frame update to provide smoother user interface experience
US20190303322A1 (en) Direct interrupt routing for display processing
WO2021056364A1 (en) Methods and apparatus to facilitate frame per second rate switching via touch event signals
US20220013087A1 (en) Methods and apparatus for display processor enhancement
WO2021096883A1 (en) Methods and apparatus for adaptive display frame scheduling
WO2021000226A1 (en) Methods and apparatus for optimizing frame response
US11978372B1 (en) Synchronized dual eye variable refresh rate update for VR display
WO2023230744A1 (en) Display driver thread run-time scheduling
US11151965B2 (en) Methods and apparatus for refreshing multiple displays
WO2023136984A1 (en) Dpu driven adaptive sync for command mode panels
WO2021168771A1 (en) Optimized method of page zeroing in memory pool
WO2024087152A1 (en) Image processing for partial frame updates
WO2023141917A1 (en) Sequential flexible display shape resolution
WO2023065100A1 (en) Power optimizations for sequential frame animation
WO2023151067A1 (en) Display mask layer generation and runtime adjustment
US20230368325A1 (en) Technique to optimize power and performance of xr workload
WO2021042331A1 (en) Methods and apparatus for graphics and display pipeline management