KR20100103704A - 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원 - Google Patents

그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원 Download PDF

Info

Publication number
KR20100103704A
KR20100103704A KR1020107018304A KR20107018304A KR20100103704A KR 20100103704 A KR20100103704 A KR 20100103704A KR 1020107018304 A KR1020107018304 A KR 1020107018304A KR 20107018304 A KR20107018304 A KR 20107018304A KR 20100103704 A KR20100103704 A KR 20100103704A
Authority
KR
South Korea
Prior art keywords
buffer
screen surface
buffers
additional
read
Prior art date
Application number
KR1020107018304A
Other languages
English (en)
Other versions
KR101239029B1 (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 KR20100103704A publication Critical patent/KR20100103704A/ko
Application granted granted Critical
Publication of KR101239029B1 publication Critical patent/KR101239029B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • 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)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Abstract

일반적으로, 본 개시는 그래픽스 시스템 내의 오프-스크린 표면들에 멀티-버퍼 지원을 제공하는 다양한 기술들을 설명한다. 일 예시적인 디바이스는 하나 이상의 버퍼 영역들 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 그래픽스 처리에서 사용하는 오프-스크린 표면과 모두 연관되는 버퍼 공간 내에서 다수의 버퍼들을 할당하도록 구성된다. 기록 동작 동안 오프-스크린 표면과 관련된 정보를 제 1 버퍼에 기록하고 판독 동작 동안 오프-스크린 표면과 관련된 정보를 제 2 버퍼로부터 판독하도록, 하나 이상의 프로세서들은 버퍼들 내의 제 1 버퍼를 오프-스크린 표면을 위한 기록 버퍼로서 식별하고 더 나아가 버퍼들 내의 제 2 버퍼를 오프-스크린 표면을 위한 판독 버퍼로서 식별하도록 더 구성된다.

Description

