KR102109130B1 - 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 - Google Patents

그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 Download PDF

Info

Publication number
KR102109130B1
KR102109130B1 KR1020130095160A KR20130095160A KR102109130B1 KR 102109130 B1 KR102109130 B1 KR 102109130B1 KR 1020130095160 A KR1020130095160 A KR 1020130095160A KR 20130095160 A KR20130095160 A KR 20130095160A KR 102109130 B1 KR102109130 B1 KR 102109130B1
Authority
KR
South Korea
Prior art keywords
patch
tessellation
geometry
input data
tiling
Prior art date
Application number
KR1020130095160A
Other languages
English (en)
Other versions
KR20150018953A (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 삼성전자주식회사
Priority to KR1020130095160A priority Critical patent/KR102109130B1/ko
Priority to US14/447,883 priority patent/US9665980B2/en
Publication of KR20150018953A publication Critical patent/KR20150018953A/ko
Application granted granted Critical
Publication of KR102109130B1 publication Critical patent/KR102109130B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/30Polynomial surface description
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Abstract

그래픽스 프로세싱 유닛의 동작 방법은 입력 데이터에 기초하여 테셀레이션 (tessellation) 동작 전에 타일링 (tiling) 동작을 수행할지 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하는 단계와, 결정 결과에 따라 상기 타일링 동작을 수행하는 단계를 포함하며, 상기 결정하는 단계는 상기 입력 데이터가 패치가 아니거나, 상기 패치의 지오메트리(geometry)가 상기 패치의 컨트롤 포인트들에 의해 정의되는 컨벡스 헐(convex hull) 밖에 위치하거나, 쉐이딩 동작에 따라 상기 패치에 상응하는 테셀레이트된 프리미티브의 지오메트리가 변할 때, 상기 테셀레이션 동작 후에 상기 타일링 동작의 수행을 결정한다.

Description

그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 {GRAPHICS PROCESSING UNIT, METHOD THEREOF, AND DEVICES HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 그래픽스 프로세싱 유닛에 관한 것으로, 특히 입력 데이터에 기초하여 테셀레이션 동작과 타일링 동작의 순서를 결정하고, 결정 결과에 따라 상기 타일링 동작을 수행할 수 있는 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들에 관한 것이다.
그래픽스 프로세싱 유닛(graphics processing unit(GPU))은 디스플레이에서 디스플레이될 대상(object)의 이미지를 렌더링한다. 최근, 상기 GPU는 상기 대상의 이미지를 렌더링하는 과정 도중에 상기 대상의 이미지를 보다 세밀하게 표현하기 위해 테셀레이션 동작(tessellation operation)을 수행한다.
GPU는 테셀레이션 동작을 통해 대상의 이미지를 위한 복수의 프리미티브들 (primitives)을 생성하고, 상기 복수의 프리미티브들에 상응하는 데이터를 외부 메모리에 저장한다.
GPU는 테셀레이션 동작 이후의 다른 동작을 수행하기 위해 복수의 프리미티브들에 상응하는 많은 양의 데이터를 읽고 써야하므로 상기 데이터의 대역폭 (bandwidth)의 낭비와 전력 소모를 발생한다.
본 발명이 이루고자 하는 기술적인 과제는 입력 데이터에 기초하여 테셀레이션 동작과 타일링 동작의 순서를 결정하고, 결정 결과에 따라 상기 타일링 동작을 수행할 수 있는 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛의 동작 방법은 입력 데이터에 기초하여 테셀레이션(tessellation) 동작 전에 타일링(tiling) 동작을 수행할지 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하는 단계와, 결정 결과에 따라 상기 타일링 동작을 수행하는 단계를 포함하며, 상기 결정하는 단계는 상기 입력 데이터가 패치가 아니거나, 상기 패치의 지오메트리(geometry)가 상기 패치의 컨트롤 포인트들에 의해 정의되는 컨벡스 헐(convex hull) 밖에 위치하거나, 쉐이딩 동작에 따라 상기 패치에 상응하는 테셀레이트된 프리미티브의 지오메트리가 변할 때, 상기 테셀레이션 동작 후에 상기 타일링 동작의 수행을 결정한다.
상기 결정하는 단계는 상기 입력 데이터가 상기 패치이고 상기 패치의 상기 지오메트리가 상기 컨벡스 헐 안에 위치하고 상기 패치의 상기 지오메트리가 보존될 때, 상기 테셀레이션 동작 전에 상기 타일링 동작의 수행을 결정한다.
본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛은 테셀레이션 동작 전에 타일링 동작을 수행하는 프리-타일러(pre-tiler)와, 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행하는 포스트-타일러(post-tiler)와, 입력 데이터에 기초하여 상기 프리-타일러와 상기 포스트-타일러 각각의 상기 타일링 동작의 수행 여부를 제어하는 컨트롤 로직을 포함하며, 상기 컨트롤 로직은 상기 입력 데이터가 패치가 아니거나, 상기 패치의 지오메트리가 상기 패치의 컨트롤 포인트들에 의해 정의되는 컨벡스 헐 밖에 위치하거나, 쉐이딩 동작에 따라 상기 패치에 상응하는 테셀레이트된 프리미티브의 지오메트리가 변할 때, 상기 포스트-타일러가 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행하도록 상기 포스트-타일러를 제어한다.
상기 컨트롤 로직은 상기 입력 데이터가 상기 패치이고 상기 패치의 상기 지오메트리가 상기 컨벡스 헐 안에 위치하고 상기 패치의 상기 지오메트리가 보존될 때, 상기 프리-타일러가 상기 테셀레이션 동작 전에 상기 타일링 동작을 수행하도록 상기 프리-타일러를 제어한다.
실시 예에 따라 상기 프리-타일러는 버텍스 세이더(vertex shader)와 헐 세이더(hull shader) 사이에 구현된다.
다른 실시 예에 따라 상기 프리-타일러는 헐 세이더(hull shader)와 테셀레이터(tessellator) 사이에 구현된다.
본 발명의 실시 예에 따른 애플리케이션 프로세서는 상기 그래픽스 프로세싱 유닛과 메모리로부터 출력된 상기 입력 데이터를 상기 그래픽스 프로세싱 유닛으로 전송하는 메모리 인터페이스를 포함한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 상기 그래픽스 프로세싱 유닛과, 상기 입력 데이터를 저장하는 메모리와, 상기 메모리로부터 출력된 상기 입력 데이터를 상기 그래픽스 프로세싱 유닛으로 전송하는 메모리 인터페이스를 포함한다.
본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛은 입력 데이터에 기초하여 테셀레이션 동작과 타일링 동작의 순서를 제어할 수 있는 효과가 있다.
이에 따라, 상기 그래픽스 프로세싱 유닛은 상기 테셀레이션 동작 전에 상기 타일링 동작을 수행하고, 타일링 결과에 따른 테셀레이트될 입력 데이터에 상응하는 데이터만을 읽고 쓸 수 있기 때문에 데이터의 대역폭의 낭비를 방지할 수 있는 효과가 있다.
또한, 상기 그래픽스 프로세싱 유닛은 테셀레이트될 입력 데이터에 상응하는 데이터만을 읽고 쓸 수 있기 때문에 상기 데이터를 리드할 때 소모되는 전력을 감소시킬 수 있는 효과도 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛을 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 메모리의 개략적인 블록도를 나타낸다.
도 3은 도 1에 도시된 그래픽스 프로세싱 유닛의 일 실시 예를 나타내는 블록도이다.
도 4부터 도 6은 도 3 도시된 컨트롤 로직이, 입력 데이터가 패치일 때, 테셀레이션 동작과 타일링 동작 순서를 결정하는 방법을 설명하기 위한 개념도이다.
도 7은 도 1에 도시된 그래픽스 프로세싱 유닛의 다른 실시 예를 나타내는 블록도이다.
도 8은 도 7에 도시된 그래픽스 프로세싱 유닛의 동작 방법을 설명하기 위한 개념도이다.
도 9는 본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛의 동작 방법을 설명하기 위한 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛을 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(10)은 데이터 처리 장치(50), 디스플레이(200), 및 메모리(300)를 포함할 수 있다.
데이터 처리 시스템(10)은 PC(personal computer) 또는 휴대용 전자 장치(또는 모바일 기기), 또는 이미지 데이터를 디스플레이할 수 있는 디스플레이(200)를 포함하는 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라 (digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
데이터 처리 장치(50)는 디스플레이(200) 및/또는 메모리(300)를 제어할 수 있다. 즉, 데이터 처리 장치(50)는 데이터 처리 시스템(10)의 동작을 전반적으로 제어할 수 있다.
예컨대, 데이터 처리 장치(50)는 메모리(300)로부터 출력된 입력 데이터에 기초하여 테셀레이션(tessellation) 동작 전에 타일링(tiling) 동작을 수행할지 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 상기 타일링 동작을 수행할 수 있다.
또한, 데이터 처리 장치(50)는, 메모리(300)로부터 출력된 입력 데이터와 CPU(central processing unit; 60)로부터 전송된 렌더링 스테이트(rendering state)에 기초하여, 테셀레이션 동작 전에 타일링 동작을 수행할지 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 상기 테셀레이션 동작을 수행할 수 있다.
즉, 데이터 처리 장치(50)는 메모리(300)로부터 출력된 입력 데이터에 기초하여 테셀레이션 동작과 타일링 동작의 순서를 제어(또는 결정)할 수 있다.
데이터 처리 장치(50)는 마더보드(motherboard)와 같은 인쇄 회로 기판 (printed circuit board(PCB)), 집적 회로(intergrated circuit(IC)), 또는 SoC (system on chip)로 구현될 수 있다. 예컨대, 데이터 처리 장치(50)는 프로세서 또는 애플리케이션 프로세서(application processor)일 수 있다.
데이터 처리 장치(50)는 CPU(60), ROM(read only memory; 70), RAM(random access memory; 80), 디스플레이 컨트롤러(display controller; 90), 메모리 인터페이스(memory interface; 95), 및 그래픽스 프로세싱 유닛(graphics processing unit(GPU); 100)을 포함할 수 있다.
CPU(60)는 데이터 처리 장치(50)의 전반적인 동작을 제어할 수 있다. 예컨대, CPU(60)는 각 구성 요소(70, 80, 90, 95, 및 100)의 동작을 제어할 수 있다. CPU(60)는 버스(55)를 통하여 각 구성 요소(70, 80, 90, 95, 및 100)와 통신할 수 있다.
CPU(60)는 프로그램 명령들(program instructions)을 읽고 실행(execute)할 수 있다.
예컨대, 메모리(70, 80 또는 300)에 저장된 프로그램들 및/또는 데이터는 CPU(60)의 제어에 따라 CPU(60) 내부의 메모리, 예컨대 캐시 메모리(미도시)로 로드(load)될 수 있다.
실시 예에 따라, CPU(60)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 멀티-코어는 두 개 또는 그 이상의 독립적인 코어들(cores)을 갖는 컴퓨팅 컴포넌트(computing component)일 수 있다.
ROM(70)은 프로그램들 및/또는 데이터를 영구적으로 저장할 수 있다.
실시 예에 따라, ROM(70)은 EPROM(erasable programmable read-only memory) 또는 EEPROM(electrically erasable programmable read-only memory)으로 구현될 수 있다.
RAM(80)은 프로그램들, 데이터, 및/또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(70 또는 300)에 저장된 프로그램들 및/또는 데이터는 CPU(60)의 제어, GPU(100)의 제어, 또는 ROM(70)에 저장된 부팅 코드(booting code)에 따라 RAM(80)에 일시적으로 저장될 수 있다.
실시 예에 따라, RAM(80)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
GPU(100)는 CPU(60)의 부하(load)를 감소시키기 위해 그래픽스 처리와 관련된 동작(들)을 수행할 수 있다.
GPU(100)는 메모리(300)로부터 출력된 입력 데이터에 기초하여 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 상기 타일링 동작을 수행할 수 있다.
실시 예에 따라, CPU(60)는 메모리(300)로부터 출력된 입력 데이터에 기초하여 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하고, 결정 결과에 따른 제어 신호(들)를 생성할 수 있다. GPU(100)는 CPU(60)로부터 출력된 상기 제어 신호에 응답하여 상기 결정결과에 상응하는 상기 타일링 동작을 수행할 수 있다.
또한, GPU(100)는, 메모리(300)로부터 출력된 입력 데이터와 CPU(60)로부터 전송된 렌더링 스테이트(rendering state)에 기초하여, 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 상기 타일링 동작을 수행할 수 있다.
디스플레이 컨트롤러(90)는 디스플레이(200)의 동작을 제어할 수 있다.
예컨대, 디스플레이 컨트롤러(90)는 메모리(300)로부터 출력된 이미지 데이터, 예컨대 스틸 이미지(still image) 데이터, 무빙 이미지(moving image) 데이터, 3차원 이미지(3D image), 또는 3차원 입체 이미지(stereoscopic 3D image) 데이터를 디스플레이(200)로 전송할 수 있다.
메모리 인터페이스(95)는 메모리(300)를 액세스(access)할 수 있는 메모리 컨트롤러의 기능을 수행할 수 있다. 예컨대, 데이터 처리 장치(50)와 메모리(300)는 메모리 인터페이스(95)를 통하여 서로 통신할 수 있다. 데이터 처리 장치(50)와 메모리(300)는 메모리 인터페이스(95)를 통하여 서로 데이터를 주고받을 수 있다.
디스플레이(200)는 디스플레이 컨트롤러(90)로부터 출력된 이미지 데이터에 대응되는 이미지를 디스플레이할 수 있다.
예컨대, 디스플레이(200)는 터치스크린, LCD(liquid crystal display), TFT-LCD(thin film transistor-liquid crystal display), LED(liquid emitting diode) 디스플레이, OLED(organic LED) 디스플레이, AMOLED (active matrix OLED) 디스플레이 또는 플렉시블(flexible) 디스플레이로 구현될 수 있다.
메모리(300)는 CPU(60) 및/또는 GPU(100)에 의하여 처리될 프로그램들 및/또는 데이터(또는 이미지 데이터)를 저장할 수 있다.
메모리(300)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다. 메모리(300)는 외부 메모리로서 주기억 장치(main memory)로서의 기능을 수행할 수 있다.
상기 휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
상기 불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive bridging RAM(CBRAM), FeRAM (Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
상기 불휘발성 메모리 장치는 플래시-기반(flash-based) 메모리 장치, 예컨대 SD(secure digital) 카드, MMC(multimedia card), eMMC(embedded-MMC), USB (universal serial bus) 플래시 드라이브, 또는 UFS(universal flash storage)로 구현될 수 있다.
또한, 상기 불휘발성 메모리 장치는 하드디스크 드라이브(hard disk drive(HDD)) 또는 솔리드 스테이트 드라이브(SSD)로 구현될 수 있다.
도 2는 도 1에 도시된 메모리의 개략적인 블록도를 나타낸다.
도 1 및 도 2를 참조하면, 메모리(300)는 인덱스 버퍼(index buffer; 310), 버텍스 버퍼(vertex buffer; 320), 유니폼 버퍼(uniform buffer; 330), 리스트 버퍼(list buffer; 340), 텍스처 버퍼(texture buffer; 360), 깊이/스텐실 버퍼 (depth/stencil buffer; 370), 컬러 버퍼(color buffer; 380), 및 프레임 버퍼 (frame buffer; 390)을 포함할 수 있다.
인덱스 버퍼(310)는 각 버퍼(320 내지 390)에 저장된 데이터의 인덱스 (index)를 저장할 수 있다. 예컨대, 상기 인덱스는 데이터의 이름, 및 크기 등의 속성 정보(attribute information)와 상기 데이터가 저장된 위치, 예컨대 버퍼(320, 330, 340, 360, 370, 380 또는 390)의 위치 정보 등을 포함할 수 있다.
버텍스 버퍼(320)는 버텍스(vertex)의 위치(position), 컬러(color), 법선 벡터(normal vector), 및 텍스처 좌표(texture coordinate)와 같은 속성 (attribute)에 대한 버텍스 데이터를 저장할 수 있다.
버텍스 버퍼(320)는 GPU(100)의 테셀레이션 동작에 의해 생성된 테셀레이트된(tessellated) 버텍스의 위치, 컬러, 법선 벡터, 및 텍스처 좌표와 같은 속성에 대한 테셀레이트된 버텍스 데이터를 저장할 수 있다.
버텍스 버퍼(320)는 GPU(100)의 테셀레이션 동작에 필요한 패치(patch)에 포함된 각 컨트롤 포인트(control point)의 위치, 법선 벡터와 같은 속성에 대한 패치 데이터(또는 컨트롤 포인트 데이터)를 저장할 수 있다.
실시 예에 따라, 상기 버텍스 데이터는 프리미티브(primitive)에 포함된 각 버텍스의 위치, 컬러, 법선 벡터, 및 텍스처 좌표와 같은 속성에 대한 데이터를 포함할 수 있다. 예컨대, 상기 프리미티브는 버텍스(vertex), 라인(line or isoline), 및 다각형(polygon)을 의미할 수 있다.
또 다른 실시 예에 따라, 상기 버텍스 데이터는 패치에 포함된 각 컨트롤 포인트의 위치, 법선 벡터와 같은 속성에 대한 패치 데이터(또는 컨트롤 포인트 데이터)를 포함할 수 있다. 예컨대, 상기 패치는 각 컨트롤 포인트와 매개변수 방정식에 의해서 정의될 수 있다.
유니폼 버퍼(330)는 패치, 예컨대 곡선 또는 표면을 정의하기 위한 매개 변수 방정식(parametric equation)에 대한 상수 및/또는 쉐이딩(shading) 프로그램을 위한 상수를 저장할 수 있다.
리스트 버퍼(340)는 GPU(100)의 타일링 동작에 의해 생성된 각 타일과 상기 각 타일에 포함된 데이터(예컨대, 버텍스 데이터, 패치 데이터, 또는 테셀레이트된 버텍스 데이터)의 인덱스를 매칭한 리스트를 저장할 수 있다.
텍스쳐 버퍼(360)는 복수의 텍셀들(texels)을 타일(tile) 형식으로 저장할 수 있다.
깊이/스텐실 버퍼(370)는 GPU(100)에 의해 처리된, 예컨대 렌더링 (rendering)된 이미지에 포함된 각 픽셀의 깊이에 대한 깊이 데이터와 상기 각 픽셀의 스텐실에 대한 스텐실 데이터를 저장할 수 있다.
컬러 버퍼(380)는 GPU(100)에 수행될 블렌딩(blending) 동작을 위한 컬러에 대한 컬러 데이터를 저장할 수 있다.
프레임 버퍼(390)는 GPU(100)에 의해 최종적으로 처리된 픽셀에 대한 픽셀 데이터(또는 이미지 데이터)를 저장할 수 있다.
도 3은 도 1에 도시된 그래픽스 프로세싱 유닛의 일 실시 예를 나타내는 블록도이다.
도 1부터 도 3을 참조하면, 도 1의 GPU(100)의 일 실시 예에 따른 GPU(100A)는 CPU(60)로부터 출력된 데이터 및/또는 메모리 인터페이스(95)를 통해 메모리 (300)로부터 출력된 데이터를 수신하거나 GPU(100A)에 의해 처리된 데이터를 메모리(300)로 전송할 수 있으나, 설명의 편의를 위해 도 3에서는 CPU(60)와 메모리 인터페이스(95)는 생략한다.
GPU(100A)는 메모리(300)로부터 출력된 입력 데이터(DATA)에 기초하여 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 상기 타일링 동작을 수행할 수 있다.
GPU(100A)는 컨트롤 로직(control logic; 110), 캐시 메모리(cache memory; 115), 버텍스 세이더(vertex shader; 120), 프리-타일러(pre-tiler; 130), 헐 세이더(hull shader; 140), 테셀레이터(tessellator; 150), 도메인 세이더(domain shader; 160), 지오메트리 세이더(geometry shader; 170), 포스트-타일러(post-tiler; 175), 래스터라이저(rasterizer; 180), 픽셀 세이더(pixel shader; 190), 및 출력 머저(output merger; 195)를 포함할 수 있다.
본 명세서에서 표현된 테셀레이션 동작은 대상(object)의 이미지를 렌더링하기 위해 프리미티브들을 생성하는 동작을 의미하고, GPU(100A)의 헐 세이더(140), 테셀레이터(150), 및 도메인 세이더(160)에 의해 수행되는 일련의 동작을 의미할 수 있다.
컨트롤 로직(110)은 GPU(100A)의 전반적인 동작을 제어할 수 있다. 예컨대, 컨트롤 로직(110)은 각 구성 요소(115, 120, 130, 140, 150, 160, 170, 175, 180, 190, 및 195)의 동작을 제어할 수 있다.
각 구성 요소(120, 130, 140, 150, 160, 170, 175, 180, 190, 및 195)는 컨트롤 로직(110)의 제어에 따라 RAM(80)으로부터 출력된 그래픽스 처리와 관련된 프로그램 명령(또는 쉐이딩(shading) 프로그램; SHP)을 실행할 수 있는 유닛(unit)일 수 있다. 상기 유닛은 하드웨어 컴포넌트(hardware component) 또는 소프트웨어 컴포넌트를 의미할 수 있다.
예컨대, 프로그램 명령(SHP)은 버텍스 세이더 프로그램 명령, 타일러 프로그램 명령, 헐 세이더 프로그램 명령, 테셀레이터 프로그램 명령, 도메인 세이더 프로그램 명령, 지오메트리 세이더 프로그램 명령, 래스터라이저 프로그램 명령, 픽셀 세이더 프로그램 명령, 및/또는 출력 머저 프로그램 명령 등을 포함할 수 있다.
컨트롤 로직(110)은 메모리(300)로부터 출력된 입력 데이터(DATA)에 기초하여 테셀레이션 동작과 타일링 동작의 순서를 제어할 수 있다.
예컨대, 컨트롤 로직(110)은, 버텍스 버퍼(320)로부터 출력된 입력 데이터 (DATA)에 기초하여, 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 테셀레이션 동작 후에 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 프리-타일러(130)와 포스트-타일러(175) 각각의 타일링 동작을 제어할 수 있다.
또한, 컨트롤 로직(110)은, 버텍스 버퍼(320)로부터 출력된 입력 데이터 (DATA)와 CPU(60)로부터 전송된 렌더링 스테이트(rendering state)에 기초하여, 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 테셀레이션 동작 후에 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 프리-타일러(130)와 포스트-타일러 (175) 각각의 타일링 동작을 제어할 수 있다. 예컨대, 상기 렌더링 스테이트는 프로그램 명령(SHP)을 포함할 수 있다.
입력 데이터(DATA)가 패치가 아닐 때, 예컨대 프리미티브 또는 버텍스일 때, 컨트롤 로직(110)은 포스트-타일러(175)가 테셀레이션 동작 후에 타일링 동작을 수행하도록 포스트-타일러(175)를 제어할 수 있다.
이때, 컨트롤 로직(100)은 버텍스 세이더(120)가 상기 프리미티브 또는 상기 버텍스를 처리하고, 처리된 데이터를 지오메트리 세이더(170)로 출력하도록 버텍스 세이더(120)를 제어할 수 있다.
입력 데이터(DATA)가 패치가 아닐 때, 예컨대 입력 데이터(DATA)가 프리미티브 또는 버텍스일 때, 상기 프리미티브 또는 상기 버텍스는 테셀레이션 동작에 의해 테셀레이트되지 않을 수 있다.
입력 데이터(DATA)가 버텍스 버퍼(320)로부터 출력된 패치 데이터, 예컨대 패치일 때, 컨트롤 로직(110)은 상기 패치에 기초하여 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 테셀레이션 동작 후에 타일링 동작을 수행할지 결정하고, 결정 결과에 따라 프리-타일러(130)와 포스트-타일러(175) 각각의 타일링 동작을 제어할 수 있다.
도 4부터 도 6은 도 3 도시된 컨트롤 로직이, 입력 데이터가 패치일 때, 테셀레이션 동작과 타일링 동작 순서를 결정하는 방법을 설명하기 위한 개념도이다.
도 1부터 도 4를 참조하면, 패치(PAT)의 지오메트리가 패치(PAT)의 컨트롤 포인트들(P0~P4)에 의해 정의되는 컨벡스 헐(convex hull; CVX) 밖에 위치할 때, 컨트롤 로직(110)은 포스트-타일러(175)가 테셀레이션 동작 후에 타일링 동작을 수행하도록 포스트-타일러(175)를 제어할 수 있다.
패치(PAT)의 지오메트리가 패치(PAT)의 컨트롤 포인트들(P0~P4)에 의해 정의되는 컨벡스 헐(CVX) 밖에 위치할 때, 컨벡스 헐(CVX)에 기초한 바운딩 박스 (bounding box)가 패치(PAT)에 할당되기 어렵기 때문에 포스트-타일러(175)가 테셀레이션 동작 후에 타일링 동작을 수행하는 것이 효과적이다.
도 1부터 도 3, 도 5 및 도 6을 참조하면, 쉐이딩 동작에 따라 패치(PAT)에 상응하는 테셀레이트된 프리미티브(T_PR)의 지오메트리가 변할 때, 컨트롤 로직 (110)은 포스트-타일러(175)가 테셀레이션 동작 후에 타일링 동작을 수행하도록 포스트-타일러(175)를 제어할 수 있다.
예컨대, 쉐이딩 동작은 도메인 세이더(160) 또는 지오메트리 세이더(170)에 의한 쉐이딩 동작, 예컨대 트랜스포메이션(transformation)에 관련된 동작일 수 있다.
도 5와 도 6에 도시된 바와 같이, 패치(PAT)의 지오메트리는 컨트롤 포인트들(P0~P4)에 의해 정의되는 컨벡스 헐(convex hull; CVX) 내에 위치할 수 있지만, 쉐이딩 동작에 따라 패치(PAT)에 상응하는 테셀레이트된 프리미티브(T_PR)의 지오메트리, 예컨대, 모양(shape) 및/또는 위치(position)는 변할 수 있다.
예컨대, 테셀레이션 동작 전에 수행된 타일링 동작에 의해 타일(TL1)에 포함된 패치(PAT)에 상응하는 테셀레이트된 프리미티브(T_PR)는 쉐이딩 동작에 따라 타일(TL1)과 다른 타일(TL2)에 포함될 수 있다.
즉, 쉐이딩 동작에 따라 패치(PAT)에 상응하는 테셀레이트된 프리미티브 (T_PR)의 지오메트리, 예컨대 모양 및/또는 위치가 변할 수 있기 때문에, 포스트-타일러(175)가 테셀레이션 동작 후에 타일링 동작을 수행하는 것이 효과적이다.
패치(PAT)의 지오메트리가 보존, 예컨대 패치(PAT)의 지오메트리가 컨트롤 포인트들(P0~P4)에 의해 정의되는 컨벡스 헐(CVX) 내에 위치하고, 쉐이딩 동작에 따라 패치(PAT)에 상응하는 테셀레이트된 프리미티브(T_PR)의 지오메트리가 변하지 않을 때, 컨트롤 로직(110)은 프리-타일러(130)가 테셀레이션 동작 전에 타일링 동작을 수행하도록 프리-타일러(130)를 제어할 수 있다.
예컨대, 컨벡스 헐(CVX) 내에 위치하는 패치(PAT)는 배찌어 패치(Bezier patch), 및 근사(approximating) 커브(또는 표면)일 수 있다.
버텍스 세이더(120)는 버텍스 버퍼(320)로부터 출력된 버텍스 데이터(예컨대, 버텍스 또는 프리미티브) 또는 패치 데이터(예컨대, 패치)를 입력 데이터 (DATA)로서 수신할 수 있다.
버텍스 세이더(120)는 입력 데이터(DATA)를 처리할 수 있다. 예컨대, 버텍스 세이더(120)는 입력 데이터(DATA)를 변환(transformation), 모핑(morphing), 스키닝(skinning), 또는 라이팅(lighting) 등과 같은 동작(들)을 통해 처리할 수 있다.
버텍스 세이더(120)는 처리된 데이터를 프리-타일러(130) 또는 지오메트리 세이더(170)로 출력할 수 있다.
예컨대, 입력 데이터(DATA)가 패치 데이터가 아닐 때, 즉, 입력 데이터 (DATA)가 버텍스 데이터일 때, 버텍스 세이더(120)는 상기 버텍스 데이터를 처리하고, 처리된 버텍스 데이터를 지오메트리 세이더(170)로 출력할 수 있다.
입력 데이터(DATA)가 패치 데이터일 때, 버텍스 세이더(120)는 상기 패치 데이터를 처리하고, 처리된 패치 데이터를 프리-타일러(120)로 출력할 수 있다.
프리-타일러(130)는, 컨트롤 로직(110)의 제어에 따라, 버텍스 세이더(120)로부터 출력된 처리된 패치 데이터를 타일링하고, 타일링된 패치 데이터를 헐 세이더(140)로 출력할 수 있다.
예컨대, 프리-타일러(130)는 처리된 패치 데이터 각각에 대응하는 패치들 각각을 디스플레이(200)에 상응하는 가상 공간에 프로젝트(project)하고, 상기 패치들 각각에 할당된 바운딩 박스에 기초하여 상기 가상 공간을 타일들로 비닝 (binning)하고, 상기 타일들 각각과 상기 타일들 각각에 포함된 패치들 각각의 인덱스를 매칭한 리스트를 작성할 수 있다.
프리-타일러(130)는 상기 리스트를 리스트 버퍼(340)에 저장할 수 있다.
프리-타일러(130)는 상기 리스트를 캐시 메모리(115)에 업로드하고, 상기 업로드된 리스트에 기초하여 순차적으로 타일들 각각에 포함된 패치들 각각의 패치 데이터를 메모리(300)로부터 리드하여 헐 세이더(140)로 출력할 수 있다.
즉, 프리-타일러(130)는 테셀레이션 동작 전에 패치들을 타일링하고, 타일링 결과에 따라 테셀레이트될 패치에 상응하는 패치 데이터만을 리드하여 헐 세이더 (140)로 출력할 수 있다.
따라서, 테셀레이트될 패치에 상응하는 패치 데이터만이 테셀레이션 동작을 수행하기 위해 메모리(300)로부터 GPU(100A)로 전송되기 때문에, GPU(100A)는 데이터의 대역폭의 낭비를 감소시킬 수 있다.
또한, GPU(100A)는 테셀레이트될 패치에 상응하는 패치 데이터만을 리드하기 때문에 데이터를 리드하는 동작시에 소모되는 파워를 감소시킬 수 있다.
프리-타일러(130)는, 컨트롤 로직(110)의 제어에 따라, 버텍스 세이더(120)로부터 출력된 처리된 패치 데이터를 바이패스할 수 있다.
헐 세이더(140)는 버텍스 세이더(120)로부터 출력된 처리된 패치 데이터 또는 프리-타일러(130)로부터 출력된 타일된 패치 데이터를 수신하고, 수신된 데이터에 상응하는 패치에 대한 테셀레이션 팩터(tessellation factor)를 결정할 수 있다.
예컨대, 상기 테셀레이션 팩터는 수신된 데이터에 상응하는 패치에 대한 세밀하게 표현하는 정도(level of detail(LOD))를 의미할 수 있다.
헐 세이더(140)는 테셀레이션 팩터를 테셀레이터(150)로 출력할 수 있다.
헐 세이더(140)는 수신된 데이터에 포함된 컨트롤 포인트들, 매개 변수 방정식, 및 테셀레이션 팩터를 도메인 세이더(160)로 출력할 수 있다.
테셀레이터(150)는 헐 세이더(140)에 의해 결정된 테셀레이션 팩터(들)에 기초하여 테셀레이션 도메인 좌표(tessellation damain coordinate)를 테셀레이트할 수 있다. 예컨대, 테셀레이션 도메인 좌표는 (u, v) 또는 (u, v, w)에 의해 정의될 수 있다.
테셀레이터(150)는 테셀레이트된 도메인 좌표를 도메인 세이더(160)로 출력할 수 있다.
도메인 세이더(160)는 테셀레이션 팩터(들) 및 매개 변수 방정식에 기초하여 테셀레이트된 도메인 좌표에 상응하는 패치의 공간 좌표를 계산할 수 있다. 예컨대, 공간 좌표는 (x, y, z)에 의해 정의될 수 있다.
도메인 세이더(160)는 계산된 공간 좌표를 이용하여 점들, 라인들, 및 삼각형들 등과 같은 프리미티브들을 생성하고, 생성된 프리미티브들을 지오메트리 세이더(170)로 출력할 수 있다.
헐 세이더(140), 테셀레이터(150), 및 도메인 세이더(160)에 의해 수행되는 일련의 동작, 즉 테셀레이션 동작을 통해 생성된 프리미티브들은 테셀레이트된 버텍스들을 포함할 수 있다. 즉, 테셀레이트된 버텍스들에 대한 버텍스 데이터는 테셀레이트된 버텍스 데이터로서 버텍스 버퍼(320)에 저장될 수 있다.
지오메트리 세이더(170)는 도메인 세이더(160)로부터 출력된 프리미티브들에 인접한 버터시즈(vertices)를 더하거나 또는 프리미티브들에 인접한 버터시즈를 제거하여 새로운 프리미티브들을 생성할 수 있다.
또한, 지오메트리 세이더(170)는 버텍스 세이더(120)로부터 출력된 버텍스(또는 프리미티브)에 인접한 버터시즈를 더하거나 또는 버텍스(또는 프리미티브) 인접한 버터시즈를 제거하여 새로운 프리미티브들을 생성할 수 있다.
지오메트리 세이더(170)는 생성된 새로운 프리미티브들을 포스트-타일러 (175)로 출력할 수 있다.
포스트-타일러(175)는, 컨트롤 로직(110)의 제어에 따라, 지오메트리 세이더 (170)로부터 출력된 새로운 프리미티브들을 타일링하고, 타일된 프리미티브들을 래스터라이저(180)로 출력할 수 있다.
포스트-타일러(175)의 타일링 동작은 상술한 프리-타일러(130)의 타일링 동작과 실질적으로 동일하다.
포스트-타일러(175)는, 컨트롤 로직(110)의 제어에 따라, 지오메트리 세이더 (170)로부터 출력된 새로운 프리미티브들을 바이패스할 수 있다.
래스터라이저(180)는 지오메트리 세이더(170)로부터 출력된 새로운 프리미티브들 또는 포스트-타일러(175)로부터 출력된 타일된 프리미티브들을 복수의 픽셀들로 변환할 수 있다.
픽셀 세이더(190)는 복수의 픽셀들의 효과를 처리할 수 있다. 예컨대, 상기 효과는 상기 복수의 픽셀들의 컬러 또는 명암 등일 수 있다.
실시 예에 따라, 픽셀 세이더(190)는 효과를 처리하기 위한 계산 연산들 (computation operations)을 수행할 수 있다. 상기 계산 연산들은 텍스쳐 매핑 (texture mapping)과 컬러 포멧 변환(color format conversion) 등을 포함할 수 있다.
상기 텍스쳐 매핑은 복수의 픽셀들에 세부감(detail)을 더하기 위해 텍스쳐 버퍼(360)로부터 출력되는 복수의 텍셀들을 매핑하는 동작을 의미할 수 있다.
상기 컬러 포멧 변환은 복수의 픽셀들을 RGB 포맷, YUV 포맷, 또는 YCoCg 포맷 등으로 변환하는 동작을 의미할 수 있다.
출력 머저(195)는, 이전 픽셀들의 정보를 이용하여, 처리된 복수의 픽셀들 중에서 디스플레이(200)에서 디스플레이될 최종 픽셀들을 확정하고, 확정된 최종 픽셀들의 컬러를 생성할 수 있다. 예컨대, 상기 이전 픽셀들의 정보는 깊이 정보, 스텐실 정보, 및 컬러 정보 등 일 수 있다.
예컨대, 출력 머저(195)는, 깊이/스텐셀 버퍼(370)로부터 출력된 깊이 데이터에 기초하여, 처리된 복수의 픽셀들을 깊이 테스트하고, 테스트 결과에 따라 최종 픽셀들을 확정할 수 있다.
출력 머저(195)는, 깊이/스텐실 버퍼(370)로부터 출력된 스텐실 데이터에 기초하여, 처리된 복수의 픽셀들을 스텐셀 테스트하고, 테스트 결과에 따라 최종 픽셀들을 확정할 수 있다.
출력 머저(195)는, 컬러 버퍼(380)로부터 출력된 컬러 데이터를 이용하여, 확정된 최종 픽셀들을 블렌딩할 수 있다.
출력 머저(195)는 상기 확정된 최종 픽셀들에 대한 픽셀 데이터(또는 이미지 데이터)를 프레임 버퍼(390)로 출력할 수 있다.
상기 픽셀 데이터는 프레임 버퍼(380)에 저장되고, 상기 픽셀 데이터는 디스플레이 컨트롤러(90)를 통하여 디스플레이(200)에서 디스플레이될 수 있다.
도 7은 도 1에 도시된 그래픽스 프로세싱 유닛의 다른 실시 예를 나타내는 블록도이다.
도 7을 참조하면, 도 1의 GPU(100)의 다른 실시 예에 따른 GPU(100B)는 컨트롤 로직(control logic; 110), 버텍스 세이더(vertex shader; 120), 프리-타일러 (pre-tiler; 130), 헐 세이더(hull shader; 140), 테셀레이터(tessellator; 150), 도메인 세이더(domain shader; 160), 지오메트리 세이터(geometry shader; 170), 포스트-타일러(post-tiler; 175), 래스터라이저(rasterizer; 180), 픽셀 세이더(pixel shader; 190), 및 출력 머저(output merger; 195)를 포함할 수 있다.
GPU(100B)는 캐시 메모리(115)를 더 포함할 수 있다.
GPU(100B)의 프리-타일러(130)의 구현 위치를 제외하면, GPU(100B)의 각 구성 요소(110 내지 195)의 구조와 동작은 도 3에 도시된 GPU(100A)의 각 구성 요소 (110 내지 195)의 구조와 동작과 실질적으로 동일하다.
GPU(100A)의 프리-타일러(130)는 버텍스 세이더(120)와 헐 세이더(140) 사이에 구현되나, GPU(100B)의 프리-타일러(130)는 헐 세이더(140)와 테셀레이터(150) 사이에 구현될 수 있다.
도 8은 도 7에 도시된 그래픽스 프로세싱 유닛의 동작 방법을 설명하기 위한 개념도이다.
도 7과 도 8을 참조하면, 패치(PAT)는 프리-타일러(130)를 통해 타일링될 수 있다. 이때, 패치(PAT)는 하나의 타일(TL1)에 포함되거나(CASE1), 복수의 타일(TL1 및 TL2)에 포함될 수 있다(CASE2).
도 3에 도시된 바와 같이, 버텍스 세이더(120)와 헐 세이더(140) 사이에 구현된 프리-타일러(130)를 통해 타일된 패치(PAT)가 복수의 타일(TL1과 TL2)에 포함될 때, 헐 세이더(140)는 각 타일(TL1 및 TL2)마다 패치(PAT)에 대한 테셀레이션 팩터를 결정해야 한다.
그러나, 도 8에 도시된 바와 같이, 프리-타일러(130)가 헐 세이더(140)와 테셀레이터(150) 사이에 구현될 때, 헐 세이더(140)는 패치(PAT)에 대한 테셀레이션 팩터를 한번만 결정할 수 있는 효과가 있다.
도 9는 본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛의 동작 방법을 설명하기 위한 플로우 차트이다.
도 9를 참조하면, 그래픽스 프로세싱 유닛(100A 또는 100B; 집합적으로 '100')은 입력 데이터(DATA)에 기초하여 테셀레이션 동작 전에 타일링 동작을 수행할지 또는 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정할 수 있다 (S110).
그래픽스 프로세싱 유닛(100)은 결정 결과에 따라 상기 타일링 동작을 수행할 수 있다(S130).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10: 데이터 처리 시스템
50: 데이터 처리 장치
60: CPU
70: ROM
80: RAM
90: 디스플레이 컨트롤러
95: 메모리 인터페이스
100: 그래픽스 프로세싱 유닛
200: 디스플레이
300: 메모리

Claims (10)

  1. 입력 데이터에 기초하여 테셀레이션(tessellation) 동작 전에 타일링 (tiling) 동작을 수행할지 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행할지 결정하는 단계; 및
    결정 결과에 따라 상기 타일링 동작을 수행하는 단계를 포함하며,
    상기 결정하는 단계는,
    상기 입력 데이터가 패치가 아니거나, 상기 입력 데이터가 패치이면서 상기 패치의 지오메트리(geometry)가 상기 패치의 컨트롤 포인트들에 의해 정의되는 컨벡스 헐(convex hull) 밖에 위치하거나, 쉐이딩 동작에 따라 상기 패치에 상응하는 테셀레이트된 프리미티브의 지오메트리가 변할 때, 상기 테셀레이션 동작 후에 상기 타일링 동작의 수행을 결정하는 그래픽스 프로세싱 유닛의 동작 방법.
  2. 제1항에 있어서, 상기 결정하는 단계는,
    상기 입력 데이터가 상기 패치이고 상기 패치의 상기 지오메트리가 상기 컨벡스 헐 안에 위치하고 상기 패치의 상기 지오메트리가 보존될 때, 상기 테셀레이션 동작 전에 상기 타일링 동작의 수행을 결정하는 그래픽스 프로세싱 유닛의 동작 방법.
  3. 테셀레이션 동작 전에 타일링 동작을 수행하는 프리-타일러;
    상기 테셀레이션 동작 후에 상기 타일링 동작을 수행하는 포스트-타일러; 및
    입력 데이터에 기초하여 상기 프리-타일러와 상기 포스트-타일러 각각의 상기 타일링 동작의 수행 여부를 제어하는 컨트롤 로직을 포함하며,
    상기 컨트롤 로직은,
    상기 입력 데이터가 패치가 아니거나, 상기 입력 데이터가 패치이면서 상기 패치의 지오메트리가 상기 패치의 컨트롤 포인트들에 의해 정의되는 컨벡스 헐 밖에 위치하거나, 쉐이딩 동작에 따라 상기 패치에 상응하는 테셀레이트된 프리미티브의 지오메트리가 변할 때, 상기 포스트-타일러가 상기 테셀레이션 동작 후에 상기 타일링 동작을 수행하도록 상기 포스트-타일러를 제어하는 그래픽스 프로세싱 유닛.
  4. 제3항에 있어서, 상기 컨트롤 로직은,
    상기 입력 데이터가 상기 패치이고 상기 패치의 상기 지오메트리가 상기 컨벡스 헐 안에 위치하고 상기 패치의 상기 지오메트리가 보존될 때, 상기 프리-타일러가 상기 테셀레이션 동작 전에 상기 타일링 동작을 수행하도록 상기 프리-타일러를 제어하는 그래픽스 프로세싱 유닛.
  5. 제3항에 있어서,
    상기 프리-타일러는 버텍스 세이더(vertex shader)와 헐 세이더(hull shader) 사이에 구현되는 그래픽스 프로세싱 유닛.
  6. 제3항에 있어서,
    상기 프리-타일러는 헐 세이더(hull shader)와 테셀레이터(tessellator) 사이에 구현되는 그래픽스 프로세싱 유닛.
  7. 제3항의 그래픽스 프로세싱 유닛; 및
    메모리로부터 출력된 상기 입력 데이터를 상기 그래픽스 프로세싱 유닛으로 전송하는 메모리 인터페이스를 포함하는 애플리케이션 프로세서.
  8. 제7항에 있어서, 상기 컨트롤 로직은,
    상기 입력 데이터가 상기 패치이고 상기 패치의 상기 지오메트리가 상기 컨벡스 헐 안에 위치하고 상기 패치의 상기 지오메트리가 보존될 때, 상기 프리-타일러가 상기 테셀레이션 동작 전에 상기 타일링 동작을 수행하도록 상기 프리-타일러를 제어하는 애플리케이션 프로세서.
  9. 제3항의 그래픽스 프로세싱 유닛;
    상기 입력 데이터를 저장하는 메모리; 및
    상기 메모리로부터 출력된 상기 입력 데이터를 상기 그래픽스 프로세싱 유닛으로 전송하는 메모리 인터페이스를 포함하는 데이터 처리 시스템.
  10. 제9항에 있어서, 상기 컨트롤 로직은,
    상기 입력 데이터가 상기 패치이고 상기 패치의 상기 지오메트리가 상기 컨벡스 헐 안에 위치하고 상기 패치의 상기 지오메트리가 보존될 때, 상기 프리-타일러가 상기 테셀레이션 동작 전에 상기 타일링 동작을 수행하도록 상기 프리-타일러를 제어하는 데이터 처리 시스템.
KR1020130095160A 2013-08-12 2013-08-12 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 KR102109130B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130095160A KR102109130B1 (ko) 2013-08-12 2013-08-12 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
US14/447,883 US9665980B2 (en) 2013-08-12 2014-07-31 Graphics processing unit, method of operating the same, and devices including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130095160A KR102109130B1 (ko) 2013-08-12 2013-08-12 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들

Publications (2)

Publication Number Publication Date
KR20150018953A KR20150018953A (ko) 2015-02-25
KR102109130B1 true KR102109130B1 (ko) 2020-05-08

Family

ID=52448228

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130095160A KR102109130B1 (ko) 2013-08-12 2013-08-12 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들

Country Status (2)

Country Link
US (1) US9665980B2 (ko)
KR (1) KR102109130B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524121B (en) 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
CN106326186B (zh) * 2015-06-29 2019-04-30 深圳市中兴微电子技术有限公司 一种片上系统、图形绘制方法、中间层及嵌入式设备
KR102444240B1 (ko) * 2015-07-29 2022-09-16 삼성전자주식회사 텍스쳐 처리 방법 및 장치
KR102381945B1 (ko) 2015-11-18 2022-04-01 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
KR102589298B1 (ko) 2016-05-11 2023-10-13 삼성전자주식회사 그래픽스 프로세싱 장치 및, 그래픽스 프로세싱 장치에서 캐시 바이패스를 제어하는 방법
US10032308B2 (en) * 2016-06-22 2018-07-24 Advanced Micro Devices, Inc. Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10580151B2 (en) 2017-12-05 2020-03-03 Qualcomm Incorporated Tile-based low-resolution depth storage

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6784884B1 (en) 2000-09-29 2004-08-31 Intel Corporation Efficient parametric surface binning based on control points
US7570267B2 (en) 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
JP4769984B2 (ja) 2004-05-24 2011-09-07 エスティー‐エリクソン、ソシエテ、アノニム タイルベース・グラフィック・レンダリング
US20090046098A1 (en) 2007-08-14 2009-02-19 Stmicroelectronics S.R.L. Primitive binning method for tile-based rendering
CN102016928B (zh) 2008-01-23 2014-01-08 英特尔公司 用于提高的图形性能的方法、设备
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
KR20110016938A (ko) 2008-05-29 2011-02-18 어드밴스드 마이크로 디바이시즈, 인코포레이티드 기하 셰이더를 사용하는 테셀레이션 엔진을 위한 시스템, 방법, 및 컴퓨터 프로그램 제품
KR101609266B1 (ko) 2009-10-20 2016-04-21 삼성전자주식회사 타일 기반의 랜더링 장치 및 방법
US9390539B2 (en) 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
US8144147B2 (en) * 2010-04-07 2012-03-27 Intel Corporation Hierarchical bounding of displaced parametric surfaces
GB201007348D0 (en) 2010-04-30 2010-06-16 Imagination Tech Ltd Programmable tessellation in a tile based rendering system
US20110310102A1 (en) 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
KR101681056B1 (ko) * 2010-10-01 2016-12-01 삼성전자주식회사 정점 처리 방법 및 장치
US9183651B2 (en) 2010-10-06 2015-11-10 Microsoft Technology Licensing, Llc Target independent rasterization
US10032243B2 (en) * 2012-10-26 2018-07-24 Nvidia Corporation Distributed tiled caching

Also Published As

Publication number Publication date
US20150042650A1 (en) 2015-02-12
KR20150018953A (ko) 2015-02-25
US9665980B2 (en) 2017-05-30

Similar Documents

Publication Publication Date Title
KR102109130B1 (ko) 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
KR102066659B1 (ko) 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법
US20150170406A1 (en) Graphic processing unit, system-on-chip including graphic processing unit, and graphic processing system including graphic processing unit
KR102188543B1 (ko) 그래픽 처리 장치
US10140677B2 (en) Graphics processing unit and device employing tessellation decision
US9905036B2 (en) Graphics processing unit for adjusting level-of-detail, method of operating the same, and devices including the same
KR102651126B1 (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
US20140063026A1 (en) Soc performing dynamic voltage and frequency scaling policies using 3d workload, and method using the same
KR102554419B1 (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US20160140737A1 (en) Bandwidth reduction using vertex shader
KR102474237B1 (ko) 압축된 자원에 셰이더의 기입
US9552618B2 (en) Method for domain shading, and devices operating the same
US20160071317A1 (en) Graphics processing unit (gpu) including subdivider and device including the gpu
KR102053351B1 (ko) 테셀레이션 데이터 생성 방법과 상기 방법을 수행할 수 있는 장치들
US9582935B2 (en) Tessellation device including cache, method thereof, and system including the tessellation device
US10089708B2 (en) Constant multiplication with texture unit of graphics processing unit
US10311627B2 (en) Graphics processing apparatus and method of processing graphics pipeline thereof

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