KR20100103703A - 그래픽스 프로세싱 시스템에서 표면 생성을 위한 멀티-포맷 지원 - Google Patents

그래픽스 프로세싱 시스템에서 표면 생성을 위한 멀티-포맷 지원 Download PDF

Info

Publication number
KR20100103703A
KR20100103703A KR1020107018298A KR20107018298A KR20100103703A KR 20100103703 A KR20100103703 A KR 20100103703A KR 1020107018298 A KR1020107018298 A KR 1020107018298A KR 20107018298 A KR20107018298 A KR 20107018298A KR 20100103703 A KR20100103703 A KR 20100103703A
Authority
KR
South Korea
Prior art keywords
graphics
data
layout
color
format
Prior art date
Application number
KR1020107018298A
Other languages
English (en)
Inventor
스티븐 토드 웨이브류
브라이언 엘리스
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20100103703A publication Critical patent/KR20100103703A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/32Image data format

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Processing Or Creating Images (AREA)
  • Color Image Communication Systems (AREA)

Abstract

일반적으로, 본 출원은 플랫폼 인터페이스 계층을 이용하여 표면을 생성하는 다양한 기술을 개시하며, 이러한 표면은 YCbCr 컬러 공간과 같은 다양한 서로 다른 컬러 공간에 대해 서로 다른 포맷 레이아웃을 가질 수도 있다. 하나의 예시적인 디바이스는, 표면 정보를 포함하도록 구성된 저장 디바이스 및 플랫폼 인터페이스 계층을 이용하여 컬러 공간 내에 그래픽스 표면을 생성하도록 구성된 하나 이상의 프로세서를 포함한다. 플랫폼 인터페이스 계층은 클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와 기본적 네이티브 플랫폼 렌더링 API 사이에 존재한다. 하나 이상의 프로세서는 플랫폼 인터페이스 계층을 이용하여 컬러 공간 내의 표면과 연관된 데이터의 포맷 레이아웃을 특정하고 그 포맷 레이아웃을 저장 디바이스 내에 저장하도록 더 구성된다. 포맷 레이아웃은 컬러 공간 내의 표면과 연관된 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타낸다.

Description