그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원{MULTI-BUFFER SUPPORT FOR OFF-SCREEN SURFACES IN A GRAPHICS PROCESSING SYSTEM}
본 출원은, 전체 내용이 참고로써 본원에 포함된 2008년 1월 18일 출원된 미국 가출원 제 61/022,195 호의 이익을 주장한다.
본 출원은 그래픽스 처리 시스템에서의 표면의 디스플레이 및 렌더링에 관한 것이다.
비디오 게임, 그래픽스 프로그램, 컴퓨터 지원 설계 (CAD) 애플리케이션, 시뮬레이션 및 시각화 툴 및 이미징과 같은 다양한 애플리케이션에 대한 2차원 (2D) 및 3차원 (3D) 이미지를 렌더링하기 위해 그래픽스 프로세서들이 널리 사용된다. 이후, 프리젠테이션을 위한 렌더링된 출력을 디스플레이 디바이스를 통해 사용자에게 디스플레이하기 위해 디스플레이 프로세스들이 사용될 수도 있다.
이들 애플리케이션들에 사용된 그래픽스 프로세서, 디스플레이 프로세서, 또는 멀티-미디어 프로세서는 데이터의 병렬 및/또는 벡터 처리를 실시하도록 구성될 수도 있다. 또한, 데이터를 처리하기 위해, SIMD (Single Instruction, Multiple Data) 확장을 갖는 또는 갖지 않는 범용 CPU (중앙 처리 유닛) 가 구성될 수도 있다. SIMD 벡터 처리 시, 하나의 명령이 동일한 시각에 다수의 데이터 항목들에 대하여 동작한다.
OpenGL
Figure pct00001
(Open Graphics Library) 는, 2D 및 3D 그래픽스를 생성하는 애플리케이션을 기록하는 경우에 사용될 수도 있는 API (Application Programming Interface) 를 정의하는 표준 사양이다. (Java 같은 다른 언어는 그 자체의 표준 프로세스를 통해 OpenGL API로의 바인딩을 정의할 수도 있다.) 인터페이스는 단순한 프리미티브로부터 장면을 이끌어내는데 사용될 수 있는 다수의 함수 호를 포함한다. 그래픽스 프로세서, 멀티-미디어 프로세서, 및 심지어 범용 CPU는 이후 OpenGL 함수 호를 이용하여 기록되는 애플리케이션을 실행할 수 있다. OpenGL ES (Embedded Systems) 는 이동 무선 전화기, 디지털 멀티미디어 플레이어, 개인 디지털 보조기 (PDA), 또는 비디오 게임 콘솔과 같은 임베디드 디바이스를 위해 설계되는 Open GL의 변종이다. OpenVGTM (Open Vector Graphics) 는 하드웨어 가속화된 2D 벡터 그래픽스를 위해 주로 설계되는 다른 표준 API이다.
EGLTM(Embedded Graphics Library) 은 (OpenGL ES, OpenVG, 및 여러 다른 표준 멀티-미디어 API와 같은) 멀티-미디어 클라이언트 API와 언더라잉 플랫폼 멀티-미디어 설비 사이의 인터페이스이다. EGL은 그래픽스 콘텍스트 관리, 렌더링 표면 생성, 및 렌더링 동기화를 취급할 수 있고 고 성능의, 하드웨어 가속화된, 그리고 믹스드-모드의 2D 및 3D 렌더링을 가능하게 한다. 렌더링 표면 생성을 위해서, EGL은, 클라이언트 API가 끌어내어 공유할 수 있는 온-스크린 표면 (예를 들어, 윈도우 표면) 과 오프-스크린 표면 (예를 들어, p버퍼, 픽스맵) 둘 모두를 생성하기 위한 메커니즘을 제공한다. 온-스크린 표면은 통상적으로 활성 윈도우의 프레임 버퍼 메모리로 직접적으로 렌더링된다. 오프-스크린 표면은 통상적으로 나중의 사용을 위해 오프-스크린 버퍼로 렌더링된다. p버퍼는, 예를 들어 OpenGL 서버-사이드 (드라이버) 운영과 연관된 메모리 공간에 저장될 수도 있는 오프-스크린 메모리 버퍼이다. 픽스맵은, 예를 들어, 클라이언트 애플리케이션과 연관된 메모리 공간에 흔히 저장되는 오프-스크린 메모리 구역이다.
일반적으로, 본 개시는 p버퍼 및 픽스맵 표면과 같은 오프-스크린 표면을 위한 멀티-버퍼 지원을 제공하는 다양한 기술을 설명한다. 일 양태에서, 오프-스크린 표면들을 위한 멀티-버퍼 지원은, 하나의 버퍼 또는 개수가 알려지지 않은 버퍼들 보다는 명시된 개수의 버퍼들의 생성을 가능하게 하는 EGL 확장 내에서 구현될 수도 있다. 애플리케이션 개발자는 또한 오프-스크린 표면을 위한 버퍼가 현재 판독 동작인지 기록 (드로우) 동작인지를 지정하도록 EGL과 같은 API를 이용할 수도 있다. 일 양태에서, 다수의 버퍼들이 오프-스크린 비디오 표면들 및 프리-렌더링된 스프라이트 애니메이션에 제공될 수도 있다. 이후, 이들 다수의 버퍼링된 표면들 및 애니메이션들은, 렌더링 동작과 함께 또는 렌더링 동작과 별개로 발생할 수도 있는 표면 오버레이 기능을 통해 2D 표면 엘리먼트, 3D 표면 엘리먼트 및 비디오 표면 엘리먼트와 결합될 수 있다. 본 개시의 목적을 위해서, 2D 표면은 예를 들어 OpenVG와 같이 2D API에 의해 생성될 수도 있는 것이다. 3D 표면은 예를 들어 OpenGL과 같이 3D API에 의해 생성될 수도 있는 것이다. 비디오 표면은 예를 들어, H.264 또는 MPEG4 (Moving Picture Experts Group version 4) 와 같은 비디오 디코더에 의해 생성될 수도 있는 것이다.
일 양태에서, 방법은 그래픽스 처리에서 사용된 오프-스크린 표면과 모두 연관되는 다수의 버퍼들을 할당하는 단계, 및 오프-스크린 표면과 관련된 정보가 기록 동작 동안 제 1 버퍼로 기록되도록, 버퍼들 내의 제 1 버퍼를 오프-스크린 표면을 위한 기록 버퍼로서 식별하는 단계를 포함한다. 이 방법은 오프-스크린 표면과 관련된 정보가 판독 동작 동안 제 2 버퍼로부터 판독되도록, 버퍼들 내의 제 2 버퍼를 오프-스크린 표면을 위한 판독 버퍼로서 식별하는 단계를 더 포함한다.
다른 양태에서, 디바이스는 버퍼 공간과 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 그래픽스 처리에서 이용하는 오프-스크린 표면과 모두 연관되는 버퍼 영역들 내에서 다수의 버퍼들을 할당하도록 구성된다. 오프-스크린 표면과 관련된 정보를 기록 동작 동안 제 1 버퍼에 기록하고 오프-스크린 표면과 관련된 정보를 판독 동작 동안 제 2 버퍼로부터 판독하도록, 하나 이상의 프로세서들은 버퍼들 내의 제 1 버퍼를 오프 스크린 표면을 위한 기록 버퍼로서 식별하고 또한 버퍼들 내의 제 2 버퍼를 오프-스크린 표면을 위한 판독 버퍼로서 식별하도록 더 구성된다.
일 양태에서, 컴퓨터 판독가능 매체는 하나 이상의 프로세서들로 하여금 그래픽스 처리에서 사용된 오프-스크린 표면과 모두 연관되는 다수의 버퍼들을 할당하게 하고, 오프-스크린 표면과 관련된 정보가 기록 동작 동안 제 1 버퍼로 기록되도록, 버퍼들 내의 제 1 버퍼를 오프-스크린 표면을 위한 기록 버퍼로서 식별하게 하는 명령들을 포함한다. 컴퓨터 판독가능 매체는 오프-스크린 표면과 관련된 정보가 판독 동작 동안 제 2 버퍼로부터 판독되도록, 버퍼들 내의 제 2 버퍼를 오프-스크린 표면을 위한 판독 버퍼로서 식별하게 하는 추가적인 명령들을 포함한다.
본 개시의 하나 이상의 양태의 세부사항은 첨부된 도면과 아래의 설명에 제시된다. 다른 특징, 목적 및 이점은 상세한 설명과 도면으로부터, 그리고 청구범위로부터 명확해질 것이다.
도 1a는 본 개시의 일 양태에 따른, 오프-스크린 표면들을 위한 멀티-버퍼 지원을 구현하는데 사용될 수도 있는 디바이스를 도시하는 블록도이다.
도 1b는 본 개시의 일 양태에 따른, 표면 생성을 위해 멀티-포맷 지원을 구현하는데 사용될 수도 있는 디바이스를 도시하는 블록도이다.
도 2a는 본 개시의 일 양태에 따른, 오프-스크린 표면을 위해 멀티-버퍼 지원을 구현하는데 사용될 수도 있는 디바이스를 구현하는 블록도이다.
도 2b는 본 개시의 일 양태에 따른, 도 2a에 도시된 API 라이브러리의 추가적인 세부사항을 도시하는 블록도이다.
도 2c는 본 개시의 일 양태에 따른, 도 2a에 도시된 드라이버의 추가적인 세부사항을 도시하는 블록도이다.
도 2d는 본 개시의 다른 양태에 따른, 오프-스크린 표면에 대한 멀티-버퍼 지원을 구현하는데 사용될 수도 있는 디바이스를 도시하는 블록도이다.
도 3a는 본 개시의 일 양태에 따른, 각각 다수의 버퍼들과 연관되는 다수의 오프-스크린 표면들의 예를 도시하는 블록도이다.
도 3b는 일 양태에서, 디스플레이 디바이스 상에 디스플레이될 수도 있는 도 3a에 도시된 오프-스크린 표면들과 연관된 오버라이드 표면 데이터의 예를 도시하는 블록도이다.
도 3c는 본 개시의 일 양태에 따른, 각각 상이하게 식별된 판독 및 기록 버퍼들과 연관되는 다수의 오프-스크린 표면들의 다른 예를 도시하는 블록도이다.
도 3d는 일 양태에서, 디스플레이 디바이스 상에 디스플레이될 수도 있는 도 3c에 도시된 오프-스크린 표면들과 연관된 오버라이드 표면 데이터의 예를 도시하는 블록도이다.
도 4는 본 개시의 일 양태에 따른, 도 1a, 도 1b, 도 2a 또는 도 2d의 그래픽스 처리 시스템에 도시된 하나 이상의 제어 프로세서, 그래픽스 프로세서, 및/또는 디스플레이 프로세서에 의해 수행될 수도 있는 방법의 흐름도이다.
도 5는 본 개시의 일 양태에 따른, 도 1a, 도 1b, 도 2a, 또는 도 2d의 그래픽스 처리 시스템에 도시된 하나 이상의 제어 프로세서, 그래픽스 프로세서, 및/또는 디스플레이 프로세서에 의해 수행될 수도 있는 다른 방법의 흐름도이다.
도 1a는 본 개시의 일 양태에 따라서, 오프-스크린 표면을 위한 멀티-버퍼 지원을 구현하는데 사용될 수도 있는 디바이스 (100) 를 도시하는 블록도이다. 디바이스 (100) 는 독립형 디바이스일 수도 있고 더 큰 시스템의 일부일 수도 있다. 예를 들어, 디바이스 (100) 는 (무선 이동 핸드셋과 같은) 무선 통신 디바이스를 포함할 수도 있고, 또는 디지털 카메라, 디지털 멀티미디어 플레이어, 개인 디지털 보조기 (PDA), 비디오 게임 콘솔, 또는 다른 비디오 디바이스의 일부일 수도 있다. 디바이스 (100) 는 또한 (울트라 모바일 개인 컴퓨터와 같은) 개인 컴퓨터 또는 랩톱 디바이스를 포함할 수도 있다. 디바이스 (100) 는 또한, 상술된 디바이스들 일부 또는 전부에 사용될 수도 있는 하나 이상의 집적 회로, 또는 칩에 포함될 수도 있다.
디바이스 (100) 는 그래픽스 애플리케이션, 비디오 애플리케이션 또는 다른 멀티-미디어 애플리케이션과 같은 다양한 상이한 애플리케이션들을 실행할 수 있다. 예를 들어, 디바이스 (100) 는 그래픽스 애플리케이션, 비디오 게임 애플리케이션, 비디오 애플리케이션, 그래픽스 및 비디오를 결합한 애플리케이션, 디지털 카메라 애플리케이션, 인스턴트 메시징 애플리케이션, 이동 애플리케이션, 비디오 텔레컨퍼런싱 애플리케이션, 비디오 브로드캐스팅 애플리케이션, 또는 비디오 스트리밍 애플리케이션에 사용될 수도 있다.
디바이스 (100) 는 다양한 상이한 데이터 유형 및 포맷을 처리할 수도 있다. 예를 들어, 디바이스 (100) 는 아래에 보다 상세하게 설명되는 바와 같이 정지 영상 데이터, 동영상 (비디오) 데이터 또는 다른 멀티-미디어 데이터를 처리할 수도 있다. 이미지 데이터는 컴퓨터 생성된 그래픽스 데이터를 포함할 수도 있다. 디바이스 (100) 는 그래픽스 처리 시스템 (102), 메모리 (104) 및 디스플레이 디바이스 (106) 를 포함한다. 프로그래머블 프로세서 (108, 110 및 114) 는 그래픽스 처리 시스템 (102) 내에 논리적으로 포함된다. 프로그래머블 프로세서 (108) 는 제어, 또는 범용, 프로세서일 수도 있다. 프로그래머블 프로세서 (110) 는 그래픽스 프로세서일 수도 있고, 프로그래머블 프로세서 (114) 는 디스플레이 프로세서일 수도 있다. 제어 프로세서 (108) 는 그래픽스 프로세서 (110) 및 디스플레이 프로세서 (114) 둘 모두를 제어할 수 있을 수도 있다. 프로세서들 (108, 110 및 114) 은 스칼라 또는 벡터 프로세서들일 수도 있다. 일 양태에서, 디바이스 (100) 는 다른 형태의 멀티-미디어 프로세서들을 포함할 수도 있다.
도 1a의 예에서, 디바이스 (100) 의 그래픽스 처리 시스템 (102) 은 메모리 (104) 및 디스플레이 디바이스 둘 모두에 커플링된다. 메모리 (104) 는, 명령들 및/또는 데이터를 저장할 수 있는 임의의 영구적인 또는 휘발성 메모리를 포함할 수도 있다. 디스플레이 디바이스 (106) 는 3D 이미지 데이터, 2D 이미지 데이터, 또는 LCD (액정 디스플레이) 또는 텔레비전 (TV) 디스플레이 디바이스와 같은 디스플레이 목적을 위한 비디오 데이터를 디스플레이할 수 있는 임의의 디바이스일 수도 있다.
그래픽스 프로세서 (110) 는 컴퓨터에 저장된 그래픽스를 렌더링하고, 조작하고, 디스플레이하는데 사용된 전용 그래픽스 렌더링 디바이스일 수도 있다. 그래픽스 프로세서 (110) 는 다양한 복합 그래픽스-관련 알고리즘을 구현할 수도 있다. 예를 들어, 복합 알고리즘은 2차원 또는 3차원의 컴퓨터에 저장된 그래픽의 표현에 대응할 수도 있다. 그래픽스 프로세서 (110) 는 예를 들어 복합의 3차원 이미지를 디스플레이 디바이스 (106) 와 같은 디스플레이 상에 생성하기 위해 점, 선 및 삼각형 또는 다른 다각형 표면들을 형성하는 것과 같은 소위 다수의 "원시적" 그래픽스 동작을 구현할 수도 있다.
본 개시에서, 용어 "렌더"는 일반적으로 3D 및/또는 2D 렌더링을 지칭할 수도 있다. 예를 들어, 그래픽스 프로세서 (110) 는 3D 그래픽스 프레임들을 렌더링하기 위해 OpenGL 명령들을 사용할 수도 있고, 또는 2D 그래픽스 표면들을 렌더링하기 위해 OpenVG 명령들을 사용할 수도 있다. 그러나, 그래픽스를 렌더링하기 위한 임의의 표준, 방법, 또는 테크닉은 그래픽스 프로세서 (110) 에 의해 사용될 수도 있다.
그래픽스 프로세서 (110) 는 메모리 (104) 에 저장되는 명령들을 실행할 수도 있다. 메모리 (104) 는 (그래픽스 또는 비디오 애플리케이션과 같은) 애플리케이션을 위한 애플리케이션 명령들 (118), API 라이브러리들 (120), 및 드라이버들 (122) 을 저장할 수 있다. 애플리케이션 명령들 (118) 은 실행을 위해 메모리 (104) 로부터 그래픽스 처리 시스템 (102) 으로 로딩될 수도 있다. 예를 들어, 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및 디스플레이 프로세서 (114) 는 하나 이상의 명령들 (118) 을 실행할 수도 있다.
제어 프로세서 (108), 그래픽스 프로세서 (110), 및/또는 디스플레이 프로세서 (114) 는 또한 애플리케이션 명령들 (118) 의 실행 동안 API 라이브러리들 (120) 또는 드라이버들 (122) 내에 포함된 명령들을 로딩하고 실행할 수도 있다. 명령들 (118) 은 API 라이브러리들 (120) 또는 드라이버들 (122) 내의 일정한 기능을 참조하거나 다르게는 호출할 수도 있다. 따라서, 그래픽스 처리 시스템 (102) 이 명령들 (118) 을 실행하는 경우, 아래에 더욱 상세하게 설명되는 바와 같이, API 라이브러리들 (120) 및/또는 드라이버 (122) 내의 식별된 명령들을 또한 실행할 수도 있다. 드라이버들 (122) 은 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및 디스플레이 프로세서 (114) 에 특유한 기능성을 포함할 수도 있다. 일 양태에서, 애플리케이션 명령들 (118), API 라이브러리들 (120), 및/또는 드라이버들 (122) 은, 비휘발성 데이터 저장 매체와 같은 스토리지 디바이스로부터 메모리 (104) 로 로딩될 수도 있다. 일 양태에서, 애플리케이션 명령들 (118), API 라이브러리들 (120), 및/또는 드라이버들 (122) 은 무선으로 메모리 (104) 에 동적으로 다운로딩되는 하나 이상의 다운로딩가능한 모듈들을 포함할 수도 있다.
그래픽스 프로세서 (110) 가 온-스크린 표면 또는 오프-스크린 표면과 같은 그래픽스 표면을 렌더링하는 경우, 버퍼 영역 (112) 의 이러한 렌더링 데이터를 저장할 수도 있다. 버퍼 영역 (112) 은, 동기식 동적 랜덤 액세스 메모리 (SDRAM), 임베디드 동적 랜덤 액세스 (eDRAM), 또는 정적 랜덤 액세스 메모리 (SRAM) 와 같이, 데이터를 저장할 수 있는 임의의 영구적 또는 휘발성 메모리와 같은 데이터 스토리지 디바이스일 수도 있다. 일 양태에서, 버퍼 영역 (112) 은 도 1b에 도시된 바와 같이 메모리 (104) 내에 직접적으로 포함될 수도 있다. 렌더링된 각각의 그래픽스 표면은 그 사이즈 및 형상으로 정의된다. 포스트-렌더 스케일링 및 회전 기능이 디스플레이 프로세서 (114) 에 의해, 렌더링된 표면에 적용될 수도 있기 때문에, 사이즈 및 형상은 사용될 디스플레이 디바이스 (106) 의 실제 물리적 사이즈로 한정되지 않는다.
버퍼 영역 (112) 은 복수의 오프-스크린 표면 버퍼 (116A-116N; 총괄하여 116) 를 포함할 수도 있다. 각각의 오프-스크린 표면 버퍼 (116A-116N) 는 특정 오프-스크린 표면과 연관된다. 예를 들어, 모든 오프-스크린 표면 버퍼 (116A-116N) 는 실행 동안 애플리케이션 명령들 (118) 에 의해 생성되었던 하나의 특정 오프-스크린 표면과 연관될 수도 있다. 각각의 버퍼 (116A-116N) 는 오프-스크린 표면에 대한 정보를 보유할 수 있고, 판독 버퍼, 기록 버퍼 또는 둘 모두를 구성할 수도 있다.
오프-스크린 표면들은 다양한 맥락에서 그리고 다양한 목적으로 사용될 수도 있다. 예를 들어, 3D 제어를 구비한 비디오 플레이어를 디스플레이하기 위해, 애니메이티드 커서를 디스플레이하기 위해, 또는 시스템 상태 인디케이터 (예를 들어, 무선 신호 강도 측정기) 를 디스플레이하기 위해, 하나 이상의 오프-스크린 표면들은 윈도우 표면과 같은 온-스크린 표면과 결합될 수도 있다.
일 양태에서, 표면을 위한 렌더링된 출력 데이터 (렌더링된 표면) 가 그래픽스 프로세서 (110) 에 의해 기록 버퍼에 기록된다. 이와 같이, 그래픽스 프로세서 (110) 가 오프-스크린 표면을 렌더링한 후, 표면에 대한 렌더링된 출력 데이터를, 기록 버퍼들로 식별되는 하나 이상의 버퍼들 (116A-116N) 에 기록한다. 이 양태에서, 디스플레이 프로세서 (114) 및 그래픽스 프로세서 (110) 는 판독 버퍼로 식별되는 하나 이상의 버퍼들 (116A-116N) 로부터 렌더링된 출력 데이터를 판독할 수 있다. 어떤 경우, 디스플레이 프로세서 또는 그래픽스 프로세서 (110) 는 또한 파일로부터 또는 공중을 통해 데이터를 판독할 수 있다.
예를 들어, 디스플레이 프로세서 (114) 는 디스플레이 디바이스 (106) 상에 디스플레이하기 위한 이러한 데이터를 준비하기 위해 버퍼들 (116A-116N) 중 하나로부터 렌더링된 출력 데이터를 판독할 수도 있다. 디스플레이 프로세서 (114) 는 렌더링된 그래픽스 프레임 상에서 그리고 디스플레이 디바이스 (106) 를 구동하기 위해 포스트-렌더링 기능을 수행할 수도 있는 프로세서이다. 포스트 렌더링 기능은 스케일링, 회전, 블렌딩, 컬러-키잉, 및/또는 오버레이를 포함할 수도 있다. 예를 들어, 디스플레이 프로세서 (114) 는, 상수 알파 블렌딩 (constant alpha blending) 을 갖는 컬러 키잉, 상수 알파 블렌딩을 갖지 않는 컬러 키잉, 전 표면 (full surface) 상수 알파 블렌딩, 또는 전 표면 픽셀-단위의 알파 블렌딩과 같은 여러 블렌딩 모드들 중 하나를 이용함으로써 표면들을 결합할 수도 있다. 그래픽스 프로세서 (110) 는 또한 텍스쳐 소스로서 하나 이상의 버퍼들 (116A-116N) 로부터, 렌더링된 출력 데이터를 판독할 수도 있다. 몇몇 경우에, 제어 프로세서 (108) 는 또한 하나 이상의 버퍼들 (116A-116N) 으로부터, 렌더링된 출력 데이터를 판독할 수도 있다.
일 양태에서, 그래픽스 프로세서 (110) 는 그래픽스 표면을 렌더링하고 기록 버퍼로 식별되는 버퍼들 (116A-116N) 중 하나에 렌더링된 그래픽스 데이터를 저장한다. 렌더링이 완료되는 경우, 디스플레이 프로세서 (114) 가 렌더링된 그래픽스 데이터를 검색할 수도 있도록 버퍼는 판독 버퍼로 재식별될 수도 있다. 이후, 그래픽스 프로세서 (110) 는 기록 버퍼로 식별되는 버퍼 (116) 중 다른 버퍼에 추가적인 데이터를 렌더링할 수도 있다. 특정 오프-스크린 표면과 연관되는 버퍼들 (116) 내에 적어도 2개의 버퍼들을 구비함으로써, 디스플레이 프로세서 (114) 가 일 버퍼로부터 판독하는 동안 그래픽스 프로세서 (110) 는 다른 버퍼로 렌더링할 수도 있다. 주어진 버퍼 (116A-116N) 가 판독 버퍼 또는 기록 버퍼인지 여부를 명시하기 위해 식별자 또는 포인터가 사용될 수도 있다. 몇몇 경우들에서, 상기 언급된 바와 같이, 임의의 버퍼들 (116A-116N) 이 또한 판독/기록 버퍼로 식별될 수도 있다.
디스플레이 프로세서 (114) 는 다수의 그래픽스 표면들로부터의 버퍼들 (116) 로부터, 렌더링된 출력 데이터를 판독할 수 있다. 이후, 디스플레이 프로세서 (114) 는, 디스플레이 디바이스 (106) 상에 디스플레이될 프레임 버퍼 (160) 의 그래픽스 프레임 상으로 렌더링된 그래픽스 표면들을 오버레이할 수 있다. 프레임 버퍼 (160) 는 그래픽스 처리 시스템 (102) 내의 전용 메모리일 수도 있다. 일 양태에서, 프레임 버퍼 (160) 는, 그러나, 도 1b에 도시된 바와 같이 메모리 (104) 내에 직접적으로 시스템 RAM (Random Access Memory) 을 포함할 수도 있다.
일 양태에서, 그래픽스 프레임은 윈도우 표면과 같은 적어도 하나의 온-스크린 표면을 포함한다. 각각의 그래픽스 표면이 오버레이되는 레벨은 그래픽스 표면에 대하여 정의된 표면 레벨에 의해 결정된다. 이 표면 레벨은 애플리케이션 명령들 (118) 과 같은 사용자 프로그램에 의해 정의될 수도 있다. 표면 레벨은 렌더링된 표면과 연관된 파라미터로서 저장될 수도 있다.
표면 레벨은 임의의 수치로 정의될 수도 있으며, 그 수가 더 클수록, 표면은 디스플레이 그래픽스 프레임 상에서 더 높게 디스플레이될 것이다. 즉, 2개의 표면들의 일부들이 오버랩되는 상황에서, 더 높은 표면 레벨을 갖는 표면의 오버랩 부분들이 더 낮은 표면 레벨을 갖는 임의의 표면의 오버랩 부분들 대신 디스플레이될 것이다. 단순한 예로서, 데스크톱 컴퓨터에 사용된 배경 이미지는 그 데스크톱 상의 아이콘들 보다 더 낮은 표면 레벨을 갖는다. 어떤 경우, 표면 레벨이 투명 정보와 결합되어 오버랩되는 2개의 표면들이 함께 섞일 수도 있다. 이러한 경우, 컬러 키잉이 사용될 수도 있다. 제 1 표면 내의 픽셀이 키 컬러와 일치하지 않는다면, 알파 (투명) 블렌딩이 가능하지 않은 경우 제 1 표면이 출력 픽셀로서 선택될 수 있다. 알파 블렌딩이 가능하다면, 제 1 및 제 2 표면의 픽셀들은 통상적으로 블렌딩될 수도 있다. 제 1 표면의 픽셀이 키 컬러와 일치하지 않는다면, 제 2 표면의 픽셀이 선택되고 알파 블렌딩이 실시되지 않는다.
일 양태에서, 제어 프로세서 (108) 는 캘리포니아주 샌디에고의 Qualcomm, Inc.에 의해 설계된 Mobile Station Modems에 임베딩된 ARM11 프로세서와 같은 ARM (Advanced RISC (reduced instruction set computer) Machine) 프로세서일 수도 있다. 일 양태에서, 디스플레이 프로세서 (114) 는 Qualcomm, Inc.에 의해 설계된 Mobile Station Modems에 또한 임베딩된 이동 디스플레이 프로세서 (MDP) 일 수도 있다. 임의의 프로세스들 (108, 110, 및 114) 이 버퍼 영역 (112) 내에서 버퍼들 (116A-116N) 에 액세싱할 수 있다. 일 양태에서, 각각의 프로세서 (108, 110, 및 114) 는 렌더링 능력을 제공하고 그래픽스 표면들에 대한 렌더링된 출력 데이터를 버퍼들 (116A-116N) 에 기록할 수 있다.
도 2a는 는 본 개시의 일 양태에 따라서 오프-스크린 표면들을 위한 멀티-버퍼 지원을 구현하도록 사용될 수도 있는 디바이스 (200) 를 도시하는 블록도이다. 이 양태에서, 도 2a에 도시된 디바이스 (200) 는 도 1a에 도시된 디바이스 (100) 의 일 예시이다. 디바이스 (200) 는 그래픽스 처리 시스템 (202), 메모리 (204) 및 디스플레이 디바이스 (206) 를 포함한다. 도 1a에 도시된 메모리 (104) 와 유사하게, 도 2의 메모리 (204) 는 애플리케이션 명령들 (218), API 라이브러리들 (220), 및 드라이버들 (222) 에 대한 스토리지 공간을 포함한다. 도 1a에 도시된 그래픽스 처리 시스템 (102) 과 유사하게, 도 2의 그래픽스 처리 시스템 (202) 은 프로세서 (208), 그래픽스 프로세서 (210), 디스플레이 프로세서 (214), 버퍼 영역 (212) 및 프레임 버퍼 (260) 를 포함한다. 프로세서 (208) 는 제어, 또는 범용, 프로세서일 수도 있다. 일 양태에서, 프로세서 (208) 는 시스템 CPU (중앙 처리 유닛) 를 포함할 수도 있다.
일 양태에서, 버퍼 영역 (212) 은 도 2d에 도시된 바와 같이 메모리 (204) 내에 포함될 수도 있다. 프레임 버퍼 (260) 는 그래픽스 처리 시스템 (202) 내의 전용 메모리일 수도 있다. 일 양태에서, 프레임 버퍼 (260) 는, 그러나, 도 2d에 도시된 바와 같이 메모리 (204) 내에 직접적으로 시스템 RAM (랜덤 액세스 메모리) 을 포함할 수도 있다.
도 2a의 예에서, 버퍼 영역 (212) 은 p버퍼 표면들을 위해 사용된 복수의 버퍼들 (216A-216N; 총괄하여 216) 및 픽스맵 표면들을 위해 사용된 다른 복수의 버퍼들 (217A-217N; 총괄하여 217) 을 포함한다. 버퍼들 (216A-216N) 은 오프-스크린 p버퍼 표면들과 연관되고, 버퍼들 (217A-217N) 은 오프-스크린 픽스맵 표면과 연관된다. 미리 언급된 바와 같이, p버퍼들 및 픽스맵들은 오프-스크린 표면들의 예이다. 이와 같이, 개개의 오프-스크린 p버퍼 표면이 다수의 버퍼들 (216A-216N) 과 연관되어, p버퍼 표면에 대한 렌더링 데이터가 버퍼들 (216A-216N) 로부터 저장되고 처리될 수도 있다. 개개의 오프-스크린 픽스맵 표면은 다수의 버퍼들 (217A-217N) 과 연관된다. 상기 언급된 바와 같이, p버퍼들은, 예를 들어, OpenGL 서버-사이드 (드라이버 내부) 동작과 연관된 메모리 공간에 저장될 수도 있는 오프-스크린 메모리 버퍼들이다. 픽스맵은, 예를 들어, 클라이언트 애플리케이션과 연관된 메모리 공간에 흔히 저장될 수도 있는 오프-스크린 메모리 영역이다. 일 양태에서, 버퍼들 (216) 및 버퍼들 (217) 은 완전히 구별되는 버퍼 공간들일 수도 있다.
각각의 개개의 버퍼 (216A-216N) 는 판독 버퍼, 기록 버퍼, 또는 둘 모두로 식별될 수도 있다. 유사하게, 각각의 개개의 버퍼 (217A-217N) 는 판독 버퍼, 기록 버퍼 또는 둘 모두로서 식별될 수도 있다. 일 양태에서, 제어 프로세서 (208), 그래픽스 프로세서 (210), 및/또는 디스플레이 프로세서 (214) 는 버퍼 영역들 (212) 내에서 버퍼들 (216A-216N) 및 버퍼들 (217A-217N) 을 할당하고, 이들 버퍼들 중 어느 버퍼가 판독 퍼버, 기록 버퍼, 또는 둘 모두인지 식별 가능할 수도 있다.
일 양태에서, 그래픽스 프로세서 (210) 는 오프-스크린 p버퍼 표면을 렌더링하고 이 렌더링된 표면 데이터를 버퍼 (216A) 와 같은 기록 버퍼로서 식별되었던 버퍼에 기록할 수도 있다. 렌더링이 완료된 후, 그래픽스 프로세서 (210) 는 버퍼 (216A) 를 판독 버퍼로서 식별하고, 버퍼 (216N) 와 같은 별개의 버퍼를 기록 버퍼로서 식별할 수도 있다. 이후, 그래픽스 프로세서 (210) 는 새로운, 또는 업데이트된, 렌더링된 표면 데이터를 버퍼 (216N) 에 기록할 수도 있는 한편 그래픽스 프로세서 (210) 또는 디스플레이 프로세서 (214) 는 이전에 렌더링된 표면 데이터를 버퍼 (216A) 로부터 판독한다. 그래픽스 프로세서 (210) 는 추가적인 그래픽스 처리를 위해 이전에 렌더링된 표면 데이터를 버퍼 (216A) 로부터 텍스쳐 소스로서 판독할 수도 있고, 또는 디스플레이 프로세서 (214) 는 궁극적으로 디스플레이 디바이스 (206) 상에 디스플레이하기 위해 버퍼 (216A) 로부터, 렌더링된 표면 데이터를 판독할 수도 있다. 하나의 오프-스크린 p버퍼 표면을 위해 다수의 버퍼들 (216A-216N) 을 이용함으로써, 판독 및 기록 동작들은 오프-스크린 p버퍼 표면들에 대하여 병렬로 실시될 수 있다.
비슷하게, 일 양태에서, 그래픽스 프로세서 (210) 또는 제어 프로세서 (208) 는 오프-스크린 픽스맵 표면을 렌더링하고 이 렌더링된 표면 데이터를 버퍼 (217A) 와 같은 기록 버퍼로서 식별되었던 버퍼에 기록할 수도 있다. 렌더링이 완료된 후, 그래픽스 프로세서 (210) 또는 제어 프로세서 (208) 는 버퍼 (217A) 를 판독 버퍼로서 재식별하고, 버퍼 (217N) 와 같은 별개의 버퍼를 기록 버퍼로서 식별할 수도 있다. 이후, 그래픽스 프로세서 (210) 또는 제어 프로세서 (208) 는 새로운, 또는 업데이트된, 렌더링된 표면 데이터를 버퍼 (217N) 에 기록할 수도 있는 한편 그래픽스 프로세서 (210) 또는 제어 프로세서 (208) 또는 디스플레이 프로세서 (214) 는 이전에 렌더링된 표면 데이터를 버퍼 (217A) 로부터 판독한다. 하나의 오프-스크린 픽스맵 표면을 위해 다수의 버퍼들 (217A-217N) 을 이용함으로써, 판독 및 기록 동작들은 병렬로 실시될 수 있다. 픽스맵 표면들은 종종 미리-렌더링된 콘텐트를 포함할 가능성이 크고 종종 파일로부터 판독될 수도 있다.
도 2b는 본 개시의 일 양태에 따라서 도 2a에 도시된 API 라이브러리들 (220) 의 추가적인 세부사항을 도시하는 블록도이다. 도 2a에 관하여 미리 설명된 바와 같이, API 라이브러리들 (220) 은 메모리 (204) 에 저장되어 그래픽스 프로세서 (210), 제어 프로세서 (208), 및/또는 디스플레이 프로세서 (214) 에 의한 애플리케이션 실행 동안 애플리케이션 명령들 (218) 에 의해 링크되거나, 참조될 수도 있다. 도 2c는 일 양태에 따라서 도 2a에 도시된 드라이버들 (222) 의 추가적인 세부사항을 도시하는 블록도이다. 드라이버들 (222) 은 메모리 (204) 에 저장되어 그래픽스 프로세서 (210), 제어 프로세서 (208), 및/또는 디스플레이 프로세서 (214) 에 의한 애플리케이션 실행 동안 애플리케이션 명령들 (218) 및/또는 API 라이브러리들 (220) 에 의해 링크되거나, 참조될 수도 있다.
도 2b에서, API 라이브러리들 (220) 은 OpenGL ES API (230), OpenVG API (232), 및 EGL API (234) 를 포함한다. 도 2c에 도시된 드라이버 (222) 는 OpenGL ES 드라이버들 (240), OpenVG 드라이버들 (242), 및 EGL 드라이버들 (244) 을 포함한다. OpenGL ES API (230) 는, 2D 및 3D 그래픽스 기능들과 같이 OpenGL ES에 의해 지원된 기능들을 제공하기 위해 그래픽스 처리 시스템 (202) 에 의해 애플리케이션 실행 동안 애플리케이션 명령들 (218) 에 의해 호출된 API이다. OpenGL ES 드라이버들 (240) 은 그래픽스 처리 시스템 (202) 의 OpenGL ES 기능들의 저-레벨 드라이버 지원을 위해 애플리케이션 실행 동안 애플리케이션 명령들 (218) 및/또는 OpenGL ES API (230) 에 의해 호출된다.
OpenVG API (232) 는, 2D 벡터 그래픽스 기능과 같이 OpenVG에 의해 지원된 기능을 제공하기 위해 애플리케이션 실행 동안 애플리케이션 명령들 (218) 에 의해 호출된 API이다. OpenVG 드라이버들 (242) 은 그래픽스 처리 시스템 (202) 의 OpenVG 기능의 저-레벨 드라이버 지원을 위해 애플리케이션 실행 동안 애플리케이션 명령들 (218) 및/또는 OpenVG API (232) 에 의해 호출된다.
EGL API (234)(도 2b) 및 EGL 드라이버 (244)(도 2c) 는 그래픽스 처리 시스템 (202) 의 EGL 기능을 위한 지원을 제공한다. 일 양태에에서, EGL 확장은 EGL API (234) 및 EGL 드라이버 (244) 내에 포함될 수도 있다. 도 2b 내지 도 2c의 예에서, 표면 오버레이 및 오프-스크린 멀티-버퍼 기능성을 위한 EGL 확장이 제공된다. 이와 같이, EGL 표면 오버레이 확장을 위해, 표면 오버레이 API (236) 는 EGL API (234) 내에 포함되고 표면 오버레이 드라이버 (246) 는 EGL 드라이버 (244) 내에 포함된다. 마찬가지로, EGL 오프-스크린 멀티-버퍼 확장에 있어서, 오프-스크린 멀티-버퍼 API (238) 는 EGL API (234) 내에 포함되고 오프-스크린 멀티-버퍼 드라이버 (248) 는 EGL 드라이버 (244) 내에 포함된다.
EGL 표면 오버레이 확장은 디스플레이 디바이스 (206) 상에 디스플레이될 (2D 표면, 3D 표면, 및/또는 비디오 표면과 같은) 다수의 그래픽스 표면들의 오버레이를 위한 표면 오버레이 스택을 제공한다. 온-스크린과 오프-스크린 표면들 둘 모두를 포함할 수도 있는 그래픽스 표면들은 각각, 스택 내에서, 연관된 표면 레벨을 갖는다. 이것에 의해, 스택 내의 표면들의 오버레이 순서에 따라서 표면들의 오버레이가 달성된다. 표면 오버레이들의 예는 도 3B 및 도 3d에 도시되고 아래에 더욱 상세하게 논의할 것이다. 일 양태에서, 오버레이 스택은 윈도우 표면과 같이 적어도 하나의 온-스크린 표면을 포함한다.
EGL 오프-스크린 멀티-버퍼 확장은 p버퍼 표면 또는 픽스맵 표면과 같은 그래픽스 처리 시스템 (202) 에 의해 처리된 각각의 오프-스크린 표면과 연관되는 정의된 수의 버퍼들을 위한 지원을 제공한다. 예를 들어, 도 2a에 도시된 바와 같이, 다수의 버퍼들 (216A-216N) 이 할당되어 p버퍼 표면과 연관될 수도 있고, 다수의 버퍼들 (217A-217N) 이 할당되어 하나의 픽스맥 표면과 연관될 수도 있다. 이외에도, EGL 오프-스크린 멀티-버퍼 확장은 도 2a를 참고로하여 미리 설명된 바와 같이, 각각의 버퍼가 판독 버퍼, 기록 버퍼, 또는 둘 모두로서 식별되게 한다.
도 3a는 일 양태에 따라서 각각의 오프-스크린 표면이 다수의 버퍼들과 연관되는 다수의 오프-스크린 표면들 (300A-300N) 의 예를 도시하는 블록도이다. 도 3a의 예에서, 각각의 오프-스크린 표면 (300A-300N) 은, 도 1a 또는 도 1b에 도시된 바와 같이 그래픽스 처리 시스템 (102) 에 의해 처리되어 궁극적으로 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있는 표면이다. 이들 표면들 (300A-300N) 은 또한 도 2a 또는 도 2d에 도시된 그래픽스 처리 시스템 (202) 에 의해 처리될 수도 있다. 그러나, 도 3a 내지 도 3d의 다음 설명에서 오로지 설명의 목적을 위해서, 표면들 (300A-300N) 은 그래픽스 처리 시스템 (102) 에 의해 처리된다고 가정할 것이다.
각각의 오프-스크린 표면 (300N-300A) 은 2D 표면, 3D 표면, 또는 비디오 표면을 포함할 수도 있다. 프레임 버퍼 (160) 내에 캡쳐되고 디스플레이 디바이스 (106) 상에 디스플레이된 데이터의 각각의 프레임 내에서, 오프-스크린 표면 (300A-300N) 은 오버레이 순서에 따라서 오버레이될 수도 있다. 이것의 예는 도 3b에 도시된다. 이러한 방식으로, 2D 표면, 3D 표면, 및/또는 비디오 표면들은 표면 오버레이 스택에 오버레이되고 디스플레이 디바이스 (106) 상에 함께 디스플레이될 수도 있다. 예를 들어, 비디오 게임 애플리케이션들에서, 특정 게임-플레잉 표면들과 관련된 표면들이 다른 표면들과 오버레이될 수도 있다. 몇몇 경우들에서, 정지 영상 데이터가 이러한 애플리케이션의 오버레이 스택 내 비디오 데이터와 오버레이될 수도 있으며, 정지 영상 데이터는 배경 그래픽스를 포함할 수도 있고 비디오 데이터는 움직이는 것, 스코어 등에 대한 데이터를 포함할 수도 있다. 일 양태에서, 오버레이 스택은 윈도우 표면과 같은 적어도 하나의 온-스크린 표면을 포함한다.
오프-스크린 표면 (300A) 은 일 양태에 따라서 그래픽스 처리 시스템 (102) 의 버퍼 영역 (112) 내에 할당되었던 버퍼들 (316) 과 연관된다. 버퍼들 (316) 은 복수의 오프-스크린 표면 버퍼들 (316A-316N) 을 포함한다. 각각의 버퍼 (316A-316N) 는 판독 버퍼, 기록 버퍼, 또는 둘 모두로서 식별될 수도 있으며, 각각의 버퍼 (316A-316N) 는 오프-스크린 표면 (300A) 과 연관되는, 렌더링 데이터와 같은 데이터를 홀딩할 수 있다.
도 3a의 예에서, 버퍼 (316a) 는 판독 버퍼로서 식별되며, 버퍼 (316N) 는 기록 버퍼로서 식별된다. 이와 같이, 데이터가 버퍼 (316A) 로부터 판독될 수도 있는 한편 다른 데이터가 동시에 버퍼 (316N) 에 기록된다. 예를 들어, 그래픽스 프로세서 (110) 는 표면 (300A) 에 대해 새로운 또는 업데이트된 표면 데이터를 버퍼 (316N) 로 렌더링하는 프로세스에 존재할 수도 있다. 이것이 발생하는 동안, 그래픽스 프로세서 (110), 디스플레이 프로세서 (114), 또는 제어 프로세서 (108) 는 표면 (300A) 에 대하여 이전에 렌더링된 표면 데이터를 버퍼 (316A) 로부터 판독할 수도 있다. 판독 및 기록 동작들의 형태들이 병렬로 발생할 수도 있기 때문에, 오프-스크린 표면 (300A) 에 대한 렌더링 및 디스플레이 프로세스들이 그래픽스 처리 시스템 (102) 내에서 동시에 발생할 수 있다.
오프-스크린 표면 (300N) 은, 일 양태에 따라서 그래픽스 처리 시스템 (102) 의 버퍼 영역 (112) 내에 할당되었던 버퍼들 (317) 과 연관된다. 버퍼들 (317) 은 복수의 오프-스크린 표면 버퍼들 (317A-317N) 을 포함한다. 각각의 버퍼 (317A-317N) 는 판독 버퍼, 기록 버퍼, 또는 둘 모두로서 식별될 수도 있고, 각각의 버퍼 (317A-317N) 는 오프-스크린 표면 (300N) 과 연관되는, 렌더링 데이터와 같은 데이터를 홀딩할 수 있다.
도 3a의 예에서, 버퍼 (317A) 는 판독 버퍼로서 식별되고, 버퍼 (317N) 는 기록 버퍼로서 식별된다. 이와 같이, 표면 (300N) 과 연관된 데이터가 버퍼 (317A) 로부터 판독될 수도 있는 한편 표면 (300N) 과 연관된 다른 데이터가 동시에 버퍼 (317N) 에 기록된다. 예를 들어, 그래픽스 프로세서 (110) 는 표면 (300N) 에 대해 새로운 또는 업데이트된 표면 데이터를 버퍼 (317N) 로 렌더링하는 프로세스에 존재할 수도 있다. 이것이 발생하는 동안, 그래픽스 프로세서 (110), 디스플레이 프로세서 (114), 또는 제어 프로세서 (108) 는 표면 (300N) 에 대하여 이전에 렌더링된 표면 데이터를 버퍼 (317A) 로부터 판독할 수도 있다. 판독 및 기록 동작들의 형태들이 병렬로 발생할 수도 있기 때문에, 오프-스크린 표면 (300N) 에 대한 렌더링 및 디스플레이 프로세스들이 그래픽스 처리 시스템 (102) 내에서 동시에 발생할 수 있다.
도 3b는 일 양태에 따라서, 온-스크린 표면과 함께 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있는 도 3a에 도시된 바와 같이 오프-스크린 표면들 (300A 및 300N) 과 연관된 오버레이된 표면 데이터의 예를 도시하는 블록도이다. 도 3a를 참고로하여 상술된 바와 같이, 오프-스크린 표면 버퍼 (316A) 는 오프-스크린 표면 (300A) 과 연관된 판독 버퍼로서 버퍼들 (316) 내에서 식별되었고, 오프-스크린 표면 버퍼 (317A) 는 오프-스크린 표면 (300N) 과 연관된 판독 버퍼로서 버퍼들 (317) 내에서 식별되었다. 따라서, 오프-스크린 표면 (300A) 을 위한 (렌더링된 표면 출력 데이터와 같은) 표면 데이터는 버퍼 (316A) 로부터 판독될 수도 있고, 오프-스크린 표면 (300N) 을 위한 표면 데이터는 버퍼 (317A) 로부터 판독될 수도 있다.
도 3b의 예에서, 디스플레이 프로세서 (114) 는 버퍼 (316A) 로부터 오프-스크린 표면 (300A) 에 대한 표면 데이터를 판독하고 이러한 데이터를 오프-스크린 표면 데이터 (319A) 로서 그래픽스 처리 시스템 (102) 의 프레임 버퍼 (160) 내에 저장한다고 가정한다. 디스플레이 프로세서 (114) 는 또한 버퍼 (미도시) 로부터 윈도우 표면과 같은 온-스크린 표면에 대한 표면 데이터를 판독하고 이러한 데이터를 온-스크린 표면 데이터 (323A) 로서 프레임 버퍼 (160) 내에 저장한다. 이외에도, 디스플레이 프로세서 (114) 는 온-스크린 표면 (300N) 에 대한 표면 데이터를 버퍼 (317A) 로부터 판독하고 이러한 데이터를 오프-스크린 표면 데이터 (321A) 로서 프레임 버퍼 (160) 내에 저장할 수도 있다. 이 방식으로, 온-스크린 표면 데이터 (323A) 와 함께, 오프-스크린 표면 데이터 (319A, 321A) 는 디스플레이 디바이스 (106) 상에 디스플레이될 이미지 데이터의 일 프레임 내에 포함될 수도 있다.
일 양태에서, 온-스크린 표면 데이터 (323A) 와 함께, 오프-스크린 표면 데이터 (319A, 321A) 는 표면 오버레이 스택 내에 포함될 수도 있다. 이 양태에서, 디스플레이 프로세서 (114) 는 표면 데이터 (319A, 321A, 및 323A) 각각을 스택 내의 별개의 표면 레벨과 연관시킴으로써, 오프-스크린 표면 데이터 (319A, 321A) 및 온-스크린 표면 데이터 (323A) 에 대한 오버레이 순서를 구현할 수도 있다. 오프-스크린 표면 데이터 (319A) 는 오프-스크린 표면 (300A) 에 대한 표면 데이터의 일 프레임과 연관되고, 오프-스크린 표면 데이터 (321A) 는 오프-스크린 표면 (300N) 에 대한 표면 데이터의 일 프레임과 연관된다.
일 양태에서, 표면들 (300A, 300N) 의 레벨들, 또는 이들이 특정 레벨로 경계가 이루어지는 시퀀스 둘 모두는 표면 오버레이 프로세스 동안 고려될 수도 있다. 일정한 경우, 다수의 표면들이 특정 층으로 경계가 이루어질 수도 있다. 층들은 뒤에서부터 앞으로 (최대 네거티브에서 최대 포지티브로) 처리될 수도 있다. 주어진 층 내에서, 층으로 경계가 이루어졌던 차례로 표면들이 처리된다.
도 3b에 도시된 바와 같이, 오프-스크린 표면 데이터 (319A, 321A) 는, 사용자가 볼 수 있는 스크린 영역 (330A) 내의 디스플레이 디바이스 (106) 상에 온-스크린 표면 데이터 (323A) 와 함께 디스플레이될 수도 있다. 온-스크린 표면 데이터 (323A) 와 함께 오프-스크린 표면 데이터 (319A, 321A) 는 디스플레이 프로세서 (114) 에 의해 사용된 오버레이 순서에 기초하여 오버레이된 표면들과 같이 스크린 영역 (330A) 내에 디스플레이될 수도 있다. 오프-스크린 표면 데이터 (319A, 321A) 는 프레임 버퍼 (160) 내에 포함된 것과 동일한 위치 또는 관계로 디스플레이될 수도 또는 디스플레이되지 않을 수도 있다. 표면 오버레이 스택은 표면들의 디스플레이를 위한 임의의 표면 오버레이 레벨들을 디스플레이 디바이스 (106) 상에 할당하는데 사용될 수도 있다. 결과적으로, 그래픽스 처리 시스템 (102) 은 디스플레이 디바이스 (106) 상에 사용자에게 디스플레이하기 위해 오버레이될 수도 있는 2D, 3D 및/또는 비디오 표면 데이터를 제공할 수 있다. 예를 들어, 오프-스크린 표면 (300A) 이 도 3b의 예에서 3D 표면이고, 오프-스크린 표면 (300N) 이 비디오 표면인 경우, 이들 표면들과 연관된 3D 및 비디오 표면 데이터는 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있다. 2D, 3D 및/또는 비디오 표면 데이터의 임의의 결합은 디스플레이 디바이스 (106) 상에 오버레이될 수도 있다.
도 3c는 일 양태에 따라서, 상이하게 식별된 판독 및 기록 버퍼들을 갖는 다수의 오프-스크린 표면들 (300A-300N) 의 예를 도시하는 블록도이다. 도 3c에서, 도 3a에 도시된 예와 대조적으로, 오프-스크린 표면 버퍼 (316A) 는 오프-스크린 표면 (300A) 에 대한 기록 버퍼로서 식별되고, 오프-스크린 표면 버퍼 (316N) 는 판독 버퍼로서 식별된다. 또한, 오프-스크린 표면 (300N) 에 대하여, 오프-스크린 표면 버퍼 (317A) 는 기록 버퍼로서 식별되고, 오프-스크린 표면 버퍼 (317N) 은 판독 버퍼로서 식별된다.
일 양태에서, 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및/또는 디스플레이 프로세서 (114) 는 버퍼들 (316 및/또는 317) 내에서 버퍼 공간을 할당할 수도 있으며, 또한 어느 버퍼들 (316A-316N 및 317A-317N) 이 오프-스크린 표면들 (300A-300N) 에 관하여 판독 버퍼들, 기록 버퍼들, 또는 둘 모두인지를 식별한다. 도 3a 및 도 3c의 예는, 오프-스크린 표면들에 대한 적용외에 윈도우 표면 더블 버퍼링의 구현과 유사하게, 임의의 주어진 버퍼가 어떤 시점에 판독 버퍼로서 식별될 수도 있지만 이후 기록 버퍼로서 식별될 수도 있다는 것을 나타낸다.
예를 들어, 도 3a에서, 오프-스크린 표면 버퍼 (316N) 는 기록 버퍼로서 식별된다. 이와 같이, 오프-스크린 표면 (300A) 에 대한 렌더링 출력 데이터는, 그래픽스 프로세서 (110) 에 의해, 렌더링 프로세스 동안 버퍼 (316N) 에 기록될 수도 있다. 도 3a의 버퍼 (316A) 가 판독 버퍼로서 식별되기 때문에, 오프-스크린 표면 (300A) 에 대한 (예를 들어, 사전에 렌더링된 데이터와 같은) 표면 데이터가 버퍼 (316A) 로부터 판독되는 동안 병렬로 별개의 데이터가 버퍼 (316N) 에 기록될 수도 있다.
예를 들어, 그래픽스 프로세서 (110) 가 버퍼 (316N) 로 데이터를 렌더링하고 기록하는 것이 종료하는 경우, 버퍼 (316N) 는 도 3c에 도시된 바와 같이 판독 버퍼로서 재식별될 수도 있으므로, 오프-스크린 표면 (300A) 을 위한 이 렌더링된 데이터가 버퍼 (316N) 로부터 판독될 수도 있다. 유사하게, 도 3c에 도시된 바와 같이, 버퍼 (316A) 가 기록 버퍼로서 재식별될 수도 있으므로, 오프-스크린 표면 (300A) 을 위한 새롭게 렌더링된 출력 데이터가 버퍼 (316A) 로 기록되는 동안 병렬로 별개의 데이터가 버퍼 (316N) 로부터 판독될 수도 있다. 따라서, 특정 시나리오에서, 하나 이상의 버퍼들 (316A-316N) 은 상이한 시점에 판독 버퍼로서 식별되는 것과 기록 버퍼로서 식별되는 것 사이에서 전환될 수도 있다.
유사하게, 하나 이상의 버퍼들 (317A-317N) 은 상이한 시점에 판독 버퍼로서 식별되는 것과 기록 버퍼로서 식별되는 것 사이에서 전환될 수도 있다. 도 3a에서, 버퍼 (317A) 는 판독 버퍼로서 식별되고, 버퍼 (317N) 는 기록 버퍼로서 식별된다. 그러나, 도 3c에 도시된 바와 같이, 버퍼 (317A) 는 기록 버퍼로서 재식별되고, 버퍼 (317N) 는 판독 버퍼로서 재식별된다.
도 3d는 일 양태에 따라서, 디스플레이 디바이스 (106) 상에 온-스크린 표면과 함께, 디스플레이될 수도 있는 도 3c에 도시된 오프-스크린 표면들 (300A, 300N) 과 연관된 오버레이드된 표면 데이터의 예를 도시하는 블록도이다. 오프-스크린 표면 버퍼 (316N) 가 오프-스크린 표면 (300A) 에 대한 판독 버퍼로서 식별되기 때문에, 디스플레이 프로세서 (114) 는 버퍼 (316N) 로부터 데이터를 판독하고 이러한 데이터를 프레임 버퍼 (160) 내의 오프-스크린 표면 데이터 (319N) 로서 저장할 수도 있다. 디스플레이 프로세서 (114) 는 또한 오프-스크린 표면 (300N) 과 연관되는 버퍼 (317N) 로부터 데이터를 판독할 수도 있고 이러한 데이터를 프레임 버퍼 (160) 내의 오프-스크린 표면 데이터 (321N) 으로서 저장할 수도 있다. 이 방식으로, 온-스크린 표면 데이터 (323N) 와 함께, 오프-스크린 표면 데이터 (319N, 321N) 는 디스플레이 디바이스 (106) 상에 디스플레이될 이미지 데이터의 일 프레임 내에 포함될 수도 있다.
도 3b의 예와 유사하게, 온-스크린 표면 데이터 (323N) 와 함께 도 3d에 도시된 오프-스크린 표면 데이터 (319N, 321N) 는 오버레이될 표면들에 대한 순서를 제공하는 표면 오버레이 스택 내에 포함될 수도 있다. 디스플레이 프로세서 (114) 는 표면 데이터 (319N, 321N, 및 323N) 각각을 스택 내의 별개의 표면 레벨과 연관시킴으로써, 오프-스크린 표면 데이터 (319N, 321N) 및 온-스크린 표면 데이터 (323N) 에 대한 오버레이 순서를 구현할 수도 있다. 이후, 오프-스크린 표면 데이터 (319N, 321N) 는 사용자가 볼 수 있는 스크린 영역 (330N) 내의 디스플레이 디바이스 (106) 상에 온-스크린 표면 데이터 (323N) 와 함께 디스플레이될 수도 있다. 표면 데이터 (319N, 321N 및 323N) 는 디스플레이 프로세서 (114) 에 의해 사용된 오버레이 순서에 기초하여 오버레이된 표면들과 같이 스크린 영역 (330N) 내에 디스플레이될 수도 있다.
도 4는 일 양태에 따라서, 도 1a 또는 도 1b의 그래픽스 처리 시스템 (102) 에 도시된 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및/또는 디스플레이 프로세서 (114) 에 의해 수행되거나, 도 2a 또는 도 2d의 그래픽스 처리 시스템 (202) 에 도시된 하나 이상의 제어 프로세서 (208), 그래픽스 프로세서 (210), 및/또는 디스플레이 프로세서 (214) 에 의해 수행될 수도 있는 방법의 흐름도이다. 아래의 설명의 오로지 설명의 목적을 위해서, 도 4에 도시된 방법은 그래픽스 처리 시스템 (102) 의 하나 이상의 프로세서들에 의해 수행된다는 것을 가정할 것이다.
처음에, 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및/또는 디스플레이 프로세서 (114) 는, 그래픽스 처리에 사용된 오프-스크린 표면과 모두 연관되는 버퍼들 (116A-116N) 과 같은 다수의 버퍼들을 할당한다 (도 4의 400). 버퍼들 (116A-116N) 은 버퍼 영역들 (112) 내에 할당될 수도 있고, 정의된 수의 버퍼들을 포함할 수도 있다. 오프-스크린 표면은 p버퍼 또는 픽스맵 표면을 포함할 수도 있다. 일 양태에서, 버퍼들은 버퍼 영역들 (112) 의 제 1 영역 또는 버퍼 영역들 (112) 의 제 2 영역 중 어느 하나의 영역 내에서 할당될 수도 있다. 어떤 경우, 제 1 영역은 p버퍼와 연관될 수도 있고, 제 2 영역은 픽스맵과 연관될 수도 있으며, 제 1 및 제 2 영역들은 상이한 영역들일 수도 있다.
버퍼들 (116A-116N) 내의 제 1 버퍼는 기록 버퍼로서 식별된다 (도 4의 402). 렌더링 데이터와 같이, 오프-스크린 표면과 관련된 정보는 기록 동작 동안 제 1 버퍼에 기록될 수도 있다. 버퍼들 (116A-116N) 내의 제 2 버퍼는 판독 버퍼로서 식별된다 (도 4의 404). 오프-스크린 표면과 관련된 정보가 판독 동작 동안 제 2 버퍼로부터 판독될 수도 있다. 일 양태에서, 제 1 버퍼 및 제 2 버퍼는 상이한 버퍼들이므로, 기록 버퍼는 판독 버퍼와 상이하다.
406에서, 그래픽스 프로세서 (110) 또는 제어 프로세서 (108) 와 같은 하나 이상의 프로세서들은 오프-스크린 표면을 렌더링함으로써 렌더링 정보를 생성하고 그리고 렌더링 정보를 기록 동작 동안 제 1 버퍼에 기록할 수도 있다. 408에서, 디스플레이 프로세서 (114) 와 같은 하나 이상의 프로세서들은 판독 동작 동안 디스플레이 목적을 위해 제 2 버퍼로부터 오프-스크린 표면과 관련된 정보를 판독할 수도 있다. 이러한 방식에서, 일 양태에 따라서, 오프-스크린 표면에 다수의 버퍼들이 제공될 수도 있다. 이 양태에서, 연관된 버퍼들을 판독 버퍼들 및/또는 기록 버퍼들로서 식별하기 위해 (예를 들어, 아래에 보다 상세하게 설명된
Figure pct00002
기능과 같은) 버퍼 선택 방식이 호출될 수도 있다. 예를 들어, 오프-스크린 표면의 렌더링이 주어진 단계 동안 완료되고, 렌더링 정보가 제 1 버퍼에 기록되는 경우, 버퍼 선택 기능이 제 1 버퍼를 판독 버퍼로서 식별하기 위해 호출될 수도 있어, 렌더링 정보, 예를 들어, 디스플레이될 이미지 또는 비디오의 프레임 내에 합성된 오프-스크린 표면이 판독될 수도 있다. 버퍼 선택 기능의 호출 (invocation) 은 제 2 버퍼를 기록 버퍼로서 식별할 수도 있으므로, 오프-스크린 표면에 대한 새로운 렌더링 정보가 이 버퍼에 기록될 수도 있다.
이 방식으로, 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및/또는 디스플레이 프로세서 (114) 는, 오프-스크린 표면에 대하여 새로운, 또는 업데이트된, 표면 데이터를 제 1 (기록) 버퍼에 기록하면서 동시에 제 2 (판독) 버퍼로부터 표면 데이터를 판독할 수도 있다. 이것에 의해, 오프-스크린 표면들에 대한 멀티-버퍼 지원이 제공된다. 일 양태에서, 다수의 표면들 (각각 멀티-버퍼 지원을 갖는 표면) 과 연관된 표면 데이터는 디스플레이 프로세서 (114) 에 의해 버퍼 영역 (112) 으로부터 표면 오버레이 스택으로 판독되고 오버레이 순서에 따라서 디스플레이 디바이스 (106) 상에 디스플레이를 위해 제공될 수도 있다. 이들 표면들은 2D 표면들, 3D 표면들, 및/또는 비디오 표면들을 포함할 수도 있다.
도 5는 일 양태에 따라서, 도 1a 또는 도 1b의 그래픽스 처리 시스템 (102) 에 도시된 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및/또는 디스플레이 프로세서 (114) 에 의해 수행되거나, 도 2a 또는 도 2d의 그래픽스 처리 시스템 (202) 에 도시된 하나 이상의 제어 프로세서 (208), 그래픽스 프로세서 (210), 및/또는 디스플레이 프로세서 (214) 에 의해 수행될 수도 있는 방법의 흐름도이다. 아래의 설명의 오로지 설명의 목적을 위해서, 도 5에 도시된 방법은 그래픽스 처리 시스템 (102) 의 하나 이상의 프로세서들에 의해 수행된다는 것을 가정할 것이다.
처음에, 500에서, 하나 이상의 제어 프로세서 (108), 그래픽스 프로세서 (110), 및/또는 디스플레이 프로세서 (114) 는, 각각 오프-스크린 표면과 연관되는 다수의 "M"개의 버퍼들을 할당하며, M은 2 이상이다. 예를 들어, M개의 버퍼들은 제 1 버퍼 및 제 2 버퍼를 포함할 수도 있다 (단지 예시임). 제 1 버퍼는 오프-스크린 표면에 대하여 기록 버퍼로서 식별되므로, 기록 동작 동안 오프-스크린 표면과 관련된 정보는 제 1 버퍼에 기록될 수도 있다. 제 2 버퍼는 오프-스크린 표면에 대하여 판독 버퍼로서 식별되므로, 판독 동작 동안 오프-스크린 표면과 관련된 정보는 제 2 버퍼로부터 판독될 수도 있다.
502에서, 하나 이상의 프로세서들은, 각각 추가적인 오프-스크린 표면과 연관되는 다수의 "N"개의 버퍼들을 할당하며, N은 2 이상이다. 예를 들어, N개의 버퍼가 제 3 및 제 4 버퍼를 포함할 수도 있다 (단지 예시임). 제 3 버퍼는 추가적인 오프-스크린 표면에 대해 기록 버퍼로서 식별되므로, 추가적인 기록 동작 동안 추가적인 오프-스크린 표면과 관련된 정보가 제 3 버퍼에 기록될 수도 있다. 제 4 버퍼는 추가적인 오프-스크린 표면에 대해 판독 버퍼로서 식별되므로, 추가적인 판독 동작 동안 추가적인 오프-스크린 표면과 관련된 정보가 제 4 버퍼로부터 판독될 수도 있다.
504에서, 디스플레이 프로세서 (114) 와 같은 하나 이상의 프로세서들은 제 2 버퍼로부터 오프-스크린 표면과 관련된 정보를 판독한다. 506에서, 디스플레이 프로세서 (114) 와 같은 하나 이상의 프로세서들은 제 4 버퍼로부터 추가적인 오프-스크린 표면과 관련된 정보를 판독한다.
508에서, 하나 이상의 프로세서들은 (오프-스크린 표면과 연관된) 제 2 버퍼와 (추가적인 오프-스크린 표면과 연관된) 제 4 버퍼의 콘텐츠를, 온-스크린 표면과 연관된 데이터와 함께 오버레이 순서에 따라서 결합시킬 수도 있다. 예를 들어, 이 정보는 표면 오버레이 스택 내에서 결합될 수도 있다.
510에서, 하나 이상의 프로세서들은 오프-스크린 표면과 추가적인 오프-스크린 표면을, 온-스크린 표면과 함께 디스플레이 디바이스 (106) 와 같은 디스플레이 디바이스 상에 오버레이할 수도 있다. 이 표면은 오버레이 순서에 따라서 오버레이될 수도 있다.
미리 논의된 바와 같이, 오프-스크린 표면들에 대한 멀티-버퍼 지원은 시스템 (102) 및/또는 시스템 (202)(도 2a) 내의 하나 이상의 프로세서들에 의해 구현될 수도 있다. 일 양태에서, 하나 이상의 프로세서들에 의해 실행되는 경우, 오프-스크린 표면들을 위한 멀티-버퍼 지원을 구현하는 기능성은 API 라이브러리들 (120) 및/또는 드라이버들 (122) 내에 또는 API 라이브러리들 (220) 및/또는 드라이버들 (222)(도 2a) 내에 포함될 수도 있다. 예를 들어, 이러한 기능성은 오프-스크린 멀티-버퍼 API (238)(도 2b) 내에 및/또는 오프-스크린 멀티-버퍼 드라이버 (248)(도 2c) 내에 포함될 수도 있다. 이 양태에서, 이 기능성은 EGL 확장의 일부로서 제공될 수도 있다. 아래의 설명에서 단지 예시의 목적으로, 이러한 기능성은 EGL 확장 (즉, EGL 사양에 대한 확장) 의 일부로서 제공된다는 것을 가정할 것이다.
일 양태에서, 오프-스크린 표면들의 멀티-버퍼 지원을 위해 EGL 확장이 제공된다. EGL 코드 내에서, 표면 생성 시에, 이제,
Figure pct00003
또는
Figure pct00004
로 패스된 속성 리스트는
Figure pct00005
토큰 다음에
Figure pct00006
를 포함할 수 있으며, 이는 오프-스크린 표면과 연관될 버퍼들의 총 수를 나타낸다. 예를 들어, 픽스맵 오프-스크린 표면의 경우, 지정된 버퍼들의 수가 1보다 크다면, 일 경우,
Figure pct00007
파라미터는 픽스맵 표면에서 각각에 버퍼에 대하여 사용하기 위해서
Figure pct00008
에 대하여 포인터들의
Figure pct00009
터미네이티드 어레이로서 취급될 수도 있다.
일 양태에서, 각각의 오프-스크린 표면은 드로우 (기록) 버퍼와 연관되며, 판독 버퍼와도 연관된다. 이와 같이,
Figure pct00010
파라미터 및
Figure pct00011
파라미터를 포함하기 위해
Figure pct00012
구조가 수정될 수도 있다.
Figure pct00013
의 값은 현재 드로우 버퍼를 명시하고,
Figure pct00014
파라미터의 값은 현재 판독 버퍼를 명시한다.
Figure pct00015
Figure pct00016
둘 모두는 타입
Figure pct00017
일 수도 있다.
함수
Figure pct00018
은 다수의 버퍼드 표면을 위해
Figure pct00019
Figure pct00020
를 설정하도록 사용될 수 있다.
Figure pct00021
의 예시적인 함수 선언은 아래와 같이 나타내어진다:
Figure pct00022
일 양태에 따라서, 오프-스크린 표면을 위한 멀티-버퍼 지원을 제공하는 EGL을 위한 예시적인 EGL 코드를 단지 설명을 위해 아래에 나타낸다. 이 예시적인 코드는
Figure pct00023
함수를 이용한다.
//표면 속성; 5개의 총 버퍼들을 요청
Figure pct00024
//이 샘플들은 비디오 스트림이 네이티브 API들로 생성된다는 것과
//이것을 디코드하는 버퍼 풀이 다음 어레이와 연관된다는 것을
//가정한다
Figure pct00025
Figure pct00026
// 리스트가 NULL 터미네이티드된다는 것을
//확인한다
//비디오에 대응하는 멀티-버퍼드 픽스맵 표면을 생성한다
Figure pct00027

