KR101071073B1 - 퀵 픽셀 렌더링 프로세싱 - Google Patents

퀵 픽셀 렌더링 프로세싱 Download PDF

Info

Publication number
KR101071073B1
KR101071073B1 KR1020097013029A KR20097013029A KR101071073B1 KR 101071073 B1 KR101071073 B1 KR 101071073B1 KR 1020097013029 A KR1020097013029 A KR 1020097013029A KR 20097013029 A KR20097013029 A KR 20097013029A KR 101071073 B1 KR101071073 B1 KR 101071073B1
Authority
KR
South Korea
Prior art keywords
sub
processing
pixels
display area
screen
Prior art date
Application number
KR1020097013029A
Other languages
English (en)
Other versions
KR20090082512A (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 KR20090082512A publication Critical patent/KR20090082512A/ko
Application granted granted Critical
Publication of KR101071073B1 publication Critical patent/KR101071073B1/ko

Links

Images

Classifications

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

Abstract

마지막 스테이지 (픽셀 렌더링) 에서 서브-스크린들의 픽셀들을 병렬 및 독립적으로 프로세싱하는 3-차원 (3D) 그래픽 파이프라인에 관한 것이다. 서브-스크린 태스크들이 공유 메모리의 리스트에 저장된다. 공유 메모리는 픽셀 렌더링을 위해 설계된 복수의 프로세싱 쓰레드들에 의해 액세스된다. 프로세싱 쓰레드들은 순서대로 서브-스크린들 태스크를 포착 및 잠그며, 스크린상의 디스플레이를 위해 비트맵을 생성하도록 태스크들을 프로세싱한다. 태스크들은 그 위에 중첩된 정점 정보를 갖는 디스플레이 영역을 MxN 서브-스크린 태스크들로 분할함에 의해 생성된다. 시스템 프로파일링에 기초하여, M 및 N 은 다양해질 수도 있다.
픽셀 렌더링, 프로세싱 쓰레드

Description

퀵 픽셀 렌더링 프로세싱{QUICK PIXEL RENDERING PROCESSING}
배경
I. 기술분야
본 개시는 일반적으로 이미지 프로세싱에 관한 것이고, 더 상세하게는 전용 하드웨어 그래픽 가속기 없이 퀵 픽셀 렌더링 프로세싱을 제공하기 위한 3-차원 (3D) 그래픽 파이프라인에 대한 기술들에 관한 것이다.
II . 배경 기술
3D 객체들에 대한 정보를 디스플레이될 수 있는 비트맵으로 변경하는 것은 픽셀 렌더링으로 알려져 있고, 상당한 메모리 및 프로세싱 전력을 요구한다. 과거에는, 3D 그래픽이 강력한 워크스테이션들에서만 이용가능했지만, 지금은 3차원 그래픽 가속기들이 퍼스널 컴퓨터 (PC) 에서 보통 발견된다. 하드웨어 그래픽 가속기는 메모리 (예를 들어, IRAM (instruction random access memory)) 및 다수의 3D 렌더링 동작들을 처리하기 위한 특화된 마이크로프로세서를 포함한다. 데스크탑들을 위한 Open GL® (Open Graphics Library) 은 3D 및 2D 컴퓨터 그래픽을 생성하는 애플리케이션들을 기입하기 위한 애플리케이션 프로그래밍 인터페이스 (API) 를 정의한다. API 는 프리미티브 (primitive) 들로부터의 복잡한 3-차원 신 (scene) 들을 묘화하기 위한 수백의 기능들을 포함한다.
OpenGL® ES 는 소프트웨어와 그래픽 간의 인터페이스를 생성하는 데스크탑 OpenGL® 의 서브세트 (subset) 이다. 3D 그래픽 엔진 (OpenGL®ES) 은 일반적으로 2개의 부분들로 구현된다. 제 1 부분은 정점을 프로세싱하는 그 기능들을 포함하고, 통상적으로 디지털 신호 프로세스 (DSP) 펌웨어에서 구현된다. 제 2 부분은 픽셀 렌더링에 대한 그 기능들을 포함하고, 전용 하드웨어 그래픽 가속기에서 구현된다. 픽셀 렌더링을 수행하는 제 2 부분은 종래의 3D 그래픽 엔진의 마지막 파이프라인 스테이지이다. 그 마지막 파이프라인 스테이지는 그래픽 이미지의 픽셀 표현을 생성하도록 입력 삼각형 세트들을 프로세싱한다. 하지만, 마지막 파이프라인 스테이지는 통상적으로 엔진에서 전체 3D 그래픽 파이프라인의 성능 병목이다. 그러므로, 픽셀 렌더링에 대한 마지막 파이프라인의 (초당 픽셀 단위의) 성능을 개선하는 것이 매우 중요하다.
통상적으로, 픽셀 렌더링 동작들 동안, 각 입력 삼각형은 삼각형들이 입력된 것과 동일한 순서로 순차적으로 프로세싱될 필요가 있다. 따라서, 다중-쓰레드 (multi-thread) 들이 있는 프로세서가 입력 삼각형을 프로세싱하도록 인터리브 (interleave) 된 병렬 프로세싱을 이용하는 것이 방지된다.
게다가, 하드웨어 그래픽 가속기들은 일반적으로 유연하지 않고 쉽게 스케일러블 (scalable) 하지도 않는다. 따라서, 하드웨어 그래픽 가속기들은 쉽게 새로운 특징들을 추가할 수 없고, (OpenGL®ES 1.0, 1.1 ... 과 같은) 3D 그래픽 표준의 더 높은 버전들을 지원할 수 없고, 상이한 애플리케이션 구성들을 지원할 수 없으며, 요구들을 맞출 수 없다. 게다가, 하드웨어 그래픽 가속기들은, 실리콘 비용 및 시스템 파워 소비를 최적화하기 위한 상이한 수행 요건들 (프레임 레이트, 스크린 사이즈, 픽셀 레이트, 삼각형 레이트 등...) 에 대해 쉽게 스케일링되지 않는다.
쉽게 보여질 수 있는 바와 같이, 전용 하드웨어 그래픽 가속기는 이동 전화기 또는 셀룰러 전화기와 같은 소형 핸드헬드 디바이스들에서 실리콘 영역을 차지한다. 따라서, 전용 하드웨어 그래픽 가속기는 그 전용 하드웨어 그래픽 가속기 및 사용된 IRAM 의 포함에 의해 핸드헬드 컴퓨팅 디바이스의 전체 비용을 증가시킨다. 전용 하드웨어 그래픽 가속기의 사용은 또한, 오버헤드 (overhead) 를 추가하고 전력을 소비하는 DSP 로 데이터 트래픽을 생성한다.
그러므로, 전용 하드웨어 그래픽 가속기 없이 더 신속한 픽셀 렌더링 프로세싱을 제공하는 3-차원 (3D) 그래픽 파이프라인에 대한 기술들에 대한 당업계에서의 요구가 있다.
개요
전용 하드웨어 그래픽 가속기 없이 더 신속한 픽셀 렌더링 프로세싱을 제공하는 3-차원 (3D) 그래픽 파이프라인에 대한 기술들이 본 명세서에 개시된다. 일 실시형태에서, 3-차원 (3D) 그래픽 파이프라인은 3D 그래픽 이미지에 대한 정점 정보를 출력하도록 동작가능한 정점 프로세싱 스테이지를 포함한다. 디스플레이 서브-분할 (sub-dividing) 스테이지가, 중첩된 출력 정점 정보를 갖는 디스플레이 영역내의 픽셀들을 서브-스크린 (sub-screen) 들로 분할하며, 그 서브-스크린들 은 서브-스크린 태스크 리스트를 형성한다. 픽셀 렌더링 스테이지는 서브-스크린 태스크 리스트의 다중 서브-스크린 태스크들을 병렬 및 독립적으로 프로세싱한다.
다른 양태에서, 무선 디바이스가 복수의 프로세싱 쓰레드들, 그 프로세싱 쓰레드들에 의해 액세스 (access) 되는 공유 메모리 및 프로세서를 갖는 디지털 신호 프로세서를 갖는다. 프로세서는 공유 메모리에 저장된 서브-스크린 태스크 리스트의 다중 서브-스크린 태스크들의 그 픽셀들을 병렬 및 독립적으로 프로세싱함에 의해 전용 그래픽 가속기 없이 픽셀 렌더링을 수행하도록 동작 가능하다. 서브-스크린 태스크는 중첩된 정점 출력 정보를 갖는 디스플레이 영역의 픽셀들의 일부분을 포함한다.
본 개시의 다양한 양태들 및 실시형태들이 이하에 더 상세하게 기술된다.
도면의 간단한 설명
본 개시의 양태들 및 실시형태들은, 동일한 도면 부호들이 완전히 대응하게 식별하는 도면들과 관련하여 사용될 때, 이하에서 설명되는 상세한 설명으로부터 더 명백해질 것이다.
도 1은 3D 촬상 (imaging) 장치의 일반적인 블록 다이어그램을 예시한다.
도 2는 공유 메모리와 인터페이싱된 인터리브된 다중-쓰레딩 프로세서를 예시한다.
도 3은 도시된 각 쓰레드의 상세들과 함께 인터리브된 다중-쓰레딩 프로세서 의 상세들을 예시한다.
도 4는 실행 시간 대, 6개의 쓰레드들이 있는 다중-쓰레딩 프로세서에 의해 프로세싱되는 인터리브된 명령들의 코어 (core) 파이프라인의 그래프를 예시한다.
도 5는 2개의 쓰레드들에 의해 프로세싱되는 2개의 병렬 명령 세트들을 예시한다.
도 6은 예시적인 3D 촬상 장치의 3D 그래픽 파이프라인의 일반적인 흐름 다이어그램을 예시한다.
도 7은 3D 그래픽 파이프라인의 프로세스들의 일반적인 블록 다이어그램을 예시한다.
도 8A 는 M>1 및 N>1 인 MxN 격자로 서브-분할되는 디스플레이 공간을 예시한다.
도 8B 는 도 8A 의 서브-분할된 디스플레이 공간을 프로세싱하는 것에 대한 태스크 리스트를 예시한다.
도 9는 M=1 및 N>1 인 MxN 격자로 서브-분할되는 디스플레이 공간을 예시한다.
도 10은 M>1 및 N=1 인 MxN 격자로 서브-분할되는 디스플레이 공간을 예시한다.
도 11은 정점 좌표에 의해 복수의 픽셀들로 정의된 삼각형을 예시한다.
도 12는 4개의 서브-분할된 영역들의 세트로 서브-분할된 영역 내의 삼각형을 프로세싱하는 것에 대한 명령 동작들의 그래픽 표현을 예시한다.
도 13은 다중-쓰레딩 프로세서를 사용한 3D 그래픽 파이프라인 방법의 흐름도를 예시한다.
상세한 설명
단어 "예시적인" 은 본 명세서에서 "실시예, 보기, 또는 예시로서 기능하는" 을 의미하는데 사용된다. "예시적인" 으로 본 명세서에 기술된 임의의 실시형태 또는 설계는 다른 실시형태들 또는 설계들보다 선호된다거나 유익하다는 것으로 반드시 해석될 필요는 없다.
다수의 게임 애플리케이션들은, 2-차원 (2D) 공간 (예를 들어, 디스플레이 스크린) 에 3-차원 (3D) 객체들을 디스플레이하는 3D 그래픽 애플리케이션들을 요구한다. 2D 그래픽의 픽셀들은 위치, 컬러, 및 밝기의 특성들은 갖는 반면에 3D 픽셀은 포인트가 허수 Z-축에 놓이는 곳을 나타내는 깊이 특성을 추가한다. 텍스쳐 (texture) 는, 각각이 자신의 깊이 값을 갖는 3D 픽셀들이 결합됨에 따라 생성된다.
이제, 도 1을 참조하면, 일반적으로 (10) 으로 지정된 3D 촬상 장치의 일 실시형태가 도시된다. 3D 촬상 장치 (10) 는 통신 유닛 (12), 디지털 신호 프로세서 (DSP) (20), 디스플레이 영역 (18) 이 있는 스크린 (16), 메모리 (24) 및 입력/출력 (I/O) 유닛들 (45) 을 포함한다. 공유 메모리 (24) 는, 사용자에 의해 요구된 바와 같이 또는 장치 (10) 의 특징 세트를 지원하도록 게임 애플리케이션들 또는 다른 애플리케이션들 (즉, 유선 또는 무선 네트워크의 양방향 통신용, 및 다 른 소프트웨어 애플리케이션들) 을 저장할 수도 있다. I/O 유닛들 (45) 은 키패드, 키보드 또는 데이터 통신 포트들을 포함할 수도 있다. 스크린 (16) 은 디스플레이 영역 (18) 에 2D 정보뿐만 아니라 3D 그래픽도 디스플레이하도록 동작가능하다.
3D 촬상 장치 (10) 는 개인 휴대 정보 단말기 (PDA), 이동 전화기, 셀룰러 전화기, 위성 전화기, 랩탑, 노트북, 태블릿 (Tablet) PC, 팜 파일럿 (Palm Pilot), 무선 통신 디바이스 등 중 하나를 포함할 수도 있다.
이제, 도 2 내지 5를 참조하면, 예시적인 실시형태에서, DSP (20) 는 인터리브된 다중-쓰레딩 프로세서 (22) 를 포함한다. 인터리브된 다중-쓰레딩 프로세서 (22) 는 복수의 프로세싱 쓰레드 (PT) 들 (PT1, PT2, ... PTX) 을 갖는다. 각 프로세싱 쓰레드 (PT) (PT1, PT2, ... PTX) 는 공유 메모리 (24) 로서 표시된 동일한 메모리를 공유한다. 각 프로세싱 쓰레드 (1, ... X) 는 명령들 (261 ...26X), 코어 (271...27X) (프로세싱 유닛) 및 레지스터 파일 (281...28X) 의 각각의 하나의 세트를 포함한다. 각 코어 (271...27X) 의 출력은 공유 메모리 (24) 와 통신한다. 명령들 (261 ...26X) 은 이하에 정의된 동작들을 수행하기 위한 프로그래밍 코드 및 3D 촬상 장치 (10) 의 멀티-미디어와 같은 특징 세트를 수행하기 위한 다른 동작들을 포함한다. 코어 (271...27X) 는 명령들 (261...26X) 을 실행한다.
레지스터 파일 (281...28X) 은 범용 레지스터들의 세트이고, DSP (20) 또는 마이크로프로세서의 중앙 스테이지이다. 이 레지스터 파일들 (281...28X) 은, 공유 메모리 (24) 에 결과들을 저장하기 전에 (산술 연산, 논리 연산 등과 같은) 모든 연산들로부터의 모든 결과들을 유지하는 (통상적으로, 메모리로부터 로딩되는) 모든 피연산자들을 유지한다.
어떤 DSP 구조들은 4개의 쓰레드들을 갖는다. 그럼에도 불구하고, DSP (20) 는 제한 없이, 병렬로 실행되는 6개의 프로세싱 쓰레드들과 같은 4개보다 많은 쓰레드들을 가질 수 있다. 예시적인 실시형태에서, 병렬인 각 쓰레드 (PT) (PT1, PT2, ... PTX) 는 초당 1억 명령 패킷들 (100 MIPS) 을 제공한다. 각 명령 패킷은 4개의 명령들, 2개의 명령들 (슈퍼-스칼라 (Sup-scalar)) 또는 단지 1개의 명령일 수 있다. 하지만, DSP (20) 의 구조가 명령-간 (inter-instruction) 데이터 의존성에 의해 야기되는 비효율을 제거하기 때문에, 1개의 명령은 효율을 위해 추천되지 않는다.
용어들, 쓰레드 또는 다중-쓰레딩은 동시 발생하는 태스크 실행을 기술하는데 사용된다. 실행의 단일 경로를 대신하여, 프로그램 (동작들) 은, 동시에 실행하는 다중 실행 쓰레드들로 분할될 수도 있다. 예시적인 실시형태에서, 함수 호출 (또는 명령) 을 요구하고, 보통 적어도 2개의 아규먼트 (argument): (1) 시작 명령의 어드레스 및 (2) 콘텍스트 (context) 아규먼트를 요구하는 시작 쓰레드가 존재한다. 쓰레드가 동작 및/또는 종료하는 동안, 그 쓰레드는 다른 프로세싱 쓰레드들에 관하여 2개의 기본적인 작업들: (1) 공유 자원을 획득하고, 다른 쓰레드들이 그러한 자원을 사용하는 것을 방지하며, (2) 안전하게 다른 쓰레드들에 메시지들 (예를 들어, 마침, 준비 등) 을 전송하는 작업들을 할 수 있을 필요가 있다.
이제, 도 4를 참조하면, 인터리브된 다중-쓰레딩 병렬 프로세싱의 그래프가 도시된다. 이 실시예에서, 6개의 프로세싱 쓰레드 (PT1, PT2, PT3, PT4, PT5 및 PT6) 가 있다. 제 1 프로세싱 쓰레드 (PT1) 는 제 1 명령 세트 (1) 를 프로세싱한다. 이는 코어 파이프라인에 대한 실행 시간 라인의 제 1 (상부) 로우 (row) 에 의해 나타내어진다. 코어 파이프라인은 코어들 (271, ...27X) 에 의해 표시된다. 제 1 명령 세트 (1) 가 제 1 프로세싱 쓰레드 (PT1) 에 의해 프로세싱되는 동안, 제 2 프로세싱 쓰레드 (PT2) 는 그것의 제 1 명령 세트 (1) 를 프로세싱한다. 이는 실행 시간 라인의 제 2 로우에 의해 나타내어진다. 따라서, 제 1 명령 세트들 (1) 은 병렬 프로세싱된다.
제 1 및 2 프로세싱 쓰레드들 (PT1 및 PT2) 이 그들의 제 1 명령 세트들 (1) 을 프로세싱하는 동안, 제 3 프로세싱 쓰레드 (PT3) 는 그것의 제 1 명령 세트 (1) 를 프로세싱한다. 이는 코어 파이프라인에 대한 실행 시간 라인의 제 3 로우에 의해 나타내어진다. 제 4 프로세싱 쓰레드 (PT4) 는 그것의 제 1 명령 세트 (1) 를 프로세싱한다. 한편, 제 1, 2 및 3 프로세싱 쓰레드들 (PT1, PT2 및 PT3) 은 그들의 관련된 제 1 명령 세트들 (1) 의 프로세싱을 계속한다. 이는 코어 파이프라인에 대한 실행 시간 라인의 제 4 로우에 의해 나타내어진다.
제 1, 2, 3 및 4 프로세싱 쓰레드들 (PT1, PT2, PT3 및 PT4) 이 그들의 제 1 명령 세트들 (1) 의 프로세싱을 계속하는 동안, 제 5 프로세싱 쓰레드 (PT5) 는 그것의 제 1 명령 세트 (1) 를 프로세싱한다. 이는 코어 파이프라인에 대한 실행 시간 라인의 제 5 로우에 의해 나타내어진다. 제 1, 2, 3, 4 및 5 프로세싱 쓰레드들 (PT1, PT2, PT3, PT4 및 PT5) 이 그들의 제 1 명령 세트들 (1) 의 프로세싱을 계속하는 동안, 제 6 프로세싱 쓰레드 (PT6) 는 그것의 제 1 명령 세트 (1) 를 프로세싱한다. 이는 코어 파이프라인에 대한 실행 시간 라인의 제 6 로우에 의해 나타내어진다. 따라서, 프로세싱 쓰레드들에 의한 명령들의 프로세싱은 인터리브된다.
이제, 도 4의 제 7 (하부) 로우를 참조하면, 제 1 프로세싱 쓰레드 (PT1) 가 그것의 제 1 명령 세트 (1) 를 완료한다고 가정하면, 제 2, 3, 4, 5 및 6 프로세싱 쓰레드들 (PT2, PT3, PT4, PT5 및 PT6) 이 그들의 제 1 명령 세트들 (1) 의 프로세싱을 계속하는 동안, 제 1 프로세싱 쓰레드 (PT1) 는 그것의 제 2 명령 세트 (2) 의 프로세싱을 시작한다. 그러므로, 각 프로세싱 쓰레드들 (PT1, PT2, ...PTX) 의 프로세싱은 병렬이고, 인터리브된다.
모든 프로세싱 쓰레드들에 대한 인터리브된 프로세싱을 기술하는 것은 불가능하다. 따라서, 예시적인 목적들을 위해, 명령들 (261 및 262) 을 사용한 인터리브된 프로세싱이, 도 5에 그것이 뮤텍스 (mutex) 에 관련된 바와 같이 도시된다. 뮤텍스는 한번에 오직 하나의 프로세싱 쓰레드에 의해 "소유되는" 툴이다. 프로세싱 쓰레드가 뮤텍스를 획득하도록 시도할 때, 그것은 뮤텍스를 잠근다 (LOCK). 반면에, 만약 뮤텍스가 이미 잠겨있다면, 그 프로세싱 쓰레드는 정지된다. 소유하는 쓰레드가 뮤텍스를 잠금해제 (UNLOCK) 할 때, 정지된 쓰레드는 재시작되고, 뮤텍스의 소유권을 획득한다. 이 프로세스는 도 5에 도시된다.
제 1 프로세싱 쓰레드 (PT1) 를 시작할 때, 명령들 (261) 은 비-임계 코드가 실행되는 단계 (S22A) 로 시작한다. 단계 (S22A) 에 이어서 제 1 프로세싱 쓰레드 (PT1) 가 (뮤텍스 (1) 이 잠금해제 되어있다면) 뮤텍스 (1) 잠금 명령을 실행하는 단계 (S24A) 가 뒤따른다. 따라서, 이제 제 1 프로세싱 쓰레드 (PT1) 가 뮤텍스 (1) 를 소유한다. 단계 (S24A) 에 이어서 임계 코드가 실행되는 단계 (S26A) 가 뒤따른다. 단계 (S26A) 에 이어서, 임계 코드가 완료된 후 제 1 프로세싱 쓰레드 (PT1) 가 뮤텍스 (1) 잠금 해제 명령을 실행하는 단계 (S28A) 가 뒤따른다. 그 후에, 제 1 프로세싱 쓰레드 (PT1) 는 단계 (S30A) 에서 비-임계 코드의 실행을 재개한다.
제 1 프로세싱 쓰레드 (PT1) 와 병렬로, 제 2 프로세싱 쓰레드 (PT2) 가 비-임계 코드가 실행되는 단계 (S22B) 에서 명령들 (262) 을 시작한다. 단계 (S22B) 에 이어서 제 2 프로세싱 쓰레드 (PT2) 가 단계 (S24B) 에서 뮤텍스 (1) 를 잠그는 것을 원하는 단계 (S24B) 가 뒤따른다. 하지만, 뮤텍스 (1) 는 잠금된 상태이다. 따라서, 제 2 프로세싱 쓰레드 (PT2) 의 동작들은 제 1 프로세싱 쓰 레드 (PT1) 가 단계 (S28A) 에서 뮤텍스 (1) 를 잠금 해제할 때까지 정지된다. 그 후, 임계 코드가 실행될 수도 있는 단계 (S26B) 가 개시한다. 단계 (S26B) 에 이어서, 임계 코드가 완료된 후 제 2 프로세싱 쓰레드 (PT2) 가 뮤텍스 (1) 잠금 해제 명령을 실행하는 단계 (S28B) 가 뒤따른다. 다른 명령들이 그 후에 계속할 수도 있다.
뮤텍스 툴 또는 다른 토큰 (token) 툴은 오직 필요함에 따라 상이한 프로세싱 쓰레드들에서 임계 섹션들의 직렬 실행을 보장하는데 사용된다. 이는 또한, 특정 코드가 다른 쓰레드들에 의한 코드의 실행과 충돌할 수 있을 때 그 특정 코드가 병렬로 실행되지 않을 수도 있음을 의미하는 직렬화 실행이다. 공유 메모리 (24) (공유 자원) 가 사용되기 때문에 뮤텍스 툴은 도움이 된다.
이제, 도 6 및 7을 참조하면, (100) 에서 일반적으로 지정되는, 3D 그래픽 파이프라인의 일반적인 흐름 및 블록 다이어그램들의 도시된 실시형태가 있다. 3D 그래픽 파이프라인 (100) 은, 스크린 (16) 의 디스플레이 영역 (18) 에서의 3D 표현의 전체 태스크를 일반적으로 3개의 파이프라인 스테이지들: 정점 프로세싱 (VP) 스테이지 (110), 스크린 서브-분할 (SSD) 스테이지 (130) 및 픽셀 렌더링 (PR) 스테이지 (140) 로 분할한다. 동작에 있어서, 정점 프로세싱 (VP) 스테이지 (110) 는 OpenGL® 또는 OpenGL®ES 에서 현재 구현되는 모든 기능들 또는 기능들의 서브세트를 포함하고, 디지털 신호 프로세서 (DSP) (20) 에 의해 프로세싱된다. 스크린 (16) 이 3D 그래픽 파이프라인 (100) 의 부분이 아니기 때문에, 스크린 (16) 으로의 선은 가상선으로 도시된다.
VP 스테이지 (110) 는 모델 뷰 변경 동작들 (112), 프로젝션 동작들 (114), 컬링 (culling) 동작들 (116), 점등 및 컬러링 동작들 (118), 프리미티브 어셈블리 동작들 (120), 클리핑 (clipping) (즉, 사용자-정의된 클리핑) 동작들 (122), 및 원근 분할 및 뷰포트 (perspective division and viewport) 동작들 (124) 을 포함한다. VP 스테이지 (110) 의 이 동작들의 각각은 OpenGL® 또는 OpenGL®ES 에서 잘 정의된다.
일반적으로, 모델 뷰 변경 동작들 (112) 은 객체 모델들을, 원하는 위치들 또는 방향들에 배치하는데 수학 연산들을 사용한다. 프로젝션 동작들 (114) 은 근접 물건들을 크게 하고 원거리 물건들을 작게 하는 수학 연산들을 사용한다. 교합 (occlusion) 은 원거리 객체들의 앞에 근접 객체들을 그린다. 컬링 및 클리핑 동작들 (116 및 122) 는 시야에 있지 않은 물건들을 폐기한다. 점등 동작들 (118) 은 표면에 대한 광의 효과들을 계산한다.
예시적인 실시형태에서, VP 스테이지 (110) 는 하나의 프로세싱 쓰레드 (도 2 및 3) 로 구현될 수 있다. 정점 출력 정보는 디스플레이 영역 (16) 에서 삼각형 및 그 위치를 정의하는 정점 정보를 포함한다. 정점 출력 정보는, 디스플레이 영역 (16) 의 픽셀들이 OpenGL®, OpenGL®ES 또는 다른 그래픽 라이브러리들에 따라서 삼각형들을 정의하는 정점 출력 정보를 포함한다는 점에서 디스플레이 영역 (16) 에서 중첩된다.
스크린 서브-분할 (SSD) 스테이지 (130) 는 디스플레이 영역 (18) 을 M * N 서브-스크린들로 분할하는 스크린 서브-분할 동작들 (132) 을 포함한다. 디스 플레이 영역 (18) 은 중첩된 정점 출력 정보와 함께 복수의 픽셀들 (P) (도 11) 로 구성되어진다. VP 스테이지 (110) 로부터의 정점 정보는 디스플레이 영역 (18) 에서 중첩에 대한 (도 8A 의 T1 및 T2 와 같은) 삼각형들을 정의하는 (도 11의 V1, V2 및 V3 과 같은) 정점 정보를 제공한다. 정점 정보는 정점 좌표 및 에지 (edge) 정보를 포함할 수도 있다. 일반적으로, 각 삼각형에 대한 정점 출력 정보는 단지 폐영역을 정의하는 수학적인 디스크립션 (description) 들의 세트이다. 이 수학-디스크립션들의 세트는, 각 프로세싱 쓰레드 (PT1, PT2, ... PTX) 가 그것의 소유하는 서브-스크린 태크스내의 각 픽셀 (P) (도 11) 을 계산하고 픽셀이 삼각형 내측에 있는지 여부를 결정하도록 수학 디스크립션들의 세트를 사용하기 위해 공유 메모리 (24) 에 저장된다.
도 8A 는 디스플레이 영역 (18) 에 중첩된 정점 출력 정보를 예시한다. 스크린 서브-분할 (SSD) 스테이지 (130) 동안, 디스플레이 영역 (18) 은, 디스플레이 영역 (18) 을 도 8B 에서 최적으로 보이는 바와 같이 MxN 서브-스크린 태스크들로 만드는 픽셀들의 분할 또는 그룹화에 의해 서브-분할된다. MxN 서브-스크린 태스크들은 공유 메모리 (24) 에 저장된 MxN 독립적인 태스크들이다. SSD 스테이지 (130) 의 동작들은 VP 스테이지 (110) 동안에 사용된 프로세싱 쓰레드와는 별개인 프로세싱 쓰레드를 사용하여 구현될 수 있다. 다른 방법으로는, SSD 스테이지 (130) 의 동작들은 동일한 프로세싱 쓰레드에서 VP 스테이지 (110) 의 동작들과 결합될 수 있다.
도 8A 에 도시된 실시형태에서, 디스플레이 영역 (18) 은 격자를 생성하도록 M>1 및 N>1 인 MxN 서브-스크린들로 분할된다. 예시적인 목적들을 위해, 도 9는 M=1 및 N>1 인 MxN 서브-스크린들로 분할된 디스플레이 영역 (18') 을 도시한다. 화살표들은 스캔 또는 작업 흐름 방향을 예시한다. 도 10을 참조하면, 디스플레이 영역 (18") 은 M>1 및 N=1 인 MxN 서브-스크린들로 분할된다. 따라서, 디스플레이 영역 (18") 의 서브-스크린들은 일련의 컬럼 (column) 들을 형성한다.
픽셀 렌더링 (PR) 스테이지 (140) 는 래스터화, 블렌딩, 및 텍스쳐 애플리케이션 동작들 (142) 및 은닉 표면 제거 동작들 (144) 을 포함한다. 그럼에도 불구하고, 픽셀 렌더링 스테이지 (140) 는 OpenGL® 또는 OpenGL®ES 에 의해 정의되는 다른 동작들을 포함할 수도 있다. PR 스테이지 (140) 는 VP 스테이지 (110) 로부터의 3D 객체들에 대한 정보를 스크린 (16) 의 디스플레이 영역 (18) 에 디스플레이될 수 있는 비트맵으로 변경한다. PR 스테이지 (140) 는 3D 그래픽 이미지의 픽셀 표현을 생성하도록 입력 삼각형 세트들을 프로세싱한다.
통상의 픽셀 렌더링 (PR) 스테이지는 먼저 정점 출력 정보의 리스트로부터 삼각형을 취할 수도 있다. 다음으로, PR 스테이지는 디스플레이 영역으로부터 픽셀을 취하고, 그 픽셀이 그 삼각형 내측에 있는지를 보도록 삼각형에 대해 픽셀을 계산할 것이다. 만약 평가된 픽셀이 삼각형 내측에 있다면, PR 스테이지는 삼각형으로부터 대응하는 컬러로 그 픽셀의 컬러링을 수행할 수도 있다. 만약 평가된 픽셀이 삼각형 내측에 있지 않다면, 그 픽셀은 스킵된다. 그 후, PR 스테이지는 디스플레이 영역 (18) 에서 다음 픽셀을 고른다. PR 스테이지는, 모 든 픽셀들이 삼각형에 대해 평가되거나 프로세싱될 때까지 디스플레이 영역 (18) 의 다른 픽셀들에 대해 상기 프로세스를 반복한다. 따라서, 픽셀들은 한 번에 하나씩 프로세싱된다.
그 후, 통상의 PR 스테이지는 정점 출력 정보의 리스트의 다음 삼각형으로 이동하고, 현재의 삼각형에 대한 픽셀들의 평가를 반복한다.
PR 스테이지 (140) 는 유사한 방식으로 다중 서브-스크린들 또는 서브-스크린 태스크들을 작업한다. 차이점은, 서브-스크린들은 평가하거나 프로세싱하는 적은 픽셀들을 갖고, 다중 서브-스크린들은 프로세싱 쓰레드 (PT1, PT2, ... PTX) 에 의해 독립적 및 병렬로 프로세싱될 수 있다는 것이다. 따라서, 적은 픽셀들이 각 서브-스크린에 있고 다중 서브-스크린들이 (각각의 하나의 서브-스크린의 픽셀들을 프로세싱하기 위해 독립적으로 작업하는 각 프로세싱 쓰레드로) 병렬 프로세싱될 수 있기 때문에, PR 스테이지 (140) 에 대한 프로세싱 시간은 통상의 PR 스테이지보다 훨씬 더 신속하다.
예시적인 실시형태에서, PR 스테이지 (140) 는 인터리브된 다중-쓰레딩 프로세서 (22) 의 다중 프로세싱 쓰레드들 (PT1, PT2, ... PTX) 의 세트를 사용하여 프로세싱된다. PR 스테이지 (140) 를 위해 사용되는 세트에 있어서의 쓰레드들의 수는 최대 X 개의 쓰레드들이며 2 이상이다.
동작에 있어서, 픽셀 렌더링 스테이지 (140) 에 할당된 각 프로세싱 쓰레드 (PT1, PT2, ... PTX) 는 태스크 리스트 (135) 로부터 이용가능한 서브-스크린 태스크를 포착하고, 태스크 리스트 (135) 로부터 그 이용가능한 서브-스크린 태스크를 제거한다. 프로세싱 쓰레드들 (PT1, PT2, ... PTX) 의 세트는, 인터리브된 병렬 동작들에 있어서, 서브-스크린들의 픽셀들을 렌더링하도록 입력 삼각형들을 프로세싱한다 (입력 삼각형 정보를 서브-스크린들에 디스플레이하기 위한 비트맵으로 변경한다). 각각의 하나의 프로세싱 쓰레드는 포착된 서브-스크린 태스크에 대한 픽셀 렌더링 동작을 완료한 후에, 그 프로세싱 쓰레드는 태스크 리스트 (135) 의 이용가능한 서브-스크린 태스크로 이동한다. 이 동작은, 모든 서브-스크린들이 프로세싱되고 픽셀 렌더링 스테이지 (140) 가 완료될 때까지 반복된다.
인터리브된 다중-쓰레딩 프로세서 (22) 는 다중-쓰레드 프로세싱이 스케일러블 및 동차 (homogeneous) 이게 한다. 연산 (
Figure 112009037832174-pct00001
) 은
Figure 112009037832174-pct00002
; 및
Figure 112009037832174-pct00003
에 의해 정의될 수 있다.
도 12를 참조하면, 단일 삼각형 (T) 을 갖는 4개의 서브-스크린들의 블록이 픽셀 렌더링에 대해 도시된다. 연산 (
Figure 112009037832174-pct00004
) 은 4개의 (i) 서브-스크린들로서 나타내지는 서브-스크린 태스크들 (S11, S12, S21 및 S22) 을 삼각형 (T) 의 서브-분할된 부분 (i) 에 대해 각각 프로세싱한다. 따라서, 연산 (
Figure 112009037832174-pct00005
) 은 서브-스크린 (S11) 의 연산 (
Figure 112009037832174-pct00006
1) 더하기 서브-스크린 (S12) 의 연산 (
Figure 112009037832174-pct00007
2) 더하기 서브-스크린 (S21) 의 연산 (
Figure 112009037832174-pct00008
3) 더하기 서브-스크린 (S22) 의 연산 (
Figure 112009037832174-pct00009
4) 과 동일하다. 따라서, 만약 연산들 (
Figure 112009037832174-pct00010
1,
Figure 112009037832174-pct00011
2,
Figure 112009037832174-pct00012
3
Figure 112009037832174-pct00013
4) 모두가 병렬 프로세싱된다면, 픽셀 렌더링 스테이지 (140) 를 프로세싱하는 것에 대한 전체 최고 성능은 사용된 프로세싱 쓰레드들의 수에 의해 승산된 프로세싱 쓰레드에 대한 최고 성능이다. 서브-스크린 (S11) 은 삼각형 (T) 에 대한 픽셀들의 서브-분할된 부분 (T1) 을 갖는다. 서브-스크린 (S12) 은 삼각형 (T) 에 대한 픽셀들의 서브-분할된 부분 (T2) 을 갖는다. 서브-스크린 (S21) 은 삼각형 (T) 에 대한 픽셀들의 서브-분할된 부분 (T3) 을 갖는다. 서브-스크린 (S22) 은 삼각형 (T) 에 대한 픽셀들의 서브-분할된 부분 (T4) 을 갖는다. 예시적인 목적들을 위해, 쓰레드들의 수는 4이다. 그러므로, 이 실시예에서, 성능은 프로세싱 쓰레드들의 수에 의해 승산된 하나의 프로세싱 쓰레드에 대한 성능일 것이다. 따라서, PR 스테이지 (140) 는 다중-서브 스크린들로 부터 픽셀들을 병렬 프로세싱하는 그것의 능력 때문에 퀵 픽셀 렌더링 스테이지이다.
부가적으로, M 및 N 의 수들은 성능이 상이한 상황들에 대해 더 최적화될 수 있기 위해 실제 애플리케이션으로 프로파일링 (profiling) 한 후 구성될 수 있다. M 및 N 을 구성하는 것은 더 큰 유연성 및 스케일러빌리티 (scalability) 의 다른 차원을 제공한다. 프로파일링은 프로세싱 쓰레드의 로딩 (틱 카운트 (tick count)) 또는 동작 중의 태스크들의 사이즈 또는 복잡성을 식별하는 것을 포함한다. 프로파일링은 또한 공유 메모리 (24) 로부터의 데이터의 전송 및 메모리 용량과 관련된 파라미터들과 같은 다른 컴포넌트들을 평가하는 것을 포함한다. 프로파일링 및 조절로, 프레임 레이트, 스크린 사이즈, 픽셀 레이트, 삼각형 레이트 등은, M 및 N 을 변하게 또는 변경하게 하고/하거나 PR 스테이지 (140) 에서 사용을 위한 프로세싱 쓰레드들 (PT1, PT2, ... PTX) 의 수를 다양하게 하는데 사용될 수 있다. 남은 프로세싱 쓰레드들 (PT1, PT2, ... PTX) 은 게임-오디오와 같은 동시에 실행되는 다른 애플리케이션들을 위해 사용된다.
이제, 도 13을 참조하면, 3D 그래픽 파이프라인 (100) 에 의한 사용을 위한 3D 그래픽 파이프라인 방법 (200) 의 흐름도가 도시된다. 방법 (200) 은 정점 프로세싱이 정점 출력 정보를 생성하도록 수행되는 단계 (S202) 로 시작한다. 단계 (S202) 에 이어서, 중첩된 정점 출력 정보를 갖는 디스플레이 영역 (18) 이 MxN 서브-스크린들로 서브-분할되는 단계 (S204) 가 뒤따른다. 예를 들어, 도 8A 에서 최적으로 보이는 바와 같이, 삼각형 (T1) 은 서브-스크린들 (S11, S21 및 S22) 에 걸쳐서 확장하고, 도 8B 에 도시된 그것의 각각의 서브-분할된 부분들 (T11, T12, T13) 로 서브-분할된다. 따라서, 도 8B 의 태스크 리스트 (135) 는 삼각형들 (T1 및 T2) (예시적인 목적들을 위해 도시된 오직 2개의 삼각형들) 의 서브-분할된 부분들을 예시한다. 이해될 수 있는 바와 같이, 삼각형과 함께 관련되지 않거나 삼각형의 더 작은 서브-분할된 부분을 갖는 정점 출력 정보로부터의 태스크 리스트 (135) 의 그 엔트리들은 더 신속하게 프로세싱될 수도 있다. 그 러므로, 픽셀 렌더링 스테이지 (140) 가 디스플레이 영역 (18) 에 삼각형의 3D 이미지 대표를 디스플레이하기 전에, 삼각형의 모든 서브-분할된 부분들에 대한 프로세싱이 완료되어야한다.
단계 (S204) 에 이어서, 삼각형들의 서브-부분들이 있거나 없는 서브-스크린 태스크들이 생성되고 태스크 리스트 (135) 에 배치되는 단계 (S206) 가 뒤따른다. 단계 (S206) 에 이어서, Y 는 픽셀 렌더링 스테이지 (140) 를 위해 사용되는 세트의 프로세싱 쓰레드들 (2 이상의) 의 수인, 단계 (S2081, S2082, 및 S208Y) 가 뒤따른다. 단계 (S2081) 에서, 제 1 프로세싱 쓰레드 (본 명세서에서 이후로 "쓰레드 (1)" 로 지칭됨) 는 (제 1) 이용가능한 서브-스크린 태스크 (도 8B) 를 획득하고, 단계 (S2101) 에서 서브-스크린 태스크의 각 픽셀 (특히 태스크와 관련된 삼각형 또는 삼각형 부분의 내에 또는 내측에 있도록 결정된 그 픽셀들) 을 프로세싱한다. 단계 (S2101) 에 이어서, 태스크 리스트 (135) 의 말단부인지 여부에 대한 결정이 행해지는 단계 (S2121) 가 뒤따른다. 만약 결정이 "예" 라면, 쓰레드 (1) 에 의한 프로세싱이 종료된다. 그렇지 않고 결정이 "아니오" 라면, 단계 (S2121) 는 단계 (S2081) 로 돌아간다. 제 2 프로세싱 쓰레드 (본 명세서에서 이후로 "쓰레드 (2)" 로 지칭됨) 의 동작은 본질적으로 동일하다. 쓰레드 (2) 는 태스크 리스트 (135) 의 다음 이용가능한 서브-스크린 태스크를 획득하거나 포착한다. 단계 (S2082) 에 이어서, 서브-스크린 태스크가 프로세싱되는 단계 (S2102) 가 뒤따른다. 단계 (S2082) 에 이어서 단계 (S2102) 가 뒤따른다. 단계 (S2102) 에 이어서 단계 (S2122) 가 뒤따른다. 단계 (S2122) 에서, 태스크 리스트 (135) 에 더 이상의 태스크들이 있는지 여부에 대한 결정이 행해진다. 만약 단계 (S2122) 에서 결정이 "예" 라면, 그 방법은 종료한다. 그렇지 않고 결정이 "아니오" 라면, 단계 (S2122) 는 단계 (S2082) 로 돌아간다.
단계 (S208Y) 는 쓰레드 (Y) 에 의해 Y 번째 이용가능한 서브-스크린 태스크를 획득하거나 포착한다. 단계 (S208Y) 에 이어서, 서브-스크린 태스크가 프로세싱되는 단계 (S210Y) 가 뒤따른다. 단계 (S210Y) 에 이어서, 태스크 리스트 (135) 에 더 이상의 태스크들이 있는지 여부에 대한 결정이 행해지는 단계 (S212Y) 가 뒤따른다. 만약 결정이 "예" 라면, 그 방법은 종료한다. 그렇지 않고 결정이 "아니오" 라면, 단계 (S212Y) 는 단계 (S208Y) 로 돌아간다.
단계 (S2101, S2102 및 S210Y) 동안 실행된 프로세싱은 래스터화, 블렌딩, 텍스쳐 애플리케이션 동작들 (142) 및 은닉 표면 제거 동작들 (144) 을 수행한다. 도 11에 대한 특정 참조에 있어서, 중심점이 있는 정사각형들이 픽셀들 (P) 을 표시한다. 픽셀들 (P) 의 일부는 삼각형 (T11) 의 내측에 있는 반면에, 픽셀들의 일부는 삼각형 (T11) 의 외측에 있다. 각 정점 (V1, V2 및 V3) 은 평활 쉐이딩 (smooth shading) 으로 부착된 컬러 값들을 갖는다. 선형 보간은 각 픽셀 (P) 에서 컬러 값들을 계산하는데 사용된다. 정점들 (V1, V2 및 V3) 은 삼각형 (T11) 을 형성하는데 사용되고, 디스플레이 영역 (18) 내에 그러한 삼각형을 위치시킨다. 컬러들은 정사각형의 중심에 흑색 점으로 표시된 각 픽셀 중심에서 계산된다. Z-깊이, 알파, 포그 및 텍스쳐를 포함하는 다양한 파라미터들이 보간된다.
도 2 내지 4를 다시 참조하면, 이 실시예에서, 6개의 쓰레드들 (PT1, PT2, PT3, PT4, PT5 및 PT6) 이 있다. 제 1 쓰레드 (PT1) 는 VP 스테이지 (110) 를 프로세싱하는데 사용될 수 있다. 제 2 쓰레드 (PT2) 는 SSD 스테이지 (130) 를 프로세싱하는데 사용될 수 있다. 남은 4개의 쓰레드들 (PT3, PT4, PT5 및 PT6) 은 태스크 리스트 (135) 로부터 서브-스크린 태스크들을 병렬 프로세싱하는데 사용될 것이다. 여기서, 프로세싱 쓰레드 (PT3) 는 제 1 이용가능한 서브-스크린 태스크 (1,1) 를 획득할 것이고, 포착된 제 1 서브-스크린 태스크 (1,1) 의 픽셀들을 프로세싱할 것이다. 프로세싱 쓰레드 (PT4) 는 다음 (2번째) 이용가능한 서브-스크린 태스크 (1,2) 를 획득할 것이고, 포착된 서브-스크린 태스크 (1,2) 의 픽셀들을 프로세싱할 것이다. 프로세싱 쓰레드 (PT5) 는 다음 (3번째) 이용가능한 서브-스크린 태스크 (1,3) 를 획득할 것이고, 포착된 서브-스크린 태스크 (1,3) 의 픽셀들을 프로세싱할 것이다 (M 이 3보다 크다고 가정함).
M 이 4라면, 프로세싱 쓰레드 (PT6) 는 다음 (4번째) 이용가능한 서브-스크린 태스크 (1,M) 를 획득할 것이고, 포착된 서브-스크린 태스크 (1,M) 의 픽셀들을 프로세싱할 것이다. 프로세싱 쓰레드들 (PT3, PT4, PT5 및 PT6) 이 그들의 각 서브-스크린 태스크를 완료함에 따라, 태스크 리스트 (135) 가 빌 때까지 추가적인 서브-스크린 태스크들은 포착될 것이고, 병렬 프로세싱될 것이다.
만약 하나의 프로세싱 쓰레드가 초당 3메가 (M) 픽셀로 렌더링을 수행한다면, 그것은 하나의 픽셀을 프로세싱하는데 대략적으로 30개의 명령 패킷들을 취한다. 이는 평균적으로 픽셀당 100개의 명령들이다. 남은 4개의 프로세싱 쓰레드들이 픽셀 렌더링을 하면서 VP 스테이지 (110) 및 SSD 스테이지 (130) 를 위해 6개의 쓰레드들 중 2개를 보유하는 것은, 전용 하드웨어 그래픽 가속기 성능의 4배 (초당 12메가 (M) 픽셀) 인 VGA 해상도를 지원할 것이다.
모든 프로세싱 쓰레드들이 동일한 메모리 (24) 를 공유하기 때문에, 프로세싱 쓰레드들은 뮤텍스 툴을 사용하여 (중복 없이) 매우 효율적으로 입력 삼각형 데이터 (서브-스크린 태스크들) 의 동일한 세트를 모두 프로세싱할 수 있다.
픽셀 렌더링 스테이지 (140) 는 3D 그래픽 파이프라인 (100) 의 마지막 파이프라인 스테이지이다. PR 스테이지 (140) 는 3D 그래픽 이미지의 픽셀 표현을 생성하도록 입력 삼각형 리스트를 프로세싱한다. 상기에 기술된 3D 그래픽 파이프라인 (100) 은 PR 스테이지 (140) 의 (초당 픽셀 단위의) 성능을 향상시킨다. 인터리브된 다중-쓰레드 프로세서 (22) 는 태스크 리스트 (135) 를 프로세싱하도록 병렬 실행하는 프로세싱 쓰레드들의 수의 배수로 성능을 증가시킨다.
3D 그래픽 파이프라인 구조의 장점은 수들 (M 및 N) 의 조절을 허용하는 그것의 유연성이다. 수 (M 및 N) 를 증가시킴에 따라, MIPS 요건은 픽셀 렌더링 스테이지 (140) 를 위해 감소한다. 각 서브-스크린이 더 작아지기 때문에, 렌 더링 태스크는 더 간단해진다. 이는 다중 프로세싱 쓰레드들의 성능을 증가시키도록 돕는다. 프로세싱 쓰레드들은 또한 오디오와 같은 다른 동시 발생의 애플리케이션들을 위해 사용될 수 있다.
쉽게 보여질 수 있는 바와 같이, 본 명세서에 기술된, 3D 그래픽 이미지들을 렌더링하기 위한 소프트웨어 구현은 전용 그래픽 가속기의 하드웨어 구현보다 더 높은 성능을 갖는다. 그래픽 가속기의 하드웨어 구현에 비교하여, 본 명세서에 기술된 실시형태는 유연하고 스케일러블하다. 실시형태가 유연하기 때문에, 새로운 특징들을 추가하기 위한 소프트웨어 코드를 연장하고, (OpenGL ES 1.0, 1.1 ... 과 같은) 3D 그래픽 표준의 더 높은 버전들을 지원하며, 상이한 애플리케이션 구성들 및 맞춤 요건들을 지원하는 것이 용이하다. 실시형태의 스케일러블한 특징은 상이한 수행 요건들 (프레임 레이트, 스크린 사이즈, 픽셀 레이트, 삼각형 레이트 등...) 에 대해 실리콘 비용 및 시스템 전력 소비를 최적화하도록 한다.
이 실시형태는 또한, 소프트웨어 구현이 동일한 성능에 도달하도록 다중-GHz 클럭 속도를 갖는 고성능의 프로세서를 사용하는 대신에 저비용 및 저전력 프로세서로 사용될 수 있게 한다.
예시적인 실시형태들에서, 본 명세서에 기술된 방법들 및 프로세스들은 하나 이상의 컴퓨터-실행가능한 명령들을 포함하는 컴퓨터 프로그램 제품의 형태로 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현될 때, 컴퓨터 프로그램 제품은 컴퓨터 저장 매체 및 컴퓨터 통신 매체를 포함하는 컴퓨터-판독가능 매체에 저장될 수도 있거나 컴퓨터-판독가능 매체를 사용하여 전송할 수도 있다.
용어 "컴퓨터 저장 매체" 는 본 명세서에서 컴퓨터가 방법을 실행하게 하는 명령들을 저장하는 것을 위해 구성된 임의의 매체를 지칭한다. 실시예로서, 제한 없이, 컴퓨터 저장 매체는 전자 메모리 디바이스들 (예를 들어, RAM, ROM, EEPROM 등) 을 포함하는 고체-상태 메모리 디바이스들, 광 메모리 디바이스들 (예를 들어, 콤팩트 디스크들 (CD), 디지털 다기능 디스크들 (DVD) 등), 자기 메모리 디바이스들 (예를 들어, 하드 드라이브들, 플래시 드라이브들, 테이프 드라이브들 등), 컴퓨터 프로그램 제품을 저장하도록 구성된 다른 메모리 디바이스들, 또는 그러한 메모리 디바이스들의 조합을 포함할 수도 있다.
용어 "컴퓨터 통신 매체" 는 본 명세서에서, 예를 들어, 변조된 반송파, 광신호, DC 또는 AC 전류 등의 수단을 사용하여, 한 장소에서 다른 장소로 컴퓨터 프로그램 제품을 전송하도록 구성된 임의의 물리적 인터페이스를 지칭한다. 실시예로서, 제한 없이, 컴퓨터 통신 매체는 이중 연선들 (twisted wire pairs), 프린티드 (printed) 또는 플랫 (flat) 캐이블들, 동축 케이블들, 광 케이블들, 디지털 가입자 회선들 (DSL), 다른 유선, 무선, 또는 광 직렬 또는 병렬 인터페이스들, 또는 이들의 조합을 포함할 수도 있다.
개시된 실시형태들의 이전의 기술들은 당업자로 하여금 본 개시를 제조하거나 사용하게 할 수 있도록 제공되어있다. 이 실시형태들에 대한 다양한 변경예는 당업자에게 명백할 것이고, 본 명세서에서 정의된 일반적인 원리들은 본 개시의 사상 또는 범위로부터 벗어남이 없이 다른 실시형태들에 적용될 수도 있다. 따 라서, 본 개시는 본명세서에 기술된 예들에 한정되도록 의도되지 않고, 본 명세서에 개시된 원리 및 새로운 특징에 부합하는 최광의 범위를 부여하려는 것이다.

Claims (38)

  1. 3-차원 (3D) 그래픽 파이프라인 장치로서,
    3D 그래픽 이미지에 대한 정점 정보를 출력하도록 동작가능한 정점 프로세싱 스테이지;
    중첩된 출력 정점 정보를 갖는 디스플레이 영역의 픽셀들을 서브-스크린들로 분할하도록 동작가능한 디스플레이 서브-분할 스테이지로서, 상기 서브-스크린들은 서브-스크린 태스크 리스트를 형성하는, 상기 디스플레이 서브-분할 스테이지; 및
    개별의 프로세싱 쓰레드들의 세트가 있는 인터리브된 다중-쓰레딩 프로세서를 포함하는 픽셀 렌더링 스테이지를 포함하고,
    상기 픽셀 렌더링 스테이지는 상기 서브-스크린 태스크 리스트의 다중 서브-스크린 태스크들의 픽셀들을 상기 인터리브된 다중-쓰레딩 프로세서의 상기 개별의 프로세싱 쓰레드들을 통하여 병렬로 및 독립적으로 렌더링하도록 동작가능한, 3D 그래픽 파이프라인 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 개별의 프로세싱 쓰레드들 중 적어도 하나는 상기 출력 정점 정보를 프로세싱하도록 구성된, 3D 그래픽 파이프라인 장치.
  4. 제 3 항에 있어서,
    상기 디스플레이 서브-분할 스테이지는 상기 출력 정점 정보를 프로세싱하도록 구성된 상기 적어도 하나의 개별의 프로세싱 쓰레드를 공유하는, 3D 그래픽 파이프라인 장치.
  5. 제 3 항에 있어서,
    상기 디스플레이 서브-분할 스테이지는 개별의 프로세싱 쓰레드들의 상기 세트의 개별의 프로세싱 쓰레드들 중 다른 하나를 사용하는, 3D 그래픽 파이프라인 장치.
  6. 제 1 항에 있어서,
    상기 픽셀 렌더링 스테이지는 상기 3D 그래픽 이미지의 비트맵을 생성하도록 래스터화, 블렌딩 및 텍스쳐 동작들 및 은닉 표면 제거 동작들을 포함하는, 3D 그래픽 파이프라인 장치.
  7. 제 1 항에 있어서,
    상기 디스플레이 영역은 개인 휴대 정보 단말기 (PDA), 팜 파일럿, 이동 전화기, 셀룰러 전화기, 위성 전화기, 랩탑, 노트북 및 태블릿 PC 중 하나와 관련된, 3D 그래픽 파이프라인 장치.
  8. 3-차원 (3D) 그래픽 이미지에 대한 정점 정보를 출력하도록 정점 객체들을 정점 프로세싱하는 단계;
    디스플레이 영역에 출력 정점 정보를 중첩시키는 단계;
    태스크 리스트에 서브-스크린 태스크들을 생성하도록 상기 디스플레이 영역을 복수의 서브-스크린들로 분할하는 단계로서, 상기 디스플레이 영역은 픽셀들을 갖는, 상기 분할하는 단계; 및
    상기 태스크 리스트의 다중 서브-스크린 태스크들에 있어서 상기의 픽셀들을 인터리브된 다중-쓰레딩 프로세서를 통하여 병렬로 및 독립적으로 픽셀 렌더링하는 단계를 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 픽셀 렌더링하는 단계는,
    상기 인터리브된 다중-쓰레딩 프로세서의 개별의 프로세싱 쓰레드에 의해 상기 태스크 리스트의 각각의 하나의 이용가능한 서브-스크린 태스크를 포착 및 잠그는 단계;
    포착되었을 때, 상기 각각의 하나의 서브-스크린 태스크의 픽셀들을 독립적으로 프로세싱하는 단계; 및
    각각의 후속하는 이용가능한 서브-스크린 태스크에 대해 상기 인터리브된 다중-쓰레딩 프로세서의 다른 개별의 프로세싱 쓰레드들에 의해 상기 포착 및 잠그는 단계 그리고 상기 프로세싱하는 단계를 반복하는 단계를 포함하는, 방법.
  10. 제 9 항에 있어서,
    상기 정점 프로세싱하는 단계는, 상기 인터리브된 다중-쓰레딩 프로세서의 다른 개별의 프로세싱 쓰레드에 의해 상기 정점 정보의 출력을 생성하도록 상기 정점 객체들을 프로세싱하는 단계를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 분할하는 단계는 상기 정점 프로세싱 단계와 함께 상기 다른 개별의 프로세싱 쓰레드를 공유하는 단계를 포함하는, 방법.
  12. 제 8 항에 있어서,
    상기 픽셀 렌더링하는 단계는 상기 태스크 리스트가 빌 때까지 상기 3D 그래픽 이미지의 비트맵을 생성하도록 각 서브-스크린 태스크의 픽셀들을 래스터화하는 단계, 블렌딩하는 단계 및 텍스쳐링하는 단계를 포함하는, 방법.
  13. 제 8 항에 있어서,
    상기 픽셀 렌더링하는 단계는 상기 디스플레이 영역에 디스플레이를 위한 비트맵을 생성하는 단계를 포함하며,
    상기 디스플레이 영역은 개인 휴대 정보 단말기 (PDA), 팜 파일럿, 이동 전화기, 셀룰러 전화기, 위성 전화기, 랩탑, 노트북 및 태블릿 PC 중 하나와 관련된, 방법.
  14. 컴퓨터로 하여금,
    3-차원 (3D) 그래픽 이미지를 위한 출력 정점 정보를 생성하도록 정점 프로세싱하게 하는 명령들;
    태스크 리스트에 서브-스크린 태스크들을 생성하도록, 중첩된 상기 출력 정점 정보를 갖는 디스플레이 영역을 서브-스크린들로 분할하게 하는 명령들로서, 상기 서브-스크린 태스크들은 픽셀들을 갖는, 상기 분할하게 하는 명령들; 및
    다중 서브-스크린 태스크들에 있어서 상기 픽셀들을 인터리브된 다중-쓰레딩 프로세서를 통하여 병렬로 및 독립적으로 픽셀 렌더링하게 하는 명령들을 갖는, 컴퓨터 판독가능 기록 매체.
  15. 제 14 항에 있어서,
    상기 픽셀 렌더링하게 하는 명령들은,
    상기 인터리브된 다중-쓰레딩 프로세서의 개별의 프로세싱 쓰레드에 의해 상기 태스크 리스트의 각각의 하나의 이용가능한 서브-스크린 태스크를 포착 및 잠그게 하는 명령들;
    상기 프로세싱 쓰레드에 의해 포착되었을 때, 상기 각각의 하나의 서브-스크린 태스크의 픽셀들을 독립적으로 프로세싱하게 하는 명령들; 및
    각각의 후속하는 이용가능한 서브-스크린 태스크에 대해 상기 인터리브된 다중-쓰레딩 프로세서의 다른 개별의 프로세싱 쓰레드들에 의해 상기 포착 및 잠금 그리고 프로세싱하도록 동작가능한 명령들을 반복하게 하는 명령들을 포함하는, 컴퓨터 판독가능 기록 매체.
  16. 제 15 항에 있어서,
    상기 정점 프로세싱하게 하는 명령들은 정점 정보의 출력을 생성하도록 상기 인터리브된 다중-쓰레딩 프로세서의 다른 개별의 프로세싱 쓰레드를 사용하여 정점 프로세싱하게 하도록 동작가능한 명령들을 포함하는, 컴퓨터 판독가능 기록 매체.
  17. 제 16 항에 있어서,
    상기 분할하게 하는 명령들은 상기 정점 프로세싱하게 하는 명령들과 함께 상기 다른 개별의 프로세싱 쓰레드를 공유하게 하는 명령들을 포함하는, 컴퓨터 판독가능 기록 매체.
  18. 제 17 항에 있어서,
    상기 컴퓨터 판독가능 기록 매체는 무선 통신 디바이스의 공유 프로세서 판독가능 기록 매체를 포함하는, 컴퓨터 판독가능 기록 매체.
  19. 제 14 항에 있어서,
    상기 픽셀 렌더링하게 하는 명령들은 상기 3D 그래픽 이미지의 비트맵을 생성하도록 각 서브-스크린 태스크의 픽셀들을 래스터화, 블렌딩 및 텍스쳐링하게 하는 명령들을 포함하는, 컴퓨터 판독가능 기록 매체.
  20. 복수의 프로세싱 쓰레드들을 갖는 디지털 신호 프로세서;
    상기 프로세싱 쓰레드들에 의해 액세스되는 공유 메모리; 및
    상기 디지털 신호 프로세서의 복수의 프로세싱 쓰레드들 중 적어도 일부를 통하여 상기 공유 메모리에 저장되는 서브-스크린 태스크 리스트의 다중 서브-스크린 태스크들에 있어서의 픽셀들을 병렬로 및 독립적으로 렌더링함에 의해 전용 그래픽 가속기 없이 픽셀 렌더링을 수행하도록 동작가능한 프로세싱 수단들을 포함하며,
    상기 서브-스크린 태스크는 중첩된 정점 출력 정보를 갖는 디스플레이 영역의 픽셀들의 일부분을 포함하는, 무선 디바이스.
  21. 제 20 항에 있어서,
    상기 무선 디바이스는 개인 휴대 정보 단말기 (PDA), 팜 파일럿, 이동 전화기, 셀룰러 전화기, 위성 전화기, 랩탑, 노트북 및 태블릿 PC 중 하나를 포함하는, 무선 디바이스.
  22. 제 1 항에 있어서,
    상기 3D 그래픽 파이프라인 장치는,
    상기 3D 그래픽 이미지를 프로파일링하고,
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 디스플레이 영역의 픽셀들을 분할하는 상기 디스플레이 서브-분할 스테이지의 동작을 조정하도록 더 구성된, 3D 그래픽 파이프라인 장치.
  23. 제 22 항에 있어서,
    상기 3D 그래픽 파이프라인 장치는,
    상기 디스플레이 영역의 픽셀들이 분할되는 서브-스크린들의 수를 변경함으로써 상기 디스플레이 서브-분할 스테이지의 동작을 조정하도록 동작가능한, 3D 그래픽 파이프라인 장치.
  24. 제 1 항에 있어서,
    상기 3D 그래픽 파이프라인 장치는,
    상기 3D 그래픽 이미지를 프로파일링하고, 상기 3D 그래픽 이미지의 프로파일링에 기초하여 상기 픽셀 렌더링 스테이지에 의해 사용되는 상기 인터리브된 다중-쓰레딩 프로세서의 상기 개별의 쓰레드들의 수를 조정하도록 구성된, 3D 그래픽 파이프라인 장치.
  25. 제 8 항에 있어서,
    상기 3D 그래픽 이미지를 프로파일링하는 단계; 및
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 상기 디스플레이 영역을 복수의 서브-스크린들로 분할하는 단계를 조정하는 단계를 더 포함하는, 방법.
  26. 제 25 항에 있어서,
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 상기 디스플레이 영역을 복수의 서브-스크린들로 분할하는 단계를 조정하는 단계는, 상기 디스플레이 영역의 픽셀들이 분할되는 서브-스크린들의 수를 조정하는 단계를 포함하는, 방법.
  27. 제 8 항에 있어서,
    상기 3D 그래픽 이미지를 프로파일링하는 단계; 및
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 픽셀 렌더링을 위해 사용되는 상기 인터리브된 다중-쓰레딩 프로세서의 개별의 쓰레드들의 수를 조정하는 단계를 더 포함하는, 상기 방법.
  28. 제 14 항에 있어서,
    컴퓨터로 하여금,
    상기 3D 그래픽 이미지를 프로파일링하게 하는 명령들; 및
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 상기 컴퓨터로 하여금 상기 디스플레이 영역을 복수의 서브-스크린들로 분할하게 하는 상기 명령들을 조정하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 기록 매체.
  29. 제 28 항에 있어서,
    컴퓨터로 하여금,
    상기 디스플레이 영역의 픽셀들이 분할되는 서브-스크린들의 수를 조정하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 기록 매체.
  30. 제 14 항에 있어서,
    컴퓨터로 하여금,
    상기 3D 그래픽 이미지를 프로파일링하게 하는 명령들; 및
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 다중 서브-스크린 태스크들의 픽셀들을 픽셀 렌더링하기 위해 사용되는 상기 인터리브된 다중-쓰레딩 프로세서의 개별의 쓰레드들의 수를 조정하게 하는 명령들을 더 포함하는, 컴퓨터 판독가능 기록 매체.
  31. 3-차원 (3D) 그래픽 이미지에 대한 정점 정보를 출력하도록 정점 객체들을 정점 프로세싱하는 수단;
    디스플레이 영역에 출력 정점 정보를 중첩시키는 수단;
    태스크 리스트에 서브-스크린 태스크들을 생성하도록 상기 디스플레이 영역을 복수의 서브-스크린들로 분할하는 수단으로서, 상기 디스플레이 영역은 픽셀들을 갖는, 상기 분할하는 수단; 및
    상기 태스크 리스트의 다중 서브-스크린 태스크들에 있어서 상기의 픽셀들을 인터리브된 다중-쓰레딩 프로세서를 통하여 병렬로 및 독립적으로 픽셀 렌더링하는 수단을 포함하는, 디바이스.
  32. 제 31 항에 있어서,
    상기 픽셀 렌더링하는 수단은,
    상기 인터리브된 다중-쓰레딩 프로세서의 개별의 프로세싱 쓰레드에 의해 상기 태스크 리스트의 각각의 하나의 이용가능한 서브-스크린 태스크를 포착 및 잠그는 수단;
    포착되었을 때, 상기 각각의 하나의 서브-스크린 태스크의 픽셀들을 독립적으로 프로세싱하는 수단; 및
    각각의 후속하는 이용가능한 서브-스크린 태스크에 대해 상기 인터리브된 다중-쓰레딩 프로세서의 다른 개별의 프로세싱 쓰레드들에 의해 상기 포착 및 잠그는 것 그리고 상기 프로세싱하는 것을 반복하는 수단을 포함하는, 디바이스.
  33. 제 32 항에 있어서,
    상기 정점 프로세싱하는 수단은, 상기 인터리브된 다중-쓰레딩 프로세서의 다른 개별의 프로세싱 쓰레드에 의해 상기 정점 정보의 출력을 생성하도록 상기 정점 객체들을 프로세싱하는 수단을 포함하는, 디바이스.
  34. 제 33 항에 있어서,
    상기 분할하는 단계는 상기 정점 프로세싱 단계와 함께 상기 다른 개별의 프로세싱 쓰레드를 공유하는 단계를 포함하는, 디바이스.
  35. 제 31 항에 있어서,
    상기 픽셀 렌더링하는 수단은 상기 태스크 리스트가 빌 때까지 상기 3D 그래픽 이미지의 비트맵을 생성하도록 각 서브-스크린 태스크의 픽셀들을 래스터화하고, 블렌딩하고 그리고 텍스쳐링하는 수단을 포함하는, 디바이스.
  36. 제 31 항에 있어서,
    상기 픽셀 렌더링하는 수단은 상기 디스플레이 영역에 디스플레이를 위한 비트맵을 생성하는 수단을 포함하며,
    상기 디스플레이 영역은 개인 휴대 정보 단말기 (PDA), 팜 파일럿, 이동 전화기, 셀룰러 전화기, 위성 전화기, 랩탑, 노트북 및 태블릿 PC 중 하나와 관련된, 디바이스.
  37. 제 31 항에 있어서,
    상기 3D 그래픽 이미지를 프로파일링하는 수단; 및
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 상기 디스플레이 영역을 복수의 서브-스크린들로 분할하는 것을 조정하는 수단을 더 포함하는, 디바이스.
  38. 제 37 항에 있어서,
    상기 3D 그래픽 이미지의 프로파일링에 기초하여 상기 디스플레이 영역을 복수의 서브-스크린들로 분할하는 것을 조정하는 상기 수단은, 상기 디스플레이 영역의 픽셀들이 분할되는 서브-스크린들의 수를 조정하는 수단을 포함하는, 디바이스.
KR1020097013029A 2006-12-22 2007-12-20 퀵 픽셀 렌더링 프로세싱 KR101071073B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/615,379 US8207972B2 (en) 2006-12-22 2006-12-22 Quick pixel rendering processing
US11/615,379 2006-12-22

Publications (2)

Publication Number Publication Date
KR20090082512A KR20090082512A (ko) 2009-07-30
KR101071073B1 true KR101071073B1 (ko) 2011-10-10

Family

ID=39410479

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097013029A KR101071073B1 (ko) 2006-12-22 2007-12-20 퀵 픽셀 렌더링 프로세싱

Country Status (8)

Country Link
US (1) US8207972B2 (ko)
EP (1) EP2122575B1 (ko)
JP (1) JP4981923B2 (ko)
KR (1) KR101071073B1 (ko)
CN (1) CN101563712B (ko)
CA (1) CA2670646A1 (ko)
TW (1) TW200841274A (ko)
WO (1) WO2008079984A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101680545B1 (ko) * 2015-06-30 2016-11-30 인천대학교 산학협력단 파노라마 동영상 생성 서비스 제공 방법 및 장치

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4806653B2 (ja) * 2007-05-18 2011-11-02 Okiセミコンダクタ株式会社 画像処理回路
US20110298787A1 (en) * 2010-06-02 2011-12-08 Daniel Feies Layer composition, rendering, and animation using multiple execution threads
GB2491156B (en) * 2011-05-25 2019-08-07 Advanced Risc Mach Ltd Processing pipeline control
US9727385B2 (en) 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
US8902228B2 (en) 2011-09-19 2014-12-02 Qualcomm Incorporated Optimizing resolve performance with tiling graphics architectures
KR101321600B1 (ko) * 2011-09-26 2013-10-28 구태회 렌더링 시스템 및 방법
US10217270B2 (en) 2011-11-18 2019-02-26 Intel Corporation Scalable geometry processing within a checkerboard multi-GPU configuration
US9619855B2 (en) 2011-11-18 2017-04-11 Intel Corporation Scalable geometry processing within a checkerboard multi-GPU configuration
DE102012017629B4 (de) 2012-02-06 2024-02-01 Mbda Deutschland Gmbh Berechnen thermischer Schatten
US10242481B2 (en) 2012-03-15 2019-03-26 Qualcomm Incorporated Visibility-based state updates in graphical processing units
US20130257885A1 (en) * 2012-03-28 2013-10-03 Intel Corporation Low Power Centroid Determination and Texture Footprint Optimization For Decoupled Sampling Based Rendering Pipelines
KR101404489B1 (ko) * 2012-08-08 2014-06-10 한국과학기술정보연구원 멀티쓰레드를 이용한 동영상 실시간 렌더링 방법 및 시스템
US9672584B2 (en) * 2012-09-06 2017-06-06 Imagination Technologies Limited Systems and methods of partial frame buffer updating
CN103871095B (zh) * 2012-12-17 2018-07-17 Arm有限公司 图形处理系统中的隐藏面消除
US9779696B2 (en) 2013-01-16 2017-10-03 Intel Corporation Serialized access to graphics resources
EP2793127B1 (en) * 2013-04-19 2021-11-17 Huawei Technologies Co., Ltd. Method for displaying a 3D scene graph on a screen
US9286649B2 (en) * 2013-05-31 2016-03-15 Qualcomm Incorporated Conditional execution of rendering commands based on per bin visibility information with added inline operations
US9633411B2 (en) 2014-06-26 2017-04-25 Qualcomm Incorporated Load scheme for shared register in GPU
US9767602B2 (en) * 2014-06-30 2017-09-19 Intel Corporation Techniques for reduced pixel shading
GB2530996B (en) * 2014-10-06 2016-09-14 Imagination Tech Ltd Depth forwarding in a graphics processing system
US9824413B2 (en) * 2014-11-15 2017-11-21 Intel Corporation Sort-free threading model for a multi-threaded graphics pipeline
KR20170014617A (ko) * 2015-07-30 2017-02-08 삼성에스디에스 주식회사 3차원 모델의 비트맵 생성 방법과 이를 수행하기 위한 장치 및 시스템
KR20170034727A (ko) 2015-09-21 2017-03-29 삼성전자주식회사 그림자 정보 저장 방법 및 장치, 3d 렌더링 방법 및 장치
CN107223264B (zh) * 2016-12-26 2022-07-08 达闼机器人股份有限公司 一种渲染方法及装置
US10628057B2 (en) * 2017-03-28 2020-04-21 Hewlett Packard Enterprise Development Lp Capability based locking and access of shared persistent memory
US10621932B1 (en) * 2018-10-12 2020-04-14 Novatek Microelectronics Corp. Sub-pixel rendering data conversion apparatus and method
US10803651B2 (en) 2019-03-14 2020-10-13 Texas Instruments Incorporated Methods and apparatus to perform graphics processing on combinations of graphic processing units and digital signal processors
JP7345306B2 (ja) * 2019-07-30 2023-09-15 キヤノン株式会社 画像処理装置、画像処理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050041031A1 (en) 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20050068325A1 (en) 2003-09-29 2005-03-31 Ati Technologies, Inc. Multi-thread graphic processing system

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4636942A (en) * 1983-04-25 1987-01-13 Cray Research, Inc. Computer vector multiprocessing control
US6469746B1 (en) * 1992-12-28 2002-10-22 Sanyo Electric Co., Ltd. Multi-vision screen adapter
FR2735253B1 (fr) * 1995-06-08 1999-10-22 Hewlett Packard Co Synchronisation de donnees entre plusieurs dispositifs de restitution asynchrones de donnees
US6108460A (en) * 1996-01-02 2000-08-22 Pixelfusion Limited Load balanced image generation
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
WO1999056249A1 (en) * 1998-04-27 1999-11-04 Interactive Silicon, Inc. Graphics system and method for rendering independent 2d and 3d objects
US6198488B1 (en) 1999-12-06 2001-03-06 Nvidia Transform, lighting and rasterization system embodied on a single semiconductor platform
US6501471B1 (en) * 1999-12-13 2002-12-31 Intel Corporation Volume rendering
US6624817B1 (en) * 1999-12-31 2003-09-23 Intel Corporation Symmetrical accelerated graphics port (AGP)
US7358974B2 (en) * 2001-01-29 2008-04-15 Silicon Graphics, Inc. Method and system for minimizing an amount of data needed to test data against subarea boundaries in spatially composited digital video
US7234144B2 (en) * 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
JP4158413B2 (ja) * 2002-05-22 2008-10-01 ソニー株式会社 画像処理装置
US7200721B1 (en) * 2002-10-09 2007-04-03 Unisys Corporation Verification of memory operations by multiple processors to a shared memory
CN1932885B (zh) * 2002-10-15 2012-02-29 诺基亚公司 三维图像处理
US7633506B1 (en) * 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
US7233335B2 (en) * 2003-04-21 2007-06-19 Nividia Corporation System and method for reserving and managing memory spaces in a memory resource
US6919908B2 (en) * 2003-08-06 2005-07-19 Ati Technologies, Inc. Method and apparatus for graphics processing in a handheld device
US7174436B1 (en) * 2003-10-08 2007-02-06 Nvidia Corporation Method and system for maintaining shadow copies of data using a shadow mask bit
US7139003B1 (en) * 2003-12-15 2006-11-21 Nvidia Corporation Methods of processing graphics data including reading and writing buffers
US7053901B2 (en) * 2003-12-11 2006-05-30 Nvidia Corporation System and method for accelerating a special purpose processor
US7460126B2 (en) * 2004-08-24 2008-12-02 Silicon Graphics, Inc. Scalable method and system for streaming high-resolution media
JP4637640B2 (ja) 2005-05-16 2011-02-23 三菱電機株式会社 図形描画装置
JP3853829B1 (ja) * 2005-10-31 2006-12-06 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、並列処理装置および排他制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050041031A1 (en) 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US20050068325A1 (en) 2003-09-29 2005-03-31 Ati Technologies, Inc. Multi-thread graphic processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101680545B1 (ko) * 2015-06-30 2016-11-30 인천대학교 산학협력단 파노라마 동영상 생성 서비스 제공 방법 및 장치

Also Published As

Publication number Publication date
WO2008079984A1 (en) 2008-07-03
JP2010515122A (ja) 2010-05-06
TW200841274A (en) 2008-10-16
CA2670646A1 (en) 2008-07-03
CN101563712A (zh) 2009-10-21
JP4981923B2 (ja) 2012-07-25
CN101563712B (zh) 2013-03-27
EP2122575B1 (en) 2020-07-29
US8207972B2 (en) 2012-06-26
KR20090082512A (ko) 2009-07-30
US20080150949A1 (en) 2008-06-26
EP2122575A1 (en) 2009-11-25

Similar Documents

Publication Publication Date Title
KR101071073B1 (ko) 퀵 픽셀 렌더링 프로세싱
JP5032588B2 (ja) 3次元グラフィックスパイプラインの自動負荷分散
US10229529B2 (en) System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
JP6309620B2 (ja) 頂点シェーダのフロント・エンドとしてコンピュート・シェーダを使用すること
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
US9916674B2 (en) Baking path rendering objects into compact and efficient memory representations
US9715750B2 (en) System and method for layering using tile-based renderers
Stone et al. GPU-accelerated molecular visualization on petascale supercomputing platforms
EP3255612B1 (en) System and method for tessellation in an improved graphics pipeline
US8217962B2 (en) Single-pass bounding box calculation
JP4981162B2 (ja) 画像データの記憶・検索技法
US10186068B2 (en) Method, apparatus and system for rendering an image
US10262391B2 (en) Graphics processing devices and graphics processing methods
US20140267426A1 (en) System, method, and computer program product for automatically extending a lasso region in two-dimensional image editors
WO2021231328A1 (en) Method and apparatus of data compression
US20100277488A1 (en) Deferred Material Rasterization
Huang Parallelized Ray Casting Volume Rendering and 3D Segmentation with Combinatorial Map
Kassing Development of a 3D Graphics Engine Computer Systems Lab, 2006-2007

Legal Events

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

Payment date: 20140828

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8