그래픽스 프로세싱 시스템에서 표면 생성을 위한 멀티-포맷 지원{MULTI-FORMAT SUPPORT FOR SURFACE CREATION IN A GRAPHICS PROCESSING SYSTEM}
관련 출원
본 출원은 2008 년 1 월 18 일 출원되고 그 전체 내용이 본 명세서에 참조로서 통합된 미국 가특허출원 제 61/022,193 호에 대해 우선권을 주장한다.
기술분야
본 출원은 그래픽스 프로세싱 시스템 내에서 표면의 렌더링 및 디스플레이에 관련된다.
그래픽스 프로세서는, 비디오 게임, 그래픽스 프로그램, 컴퓨터-보조 설계 (CAD) 애플리케이션, 시뮬레이션 및 가시화 툴 및 이미징과 같은 다양한 애플리케이션에 대해 2-차원 (2D) 및 3-차원 (3D) 이미지를 렌더링하는데 널리 이용되고 있다. 디스플레이 디바이스를 통한 사용자에게의 프리젠테이션을 위해, 그래픽스 프로세서의 렌더링된 출력을 디스플레이하는데 디스플레이 프로세서가 이용될 수도 있다.
이 애플리케이션들에 이용되는 그래픽스 프로세서, 디스플레이 프로세서, 또는 멀티미디어 프로세서는 데이터의 병렬 및/또는 벡터 프로세싱을 수행하도록 구성될 수도 있다. SIMD (Single Instruction, Multiple Data) 확장을 갖추거나 갖추지 않은 범용 CPU (중앙 처리 장치) 가 또한 데이터를 프로세싱하도록 구성될 수도 있다. SIMD 벡터 프로세싱에서는, 하나의 명령이 다수의 데이터 항목에 대해 동시에 동작한다.
OpenGL® (Open Graphics Library) 는, 2D 및 3D 그래픽스를 생성하는 애플리케이션에 기록하는 경우 이용될 수도 있는 API (Application Programming Interface) 를 정의하는 표준 규격이다. (Java 와 같은 다른 언어들은 고유의 표준 프로세스를 통해 OpenGL API 에 대한 규약을 정의할 수도 있다.) 인터페이스는, 단순한 프리미티브로부터 씬 (scene) 을 드로잉하는데 이용될 수 있는 다수의 함수 호출을 포함한다. 그래픽스 프로세서, 멀티미디어 프로세서 및 심지어 범용 CPU 는, OpenGL 함수 호출을 이용하여 기록되는 애플리케이션을 실행할 수 있다. OpenGL ES (Embedded Systems) 는, 이동 무선 전화, 디지털 멀티미디어 플레이어, 개인 휴대 정보 단말기 (PDA), 또는 비디오 게임 콘솔과 같은 임베딩된 디바이스를 위해 설계된 OpenGL 의 변형예이다. OpenVG™ (Open Vector Graphics) 는, 하드웨어-가속 2D 벡터 그래픽스를 위해 주로 설계되는 다른 표준 API 이다.
EGL™ (Embedded Graphics Library) 은, (OpenGL ES, OpenVG 및 다수의 다른 표준 멀티미디어 API 와 같은) 멀티미디어 클라이언트 API 와 기본 (underlying) 플랫폼 멀티미디어 퍼실러티 사이의 플랫폼 인터페이스 계층이다. EGL 은 그래픽스 콘텍스트 관리, 렌더링 표면 생성 및 렌더링 동기화를 핸들링할 수 있고, 고성능, 하드웨어 가속, 혼합-모드의 2D 및 3D 렌더링을 가능하게 할 수 있다. 렌더링 표면 생성을 위해, EGL 은, (사용자 애플리케이션 API 와 같은) 클라이언트 API 가 드로잉하고 공유할 수 있는 표면을 생성하는 메커니즘을 제공한다. 현재, EGL 은 선형 및 sRGB (표준 적녹청) 표면에 대한 지원만을 제공한다.
일반적으로, 본 출원은 EGL 과 같은 플랫폼 인터페이스 계층을 이용한 표면의 생성을 위한 다양한 기술을 개시하며, 이러한 표면은 RGB (적색, 녹색, 청색) 또는 YCbCr (휘도, 청색 색차, 적색 색차, 여기서 Cb 및 Cr 신호는 Y 신호로부터의 델타) 컬러 공간과 같은 다양한 서로 다른 컬러 공간에 대한 서로 다른 포맷 (또는 패킹) 레이아웃을 가질 수도 있다. 특정한 경우, YCbCr EGL 표면은 OpenGL 및 OpenVG 표면으로 이용될 수도 있고, LCD (액정 디스플레이) 또는 텔레비전 (TV) 디스플레이 디바이스와 같은 디스플레이 디바이스 상에서의 궁극적 디스플레이를 위해 표면 오버레이 스택 내에서 결합될 수도 있다.
이 방식으로, 서로 다른 컬러 공간의 다양한 2D, 3D 및/또는 비디오 표면은 궁극적으로 디스플레이 상의 디스플레이를 위해 결합될 수도 있다. 특정한 경우, 이 기능 및 지원은 EGL 확장과 같은 플랫폼 인터페이스 계층 확장의 일부로서 제공될 수도 있다. 확장은 또한, 예를 들어, JPEG (Joint Photographic Experts Group) 표면 또는 MPEG4 (Moving Picture Experts Group version 4) 표면과 같은 YCbCr 표면의 RGB 컬러 공간으로의 변환을 보조하기 위해 변환 정보를 제공할 수도 있으며, 이것은 이러한 표면의 디스플레이에 유용할 수도 있다.
일 양태에서, 일 방법은 클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와 네이티브 플랫폼 렌더링 API 사이에 있는 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성하는 단계를 포함한다. 이 방법은 또한, 플랫폼 인터페이스 계층을 이용하여 컬러 공간 내의 표면과 연관된 데이터의 포맷 레이아웃을 특정하는 단계를 포함하며, 이 포맷 레이아웃은 컬러 공간 내의 표면과 연관된 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타낸다.
다른 양태에서, 일 디바이스는, 표면 정보를 저장하도록 구성된 저장 디바이스, 및 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성하도록 구성된 하나 이상의 프로세서를 포함한다. 플랫폼 인터페이스 계층은 클라이언트 렌더링 API 와 네이티브 플랫폼 렌더링 API 사이에 존재한다. 하나 이상의 프로세서는 또한, 플랫폼 인터페이스 계층을 이용하여 컬러 공간 내의 표면과 연관된 데이터의 포맷 레이아웃을 특정하고, 저장 디바이스의 표면 정보 내의 포맷 레이아웃을 저장하도록 구성된다. 포맷 레이아웃은 컬러 공간 내의 표면과 연관된 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타낸다.
일 양태에서, 컴퓨터-판독가능 매체는, 하나 이상의 프로그래머블 프로세서로 하여금, 클라이언트 렌더링 API 와 네이티브 플랫폼 렌더링 API 사이에 존재하는 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성하게 하고, 플랫폼 인터페이스 계층을 이용하여 컬러 공간 내의 표면과 연관된 데이터의 포맷 레이아웃을 특정하게 하는 명령들을 포함한다. 포맷 레이아웃은 컬러 공간 내의 표면과 연관된 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타낸다.
본 출원의 하나 이상의 양태의 세부사항을 다음의 첨부한 도면 및 상세한 설명에서 기술한다. 다른 특성, 목적 및 이점은 상세한 설명 및 도면 그리고 청구항으로부터 명백해질 것이다.
도 1a 는 본 출원의 일 양태에 따라, 표면 생성을 위한 멀티-포맷 지원을 구현하는데 이용될 수도 있는 디바이스를 도시하는 블록도이다.
도 1b 는 본 출원의 다른 양태에 따라, 표면 생성을 위한 멀티-포맷 지원을 구현하는데 이용될 수도 있는 디바이스를 도시하는 블록도이다.
도 2a 는 본 출원의 일 양태에 따라, YCbCr (휘도, 청색 색차, 적색 색차) 컬러 공간에서 표면 생성을 위한 멀티-포맷 지원을 구현하는데 이용될 수도 있는 디바이스를 도시하는 블록도이다.
도 2b 는 본 출원의 일 양태에 따라, 도 2a 에 도시된 API 라이브러리의 추가적 상세를 도시하는 블록도이다.
도 2c 는 본 출원의 일 양태에 따라, 도 2a 에 도시된 드라이버의 추가적 상세를 도시하는 블록도이다.
도 2d 는 본 출원의 다른 양태에 따라, YCbCr (휘도, 청색 색차, 적색 색차) 컬러 공간에서 표면 생성을 위한 멀티-포맷 지원을 구현하는데 이용될 수도 있는 디바이스를 도시하는 블록도이다.
도 3a 는 본 출원의 일 양태에 따라, 하나 이상의 YCbCr 표면을 포함할 수도 있는, 표면에 대한 표면 정보의 일예를 도시하는 블록도이다.
도 3b 는 본 출원의 일 양태에 따라, 디스플레이 디바이스 상에 디스플레이될 수도 있는, 도 3a 로부터의 표면과 연관되는 오버레이된 표면 데이터의 일예를 도시하는 블록도이다.
도 4 는 본 출원의 일 양태에 따라, 도 1a, 도 1b, 도 2a 또는 도 2d 의 그래픽스 프로세싱 시스템에 도시된 제어 프로세서, 그래픽스 프로세서 및/또는 디스플레이 프로세서 중 하나 이상에 의해 수행될 수도 있는 방법의 흐름도이다.
도 5 는 본 출원의 일 양태에 따라, 도 1a, 도 1b, 도 2a 또는 도 2d 의 그래픽스 프로세싱 시스템에 도시된 제어 프로세서, 그래픽스 프로세서 및/또는 디스플레이 프로세서 중 하나 이상에 의해 수행될 수도 있는 다른 방법의 흐름도이다.
도 6 은 본 출원의 일 양태에 따라, YCbCr 표면에 대한 구성 및 샘플링 정보를 나타내기 위해, YCbCr 표면 구성/샘플링 정보가 이용될 수도 있는 일예를 도시한다.
도 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) 는 다른 형태의 멀티미디어 프로세서를 포함할 수도 있다.
디바이스 (100) 에서, 그래픽스 프로세싱 시스템 (102) 은 메모리 (104) 및 디스플레이 디바이스 모두에 커플링된다. 메모리 (104) 는, 명령들 및/또는 데이터를 저장할 수 있는 임의의 영속적 또는 휘발성 메모리를 포함할 수도 있다. 디스플레이 디바이스 (106) 는 LCD (액정 디스플레이) 또는 플라즈마 디스플레이 또는 다른 텔레비전 (TV) 디스플레이 디바이스와 같은, 디스플레이를 위한 3D 이미지 데이터, 2D 이미지 데이터, 또는 비디오 데이터를 디스플레이할 수 있는 임의의 디바이스일 수도 있다.
그래픽스 프로세서 (110) 는 컴퓨터화된 그래픽스를 렌더링, 조작 및 디스플레이하는데 이용되는 전용 그래픽스 렌더링 디바이스일 수도 있다. 그래픽스 프로세서 (110) 는 다양한 복소 그래픽스-관련 알고리즘을 구현할 수도 있다. 예를 들어, 복소 알고리즘은 2-차원 또는 3-차원 컴퓨터화 그래픽스의 표현에 대응할 수도 있다. 그래픽스 프로세서 (110) 는, 점, 선 및 삼각형 또는 다른 다각형 표면을 형성하는 것과 같은 다수의 소위 "프리미티브" 그래픽스 연산을 구현하여, 디스플레이 디바이스 (106) 와 같은 디스플레이 상에 복잡한 3-차원 이미지를 생성할 수도 있다.
본 명세서에서, 용어 "렌더링"은 일반적으로 3D 및/또는 2D 렌더링을 지칭할 수도 있다. 예시로서, 그래픽스 프로세서 (110) 는 OpenGL 명령들을 이용하여 3D 그래픽스 프레임을 렌더링할 수도 있고, OpenVG 명령들을 이용하여 2D 그래픽스 표면을 렌더링할 수도 있다. 그러나, 그래픽스를 렌더링하기 위한 임의의 다양한 다른 표준, 방법 또는 기술이 그래픽스 프로세서 (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) 로 동적으로 다운로딩되는 하나 이상의 다운로드가능한 모듈을 포함할 수도 있다.
메모리 (104) 는 표면 정보 (124) 를 더 포함한다. 표면 정보 (124) 는 그래픽스 프로세싱 시스템 (102) 내에서 생성되는 표면에 대한 정보를 포함할 수도 있다. 예를 들어, 표면 정보 (124) 는 소정의 표면과 연관된 표면 데이터, 표면 포맷 데이터 및/또는 표면 변환 데이터를 포함할 수도 있다. 이 표면은 2D 표면, 3D 표면 또는 비디오 표면을 포함할 수도 있다. 본 출원의 목적을 위해, 2D 표면은, 예를 들어, OpenVG 와 같은 2D API 에 의해 생성될 수도 있는 표면이다. 3D 표면은, 예를 들어, OpenGL 과 같은 3D API 에 의해 생성될 수도 있는 표면이다. 비디오 표면은, 예를 들어, H.264 또는 MPEG4 (Moving Picture Experts Group version 4) 와 같은 비디오 디코더에 의해 생성될 수도 있다.
표면 정보 (124) 는 그래픽스 프로세싱 시스템 (102) 의 표면 정보 저장 디바이스 (112) 로 로딩될 수도 있다. 표면 정보 저장 디바이스 (112) 내의 업데이트된 정보 (112) 가 또한 메모리 (104) 의 표면 정보 (124) 내의 저장을 위해 다시 제공될 수도 있다. 일 양태에서, 표면 정보 저장 디바이스 (112) 내에 포함된 정보는 메모리 (104) 내에 직접 포함될 수도 있다. 이러한 양태에서, 표면 정보 저장 디바이스 (112) 내에 포함된 정보는 도 1b 에 도시된 바와 같이 표면 정보 (124) 내에 직접 포함될 수도 있다.
그래픽스 프로세싱 시스템 (102) 은 표면 정보 저장 디바이스 (112) 를 포함한다. 그래픽스 프로세서 (110), 제어 프로세서 (108) 및 디스플레이 프로세서 (114) 각각은, 이 프로세서들 각각이 저장 디바이스 (112) 로부터 데이터를 판독하거나 저장 디바이스 (112) 에 데이터를 기록할 수 있도록 표면 정보 저장 디바이스 (112) 에 동작가능하게 커플링된다. 저장 디바이스 (112) 는 또한 프레임 퍼버 (160) 에 커플링된다. 프레임 버퍼 (160) 는 그래픽스 프로세싱 시스템 (102) 내의 전용 메모리일 수도 있다. 그러나, 일 양태에서, 프레임 버퍼 (160) 는 도 1b 에 도시된 바와 같이 시스템 RAM (Random Access Memory) 을 메모리 (104) 내에 직접 포함할 수도 있다. 저장 디바이스 (112) 는, 임의의 영속적 메모리, 또는 예를 들어, SDRAM (Synchronous Dynamic Random Access Memory) 과 같은 데이터를 저장할 수 있는 휘발성 메모리일 수도 있다.
저장 디바이스 (112) 는 하나 이상의 표면 데이터 (115A-115N; 전체적으로 115), 하나 이상의 표면 포맷 정보 (116A-116N; 전체적으로 116) 및 하나 이상의 표면 변환 데이터 (117A-117N; 전체적으로 117) 를 포함할 수도 있다. 그래픽스 프로세싱 시스템 (102) 내에 생성된 각각의 표면은 표면 데이터 (115), 표면 포맷 데이터 (116) 및 표면 변환 데이터 (117) 내의 표면에 대한 연관된 정보를 갖는다. 이 표면은 RGB (적색, 녹색, 청색) 컬러 공간 또는 YCbCr (휘도, 청색 색차, 적색 색차) 컬러 공간과 같은 다수의 서로 다른 컬러 공간 중 하나 내의 표면일 수도 있다. 이 표면은 EGL (Embedded Graphics Library) 와 같은 플랫폼 인터페이스 계층에 의해 생성될 수도 있다. 이 플랫폼 인터페이스 계층은 클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와, API 라이브러리 (120) 내에 포함될 수도 있는 기본 네이티브 플랫폼 렌더링 API 사이의 인터페이스로서 기능한다.
표면 데이터 (115) 는 (컬러 공간과 연관된) 하나 이상의 컬러 성분, 및 예를 들어, 그래픽스 프로세서 (110) 에 의한 표면 렌더링 동안 생성될 수도 있는 다른 렌더링 데이터를 포함한다. 표면 데이터 (115) 는 미리 결정된 방식 또는 다른 순서화된 방식으로 저장 디바이스 (112) 내에 포매팅 또는 패킹될 수도 있다. 예를 들어, 표면에 대한 컬러 성분 데이터는, 인터리빙, 평면, 의사-평면, 타일, 계층적 타일 또는 다른 패킹 포맷을 이용하여 표면 데이터 (115) 내에 패킹될 수도 있다. 표면 포맷 데이터 (116) 는, 이하 더 상세히 설명하는 바와 같이, 표면 데이터 (115) 내에 포함된 데이터의 포맷 레이아웃을 특정하는 정보를 포함한다. 표면 포맷 데이터 (116) 는 EGL 과 같은 플랫폼 인터페이스 계층에 의해 특정될 수도 있다. 일 양태에서, 표면 데이터 (115) 는 표면 포맷 데이터 (116) 에 의해 특정된 레이아웃으로 포매팅 또는 패킹될 수도 있다.
표면 변환 데이터 (117) 는 그래픽스 프로세싱 시스템 (102) 내에 생성된 표면에 대한 변환 정보를 제공한다. 특정한 경우, 표면은 상이한 포맷으로 변환될 필요가 있을 수도 있다. 예를 들어, YCbCr 표면 (즉, YCbCr 컬러 공간 내에서 생성된 표면) 은 디스플레이 디바이스 (106) 상에 디스플레이되기 이전에 RGB 포맷으로 변환될 필요가 있을 수도 있다. 디스플레이 프로세서 (114) 는 이러한 변환을 직접 핸들링할 수도 있다. 변환 프로세스 동안 추가된 융통성을 제공하기 위해, 표면 변환 데이터 (117) 가 또한 제공된다. 그래픽스 프로세싱 시스템 (102) 은, 디스플레이 프로세서 (114) 와 함께 변환 프로세스를 간소화하기 위해 표면 변환 정보 (117) 를 이용하도록 구성될 수도 있고, 디스플레이 프로세서 (114) 가 프레임 버퍼 (160) 내의 정보의 프레임을 더 높은 프레임 레이트 및/또는 더 낮은 전력 소모로 프로세싱하게 할 수도 있다.
그래픽스 프로세싱 시스템 (102) 내에 생성된 각각의 표면은 일 양태에 따라 표면 데이터 (115), 표면 포맷 데이터 (116) 및 표면 변환 데이터 (117) 내의 연관 정보를 가질 수도 있다. 예를 들어, 제 1 생성 표면은 연관된 표면 데이터 (115A), 표면 포맷 데이터 (116A) 및 표면 변환 데이터 (117A) 를 가질 수도 있다. 표면 데이터 (115A) 는 표면 포맷 데이터 (116A) 에 의해 (또는 그에 따라) 특정된 레이아웃으로 저장될 수도 있고, 표면 변환 데이터 (117A) 에 따라 상이한 컬러 공간의 새로운 표면 데이터로 변환될 수도 있다. 제 2 생성 표면은 연관된 표면 데이터 (115N), 표면 포맷 데이터 (116N) 및 표면 변환 데이터 (117N) 을 가질 수도 있다. 따라서, 저장 디바이스 (112) 는, 그래픽스 프로세싱 시스템 (102) 내의 다양한 서로 다른 표면들과 연관된 표면 정보를 저장할 수 있다. 각각의 생성된 표면은 별개의 포맷 및 변환 데이터를 가져서, 이용되고 궁극적으로 디스플레이 디바이스 (106) 상에 디스플레이되는 표면의 타입 및 포맷에 증가된 융통성을 제공한다.
일 양태에서, 표면 포맷 데이터 (116A-116N) 는 표면 데이터에 대한 포맷 레이아웃을 특정할 수도 있다. 예를 들어, 표면 포맷 데이터 (116A) 는 표면 데이터 (115A) 의 포맷 레이아웃을 특정할 수도 있다. 포맷 레이아웃은 소정의 컬러 공간 내의 표면 데이터 (115A) 의 개별적 컬러 성분의 순서화를 나타낼 수도 있다. 예를 들어, 표면 데이터 (115A) 가 RGB 표면 데이터를 포함하면, 표면 포맷 데이터 (116A) 는 표면 데이터 (115A) 의 R, G 및 B 컬러 성분의 순서화를 나타내는 포맷 레이아웃을 특정할 수도 있다. 유사하게, 표면 데이터 (115A) 가 YCbCr 표면 데이터를 포함하면, 표면 포맷 데이터 (116A) 는 Y, Cb, Cr 의 순서화, 또는 심지어는 표면 데이터 (115A) 의 A (투명도) 컬러 성분을 나타내는 포맷 레이아웃을 특정할 수도 있다. YCbCr 데이터의 경우, 샘플링 정보가 또한 표면 포맷 데이터 (116A) 내에 제공될 수도 있다. 따라서, 표면 포맷 데이터 (116A) 는, 인터리빙 패턴, 평면 패턴, 의사-평면 패턴, 타일 패턴, 계층적 타일 패턴 등과 같은, 표면 데이터 (115A) 내의 컬러 성분의 다양한 서로 다른 저장 또는 패킹 패턴에 대한 패턴 정보를 제공할 수도 있다. 표면 포맷 데이터 (116A-116N) 는 디스플레이 프로세서 (114) 에 제공될 수도 있고, 디스플레이 프로세서 (114) 는 표면 데이터 (115A-115N) 를 프로세싱할 수도 있다.
디스플레이 프로세서 (114) 는 다수의 그래픽스 표면에 대한 저장 디바이스 (112) 로부터의 출력 데이터를 판독할 수 있다. 임의의 소정의 표면에 대해, 디스플레이 프로세서 (114) 는 연관된 표면 데이터, 표면 포맷 데이터 및 표면 변환 데이터를 판독할 수도 있다. 예를 들어, 디스플레이 프로세서 (114) 는 하나의 표면과 연관된 표면 데이터 (115A), 표면 포맷 데이터 (116A) 및 표면 변환 데이터 (117A) 를 판독할 수도 있다. 디스플레이 프로세서 (114) 는, (예를 들어, 인터리빙, 평면, 의사-평면 또는 다른 형태와 같은 패킹된 표면에 포함될 수도 있는) 표면 포맷 데이터 (115A) 내에 포함된 정보의 포맷 또는 패턴을 해석하기 위해 표면 포맷 데이터 (116A) 를 패턴 정보로서 이용할 수도 있다. 디스플레이 프로세서 (114) 는 표면 변환 데이터 (117A) 를 더 이용하여, 표면 데이터 (115A) 를 RGB 포맷과 같은 다른 포맷으로 변환하는 방법을 결정할 수도 있다.
표면 변환 데이터 (117A) 는 클램프, 바이어스 및/또는 감마와 관련된 정보 또는 값을 포함할 수도 있고, 또한, 이하 더 상세히 설명하는 컬러 변환 매트릭스를 포함할 수도 있다. 다양한 서로 다른 값이 이용될 수도 있고, 사용자에 의해 구성될 수도 있다. 특정한 경우, 국제 표준에 대응하는 값이 디폴트 값으로서 이용될 수도 있다. 국제 표준 ITU 601 및 656 은, RGB 컬러 공간과 표준 해상도 텔레비전 (TV) 에 대한 다른 비디오 컬러 공간 (예를 들어, YCbCr) 사이의 변환을 위해 표준 바이어스 값 및 컬러 공간 변환 매트릭스를 제공한다. 국내 표준 ITU (709) 는 RGB 컬러 공간과 고해상도 TV 에 대한 다른 비디오 컬러 공간 사이의 변환을 위해 표준 바이어스 값 및 컬러 공간 변환 매트릭스를 제공한다.
디스플레이 프로세서 (114) 는, 디스플레이 디바이스 (106) 를 구동시키기 위한 표면의 렌더링된 그래픽스 프레임 상에서 포스트-렌더링 기능을 수행할 수도 있는 프로세서이다. 포스트-렌더링 기능은 스케일링, 회전, 블렌딩, 컬러-키잉 및/또는 오버레이를 포함할 수도 있다. 예를 들어, 디스플레이 프로세서 (114) 는, 상수 알파 블렌딩을 갖는 컬러 키잉, 상수 알파 블렌딩이 없는 컬러 키잉, 완전 표면 상수 알파 블렌딩 또는 완전 표면 픽셀당 알파 블렌딩과 같은 다수의 블렌딩 모드들 중 하나를 이용함으로써 표면들을 결합할 수도 있다. 디스플레이 프로세서 (114) 는 이러한 포스트-렌더링 기능을 수행하는 경우 표면 데이터 (115), 표면 포맷 데이터 (116), 및/또는 표면 변환 데이터 (117) 를 이용할 수도 있다.
디스플레이 프로세서 (114) 는, 디스플레이 디바이스 (106) 상에 디스플레이될 그래픽스 표면들을 프레임 버퍼 (160) 내의 그래픽스 프레임 상에 오버레이할 수 있다. 각각의 그래픽스 표면이 오버레이되는 레벨은 그래픽스 표면에 대해 정의된 표면 레벨에 의해 결정된다. 이 표면 레벨은 애플리케이션 명령들 (118) 과 같은 사용자 프로그램에 의해 정의될 수도 있다. 이 표면 레벨은 렌더링된 표면과 연관된 파라미터로서 저장될 수도 있다.
일 양태에서, 표면 레벨은 임의의 수로 정의될 수도 있고, 그 수가 더 클수록, 표면은 디스플레이 그래픽스 프레임 상에서 더 높게 디스플레이될 것이다. 즉, 2 개의 표면 중 일부가 중첩되는 상황에서는, 더 낮은 표면 레벨을 갖는 임의의 표면의 중첩 부분들 대신에 더 높은 표면 레벨을 갖는 표면의 중첩 부분이 디스플레이될 것이다. 단순한 예시로서, 데스크탑 컴퓨터 상에서 이용되는 배경 이미지는 데이크탑 상의 아이콘보다 낮은 표면 레벨을 가질 것이다. 몇몇 경우, 표면 레벨들은 투명도 정보와 결합되어 중첩되는 2 개의 표면은 서로 블렌딩될 수도 있다. 이 경우, 컬러 키잉이 이용될 수도 있다. 제 1 표면의 픽셀이 키 컬러와 매칭하지 않으면, 그 제 1 표면은 알파 (투명도) 블렌딩이 인에이블되지 않은 경우 출력 픽셀로서 선택될 수 있다. 알파 블렌딩이 인에이블이면, 제 1 표면 및 제 2 표면의 픽셀들은 통상적으로 블렌딩될 수도 있다. 제 1 표면의 픽셀이 키 컬러와 매칭되면, 제 2 표면의 픽셀이 선택되고, 알파 블렌딩은 수행되지 않는다.
일 양태에서, 제어 프로세서 (108) 는, 캘리포니아 샌디에고의 퀄컴사에 의해 설계된 이동국 모뎀에 임베딩되는 ARM11 프로세서와 같은 어드밴스드 RISC (Reduced Instruction Set Computer) 머신 (ARM) 프로세서일 수도 있다. 일 양태에서, 디스플레이 프로세서 (114) 는 또한 퀄컴사에 의해 설계된 이동국 모뎀에 임베딩되는 모바일 디스플레이 프로세서 (MDP) 일 수도 있다.
도 2a 는, 일 양태에 따라 YCbCr (휘도, 청색 색차, 적색 색차) 컬러 공간 및/또는 RGB (적색, 녹색, 청색) 컬러 공간에서의 표면 생성을 위한 멀티-포맷 지원을 구현하는데 이용될 수도 있는 디바이스 (200) 를 도시하는 블록도이다. 디바이스 (200) 는 또한 투명도 A 를 갖는 YCbCr 표면에 대한 표면 생성을 지원할 수도 있다. 다음의 설명에서, 용어 "YCbCr" 은 일반적으로 YCbCr 컬러 공간을 지칭하는 것으로 사용될 것이고, YCbCr 표면은 투명도 데이터를 포함할 수도 있고 포함하지 않을 수도 있다. 이 양태에서, 도 2a 에 도시된 디바이스 (200) 는 도 1a 에 도시된 디바이스 (100) 의 예시적인 인스턴화이다. 디바이스 (200) 는 그래픽스 프로세싱 시스템 (202), 메모리 (204) 및 디스플레이 디바이스 (206) 를 포함한다. 도 1a 에 도시된 메모리 (104) 와 유사하게, 도 2 의 메모리 (204) 는 애플리케이션 명령들 (218), API 라이브러리 (220) 및 드라이버 (222) 를 포함한다. 메모리 (204) 는 또한, 그래픽스 프로세싱 시스템 (202) 에 의해 생성된 YCbCr 및/또는 RGB 표면에 대한 YCbCr 및/또는 RGB 표면 정보 (224) 를 포함한다. YCbCr/RGB 표면 정보 (224) 는 YCbCr/RGB 표면 정보를 위해 저장 디바이스 (213) 에 로딩될 수도 있고, 저장 디바이스 (213) 로부터의 업데이트된 정보는 메모리 (204) 내의 YCbCr/RGB 표면 정보 (224) 에 저장될 수도 있다.
도 1a 에 도시된 그래픽스 프로세싱 시스템 (102) 과 유사하게, 도 2 의 그래픽스 프로세싱 시스템 (202) 은 프로세서 (208), 그래픽스 프로세서 (210), 디스플레이 프로세서 (214), YCbCr/RGB 표면 정보에 대한 저장 디바이스 (213) 및 프레임 버퍼 (260) 를 포함한다. 프로세서 (208) 는 제어 프로세서 또는 범용 프로세서일 수도 있다. 일 양태에서, 프로세서 (208) 는 시스템 CPU (중앙 처리 장치) 를 포함할 수도 있다. 제어 프로세서 (208), 그래픽스 프로세서 (210) 및 디스플레이 프로세서 (214) 는 각각 저장 디바이스 (213) 에 동작가능하게 커플링되고, 각각 저장 디바이스 (213) 에 데이터를 기록하거나 저장 디바이스 (213) 로부터 데이터를 판독할 수도 있다. 프레임 버퍼 (260) 가 또한 저장 디바이스 (213) 에 커플링된다. 일 양태에서, 저장 디바이스 (213) 는 도 1a 에 도시된 저장 디바이스 (112) 와 같은 더 큰 저장 디바이스 내에 포함될 수도 있다.
일 양태에서, 표면 정보 저장 디바이스 (213) 내에 포함된 정보는 메모리 (204) 내에 직접 포함될 수도 있다. 이 양태에서, 표면 정보 저장 디바이스 (213) 내에 포함된 정보는 도 2d 에 도시된 바와 같이 표면 정보 (224) 내에 직접 포함될 수도 있다. 프레임 버퍼 (260) 는 그래픽스 프로세싱 시스템 (202) 내의 전용 메모리일 수도 있다. 그러나, 일 양태에서, 프레임 버퍼 (260) 는 도 2d 에 도시된 바와 같이 메모리 (204) 내에 직접 있는 시스템 RAM (random access memory) 을 포함할 수도 있다.
저장 디바이스 (213) 는 하나 이상의 YCbCr 또는 RGB 표면 데이터 (215A-215N; 전체적으로 215), 하나 이상의 YCbCr 또는 RGB 표면 포맷 데이터 (216A-216N; 전체적으로 216) 및 하나 이상의 YCbCr 또는 RGB 표면 변환 데이터 (217A-217N; 전체적으로 217) 를 포함한다. 그래픽스 프로세싱 시스템 (202) 내에서 생성된 각각의 YCbCr 또는 RGB 표면 (즉, YCbCr 또는 RGB 컬러 공간의 표면) 은 표면 데이터 (215), 표면 포맷 데이터 (216) 및 표면 변환 데이터 (217) 내의 표면에 대한 관련 정보를 갖는다. YCbCr 또는 RGB 표면은 EGL (임베딩된 그래픽스 라이브러리) 과 같은 플랫폼 인터페이스 계층에 의해 생성될 수도 있다. 이 플랫폼 인터페이스 계층은, 클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와, API 라이브러리 (220) 내에 포함될 수도 있는 기본 네이티브 플랫폼 렌더링 API 사이의 인터페이스로서 기능한다.
표면 데이터 (215) 는, 예를 들어, 그래픽스 프로세서 (210) 에 의해 표면 렌더링 동안 생성될 수도 있는 YCbCr 및/또는 RGB 컬러 성분 및 다른 렌더링 데이터를 포함한다. 표면 데이터 (115; 도 1a) 와 유사하게, 표면 데이터 (215) 는 미리 결정된 방식 또는 다른 순서화된 방식으로 저장 디바이스 (213) 내에 포매팅 또는 패킹될 수도 있다. 표면 포맷 데이터 (216) 는, 이하 더 상세히 설명하는 바와 같이, 표면 데이터 (215) 내에 포함된 데이터의 포맷 레이아웃을 특정하는 정보를 포함한다. 표면 포맷 데이터 (216) 는 EGL 과 같은 플랫폼 인터페이스 계층에 의해 특정될 수도 있다.
표면 변환 데이터 (217) 는, 디스플레이 디바이스 (206) 상에 디스플레이되기 이전에 그래픽스 프로세싱 시스템 (202) 내에서 다른 포맷으로 생성된 표면에 대한 변환 정보를 제공한다. 예를 들어, 표면 변환 데이터 (217) 는 YCbCr 표면을 RGB 포맷으로 변환하는데 이용될 수도 있고, RGB 표면을 YCbCr 포맷으로 변환하는데 이용될 수도 있다. 변환 프로세스 동안 추가된 융통성을 제공하기 위해, 표면 변환 데이터 (217) 가 제공된다. 그래픽스 프로세싱 시스템 (202) 은 디스플레이 프로세서 (214) 와 함께, 변환 프로세스를 간소화하기 위해 표면 변환 데이터 (217) 를 이용할 수도 있고, 디스플레이 프로세서 (214) 가 프레임 버퍼 (260) 내의 정보의 프레임을 더 높은 프레임 레이트 및/또는 더 낮은 전력 소모로 프로세싱하게 할 수도 있다.
도 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) 및 기본 네이티브 플랫폼 렌더링 API (239) 를 포함한다. 도 2c 에 도시된 드라이버 (222) 는 OpenGL ES 렌더링 드라이버 (240), OpenVG 렌더링 드라이버 (242), EGL 드라이버 (244) 및 기본 네이티브 플랫폼 렌더링 드라이버 (249) 를 포함한다. OpenGL ES 렌더링 API (230) 는, 2D 및 3D 렌더링 기능과 같은 OpenGL ES 에 의해 지원되는 렌더링 기능을 제공하기 위해, 그래픽스 프로세싱 시스템 (202) 에 의한 애플리케이션 실행 동안 애플리케이션 명령들 (218) 에 의해 호출되는 API 이다. OpenGL ES 렌더링 드라이버 (240) 는, 그래픽스 프로세싱 시스템 (202) 에서 OpenGL ES 렌더링 기능의 저레벨 드라이버 지원을 위해 애플리케이션 실행 동안 애플리케이션 명령들 (218) 및/또는 OpenGL ES 렌더링 API 에 의해 호출된다.
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 의 예에서는, 표면 오버레이 및 (예를 들어, YCbCr 표면 정보 기능과 같은) 표면 정보 기능을 위한 EGL 확장이 제공된다. 따라서, EGL 표면 오버레이 확장을 위해, 표면 오버레이 API (236) 가 EGL API (234) 내에 포함되고, 표면 오버레이 드라이버 (246) 가 EGL 드라이버 (244) 내에 포함된다. 유사하게, EGL 표면 정보 확장을 위해, (예를 들어, YCbCr 표면 정보 API 를 포함할 수도 있는) 표면 정보 API (238) 는 EGL API (234) 내에 포함되고, 표면 정보 드라이버 (248) 는 EGL 드라이버 (244) 내에 포함된다.
EGL 표면 오버레이 확장은, 디스플레이 디바이스 (206) 상에 디스플레이되는 다수의 그래픽스 표면 (예를 들어, 2D 표면, 3D 표면 및/또는 비디오 표면) 의 오버레이에 대한 표면 오버레이 스택을 제공한다. 그래픽스 표면은 각각 스택 내의 연관 표면 레벨을 가질 수도 있다. 따라서, 표면의 오버레이는 스택 내의 표면의 오버레이 순서에 따라 달성된다. 표면 오버레이의 예가 도 3b 에 도시되어 있고, 이하 더 상세히 설명한다.
일 양태에서, EGL 표면 정보 확장은 그래픽스 프로세싱 시스템 (202) 내의 표면 생성을 위한 멀티-포맷 지원을 제공하고, 더 상세하게는 YCbCr 표면에 대한 지원을 제공할 수도 있다. 전술한 바와 같이, 저장 디바이스 (213) 는 표면 데이터 (215; YCbCr 표면 데이터를 포함할 수도 있음), 표면 포맷 데이터 (216; YCbCr 표면에 대한 포맷 데이터를 포함할 수도 있음) 및 표면 변환 데이터 (217; YCbCr 표면을 RGB 포맷으로 변환하기 위한 데이터를 포함할 수도 있음) 를 포함한다. EGL 표면 정보 확장은 저장 디바이스 (213) 으로의 데이터 흐름 및 저장 디바이스 (213) 로부터의 데이터 흐름에 대한 지원을 제공하고, 표면 렌더링, (YCbCr-to-RGB 변환과 같은) 데이터 변환, 및 그래픽스 프로세싱 시스템 (202) 내의 표면의 디스플레이 동안, 제어 프로세서 (208), 그래픽스 프로세서 (210) 및/또는 디스플레이 프로세서 (214) 중 하나 이상에 의해 요구될 수도 있는 정보를 제공한다.
도 2b 에 도시된 바와 같이, API 라이브러리 (220) 는 또한 기본 네이티브 플랫폼 렌더링 API (239) 를 포함한다. API (239) 는 애플리케이션 명령들 (218) 의 실행 동안 디바이스 (200) 에 의해 구현된 기본 네이티브 플랫폼에 의해 제공되는 API 이다. EGL API (234) 는 기본 네이티브 플랫폼 렌더링 API (239) 와, OpenGL ES 렌더링 API (230) 및 OpenVG 렌더링 API (232) 모두와의 사이에 플랫폼 인터페이스 계층을 제공한다. 도 2c 에 도시된 바와 같이, 드라이버 (222) 는 기본 네이티브 플랫폼 렌더링 드라이버 (249) 를 포함한다. 드라이버 (249) 는 애플리케이션 명령들 (218) 및/또는 API 라이브러리 (220) 의 실행 동안 디바이스 (200) 에 의해 구현되는 기본 네이티브 플랫폼에 의해 제공되는 드라이버이다. EGL 드라이버 (244) 는 기본 네이티브 플랫폼 렌더링 드라이버 (249) 와, OpenGL ES 렌더링 드라이버 (240) 및 OpenVG 렌더링 드라이버 (242) 모두와의 사이에 플랫폼 인터페이스 계층을 제공할 수도 있다.
도 3a 는 일 양태에 따라 하나 이상의 YCbCr 또는 RGB 표면을 포함할 수도 있는 표면에 대한 표면 정보의 일예를 도시하는 블록도이다. 도 3a 에서, 표면 (300A-300N) 이 도시되어 있다. 각각의 표면 (300A-300N) 은, 그래픽스 프로세싱 시스템 (102) 에 의해 프로세싱될 수도 있고, 궁극적으로는, 예를 들어, 도 1a 또는 도 1b 에 도시된 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있는 표면이다. 이 표면 (300A-300N) 은 또한 도 2a 또는 도 2d 에 도시된 그래픽스 프로세싱 시스템 (202) 에 의해 프로세싱될 수도 있다. 그러나, 다음의 도 3a-3b 의 예시에서만 설명하기 위해, 표면 (300A-300N) 은 그래픽스 프로세싱 시스템 (102) 에 의해 프로세싱되는 것으로 가정한다.
각각의 표면 (300A-300N) 은, RGB 또는 YCbCr 컬러 공간과 같은 소정의 컬러 공간에 표현될 수도 있는 2D 표면, 3D 표면, 또는 비디오 표면을 포함할 수도 있다. 프레임 버퍼 (160) 내에서 캡쳐되고 디스플레이 디바이스 (106) 상에 디스플레이되는 데이터의 각각의 프레임 내에서, 표면 (300A-300N) 은 오버레이 순서에 따라 오버레이될 수도 있다. 이 예가 도 3b 에 도시되어 있다. 이러한 방식으로, RGB 및 YCbCr 컬러 공간을 포함하는 다양한 서로 다른 컬러 공간에서 2D 표면, 3D 표면 및/또는 비디오 표면은 표면 오버레이 스택에 오버레이되고 디스플레이 디바이스 (106) 상에 서로 디스플레이될 수도 있다.
각각의 표면 (300A-300N) 은 대응하는 표면 정보와 연관된다. 예를 들어, 도 3a 에서, 표면 (300A) 은 표면 정보 (302A) 와 연관되고, 표면 (300N) 은 표면 정보 (302N) 와 연관된다. 표면 정보 (302A-302N) 는 저장 디바이스 (112) 내에 저장될 수도 있다.
표면 정보 (302A) 는 표면 데이터 (315A), 표면 포맷 데이터 (316A) 및 표면 변환 데이터 (317A) 를 포함한다. 유사하게, 표면 정보 (302N) 는 표면 데이터 (315N), 표면 포맷 데이터 (316N) 및 표면 변환 데이터 (317N) 를 포함한다. 일 양태에서, 표면 데이터 (315A-315N) 는 표면 데이터 (115A-115N) 와 유사하고, 표면 포맷 데이터 (316A-316N) 는 표면 포맷 데이터 (116A-116N) 와 유사하고, 표면 변환 데이터 (317A-317N) 는 표면 변환 데이터 (117A-117N) 와 유사하다. 따라서, 각각의 표면 (300A-300N) 은 (패킹 포맷으로 저장될 수도 있는 렌더링 데이터와 같은) 연관된 표면 데이터, 표면 데이터의 포맷을 특정하는 표면 포맷 데이터, 및 필요하다면, (예를 들어, YCbCr 표면 데이터와 같은) 표면 데이터의 RGB 포맷으로의 변환 정보를 특정하는 표면 변환 데이터를 가져서, 디스플레이 프로세서 (114) 에 의해 프로세싱되고 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있다.
도 3b 는 일 양태에 따라 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있는 도 3a 로부터의 표면 (300A 및 300N) 과 연관된 오버레이된 표면 데이터의 일예를 도시하는 블록도이다. 표면 (300A-300N) 중 하나 이상은 YCbCr 표면을 포함할 수도 있다. 표면 (300A) 은 연관된 표면 정보 (302A) 를 갖고, 표면 (300N) 은 연관된 표면 정보 (302N) 를 갖는다. 표면 정보 (302A 및 302N) 는 저장 디바이스 (112) 내에 저장될 수도 있다.
도 3b 의 예에서, 디스플레이 프로세서 (114) 는 저장 디바이스 (112) 로부터 표면 (300A) 에 대한 표면 정보 (302A) 를 판독하는 것으로 가정한다. 그 후, 디스플레이 프로세서 (114) 는 표면 데이터 (315A) 를 획득할 수도 있고, 표면 포맷 데이터 (316A) 및 표면 변환 데이터 (317A) 를 이용하여 이러한 데이터를 프로세싱할 수도 있다. 디스플레이 프로세서 (114) 는 표면 포맷 데이터 (316A) 를 이용하여, 이러한 데이터를 프로세싱하는 경우 표면 데이터 (315A) 의 패킹된 레이아웃의 포맷을 해석한다. 또한, 디스플레이 프로세서 (114) 는 표면 변환 데이터 (317A) 를 이용하여 표면 데이터 (315A) 의 RGB 표면 데이터 (325A) 로의 (즉, RGB 포맷으로의) 변환을 보조하고, 필요하다면, 이 데이터는 프레임 버퍼 (160) 에 기록될 수도 있다. (이 예에서, 디스플레이 디바이스 (106) 는 LCD 디바이스인 것으로 가정한다. 물론, 다른 시나리오에서, 디스플레이 디바이스 (106) 는 TV 디바이스와 같은 다른 형태의 디스플레이 디바이스를 포함할 수도 있다.)
유사하게, 디스플레이 프로세서 (114) 는 표면 (300N) 에 대한 표면 정보 (302N) 를 판독할 수도 있고, 표면 포맷 데이터 (316N) 및 표면 변환 데이터 (317N) 를 이용하여 표면 데이터 (315N) 로부터 RGB 표면 데이터 (325N) 를 발생시킬 수도 있다. 그 후, 디스플레이 프로세서 (114) 는 RGB 표면 데이터 (325N) 를 프레임 버퍼 (160) 로 기록할 수도 있다. 이 방식으로, RGB 표면 데이터 (325A 및 325N) 는 디스플레이 디바이스 (106) 상에 디스플레이될 데이터의 일 프레임 내에 포함될 수도 있다.
일 양태에서, RGB 표면 데이터 (325A 및 325N) 는 표면 오버레이 스택 내에 포함될 수도 있다. 이 양태에서, 디스플레이 프로세서 (114) 는 각각의 RGB 표면 데이터 (325A 및 325N) 를 스택 내의 개별적 표면 레벨과 연관시켜, RGB 표면 데이터 (325A 및 325N) 에 대한 오버레이 순서를 구현할 수도 있다. RGB 표면 데이터 (325A) 는 표면 (300A) 에 대한 표면 데이터의 일 프레임과 연관되고, RGB 표면 데이터 (325N) 는 표면 (300N) 에 대한 표면 데이터의 일 프레임과 연관된다.
일 양태에서, 표면 (300A 및 300N) 의 레벨, 또는 표면들이 특정한 레벨에 한정되는 시퀀스는 모두 표면 오버레이 프로세스 동안 고려될 수도 있다. 특정한 경우, 다수의 표면이 특정한 계층에 한정될 수도 있다. 계층은 뒤에서부터 앞으로 (최대 음수부터 최대 양수까지) 프로세싱될 수도 있다. 소정의 계층 내에서, 표면은, 계층에 한정된 시퀀스로 프로세싱된다.
도 3b 에서, RGB 표면 데이터 (325A 및 325N) 는, 사용자에게 가시적인 스크린 영역 (330) 내에서 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있다. RGB 표면 데이터 (325A 및 325N) 는 디스플레이 프로세서 (114) 에 의해 이용된 오버레이 순서에 기초하여 오버레이된 표면으로서 스크린 영역 (330) 내에 디스플레이될 수도 있다. RGB 표면 데이터 (325A 및 325N) 는 프레임 버퍼 (160) 내에 포함된 것과 동일한 위치 또는 관계로 디스플레이되지 않을 수도 있다. 디스플레이 프로세서 (114) 는 표면 오버레이 스택을 이용하여, 디스플레이 디바이스 (106) 상의 표면의 디스플레이에 대해 임의의 표면 오버레이 레벨을 할당할 수도 있다. 그 결과, 그래픽스 프로세싱 시스템 (102) 은, 디스플레이 디바이스 (206) 상에서 사용자에게의 디스플레이를 위해 오버레이될 수도 있는 2D, 3D 및/또는 비디오 표면 데이터를 제공할 수도 있다. 예를 들어, 표면 (300A) 이 도 3b 의 예에서 RGB 3D 이고, 표면 (300N) 이 YCbCr 비디오 표면이면, 이 표면들과 연관된 3D 및 비디오 표면 데이터는 디스플레이 디바이스 (106) 상에 디스플레이될 수도 있다 (여기서, YCbCr 비디오 표면 데이터는 디스플레이되기 이전에 RGB 포맷으로 변환된다). 몇몇 양태에서, 하나 이상의 컬러 공간에 대한 임의의 정의된 표면 포맷을 갖는 2D, 3D 및/또는 비디오 표면 데이터의 임의의 조합이 디스플레이 디바이스 (106) 상에 오버레이될 수도 있다.
도 4 는 일 양태에 따라, 도 1a 또는 도 1b 의 그래픽스 프로세싱 시스템 (102) 에 도시된 제어 프로세서 (108), 그래픽스 프로세서 (110) 및/또는 디스플레이 프로세서 (114) 중 하나 이상, 또는 도 2a 또는 도 2d 의 그래픽스 프로세싱 시스템 (202) 에 도시된 제어 프로세서 (208), 그래픽스 프로세서 (210) 및/또는 디스플레이 프로세서 (214) 중 하나 이상에 의해 수행될 수도 있는 방법의 흐름도이다. 이하의 설명에서만 예시하기 위해, 도 4 에 도시된 방법은 그래픽스 프로세싱 시스템 (102) 의 하나 이상의 프로세서에 의해 수행되는 것으로 가정한다.
먼저, 제어 프로세서 (108), 그래픽스 프로세서 (110) 및/또는 디스플레이 프로세서 (114) 중 하나 이상은 EGL 과 같은 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성한다 (도 4 의 400). 플랫폼 인터페이스 계층은 인터페이스로서 기능하고, OpenGL ES 또는 OpenVG 와 같은 클라이언트 렌더링 API 와 기본 네이티브 플랫폼 렌더링 API 사이에 놓인다. 컬러 공간이 YCbCr 컬러 공간을 포함하면, 표면은 YCbCr 표면일 수도 있다. 컬러 공간이 RGB 컬러 공간을 포함하면, 표면은 RGB 표면일 수도 있다.
제어 프로세서 (108), 그래픽스 프로세서 (110) 및/또는 디스플레이 프로세서 (114) 중 하나 이상은 플랫폼 인터페이스 계층을 이용하여 컬러 공간 내의 표면과 연관된 표면 데이터의 포맷 레이아웃을 특정할 수도 있다 (도 4 의 402). 포맷 레이아웃은 컬러 공간 내의 표면 데이터의 하나 이상의 컬러 성분의 순서화와 같은 레이아웃을 표시한다. 예를 들어, 표면이 YCbCr 표면이면, 포맷 레이아웃은 표면 데이터의 개별적인 Y, Cb, Cr 및 가능하게는 A (투명도) 컬러 성분의 순서화를 나타낼 수도 있다. 표면이 RGB 표면이면, 포맷 레이아웃은 표면 데이터의 개별적인 R, G 및 B 컬러 성분의 순서화를 나타낼 수도 있다. 표면 데이터 및 포맷 레이아웃 (포맷 데이터) 모두는 예를 들어, 저장 디바이스 (112) 에 저장될 수도 있다. 표면 데이터의 포맷 레이아웃은 또한, 디스플레이 디바이스 (106) 와 같은 디스플레이 디바이스 상에 표면을 디스플레이하기 위해 패턴 정보로서 제공될 수도 있다.
일 양태에서, 포맷 레이아웃은 제 1 평면 내에 하나 이상의 컬러 성분의 제 1 그룹의 제 1 레이아웃을 나타낼 수도 있다. 포맷 레이아웃은, 제 1 평면과는 상이한 제 2 평면 내의 하나 이상의 컬러 성분의 제 2 그룹의 제 2 레이아웃을 또한 나타낼 수도 있다. 제 1 그룹은 하나 이상의 컬러 성분 중 복수의 성분을 포함할 수도 있고, 제 1 레이아웃은 제 1 평면 내의 제 1 그룹의 컬러 성분의 순서화를 나타낼 수도 있다. 다양한 서로 다른 시나리오에서, 임의의 수의 포맷 레이아웃이 임의의 수의 서로 다른 평면 내에 특정될 수도 있다.
도 4 를 다시 참조하면, 404 에서, 프로세서들 중 하나 이상은 표면과 연관된 표면 데이터를 서로 다른 컬러 공간 내의 변환된 데이터로 변환하는데 이용하기 위해 컬러 변환 정보를 특정할 수도 있다. 예를 들어, 컬러 공간이 YCbCr 컬러 공간이고, 서로 다른 컬러 공간이 RGB 컬러 공간이면, 컬러 변환 정보가 이용되어, YCbCr 표면 데이터를 RGB 표면 데이터로 변환할 수도 있다.
406 에서, 하나 이상의 프로세서는 표면의 표면 렌더링을 수행하여 표면 데이터를 발생시킬 수도 있다. 그 후, 이 표면 데이터는 특정된 포맷 레이아웃에 따라 저장될 수도 있다.
도 5 는 일 양태에 따라, 도 1a 또는 도 1b 의 그래픽스 프로세싱 시스템 (102) 에 도시된 제어 프로세서 (108), 그래픽스 프로세서 (110) 및/또는 디스플레이 프로세서 (114) 중 하나 이상, 또는 도 2a 또는 도 2d 의 그래픽스 프로세싱 시스템 (202) 에 도시된 제어 프로세서 (208), 그래픽스 프로세서 (210) 및/또는 디스플레이 프로세서 (214) 중 하나 이상에 의해 수행될 수도 있는 방법의 흐름도이다. 이하의 설명에서만 예시하기 위해, 도 5 에 도시된 방법은 그래픽스 프로세싱 시스템 (102) 에서 하나 이상의 프로세서에 의해 수행되는 것으로 가정한다.
먼저, 제어 프로세서 (108), 그래픽스 프로세서 (110) 및/또는 디스플레이 프로세서 (114) 중 하나 이상은 제 1 포맷 레이아웃을 갖는 제 1 그래픽스 표면을 생성하고 (500), 제 2 포맷 레이아웃을 갖는 제 2 그래픽스 표면을 생성한다 (502). 몇몇 경우, 제 1 및 제 2 표면은 각각 2D 표면, 3D 표면 또는 비디오 표면을 포함할 수도 있다. 그 후, 프로세서 중 하나 이상은 제 1 표면의 표면 렌더링을 수행하고, 제 1 포맷 레이아웃에 따라 저장 디바이스 (112) 와 같은 저장 디바이스에 연관된 표면 데이터를 저장한다 (504). 506 에서, 제 2 표면의 표면 렌더링이 수행되고, 관련 표면 데이터는 제 2 포맷 레이아웃에 따라 저장된다. 508 에서, 프로세서 중 하나 이상은 오버레이 순서에 기초하여 제 1 표면 및 제 2 표면을 오버레이한다. 이러한 방식으로, 다수의 표면과 연관된 표면 데이터는 디스플레이 프로세서 (114) 에 의해 저장 디바이스 (112) 로부터 표면 오버레이 스택으로 판독될 수도 있고, 오버레이 순서에 따라 디스플레이 디바이스 (106) 상에 디스플레이를 위해 제공될 수도 있다.
전술한 바와 같이, 표면 생성 및 이용을 위한 멀티-포맷 지원은 시스템 (102) 및/또는 시스템 (202; 도 2a) 내의 하나 이상의 프로세서에 의해 구현될 수도 있다. 일 양태에서, 표면 생성 및 이용을 위한 멀티-포맷 지원을 구현하기 위한 기능은 하나 이상의 프로세서에 의해 실행되는 경우, API 라이브러리 (120) 및/또는 드라이버 (122) 내에 포함될 수도 있고, 또는 API 라이브러리 (220) 및/또는 드라이버 (222; 도 2a) 내에 포함될 수도 있다. 예를 들어, 이러한 기능은 표면 정보 API (238) 내에 포함될 수도 있고/있거나 (도 2b), 표면 정보 드라이버 (248) 내에 포함될 수도 있다 (도 2c). 일 양태에서, 이 기능은 EGL 확장과 같은 플랫폼 인터페이스 계층 확장의 일부로서 제공될 수도 있다. 이하의 설명에서만 예시하기 위해, 이러한 기능은 EGL 확장 (즉, EGL 규격으로의 확장) 의 일부로서 제공되는 것으로 가정한다.
일 양태에서, EGL 확장은 YCbCr 포맷의 다양한 형태를 지원할 수 있는 구성의 전달을 위해 제공된다. 구성의 변화에 부가하여, 확장은 또한 YCbCr 데이터의 포맷 레이아웃을 더 특정하기 위한 메커니즘, 및 그 표면이 추후 디스플레이 디바이스 (106) 에 포스팅되면 RGB 로의 컬러 포맷 변환을 위해 요구되는 정보를 정의할 수도 있다.
몇몇 경우, 디스플레이 디바이스 (106) 는 LCD 이외에 TV 디스플레이 디바이스일 수도 있다. 이 경우, RGB 표면은 오버레이 스택 내의 표면이 프로세싱되는 경우 YCbCr 표면으로 변환될 수도 있다.
이 양태의 EGL 확장에서, 추가적 YCbCr 포맷 데이터는, EGL 의 EGL_COLOR_BUFFER_TYPE 필드가 EGL_LUMINANCE_BUFFER 로 설정되는 구성에 적용될 수도 있다. 이 경우, EGL_SAMPLES 필드가 이용되어 YCbCr 표면에 대한 샘플링 비율을 나타낸다.
도 6 은 일 양태에 따라, YCbCr 표면 샘플링 구성 정보 (600) 가 YCbCr 표면에 대한 구성 및 샘플링 정보를 나타내기 위해 이용되는 경우의 일예를 도시한다. 이 양태에서, YCbCr 표면 샘플링 구성 정보 (600) 는 EGL_SAMPLES 필드에 대한 정보를 포함한다. 도 6 에 도시된 바와 같이, 최상위 바이트 (8 비트) 가 플래그로 이용된다. EGL_YCBCR_ENABLE, EGL_CBCR_COSITEEGL_CBCR_OFFSITE 가, 이용될 수도 있는 플래그 또는 토큰이다.
다음 2 개의 니블 (1 니블은 4 비트를 포함함) 은 각각 수평 및 수직 서브-샘플링 팩터를 정의한다. 하위 (즉, 최하위) 4 개의 니블은 휘도 (Y), 청색 색차 (Cb), 적색 색차 (Cr), 및 알파 (A) 투명도 샘플링 팩터를 각각 정의한다. 일 양태에서, EGL_YCBCR_ENABLE 플래그, 또는 토큰은 YCbCr 표면을 멀티-샘플링된 휘도 또는 휘도-알파 표면과 구별하는데 이용될 수 있다.
일 양태에서, EGL 확장은 YCbCr 표면 포맷 및 변환 프로세싱과 연관된 4 개의 새로운 함수 ("set" 및 "get" 함수를 포함함) 를 제공할 수도 있으며, 이하, 이를 더 상세히 설명한다. 이 4 개의 함수에 대한 예시적인 함수 선언은 다음과 같다.
EGLBoolean eglSurfaceYCbCrFormatQUALCOMM( EGLDisplay dpy,
EGLSurface surf,
const EGLYCbCrFormat *format );
EGLBoolean eglGetSurfaceYCbCrFormatQUALCOMM( EGLDisplay dpy,
EGLSurface surf,
EGLYCbCrFormat *format );
EGLBoolean eglSurfaceYCbCrConversionQUALCOMM( EGLDisplay dpy,
EGLSurface surf,
const EGLYCbCrConversion *conv );
EGLBoolean eglGetSurfaceYCbCrConversionQUALCOMM( EGLDisplay dpy,
EGLSurface surf,
EGLYCbCrConversion *conv );
eglSurfaceYCbCrFormatQUALCOMM 함수는 EGL YCbCr 표면에 대한 YCbCr 포맷을 설정한다. eglGetSurfaceYCbCrFormatQUALCOMM 함수는 EGL YCbCr 표면에 대한 YCbCr 포맷 데이터를 획득 또는 리턴한다. eglSurfaceYCbCrConversionQUALCOMM 함수는, EGL YCbCr 표면을 RGB 컬러 공간과 같은 다른 컬러 공간으로 변환시키는데 이용될 수도 있는 다양한 변환 파라미터들을 설정한다. eglGetSurfaceYCbCrConversionQUALCOMM 함수는 다양한 변환 파라미터들을 획득 또는 리턴한다. 이하, 이 함수들의 다양한 양태들을 더 상세히 설명한다.
일 양태에서, EGL 확장은 추가적이고 새로운 데이터 타입 구조를 제공한다. 이 구조는 변환 정보뿐만 아니라 YCbCr 표면 데이터의 포맷과 관련된다. 예시적인 데이터 구조는 다음과 같다.
typedef struct
{
EGLint order[2];
void *offset;
} EGLYCbCrPlaneFormat;
typedef struct
{
EGLYCbCrPlaneFormat plane[4];
} EGLYCbCrFormat;
typedef EGLint EGLfixed;
typedef struct
{
EGLint clamp_min[3];
EGLint clamp_max[3];
EGLint bias[3];
EGLfixed csc_matrix[9];
EGLfixed gamma;
} EGLYCbCrConversion;
EGL EGLSurface 데이터 구조는 YCbCr 표면에 대한 2 개의 추가적 타입의 멤버 EGLYCbCrFormat EGLYCbCrConversion 을 포함할 수도 있다. EGLYCbCrFormat 멤버는 YCbCr 표면에 대한 포매팅 정보를 제공하고, EGLYCbCrConversion 멤버는 YCbCr 표면에 대한 컬러 변환 정보를 제공하며, 이하, 이를 더 상세히 설명한다.
일 양태에서, EGL 확장은 추가적 토큰을 제공한다. 이 토큰을 이하 더 상세히 설명하며, 16 진수 형태로 나타낸다. 이 새로운 토큰들은 다음과 같다:
EGL_CBCR_OFFSITE 0x00000000
EGL_CBCR_COSITE 0x01000000
EGL_YCBCR_ENABLE 0x80000000
EGL_Y_BIT 0x00000001
EGL_CR_BIT 0x00000002
EGL_CB_BIT 0x00000004
EGL_ALPHA_BIT 0x00000008
EGL_YCBCR_ENABLE 플래그 또는 토큰은 YCbCr 표면을 멀티-샘플링된 휘도 또는 휘도-알파 표면으로부터 구별하는데 이용될 수 있다. 채도 샘플은 휘도 샘플과 코-사이트 (코-로케이트) 될 수도 있고, 인터폴레이트 (오프-사이트) 될 수도 있다. 코-사이트 토큰 EGL_CBCR_COSITE 또는 오프-사이트 토큰 EGL_CBCR_OFFSITE 는, EGL_YCBCR_ENABLE 토큰, 및 원하는 포맷에 매칭하는 EGL_SAMPLES 에 대한 값에 특정된 나머지 니블들과 논리 OR 될 수도 있다.
새로운 YCbCr 표면에 대한 특정 YCbCr 포맷을 설정하기 위해, YCbCr 데이터의 정확한 레이아웃을 정의하는 EGLYCbCrFormat 데이터에 의해 함수 eglSurfaceYCbCrFormatQUALCOMM 이 호출될 수도 있다. 데이터 구조 내의 평면 어레이의 각각의 엘리먼트는 잠재적으로 인터리빙된 컬러 성분의 평면을 나타낸다. EGLYCbCrPlaneFormat 구조의 order 변수는 EGL_Y_BIT, EGL_CR_BIT, EGL_CB_BIT, 또는 EGL_ALPHA_BIT 으로 설정된 각각의 니블을 가져서 그 평면 내의 컴포넌트의 순서를 나타낸다. (order 변수는 무부호일 수도 있는 2 개의 EGLint 의 어레이로서 예시적인 구조로 도시되어 있지만, 다양한 다른 타입 및 어레이 사이즈가 이용될 수도 있다.) EGLYCbCrFormat 구조는 4 개의 상이한 평면을 정의하지만, 임의의 수의 평면이 이용될 수 있다. order 변수는 제로-i번째 엘리먼트의 최상위 니블로부터 시작하여 채워질 수도 있다. 제로값을 갖는 니블이 발견되면, 일 양태에 따라, 그 패턴이 반복되는 것으로 가정되고 더 이상의 니블은 검사되지 않는다. 특정한 포맷이 일 구현에 의해 지원되지 않으면, EGL_FALSE 는 설정된 에러 없이 리턴될 수도 있다. 일 애플리케이션은 eglGetSurfaceYCbCrFormatQUALCOMM 을 호출하여 표면에 대해 현재 이용중인 포맷을 결정할 수도 있다.
특정한 YCbCr 컬러 변환을 설정하기 위해, 표면을 디스플레이 디바이스로 포스팅하는 경우 이용되는 클램프, 바이어스, 컬러 변환 매트릭스 및 감마값을 정의하는 EGLYCbCrConversion 데이터 구조에 의해 함수 eglSurfaceYCbCrConversionQUALCOMM 이 호출될 수도 있다. 일 애플리케이션은 eglGetSurfaceYCbCrConversionQUALCOMM 을 호출하여, 현재 이용중인 (클램프, 바이어스, 컬러 변환 매트릭스 및 감마 파라미터와 같은) 파라미터들을 결정할 수도 있다. 컬러공간 변환 매트릭스는 고정점 포맷을 이용할 수도 있고, 로우 메이저 포맷으로 저장될 수도 있다. (EGLfixed 타입은 S15.16 포맷을 갖는 것으로 해석될 수도 있는 32 비트 EGLint 일 수도 있다.) 특정한 경우, 국제 표준에 대응하는 값이 디폴트 값으로서 이용될 수도 있고, 2.22 의 디폴트 감마값이 이용될 수도 있다. 국제 표준 ITU 601 및 656 은 표준 바이어스값 및 컬러 공간 변환 매트릭스를 제공하여, 표준 해상도 TV 에 대해 RGB 컬러 공간과 다른 비디오 컬러 공간 (예를 들어, YCbCr) 사이에서 변환한다. 국내 표준 ITU (709) 는 표준 바이어스값 및 컬러 공간 변환 매트릭스를 제공하여, 고해상도 TV 에 대한 RGB 컬러 공간과 다른 비디오 컬러 공간 사이에서 변환한다. 그러나, 애플리케이션 및 애플리케이션 개발자는 클램프, 바이어스, 컬러 변환 매트릭스 및 감마 파라미터에 대해 임의의 값을 이용할 수 있는 완전한 융통성을 가져서, YCbCr 또는 다른 컬러 공간 표면의 RGB 포맷으로의 변환을 커스터마이징할 수도 있다.
EGL YCbCr 표면의 멀티-포맷 및 변환 능력을 지원하는 EGL 확장의 구현의 예를 제공하기 위해, 설명을 위해 전술한 다수의 함수, 구조 및 토큰을 이용하는 다음의 샘플 코드가 제공된다.
// YCbCr 표면에 대한 매칭 config 를 구성함
const EGLint attribs[3] =
{
EGL_SAMPLES, EGL_YCBCR_ENABLE,
EGL_NONE
}
// 모든 매칭 config 의 리스트를 획득함
eglChooseConfig( dpy, attribs, &configs, configs_size, &num_configs );
// 가용인 어떤 YCbCr 표면이 포맷에 매칭하는지 선택함
// 이것은 EGL_SAMPLES 필드에 대한 각각의 리턴된 config 를 문의하고
// 정확한 서명을 검색함으로써 행해짐
// 4:2:2:4 (H2V1) 코사이트에 대해, 서명은 0x81214224 임
// 이 예를 위해, 4:2:2:4 (H2V1) 포맷이 선택되었고 변수 'cfg' 에
// 할당되었다고 가정함
// 이 포맷으로 pixmap 을 생성함
// pix != EGL_NO_SURFACE 를 체크하기 위해 확인함
// YCbCrASurface 는 네이티브 pixmap 표면/타입 핸들임
pix = eglCreatePixmapSurface( dpy, cfg, YCbCrASurface, NULL );
// 포맷 패킹 순서, 이 경우 YCbCr 의 인터리빙된 평면 및
// Alpha 의 개별 평면을 설정함
const EGLYCbCrFormat fmt =
{
// 평면 0
{
{
EGL_Y_BIT << 28 | EGL_CB_BIT << 24 |
EGL_Y_BIT << 20 | EGL_CR_BIT << 16,
0
},
YCbCrOffset
},
// 평면 1
{
{
EGL_ALPHA_BIT << 28,
0
},
AOffset
},
// 평면 2
{
{
0,
0
},
(void*)0
},
// 평면 3
{
{
0,
0
},
(void*)0
}
};
// 포맷을 설정함
// 이 포맷이 플랫폼 상에서 지원되지 않으면 EGL_FALSE 를 리턴할 것임
eglSurfaceYCbCrFormatQUALCOMM( dpy, pix, &fmt );
// 이제 이 표면은 임의의 다른 EGL 표면과 같이 이용될 수 있어서;
// 예를 들어, 비디오를 pixmap 로 렌더링하기 위해 외부 디코더를 이용하고
// 표면 오버레이 확장을 이용하여
// 그 비디오 프레임을 EGL 애플리케이션으로 합성함
전술한 샘플 코드에서, EGL_SAMPLES 를 갖는 EGL_YCBCR_ENABLE 플래그를 이용하여 어트리뷰트의 리스트가 먼저 셋업된다. 다음으로, 모든 매칭 구성의 리스트가 획득된다. 이 샘플 코드에서, EGL_SAMPLES 에 대해 셋업된 포맷에 매칭하는 가용 YCbCr 표면이 선택되는 것으로 가정한다. 이것은, EGL_SAMPLES 필드에 대한 각각의 리턴 구성을 문의하고 정확한 서명을 검색함으로써 행해질 수도 있다. 이 샘플 코드에서는, 4:2:2:4 (H2V1) 포맷이 선택되었고 변수 'cfg' 에 할당되었다고 가정한다. 이 예시적인 샘플링 포맷에 대해, EGL_SAMPLES 에 대한 서명은 도 6 에 도시된 포맷에 대해 16 진수 0x81214224 일 수 있다. 이 경우, EGL_YCBCR_ENABLEEGL_CBCR_COSITE 비트가 설정되고, Hss (수평 서브-샘플링) 는 2 와 동일하고 (즉, 색차가 수평 방향에서 2 개의 픽셀당 1 번 샘플링되고), Vss (수직 서브-샘플링) 는 1 과 동일하고 (즉, 색차가 수직 방향에서 모든 픽셀마다 샘플링되고), 휘도 샘플링은 4/4 와 동일하고, 청색 색차 샘플링은 2/4 와 동일하고, 적색 색차 샘플링은 2/4 와 동일하고, 알파 샘플링은 4/4 와 동일하다.
다음으로, 샘플 코드에서, pixmap (오프-스크린) 표면이 이 포맷으로 생성된다. pixmap 표면은 A, 즉, Alpha (투명도) 를 이용하는 YCbCr 표면이다. 물론, 다른 형태의 표면이 생성될 수도 있다.
다음으로, YCbCr 데이터의 인터리빙된 평면 및 Alpha 의 개별 평면을 이용하여 표면 데이터에 대한 포맷 패킹 순서가 셋업된다. 이를 위해, 타입 EGLYCbCrFormat 의 변수 fmt 가 초기화된다. 이 예에서는, 오직 평면 제로 및 1 이 포맷 데이터와 파퓰레이트된다. 물론, 다른 예에서는, 평면들 중 하나 이상이 포맷 데이터와 파퓰레이트될 수도 있다. 또한, 인터리빙된 패턴, 평면 패턴, 의사-평면 패턴, 타일 패턴, 계층 타일 패턴, 또는 다른 형태의 패킹 패턴과 같은 컬러 성분의 임의의 타입의 패턴이 각각의 평면 내에 정의될 수도 있다. 또한, 몇몇 양태에서는, RGB 표면 데이터에 대한 포맷과 같은 다른 컬러 공간 포맷이 EGLYCbCrFormat 과 유사한 데이터 구조를 이용하는 것과 유사한 방식으로 정의되어, R, G 및 B 컬러 성분에 대한 포맷 패킹 순서를 셋업할 수도 있다.
샘플 코드를 다시 참조하면, 평면 제로는 Y, Cb 및 Cr 성분의 그룹에 대한 포맷 데이터를 포함한다. 평면 제로의 이러한 정의에 의해, Y, Cb 및 Cr 성분의 인터리빙된 패턴 또는 순서는 order 변수에 대해 EGL_Y_BIT, EGL_CB_BIT, EGL_Y_BITEGL_CR_BIT 를 이용하여 정의되며, 이 예에서는 4:2:2:4 (H2V1) 포맷이 이용되는 것으로 가정한다. 제로의 값이 order 변수 내에 제공되어 그 패턴이 반복되는 것을 나타낸다. 평면이 메모리에 임의적으로 저장되어 있으면, 참조를 위해 그 평면에 대한 직접적 오프셋 포인터로서 오프셋 포인터 YCbCrOffset 이 이용된다. 통상적으로, YCbCrOffset 은 제로일 것이지만, 필수적인 것은 아니다.
평면 1 은 알파 (투명도) 에 대한 포맷 데이터를 포함한다. 이 평면에서 포맷을 셋업하기 위해 오직 EGL_ALPHA_BIT 가 이용된다. 참조를 위해 평면 1 에 대한 직접적 오프셋 포인터로서 오프셋 포인터 AOffset 이 이용된다. 통상적으로, AOffset 은 제로가 아닐 것이지만, 필수적인 것은 아니다.
마지막으로, 샘플 코드에서, 표면 포맷은 eglSurfaceYCbCrFormatQUALCOMM 함수를 호출함으로써 셋업된다. 이 때, 표면은 임의의 다른 EGL 표면처럼 이용될 수도 있다. 표면은 2D, 3D 또는 비디오 표면을 포함할 수도 있고, 표면 오버레이 스택 내의 하나 이상의 추가적 표면과 결합되어, 디스플레이 디바이스 (106) 와 같은 디스플레이 디바이스 상에서의 디스플레이를 위해 버퍼 (160; 도 1a 또는 도 1b) 와 같은 프레임 버퍼 내의 데이터의 프레임을 합성할 수도 있다. EGL 은, EGLConfig 구조 내의 필드를 통해 특정한 표면에 대해 어떠한 API 가 지원되는지를 나타내는 메커니즘을 제공할 수도 있다.
도 1 내지 도 5 에 도시된 다양한 컴포넌트들은 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합에 의해 실현될 수도 있다. 도 1 내지 도 5 에서, 다양한 컴포넌트들은 개별적 유닛 또는 모듈로서 도시되어 있다. 그러나, 도 1a 내지 도 5 를 참조하여 설명한 다양한 컴포넌트들의 전부 또는 몇몇은 공통 하드웨어 및/또는 소프트웨어 내의 결합된 유닛 또는 모듈들로 통합될 수도 있다. 따라서, 컴포넌트들, 유닛들 또는 모듈들로서의 특성의 표현은 용이한 설명을 위해 특정한 기능적 특성을 강조하도록 의도된 것이며, 이러한 특성을 개별적 하드웨어 또는 소프트웨어 컴포넌트에 의해 실현할 것을 요구하는 것은 아니다. 몇몇 경우, 다양한 유닛들은 하나 이상의 프로세서에 의해 수행되는 프로그래머블 프로세스로서 구현될 수도 있다.
예를 들어, 본 출원에 개시된 기술의 다양한 양태들은 하나 이상의 범용 마이크로프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 기타 균등한 로직 디바이스 내에 구현될 수도 있다. 따라서, 본 명세서 사용되는 용어 "프로세서" 또는 "제어기" 는 전술한 임의의 구조 또는 본 명세서에서 설명하는 기술의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다.
본 명세서에서 설명하는 컴포넌트 및 기술은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 모듈 또는 컴포넌트로서 설명되는 임의의 특성은 통합된 로직 디바이스에서 함께 구현될 수도 있고, 또는 이산적이지만 상호협력하는 로직 디바이스로서 개별적으로 구현될 수도 있다. 다양한 양태에서, 이러한 컴포넌트들은 적어도 부분적으로, 집적 회로 칩 또는 칩셋과 같은 통합된 회로 디바이스로서 포괄적으로 지칭될 수도 있는 하나 이상의 통합된 회로 디바이스로서 형성될 수도 있다. 이러한 회로는 단일한 통합된 회로 칩 디바이스에 제공될 수도 있고, 또는 다수의 상호협력적인 통합된 회로 칩 디바이스에 제공될 수도 있으며, 임의의 다양한 이미지, 디스플레이, 오디오 또는 기타 멀티-미디어 애플리케이션 및 디바이스에서 이용될 수도 있다. 예를 들어, 몇몇 양태에서, 이러한 컴포넌트는 무선 통신 디바이스 핸드셋과 같은 이동 디바이스의 일부를 형성할 수도 있다.
소프트웨어로 구현되면, 이 기술은 적어도 부분적으로, 하나 이상의 프로세서에 의해 실행되는 경우 전술한 방법들 중 하나 이상을 수행하는 명령들 또는 코드를 포함하는 컴퓨터-판독가능 매체에 의해 실현될 수도 있다. 컴퓨터-판독가능 매체는 패키지 재료를 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터-판독가능 매체는, SDRAM (synchronous dynamic random access memory) 과 같은 랜덤 액세스 메모리 (RAM), ROM (read-only memory), NVRAM (non-volatile random access memory), EEPROM (electrically erasable programmable read-only memory), eDRAM (embedded Dynamic Random Access Memory), SRAM (static random access memory), FLASH 메모리, 자기 또는 광학 데이터 저장 매체를 포함할 수도 있다.
이 기술들은 추가적으로 또는 대안적으로 적어도 부분적으로, 명령들 또는 데이터 구조의 형태로 코드를 반송 또는 전달하고, 하나 이상의 프로세서에 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터-판독가능 통신 매체에 의해 실현될 수도 있다. 임의의 관련용어들이 컴퓨터-판독가능 매체를 적절하게 지칭할 수도 있다. 예를 들어, 동축 케이블, 광섬유 케이블, 트위스트 쌍, 디지털 가입자 라인 (DSL), 또는 적외선, 무선 및 전자파와 같은 무선 기술을 이용하여 소프트웨어가 웹사이트, 서버 또는 기타 원격 소스로부터 송신되면, 그 동축 케이블, 광섬유 케이블, 트위스트 쌍, DSL, 또는 적외선, 무선 및 전자파와 같은 무선 기술이 매체의 정의에 포함된다. 전술한 조합들은 또한 컴퓨터-판독가능 매체의 범주 내에 포함될 것이다. 이용되는 임의의 소프트웨어는 하나 이상의 DSP, 범용 마이크로프로세서, ASIC, FPGA, 또는 기타 균등한 통합되거나 이산적인 로직 회로와 같은 하나 이상의 프로세서에 의해 실행될 수도 있다.
본 출원의 다양한 양태를 설명하였다. 이러한 양태들 및 다른 양태들은 다음의 청구항의 범주에 속한다.

Claims (56)

  1. 클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와 네이티브 플랫폼 렌더링 API 사이에 존재하는 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성하는 단계; 및
    상기 플랫폼 인터페이스 계층을 이용하여 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 컬러 공간 내에 특정하는 단계를 포함하며,
    상기 포맷 레이아웃은 상기 컬러 공간 내의 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타내는, 방법.
  2. 제 1 항에 있어서,
    상기 플랫폼 인터페이스 계층은 임베딩된 그래픽스 라이브러리 (EGL) 계층을 포함하고,
    상기 클라이언트 렌더링 API 는 OpenGL (Open Graphics Library) API 또는 OpenVG (Open Vector Graphics) API 를 포함하는, 방법.
  3. 제 1 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 그래픽스 표면은 YCbCr 표면을 포함하고,
    상기 포맷 레이아웃은 데이터의 개별적 Y, Cb 및 Cr 성분의 순서를 나타내는, 방법.
  4. 제 1 항에 있어서,
    상기 포맷 레이아웃은 제 1 평면 내의 하나 이상의 컬러 성분의 제 1 그룹의 제 1 레이아웃을 나타내고, 상기 포맷 레이아웃은 상기 제 1 평면과는 다른 제 2 평면 내의 하나 이상의 컬러 성분의 제 2 그룹의 제 2 레이아웃을 더 나타내는, 방법.
  5. 제 4 항에 있어서,
    상기 제 1 그룹은 복수의 상기 하나 이상의 컬러 성분을 포함하고, 상기 제 1 레이아웃은 상기 제 1 평면 내의 상기 제 1 그룹의 복수의 컬러 성분의 순서를 나타내는, 방법.
  6. 제 1 항에 있어서,
    상기 그래픽스 표면과 연관된 데이터를 저장하는 단계; 및
    상기 데이터의 포맷 레이아웃을 포맷 데이터로서 저장하는 단계를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 그래픽스 표면을 디스플레이 디바이스 상에 디스플레이하기 위해, 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 패턴 정보로서 프로세서에 제공하는 단계를 더 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 그래픽스 표면과 연관된 데이터를 상이한 컬러 공간 내의 변환된 데이터로 변환하는데 이용하기 위해 컬러 변환 정보를 특정하는 단계를 더 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 상이한 컬러 공간은 적색, 녹색, 청색 (RGB) 컬러 공간을 포함하고,
    상기 변환된 데이터는 RGB 표면 데이터를 포함하는, 방법.
  10. 제 1 항에 있어서,
    상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내에 제 2 표면을 생성하는 단계;
    상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내의 상기 제 2 표면과 연관된 제 2 데이터의 제 2 포맷 레이아웃을 특정하는 단계로서, 상기 제 2 포맷 레이아웃은 상기 컬러 공간 내의 상기 제 2 데이터의 하나 이상의 컬러 성분의 제 2 레이아웃을 나타내는, 상기 제 2 데이터의 제 2 포맷 레이아웃을 특정하는 단계; 및
    오버레이 순서에 기초하여 상기 그래픽스 표면 및 상기 제 2 표면을 오버레이하는 단계를 더 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 그래픽스 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하고,
    상기 제 2 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하는, 방법.
  12. 제 1 항에 있어서,
    상기 컬러 공간 내에 상기 그래픽스 표면을 생성하는 단계는 상기 그래픽스 표면과 연관된 데이터에 대한 샘플링 구성 정보를 제공하는 단계를 포함하는, 방법.
  13. 제 1 항에 있어서,
    상기 그래픽스 표면의 표면 렌더링을 수행하여, 상기 그래픽스 표면과 연관된 데이터를 발생시키는 단계; 및
    상기 데이터를 상기 포맷 레이아웃에 따라 저장하는 단계를 더 포함하는, 방법.
  14. 제 1 항에 있어서,
    상기 방법은 하나 이상의 프로세서에 의해 수행되고,
    상기 하나 이상의 프로세서 각각은 디스플레이 프로세서, 그래픽스 프로세서 또는 제어 프로세서를 포함하는, 방법.
  15. 하나 이상의 프로그래머블 프로세서로 하여금,
    클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와 네이티브 플랫폼 렌더링 API 사이에 존재하는 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성하게 하고,
    상기 플랫폼 인터페이스 계층을 이용하여 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 컬러 공간 내에 특정하게 하는 명령들을 포함하며,
    상기 포맷 레이아웃은 상기 컬러 공간 내의 상기 그래픽스 표면과 연관된 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타내는, 컴퓨터-판독가능 매체.
  16. 제 15 항에 있어서,
    상기 플랫폼 인터페이스 계층은 임베딩된 그래픽스 라이브러리 (EGL) 계층을 포함하고,
    상기 클라이언트 렌더링 API 는 OpenGL (Open Graphics Library) API 또는 OpenVG (Open Vector Graphics) API 를 포함하는, 컴퓨터-판독가능 매체.
  17. 제 15 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 그래픽스 표면은 YCbCr 표면을 포함하고,
    상기 포맷 레이아웃은 데이터의 개별적 Y, Cb 및 Cr 성분의 순서를 나타내는, 컴퓨터-판독가능 매체.
  18. 제 15 항에 있어서,
    상기 포맷 레이아웃은 제 1 평면 내의 하나 이상의 컬러 성분의 제 1 그룹의 제 1 레이아웃을 나타내고, 상기 포맷 레이아웃은 상기 제 1 평면과는 다른 제 2 평면 내의 하나 이상의 컬러 성분의 제 2 그룹의 제 2 레이아웃을 더 나타내는, 컴퓨터-판독가능 매체.
  19. 제 18 항에 있어서,
    상기 제 1 그룹은 복수의 상기 하나 이상의 컬러 성분을 포함하고, 상기 제 1 레이아웃은 상기 제 1 평면 내의 상기 제 1 그룹의 복수의 컬러 성분의 순서를 나타내는, 컴퓨터-판독가능 매체.
  20. 제 15 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서로 하여금,
    상기 그래픽스 표면과 연관된 데이터를 저장하게 하고,
    상기 데이터의 포맷 레이아웃을 포맷 데이터로서 저장하게 하는 명령들을 더 포함하는, 컴퓨터-판독가능 매체.
  21. 제 15 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서로 하여금,
    상기 그래픽스 표면을 디스플레이 디바이스 상에 디스플레이하기 위해, 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 패턴 정보로서 프로세서에 제공하게 하는 명령들을 더 포함하는, 컴퓨터-판독가능 매체.
  22. 제 15 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서로 하여금,
    상기 그래픽스 표면과 연관된 데이터를 상이한 컬러 공간 내의 변환된 데이터로 변환하는데 이용하기 위해 컬러 변환 정보를 특정하게 하는 명령들을 더 포함하는, 컴퓨터-판독가능 매체.
  23. 제 22 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 상이한 컬러 공간은 적색, 녹색, 청색 (RGB) 컬러 공간을 포함하고,
    상기 변환된 데이터는 RGB 표면 데이터를 포함하는, 컴퓨터-판독가능 매체.
  24. 제 15 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서로 하여금,
    상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내에 제 2 표면을 생성하게 하고;
    상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내의 상기 제 2 표면과 연관된 제 2 데이터의 제 2 포맷 레이아웃을 특정하게 하고;
    오버레이 순서에 기초하여 상기 그래픽스 표면 및 상기 제 2 표면을 오버레이하게 하는 명령들을 더 포함하며,
    상기 제 2 포맷 레이아웃은 상기 컬러 공간 내의 상기 제 2 데이터의 하나 이상의 컬러 성분의 제 2 레이아웃을 나타내는, 컴퓨터-판독가능 매체.
  25. 제 24 항에 있어서,
    상기 그래픽스 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하고,
    상기 제 2 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하는, 컴퓨터-판독가능 매체.
  26. 제 15 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서로 하여금 상기 그래픽스 표면을 상기 컬러 공간 내에 생성하게 하는 명령들은 상기 하나 이상의 프로그래머블 프로세서로 하여금 상기 그래픽스 표면과 연관된 데이터에 대한 샘플링 구성 정보를 제공하게 하는 명령들을 포함하는, 컴퓨터-판독가능 매체.
  27. 제 15 항에 있어서,
    상기 하나 이상의 프로그래머블 프로세서로 하여금,
    상기 그래픽스 표면의 표면 렌더링을 수행하여, 상기 그래픽스 표면과 연관된 데이터를 발생시키게 하고,
    상기 데이터를 상기 포맷 레이아웃에 따라 저장하게 하는 명령들을 더 포함하는, 컴퓨터-판독가능 매체.
  28. 표면 정보를 저장하도록 구성된 저장 디바이스; 및
    클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와 네이티브 플랫폼 렌더링 API 사이에 존재하는 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성하도록 구성된 하나 이상의 프로세서를 포함하며,
    상기 하나 이상의 프로세서는, 상기 플랫폼 인터페이스 계층을 이용하여 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 컬러 공간 내에 특정하고, 상기 포맷 레이아웃을 상기 저장 디바이스의 표면 정보 내에 저장하도록 더 구성되고, 상기 포맷 레이아웃은 상기 컬러 공간 내의 상기 그래픽스 표면과 연관된 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타내는, 디바이스.
  29. 제 28 항에 있어서,
    상기 플랫폼 인터페이스 계층은 임베딩된 그래픽스 라이브러리 (EGL) 계층을 포함하고,
    상기 클라이언트 렌더링 API 는 OpenGL (Open Graphics Library) API 또는 OpenVG (Open Vector Graphics) API 를 포함하는, 디바이스.
  30. 제 28 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 그래픽스 표면은 YCbCr 표면을 포함하고,
    상기 포맷 레이아웃은 상기 그래픽스 표면과 연관된 데이터의 개별적 Y, Cb 및 Cr 성분의 순서를 나타내는, 디바이스.
  31. 제 28 항에 있어서,
    상기 포맷 레이아웃은 제 1 평면 내의 하나 이상의 컬러 성분의 제 1 그룹의 제 1 레이아웃을 나타내고, 상기 포맷 레이아웃은 상기 제 1 평면과는 다른 제 2 평면 내의 하나 이상의 컬러 성분의 제 2 그룹의 제 2 레이아웃을 더 나타내는, 디바이스.
  32. 제 31 항에 있어서,
    상기 제 1 그룹은 복수의 상기 하나 이상의 컬러 성분을 포함하고, 상기 제 1 레이아웃은 상기 제 1 평면 내의 상기 제 1 그룹의 복수의 컬러 성분의 순서를 나타내는, 디바이스.
  33. 제 28 항에 있어서,
    상기 하나 이상의 프로세서는 상기 그래픽스 표면과 연관된 데이터를 상기 저장 디바이스에 저장하고, 상기 그래픽스 표면관 연관된 데이터의 포맷 레이아웃을 포맷 데이터로서 상기 저장 디바이스에 저장하도록 더 구성되는, 디바이스.
  34. 제 28 항에 있어서,
    디스플레이 디바이스를 더 포함하고,
    상기 하나 이상의 프로세서는, 상기 디스플레이 디바이스 상에 상기 그래픽스 표면을 디스플레이하기 위해, 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 패턴 정보로서 제공하도록 더 구성되는, 디바이스.
  35. 제 28 항에 있어서,
    상기 하나 이상의 프로세서는, 상기 그래픽스 표면과 연관된 데이터를 상이한 컬러 공간 내의 변환된 데이터로 변환하는데 이용하기 위해 컬러 변환 정보를 특정하도록 더 구성되는, 디바이스.
  36. 제 35 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 상이한 컬러 공간은 적색, 녹색, 청색 (RGB) 컬러 공간을 포함하고,
    상기 변환된 데이터는 RGB 표면 데이터를 포함하는, 디바이스.
  37. 제 28 항에 있어서,
    상기 하나 이상의 프로세서는, 상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내에 제 2 표면을 생성하고, 상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내의 상기 제 2 표면과 연관된 제 2 데이터의 제 2 포맷 레이아웃을 특정하고, 오버레이 순서에 기초하여 상기 그래픽스 표면 및 상기 제 2 표면을 오버레이하도록 더 구성되고, 상기 제 2 포맷 레이아웃은 상기 컬러 공간 내의 상기 제 2 데이터의 하나 이상의 컬러 성분의 제 2 레이아웃을 나타내는, 디바이스.
  38. 제 37 항에 있어서,
    상기 그래픽스 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하고,
    상기 제 2 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하는, 디바이스.
  39. 제 28 항에 있어서,
    상기 하나 이상의 프로세서가 상기 컬러 공간 내에 상기 그래픽스 표면을 생성하도록 구성되는 경우, 상기 하나 이상의 프로세서는 상기 그래픽스 표면과 연관된 데이터에 대한 샘플링 구성 정보를 제공하도록 더 구성되는, 디바이스.
  40. 제 28 항에 있어서,
    상기 하나 이상의 프로세서는, 상기 그래픽스 표면의 표면 렌더링을 수행하여, 상기 그래픽스 표면과 연관된 데이터를 발생시키고, 상기 데이터를 상기 포맷 레이아웃에 따라 저장하도록 더 구성되는, 디바이스.
  41. 제 28 항에 있어서,
    상기 하나 이상의 프로세서 각각은 디스플레이 프로세서, 그래픽스 프로세서 또는 제어 프로세서를 포함하는, 디바이스.
  42. 제 28 항에 있어서,
    상기 디바이스는, 무선 통신 디바이스 핸드셋, 개인용 컴퓨터 또는 랩탑 디바이스를 포함하는, 디바이스.
  43. 제 28 항에 있어서,
    상기 디바이스는 하나 이상의 집적 회로 디바이스를 포함하는, 디바이스.
  44. 클라이언트 렌더링 애플리케이션 프로그램 인터페이스 (API) 와 네이티브 플랫폼 렌더링 API 사이에 존재하는 플랫폼 인터페이스 계층을 통해 그래픽스 표면을 생성하는 수단; 및
    상기 플랫폼 인터페이스 계층을 이용하여 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 컬러 공간 내에 특정하는 수단을 포함하며,
    상기 포맷 레이아웃은 상기 컬러 공간 내의 상기 그래픽스 표면과 연관된 데이터의 하나 이상의 컬러 성분의 레이아웃을 나타내는, 디바이스.
  45. 제 44 항에 있어서,
    상기 플랫폼 인터페이스 계층은 임베딩된 그래픽스 라이브러리 (EGL) 계층을 포함하고,
    상기 클라이언트 렌더링 API 는 OpenGL (Open Graphics Library) API 또는 OpenVG (Open Vector Graphics) API 를 포함하는, 디바이스.
  46. 제 44 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 그래픽스 표면은 YCbCr 표면을 포함하고,
    상기 포맷 레이아웃은 데이터의 개별적 Y, Cb 및 Cr 성분의 순서를 나타내는, 디바이스.
  47. 제 44 항에 있어서,
    상기 포맷 레이아웃은 제 1 평면 내의 하나 이상의 컬러 성분의 제 1 그룹의 제 1 레이아웃을 나타내고, 상기 포맷 레이아웃은 상기 제 1 평면과는 다른 제 2 평면 내의 하나 이상의 컬러 성분의 제 2 그룹의 제 2 레이아웃을 더 나타내는, 디바이스.
  48. 제 47 항에 있어서,
    상기 제 1 그룹은 복수의 상기 하나 이상의 컬러 성분을 포함하고, 상기 제 1 레이아웃은 상기 제 1 평면 내의 상기 제 1 그룹의 복수의 컬러 성분의 순서를 나타내는, 디바이스.
  49. 제 44 항에 있어서,
    상기 그래픽스 표면과 연관된 데이터를 저장하는 수단; 및
    상기 데이터의 포맷 레이아웃을 포맷 데이터로서 저장하는 수단을 더 포함하는, 디바이스.
  50. 제 44 항에 있어서,
    상기 그래픽스 표면을 디스플레이 디바이스 상에 디스플레이하기 위해, 상기 그래픽스 표면과 연관된 데이터의 포맷 레이아웃을 패턴 정보로서 프로세서에 제공하는 수단을 더 포함하는, 디바이스.
  51. 제 44 항에 있어서,
    상기 그래픽스 표면과 연관된 데이터를 상이한 컬러 공간 내의 변환된 데이터로 변환하는데 이용하기 위해 컬러 변환 정보를 특정하는 수단을 더 포함하는, 디바이스.
  52. 제 51 항에 있어서,
    상기 컬러 공간은 휘도, 청색 색차, 적색 색차 (YCbCr) 컬러 공간을 포함하고,
    상기 상이한 컬러 공간은 적색, 녹색, 청색 (RGB) 컬러 공간을 포함하고,
    상기 변환된 데이터는 RGB 표면 데이터를 포함하는, 디바이스.
  53. 제 44 항에 있어서,
    상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내에 제 2 표면을 생성하는 수단;
    상기 플랫폼 인터페이스 계층을 이용하여 상기 컬러 공간 내의 상기 제 2 표면과 연관된 제 2 데이터의 제 2 포맷 레이아웃을 특정하는 수단으로서, 상기 제 2 포맷 레이아웃은 상기 컬러 공간 내의 상기 제 2 데이터의 하나 이상의 컬러 성분의 제 2 레이아웃을 나타내는, 상기 제 2 데이터의 제 2 포맷 레이아웃을 특정하는 수단; 및
    오버레이 순서에 기초하여 상기 그래픽스 표면 및 상기 제 2 표면을 오버레이하는 수단을 더 포함하는, 디바이스.
  54. 제 53 항에 있어서,
    상기 그래픽스 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하고,
    상기 제 2 표면은 2 차원 표면, 3 차원 표면 또는 비디오 표면을 포함하는, 디바이스.
  55. 제 44 항에 있어서,
    상기 컬러 공간 내에 상기 그래픽스 표면을 생성하는 수단은 상기 그래픽스 표면과 연관된 데이터에 대한 샘플링 구성 정보를 제공하는 수단을 포함하는, 디바이스.
  56. 제 44 항에 있어서,
    상기 그래픽스 표면의 표면 렌더링을 수행하여, 상기 그래픽스 표면과 연관된 데이터를 발생시키는 수단; 및
    상기 데이터를 상기 포맷 레이아웃에 따라 저장하는 수단을 더 포함하는, 디바이스.
KR1020107018298A 2008-01-18 2009-01-16 그래픽스 프로세싱 시스템에서 표면 생성을 위한 멀티-포맷 지원 KR20100103703A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US2219308P 2008-01-18 2008-01-18
US61/022,193 2008-01-18
US12/116,060 US20090184977A1 (en) 2008-01-18 2008-05-06 Multi-format support for surface creation in a graphics processing system
US12/116,060 2008-05-06

Publications (1)

Publication Number Publication Date
KR20100103703A true KR20100103703A (ko) 2010-09-27

Family

ID=40876127

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107018298A KR20100103703A (ko) 2008-01-18 2009-01-16 그래픽스 프로세싱 시스템에서 표면 생성을 위한 멀티-포맷 지원

Country Status (10)

Country Link
US (1) US20090184977A1 (ko)
EP (1) EP2248107A1 (ko)
JP (1) JP2011510406A (ko)
KR (1) KR20100103703A (ko)
CN (1) CN101911126A (ko)
BR (1) BRPI0906950A2 (ko)
CA (1) CA2711586A1 (ko)
RU (1) RU2010134404A (ko)
TW (1) TW200943222A (ko)
WO (1) WO2009092020A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101520067B1 (ko) * 2008-10-02 2015-05-13 삼성전자 주식회사 윈도우 시스템을 구현한 그래픽 처리 방법 및 그 장치
US8754908B2 (en) 2011-06-07 2014-06-17 Microsoft Corporation Optimized on-screen video composition for mobile device
US9232177B2 (en) * 2013-07-12 2016-01-05 Intel Corporation Video chat data processing
US20150379679A1 (en) * 2014-06-25 2015-12-31 Changliang Wang Single Read Composer with Outputs
US20160104308A1 (en) 2014-10-14 2016-04-14 Microsoft Technology Licensing, Llc. Performance optimization for data visualization

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030206180A1 (en) * 2001-10-05 2003-11-06 Ehlers Richard L. Color space rendering system and method
US6919901B2 (en) * 2002-01-15 2005-07-19 International Business Machines Corporation Graphics system register data generation
US20040257305A1 (en) * 2003-03-28 2004-12-23 Jin-Wen Liao Plasma display with changeable modules
US7643675B2 (en) * 2003-08-01 2010-01-05 Microsoft Corporation Strategies for processing image information using a color information data structure
US7649539B2 (en) * 2004-03-10 2010-01-19 Microsoft Corporation Image formats for video capture, processing and display
US7312800B1 (en) * 2005-04-25 2007-12-25 Apple Inc. Color correction of digital video images using a programmable graphics processing unit

Also Published As

Publication number Publication date
CA2711586A1 (en) 2009-07-23
US20090184977A1 (en) 2009-07-23
WO2009092020A1 (en) 2009-07-23
BRPI0906950A2 (pt) 2015-07-14
TW200943222A (en) 2009-10-16
EP2248107A1 (en) 2010-11-10
JP2011510406A (ja) 2011-03-31
CN101911126A (zh) 2010-12-08
RU2010134404A (ru) 2012-02-27

Similar Documents

Publication Publication Date Title
CN106611435B (zh) 动画处理方法和装置
JP5166552B2 (ja) グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート
US9058685B2 (en) Method and system for controlling a 3D processor using a control list in memory
US8692848B2 (en) Method and system for tile mode renderer with coordinate shader
US6483505B1 (en) Method and apparatus for multipass pixel processing
US20100060652A1 (en) Graphics rendering system
US20040189651A1 (en) Programmable graphics system and method using flexible, high-precision data formats
US20110216069A1 (en) Method And System For Compressing Tile Lists Used For 3D Rendering
JP2010527077A (ja) レンダリング後のグラフィックスオーバーレイ
US6763176B1 (en) Method and apparatus for real-time video editing using a graphics processor
KR20200052846A (ko) 데이터 처리 시스템
TW200844897A (en) Processor with adaptive multi-shader
JP2018512644A (ja) 低品質タイルを使用してメモリ帯域幅を減らすためのシステムおよび方法
US20080024510A1 (en) Texture engine, graphics processing unit and video processing method thereof
KR20100103703A (ko) 그래픽스 프로세싱 시스템에서 표면 생성을 위한 멀티-포맷 지원
US6927778B2 (en) System for alpha blending and method thereof
EP4290464A1 (en) Image rendering method and apparatus, and electronic device and storage medium
CN111726594A (zh) 一种高效优化渲染及与位姿反畸变融合的实现方法
JP2010519796A (ja) データ・チャネル情報のプログラム可能なパターンに基づく解凍及び圧縮
US7109999B1 (en) Method and system for implementing programmable texture lookups from texture coordinate sets
CN107209926B (zh) 具有拜耳映射的图形处理单元
CN117453170B (zh) 一种显示控制方法、装置及存储介质
CN109803163B (zh) 图像展示方法及其装置、存储介质
KR101337558B1 (ko) 고해상도 영상 또는 입체 영상의 허브기능을 구비한 모바일단말기 및 그 모바일단말기를 이용하여 고해상도 영상 또는 입체 영상 제공 방법
KR20230053597A (ko) 이미지-공간 함수 전송

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application