//성공적인 생성을 확인한다
Figure pct00028
//
Figure pct00029
에 기초하여 에러 메시지들을 출력;
Figure pct00030

//비디오 프로세싱 동안, 디스플레이될 버퍼가 video_pool 어레이 내의
//인덱스들을 변경할 것이다. EGL에 의해 사용될 현재 인덱스를
//설정하기 위해서,
Figure pct00031
은 인덱스가
//변할 때마다 호출된다.
//멀티-버퍼드 픽스맵 현재를 새로운 비디오 인덱스와 동기시킨다
Figure pct00032
이 예시적인 EGL 코드에서, 기존의
Figure pct00033
토큰 뒤에 5의
Figure pct00034
값이 이어지기 때문에, 할당될 그리고 표면과 연관된 5개의 총 버퍼들을 요청하기 위해 오프-스크린 표면 속성이 초기화된다. 예시적인 코드는, 비디오 스트림이 네이티브 API와 함께 이미 생성되었고,
Figure pct00035
리스트에 널-터미네이티드 어레이를 제공하는 것을 가정한다. 이후, 코드는 EGL 사양에서 제공된 바와 같은
Figure pct00036
함수 호를 이용하여 비디오에 대응하는 멀티-버퍼드 픽스맵 표면을 생성한다.
비디오 처리 동안, 판독 버퍼 (또는 디스플레이될 버퍼) 는
Figure pct00037
리스트 내에서 인덱스들을 변경할 수도 있다. EGL에 의해 사용될 현재 인덱스를 설정하기 위해서, 그리고 현재 드로우 (기록) 및 판독 버퍼들을 설정하기 위해서, 인덱스가 변할 때마다
Figure pct00038
이 호출될 수 있다. 예시적인 코드에서, 현재 기록 및 판독 버퍼들 둘 모두가 동일한 인덱스,
Figure pct00039
로 설정되며, 이 인덱스는 새로운 비디오 인덱스이다. 이 예에서, 식별된 기록 및 판독 버퍼들이 동일한 버퍼이더라도, 이것은 분명히 항상 그 경우는 아니다. 많은 상황들에서, 식별된 기록 및 판독 버퍼들은 도 3a 내지 도 3d의 예에 도시된 바와 같이 상이한 버퍼들일 것이다.
본 개시에 기재된 기술들은 범용 마이크로프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 다른 등가적 논리 디바이스들 내에서 구현될 수도 있다. 따라서, 본원에 사용된 바와 같이 용어 "프로세서" 또는 "제어기"는 앞서 말한 구조 또는 본원에 기재된 기술들의 구현을 위해 적합한 임의의 다른 구조 중 어느 구조를 지칭할 수도 있다.
도 1 내지 도 4에 도시된 다양한 컴포넌트들은 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합에 의해 실현될 수도 있다. 도 1 내지 도 4에서, 다양한 컴포넌트들은 별개의 유닛 또는 모듈들로서 도시된다. 그러나, 도 4a 내지 도 4를 참고로하여 기재된 다양한 컴포넌트들 모두 또는 몇몇은 공통 하드웨어 및/또는 소프트웨어 내에서 결합된 유닛들 또는 모듈들에 집적될 수도 있다. 따라서, 컴포넌트, 유닛 또는 모듈과 같은 특성들의 표시는 설명의 용이함을 위해서 특정 기능적 특성을 부각시키도록 의도되었고, 별개의 하드웨어 또는 소프트웨어 컴포넌트들에 의한 이러한 특성들의 실현을 필수적으로 요구하지 않는다. 어떤 경우, 하나 이상의 프로세서들에 의해 실시된 프로그램 가능한 프로세스들로서 다양한 유닛들이 구현될 수도 있다.
본원에 기재된 컴포넌트들 및 기술들은 하드웨어, 소프트웨어, 펌웨어 또는 그 임의의 조합으로 구현될 수도 있다. 모듈들 또는 컴포넌트들로서 설명된 임의의 특성들은 집적 논리 디바이스에서 함께 또는 별개이지만 상호운용가능한 논리 디바이스들로서 별도로 구현될 수도 있다. 다양한 양태에서, 이러한 컴포넌트들은, 집적 회로 칩 또는 칩셋과 같은 집적 회로 디바이스로 총괄하여 지칭될 수도 있는 하나 이상의 집적 회로 디바이스로서 적어도 부분적으로 형성될 수도 있다. 이러한 회로는 하나의 집적 회로 칩 디바이스에 또는 복수의 상호운용가능한 집적 회로 칩 디바이스들에 제공될 수도 있고, 다양한 이미지, 디스플레이, 오디오, 또는 다른 멀티-미디어 애플리케이션들 및 디바이스들 중 어느 것에서 사용될 수도 있다. 몇몇 양태들에서, 예를 들어, 이러한 컴포넌트들은 무선 통신 디바이스 핸드셋과 같은 이동 디바이스의 일부를 형성할 수도 있다.
소프트웨어로 구현된다면, 이 기술들은, 하나 이상의 프로세서들에 의해 실행되는 경우 하나 이상의 상술된 방법들을 수행하는 명령들을 갖는 컴퓨터 판독가능 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 매체는 패키징 재료를 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터-판독가능 매체는 동기식 동적 랜덤 액세스 메모리 (SDRAM) 과 같은 랜덤 액세스 메모리 (RAM), 읽기 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적으로 소거가능한 프로그래머블 판독 전용 메모리 (EEPROM), 임베디드 동적 랜덤 액세스 메모리 (eDRAM), 정적 랜덤 액세스 메모리 (SRAM), FLASH 메모리, 또는 자기 또는 광학 데이터 저장 매체를 포함할 수도 있다.
추가로 또는 대안으로, 기술들은 하나 이상의 프로세서들에 의해 액세스되고, 판독되고/되거나 실행될 수 있는 명령들 또는 데이터 구조들의 형태로 코드를 전달하거나 통신하는 컴퓨터 판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다. 어떤 커넥션은 컴퓨터-판독가능 매체로 적절하게 지칭될 수도 있다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL) 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 테크놀러지들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신된다면, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 테크놀러지들이 매체의 정의에 포함된다. 상기의 결합은 또한 컴퓨터 판독가능 매체의 범위 내에 포함된다. 사용될 임의의 소프트웨어는 하나 이상의 DSP, 범용 마이크로 프로세서, ASIC, FPGA 또는 다른 등가의 집적 또는 별개의 논리 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다.
본 개시의 다양한 양태가 설명되었다. 이들 양태 및 다른 양태는 다음 청구범위 내에 있다.

Claims (43)

  1. 그래픽스 처리에서 사용된 오프-스크린 표면과 모두 연관되는 다수의 버퍼들을 할당하는 단계;
    상기 오프-스크린 표면과 관련된 정보가 기록 동작 동안 제 1 버퍼로 기록되도록, 상기 버퍼들 내의 상기 제 1 버퍼를 상기 오프-스크린 표면을 위한 기록 버퍼로서 식별하는 단계; 및
    상기 오프-스크린 표면과 관련된 정보가 판독 동작 동안 제 2 버퍼로부터 판독되도록, 상기 버퍼들 내의 상기 제 2 버퍼를 상기 오프-스크린 표면을 위한 판독 버퍼로서 식별하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 버퍼들을 할당하는 단계는 상기 버퍼들을 그래픽스 처리 시스템의 하나 이상의 버퍼 영역들 내에 할당하는 단계를 포함하는, 방법.
  3. 제 2 항에 있어서,
    상기 버퍼들을 상기 그래픽스 처리 시스템의 상기 하나 이상의 버퍼 영역들 내에 할당하는 단계는 상기 버퍼들을 p버퍼들과 연관된 하나 이상의 버퍼 영역들의 제 1 영역 또는 픽스맵들과 연관된 하나 이상의 버퍼 영역들의 제 2 영역 중 어느 한 영역 내에 할당하는 단계를 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 제 1 버퍼를 상기 판독 버퍼로서 그리고 상기 제 2 버퍼를 상기 기록 버퍼로서 식별하는 버퍼 선택 함수를 호출하는 단계를 더 포함하는, 방법.
  5. 제 1 항에 있어서,
    상기 오프-스크린 표면을 렌더링함으로써 렌더링 정보를 생성하는 단계; 및
    상기 렌더링 정보를 상기 기록 동작 동안 상기 제 1 버퍼에 기록하는 단계를 더 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 판독 동작 동안 디스플레이의 목적으로 상기 오프-스크린 표면과 관련된 정보를 상기 제 2 버퍼로부터 판독하는 단계를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 기록 버퍼가 상기 판독 버퍼와 상이하도록, 상기 제 1 버퍼와 상기 제 2 버퍼는 상이한 버퍼들인, 방법.
  8. 제 1 항에 있어서,
    그래픽스 처리에서 사용된 추가적인 오프-스크린 표면과 모두 연관되는 추가적인 버퍼들을 할당하는 단계;
    상기 추가적인 오프-스크린 표면과 관련된 정보가 추가적인 기록 동작 동안 제 3 버퍼로 기록되도록, 상기 추가적인 버퍼들 내의 상기 제 3 버퍼를 상기 추가적인 오프-스크린 표면을 위한 기록 버퍼로서 식별하는 단계; 및
    상기 추가적인 오프-스크린 표면과 관련된 정보가 추가적인 판독 동작 동안 제 4 버퍼로부터 판독되도록, 상기 추가적인 버퍼들 내의 상기 제 4 버퍼를 상기 추가적인 오프-스크린 표면을 위한 판독 버퍼로서 식별하는 단계를 더 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 오프-스크린 표면을 위한 상기 제 2 버퍼의 콘텐츠, 상기 추가적인 오프-스크린 표면을 위한 상기 제 4 버퍼의 콘텐츠, 및 온-스크린 표면과 연관된 데이터를 오버레이 순서에 따라서 결합하는 단계; 및
    상기 오프-스크린 표면, 상기 추가적인 오프-스크린 표면, 및 상기 온-스크린 표면을 디스플레이의 목적으로 상기 오버레이 순서에 기초하여 오버레이하는 단계를 더 포함하는, 방법.
  10. 제 9 항에 있어서,
    상기 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하고; 그리고
    상기 추가적인 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하는, 방법.
  11. 제 1 항에 있어서,
    상기 방법은 하나 이상의 프로세서들에 의해 수행되고, 상기 하나 이상의 프로세서들 각각은 디스플레이 프로세서, 그래픽스 프로세서, 또는 범용 프로세서를 포함하는, 방법.
  12. 하나 이상의 프로그래머블 프로세서들로 하여금,
    그래픽스 처리에서 사용된 오프-스크린 표면과 모두 연관되는 다수의 버퍼들을 할당하게 하고;
    상기 오프-스크린 표면과 관련된 정보가 기록 동작 동안 제 1 버퍼로 기록되도록, 상기 버퍼들 내의 상기 제 1 버퍼를 상기 오프-스크린 표면을 위한 기록 버퍼로서 식별하게 하고; 그리고
    상기 오프-스크린 표면과 관련된 정보가 판독 동작 동안 제 2 버퍼로부터 판독되도록, 상기 버퍼들 내의 상기 제 2 버퍼를 상기 오프-스크린 표면을 위한 판독 버퍼로서 식별하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  13. 제 12 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서들로 하여금 상기 버퍼들을 할당하게 하는 명령들은 상기 하나 이상의 프로그래머블 프로세서들로 하여금 상기 버퍼들을 그래픽스 처리 시스템의 하나 이상의 버퍼 영역들 내에 할당하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  14. 제 13 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서들로 하여금 상기 버퍼들을 상기 그래픽스 처리 시스템의 상기 하나 이상의 버퍼 영역들 내에 할당하게 하는 명령들은 상기 하나 이상의 프로그래머블 프로세서들로 하여금 상기 버퍼들을 p버퍼들과 연관된 하나 이상의 버퍼 영역들의 제 1 영역 또는 픽스맵들과 연관된 하나 이상의 버퍼 영역들의 제 2 영역 중 어느 한 영역 내에 할당하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  15. 제 12 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서들로 하여금,
    상기 제 1 버퍼를 상기 판독 버퍼로서 그리고 상기 제 2 버퍼를 상기 기록 버퍼로서 식별하는 버퍼 선택 함수를 호출하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  16. 제 12 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서들로 하여금,
    상기 오프-스크린 표면을 렌더링함으로써 렌더링 정보를 생성하게 하고; 그리고
    상기 기록 동작 동안 상기 렌더링 정보를 상기 제 1 버퍼에 기록하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  17. 제 12 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서들로 하여금,
    상기 판독 동작 동안 디스플레이의 목적으로 상기 오프-스크린 표면과 관련된 정보를 상기 제 2 버퍼로부터 판독하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  18. 제 12 항에 있어서,
    상기 기록 버퍼가 상기 판독 버퍼와 상이하도록, 상기 제 1 버퍼와 상기 제 2 버퍼는 상이한 버퍼들인, 컴퓨터 판독가능 매체.
  19. 제 12 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서들로 하여금,
    그래픽스 처리에서 사용된 추가적인 오프-스크린 표면과 모두 연관되는 추가적인 버퍼들을 할당하게 하고;
    상기 추가적인 오프-스크린 표면과 관련된 정보가 추가적인 기록 동작 동안 제 3 버퍼로 기록되도록, 상기 추가적인 버퍼들 내의 상기 제 3 버퍼를 상기 추가적인 오프-스크린 표면을 위한 기록 버퍼로서 식별하게 하고; 그리고
    상기 추가적인 오프-스크린 표면과 관련된 정보가 추가적인 판독 동작 동안 제 4 버퍼로부터 판독되도록, 상기 추가적인 버퍼들 내의 상기 제 4 버퍼를 상기 추가적인 오프-스크린 표면을 위한 판독 버퍼로서 식별하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  20. 제 19 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서들로 하여금,
    상기 오프-스크린 표면을 위한 상기 제 2 버퍼의 콘텐츠, 상기 추가적인 오프-스크린 표면을 위한 상기 제 4 버퍼의 콘텐츠, 및 온-스크린 표면과 연관된 데이터를 오버레이 순서에 따라서 결합하게 하고; 그리고
    상기 오프-스크린 표면, 상기 추가적인 오프-스크린 표면, 및 상기 온-스크린 표면을 디스플레이의 목적으로 상기 오버레이 순서에 기초하여 오버레이하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  21. 제 20 항에 있어서,
    상기 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하고; 그리고
    상기 추가적인 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하는, 컴퓨터 판독가능 매체.
  22. 하나 이상의 버퍼 영역들; 및
    그래픽스 처리에서 사용하는 오프-스크린 표면과 모두 연관되는 상기 하나 이상의 버퍼 영역들 내에 다수의 버퍼들을 할당하도록 구성된 하나 이상의 프로세서들을 포함하고,
    상기 오프-스크린 표면과 관련된 정보를 기록 동작 동안 제 1 버퍼에 기록하고 상기 오프-스크린 표면과 관련된 정보를 판독 동작 동안 제 2 버퍼로부터 판독하도록, 상기 하나 이상의 프로세서들은 상기 버퍼들 내의 상기 제 1 버퍼를 상기 오프-스크린 표면을 위한 기록 버퍼로서 식별하고 또한 상기 버퍼들 내의 상기 제 2 버퍼를 상기 오프-스크린 표면을 위한 판독 버퍼로서 식별하도록 더 구성되는, 디바이스.
  23. 제 22 항에 있어서,
    상기 하나 이상의 프로세서들은 p버퍼들과 연관된 하나 이상의 버퍼 영역들의 제 1 영역 또는 픽스맵들과 연관된 하나 이상의 버퍼 영역들의 제 2 영역 중 어느 한 영역 내에 버퍼들을 할당하도록 구성되는, 디바이스.
  24. 제 22 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 제 1 버퍼를 상기 판독 버퍼로서 그리고 상기 제 2 버퍼를 상기 기록 버퍼로서 식별하는 버퍼 선택 함수를 호출하도록 더 구성되는, 디바이스.
  25. 제 22 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 오프-스크린 표면을 렌더링함으로써 렌더링 정보를 생성하고 상기 기록 동작 동안 상기 렌더링 정보를 상기 제 1 버퍼에 기록하도록 더 구성되는, 디바이스.
  26. 제 22 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 판독 동작 동안 디스플레이의 목적으로 상기 오프-스크린 표면에 대한 정보를 상기 제 2 버퍼로부터 판독하도록 더 구성되는, 디바이스.
  27. 제 22 항에 있어서,
    상기 기록 버퍼가 상기 판독 버퍼와 상이하도록, 상기 제 1 버퍼 및 상기 제 2 버퍼는 상이한 버퍼들인, 디바이스.
  28. 제 22 항에 있어서,
    상기 하나 이상의 프로세서들은 그래픽스 처리에서 사용된 추가적인 오프-스크린 표면과 모두 연관되는 추가적인 버퍼들을 할당하고, 추가적인 기록 동작 동안 상기 추가적인 오프-스크린 표면과 관련된 정보가 제 3 버퍼로 기록되고 추가적인 판독 동작 동안 상기 추가적인 오프-스크린 표면과 관련된 정보가 제 4 버퍼로부터 판독되도록, 상기 추가적인 버퍼들 내의 상기 제 3 버퍼를 상기 추가적인 오프-스크린 표면을 위한 기록 버퍼로서 식별하고, 상기 추가적인 버퍼들 내의 상기 제 4 버퍼를 상기 추가적인 오프-스크린 표면을 위한 판독 버퍼로서 식별하도록 더 구성되는, 디바이스.
  29. 제 28 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 오프-스크린 표면을 위한 상기 제 2 버퍼의 콘텐츠, 상기 추가적인 오프-스크린 표면을 위한 상기 제 4 버퍼의 콘텐츠, 및 온-스크린 표면과 연관된 데이터를 오버레이 순서에 따라서 결합하고, 그리고 상기 오프-스크린 표면, 상기 추가적인 오프-스크린 표면, 및 상기 온-스크린 표면을 디스플레이의 목적으로 상기 오버레이 순서에 기초하여 오버레이하도록 더 구성되는, 디바이스.
  30. 제 29 항에 있어서,
    상기 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하고; 그리고
    상기 추가적인 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하는, 디바이스.
  31. 제 22 항에 있어서,
    상기 하나 이상의 프로세서들 각각은 디스플레이 프로세서, 그래픽스 프로세서, 또는 범용 프로세서를 포함하는, 디바이스.
  32. 제 22 항에 있어서,
    상기 디바이스는 무선 통신 디바이스 핸드셋, 퍼스널 컴퓨터, 또는 랩톱 디바이스를 포함하는, 디바이스.
  33. 제 22 항에 있어서,
    상기 디바이스는 하나 이상의 집적 회로 디바이스들을 포함하는, 디바이스.
  34. 그래픽스 처리에서 사용된 오프-스크린 표면과 모두 연관되는 다수의 버퍼들을 할당하는 수단;
    상기 오프-스크린 표면과 관련된 정보가 기록 동작 동안 제 1 버퍼로 기록되도록, 상기 버퍼들 내의 상기 제 1 버퍼를 상기 오프-스크린 표면을 위한 기록 버퍼로서 식별하는 수단; 및
    상기 오프-스크린 표면과 관련된 정보가 판독 동작 동안 제 2 버퍼로부터 판독되도록, 상기 버퍼들 내의 상기 제 2 버퍼를 상기 오프-스크린 표면을 위한 판독 버퍼로서 식별하는 수단을 포함하는, 디바이스.
  35. 제 34 항에 있어서,
    상기 버퍼들을 할당하는 수단은 상기 버퍼들을 그래픽스 처리 시스템의 하나 이상의 버퍼 영역들 내에 할당하는 수단을 포함하는, 디바이스.
  36. 제 35 항에 있어서,
    상기 버퍼들을 상기 그래픽스 처리 시스템의 상기 하나 이상의 버퍼 영역들 내에 할당하는 수단은 상기 버퍼들을 p버퍼들과 연관된 하나 이상의 버퍼 영역들의 제 1 영역 또는 픽스맵들과 연관된 하나 이상의 버퍼 영역들의 제 2 영역 중 어느 한 영역 내에 할당하는 수단을 포함하는, 디바이스.
  37. 제 34 항에 있어서,
    상기 제 1 버퍼를 판독 버퍼로서 그리고 상기 제 2 버퍼를 기록 버퍼로서 식별하는 버퍼 선택 함수를 호출하는 수단을 더 포함하는, 디바이스.
  38. 제 34 항에 있어서,
    상기 오프-스크린 표면을 렌더링함으로써 렌더링 정보를 생성하는 수단; 및
    상기 기록 동작 동안 상기 렌더링 정보를 상기 제 1 버퍼에 기록하는 수단을 더 포함하는, 디바이스.
  39. 제 34 항에 있어서,
    상기 판독 동작 동안 디스플레이의 목적으로 상기 오프-스크린 표면과 관련된 정보를 상기 제 2 버퍼로부터 판독하는 수단을 더 포함하는, 디바이스.
  40. 제 34 항에 있어서,
    상기 기록 버퍼가 상기 판독 버퍼와 상이하도록, 상기 제 1 버퍼와 상기 제 2 버퍼는 상이한 버퍼들인, 디바이스.
  41. 제 34 항에 있어서,
    그래픽스 처리에서 사용된 추가적인 오프-스크린 표면과 모두 연관되는 추가적인 버퍼들을 할당하는 수단;
    상기 추가적인 오프-스크린 표면과 관련된 정보가 추가적인 기록 동작 동안 제 3 버퍼로 기록되도록, 상기 추가적인 버퍼들 내의 상기 제 3 버퍼를 상기 추가적인 오프-스크린 표면을 위한 기록 버퍼로서 식별하는 수단; 및
    상기 추가적인 오프-스크린 표면과 관련된 정보가 추가적인 판독 동작 동안 제 4 버퍼로부터 판독되도록, 상기 추가적인 버퍼들 내의 상기 제 4 버퍼를 상기 추가적인 오프-스크린 표면을 위한 판독 버퍼로서 식별하는 수단을 더 포함하는, 디바이스.
  42. 제 41 항에 있어서,
    상기 오프-스크린 표면을 위한 상기 제 2 버퍼의 콘텐츠, 상기 추가적인 오프-스크린 표면을 위한 상기 제 4 버퍼의 콘텐츠, 및 온-스크린 표면과 연관된 데이터를 오버레이 순서에 따라서 결합하는 수단; 및
    상기 오프-스크린 표면, 상기 추가적인 오프-스크린 표면, 및 상기 온-스크린 표면을 디스플레이의 목적으로 상기 오버레이 순서에 기초하여 오버레이하는 수단을 더 포함하는, 디바이스.
  43. 제 42 항에 있어서,
    상기 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하고; 그리고
    상기 추가적인 오프-스크린 표면은 2차원 표면, 3차원 표면, 또는 비디오 표면을 포함하는, 디바이스.
KR1020107018304A 2008-01-18 2009-01-16 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원 KR101239029B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US2219508P 2008-01-18 2008-01-18
US61/022,195 2008-01-18
US12/116,065 2008-05-06
US12/116,065 US20090184972A1 (en) 2008-01-18 2008-05-06 Multi-buffer support for off-screen surfaces in a graphics processing system
PCT/US2009/031323 WO2009092033A1 (en) 2008-01-18 2009-01-16 Multi-buffer support for off-screen surfaces in a graphics processing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020127027531A Division KR20120132560A (ko) 2008-01-18 2009-01-16 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원

Publications (2)

Publication Number Publication Date
KR20100103704A true KR20100103704A (ko) 2010-09-27
KR101239029B1 KR101239029B1 (ko) 2013-03-04

Family

ID=40876122

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020107018304A KR101239029B1 (ko) 2008-01-18 2009-01-16 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원
KR1020127027531A KR20120132560A (ko) 2008-01-18 2009-01-16 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127027531A KR20120132560A (ko) 2008-01-18 2009-01-16 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원

Country Status (8)

Country Link
US (1) US20090184972A1 (ko)
EP (1) EP2245598B1 (ko)
JP (1) JP5166552B2 (ko)
KR (2) KR101239029B1 (ko)
CN (1) CN101911125B (ko)
CA (1) CA2711583A1 (ko)
TW (1) TW200943224A (ko)
WO (1) WO2009092033A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180093875A (ko) * 2015-12-18 2018-08-22 에이티아이 테크놀로지스 유엘씨 플립 큐 관리에 기초한 그래픽스 컨텍스트 스케줄링

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110291964A1 (en) 2010-06-01 2011-12-01 Kno, Inc. Apparatus and Method for Gesture Control of a Dual Panel Electronic Device
US20140204102A1 (en) * 2011-05-19 2014-07-24 The Trustees Of Columbia University In The City Of New York Using graphics processing units in control and/or data processing systems
US8780118B2 (en) * 2011-06-13 2014-07-15 Samsung Electronics Co., Ltd. Techniques for synchronizing hardware accelerated graphics rendering and surface composition
US8884978B2 (en) * 2011-09-09 2014-11-11 Microsoft Corporation Buffer display techniques
CN102497591B (zh) * 2011-11-11 2015-02-18 青岛海信移动通信技术股份有限公司 一种终端以及该终端与电视进行无线传屏的方法
US10156976B2 (en) 2014-01-30 2018-12-18 Samsung Display Co., Ltd. System and method in managing low-latency direct control feedback
CN107743636B (zh) * 2015-06-07 2021-07-23 苹果公司 用于高效实时渲染预先不知道的图形的图形引擎和环境
US20170154403A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Triple buffered constant buffers for efficient processing of graphics data at computing devices
KR102531741B1 (ko) * 2016-01-12 2023-05-11 삼성전자 주식회사 멀티플 버퍼를 가지는 메모리 장치 및 멀티플 버퍼를 가지는 메모리를 구동하는 방법
CN105933724A (zh) * 2016-05-23 2016-09-07 福建星网视易信息系统有限公司 视频制作方法、装置及系统
CN106598514B (zh) * 2016-12-01 2020-06-09 惠州Tcl移动通信有限公司 一种终端设备中切换虚拟现实模式的方法及系统
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
CN113099309A (zh) * 2021-03-30 2021-07-09 上海哔哩哔哩科技有限公司 视频处理方法及装置
CN112950757B (zh) * 2021-03-30 2023-03-14 上海哔哩哔哩科技有限公司 图像渲染方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5001469A (en) * 1988-06-29 1991-03-19 Digital Equipment Corporation Window-dependent buffer selection
DE69215155T2 (de) * 1991-07-26 1997-06-19 Sun Microsystems Inc Gerät mit schneller Kopierung zwischen Rasterpuffern in einem Anzeigesystem mit Doppel-Pufferspeichern
US6016150A (en) * 1995-08-04 2000-01-18 Microsoft Corporation Sprite compositor and method for performing lighting and shading operations using a compositor to combine factored image layers
US5844569A (en) * 1996-04-25 1998-12-01 Microsoft Corporation Display device interface including support for generalized flipping of surfaces
US5801717A (en) * 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
JPH1069270A (ja) * 1996-08-28 1998-03-10 Okinawa Nippon Denki Software Kk 表示画像合成方法
US5933155A (en) * 1996-11-06 1999-08-03 Silicon Graphics, Inc. System and method for buffering multiple frames while controlling latency
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
CN1942900A (zh) * 2004-03-03 2007-04-04 高通股份有限公司 图形处理器的可变时钟控制
JP2007286082A (ja) * 2006-04-12 2007-11-01 Sony Computer Entertainment Inc 描画処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180093875A (ko) * 2015-12-18 2018-08-22 에이티아이 테크놀로지스 유엘씨 플립 큐 관리에 기초한 그래픽스 컨텍스트 스케줄링

Also Published As

Publication number Publication date
EP2245598A1 (en) 2010-11-03
TW200943224A (en) 2009-10-16
US20090184972A1 (en) 2009-07-23
KR20120132560A (ko) 2012-12-05
EP2245598B1 (en) 2017-07-05
CA2711583A1 (en) 2009-07-23
CN101911125B (zh) 2013-07-24
CN101911125A (zh) 2010-12-08
JP5166552B2 (ja) 2013-03-21
JP2011510407A (ja) 2011-03-31
KR101239029B1 (ko) 2013-03-04
WO2009092033A1 (en) 2009-07-23

Similar Documents

Publication Publication Date Title
KR101239029B1 (ko) 그래픽스 처리 시스템의 오프-스크린 표면을 위한 멀티-버퍼 지원
US10164459B2 (en) Selective rasterization
US20080284798A1 (en) Post-render graphics overlays
US9715750B2 (en) System and method for layering using tile-based renderers
US9928637B1 (en) Managing rendering targets for graphics processing units
CN105518742A (zh) 用于图形处理的任意控制点处的容错抢占机制
WO2010000126A1 (zh) 交互信息生成方法及系统
KR20180056316A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
US10319068B2 (en) Texture not backed by real mapping
US20190172213A1 (en) Tile-based low-resolution depth storage
KR20170088687A (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
Pulli New APIs for mobile graphics
WO2018128877A1 (en) Prefetching for a graphics shader
JP2011510406A (ja) グラフィクス処理システムにおける、表面作成のためのマルチフォーマットサポート
US20230326134A1 (en) Variable rate tessellation
JP2011529236A (ja) グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析
KR20180015564A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
US10311627B2 (en) Graphics processing apparatus and method of processing graphics pipeline thereof
CN116075862A (zh) 对象空间渲染中的布告板层
CN117616446A (zh) 基于图块的架构中的深度和阴影通道渲染的优化
CN117710548A (zh) 图像渲染方法及其相关设备
CN116457830A (zh) 基于区域不连续性的运动估计

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E601 Decision to refuse application
A107 Divisional application of patent
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 7