KR101650999B1 - 그래픽 프로세싱 유닛들에서의 렌더링 모드 선택 - Google Patents

그래픽 프로세싱 유닛들에서의 렌더링 모드 선택 Download PDF

Info

Publication number
KR101650999B1
KR101650999B1 KR1020137033447A KR20137033447A KR101650999B1 KR 101650999 B1 KR101650999 B1 KR 101650999B1 KR 1020137033447 A KR1020137033447 A KR 1020137033447A KR 20137033447 A KR20137033447 A KR 20137033447A KR 101650999 B1 KR101650999 B1 KR 101650999B1
Authority
KR
South Korea
Prior art keywords
rendering
gpu
unit
render
metrics
Prior art date
Application number
KR1020137033447A
Other languages
English (en)
Other versions
KR20140023386A (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 KR20140023386A publication Critical patent/KR20140023386A/ko
Application granted granted Critical
Publication of KR101650999B1 publication Critical patent/KR101650999B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Abstract

본 개시물은 그래픽 프로세싱 유닛 (GPU) 에 의한 사용을 위해 디스플레이용 그래픽 데이터를 렌더링하도록 렌더링 모드를 자동으로 선택하는 기법들을 설명한다. 보다 구체적으로, 이 기법들은 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하는 것, 및 평가된 메트릭들에 기초하여 현재 렌더링 유닛에 대한 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 하나를 자동으로 선택하는 것을 포함한다. 선택된 렌더링 모드는 렌더링 모드들 중 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것으로 예측되는 하나의 렌더링 모드일 수도 있다. 렌더링 유닛은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다.

Description

그래픽 프로세싱 유닛들에서의 렌더링 모드 선택{RENDERING MODE SELECTION IN GRAPHICS PROCESSING UNITS}
본 개시물은 데이터를 프로세싱하는 것에 관한 것이며, 보다 구체적으로는, 그래픽 프로세싱 유닛 (GPU) 을 사용하여 데이터를 프로세싱하는 것에 관한 것이다.
그래픽 프로세싱 유닛 (GPU) 은 컴퓨터화된 그래픽들을 프로세싱하고 디스플레이 디바이스 상에 디스플레이하는 데 활용되는 전용 그래픽 렌더링 디바이스이다. GPU들은 다양한 복잡한 알고리즘들에 대해 일반적인 범용 중앙 프로세싱 유닛(CPU)들보다 더 효율적인 프로세싱을 제공하는 고속 병렬 구조로 구축된다. 예를 들어, 복잡한 알고리즘들은 2-차원 (2D) 또는 3-차원 (3D) 컴퓨터화된 그래픽들의 표현들에 대응할 수도 있다.
GPU들은 모바일 무선 전화들, 개인 휴대 정보 단말기(PDA)들, 비디오 게이밍 디바이스들, 비디오 게이밍 콘솔들, 화상 회의 유닛들, 랩톱 컴퓨터들, 데스크톱 컴퓨터들, 태블릿 컴퓨터들, 텔레비전 셋톱 박스들, 통합형 텔레비전 그래픽 디바이스들, 디지털 리코딩 디바이스들, 디지털 미디어 플레이어들, 글로벌 포지셔닝 시스템 (GPS) 디바이스들, 디지털 카메라들, 자동차 디스플레이들 등과 같은 그래픽 디바이스들 내에 포함될 수도 있다. 그래픽 디바이스들 상에서 실행되는 그래픽 애플리케이션들은 명령들 또는 애플리케이션 프로그래밍 인터페이스 (API) 호(call)들을 인보크함으로써 그래픽 장면의 콘텐츠를 설명하거나 정의할 수도 있으며, 이들은 다음 차례로 디스플레이용 이미지를 렌더링하는 데 GPU 를 사용한다.
GPU들의 렌더링 엔진들은 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 하나에 따라 동작할 수도 있다. 즉각적 렌더링 모드에 따라 동작할 때, GPU 의 렌더링 엔진은 그래픽 데이터를 프레임 버퍼에 직접적으로 렌더링한다. 지연된 렌더링 모드에 따라 동작할 때, GPU 의 렌더링 엔진은 그래픽 데이터를 복수의 타일들로 분할하는 타일링 패스 (tiling pass) 를 수행하고, 복수의 타일들 각각을 로컬 타일 버퍼에 렌더링하고, 렌더링된 타일들 각각을 타일 버퍼로부터 프레임 버퍼로 판독한다. 현재, 즉각적 렌더링 모드는 전력 및 시스템 대역폭이 그리 중요하지 않은 그래픽 디바이스들에서 가장 보편적으로 사용되며, 지연된 렌더링 모드는 전력 및 시스템 대역폭이 중요한 모바일 디바이스들에서 가장 보편적으로 사용된다.
본 개시물은 그래픽 프로세싱 유닛 (GPU) 에 의해 디스플레이용 그래픽 데이터를 렌더링하기 위한 렌더링 모드를 자동으로 선택하는 기법들을 설명한다. 보다 구체적으로, 이 기법들은 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하는 것, 및 평가된 메트릭들에 기초하여 현재 렌더링 유닛에 대한 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 하나를 자동으로 선택하는 것을 포함한다. 렌더링 유닛은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다. 현재 렌더링 유닛은 GPU 에 의해 현재 렌더링되고 있는 렌더링 유닛을 포함할 수도 있다. 렌더링 모드를 자동으로 선택하기 위한 기법들은 그래픽 데이터에서의 각각의 렌더링 경계에서, 즉 GPU 가 이전 렌더링 유닛의 렌더링을 마치고 렌더링을 시작할 때, 수행될 수도 있다.
가장 효율적인 렌더링 모드는, 어떤 그래픽 데이터를 렌더링할 때, GPU 의 성능에 기초하여 변할 수도 있다. 따라서, 선택된 렌더링 모드는 평가된 메트릭들에 기초하여 그래픽 데이터의 현재 렌더링 유닛을 렌더링하는 데 보다 적은 전력 및/또는 보다 적은 시스템 대역폭을 사용할 것으로 예측된 렌더링 모드들 중 하나일 수도 있다. 본 개시물의 기법들은 선택된 렌더링 모드에 따라 동작하도록 GPU 를 구성하는 것을 포함한다. 몇몇 경우들에 있어서, 이 기법들은 또한 자동으로 선택된 렌더링 모드를 오버라이드하는 수동으로 선택된 렌더링 모드를 수신하는 것을 포함할 수도 있다. 수동으로 선택된 렌더링 모드가 수신될 때, GPU 는 수동으로 선택된 렌더링 모드에 따라 동작하도록 구성될 수도 있다.
일 실시예에서, 본 개시물은, 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하는 것, 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 하나로서 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하는 것, 상기 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 그래픽 프로세싱 유닛 (GPU) 을 구성하는 것을 포함하는, 그래픽 데이터를 프로세싱하는 방법에 관한 것이다.
다른 실시예에서, 본 개시물은, 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 저장하는 메모리, 및 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 하나로서 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하고, 선택된 렌더링 모드에 따라 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 그래픽 프로세싱 유닛 (GPU) 을 구성하는 하나 이상의 프로세서들을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스에 관한 것이다.
추가 실시예에서, 본 개시물은, 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하는 수단, 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 하나로서 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하는 수단, 및 선택된 렌더링 모드에 따라 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 그래픽 프로세싱 유닛 (GPU) 을 구성하는 수단을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스에 관한 것이다.
다른 실시예에서, 본 개시물은, 실행 시, 하나 이상의 컴퓨터 프로그래밍가능 프로세서들로 하여금, 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하게 하고, 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 하나로서 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하게 하고, 상기 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하게 하는 그래픽 프로세싱 유닛 (GPU) 을 구성하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체에 관한 것이다.
하나 이상의 실시형태들의 상세들은 첨부된 도면과 하기의 설명으로부터 설명된다. 다른 특징들, 목적들 및 이점들은 하기의 설명 및 도면들, 및 하기의 특허청구범위로부터 명확해질 것이다.
도 1 은 그래픽 프로세싱 유닛 (GPU) 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하도록 구성된 그래픽 드라이버를 포함하는 그래픽 디바이스를 예시한 블록도이다.
도 2 는 GPU 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하도록 그래픽 드라이버에 의해 사용된 그래픽 디바이스의 기능 블록들을 보다 상세히 예시한 블록도이다.
도 3 은 GPU 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하도록 구성된 그래픽 드라이버의 예시적 기능 블록들을 예시한 블록도이다.
도 4 는 GPU 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하는 그래픽 드라이버의 예시적 동작을 예시한 플로우차트이다.
도 5 는 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집하는 그래픽 드라이버의 예시적 동작을 예시한 플로우차트이다.
도 6 은 가중화 방식을 이용하여 메트릭들을 평가하는 그래픽 드라이버의 예시적 동작을 예시한 플로우차트이다.
본 개시물은 그래픽 프로세싱 유닛 (GPU) 에 의한 사용을 위해 디스플레이용 그래픽 데이터를 렌더링하도록 렌더링 모드를 자동으로 선택하는 기법들을 설명한다. 보다 구체적으로, 이 기법들은 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하는 것, 및 평가된 메트릭들에 기초하여 현재 렌더링 유닛에 대한 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 하나를 자동으로 선택하는 것을 포함한다. 선택된 렌더링 모드는 평가된 메트릭들에 기초하여 그래픽 데이터의 현재 렌더링 유닛을 렌더링하는 데 보다 적은 전력 및/또는 보다 적은 시스템 대역폭을 사용할 것으로 예측된 렌더링 모드들 중 하나일 수도 있다. 렌더링 유닛은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다. 현재 렌더링 유닛은 GPU 에 의해 현재 렌더링되고 있는 렌더링 유닛을 포함할 수도 있다. 렌더링 모드를 자동으로 선택하기 위한 기법들은, 그래픽 데이터의 각각의 렌더링 경계에서, 즉 GPU 가 이전 렌더링 유닛의 렌더링을 마치고 렌더링을 시작할 때, 수행될 수도 있다.
도 1 은 그래픽 프로세싱 유닛 (GPU)(6) 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하도록 구성된 그래픽 드라이버 (10) 를 포함하는 그래픽 디바이스 (2) 를 예시한 블록도이다. 본 개시물의 기법들에 따르면, 그래픽 드라이버 (10) 는 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가할 수도 있고, 평가된 메트릭들에 기초하여 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택할 수도 있고, 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다.
그래픽 디바이스 (2) 는 그래픽 데이터를 송신 및 수신할 수 있고, 다양한 그래픽 데이터 프로세싱 애플리케이션들을 지원할 수 있고, 사용자에게로의 프레젠테이션을 위해, 프로세싱된 그래픽 데이터를 출력할 수 있다. 그래픽 디바이스 (2) 의 예들은, 모바일 무선 전화들, 개인 휴대 정보 단말기(PDA)들, 비디오 게이밍 디바이스들, 비디오 게이밍 콘솔들, 화상 회의 유닛들, 랩톱 컴퓨터들, 데스크톱 컴퓨터들, 태블릿 컴퓨터들, 텔레비전 셋톱 박스들, 통합형 텔레비전 그래픽 디바이스들, 디지털 리코딩 디바이스들, 디지털 미디어 플레이어들, 글로벌 포지셔닝 시스템 (GPS) 디바이스, 디지털 카메라들, 자동차 디스플레이들 등을 포함하지만, 이들로 제한되지는 않는다. 그래픽 데이터는 정지 이미지 데이터, 비디오 데이터, 또는 다른 멀티미디어 데이터를 포함할 수도 있다. 본 개시물에서, 그래픽 데이터는 종종 복수의 순차 프레임들을 포함하는 비디오 데이터로서 설명될 수도 있다. 그러나, 본 개시물의 기법들에 따라 렌더링될 수도 있는 그래픽 데이터의 타입들을 제한하는 것은 의도되지 않는다.
도 1 에 예시된 실시예에서, 그래픽 디바이스 (2) 는 그래픽 드라이버 (10) 를 구비한 중앙 프로세싱 유닛 (CPU)(4), 렌더링 엔진 (12) 을 구비한 GPU (6), 디바이스 메모리 (8), 송수신기 모듈 (14), 사용자 입력 디바이스 (16), 및 디스플레이 (18) 를 포함한다. 다른 경우들에 있어서, 예를 들어, 그래픽 디바이스 (2) 가 데스크톱 컴퓨터일 때, 디스플레이 (18) 및/또는 사용자 입력 디바이스 (16) 는 그래픽 디바이스 (2) 의 외부에 있을 수도 있다. CPU (4) 및 GPU (6) 는 디지털 신호 프로세서(DSP)들, 범용 마이크로프로세서, 주문형 집적회로(ASIC)들, 필드 프로그래밍가능 게이트 어레이(FPGA)들, 또는 다른 등가의 통합형 또는 이산형 로직 회로를 포함할 수도 있다. CPU (4) 는 GPU (6) 를 제어할 수도 있다.
그래픽 디바이스 (2) 는 CPU (4) 상의 하나 이상의 그래픽 애플리케이션들을 실행할 수도 있다. 그래픽 애플리케이션들의 실시예들은 웹 브라우저들, e-메일 애플리케이션들, 스프레드시트들, 비디오 게임들, 컴퓨터 지원 설계 (CAD) 애플리케이션들, 디지털 카메라 애플리케이션들, 화상 회의 애플리케이션들, 시뮬레이션 및 시각화 툴들, 비디오 스트리밍 애플리케이션들, 또는 디스플레이 (18) 를 통한 사용자에게로의 프레젠테이션을 위해 시각적 출력을 생성하는 다른 애플리케이션들을 포함한다.
CPU (4) 는 이미지를 생성하는 데 CPU (4) 및/또는 GPU (6) 를 사용하는 그래픽 애플리케이션에 대한 애플리케이션 명령들을 인보크함으로써 그래픽 애플리케이션을 실행한다. 몇몇 경우들에 있어서, 애플리케이션 명령들은 그래픽 애플리케이션 프로그래밍 인터페이스 (API) 호들로부터 생성될 수도 있다. 그래픽 애플리케이션들을 기록하기 위한 그래픽 API들은 오픈 그래픽 라이브러리 (OpenGL®), 임베디드 시스템들에 대한 OpenGL® (OpenGL® ES), 또는 OpenVG (vector graphics) API들을 포함할 수도 있다. 예시된 실시형태에서, 그래픽 드라이버 (10) 는 CPU (4) 상에서 동작한다. 그래픽 드라이버 (10) 는 애플리케이션 명령들 또는 API 호들을 CPU (4) 및/또는 GPU (6) 상에서 수행될 커맨드들로 변환할 수도 있다. 몇몇 경우들에 있어서, GPU (6) 는 하나 이상의 그래픽 애플리케이션들을 개별적으로 실행할 수도 있다. 이 경우에 있어서, GPU (6) 는 또한 자신의 그래픽 드라이버를 실행할 수도 있다. 다른 실시예들에서, 그래픽 드라이버 (10) 는 CPU (4) 또는 GPU (6) 중 어느 하나가 그 프로세싱 유닛에 의한 실행을 위해 그래픽 드라이버 (10) 를 로딩할 수 있도록 디바이스 메모리 (8) 에 저장될 수도 있다.
GPU (6) 는 디스플레이 (18) 를 통한 사용자에게로의 프레젠테이션을 위해 그래픽 데이터를 이미지들로 렌더링하도록 그래픽 애플리케이션에 따라 CPU (4) 상의 그래픽 드라이버 (10) 에 의해 이슈된 커맨드들을 수행할 수도 있다. 예를 들어, GPU (6) 는 버텍스 셰이딩, 삼각 래스터화, 프래그먼트 셰이딩, 및 픽셀 블렌딩 중 하나 이상을 수행할 수도 있다. 그 후, GPU (6) 는 렌더링된 그래픽 데이터를 디바이스 메모리 (8) 내의 프레임 버퍼에 저장할 수도 있다. 그래픽 데이터는 렌더링 유닛 단위로 GPU (6) 에 의해 렌더링될 수도 있다. 전술된 바와 같이, 렌더링 유닛은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다. 몇몇 경우들에 있어서, 프레임은 하나 이상의 렌더 타깃들을 포함할 수도 있다. 렌더 타깃들은, 프레임에 대한 어떤 타입의 그래픽 데이터, 이를테면 텍스처 데이터, 컬러 데이터, 및 깊이 데이터를 각각 보유하는 디바이스 메모리 (8) 에 저장된 프레임 버퍼들을 포함할 수도 있다. GPU (6) 는 프레임과 연관된 렌더 타깃들의 각각 내에서 그래픽 데이터를 렌더링할 수도 있으며, 그 후, 디바이스 메모리 (8) 로의 저장 및 디스플레이 (18) 상의 프레젠테이션을 위해 그 렌더링된 그래픽들을 단일 프레임으로서 결합한다.
예시된 실시예에서, GPU (6) 는 그래픽 데이터를 렌더링하도록 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 어느 하나에 따라 동작할 수도 있는 렌더링 엔진 (12) 을 포함한다. 즉각적 렌더링 모드에 따라 동작할 때, GPU (6) 내의 렌더링 엔진 (12) 은 렌더링 유닛의 그래픽 데이터를 디바이스 메모리 (8) 내의 프레임 버퍼에 직접적으로 렌더링한다. 따라서, 렌더링 엔진 (12) 은 GPU (6) 외부의 디바이스 메모리 (8) 에 렌더링되고 있는 그래픽 데이터에 대한 모든 판독 및 기록 호들을 행한다. 이 모드는, 디바이스 메모리 (8) 에서 많은 판독-수정-기록을 요구하는 어떤 그래픽 동작들, 이를 테면 픽셀 블렌딩 및 깊이 테스팅을 수행할 때, 그래픽 데이터를 렌더링하는 데 다량의 시스템 대역폭 및 전력을 이용할 수도 있다.
지연된 렌더링 모드에 따라 동작할 때, GPU (6) 내의 렌더링 엔진 (12) 은 먼저 타일링 패스를 수행하여 현재 렌더링 유닛을 복수의 타일들로 분할할 수도 있다. 복수의 타일들 각각에 대해, 그 후, 렌더링 엔진 (12) 은 타일의 그래픽 데이터를 GPU (6) 상에 국부적으로 위치된 타일 버퍼에 렌더링하며, 완료 시, 렌더링된 그래픽 데이터를 타일 버퍼로부터 디바이스 메모리 (8) 내의 프레임 버퍼로 판독한다. 따라서, 렌더링 엔진 (12) 은 GPU (6) 상의 타일 버퍼에 렌더링되고 있는 그래픽 데이터에 대한 판독 및 기록 호들 중 대부분을 행한다. 이 모드, 즉 지연된 렌더링 모드는, 타일 버퍼에서 판독-수정-기록을 수행하는 데 소량의 전력을 이용하고 어떠한 시스템 대역폭도 이용하지 않지만, 타일링 패스를 셋업하고 렌더링 유닛의 각각의 타일을 렌더링하는 추가 오버헤드 비용들을 포함한다.
종래에, 랩톱 또는 데스크톱 컴퓨터, 또는 전력 및 대역폭 이용이 중요하지 않은 다른 타입의 월-플러그된 그래픽 디바이스 내의 GPU 는 즉각적 렌더링 모드에 따라 동작하도록 설계되었을 것 같다. 반대로, 모바일 무선 전화 또는 전력 및 대역폭이 중요한 다른 모바일 디바이스들 내의 GPU 는 지연된 렌더링 모드에 따라 동작하도록 설계되었을 것 같다. 그러나, 가장 효율적인 렌더링 모드는, 어떤 그래픽 데이터를 렌더링할 때, GPU 의 성능에 기초하여 변할 수도 있다.
본 개시물의 기법들에 따르면, 그래픽 드라이버 (10) 는 디스플레이 (18) 상에서의 사용자에게로의 프레젠테이션을 위해 그래픽 데이터를 렌더링하도록 GPU (6) 에 의한 사용을 위해 렌더링 모드를 자동으로 선택할 수도 있다. 더 구체적으로, 그래픽 드라이버 (10) 는 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가할 수도 있고, 평가된 메트릭들에 기초하여 현재 렌더링 유닛에 대한 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 어느 하나를 자동으로 선택할 수도 있다. 메트릭들은, 이전 또는 현재 렌더링 유닛의 그래픽 데이터를 렌더링할 때, CPU (4) 및 GPU (6) 의 성능 메트릭들, 전력 메트릭들, 또는 다른 메트릭들을 포함할 수도 있다. 선택된 렌더링 모드는 렌더링 모드들 중 평가된 메트릭들에 기초하여 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 시스템 대역폭 및/또는 보다 적은 전력을 이용할 것으로 예측된 하나일 수도 있다. 몇몇 경우들에 있어서, 선택된 렌더링 모드는 또한 CPU (4) 및/또는 GPU (6) 에서 보다 높은 버텍스 수율을 허용하거나 그래픽 드라이버 (10) 의 오버헤드를 감소시키거나 또는 평가된 메트릭들에 기초하여 성능 및 전력 소비를 다른 방식으로 개선할 것으로 예측되는 렌더링 모드일 수도 있다.
그 후, 그래픽 드라이버 (10) 는 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다. 몇몇 경우들에 있어서, 그래픽 드라이버 (10) 는 또한 자동으로 선택된 렌더링 모드를 오버라이드하는 수동으로 선택된 렌더링 모드를 수신할 수도 있다. 예를 들어, 그래픽 드라이버 (10) 는 수동으로 선택된 렌더링 모드를 CPU (4) 상에서 실행되는 그래픽 API 를 통해 개발자 또는 다른 사용자로부터 수신할 수도 있다. 수동으로 선택된 렌더링 모드가 수신될 때, 그래픽 드라이버 (10) 는 수동으로 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다.
본 개시물의 기법들 - 메트릭들을 수집하고 평가하는 것, 렌더링 모드를 자동으로 선택하는 것, 및 GPU (6) 를 구성하는 것을 포함함 - 은 각각의 렌더링 경계에서 수행될 수도 있다. 렌더링 경계는 렌더링 유닛들 사이의 천이 주기, 예컨대, GPU (6) 가 이전 렌더링 유닛의 렌더링을 마치고 현재 렌더링 유닛의 렌더링을 시작할 때를 포함할 수도 있다. 일단 GPU (6) 가 이전 렌더링 유닛의 렌더링을 완료하면, GPU (6) 는 이전 렌더링 유닛의 데이터를 수신하는 것으로부터 현재 렌더링 유닛의 렌더링될 데이터를 수신하는 것으로 스위칭한다. 이 때, 본 기법들에 따르면, 그래픽 드라이버 (10) 는 평가된 메트릭들에 기초하여 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택할 수도 있다. 현재 렌더링 유닛에 대해 선택된 렌더링 모드가 이전 렌더링 유닛에 사용된 렌더링 유닛과 상이하다면, 그래픽 드라이버 (10) 는 또한 새롭게 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다. CPU (4) 는 송수신기 모듈 (14) 을 통해 하나 이상의 그래픽 애플리케이션들을 다운로드할 수도 있다. 추가로, CPU (4) 는 송수신기 모듈 (14) 을 통해 그래픽 애플리케이션들에 따라 CPU (4) 및/또는 GPU (6) 에 의해 프로세싱될 그래픽 데이터를 다운로드할 수도 있다. 송수신기 모듈 (14) 은 그래픽 디바이스 (2) 와 다른 디바이스 또는 네트워크 사이의 무선 또는 유선 통신을 허용하는 회로부를 포함할 수도 있다. 송수신기 모듈 (14) 은 변조기들, 복조기들, 증폭기들 및 유선 또는 무선 통신을 위한 다른 그러한 회로부를 포함할 수도 있다.
CPU (4) 는 디바이스 메모리 (8) 내에 그래픽 애플리케이션들 각각에 대한 애플리케이션 명령들을 저장할 수도 있다. 추가로, 디바이스 메모리 (8) 는 그래픽 애플리케이션들에 따라 CPU (4) 및/또는 GPU (6) 에 의해 프로세싱될 그래픽 데이터를 저장할 수도 있으며, 또한 CPU (4) 및/또는 GPU (6) 로부터 수신되는 프로세싱된 그래픽 데이터를 저장할 수도 있다. 예를 들어, 디바이스 메모리 (8) 는 프레임 버퍼에 현재 렌더링 유닛의 렌더링된 그래픽 데이터를 저장할 수도 있다. 다른 실시예로서, 디바이스 메모리 (8) 는 프레임에 대한 어떤 타입의 그래픽 데이터, 이를테면 텍스처 데이터, 컬러 데이터, 및 깊이 데이터를 각각 보유하는 프레임과 연관된 하나 이상의 렌더 타깃들을 저장할 수도 있다. 몇몇 경우들에 있어서, 디바이스 메모리 (8) 는 또한 데스크톱 또는 디스플레이 전용의 프레임 버퍼를 포함할 수도 있으며, 이러한 버퍼 내에는 프레임의 렌더링된 그래픽 데이터가 디스플레이 (18) 상에서의 프레젠테이션을 위해 복제될 수도 있다.
디바이스 메모리 (8) 는 하나 이상의 컴퓨터 판독가능 저장 매체들을 포함할 수도 있다. 디바이스 메모리 (8) 의 실시예들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 플래시 메모리, 또는 희망하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 반송 또는 저장하는 데 사용될 수 있고 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이들로 제한되지는 않는다.
디스플레이 (18) 는 그래픽 디바이스 (2) 에 대한 출력 디바이스를 포함한다. 일 실시예로서, 디스플레이 (8) 는 액정 디스플레이 (LCD), 음극선관 (CRT) 디스플레이, 플라즈마 디스플레이, 또는 다른 타입의 디스플레이 디바이스를 포함할 수도 있다. 몇몇 경우들에 있어서, 그래픽 디바이스 (2) 는 스피커들 또는 다른 타입들의 비디오 및 오디오 출력 디바이스들을 포함할 수도 있다. GPU (6) 는 디스플레이 (18) 로의 프레젠테이션을 위해 프로세싱된 그래픽 데이터를 제공할 수도 있다. 예를 들어, GPU (6) 는 프레임의 렌더링된 그래픽 데이터를 프레임 버퍼로부터 디바이스 메모리 (8) 내의 데스크톱 또는 디스플레이 전용 프레임 버퍼로 복제하여 그 프레임을 디스플레이 (18) 를 통해 사용자에게 제시할 수도 있다.
사용자 입력 디바이스 (16) 는 그래픽 디바이스 (2) 에 대한 하나 이상의 사용자 입력 디바이스들을 포함한다. 예를 들어, 사용자 입력 디바이스 (16) 는 트랙볼, 마우스, 키보드, 마이크로폰 및/또는 다른 타입들의 입력 디바이스들을 포함할 수도 있다. 몇몇 실시예들에서, 사용자 입력 디바이스 (16) 는 터치스크린을 포함할 수도 있으며, 디스플레이 (18) 의 부분으로서 포함될 수도 있다. 사용자는 사용자 입력 디바이스 (16) 를 통해 CPU (4) 에 의해 실행될 하나 이상의 그래픽 애플리케이션들을 선택할 수도 있다. 예시된 실시예에서, 디스플레이 (18) 및 사용자 입력 디바이스 (16) 는 그래픽 디바이스 (2) 에 포함된다. 다른 실시예들에서, 디스플레이 (18) 및/또는 사용자 입력 디바이스 (16) 는 그래픽 디바이스 (2) 의 외부에 있을 수도 있다.
도 2 는 GPU (6) 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하도록 그래픽 드라이버 (10) 에 의해 사용된 그래픽 디바이스 (2) 의 기능 블록들을 보다 상세히 예시한 블록도이다. 보다 구체적으로, 도 2 는 그래픽 드라이버 (10) 에 의해 수행되는 렌더링 모드 선택 프로세스 동안 CPU (4), GPU (6) 및 디바이스 메모리 (8) 사이의 상호작용을 예시한다.
도 2 의 예시된 실시예에서, CPU (4) 는 그래픽 애플리케이션 (20), 그래픽 API (22) 및 그래픽 드라이버 (10) 를 실행한다. 그래픽 애플리케이션 (20) 은, 예를 들어 웹 브라우저들, e-메일 애플리케이션들, 스프레드시트들, 비디오 게임들, 컴퓨터 지원 설계 (CAD) 애플리케이션들, 디지털 카메라 애플리케이션들, 화상 회의 애플리케이션들, 시뮬레이션 및 시각화 툴들, 비디오 스트리밍 애플리케이션들, 또는 시각적 출력을 생성하는 다른 애플리케이션들을 포함할 수도 있다.
CPU (4) 는 애플리케이션 명령들을 인보크함으로써 그래픽 애플리케이션 (20) 을 실행할 수도 있으며, 이는 CPU (4) 및/또는 GPU (6) 를 사용하여 이미지를 생성한다. 애플리케이션 명령들은 디바이스 메모리 (8) 에 저장될 수도 있다. 몇몇 경우들에 있어서, 애플리케이션 명령들은 그래픽 API (22) 에 의해 행해진 그래픽 API 호들, 이를테면 이미지와 연관된 프리미티브들 또는 삼각형들을 묘화하는 호들로부터 생성될 수도 있다. 그래픽 API (22) 는 오픈 그래픽 라이브러리 (OpenGL®), 임베디드 시스템들에 대한 OpenGL® (OpenGL® ES), 또는 OpenVG (vector graphics) API 중 하나를 포함할 수도 있다. 그래픽 드라이버 (10) 는 그래픽 애플리케이션 (20) 에 따라 그래픽 API (22) 로부터의 애플리케이션 명령들 또는 API 호들을 CPU (4) 및/또는 GPU (6) 에 의해 수행될 커맨드들로 변환할 수도 있다.
도 2 의 예시된 실시예에서, GPU (6) 는 렌더링 엔진 (12), 타일 버퍼 (30), 및 GPU 성능 카운터들 (32) 을 포함한다. 렌더링 엔진 (12) 은 디스플레이용 그래픽 데이터를 프로세싱하는 데 사용되는 하나 이상의 프로세싱 유닛들을 포함할 수도 있다. 예를 들어, 렌더링 엔진 (12) 은 버텍스 셰이더, 삼각 래스터라이저, 프래그먼트 셰이더, 및/또는 픽셀 블렌더를 포함할 수도 있다. GPU 성능 카운터들 (32) 은 GPU (6) 와 연관된 프로세싱 정보 (렌더링 동안 GPU (6) 에 의해 이용되는 시스템 대역폭의 양을 포함함) 를 기록하는 하드웨어 카운터를 포함할 수도 있다.
GPU (6) 는 디스플레이 상의 프레젠테이션을 위해 그래픽 데이터를 이미지들로 렌더링하도록 그래픽 애플리케이션에 따라 CPU (4) 상의 그래픽 드라이버 (10) 에 의해 이슈된 커맨드들을 수행할 수도 있다. 예를 들어, GPU (6) 의 렌더링 엔진 (12) 은 디바이스 메모리 (8) 로부터 그래픽 데이터를 수신할 수도 있으며, 버텍스 셰이딩, 삼각 래스터화, 프래그먼트 셰이딩, 및 픽셀 블렌딩 중 하나 이상을 수행할 수도 있다. 그 후, GPU (6) 는 렌더링된 그래픽 데이터를 결국 디바이스 메모리 (8) 내의 프레임 버퍼 (28) 에 저장할 수도 있다. 그래픽 데이터는 렌더링 유닛 단위로 렌더링 엔진 (12) 에 의해 렌더링될 수도 있다. 렌더링 유닛은, 예를 들어 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다.
몇몇 경우들에 있어서, 하나 이상의 렌더 타깃들 (26) 은 프레임에 대해 정의될 수도 있다. 렌더 타깃들 (26) 은, 프레임에 대한 어떤 타입의 그래픽 데이터, 이를테면 텍스처 데이터, 컬러 데이터, 및 깊이 데이터를 각각 보유하는 디바이스 메모리 (8) 내의 프레임 버퍼들을 포함한다. 주어진 프레임과 연관된 각각의 렌더 타깃들 (26) 내의 그래픽 데이터는 렌더링 엔진 (12) 에 의해 개별적으로 렌더링될 수도 있고, 그 후, 디바이스 메모리 (8) 내의 프레임 버퍼 (28) 에서 조합될 수도 있다. 몇몇 경우들에 있어서, 렌더 타깃들 (26) 은 프레임에 대해 동일한 타입의 데이터, 예컨대 컬러 데이터를 보유하는 다중 렌더 타깃들을 포함할 수도 있다. 렌더링 엔진 (12) 은 다중 렌더 타깃들 내의 그래픽 데이터를 동시에 렌더링할 수도 있다. 상이한 수의 렌더 타깃들 (26) 이 그래픽 데이터의 프레임 각각에 대해 정의될 수도 있다.
GPU (6) 의 렌더링 엔진 (12) 은 그래픽 데이터를 렌더링하도록 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 어느 하나에 따라 동작할 수도 있다. 즉각적 렌더링 모드에 따라 동작할 때, GPU (6) 내의 렌더링 엔진 (12) 은 디바이스 메모리 (8) 내의 프레임 버퍼 (28) 에 렌더링 유닛의 그래픽 데이터를 직접적으로 렌더링한다. 따라서, 렌더링 엔진 (12) 은 GPU (6) 외부에 위치된 디바이스 메모리 (8) 에 렌더링되고 있는 그래픽 데이터에 대한 모든 판독 및 기록 호들을 행한다.
지연된 렌더링 모드에 따라 동작할 때, GPU (6) 내의 렌더링 엔진 (12) 은 먼저 타일링 패스를 수행하여 렌더링 유닛을 복수의 타일들로 분할한다. 복수의 타일들 각각에 대해, 그 후, 렌더링 엔진 (12) 은 GPU (6) 상에 국부적으로 위치된 타일 버퍼 (30) 에 타일의 그래픽 데이터를 렌더링하며, 완료 시, 렌더링된 그래픽 데이터를 타일 버퍼 (30) 로부터 디바이스 메모리 (8) 내의 프레임 버퍼 (28) 로 판독한다. 따라서, 렌더링 엔진 (12) 은 GPU (6) 상의 타일 버퍼 (30) 에 렌더링되고 있는 그래픽 데이터에 대한 판독 및 기록 호들 중 대부분을 행한다. 하나 이상의 렌더 타깃들 (26) 이 프레임에 대해 정의되는 경우에 있어서, 렌더링 엔진 (12) 은 렌더 타깃들 (26) 각각에 대해 타일링 패스를 수행해야 하며, 그 후, 프레임과 연관된 렌더 타깃들 (26) 각각에 대한 각각의 타일을 렌더링해야 한다.
타일 버퍼 (30) 는 GPU (6) 를 갖는 칩 상에 위치된 소량의 초고대역폭 메모리이다. 그러나, 전체 렌더링 유닛에 대한 그래픽 데이터를 보유하기에는 타일 버퍼 (30) 의 사이즈가 너무 작기 때문에, 렌더링 엔진 (12) 은 전체 렌더링 유닛을 렌더링하도록 다수의 렌더링 패스들을 수행해야 한다. 예를 들어, 렌더링 엔진 (12) 은 프레임의 각각의 타일에 대해 하나의 렌더링 패스를 수행할 수도 있고, 또는 프레임과 연관된 렌더 타깃들 (26) 각각에 대한 각각의 타일에 대해 하나의 렌더링 패스를 수행할 수도 있다. 몇몇 경우들에 있어서, 렌더링 엔진 (12) 은 또한 각각의 타일들 내에서 렌더링 유닛의 어떤 프리미티브들이 가시적인지를 결정하도록 비닝 (binning) 을 수행할 수도 있다. 비닝이 수행되지 않으면, GPU (6) 의 렌더링 유닛 (12) 은 래스터 시저스 (raster scissors) 를 사용하여, 렌더링되고 있는 각각의 타일에 대해 렌더링 유닛에 포함된 모든 프리미티브들 또는 삼각형들을 묘화할 수도 있다. 비닝을 수행함으로써, 렌더링 엔진 (12) 은 렌더링되고 있는 주어진 타일 내에서 가시적인 렌더링 유닛 내의 그들 프리미티브들을 묘화할 수도 있다.
지연된 렌더링 모드는 그래픽 데이터가 복잡한 그래픽 장면을, 많은 판독-수정-기록 기능들을 요구하는 깊이 테스팅 및 픽셀 블렌딩으로 표현할 때 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 시스템 대역폭을 이용할 수도 있다. 그러나, 지연된 렌더링 모드는 타일링 패스를 셋업하고 렌더링 유닛의 각각의 타일에 대한 그래픽 데이터를 렌더링하는 추가 오버헤드 비용들을 포함한다. 지연된 렌더링 모드는, 타일링 패스를 셋업하고 각각의 렌더링 유닛에 대한 복수의 타일들을 렌더링하는 오버헤드 비용이, 지연된 렌더링 모드의 대역폭 감소를 오버라이드하지 않을 때 가장 효율적인 렌더링 모드일 수도 있다.
반대로, 즉각적 렌더링 모드는, 지연된 렌더링 모드가 어떠한 대역폭 감소도 제공하지 않지만 프로세싱 리소스들 상에서의 드레인으로서 행동하는 단순한 그래픽 장면을 그래픽 데이터가 표현할 때, 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 시스템 대역폭을 이용할 수도 있다. 즉각적 렌더링 모드는, 타일링 패스를 셋업하고 각각의 렌더링 유닛에 대한 복수의 타일들을 렌더링하는 오버헤드 비용이, 지연된 렌더링 모드의 임의의 대역폭 감소를 오버라이드할 때 가장 효율적인 모드일 수도 있다.
본 개시물의 기법들에 따르면, 그래픽 드라이버 (10) 는 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 최소량의 시스템 대역폭 및/또는 전력을 이용할 것으로 예측되는 것에 기초하여 GPU (6) 에 의한 사용을 위해 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 어느 하나를 자동으로 선택할 수도 있다. 일반적으로, 그래픽 드라이버 (10) 는 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가할 수도 있고, 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 어느 하나를 선택할 수도 있고, 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다. 자동 렌더링 모드 선택 프로세스는 이하에서 더욱 상세히 설명된다.
그래픽 드라이버 (10) 는, GPU (6) 가 이전 렌더링 유닛으로부터 현재 렌더링 유닛으로 스위칭하고 있을 때, 그래픽 데이터의 렌더링 경계에 있는 현재 렌더링 유닛에 대한 렌더링 모드를 선택할 수도 있다. 전술된 바와 같이, 렌더링 유닛은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다. 렌더링 경계는 렌더링 유닛들 사이의 천이 주기, 예컨대, GPU (6) 가 이전 렌더링 유닛의 렌더링을 마치고 현재 렌더링 유닛의 렌더링을 시작할 때를 포함할 수도 있다. 일단 GPU (6) 가 이전 렌더링 유닛의 렌더링을 완료하면, GPU (6) 는 이전 렌더링 유닛의 데이터를 수신하는 것으로부터 현재 렌더링 유닛의 렌더링될 데이터를 수신하는 것으로 스위칭한다. 이 때, 그래픽 드라이버 (10) 는 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택할 수도 있다.
이 방식으로, 그래픽 데이터가 변화함에 따라, 그리고 그래픽 데이터를 렌더링할 때 CPU (4) 및/또는 GPU (6) 의 성능이 변화함에 따라, 그래픽 드라이버 (10) 는 현재 상황에 대해 GPU (6) 에 의해 이용된 렌더링 모드를 스위칭할 수도 있다. 예를 들어, 현재 렌더링 유닛에 대해 선택된 렌더링 모드가 이전 렌더링 유닛에 대해 사용된 렌더링 유닛과 상이하다면, 그래픽 드라이버 (10) 는 새롭게 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다. 이 기법들에 따르면, 그래픽 드라이버 (10) 는 프레임과 연관된 단일 또는 다중 렌더 타깃들 (26) 각각에 대해, 그래픽 데이터의 각각의 프레임에 대해, 또는 그래픽 데이터의 프레임들의 각각의 사전 정의된 세트에 대해, 렌더링 모드를 스위칭할 수도 있다.
주어진 렌더링 경계에서, 그래픽 드라이버 (10) 는 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집할 수도 있다. 이 메트릭들은, 이전 렌더링 유닛 및 현재 렌더링 유닛의 그래픽 데이터를 렌더링할 때, CPU (4) 및/또는 GPU (6) 의 성능과 연관될 수도 있다. 그래픽 데이터의 프로세싱 동안, GPU (6) 는 CPU (4) 뒤의 여러 프레임들일 수도 있다. 따라서, 그래픽 드라이버 (10) 는 GPU (6) 로부터의 이전 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집할 수도 있으며, CPU (4) 로부터 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집할 수도 있다.
메트릭들은, 렌더링 유닛의 버텍스들의 수, 렌더링 유닛의 프래그먼트들의 수, 렌더링 유닛의 프래그먼트들의 위치들, 렌더링 동안에 이용된 GPU 대역폭의 양, 렌더링 동안 GPU (6) 의 레지스터들 상의 부하량, 렌더링 동안 CPU (4) 의 레지스터들 상의 부하량, 프레임에 대해 정의된 렌더 타깃들 (26) 의 수, 프레임에 대해 정의된 다중 렌더 타깃 (multiple render target: MRT) 들의 수, 렌더 타깃들 (26) 의 치수들 (예컨대, 높이, 폭, 픽셀당 비트들), 렌더링 유닛에 대해 깊이 테스팅이 가능한지의 여부, 렌더링 유닛에 대해 블렌딩이 가능한지의 여부, 유닛에 대해 스텐실 테스팅이 가능한지의 여부, GPU (6) 상에서 실행된 애플리케이션의 타입, 렌더링 유닛에 대해 프리미티브들을 묘화하는 그래픽 API 호들의 수, 및 GPU 성능 카운터들 (32) 로부터의 부가 정보를 포함할 수도 있다. 추가로, 메트릭들은 또한 렌더링 유닛에 대해 장면 오버드로 (scene overdraw) 가 발생하는지의 여부, 렌더링 동안 렌더 타깃들 (26) 에서 중간-렌더 업데이트들이 발생하는지의 여부, 변환 피드백이 이용되는지의 여부, 렌더링 유닛의 프래그먼트들이 프레임 버퍼 (28) 로부터 판독되는지의 여부, 렌더링 유닛에 대한 상태 업데이트들의 수, 및 중간-프레임 해상도를 나타낼 수도 있는 다른 메트릭들을 포함할 수도 있다.
일반적으로, 그래픽 드라이버 (10) 가, 심지어 프레임 단위 또는 렌더 타깃 단위로, 메트릭들을 수집하는 것은 비교적 저렴하다. 그러나 GPU 성능 카운터들 (32) 로부터의 정보는, 몇몇 하드웨어 상에서, GPU (6) 의 성능 스톨 (stall) 이 GPU 성능 카운터들 (32) 을 판독하는 데 요구될 수도 있기 때문에, 보다 덜 빈번하게 수집될 수도 있다. 그 후, 그래픽 드라이버 (10) 는 수집된 메트릭들을 메트릭 버퍼 (24) 에 저장할 수도 있다. 메트릭들을 수집하는 프로세스는 도 3 및 도 5 와 관련하여 더 상세히 설명된다.
다음, 그래픽 드라이버 (10) 는 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 어느 것이 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것인지를 예측하도록 메트릭들을 평가한다. 그래픽 드라이버 (10) 는 메트릭들 중 적어도 2 개를 평가한다. 1 개를 초과하는 개수의 메트릭을 평가함으로써, 그래픽 드라이버 (10) 는 효율적인 렌더링 모드 선택을 행하도록 하기 위해 현재 렌더링 유닛을 렌더링하는 것과 연관된 성능 및 전력 제약들의 철저한 이해를 얻을 수도 있다.
예를 들어, 그래픽 드라이버 (10) 는 적어도 프레임에 대해 정의된 렌더 타깃들의 수 및 GPU 대역폭의 메트릭들을 평가할 수도 있다. 그래픽 드라이버 (10) 가 오로지 GPU 대역폭만을 평가했다면, 지연된 렌더링 모드에서 렌더링 유닛의 각각의 타일을 렌더링하고 타일링 패스를 셋업하는 데 요구되는 프로세싱 리소스들을 고려하지 못할 것이다. GPU 대역폭 및 렌더 타깃들의 수 양측 모두를 평가함으로써, 그래픽 드라이버 (10) 는 GPU (6) 에 의한 사용을 위해 가장 효율적인 렌더링 모드를 예측하기 위해 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 그 대역폭 비용들을 오버헤드 비용들과 비교할 수도 있다.
그래픽 드라이버 (10) 는 적어도 2 개의 메트릭들에 가중화 방식을 적용할 수도 있다. 예를 들어, 그래픽 드라이버 (10) 는 메트릭들 중 2 개 이상에 어떤 양들의 가중치를 할당하는 알고리즘을 실행할 수도 있다. 가중화 방식은 메트릭들 중 2 개 이상에 동등한 양의 가중치를 적용할 수도 있고, 또는 메트릭들의 각각에 상이한 양의 가중치를 적용할 수도 있다. 몇몇 경우들에 있어서, 가중화 방식 알고리즘은 그래픽 드라이버 (10) 내에 사전 프로그래밍될 수도 있다. 다른 경우들에 있어서, 가중화 방식 알고리즘은 그래픽 API (22) 를 통해 개발자에 의해 설정될 수도 있다. 이 방식으로, 가중화 방식 알고리즘은 렌더링될 그래픽 데이터의 타입, CPU (4) 및 GPU (6) 의 시스템 요건들 및 성능, 또는 다른 고려사항들에 기초하여 시간에 따라 변화될 수도 있다. 2 개 이상의 메트릭들을 평가하는 프로세스는 도 3 및 도 6 과 관련하여 더 상세히 설명된다.
그 후, 그래픽 드라이버 (10) 는 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 또는 지연된 렌더링 모드를 자동으로 선택한다. 더 구체적으로, 그래픽 드라이버 (10) 는 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것으로 예상되는 렌더링 모드를 선택할 수도 있다. 몇몇 경우들에 있어서, 그래픽 드라이버 (10)는 또한 CPU (4) 및/또는 GPU (6) 에서 보다 높은 버텍스 수율을 허용하거나 그래픽 드라이버 (10) 의 오버헤드를 감소시키거나 또는 평가된 메트릭들에 기초하여 성능 및 전력 소비를 다른 방식으로 개선할 것으로 예측되는 렌더링 모드를 선택할 수도 있다.
몇몇 경우들에 있어서, 그래픽 드라이버 (10) 는 또한 수동으로 선택된 렌더링 모드를 개발자 또는 다른 사용자로부터 수신할 수도 있다. 예를 들어, 그래픽 드라이버 (10) 는 수동으로 선택된 렌더링 모드를 CPU (4) 상에서 실행되는 그래픽 API (22) 를 통해 수신할 수도 있다. 몇몇 경우들에 있어서, 수동 선택은 그래픽 드라이버 (10) 에 대한 렌더링 모드들 중 바람직한 하나에 관한 표시 또는 힌트를 포함할 수도 있다. 그래픽 드라이버 (10) 에 의해 수신된 수동으로 선택된 렌더링 모드는 자동으로 선택된 렌더링 모드를 오버라이드할 수도 있다. 이 방식으로, 개발자는 어떤 렌더링 모드가 렌더링 동안 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것으로 예측되는지와는 무관하게 GPU (6) 에 의해 이용된 렌더링 모드를 제어할 수도 있다.
렌더링 모드가 평가된 메트릭들에 기초하여 자동으로 선택되는지 또는 사용자에 의해 수동으로 선택되는지와는 무관하게, 그래픽 드라이버 (10) 는, 현재 렌더링 유닛의 그래픽 데이터를 렌더링하기 위해, 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성한다. GPU (6) 를 구성하는 것은, 즉각적 렌더링 모드의 경우에 렌더링 엔진 (12) 으로부터의 렌더링된 그래픽 데이터 출력을 직접적으로 프레임 버퍼 (28) 에 또는 지연된 렌더링 모드의 경우에 타일 버퍼 (30) 에 전송하도록 GPU (6) 의 레지스터들을 프로그래밍하는 것을 포함할 수도 있다. 예를 들어, 즉각적 렌더링 모드가 선택될 때, 그래픽 드라이버 (10) 는 디바이스 메모리 (8) 내의 프레임 버퍼 (28) 에 직접적으로 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 GPU (6) 의 렌더링 엔진 (12) 을 구성할 수도 있다. 반대로, 지연된 렌더링 모드가 선택될 때, 그래픽 드라이버 (10) 는 타일링 패스를 수행하여, 현재 렌더링 유닛을 복수의 타일들로 분할하고, 복수의 타일들 각각의 그래픽 데이터를 타일 버퍼 (30) 에 렌더링하고, 렌더링된 타일들에 대한 각각을 타일 버퍼로부터 프레임 버퍼 (28) 로 판독하도록 GPU (6) 의 렌더링 엔진 (12) 을 구성할 수도 있다.
그 후, 그래픽 드라이버 (10) 는 선택된 렌더링 모드에 따라 렌더링될 GPU (6) 의 렌더링 엔진 (12) 에 현재 렌더링 유닛의 그래픽 데이터를 제공할 수도 있다. GPU (6) 가 그래픽 데이터의 렌더링 경계에 도달할 때, GPU (6) 는 다음 렌더링 유닛으로 스위칭할 것이다. 전술된 바와 같이, 렌더링 경계는 렌더링 유닛들, 이를테면 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부 사이의 천이 주기를 포함할 수도 있다. GPU (6) 가 다음 렌더링 유닛으로 스위칭할 때, 그래픽 드라이버 (10) 는 전술된 프로세스를 다시 수행하여 지금의 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택한다. 이런 이유로, 상이한 렌더링 모드들은 연이은 렌더링 유닛들에 이용될 수도 있다. 도 3 은 GPU (6) 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하도록 구성된 그래픽 드라이버 (10) 의 예시적 기능 블록들을 예시한 블록도이다. 전술된 바와 같이, 그래픽 드라이버 (10) 는 그래픽 애플리케이션에 대한 API 호들 또는 애플리케이션 명령들을 CPU (4) 및/또는 GPU (6) 에 의해 수행될 커맨드들로 변환할 수도 있다. 예를 들어, GPU (6) 는 그래픽 애플리케이션으로부터의 커맨드들에 응답하여 디스플레이용 이미지들을 마련하도록 그래픽 데이터를 렌더링할 수도 있다. 렌더링 프로세스들 동안 전력 및 시스템 대역폭을 보존하기 위해, 그래픽 드라이버 (10) 는 평가된 메트릭들에 기초하여 GPU (6) 에 의한 사용을 위해 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 어느 하나를 자동으로 선택할 수도 있다. 그래픽 드라이버 (10) 는 먼저 메트릭들을 수집하여 메트릭 버퍼 (24) 에 저장할 수도 있고, 그 후, 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것으로 예측되는 렌더링 모드를 선택하기 위해 메트릭들을 평가할 수도 있다.
도 3 의 예시된 실시예에서, CPU (4) 에 의해 실행될 때, 그래픽 드라이버 (10) 는 메트릭 수집 유닛 (40), 메트릭 평가 유닛 (42), 및 렌더링 모드 선택 유닛 (44) 을 포함한다. 전술된 바와 같이, 메트릭 버퍼 (24) 는 CPU (4) 내에 로컬 메모리 버퍼 메모리를 포함할 수도 있다. 다른 실시예들에서, 메트릭 버퍼 (24) 는 CPU (4) 외부에 위치된 디바이스 메모리 (8) 내의 메모리 버퍼를 포함할 수도 있다.
예시된 실시예에서, 메트릭 버퍼 (24) 는 GPU 대역폭 (46), 렌더 타깃들의 수 (48), 렌더 타깃들의 치수들 (49), GPU 부하 (50), CPU 부하 (52), 버텍스들/프래그먼트들의 수 (54), 프래그먼트들의 위치들 (54), 깊이 테스트/블렌딩 인에이블먼트 (56), 애플리케이션의 타입 (57), 및 API 호들의 수 (58) 를 포함한다. 몇몇 경우들에 있어서, 메트릭 버퍼 (24) 는 그래픽 데이터를 렌더링하는 것과 연관되는 보다 많거나 또는 보다 적은 메트릭들을 포함할 수도 있다. 예를 들어, 메트릭 버퍼 (24) 는 도 2 에서 GPU (6) 의 GPU 성능 카운터들 (32) 로부터 수집된 부가 정보를 포함할 수도 있다. 추가로, 메트릭 버퍼 (24) 는 또한 렌더링 유닛에 대해 장면 과장이 발생하는지의 여부, 렌더링 동안 렌더 타깃들 (26) 에서 중간-렌더 업데이트들이 발생하는지의 여부, 변환 피드백이 이용되는지의 여부, 렌더링 유닛의 프래그먼트들이 프레임 버퍼 (28) 로부터 판독되는지의 여부, 렌더링 유닛에 대한 상태 업데이트들의 수, 및 중간-프레임 해상도를 나타낼 수도 있는 다른 메트릭들에 관한 메트릭들을 포함할 수도 있다. 메트릭 버퍼 (24) 는 적어도 2 개의 메트릭들, 이를테면 GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 를 포함해야 한다.
그래픽 드라이버 (10) 는 메트릭들을 수집하고 평가하여, 그래픽 데이터 내의 각각의 렌더링 경계에서 GPU (6) 에 의한 사용을 위해 렌더링 모드를 자동으로 선택할 수도 있다. 전술된 바와 같이, 렌더링 경계는 렌더링 유닛들 사이의 천이 주기, 예컨대 GPU (6) 가 이전 렌더링 유닛의 렌더링을 마치고 현재 렌더링 유닛의 렌더링을 시작할 때를 포함할 수도 있다. 렌더링 유닛은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다. 주어진 렌더링 경계에서, CPU (4) 상에서 동작하는 그래픽 드라이버 (10) 는 메트릭 수집 유닛 (40) 을 실행하여, 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집한다. 예를 들어, 메트릭 수집 유닛 (40) 은 이전 렌더링 유닛 및/또는 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집할 수도 있다. 그래픽 데이터의 프로세싱 동안, GPU (6) 는 CPU (4) 뒤의 여러 프레임들일 수도 있다. 따라서, 메트릭 수집 유닛 (40) 은 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 CPU (4) 로부터 메트릭들을 수집할 수도 있다. 동시에, 메트릭 수집 유닛 (40) 은 또한 GPU (6) 로부터 이전 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집할 수도 있다.
일 실시예로서, 메트릭 수집 유닛 (40) 은 GPU (6) 의 GPU 성능 카운터들로부터 이전 렌더링 유닛의 그래픽 데이터를 렌더링하는 동안에 이용된 GPU 대역폭 (46) 의 양을 수집할 수도 있다. 몇몇 경우들에 있어서, GPU 성능 카운터 (32) 로부터 정보를 수집하는 것은 GPU (6) 의 성능 스톨을 요구할 수도 있다. GPU (6) 의 성능을 빈번하게 스톨링하는 것은 그래픽 데이터를 렌더링하는 성능 비용 면에서 바람직하지 못한 증가를 야기할 수도 있다. 따라서, 메트릭 수집 유닛 (40) 은, 특히 각각의 프레임 사이에 또는 프레임과 연관된 각각의 렌더 타깃 사이에 렌더링 경계들이 발생하는 경우, 모든 렌더링 경계에서 GPU 성능 카운터들 (32) 로부터 정보를 수집하지 않을 수도 있다. 다른 경우들에 있어서, GPU 대역폭의 양은 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 수집된 이전 또는 현재 렌더링 유닛에 대한 버텍스들/프래그먼트들의 수 (54) 에 기초하여 결정될 수도 있다. 그래픽 데이터를 렌더링하기 위해 GPU (6) 에 의해 이용되는 다량의 시스템 대역폭은 GPU (6) 가 중간 렌더링 모드에서 디바이스 메모리 (8) 에 대해 다수의 판독 및/또는 기록 요청들을 행하고 있음을 나타낼 수도 있다.
메트릭 수집 유닛 (40) 은 또한 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 프레임에 대해 정의된 렌더 타깃들의 수 (48) 를 수집할 수도 있다. 전술된 바와 같이, 렌더 타깃들 (26) 은, 연관된 프레임에 대한 어떤 타입의 그래픽 데이터, 이를테면 텍스처 데이터, 컬러 데이터, 및 깊이 데이터를 각각 보유하는, 디바이스 메모리 (8) 내에 저장된 프레임 버퍼들을 포함한다. 프레임을 렌더링하기 위해, GPU (6) 는 프레임과 개별적으로 연관된 렌더 타깃들 (26) 각각 내에서 그래픽 데이터를 렌더링하며, 그 후, 렌더링된 그래픽 데이터를 프레임 버퍼 (28) 에서 조합한다. 주어진 프레임에 대해 정의된 렌더 타깃들의 수가 많을수록, 디스플레이를 위해 프레임을 충분히 렌더링하는 데에는 렌더링 패스들의 수가 더 많이 요구된다. 몇몇 경우들에 있어서, 렌더 타깃들의 수 (48) 는 렌더 타깃들 (26) 에 포함된 다중 렌더 타깃들의 수를 포함할 수도 있다. 전술된 바와 같이, 다중 렌더 타깃들은 프레임 데이터에 대해 동일한 타입의 데이터, 예컨대 컬러 데이터를 보유하는 프레임 버퍼들을 포함하며, 동시에 렌더링될 수도 있다.
추가로, 메트릭 수집 유닛 (40) 은 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 프레임에 대해 정의된 렌더 타깃들의 치수들 (49) 을 수집할 수도 있다. 치수들은 주어진 프레임에 대해 디바이스 메모리 (8) 에 저장된 렌더 타깃들 (26) 각각에 대한 높이 및 폭을 포함할 수도 있다. 치수들은 또한 렌더 타깃들 (26) 각각에 대한 깊이 또는 픽셀 값 당 비트들을 포함할 수도 있다. 주어진 프레임에 대해 정의된 대형 렌더 타깃들은 많은 판독-수정-기록 동작들을 요구할 수도 있는 렌더링을 위해 복잡한 그래픽 장면을 프레임이 포함함을 나타낼 수도 있다.
다른 실시예로서, 메트릭 수집 유닛 (40) 은 이전 렌더링 유닛의 그래픽 데이터의 렌더링 동안 GPU (6) 의 레지스터들 상의 GPU 부하 (50) 의 양을 수집할 수도 있다. 메트릭 수집 유닛 (40) 은 또한 이전 또는 현재 렌더링 유닛의 그래픽 데이터의 렌더링 동안 CPU (4) 의 레지스터들 상의 CPU 부하 (52) 의 양을 수집할 수도 있다. GPU (6) 및 CPU (4) 의 부하량들은 임의의 성능 보틀넥들이 그래픽 데이터의 렌더링 동안 발생하고 있을 수도 있음을 나타낼 수도 있다.
메트릭 수집 유닛 (40) 은 또한 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 이전 또는 현재 렌더링 유닛에 대한 버텍스들/프래그먼트들의 수 (54) 를 수집할 수도 있다. 전술된 바와 같이, 주어진 프레임에 포함된 버텍스들 및/또는 프래그먼트들의 수는 프레임의 그래픽 데이터를 렌더링하는 데 요구될 GPU 대역폭의 양을 결정하는 데 이용될 수도 있다. 추가로, 메트릭 수집 유닛 (40) 은 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 이전 또는 현재 렌더링 유닛 내의 프래그먼트들의 위치들 (55) 을 수집할 수도 있다. 프래그먼트들의 위치들 (55) 은 다수의 프래그먼트들이 단순한 그래픽 장면 내의 렌더링 유닛에 걸쳐서 확산되는지, 또는 복잡한 그래픽 장면으로서 렌더링 유닛의 일 영역에 클러스터링되는지를 나타낼 수도 있다.
추가 실시예에서, 메트릭 수집 유닛 (40) 은 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 이전 또는 현재 렌더링 유닛이 깊이 테스트/블렌딩 인에이블되는지 (56) 를 수집한다. 주어진 렌더링 유닛에 대해 인에이블되고 수행될 때, 깊이 테스팅 및 픽셀 블렌딩의 그래픽 동작들은 많은 판독-수정-기록 동작들을 요구한다. 몇몇 경우들에 있어서, 인에이블된 깊이 테스트/블렌딩 (56) 은 또한 스텐실 테스팅이 인에이블되는지를 나타낼 수도 있다.
메트릭 수집 (40) 은 또한 이전 또는 현재 렌더링 유닛에 대해 CPU (4) 및/또는 GPU (6) 상에서 실행된 애플리케이션의 타입 (57) 을 수집한다. CPU (4) 및/또는 GPU (6) 상에서 실행된 애플리케이션, 즉 그래픽 애플리케이션 (20) 의 타입 (57) 은 렌더링을 위해 생성된 그래픽 장면들에 대한 일반적인 복잡도 레벨을 나타낼 수도 있다. 추가로, 메트릭 수집 유닛 (40) 은 CPU (4) 상에서 실행된 그래픽 API (22) 로부터 이전 또는 현재 렌더링 유닛에 대해, API 호들, 예컨대 그래픽 데이터로 프리미티브들 또는 삼각형들을 묘화하는 호들의 수 (58) 를 수집할 수도 있다. 주어진 렌더링 유닛이 다수의 API 호들을 포함할 때, 지연된 렌더링 모드에서 다수의 프리미티브들이 다수의 타일들에 대해 재묘화될 가능성이 더 클 수도 있다.
일단 메트릭들이 수집되어 메트릭 버퍼 (24) 에 저장되면, 그래픽 드라이버 (10) 는 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 렌더링 모드를 예측하기 위해 메트릭들 중 적어도 2 개를 평가하도록 메트릭 평가 유닛 (42) 을 실행한다. 메트릭 평가 유닛 (42) 은 메트릭 버퍼 (24) 에 저장된 수집된 메트릭들에 가중화 방식을 적용할 수도 있다. 예를 들어, 메트릭 평가 유닛 (42) 은 메트릭들 중 2 개 이상에 어떤 양들의 가중치를 할당하는 알고리즘을 실행할 수도 있다. 가중화 방식은 메트릭들 중 2 개 이상에 동등한 양의 가중치를 적용할 수도 있고, 또는 메트릭들의 각각에 상이한 양의 가중치를 적용할 수도 있다. 몇몇 경우들에 있어서, 가중화 방식 알고리즘은 그래픽 드라이버 (10) 내에 사전 프로그래밍될 수도 있다. 다른 경우들에 있어서, 가중화 방식 알고리즘은 그래픽 API (22) 를 통해 개발자에 의해 설정될 수도 있다. 이 방식으로, 가중화 방식 알고리즘은 렌더링될 그래픽 데이터의 타입, CPU (4) 및 GPU (6) 의 시스템 요건들 및 성능, 또는 다른 고려사항들에 기초하여 시간에 따라 변화될 수도 있다.
일 특정 실시예로서, 메트릭 평가 유닛 (42) 은 GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 의 메트릭들에 최대 가중치를 적용할 수도 있다. 몇몇 경우들에 있어서, 메트릭 평가 유닛 (42) 은 GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 에 동일한 양의 가중치를 적용할 수도 있다. 다른 경우들에 있어서, 메트릭 평가 유닛 (42) 은 GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 중 하나에 약간 더 큰 가중치를 적용할 수도 있다.
렌더링 동안에 GPU 대역폭 (46) 이 높은 경우는, GPU (6) 의 렌더링 엔진 (12) 이 GPU (6) 외부에 있는 디바이스 메모리 (8) 에 대해 다수의 판독 및/또는 기록 요청들을 수행하고 있음을 나타낼 수도 있다. 이것은, 즉각적 렌더링 모드에서 렌더링 엔진 (12) 이 디바이스 메모리 (8) 를 사용하여 다수의 판독-수정-기록 동작들을 요구하는 컬러 블렌딩 또는 깊이 테스팅 동작들을 수행하고 있을 때 발생할 수도 있다. 따라서, GPU 대역폭 (46) 의 양이 높을 때, 지연된 렌더링 모드로 스위칭하여 시스템 대역폭 이용을 감소시키는 것이 보다 효율적일 수도 있다. 지연된 렌더링 모드에서, GPU (6) 는 전력을 거의 사용하지 않고 시스템 대역폭을 전혀 사용하지 않으면서, GPU (6) 에 국부적으로 위치된 타일 퍼버 (30) 에 대해 판독 및/또는 기록 요청들을 수행할 수도 있다. 이 방식으로, 지연된 렌더링 모드는 현재 렌더링 유닛에 대한 그래픽 데이터의 렌더링 동안 GPU (6) 에 의해 이용된 시스템 대역폭의 양을 감소시킬 가능성이 있을 것이다.
그러나, 메트릭 평가는 오로지 일 메트릭에만 의존해서는 안 된다. 예를 들어, 단지 GPU 대역폭 (46) 에만 의존하는 것은, 타일링 패스를 셋업하여, 렌더링 유닛을 타일들로 분할하고 나서 각각의 타일을 개별적으로 렌더링하는 데 요구되는 프로세싱 리소스들을 고려하지 못한다. 대신, 메트릭 평가 유닛 (42) 은 GPU (6) 에 의한 사용을 위해 가장 효율적인 렌더링 모드를 예측하도록 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 오버헤드 비용들과 대역폭 비용을 비교할 수도 있다.
오버헤드 비용들을 결정하기 위해, 성능 평가 유닛 (42) 은 현재 렌더링 유닛에 대해 정의된 렌더 타깃들의 수 (48) 를 평가할 수도 있다. 전술된 바와 같이, 프레임을 렌더링하기 위해, GPU (6) 는 프레임과 개별적으로 연관된 렌더 타깃들 각각 내에서 그래픽 데이터를 렌더링하며, 그 후, 렌더링된 그래픽 데이터를 프레임 버퍼 (28) 에서 조합한다. 주어진 프레임에 대해 정의된 렌더 타깃들의 수 (48) 가 높을 때, 디스플레이를 위해 프레임을 충분히 렌더링하는 데에는 보다 많은 수의 렌더링 패스들이 요구된다. 따라서, 렌더 타깃들의 수 (48) 의 높을 때, 각각의 렌더 타깃에 대한 타일링 패스들을 셋업하고 프레임과 연관된 각 렌더 타깃의 각 타일을 렌더링할 필요성을 제거함으로써 오버헤드 비용을 감소시키도록 즉각적 렌더링 모드로 스위칭하는 것이 보다 효율적일 수도 있다.
즉각적 렌더링 모드에서, GPU (6) 는, 각각의 렌더 타깃에 대한 개별 타일링 패스 및 타일 렌더링을 수행하지 않으면서, 프레임과 연관된 각각의 렌더 타깃의 그래픽 데이터를 프레임 버퍼 (28) 에 직접적으로 렌더링할 수도 있다. 이 방식으로, 즉각적 렌더링 모드를 이용하는 것은, 현재 렌더링 유닛에 대한 그래픽 데이터의 렌더링 동안 CPU (4) 및/또는 GPU (6) 에 의해 이용된 프로세싱 리소스들의 양을 감소시킬 가능성이 있을 것이다.
따라서, GPU 대역폭 (46) 이 높고 렌더 타깃들의 수 (48) 가 낮을 때, 메트릭 평가 유닛 (42) 은 지연된 렌더링 모드가 현재 렌더링 유닛에 대해 가장 효율적임을 예측할 수도 있다. 전술된 바와 같이, 지연된 렌더링 모드는 많은 판독-수정-기록 기능들을 요구하는 깊이 테스팅 및 픽셀 블렌딩으로 복잡한 그래픽 장면을 그래픽 데이터가 표현할 때 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 시스템 대역폭을 이용할 수도 있다. GPU 대역폭 (46) 이 높지만 렌더링 타깃들의 수 (48) 가 낮을 때, 타일링 패스를 셋업하고 각각의 렌더 타깃에 대한 복수의 타일들을 렌더링하는 오버헤드 비용은 지연된 렌더링 모드의 대역폭 감소를 오버라이드하지 않는다.
한편, GPU 대역폭 (46) 이 낮고 렌더 타깃들의 수 (48) 가 높을 때, 메트릭 평가 유닛 (42) 은 즉각적 렌더링 모드가 현재 렌더링 유닛에 대해 가장 효율적임을 예측할 수도 있다. 전술된 바와 같이, 즉각적 렌더링 모드는, 지연된 렌더링 모드가 어떠한 대역폭 감소도 제공하지 않지만 프로세싱 리소스들 상에서의 드레인으로서 행동하는 단순한 그래픽 장면을 그래픽 데이터가 표현할 때, 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 시스템 대역폭을 이용할 수도 있다. GPU 대역폭 (46) 이 낮지만 렌더 타깃들의 수 (48) 가 높을 때, 타일링 패스를 셋업하고 각각의 렌더 타깃에 대한 복수의 타일들을 렌더링하는 오버헤드 비용은 지연된 렌더링 모드의 임의의 대역폭 감소를 오버라이드한다.
몇몇 경우들에 있어서, GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 에 기초하여, 어떤 렌더링 모드가 렌더링 동안 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것인지는 즉각적으로는 명백하지 않을 수도 있다. 예를 들어, GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 가 양측 모두 낮거나 또는 양측 모두 높을 때, 지연된 렌더링 모드에 대해 타일 렌더링 및 타일링 패스들을 셋업하는 오버헤드 비용이, 지연된 렌더링 모드의 대역폭 감소를 오버라이드할 것인지는 불명료할 수도 있다. 이러한 경우들에 있어서, 메트릭 평가 유닛 (42) 은 현재 렌더링 유닛에 대한 가장 효율적인 렌더링 모드를 예측하기 위해 다음 가중된 메트릭을 고려할 수도 있다.
그 후, 메트릭 평가 유닛 (42) 은, 예를 들어 임의의 보틀넥들이 렌더링 동안에 어디에서 발생하고 있을 것인지를 결정하도록 GPU 부하 (50) 및 CPU 부하 (52) 를 평가할 수도 있다. CPU 부하 (52) 가 높을 때는, 지연된 렌더링 모드에 따라 그래픽 드라이버 (10) 에서의 추가 오버헤드 비용들로 인한 CPU (4) 에서의 보틀넥을 나타낼 수도 있다. 이 경우에 있어서, 즉각적 렌더링 모드를 이용하고 GPU (6) 상에 보다 큰 프로세싱 부담을 시프트시키는 것이 보다 효율적일 수도 있다. 다른 실시예들에서, 성능 평가 유닛 (42) 은 렌더링 유닛에 대한 프리미티브 또는 삼각형 묘화들의 수를 결정하기 위해 API 호들의 수 (58) 를 평가할 수도 있다. API 호들의 수 (58) 가 높을 때, 예컨대 렌더링 유닛당 2,000 개의 호들을 초과할 때, 즉각적 렌더링 모드를 이용하는 것이 보다 효율적일 수도 있는데, 이는 렌더링 유닛의 각각의 타일에 대한 다수의 프리미티브들을 재묘화해야 하는 오버헤드 비용이, 지연된 렌더링 모드의 대역폭 감소를 오버라이드할 수도 있기 때문이다.
일단 메트릭들이 평가되면, 그래픽 드라이버 (10) 는 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 또는 지연된 렌더링 모드를 선택하도록 렌더링 모드 선택 유닛 (44) 을 실행한다. 보다 구체적으로, 렌더링 모드 선택 유닛 (44) 은 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용하도록 메트릭 평가 유닛 (42) 에 의해 예측된 렌더링 모드를 선택할 수도 있다. 그 후, 렌더링 모드 선택 유닛 (44) 은 현재 렌더링 유닛의 그래픽 데이터를 렌더링하기 위해, 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다. GPU (6) 를 구성하는 것은, 즉각적 렌더링 모드의 경우에 렌더링 엔진 (12) 으로부터의 렌더링된 그래픽 데이터 출력을 직접적으로 프레임 버퍼 (28) 에 또는 지연된 렌더링 모드의 경우에 타일 버퍼 (30) 에 전송하도록 GPU (6) 의 레지스터들을 프로그래밍하는 것을 포함할 수도 있다.
몇몇 경우들에 있어서, 그래픽 드라이버 (10) 의 렌더링 모드 선택 유닛은 또한 개발자로부터 또는 그래픽 API (22) 를 통해 다른 사용자로부터 수동으로 선택되거나 또는 나타내진 렌더링 모드를 수신할 수도 있다. 수동으로 선택된 렌더링 모드는 자동으로 선택된 렌더링 모드를 오버라이드할 수도 있다. 수동으로 선택된 렌더링 모드가 수신될 때, 렌더링 모드 선택 유닛 (44) 은 수동으로 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성할 수도 있다. 이 방식으로, 개발자는 어떤 렌더링 모드가 렌더링 동안 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것으로 예측되는지와는 무관하게 GPU (6) 에 의해 이용된 렌더링 모드를 제어할 수도 있다.
도 4 는 GPU (6) 에 의한 사용을 위해 렌더링 모드를 자동으로 선택하는 그래픽 드라이버 (10) 의 예시적 동작을 예시한 플로우차트이다. 예시된 플로우차트는 도 2 로부터의 그래픽 디바이스 (2) 를 참조하여 설명될 것이다. CPU (4) 상의 그래픽 애플리케이션 (20) 의 실행 동안, 그래픽 드라이버 (10) 는 디스플레이용 이미지를 생성하도록 그래픽 데이터를 렌더링할 것을 GPU (6) 에게 지시할 수도 있다. 그래픽 드라이버 (10) 는 또한 어떠한 것이 그래픽 데이터를 렌더링하는 데 최소량의 시스템 대역폭 및/또는 전력을 이용할 것으로 예측되는지에 기초하여 GPU (6) 에 의한 사용을 위해 즉각적 렌더링 모드 또는 지연된 렌더링 모드 중 어느 하나를 자동으로 선택할 수도 있다.
그래픽 데이터는 복수의 렌더링 유닛들을 포함할 수도 있다. 그래픽 데이터의 렌더링 유닛은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 단일 렌더 타깃의 일부를 포함할 수도 있다. 그래픽 드라이버 (10) 는, GPU (6) 가 이전 렌더링 유닛으로부터 현재 렌더링 유닛으로 스위칭하고 있을 때 렌더링 경계에 있는 현재 렌더링 유닛에 대한 렌더링 모드를 선택할 수도 있다.
주어진 렌더링 경계에서, CPU (4) 상에서 실행하는 그래픽 드라이버 (10) 는 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집한다 (60). 일반적으로, 그래픽 드라이버 (10) 는 GPU (6) 로부터의 이전 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집하며, CPU (4) 로부터 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집한다. 그 후, 그래픽 드라이버 (10) 는 수집된 메트릭들을 메트릭 버퍼 (24) 에 저장할 수도 있다. 메트릭들을 수집하는 예시적 동작은 도 5 에 더 상세히 설명된다.
다음, 그래픽 드라이버 (10) 는 가중화 방식을 이용하여 메트릭들 중 적어도 2 개를 평가한다 (62). 이 방식으로, 그래픽 드라이버 (10) 는 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 렌더링 모드를 예측할 수도 있다. 예를 들어, 그래픽 드라이버 (10) 는 적어도 프레임에 대해 정의된 렌더 타깃들의 수 및 GPU 대역폭에 가중화 방식을 적용할 수도 있다. 그 후, 그래픽 드라이버 (10) 는 지연된 렌더링 모드를 셋업하는 것과 연관된 오버헤드 비용들이 현재 렌더링 유닛의 그래픽 데이터에 대한 지연된 렌더링 모드의 대역폭 감소를 오버라이드하는지를 평가할 수도 있다. 메트릭들을 평가하는 예시적 동작은 도 6 에서 더 상세히 설명된다.
일단 메트릭들이 평가되면, 그래픽 드라이버 (10) 는 평가에 기초하여 즉각적 렌더링 모드 또는 지연된 렌더링 모드를 자동으로 선택한다 (64). 보다 구체적으로, 렌더링 모드 선택 유닛 (44) 은 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것으로 예측되는 렌더링 모드를 선택할 수도 있다.
몇몇 경우들에 있어서, 그래픽 드라이버 (10) 는 또한 수동으로 선택된 렌더링 모드를 개발자로부터 또는 그래픽 API (22) 를 통한 다른 사용자로부터 수신할 수도 있다 (66 의 "예" 브랜치). 그래픽 드라이버 (10) 에 의해 수신된 수동으로 선택된 렌더링 모드는 자동으로 선택된 렌더링 모드를 오버라이드할 수도 있다 (68). 이 방식으로, 개발자는 어떤 렌더링 모드가 렌더링 동안 보다 적은 전력 및/또는 시스템 대역폭을 이용할 것으로 예측되는지와는 무관하게 GPU (6) 에 의해 이용되는 렌더링 모드를 제어할 수도 있다.
렌더링 모드가, 평가된 메트릭들에 기초하여 자동으로 선택되는지 (66 의 "아니오" 브랜치) 또는 사용자에 의해 수동으로 선택되는지 (66, 68 의 "예" 브랜치) 와는 무관하게, 그래픽 드라이버 (10) 는 현재 렌더링 유닛의 그래픽 데이터를 렌더링하기 위해 선택된 렌더링 모드에 따라 동작하도록 GPU (6) 를 구성한다 (70). GPU (6) 를 구성하는 것은, 즉각적 렌더링 모드의 경우에 렌더링 엔진 (12) 으로부터의 렌더링된 그래픽 데이터 출력을 직접적으로 프레임 버퍼 (28) 에 또는 지연된 렌더링 모드의 경우에 타일 버퍼 (30) 에 전송하도록 GPU (6) 의 레지스터들을 프로그래밍하는 것을 포함할 수도 있다.
그 후, 그래픽 드라이버 (10) 는 선택된 렌더링 모드에 따라 동작하도록 구성된 GPU (6) 의 렌더링 엔진 (12) 에 현재 렌더링 유닛의 그래픽 데이터를 제공할 수도 있다 (72). GPU (6) 가 그래픽 데이터의 렌더링 경계에 도달할 때까지 (74 의 "아니오" 브랜치), 그래픽 드라이버 (10) 는 현재 렌더링 유닛의 그래픽 데이터를 GPU (6) 의 렌더링 엔진 (12) 에 제공하는 것을 계속할 것이다 (72). 일단 GPU (6) 가 렌더링 경계에 도달하고 현재 렌더링 유닛으로부터 후속 렌더링 유닛으로 스위칭하면 (74 의 "예" 브랜치), 그래픽 드라이버 (10) 는 또한 후속 렌더링 유닛으로 스위칭한다 (76). 그 후, 그래픽 드라이버 (10) 는 후속 렌더링 유닛에 대해 전술된 자동 렌더링 모드 선택 프로세스를 수행한다.
도 5 는 하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집하는 그래픽 드라이버 (10) 의 예시적 동작 (도 4 로부터의 단계 60) 을 예시한 플로우차트이다. 예시된 플로우차트는 도 3 으로부터의 그래픽 드라이버 (10) 의 메트릭 수집 유닛 (40) 을 참조하여 설명될 것이다. 주어진 렌더링 경계에서, 그래픽 드라이버 (10) 는 이전 렌더링 유닛 및/또는 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집하도록 메트릭 수집 유닛 (40) 을 실행한다. 예를 들어, 메트릭 수집 유닛 (40) 은 CPU (4) 로부터 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집할 수도 있고, GPU (6) 로부터 이전 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집할 수도 있다.
메트릭 수집 유닛 (40) 은 GPU (6) 의 GPU 성능 카운터들 (32) 로부터 이전 렌더링 유닛의 렌더링 동안에 이용된 GPU 대역폭 (46) 의 양을 수집할 수도 있다 (80). 몇몇 경우들에 있어서, 메트릭 수집 유닛 (40) 은 모든 렌더링 경계에서 GPU 성능 카운터들 (32) 로부터 정보를 수집하지 않을 수도 있다. 그 후, GPU 대역폭의 양은 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 수집된 이전 또는 현재 렌더링 유닛에 대한 버텍스들/프래그먼트들의 수 (54) 에 기초하여 결정될 수도 있다 (단계 88 이하). 그래픽 데이터를 렌더링하기 위해 GPU (6) 에 의해 이용되는 다량의 대역폭은 GPU (6) 가 디바이스 메모리 (8) 에 대해 다수의 판독 및/또는 기록 요청들을 행하고 있음을 나타낼 수도 있다.
메트릭 수집 유닛 (40) 은 또한 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 현재 렌더링 유닛과 연관된 프레임에 대해 정의된 렌더 타깃들의 수 (48) 를 수집할 수도 있다 (82). 주어진 프레임에 대해 정의된 렌더 타깃들의 수가 많을수록, 디스플레이를 위해 프레임을 충분히 렌더링하는 데에는 렌더링 패스들의 수가 더 많이 요구된다. 메트릭 수집 유닛 (40) 은 또한 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 현재 렌더링 유닛과 연관된 프레임에 대해 정의된 렌더 타깃들의 치수들 (49) 을 수집할 수도 있다 (83). 치수들은 주어진 프레임에 대해 디바이스 메모리 (8) 에 저장된 렌더 타깃들 (26) 각각에 대한 높이, 폭, 및 픽셀당 비트들을 포함할 수도 있다. 주어진 프레임에 대해 정의된 대형 렌더 타깃들은 많은 판독-수정-기록 동작들을 요구할 수도 있는 렌더링을 위한 복잡한 그래픽 장면을 프레임이 포함함을 나타낼 수도 있다.
메트릭 수집 유닛 (40) 은 이전 렌더링 유닛의 렌더링 동안 GPU (6) 의 레지스터들 상의 GPU 부하 (50) 의 양을 수집할 수도 있다 (84). 메트릭 수집 유닛 (40) 은 또한 이전 렌더링 유닛의 렌더링 동안 CPU (4) 의 레지스터들 상의 CPU 부하 (52) 의 양을 수집할 수도 있다 (86). GPU (6) 및 CPU (4) 의 부하량들은 임의의 성능 보틀넥들이 그래픽 데이터의 렌더링 동안 발생하고 있을 수도 있음을 나타낼 수도 있다.
메트릭 수집 유닛 (40) 은 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 현재 렌더링 유닛에 대한 버텍스들/프래그먼트들의 수 (54) 를 수집할 수도 있다 (88). 전술된 바와 같이, 주어진 렌더링 유닛의 그래픽 데이터에 포함된 버텍스들 및/또는 프래그먼트들의 수는 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 요구될 GPU 대역폭의 양을 결정하는 데 이용될 수도 있다. 메트릭 수집 유닛 (40) 은 또한 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 현재 렌더링 유닛 내의 프래그먼트들의 위치들 (55) 을 수집할 수도 있다 (89). 프래그먼트들의 위치들은 다수의 프래그먼트들이 단순한 그래픽 장면 내의 렌더링 유닛에 걸쳐서 확산되는지, 또는 복잡한 그래픽 장면으로서 렌더링 유닛의 일 영역에 클러스터링되는지를 나타낼 수도 있다.
메트릭 수집 유닛 (40) 은 CPU (4) 상에서 실행되는 그래픽 애플리케이션 (20) 으로부터 현재 렌더링 유닛이 깊이 테스트/블렌딩 인에이블되는지 (56) 를 수집할 수도 있다 (90). 주어진 렌더링 유닛에 대해 인에이블되고 수행될 때, 깊이 테스팅 및 픽셀 블렌딩의 그래픽 동작들은 많은 판독-수정-기록 동작들을 요구한다. 메트릭 수집 유닛 (40) 은 또한 현재 렌더링 유닛에 대해 CPU (4) 및/또는 GPU (6) 상에서 실행되는 애플리케이션의 타입 (57) 을 수집할 수도 있다 (91). CPU (4) 및/또는 GPU (6) 상에서 실행되는 애플리케이션, 즉 그래픽 애플리케이션 (20) 의 타입은 렌더링을 위해 생성된 그래픽 장면들에 대한 일반적인 복잡도 레벨을 나타낼 수도 있다.
추가로, 메트릭 수집 유닛 (40) 은 CPU (4) 상에서 실행되는 그래픽 API (22) 로부터 이전 또는 현재 렌더링 유닛에 대해, API 호들, 예컨대 그래픽 데이터로 프리미티브들 또는 삼각형들을 묘화하는 호들의 수 (56) 를 수집할 수도 있다 (92). 주어진 렌더링 유닛이 다수의 API 호들을 포함할 때, 지연된 렌더링 모드에서 다수의 프리미티브들이 다수의 타일들에 대해 재묘화될 필요가 있을 가능성이 더 클 수도 있다. 그 후, 그래픽 드라이버 (10) 의 메트릭 수집 유닛 (40) 은 수집된 메트릭들을 메트릭 버퍼 (24) 에 저장할 수도 있다.
도 6 은 가중화 방식을 이용하여 메트릭들을 평가하는 그래픽 드라이버 (10) 의 예시적 동작 (도 4 로부터의 단계 62) 을 예시한 플로우차트이다. 예시된 플로우차트는 도 3 으로부터의 그래픽 드라이버 (10) 의 메트릭 평가 유닛 (42) 을 참조하여 설명될 것이다. 일단 메트릭들이 수집되어 메트릭 버퍼 (24) 에 저장되면, 그래픽 드라이버 (10) 는 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 현재 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및/또는 시스템 대역폭을 이용할 렌더링 모드를 예측하기 위해 메트릭들 중 적어도 2 개를 평가하도록 메트릭 평가 유닛 (42) 을 실행한다.
메트릭 평가 유닛 (42) 은 메트릭 버퍼 (24) 에 저장된 수집된 메트릭들에 가중화 방식을 적용한다 (94). 예를 들어, 메트릭 평가 유닛 (42) 은 메트릭들 중 2 개 이상에 어떤 양들의 가중치를 할당하는 알고리즘을 실행할 수도 있다. 예시된 실시예 동작에서, 메트릭 평가 (42) 는 GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 의 메트릭들에 최대 가중치를 적용한다 (96).
GPU 대역폭 (46) 이 높고 렌더 타깃들의 수 (48) 가 낮을 때 (98 의 "예" 브랜치), 메트릭 평가 유닛 (42) 은 지연된 렌더링 모드가 현재 렌더링 유닛에 대해 가장 효율적임을 예측할 수도 있다 (100). 전술된 바와 같이, 지연된 렌더링 모드는 많은 판독-수정-기록 기능들을 요구하는 깊이 테스팅 및 픽셀 블렌딩으로 복잡한 그래픽 장면을 그래픽 데이터가 표현할 때 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 시스템 대역폭을 이용할 수도 있다. GPU 대역폭 (46) 이 높지만 렌더링 타깃들의 수 (48) 가 낮을 때, 타일링 패스를 셋업하고 각각의 렌더 타깃에 대한 복수의 타일들을 렌더링하는 오버헤드 비용은 지연된 렌더링 모드의 대역폭 감소를 오버라이드하지 않는다.
GPU 대역폭 (46) 이 낮고 렌더 타깃들의 수 (48) 가 높을 때 (98 의 "아니오" 브랜치 및 102 의 "예" 브랜치), 메트릭 평가 유닛 (42) 은 즉각적 렌더링 모드가 현재 렌더링 유닛에 대해 가장 효율적임을 예측할 수도 있다 (104). 전술된 바와 같이, 즉각적 렌더링 모드는, 지연된 렌더링 모드가 어떠한 대역폭 감소도 제공하지 않지만 프로세싱 리소스들 상에서의 드레인으로서 행동하는 단순한 그래픽 장면을 그래픽 데이터가 표현할 때, 렌더링 유닛의 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 시스템 대역폭을 이용할 수도 있다. GPU 대역폭 (46) 이 낮지만 렌더링 타깃들의 수 (48) 가 높을 때, 타일링 패스를 셋업하고 각각의 렌더 타깃에 대한 복수의 타일들을 렌더링하는 오버헤드 비용은 지연된 렌더링 모드의 임의의 대역폭 감소를 오버라이드한다.
GPU 대역폭 (46) 이 낮고 렌더 타깃들의 수 (48) 가 역시 낮을 때, 또는 GPU 대역폭 (46) 이 높고 렌더 타깃들의 수 (48) 가 역시 높을 때, (98 의 "아니오" 브랜치 및 102 의 "아니오" 브랜치), 메트릭 평가 유닛 (42) 은 현재 렌더링 유닛에 대해 가장 효율적인 렌더링 모드를 예측하도록 다음 가중된 메트릭을 고려할 수도 있다 (106). 예를 들어, GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 가 양측 모두 낮거나 또는 양측 모두 높을 때, 지연된 렌더링 모드에 대해 타일 렌더링 및 타일링 패스들을 셋업하는 오버헤드 비용이, 지연된 렌더링 모드의 대역폭 감소를 오버라이드할 것인지는 불명료할 수도 있다. 이 경우에 있어서, 임의의 추가 가중된 메트릭들은, GPU 대역폭 (46) 및 렌더 타깃들의 수 (48) 에 기초하여, 어떤 렌더링 모드가 렌더링 동안 보다 적은 시스템 대역폭 및/또는 전력을 이용할 것인지는 즉각적으로 명백하지 않다.
도 6 의 예시된 플로우차트는 가중화 방식을 이용하는 평가 메트릭들의 일 실시예에 불과하다. 다른 실시예들에서, 가중치의 상이한 양들은 상이한 메트릭들에 적용될 수도 있다. 예를 들어, 2 개 이상의 다른 메트릭들은 가장 효율적인 렌더링 모드를 예측하기 위한 최대 가중치를 부여받을 수도 있고, 또는 모든 메트릭들은 동일한 가중치를 부여받을 수도 있다. 또 다른 실시예들에서, 상이한 평가 방식이 가장 효율적인 렌더링 모드를 예측하는 데 이용될 수도 있다.
하나 이상의 실시예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌?R어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 기능들 또는 동작들은 비일시적 컴퓨터 판독가능한 매체 상에서 하나 이상의 명령들 또는 코드로서 저장되거나 전송되며 하드웨어 기반의 처리 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 데이터 저장 매체들과 같은 유형의 매체, 또는 예를 들어, 통신 프로토콜에 따라, 한 곳에서 다른 곳으로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하는 통신 매체들에 대응하는 컴퓨터 판독가능 저장 매체들일 포함할 수도 있다. 이 방식으로, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 유형 컴퓨터 판독가능 저장 매체들, 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는, 본 개시에서 설명된 기술들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 검색하기 위한 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지, 또는 다른 자기 스토리지 디바이스들, 플래시 메모리, 또는 희망 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 운반 또는 저장하는 데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 컴퓨터 판독가능 매체로 적절히 칭해진다. 예를 들면, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 명령들이 송신되면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 접속들, 반송파들, 신호들, 또는 다른 일시적 매체들을 포함하지 않고, 대신에 비일시적, 유형의 저장 매체들임을 이해해야 한다. 그러나, 본 명세서에서 사용되는 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, DVD (digital versatile disc), 플로피 디스크 및 블루-레이 디스크를 포함하는데, 여기서 디스크 (disk) 는 보통 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 DSP들, 범용 마이크로프로세서들, ASIC들, FPGA들, 또는 다른 등가의 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 본원에서 사용된 용어 "프로세서"는 임의의 앞서 설명된 구조 또는 본원에서 설명된 기술들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 추가로, 몇몇 양태들에서, 여기서 사용된 기능은 조합된 코덱에 포함되거나 또는 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 본원에서 개시된 기술들은 하나 이상의 회로들 또는 로직 소자들에서 완전히 구현될 수 있다.
본 개시의 기술들은, 무선 헤드셋, 집적 회로(IC) 또는 ICs의 세트 (예컨대, 칩 세트) 와 같이, 다양한 유닛들은, 적절한 소프트웨어 및/또는 펌웨어와 연계하여, 코덱 하드웨어 유닛에 통합되거나 또는 상술한 하나 이상의 프로세서들을 포함하여 상호 동작적인 하드웨어 유닛들의 집합에 의해 제공될 수도 있다.
다양한 실시형태들을 설명하였다. 이들 및 다른 실시형태들은 하기의 특허청구범위 내에 있다.

Claims (47)

  1. 그래픽 데이터를 프로세싱하는 방법으로서,
    하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하는 단계로서, 상기 메트릭들은 이전 렌더링 유닛의 렌더링동안 사용되는 그래픽 프로세싱 유닛 (GPU) 대역폭의 양과, 상기 이전 렌더링 유닛 및 현재 렌더링 유닛 중 적어도 하나의 렌더링 유닛의 렌더링 동안 수집된 하나 이상의 프로세싱 유닛 메트릭들을 포함하고, 상기 메트릭들을 평가하는 단계는 상기 이전 렌더링 유닛의 렌더링동안 사용되는 상기 GPU 대역폭의 양과, 상기 하나 이상의 프로세싱 유닛 메트릭들을 평가하는 단계를 포함하는, 상기 메트릭들을 평가하는 단계;
    상기 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 (immediate rendering mode) 및 지연된 렌더링 모드 (deferred rendering mode) 중 하나로서 상기 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하는 단계;
    상기 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 GPU 를 구성하는 (configure) 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  2. 제 1 항에 있어서,
    상기 렌더링 유닛들의 각각은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 프레임과 연관된 단일 렌더 타깃의 일부 중 하나를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  3. 제 1 항에 있어서,
    상기 이전 렌더링 유닛 및 상기 현재 렌더링 유닛 중 적어도 하나의 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 상기 메트릭들을 수집하는 단계를 더 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  4. 제 1 항에 있어서,
    상기 적어도 2 개의 메트릭들을 평가하는 단계는, 버텍스들의 수, 프래그먼트들의 수, 프래그먼트들의 위치들, GPU 상의 부하량, 중앙 프로세싱 유닛 (CPU) 상의 부하량, 프레임에 대해 정의된 렌더 타깃들의 수, 프레임에 대해 정의된 다중 렌더 타깃 (multiple render target: MRT) 들의 수, 깊이 테스트 인에이블먼트, 블렌딩 인에이블먼트, 스텐실 테스트 인에이블먼트, 렌더 타깃들의 치수들, 상기 GPU 상에서 실행되는 애플리케이션의 타입, 그래픽 애플리케이션 프로그램 인터페이스 (API) 호들 (calls) 의 수, 및 GPU 하드웨어 성능 카운터 정보 중 하나 이상 및 상기 GPU 대역폭의 양을 평가하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  5. 제 1 항에 있어서,
    상기 렌더링 모드를 자동으로 선택하는 단계는 상기 이전 렌더링 유닛과 상기 현재 렌더링 유닛 사이에서 상기 그래픽 데이터의 렌더링 경계에 있는 상기 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  6. 제 1 항에 있어서,
    렌더링을 위해 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 상기 GPU 에 제공하는 단계; 및
    상기 그래픽 데이터에서의 렌더링 경계에 도달하면, 상기 현재 렌더링 유닛으로부터 후속 렌더링 유닛으로 스위칭하는 단계를 더 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  7. 제 1 항에 있어서,
    상기 메트릭들 중 적어도 2 개의 메트릭들을 평가하는 단계는 상기 적어도 2 개의 메트릭들에 가중화 방식을 적용하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  8. 제 1 항에 있어서,
    상기 메트릭들 중 적어도 2 개의 메트릭들을 평가하는 단계는 적어도 이전 렌더링 유닛의 렌더링동안 사용된 상기 GPU 대역폭의 양 및 상기 현재 렌더링 유닛에 연관된 프레임에 대해 정의된 렌더 타깃들의 수를 평가하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  9. 제 1 항에 있어서,
    상기 적어도 2 개의 메트릭들을 평가하는 단계는, 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 하나의 렌더링 모드를 예측하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  10. 제 1 항에 있어서,
    상기 렌더링 모드를 자동으로 선택하는 단계는, 상기 평가된 메트릭들에 기초하여 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 것으로 예측되는 하나의 렌더링 모드를 자동으로 선택하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  11. 제 1 항에 있어서,
    상기 GPU 를 구성하는 단계는, 상기 즉각적 렌더링 모드가 상기 렌더링 모드로서 선택될 때, 상기 현재 렌더링 유닛의 그래픽 데이터를 직접적으로 프레임 버퍼에 렌더링하도록 상기 GPU 의 렌더링 엔진을 구성하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  12. 제 1 항에 있어서,
    상기 GPU 를 구성하는 단계는, 상기 지연된 렌더링 모드가 상기 렌더링 모드로서 선택될 때, 상기 현재 렌더링 유닛을 복수의 타일들로 분할하는 타일링 패스 (tiling pass) 를 수행하고, 상기 복수의 타일들 각각의 그래픽 데이터를 타일 버퍼에 렌더링하고, 상기 타일 버퍼로부터 상기 렌더링된 타일들의 각각의 그래픽 데이터를 프레임 버퍼로 판독하도록 상기 GPU 의 렌더링 엔진을 구성하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  13. 제 1 항에 있어서,
    상기 자동으로 선택된 렌더링 모드를 오버라이드하는 수동으로 선택된 렌더링 모드를 수신하는 단계를 더 포함하고,
    상기 GPU 를 구성하는 단계는 상기 수동으로 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 상기 GPU 를 구성하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  14. 제 13 항에 있어서,
    상기 수동으로 선택된 렌더링 모드를 수신하는 단계는, 상기 수동으로 선택된 렌더링 모드를 사용자로부터 수신하도록 그래픽 애플리케이션 프로그래밍 인터페이스 (API) 를 실행하는 단계를 포함하는, 그래픽 데이터를 프로세싱하는 방법.
  15. 그래픽 데이터를 프로세싱하는 그래픽 디바이스로서,
    하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 저장하는 메모리 버퍼; 및
    하나 이상의 프로세서들을 포함하며,
    상기 하나 이상의 프로세서들은,
    상기 메트릭들 중 적어도 2 개를 평가하고, 상기 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 하나로서 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하고, 상기 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 그래픽 프로세싱 유닛 (GPU) 을 구성하고, 상기 메트릭들은 이전 렌더링 유닛의 렌더링동안 사용되는 그래픽 프로세싱 유닛 (GPU) 대역폭의 양과, 상기 이전 렌더링 유닛 및 현재 렌더링 유닛 중 적어도 하나의 렌더링 유닛의 렌더링 동안 수집된 하나 이상의 프로세싱 유닛 메트릭들을 포함하고, 상기 메트릭들을 평가하는 것은 상기 이전 렌더링 유닛의 렌더링동안 사용되는 상기 GPU 대역폭의 양과, 상기 하나 이상의 프로세싱 유닛 메트릭들을 평가하는 것을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  16. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은 중앙 프로세싱 유닛 (CPU) 및 상기 GPU 중 하나 이상을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  17. 제 15 항에 있어서,
    상기 렌더링 유닛들의 각각은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 프레임과 연관된 단일 렌더 타깃의 일부 중 하나를 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  18. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 이전 렌더링 유닛 및 상기 현재 렌더링 유닛 중 적어도 하나의 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 상기 메트릭들을 수집하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  19. 제 15 항에 있어서,
    상기 메트릭들은, 버텍스들의 수, 프래그먼트들의 수, 프래그먼트들의 위치들, 상기 GPU 상의 부하량, 중앙 프로세싱 유닛 (CPU) 상의 부하량, 프레임에 대해 정의된 렌더 타깃들의 수, 프레임에 대해 정의된 다중 렌더 타깃 (MRT) 들의 수, 깊이 테스트 인에이블먼트, 블렌딩 인에이블먼트, 스텐실 테스트 인에이블먼트, 렌더 타깃들의 치수들, 상기 GPU 상에서 실행되는 애플리케이션의 타입, 그래픽 애플리케이션 프로그램 인터페이스 (API) 호들의 수, 및 GPU 하드웨어 성능 카운터 정보 중 하나 이상 및 상기 GPU 대역폭의 양을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  20. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 이전 렌더링 유닛과 상기 현재 렌더링 유닛 사이에서 상기 그래픽 데이터의 렌더링 경계에 있는 상기 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  21. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은,
    렌더링을 위해 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 상기 GPU 에 제공하고;
    상기 그래픽 데이터에서의 렌더링 경계에 도달하면, 상기 현재 렌더링 유닛으로부터 후속 렌더링 유닛으로 스위칭하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  22. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 메트릭들 중 적어도 2 개에 가중화 방식을 적용함으로써 상기 적어도 2 개의 메트릭들을 평가하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  23. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 이전 렌더링 유닛의 렌더링동안 사용되는 적어도 상기 GPU 대역폭의 양 및 상기 현재 렌더링 유닛과 연관되는 프레임에 대해 정의된 렌더 타깃들의 수를 평가하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  24. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 하나의 렌더링 모드를 예측하도록 상기 메트릭들 중 적어도 2 개를 평가하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  25. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 평가된 메트릭들에 기초하여 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 것으로 예측되는 하나의 렌더링 모드를 자동으로 선택하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  26. 제 15 항에 있어서,
    상기 GPU 는 렌더링 엔진을 포함하며,
    상기 즉각적 렌더링 모드가 상기 렌더링 모드로서 선택될 때, 상기 하나 이상의 프로세서들은 상기 현재 렌더링 유닛의 그래픽 데이터를 직접적으로 프레임 버퍼에 렌더링하도록 상기 GPU 의 상기 렌더링 엔진을 구성하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  27. 제 15 항에 있어서,
    상기 GPU 는 렌더링 엔진을 포함하며,
    상기 지연된 렌더링 모드가 상기 렌더링 모드로서 선택될 때, 상기 하나 이상의 프로세서들은 상기 현재 렌더링 유닛을 복수의 타일들로 분할하는 타일링 패스를 수행하고, 상기 복수의 타일들 각각의 그래픽 데이터를 타일 버퍼에 렌더링하고, 상기 타일 버퍼로부터 상기 렌더링된 타일들의 각각의 그래픽 데이터를 프레임 버퍼에 판독하도록 상기 GPU 의 상기 렌더링 엔진을 구성하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  28. 제 15 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 자동으로 선택된 렌더링 모드를 오버라이드하는 수동으로 선택된 렌더링 모드를 수신하고, 상기 수동으로 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 상기 GPU 를 구성하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  29. 제 28 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 수동으로 선택된 렌더링 모드를 사용자로부터 수신하도록 그래픽 애플리케이션 프로그래밍 인터페이스 (API) 를 실행하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  30. 그래픽 데이터를 프로세싱하는 그래픽 디바이스로서,
    하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하는 수단으로서, 상기 메트릭들은 이전 렌더링 유닛의 렌더링동안 사용되는 그래픽 프로세싱 유닛 (GPU) 대역폭의 양과, 상기 이전 렌더링 유닛 및 현재 렌더링 유닛 중 적어도 하나의 렌더링 유닛의 렌더링 동안 수집된 하나 이상의 프로세싱 유닛 메트릭들을 포함하고, 상기 메트릭들을 평가하는 수단은 상기 이전 렌더링 유닛의 렌더링동안 사용되는 상기 GPU 대역폭의 양과, 상기 하나 이상의 프로세싱 유닛 메트릭들을 평가하는 수단을 포함하는, 상기 메트릭들을 평가하는 수단;
    상기 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 하나로서 상기 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하는 수단; 및
    상기 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 GPU 를 구성하는 수단을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  31. 제 30 항에 있어서,
    상기 렌더링 유닛들의 각각은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 프레임과 연관된 단일 렌더 타깃의 일부 중 하나를 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  32. 제 30 항에 있어서,
    상기 이전 렌더링 유닛 및 상기 현재 렌더링 유닛 중 적어도 하나의 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 상기 메트릭들을 수집하는 수단을 더 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  33. 제 30 항에 있어서,
    상기 메트릭들은, 버텍스들의 수, 프래그먼트들의 수, 프래그먼트들의 위치들, 상기 GPU 상의 부하량, 중앙 프로세싱 유닛 (CPU) 상의 부하량, 프레임에 대해 정의된 렌더 타깃들의 수, 프레임에 대해 정의된 다중 렌더 타깃 (MRT) 들의 수, 깊이 테스트 인에이블먼트, 블렌딩 인에이블먼트, 스텐실 테스트 인에이블먼트, 렌더 타깃들의 치수들, 상기 GPU 상에서 실행되는 애플리케이션의 타입, 그래픽 애플리케이션 프로그램 인터페이스 (API) 호들의 수, 및 GPU 하드웨어 성능 카운터 정보 중 하나 이상 및 상기 GPU 대역폭의 양을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  34. 제 30 항에 있어서,
    상기 이전 렌더링 유닛과 상기 현재 렌더링 유닛 사이에서 상기 그래픽 데이터에서의 렌더링 경계에 있는 상기 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하는 수단을 더 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  35. 제 30 항에 있어서,
    상기 메트릭들 중 적어도 2 개의 메트릭들을 평가하는 수단은 상기 적어도 2 개의 메트릭들에 가중화 방식을 적용하는 수단을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  36. 제 30 항에 있어서,
    상기 메트릭들 중 적어도 2 개의 메트릭들을 평가하는 수단은, 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 하나의 렌더링 모드를 예측하는 수단을 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  37. 제 30 항에 있어서,
    상기 평가된 메트릭들에 기초하여 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 것으로 예측되는 하나의 렌더링 모드를 자동으로 선택하는 수단을 더 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  38. 제 30 항에 있어서,
    상기 자동으로 선택된 렌더링 모드를 오버라이드하는 수동으로 선택된 렌더링 모드를 수신하는 수단; 및
    상기 수동으로 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 상기 GPU 를 구성하는 수단을 더 포함하는, 그래픽 데이터를 프로세싱하는 그래픽 디바이스.
  39. 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체로서,
    상기 명령들은, 실행 시, 하나 이상의 프로그래밍가능 프로세서들로 하여금,
    하나 이상의 렌더링 유닛들의 그래픽 데이터를 렌더링하는 것과 연관된 적어도 2 개의 메트릭들을 평가하게 하되, 상기 메트릭들은 이전 렌더링 유닛의 렌더링동안 사용되는 그래픽 프로세싱 유닛 (GPU) 대역폭의 양과, 상기 이전 렌더링 유닛 및 현재 렌더링 유닛 중 적어도 하나의 렌더링 유닛의 렌더링동안 수집된 하나 이상의 프로세싱 유닛 메트릭들을 포함하고, 상기 메트릭들을 평가하게 하는 명령은, 상기 이전 렌더링 유닛의 렌더링동안 사용되는 상기 GPU 대역폭의 양과, 상기 하나 이상의 프로세싱 유닛 메트릭들을 평가하게 하는 것을 포함하고;
    상기 평가된 메트릭들에 기초하여 즉각적 렌더링 모드 및 지연된 렌더링 모드 중 하나로서 상기 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하게 하고;
    상기 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 GPU 를 구성하게 하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  40. 제 39 항에 있어서,
    상기 렌더링 유닛들의 각각은 프레임들의 세트, 프레임, 프레임의 일부, 프레임과 연관된 다중 렌더 타깃들, 프레임과 연관된 단일 렌더 타깃, 또는 프레임과 연관된 단일 렌더 타깃의 일부 중 하나를 포함하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  41. 제 39 항에 있어서,
    상기 프로그래밍가능 프로세서들로 하여금, 상기 이전 렌더링 유닛 및 상기 현재 렌더링 중 적어도 하나의 렌더링 유닛의 그래픽 데이터를 렌더링하는 것과 연관된 메트릭들을 수집하게 하는 명령들을 더 포함하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  42. 제 39 항에 있어서,
    상기 명령들은, 상기 프로그래밍가능 프로세서들로 하여금, 버텍스들의 수, 프래그먼트들의 수, 프래그먼트들의 위치들, 상기 GPU 상의 부하량, 중앙 프로세싱 유닛 (CPU) 상의 부하량, 프레임에 대해 정의된 렌더 타깃들의 수, 프레임에 대해 정의된 다중 렌더 타깃 (MRT) 들의 수, 깊이 테스트 인에이블먼트, 블렌딩 인에이블먼트, 스텐실 테스트 인에이블먼트, 렌더 타깃들의 치수들, 상기 GPU 상에서 실행되는 애플리케이션의 타입, 그래픽 애플리케이션 프로그램 인터페이스 (API) 호들의 수, 및 GPU 하드웨어 성능 카운터 정보 중 하나 이상 및 상기 GPU 대역폭의 양을 평가하게 하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  43. 제 39 항에 있어서,
    상기 명령들은, 상기 프로그래밍가능 프로세서들로 하여금, 상기 이전 렌더링 유닛과 상기 현재 렌더링 유닛 사이에서 상기 그래픽 데이터의 렌더링 경계에 있는 상기 현재 렌더링 유닛에 대한 렌더링 모드를 자동으로 선택하게 하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  44. 제 39 항에 있어서,
    상기 명령들은, 상기 프로그래밍가능 프로세서들로 하여금, 상기 메트릭들 중 적어도 2 개의 메트릭들에 가중화 방식을 적용함으로써 상기 메트릭들 중 적어도 2 개를 평가하게 하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  45. 제 39 항에 있어서,
    상기 명령들은, 상기 프로그래밍가능 프로세서들로 하여금, 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 하나의 렌더링 모드를 예측하도록 상기 메트릭들 중 적어도 2 개의 메트릭들을 평가하게 하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  46. 제 39 항에 있어서,
    상기 명령들은, 상기 프로그래밍가능 프로세서들로 하여금, 상기 평가된 메트릭들에 기초하여 상기 즉각적 렌더링 모드 및 상기 지연된 렌더링 모드 중, 상기 현재 렌더링 유닛의 상기 그래픽 데이터를 렌더링하는 데 보다 적은 전력 및 보다 적은 시스템 대역폭 중 적어도 하나를 이용할 것으로 예측되는 하나의 렌더링 모드를 자동으로 선택하게 하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
  47. 제 39 항에 있어서,
    상기 프로그래밍가능 프로세서들로 하여금,
    상기 자동으로 선택된 렌더링 모드를 오버라이드하는 수동으로 선택된 렌더링 모드를 수신하게 하고;
    상기 수동으로 선택된 렌더링 모드에 따라 상기 현재 렌더링 유닛의 그래픽 데이터를 렌더링하도록 상기 GPU 를 구성하게 하는 명령들을 더 포함하는, 그래픽 데이터를 프로세싱하는 명령들을 포함하는 컴퓨터 판독가능 매체.
KR1020137033447A 2011-05-16 2012-05-16 그래픽 프로세싱 유닛들에서의 렌더링 모드 선택 KR101650999B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/108,657 US8982136B2 (en) 2011-05-16 2011-05-16 Rendering mode selection in graphics processing units
US13/108,657 2011-05-16
PCT/US2012/038175 WO2012158817A2 (en) 2011-05-16 2012-05-16 Rendering mode selection in graphics processing units

Publications (2)

Publication Number Publication Date
KR20140023386A KR20140023386A (ko) 2014-02-26
KR101650999B1 true KR101650999B1 (ko) 2016-08-24

Family

ID=46149012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137033447A KR101650999B1 (ko) 2011-05-16 2012-05-16 그래픽 프로세싱 유닛들에서의 렌더링 모드 선택

Country Status (6)

Country Link
US (1) US8982136B2 (ko)
EP (1) EP2710559B1 (ko)
JP (1) JP5855743B2 (ko)
KR (1) KR101650999B1 (ko)
CN (1) CN103946789B (ko)
WO (1) WO2012158817A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113167A1 (ko) * 2021-12-16 2023-06-22 삼성전자주식회사 전자 장치 및 이의 동작 방법

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047835B2 (en) * 2011-08-17 2015-06-02 Broadcom Corporation Thermal and power aware graphics processing
US9196013B2 (en) * 2011-10-31 2015-11-24 Apple Inc. GPU workload prediction and management
US9117302B2 (en) * 2011-11-30 2015-08-25 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing using an overdraw tracker
WO2013130030A1 (en) * 2012-02-27 2013-09-06 Intel Corporation Using cost estimation to improve performance of tile rendering for image processing
EP2825952B1 (en) * 2012-03-16 2017-03-15 Intel Corporation Techniques for a secure graphics architecture
US9087410B2 (en) * 2013-01-17 2015-07-21 Qualcomm Incorporated Rendering graphics data using visibility information
US9201487B2 (en) * 2013-03-05 2015-12-01 Intel Corporation Reducing power consumption during graphics rendering
US9286649B2 (en) * 2013-05-31 2016-03-15 Qualcomm Incorporated Conditional execution of rendering commands based on per bin visibility information with added inline operations
US9158358B2 (en) * 2013-06-04 2015-10-13 Qualcomm Incorporated System and method for intelligent multimedia-based thermal power management in a portable computing device
CN105579849B (zh) * 2013-06-06 2019-02-22 微型照顾私人有限公司 在用于检测多聚靶分子的基于颗粒的测试中防止聚集的试剂、方法和设备
KR102116976B1 (ko) * 2013-09-04 2020-05-29 삼성전자 주식회사 렌더링 방법 및 장치
US9235871B2 (en) 2014-02-06 2016-01-12 Oxide Interactive, LLC Method and system of a command buffer between a CPU and GPU
GB2524047A (en) * 2014-03-12 2015-09-16 Samsung Electronics Co Ltd Improvements in and relating to rendering of graphics on a display device
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US10438312B2 (en) 2014-04-05 2019-10-08 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9710957B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
US9928565B2 (en) * 2014-04-21 2018-03-27 Qualcomm Incorporated Flex rendering based on a render target in graphics processing
GB2525666B (en) * 2014-05-02 2020-12-23 Advanced Risc Mach Ltd Graphics processing systems
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
EP2975573A1 (en) * 2014-07-17 2016-01-20 Continental Automotive GmbH Display system and method
KR102315280B1 (ko) 2014-09-01 2021-10-20 삼성전자 주식회사 렌더링 장치 및 방법
CN105808342B (zh) * 2014-12-30 2019-12-13 中国电信股份有限公司 用于分配客户请求的方法、判断装置和系统
US9659407B2 (en) 2015-01-26 2017-05-23 MediaTek Singapore, Pte. Lte. Preemptive flushing of spatial selective bins for deferred graphics processing
CN106326186B (zh) * 2015-06-29 2019-04-30 深圳市中兴微电子技术有限公司 一种片上系统、图形绘制方法、中间层及嵌入式设备
CN106326047B (zh) * 2015-07-02 2022-04-05 超威半导体(上海)有限公司 一种用于预测gpu性能的方法和相应的计算机系统
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
KR102646906B1 (ko) 2016-11-17 2024-03-12 삼성전자주식회사 타일 기반 렌더링 방법 및 장치
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
US11080810B2 (en) * 2017-04-21 2021-08-03 Intel Corporation Dynamically reconfigurable memory subsystem for graphics processors
US10726605B2 (en) * 2017-09-15 2020-07-28 Intel Corporation Method and apparatus for efficient processing of derived uniform values in a graphics processor
JP2019082819A (ja) * 2017-10-30 2019-05-30 株式会社日立製作所 アクセラレータ部の利用に対する課金を支援するシステム及び方法
US10580151B2 (en) * 2017-12-05 2020-03-03 Qualcomm Incorporated Tile-based low-resolution depth storage
CN109325899B (zh) 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN109242756B (zh) * 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN109413480B (zh) * 2018-09-30 2021-10-08 Oppo广东移动通信有限公司 画面处理方法、装置、终端及存储介质
CN110152291A (zh) * 2018-12-13 2019-08-23 腾讯科技(深圳)有限公司 游戏画面的渲染方法、装置、终端及存储介质
CN110001660B (zh) * 2018-12-17 2021-06-01 蔚来(安徽)控股有限公司 一种分布式多核异构系统
KR102611722B1 (ko) * 2019-01-07 2023-12-07 삼성전자주식회사 이미지 처리 장치 및 이미지 처리 방법
CN109933430B (zh) * 2019-03-08 2022-02-25 北京百度网讯科技有限公司 分配图形处理器的方法和装置
US11145105B2 (en) * 2019-03-15 2021-10-12 Intel Corporation Multi-tile graphics processor rendering
US11100698B2 (en) 2019-06-28 2021-08-24 Ati Technologies Ulc Real-time GPU rendering with performance guaranteed power management
CN112925592A (zh) 2019-12-05 2021-06-08 超威半导体公司 渲染主页面的内核软件驱动的颜色重新映射
US11257179B2 (en) 2020-03-13 2022-02-22 Apple Inc. Graphics processing techniques based on frame portion cost estimates
US20220044350A1 (en) * 2020-08-07 2022-02-10 Advanced Micro Devices, Inc. Graphics processing unit with selective two-level binning
CN113457160B (zh) * 2021-07-15 2024-02-09 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
KR102537317B1 (ko) * 2022-08-19 2023-05-26 세종대학교산학협력단 렌더링 성능을 올리기 위한 멀티레벨 선택적 렌더링 방법 및 장치
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001046905A2 (en) 1999-12-22 2001-06-28 Intel Corporation A method and apparatus for ensuring backward compatibility in a bucket rendering system
US20080012856A1 (en) 2006-07-14 2008-01-17 Daphne Yu Perception-based quality metrics for volume rendering
US20090073187A1 (en) * 2007-09-14 2009-03-19 Microsoft Corporation Rendering Electronic Chart Objects
US20090122068A1 (en) * 2007-11-09 2009-05-14 Vivante Corporation Intelligent configurable graphics bandwidth modulator

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3763079B2 (ja) 1994-12-22 2006-04-05 アップル コンピューター インコーポレイテッド 三次元グラフィックス・レンダリング・システム
GB2334869B (en) 1994-12-22 1999-11-03 Apple Computer Three-dimensional graphics rendering system
US6727904B2 (en) 2002-03-01 2004-04-27 Hewlett-Packard Development Company, L.P. System and method for rendering graphical data
US6885376B2 (en) 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US7961194B2 (en) * 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US7777748B2 (en) 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001046905A2 (en) 1999-12-22 2001-06-28 Intel Corporation A method and apparatus for ensuring backward compatibility in a bucket rendering system
US20080012856A1 (en) 2006-07-14 2008-01-17 Daphne Yu Perception-based quality metrics for volume rendering
US20090073187A1 (en) * 2007-09-14 2009-03-19 Microsoft Corporation Rendering Electronic Chart Objects
US20090122068A1 (en) * 2007-11-09 2009-05-14 Vivante Corporation Intelligent configurable graphics bandwidth modulator

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113167A1 (ko) * 2021-12-16 2023-06-22 삼성전자주식회사 전자 장치 및 이의 동작 방법

Also Published As

Publication number Publication date
WO2012158817A2 (en) 2012-11-22
JP5855743B2 (ja) 2016-02-09
CN103946789B (zh) 2017-10-03
JP2014533382A (ja) 2014-12-11
US20120293519A1 (en) 2012-11-22
WO2012158817A3 (en) 2014-10-16
EP2710559B1 (en) 2019-12-11
KR20140023386A (ko) 2014-02-26
US8982136B2 (en) 2015-03-17
EP2710559A2 (en) 2014-03-26
CN103946789A (zh) 2014-07-23

Similar Documents

Publication Publication Date Title
KR101650999B1 (ko) 그래픽 프로세싱 유닛들에서의 렌더링 모드 선택
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
CN105654553B (zh) 图形处理器和执行基于图块的图形管线的方法
JP4938850B2 (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
KR101552079B1 (ko) 그래픽스 프로세싱 유닛 상의 그래픽스 및 비그래픽스 어플리케이션들의 실행
US20070268289A1 (en) Graphics system with dynamic reposition of depth engine
JP6595101B2 (ja) 後期深度試験と保守的深度試験との間の動的切替え
US11373268B2 (en) Apparatus and method for graphics processing unit hybrid rendering
KR20170132758A (ko) 하이브리드 2d/3d 그래픽 렌더링
KR20170058113A (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
KR20170040698A (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
US11908079B2 (en) Variable rate tessellation
KR102645239B1 (ko) Gpu 캐시를 활용한 다운스케일링을 위한 simo 접근 방식으로의 gpu 커널 최적화
US11798218B2 (en) Methods and apparatus for pixel packing
US11257277B2 (en) Methods and apparatus to facilitate adaptive texture filtering
WO2024055234A1 (en) Oled anti-aging regional compensation
WO2024044936A1 (en) Composition for layer roi processing
KR20230101803A (ko) 구역 불연속성에 기반한 모션 추정
WO2024064590A1 (en) Generating tile visibility information concurrently by sharing gpu hardware
CN116438577A (zh) 用于选择渲染模式的方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant