KR102313020B1 - 그래픽스 프로세싱 유닛과 이를 포함하는 장치 - Google Patents
그래픽스 프로세싱 유닛과 이를 포함하는 장치 Download PDFInfo
- Publication number
- KR102313020B1 KR102313020B1 KR1020140167153A KR20140167153A KR102313020B1 KR 102313020 B1 KR102313020 B1 KR 102313020B1 KR 1020140167153 A KR1020140167153 A KR 1020140167153A KR 20140167153 A KR20140167153 A KR 20140167153A KR 102313020 B1 KR102313020 B1 KR 102313020B1
- Authority
- KR
- South Korea
- Prior art keywords
- gpu
- model
- memory
- complexity
- cpu
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Power Sources (AREA)
Abstract
CPU의 제어에 따라 제1모델에 대한 테셀레이션 여부를 결정하는 그래픽스 프로세싱 유닛(GPU)은 각각이 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리로부터 상기 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정한다.
Description
본 발명의 개념에 따른 실시 예는 그래픽스 프로세싱에 관한 것으로, 특히 서로 다른 복잡도(complexity)을 갖고 미리 준비된 모델들 중에서 어느 하나를 리드하고, 리드된 모델의 복잡도와 기준 복잡도의 비교 결과에 따라 상기 리드된 모델에 대한 테셀레이션 여부를 결정할 수 있는 그래픽스 프로세싱 유닛과 이를 포함하는 장치들에 관한 것이다.
컴퓨터 그래픽스에서, LOD(level of detail)는 기하 정보, 예컨대 컨트롤 포인트들의 깊이 값들(depth values) 또는 상기 컨트롤 포인트들의 곡률(curvature)에 기초하여 디테일(detail)을 조절하는 것이다. 즉, LOD는 3차원 물체가 시청자 (viewer)로부터 멀어져감에 따라 3차원 물체 표현(3D object representation)의 복잡도(complexity)를 감소시키는 것이다.
LOD 기술들은 그래픽스 파이프라인 스테이지들의 워크로드(예컨대, 꼭지점 변환들(vertex transformations))를 줄여서 렌더링(rendering) 효율을 증가시킨다.
그래픽스 파이프라인에 포함된 테셀레이션 스테이지들 중에서 테셀레이터는 처리될 대상에 대한 테셀레이션을 수행해야 한다. 따라서, 상기 테셀레이터의 오버헤드는 증가한다.
본 발명이 이루고자 하는 기술적인 과제는, 그래픽스 파이프라인(예컨대, 테셀레이션)의 오버헤드(overhead)를 줄이기 위해, 렌더링 작동(rendering operation) 전에 서로 다른 복잡도를 갖는 모델들(models)을 미리 준비해 놓고, 컴퓨팅 장치의 속성(또는 특성)에 따라 상기 모델들 중에서 어느 하나를 선택하고, 선택된 모델에 대한 테셀레이션의 실행 또는 패스를 결정할 수 있는 그래픽스 프로세싱 유닛과 이를 포함하는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따라, CPU(central processing unit)의 제어에 따라, 제1모델에 대한 테셀레이션 여부를 결정하는 그래픽스 프로세싱 유닛(GPU)은 각각이 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리로부터 상기 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정하다.
상기 GPU는 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들 중에서 상기 CPU에 의해 선택된 제1어드레스를 수신하고, 상기 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드하고, 상기 제1모델의 기하 정보를 이용하여 상기 제1모델의 복잡도를 계산하고, 상기 계산된 복잡도와 상기 기준 복잡도의 비교 결과에 따라, 상기 제1모델에 대한 상기 테셀레이션 여부를 결정한다.
상기 GPU는 상기 제1모델에 포함된 오브젝트(object), 프리미티브 (primitive), 패치 (patch), 에지(edge), 버텍스(vertex) 또는 컨트롤 포인트 (control point) 단위로 상기 제1모델의 상기 복잡도를 계산한다.
상기 GPU는 상기 프리미티브에 포함된 꼭지점들의 깊이 값들 또는 상기 꼭지점들에 의해 정의된 곡률에 기초하여 상기 제1모델의 상기 복잡도를 계산한다.
상기 GPU는 상기 패치에 포함된 컨트롤 포인트들의 깊이 값들 또는 상기 꼭지점들에 의해 정의된 곡률에 기초하여 상기 제1모델의 상기 복잡도를 계산한다.
상기 GPU는 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들을 상기 CPU로부터 수신하고, 상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고, 판단 결과에 기초하여 상기 어드레스들 중에서 제1어드레스를 선택하고, 선택된 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드하고, 상기 제1모델의 기하 정보를 이용하여 상기 제1모델의 복잡도를 계산하고, 상기 계산된 복잡도와 상기 기준 복잡도의 비교 결과에 따라, 상기 제1모델에 대한 상기 테셀레이션 여부를 결정한다.
본 발명의 실시 예에 따른 시스템 온 칩(system on chip(SoC))은 테셀레이션 스테이지들을 포함하는 그래픽스 프로세싱 유닛(GPU)과, CPU(central processing unit)와, 상기 GPU에 의해 액세스될 수 있는 GPU 메모리와, 상기 CPU에 의해 제어되는 메모리 컨트롤러를 포함한다. 상기 GPU는, 상기 CPU의 제어에 따라, 상기 메모리 컨트롤러를 통해 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리로부터 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정한다.
상기 CPU는 상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고, 판단 결과에 기초하여 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들 중에서 제1어드레스를 상기 GPU로 전송하고, 상기 GPU는 상기 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드한다.
상기 GPU는 상기 제1모델에 포함된 패치들 각각의 컨트롤 포인트들의 기하 정보를 이용하여 상기 복잡도를 계산한다. 상기 기하 정보는 상기 컨트롤 포인트들의 깊이 값들 또는 상기 컨트롤 포인트들에 의해 정의된 곡률일 수 있다.
렌더링 작동(rendering operation) 전에 상기 모델들을 저장하는 상기 메모리는 상기 SoC의 내부 또는 상기 SoC의 외부에 구현된다.
상기 CPU는 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들을 상기 GPU로 전송하고, 상기 GPU는 상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고, 판단 결과에 기초하여 상기 어드레스들 중에서 제1어드레스를 선택하고, 선택된 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드한다.
상기 GPU는 상기 제1모델에 포함된 패치들 각각의 컨트롤 포인트들 각각의 깊이 값 또는 상기 컨트롤 포인트들에 의해 정의된 곡률을 이용하여 상기 제1모델의 복잡도를 계산한다.
상기 CPU는 상기 제1모델의 계산된 복잡도이 상기 기준 복잡도보다 작을 때 상기 제1모델을 테셀레이션하고, 상기 제1모델의 계산된 복잡도이 상기 기준 복잡도보다 같거나 클 때 상기 제1모델을 테셀레이션하지 않는다.
상기 테셀레이션 스테이지들은 헐 쉐이더, 테셀레이터, 및 도메인 쉐이더를 포함하고, 상기 계산과 상기 비교는 상기 헐 쉐이더에 의해 수행되고, 상기 결정은 상기 테셀레이터에서 수행되고, 상기 테셀레이터는 상기 결정의 결과에 기초하여 상기 제1모델을 상기 도메인 쉐이더로 패스하거나 상기 테셀레이터로부터 전송된 테셀레이션 팩터들을 이용하여 상기 제1모델을 테셀레이션한다.
본 발명의 실시 예에 따른 컴퓨팅 장치는 각각이 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리와, 디스플레이와, 상기 메모리와 상기 디스플레이를 제어하는 시스템 온 칩을 포함한다. 상기 시스템 온 칩은 테셀레이션 스테이지들을 포함하는 그래픽스 프로세싱 유닛(GPU)과, CPU(central processing unit)와, 상기 CPU의 제어에 따라 상기 디스플레이를 제어하는 디스플레이 컨트롤러와, 상기 CPU의 제어에 따라 상기 메모리를 제어하는 메모리 컨트롤러를 포함하고, 상기 GPU는, 상기 CPU의 제어에 따라, 상기 메모리 컨트롤러를 통해 상기 모델들을 저장하는 상기 메모리로부터 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정한다.
상기 CPU는 상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고, 판단 결과에 기초하여 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들 중에서 제1어드레스를 상기 GPU로 전송하고, 상기 GPU는 상기 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드한다.
상기 GPU는 상기 제1모델에 포함된 오브젝트(object), 프리미티브 (primitive), 패치 (patch), 에지(edge), 버텍스(vertex) 또는 컨트롤 포인트 (control point) 단위로 상기 제1모델의 상기 제1모델의 상기 복잡도를 계산한다.
상기 GPU는 상기 제1모델의 상기 계산된 복잡도이 상기 기준 복잡도보다 작을 때 상기 제1모델을 테셀레이션하고, 상기 제1모델의 상기 계산된 복잡도이 상기 기준 복잡도보다 같거나 클 때 상기 제1모델을 테셀레이션하지 않는다.
상기 CPU는 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들을 상기 GPU로 전송하고, 상기 GPU는 상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고, 판단 결과에 기초하여 상기 어드레스들 중에서 제1어드레스를 선택하고, 선택된 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드한다.
본 발명의 실시 예에 따른 애플리케이션 프로세서는 테셀레이션 스테이지들을 포함하는 그래픽스 프로세싱 유닛(GPU)과, CPU(central processing unit)와, 상기 CPU에 의해 제어되는 메모리 컨트롤러를 포함하고, 상기 GPU는, 상기 CPU의 제어에 따라, 상기 메모리 컨트롤러를 통해 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리로부터 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정한다.
실시 예들에 따라 상기 CPU는 상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고, 판단 결과에 기초하여 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들 중에서 제1어드레스를 상기 GPU로 전송하고, 상기 GPU는 상기 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드한다.
실시 예들에 따라 상기 CPU는 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들을 상기 GPU로 전송하고, 상기 GPU는 상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고, 판단 결과에 기초하여 상기 어드레스들 중에서 제1어드레스를 선택하고, 선택된 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드한다.
본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛은, 이미 준비된 모델들 중에서 선택된 모델에 대한 테셀레이션의 실행 또는 패스를 결정할 수 있으므로, 그래픽스 파이프라인(예컨대, 테셀레이션)의 오버헤드(overhead)를 줄일 수 있는 효과가 있다.
본 발명의 실시 예에 따른 그래픽스 프로세싱 유닛은, 그래픽스 파이프라인(예컨대, 테셀레이션)의 오버헤드를 줄이기 위해, 렌더링 작동 전에 서로 다른 복잡도를 갖는 모델들을 메모리에 미리 저장하고, 컴퓨팅 장치의 특성에 따라 상기 모델들 중에서 하나를 선택하고, 선택된 모델에 대한 테셀레이션의 실행 또는 패스를 결정할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치의 블록도이다.
도 2는 도 1에 도시된 CPU(central processing unit)와 GPU(pgaphics processing unit)의 블록도이다.
도 3은 도 1에 도시된 GPU의 그래픽스 파이프라인의 실시 예를 설명하기 위한 개념도이다.
도 4는 도 1에 도시된 제1메모리의 구조를 나타낸다.
도 5는 서로 다른 복잡도를 갖는 모델들을 개념적으로 나타낸다.
도 6은 선택된 모델의 복잡도를 계산하는 방법의 일 실시 예를 나타낸다.
도 7은 선택된 모델의 복잡도를 계산하는 방법의 다른 실시 예를 나타낸다.
도 8은 서로 다른 복잡도를 갖는 모델들을 개념적으로 나타낸다.
도 9는 서로 다른 복잡도를 갖는 모델들 각각에 대해 테셀레이션을 수행한 결과들을 나타낸다.
도 10은 도 1에 도시된 컴퓨팅 장치의 작동을 설명하기 위한 플로우차트이다.
도 11은 본 발명의 일 실시 예에 따라, 서로 다른 복잡도를 갖는 모델들 중에서 어느 하나를 선택하는 방법을 나타낸다.
도 12는 본 발명의 다른 실시 예에 따라, 서로 다른 복잡도를 갖는 모델들 중에서 어느 하나를 선택하는 방법을 나타낸다.
도 13은 본 발명의 실시 예에 따른 그래픽 카드를 포함하는 컴퓨팅 장치의 블록도를 나타낸다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치의 블록도이다.
도 2는 도 1에 도시된 CPU(central processing unit)와 GPU(pgaphics processing unit)의 블록도이다.
도 3은 도 1에 도시된 GPU의 그래픽스 파이프라인의 실시 예를 설명하기 위한 개념도이다.
도 4는 도 1에 도시된 제1메모리의 구조를 나타낸다.
도 5는 서로 다른 복잡도를 갖는 모델들을 개념적으로 나타낸다.
도 6은 선택된 모델의 복잡도를 계산하는 방법의 일 실시 예를 나타낸다.
도 7은 선택된 모델의 복잡도를 계산하는 방법의 다른 실시 예를 나타낸다.
도 8은 서로 다른 복잡도를 갖는 모델들을 개념적으로 나타낸다.
도 9는 서로 다른 복잡도를 갖는 모델들 각각에 대해 테셀레이션을 수행한 결과들을 나타낸다.
도 10은 도 1에 도시된 컴퓨팅 장치의 작동을 설명하기 위한 플로우차트이다.
도 11은 본 발명의 일 실시 예에 따라, 서로 다른 복잡도를 갖는 모델들 중에서 어느 하나를 선택하는 방법을 나타낸다.
도 12는 본 발명의 다른 실시 예에 따라, 서로 다른 복잡도를 갖는 모델들 중에서 어느 하나를 선택하는 방법을 나타낸다.
도 13은 본 발명의 실시 예에 따른 그래픽 카드를 포함하는 컴퓨팅 장치의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치의 블록도이다.
컴퓨팅 장치(100)는 TV(예컨대, 디지털 TV 또는 스마트 TV를 포함한다.), PC (personal computer), 데스크 탑 컴퓨터, 랩탑 컴퓨터, 컴퓨터 워크 스테이션 (computer workstation), 태블릿(tablet) PC, 비디오 게임 플랫폼(또는 비디오 게임 콘솔), 서버, 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 이동 전화기, 스마트 폰(smart phone), 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), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
컴퓨팅 장치(100)는 2D 또는 3D 그래픽스 데이터를 처리하고, 디스플레이할 수 있는 다양한 장치를 포함할 수 있다.
컴퓨팅 장치(100)는 시스템 온 칩(system on chip(SoC); 200), 적어도 하나의 메모리(310-1과 310-2), 및 디스플레이(400)를 포함할 수 있다.
SoC(200)는 컴퓨팅 장치(100)의 호스트(host)의 기능을 수행할 수 있다.
SoC(200)는 컴퓨팅 장치(100)의 작동을 전반적으로 제어할 수 있다. 예컨대, SoC(200)는 본 명세서에서 설명된 작동, 즉 해당 모델에 대한 테셀레이션의 수행 또는 패스(pass)를 결정할 수 있는 집적 회로(integrated circuit(IC)), 애플리케이션 프로세서(application processor), 또는 모바일(mobile) AP로 대체될 수 있다.
CPU(210), 적어도 하나의 메모리 컨트롤러(220-1과 220-2), 사용자 인터페이스(230), 디스플레이 컨트롤러(240), 및 그래픽스 프로세싱 유닛(graphics processing unit(GPU); 260)는 버스(201)를 통해 서로 통신할 수 있다.
예컨대, 버스(201)는 PCI 버스(Peripheral Component Interconnect Bus), PCI 익스프레스(PCI Express) 버스, AMBA(Advanced High Performance Bus), AHB (Advanced High Performance Bus), APB(Advanced Peripheral Bus), 또는 AXI 버스, 또는 이들의 결합으로 구현될 수 있다.
CPU(210)는 SoC(200)의 작동을 제어할 수 있다.
실시 예들에 따라, CPU(210)는 컴퓨팅 장치(100)의 하나 또는 그 이상의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)하고, 판단(계산 또는 측정)의 결과에 기초하여 이미 준비된 복수의 모델들이 저장된 제1메모리 (310-1)에 포함된 복수의 메모리 영역들에 대한 복수의 어드레스들 중에서 하나를 선택하고, 선택된 어드레스를 GPU(260)로 전송할 수 있다.
하나 또는 그 이상의 속성들(또는 특성들)은 GPU(260)와 메모리(310-1 또는 310-2) 사이의 대역폭(bandwidth), GPU(260)의 계산 전력(computing power), GPU (260)의 최대 전력 소모(maximum power consumption), GPU(260)의 DVFS(dynamic voltage frequency scaling)에 따라 결정된 전압(voltage)과 주파수(frequency), 및 GPU(260)의 온도 중에서 적어도 하나를 포함한다.
따라서, SoC(200)는 GPU(260)와 메모리(310-1 또는 310-2) 사이의 대역폭, GPU(260)의 계산 전력, GPU(260)의 최대 전력 소모, GPU(260)의 DVFS에 따라 결정된 전압과 주파수, 및 GPU(260)의 온도 중에서 적어도 하나를 판단(계산 또는 측정)할 수 있는 소프트웨어 및/또는 하드웨어(205)를 포함할 수 있다. 상기 소프트웨어는 CPU(210)에 의해 실행될 수 있다.
하나 또는 그 이상의 하드웨어들(205)은 하나 또는 그 이상의 계산기들, 검출기들, 및/또는 감지기들을 포함할 수 있다.
실시 예들에 따라, CPU(210)에서 실행되는 소프트웨어(예컨대, 도 2의 애플리케이션(211))는, 하나 또는 그 이상의 하드웨어들(205)의 출력 신호(들)를 이용하여, 컴퓨팅 장치(100)의 하나 또는 그 이상의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)할 수 있다.
GPU(260)는 CPU(210)로부터 수신된 어드레스를 수신하고, 수신된 어드레스를 이용하여 상기 복수의 메모리 영역들 중에서 어느 하나의 메모리 영역에 저장된 모델을 리드하고, 리드된 모델의 기하 정보를 이용하여 상기 리드된 모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교의 결과에 따라 상기 모델에 대한 테셀레이션의 실행 또는 실행하지 않음을 결정할 수 있다.
다른 실시 예들에 따라, CPU(210)는 복수의 모델들이 저장된 메모리(310-1 또는 310-2)의 복수의 메모리 영역들에 대한 복수의 어드레스들을 GPU(260)로 전송할 수 있다.
GPU(260)는 CPU(210)로부터 전송된 복수의 어드레스들을 수신하고, 컴퓨팅 장치(100)의 하나 또는 그 이상의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)하고, 판단(계산 또는 측정)의 결과에 기초하여 상기 복수의 어드레스들 중에서 어느 하나의 어드레스를 선택할 수 있다.
GPU(260)는 선택된 어드레스를 이용하여 상기 복수의 메모리 영역들 중에서 어느 하나의 메모리 영역에 저장된 모델을 리드하고, 리드된 모델의 기하 정보를 이용하여 상기 리드된 모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교의 결과에 따라, 상기 모델에 대한 테셀레이션의 실행 여부를 결정할 수 있다.
컴퓨팅 장치(100)가 휴대용 전자 장치일 때, 컴퓨팅 장치(100)는 배터리 (203)를 더 포함할 수 있다. 하나 또는 그 이상의 하드웨어들(205) 및/또는 CPU(210)에서 실행되는 소프트웨어(예컨대, 도 2의 애플리케이션(211))는 배터리 (203)의 잔량을 판단(계산 또는 측정)할 수 있다. 이 경우, 하나 또는 그 이상의 속성들(또는 특성들)은 배터리(203)의 잔량 또는 상기 잔량에 대한 정보를 포함할 수 있다.
사용자는, CPU(210)가 하나 또는 그 이상의 애플리케이션들(예컨대, 소프트웨어 애플리케이션들(도 2의 211))을 실행할 수 있도록, 입력을 SoC(200)로 제공할 수 있다.
CPU(210)에 의해 실행되는 애플리케이션들은 운영 체계(operating system(OS)), 워드프로세서 애플리케이션, 미디어 플레이어 애플리케이션, 비디오 게임 애플리케이션, 및/또는 그래픽 사용자 인터페이스(graphical user intergace(GUI)) 애플리케이션을 포함할 수 있다.
사용자는 사용자 인터페이스(230)에 접속된 입력 장치(미 도시)를 통해 입력을 SoC(200)로 입력할 수 있다. 예컨대, 상기 입력 장치는 키보드, 마우스, 마이크로폰, 또는 터치 패드로 구현될 수 있다.
또한, CPU(210)에 의해 실행되는 애플리케이션들(예컨대, 도 2의 211)은 그래픽스 렌더링 지시들(graphics rendering instructions)을 포함할 수 있다. 상기 그래픽스 렌더링 지시들은 그래픽스 API(application programming interface)에 관련될 수 있다.
그래픽스 API는 Open Graphics Library (OpenGL(R)) API, Open Graphics Library for Embedded Systems (Open GL ES) API, DirectX API, Renderscript API, WebGL API, 또는 Open VG(R) API를 의미할 수 있다.
그래픽스 렌더링 지시들을 처리하기 위해, CPU(210)는 그래픽스 렌더링 명령을 버스(201)를 통해 GPU(260)를 전송할 수 있다. 따라서, CPU(260)는, 상기 그래픽스 렌더링 명령에 응답하여, 그래픽스 데이터를 처리(또는 렌더링)할 수 있다.
상기 그래픽스 데이터는 포인트들(points), 라인들(lines), 삼각형들 (triangles), 사변형들(quadrilateral), 패치들(patches), 및/또는 프리미티브들 (primitives)을 포함할 수 있다. 또한, 상기 그래픽스 데이터는 선분들(line segments), 타원 호들(elliptical arcs), 이차 베지어 곡선들(quadratic Bezier curves), 및/또는 입방 베지어 곡선들(cubic Bezier curves)을 포함할 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는, CPU(210) 또는 GPU(260)로부터 출력된 리드 요청(read request)에 응답하여, 적어도 하나의 메모리(310-1과 310-2)에 저장된 데이터(예컨대, 그래픽스 데이터)를 리드하고, 리드된 데이터예컨대, 그래픽스 데이터)를 대응되는 구성(예컨대, 210, 240, 또는 260)으로 전송할 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는, CPU(210) 또는 GPU(260)로부터 출력된 라이트 요청(write request)에 응답하여, 대응되는 구성(예컨대, 210, 230, 또는 240)로부터 출력된 데이터(예컨대, 그래픽스 데이터)를 적어도 하나의 메모리(310-1과 310-2)에 라이트할 수 있다.
도 1에서는 설명의 편의를 위해, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)가 CPU(210) 또는 GPU(260)와 분리된 것으로 도시되어 있으나, 실시 예들에 따라 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 CPU(210), GPU(260) 또는 적어도 하나의 메모리(310-1과 310-2) 내부에 구현될 수도 있다.
실시 예들에 따라, 제1메모리(310-1)가 휘발성 메모리로 구현되고, 제2메모리(310-2)가 불휘발성 메모리로 구현될 때, 제1메모리 컨트롤러(220-1)는 제1메모리(310-1)와 통신할 수 있는 메모리 컨트롤러로 구현될 수 있고, 제2메모리 컨트롤러(220-2)는 제2메모리(310-2)와 통신할 수 있는 메모리 컨트롤러로 구현될 수 있다.
예컨대, 상기 휘발성 메모리는 RAM(random access memory), SRAM(static RAM), DRAM(dynamic RAM), SDRAM(synchronous DRAM), 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 MRAM), FeRAM(ferroelectric RAM), PRAM(phase change RAM), 또는 RRAM(resistive RAM)으로 구현될 수 있다.
또한, 상기 불휘발성 메모리는 MMC(multimedia card), eMMC(embedded MMC), UFS(universal flash storage), SSD(solid state drive), 또는 USB 플래시 드라이브로 구현될 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 CPU(210)에 의해 실행가능한 프로그램(또는 애플리케이션) 또는 지시들(instructions)을 저장할 수 있다. 또한, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 CPU(210)에 의해 실행되는 프로그램에 의해 사용될 데이터를 저장할 수 있다.
또한, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 사용자 애플리케이션과 상기 사용자 애플리케이션에 관련된 그래픽스 데이터를 저장할 수 있다. 또한, 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 SoC(200)에 포함된 요소들에 의해 사용될 또는 상기 요소들에 의해 생성된 데이터(또는 정보)를 저장할 수 있다.
적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 GPU(260)의 작동에 사용될 데이터 및/또는 GPU(260)의 작동에 의해 생성된 데이터를 저장할 수 있다. 적어도 하나의 메모리 컨트롤러(220-1과 220-2)는 GPU(260)의 프로세싱을 위한 명령 스트림들(command streams)을 저장할 수 있다.
디스플레이 컨트롤러(240)는 CPU(210)에 의해 처리된 데이터 또는 GPU(260)에 의해 처리된 데이터(예컨대, 그래픽스 데이터)를 디스플레이(400)로 전송할 수 있다.
디스플레이(400)는 모니터, TV 모니터, 프로젝션 장치(projection device), TFT-LCD(thin film transistor-liquid crystal display), LED(light emitting diode) 디스플레이, OLED(organic LED) 디스플레이, AMOLED(active-matrix OLED) 디스플레이, 또는 플렉시블(flexible) 디스플레이로 구현될 수 있다.
실시 예에 따라, 디스플레이(400)는 컴퓨팅 장치(100)에 집적(또는 내장)될 수 있다. 예컨대, 디스플레이(400)는 휴대용 전자 장치의 스크린일 수 있고, 무선 통신 링크 또는 유선 통신 링크를 통해 컴퓨팅 장치(100)에 접속되는 독립형 장치 (stand-alone) 장치일 수 있다.
다른 실시 예에 따라, 디스플레이(400)는 케이블 또는 유선 링크를 통해 PC에 접속된 컴퓨터 모니터일 수 있다.
GPU(260)는 CPU(210)로부터 출력된 명령들(commands)을 수신하고, 수신된 명령들을 실행할 수 있다. GPU(260)에 의해 실행되는 명령은 그래픽스 명령, 메모리 전송 명령, 커널 실행 명령, 테셀레이션 명령, 및/또는 텍스처링 명령을 포함할 수 있다.
GPU(260)는 그래픽스 데이터를 레더(render)하기 위한 그래픽스 작동들을 수행할 수 있다.
CPU(210)에서 실행 중인 애플리케이션이 그래픽스 프로세싱을 요구할 때, CPU(210)는 그래픽스 데이터를 디스플레이(400)에서 랜더링하기 위해 상기 그래픽스 데이터를 GPU(260)로 전송하고, 그래픽스 명령을 GPU(260)로 전송할 수 있다.
상기 그래픽스 명령은 테셀레이션 명령, 및/또는 테스처링 명령을 포함할 수 있다. 상기 그래픽스 데이터는 버텍스(vertex) 데이터, 텍스처(texture) 데이터, 또는 표면(surface) 데이터를 포함할 수 있다.
표면은 파라메트릭(parametric) 표면, 서브디비젼(subdivision) 표면, 트라이앵글 메시(triangle mesh) 또는 곡선(curve)을 포함할 수 있다.
실시 예들에 따라, CPU(210)는 그래픽스 명령과 그래픽스 데이터를 GPU(260)로 전송할 수 있다. 다른 실시 예에 따라, CPU(210)가 그래픽스 명령과 그래픽스 데이터를 적어도 하나의 메모리(300-1과 300-2)에 라이트하면, GPU(260)는 적어도 하나의 메모리(300-1과 300-2)에 라이트된 상기 그래픽스 명령과 상기 그래픽스 데이터를 리드할 수 있다.
GPU(260)는 GPU 캐시(290)를 직접 액세스할 수 있다. 따라서, GPU(260)는 버스(201)를 통하지 않고 GPU 캐시(290)로 그래픽스 데이터를 라이트하거나 GPU 캐시(290)로부터 그래픽스 데이터를 리드할 수 있다. GPU 캐시(290)는 GPU(260)에 의해 액세스될 수 있는 GPU 메모리의 일 예이다.
도 1에서는 GPU(260)와 GPU 캐시(290)가 서로 분리되어 있으나, 실시 예들에 따라, GPU(260)는 GPU 캐시(290)를 포함할 수 있다. 예컨대, GPU 캐시(290)는 DRAM 또는 SRAM으로 구현될 수 있다.
CPU(210) 또는 GPU(260)는 적어도 하나의 메모리(310-1과 310-2)에 포함된 프레임 버퍼에 처리된(또는 레더링된) 그래픽스 데이터를 저장할 수 있다.
도 2는 도 1에 도시된 CPU(central processing unit)와 GPU(pgaphics processing unit)의 블록도이다.
도 2를 참조하면, 하드웨어(205), CPU(210), 및 GPU(260)는 버스(201)를 통해 통신할 수 있다.
실시 예들에 따라, 하드웨어(205), CPU(210), 및 GPU(260)는 마더보드 (motherboard) 또는 SoC에 집적될 수 있다. 다른 실시 예들에 따라, 하드웨어 (205), CPU(210), 및 GPU(260)는 마더보드에 설치된 그래픽스 카드에 구현될 수 있다. 도 13에 도시된 컴퓨팅 장치(100A)에서 하드웨어(205)는 마더보드 또는 그래픽스 카드에 구현될 수 있다.
CPU(210)는 애플리케이션(예컨대, 소프트웨어 애플리케이션; 211), 그래픽스 API(213), GPU 드라이버(215), 및 운영 체계(217)를 포함할 수 있다. 즉, CPU(210)는 각 구성(211, 213, 215, 및 217)을 실행할 수 있다.
애플리케이션(211)은 그래픽스 데이터를 디스플레이하기 위한 지시들 및/또는 GPU(260)에 수행될 지시들을 포함할 수 있다.
실시 예들에 따라, 애플리케이션(211)은, 컴퓨팅 장치(100)의 하나 또는 그 이상의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)하고, 판단(계산 또는 측정)의 결과에 기초하여 복수의 모델들 중에서 어느 하나의 모델에 관련된 어드레스 또는 상기 복수의 모델들에 관련된 복수의 어드레스들을 GPU(260)로 전송할 수 있다. 이때, 애플리케이션(211)은 하나 또는 그 이상의 하드웨어(205)의 출력 신호(들)를 이용(또는 참조)할 수 있다.
애플리케이션(211)은 지시들을 그래픽스 API(213)로 출력할 수 있다. 그래픽스 API(213)는 애플리케이션(211)으로부터 수신된 상기 지시들을 GPU 드라이버 (215)에 의해 사용될 포맷(format)으로 바꿀 수 있다.
GPU 드라이버(215)는, 그래픽스 API(213)를 통해, 상기 지시들을 수신하고, GPU(260)에 의해 상기 지시들이 수행될 수 있도록 GPU(260)의 작동을 제어할 수 있다.
실시 예들에 따라, GPU 드라이버(215)는 운영 체계(217)를 통해 명령들 (commands)을 GPU(260)로 전송하거나, 상기 명령들을 GPU(260)에 의해 액세스될 수 있는 적어도 하나의 메모리(310-1과 310-2)로 전송할 수 있다.
GPU(260)는 명령 디코더(또는 명령 엔진; 251), 액세스 회로(252), 및 하나 또는 그 이상의 프로세싱 유닛들(253)을 포함할 수 있다.
명령 디코더(251)는 CPU(210)로부터 전송된 명령 또는 적어도 하나의 메모리 (310-1과 310-2)를 통해 수신된 명령을 수신하고, GPU(260)가 상기 명령을 실행하도록 GPU(260)를 제어할 수 있다.
실시 예들에 따라, 명령 디코더(251)는 복수의 모델들 중에서 어느 하나의 모델에 관련된 어드레스 또는 상기 복수의 모델들에 관련된 복수의 어드레스들을 CPU(210)로부터 수신하고, 상기 어드레스 또는 상기 복수의 어드레스들을 액세스 회로(252)로 전송할 수 있다.
액세스 회로(252)는, CPU(210)로부터 전송된 어드레스 또는 프로세싱 유닛들 (253) 중에서 어느 하나로부터 전송된 어드레스를 이용하여, 제1메모리(310-1)로부터 모델을 리드히고, 리드된 모델을 그래픽스 파이프라인(예컨대, 도 3의 260A)으로 전송할 수 있다.
프로세싱 유닛들(253)은 프로그램가능한 프로세싱 유닛, 고정-기능(fixed-function) 프로세싱 유닛, 및 컴퓨팅 장치(100)의 하나 또는 그 이상의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)하고, 판단의 결과를 액세스 회로(252)로 전송할 수 있는 판단 유닛을 포함할 수 있다.
예컨대, 프로그램가능한 프로세싱 유닛은 하나 또는 그 이상의 쉐이더 프로그램들을 실행할 수 있는 프로그램가능한 쉐이더 유닛(shader unit)일 수 있다. 상기 프로그램가능한 쉐이더 유닛은 CPU(210)로부터 GPU(260)로 다운로드될 수 있다.
프로세싱 유닛들(253)에서 실행되는 프로그램가능한 쉐이더 유닛들은 버텍스 쉐이더 유닛, 헐 쉐이더 유닛, 도메인 쉐이더 유닛, 지오메트리 쉐이더 유닛, 픽셀 쉐이더 유닛(또는 프래그먼트 쉐이더 유닛), 및/또는 통합된 쉐이더 유닛(unified shader 유닛)을 포함할 수 있다.
고정-기능 프로세싱 유닛은 하드웨어를 포함할 수 있다. 상기 하드웨어는 특정 기능들을 수행하기 위해 하드-와이어드(hard-wired)되어 있다. 예컨대, 프로세싱 유닛들(253)에서 고정-기능 프로세싱 유닛은 래스터 작동들을 수행하는 프로세싱 유닛들을 포함할 수 있다.
실시 예들에 따라, 프로세싱 유닛들(253)은 3D 그래픽스 파이프라인을 형성할 수 있다. 예컨대, 상기 3D 그래픽스 파이프라인은 OpenGL(R) API, OpenGL ES API, DirectX API, Renderscript API, WebGL API, 또는 Open VG(R) API에 부응하는 3D 그래픽스 파이프라인일 수 있다.
도 3은 도 1에 도시된 GPU의 그래픽스 파이프라인의 실시 예를 설명하기 위한 개념도이다.
도 3을 참조하면, GPU(260)에서 실행될 수 있는 그래픽스 파이프라인(260A)은 Microsoft(R) DirectX 11 그래픽스 파이프라인에 해당할 수 있다.
그래픽스 파이프라인(260A)은 도 2의 프로세싱 유닛들(253)을 포함할 수 있는 복수의 프로세싱 스테이지들과, 리소스 블록(263)을 포함할 수 있다.
상기 복수의 프로세싱 스테이지들(또는 프로세싱 유닛들(253))은 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3), 테셀레이터(261-4), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 래스터라이저(261-7), 픽셀 쉐이더 (261-8), 및 출력 머저(261-9)를 포함할 수 있다.
헐 쉐이더(261-3), 테셀레이터(261-4), 및 도메인 쉐이더(261-5)는 그래픽스 파이프라인(260A)의 테셀레이션 스테이지들을 형성한다. 따라서, 상기 테셀레이션 스테이지들은 테셀레이션(또는 테셀레이션 작동)을 수행할 수 있다. 픽셀 쉐이더 (261-8)는 프래그먼트 쉐이더(fragment shader)로 불릴 수 있다.
예컨대, 입력 어셈블러(261-1), 테셀레이터(261-4), 래스터라이저(261-7), 및 출력 머저(261-9)는 고정-기능 스테이지들이고, 버텍스 쉐이더(261-2), 헐 쉐이더(261-3), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 및 픽셀 쉐이더 (261-8)는 프로그램가능한 스테이지들이다.
상기 프로그램가능한 스테이지들 각각은 특별한 종류의 쉐이더 프로그램을 실행할수 있는 구조는 갖는다. 예컨대, 버텍스 쉐이더(261-2)는 버텍스 쉐이더 프로그램을 실행할 수 있고, 헐 쉐이더(261-3)는 헐 쉐이더 프로그램을 실행할 수 있고, 도메인 쉐이더(261-5)는 도메인 쉐이더 프로그램을 실행할 수 있고, 지오메트리 쉐이더(261-6)는 지오메트리 쉐이더 프로그램을 실행할 수 있고, 픽셀 쉐이더(261-8)는 픽셀 쉐이더 프로그램을 실행할 수 있다. 예컨대, 각 쉐이더 프로그램은 적절한 타이밍에서 GPU(260)의 쉐이더 유닛에서 실행될 수 있다.
실시 예들에 따라, 서로 다른 종류의 쉐이더 프로그램들 각각은 GPU(260)의 공동 쉐이더(또는 공통 쉐이더 유닛)에서 실행될 수 있다. 예컨대, 공동 쉐이더는 통합된 쉐이더(unified shader)를 의미할 수 있다.
다른 실시 예들에 따라, 하나 또는 그 이상의 전용(dedicated) 쉐이더들은 하나 또는 그 이상의 특별한 종류들의 쉐이더 프로그램들을 전용으로 실행할 수 있다.
입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 픽셀 쉐이더(261-8), 및 출력 머저 (261-9)는 리소스 블록(263)과 통신할 수 있다.
따라서, 입력 어셈블러(261-1), 버텍스 쉐이더(261-2), 헐 쉐이더(261-3), 도메인 쉐이더(261-5), 지오메트리 쉐이더(261-6), 픽셀 쉐이더(261-8), 및 출력 머저(261-9)는 리소스 블록(263)으로부터 입력 데이터를 검색(retrieve)하거나 수신할 수 있다.
지오메트리 쉐이더(261-6)와 출력 머저(261-9)는 출력 데이터를 리소스 블록 (263)에 라이트할 수 있다.
도 3에 도시된 각 구성(261-1~261-9)과 리소스 블록(263) 사이의 통신은 설명을 위한 실시 예에 불과하므로 다양한 변경들이 가능하다.
따라서, 본 발명의 실시 예들을 설명하기 위한 구성들(예컨대, 261-1과 261-4)의 작동을 제외하고, 각 구성(261-1~261-9)의 작동은 Microsoft(R) DirectX 11 그래픽스 파이프라인의 작동과 실질적으로 동일 또는 유사하므로 이들에 대한 상세한 설명은 생략한다.
실시 예들에 따라, 입력 어셈블러(261-1)는 그래픽스 파이프라인(260A)에 데이터(예컨대, 삼각형들, 라인들, 및/또는 점들)을 제공한다.
실시 예들에 따라, 액세스 회로(252)로 의해 리드된 모델은 입력 어셈블러 (261-1)로 제공될 수 있다.
입력 어셈블러(261-1)는 리소스 블록(263)으로부터 데이터(예컨대, 삼각형들, 라인들, 및/또는 점들)를 리드하고, 리드된 데이터를 다른 프로세싱 스테이지들에서 사용될 수 있는 프리미티브들로 집합시킨다(assemble).
입력 어셈블러(261-1)는 꼭지점들을 다른 종류의 프리미티브들(예컨대, 라인 리스트들(line lists), 삼각형 스트립들(triangle strips) 또는 인접을 갖는 프리미티브들)로 집합시킨다.
버텍스 쉐이더(261-2)는 입력 어셈블러(261-1)로부터 출력된 꼭지점들을 처리(예컨대, 변형들(transformations), 스키닝(skinning), 모핑(morphing), 및 퍼-버텍스 라이트닝(per-vertex lighting)과 같은 퍼-버텍스 작동들을 수행))한다.
버텍스 쉐이더(261-2)는 하나의 입력 버텍스를 조작(take or operate)하고 하나의 출력 버텍스를 생성한다.
헐 쉐이더(261-3)는 버텍스 쉐이더(261-2)로부터 출력되고 하위(low-order) 표면을 정의하는 입력 컨트롤 포인트들을 패치(patch)를 형성(make up)하는 출력 컨트롤 포인트들로 변환한다. 헐 쉐이더(261-3)는 테셀레이터(261-4)와 도메인 쉐이더(261-5)로 데이터를 제공하기 위해 퍼-패치 계산들(per patch calculations)을 수행할 수 있다.
예컨대, 헐 쉐이더(261-3)는 버텍스 쉐이더(261-2)로부터 출력된 입력 컨트롤 포인트들을 수신하고, 테셀레이션 팩터들의 개수에 무관하게 출력 컨트롤 포인트들(예컨대, 상기 입력 컨트롤 포인트들과 동일), 패치 상수 데이터, 및 테셀레이션 팩터들을 생성하고, 상기 출력 컨트롤 포인트들과 상기 테셀레이션 팩터들을 테셀레이터(261-4)로 출력하고, 상기 패치 상수 데이터와 상기 테셀레이션 팩터들을 도메인 쉐이더(261-5)로 출력할 수 있다.
테셀레이터(261-4)는, 상기 출력 컨트롤 포인트들과 상기 테셀레이션 팩터들을 이용하여, 도메인(예컨대, 사각형(quadrangle), 삼각형, 또는 라인)을 많은 작은 오브젝트들(예컨대, 삼각형들, 점들 또는 라인들)로 세분화(subdivide)할 수 있다.
도메인 쉐이더(261-5)는 헐 쉐이더(261-3)로부터 출력된 출력 컨트롤 포인트들과 테셀레이터(261-4)로부터 출력된 출력 패치의 세분화된 포인트(subdivided point)의 버텍스 위치(vertex position)를 계산한다.
도 4는 도 1에 도시된 제1메모리의 구조를 나타낸다.
도 1과 도 4를 참조하면, GPU(260)에 의해 액세스 가능한 제1메모리(310-1)는 복수의 메모리 영역들(MEM1~MEM5)을 포함한다. 복수의 메모리 영역들 (MEM1~MEM5) 각각에는 서로 다른 복잡도를 갖는 모델들(MOD1~MOD5)이 렌더딩 작동 (rendering operation) 전에 미리 저장된다. 복수의 메모리 영역들(MEM1~MEM5) 각각은 복수의 어드레스들(ADD1~ADD5) 각각에 의해 선택(또는 정의)될 수 있다. 여기서, 모델(model)은 오프젝트(object)보다 상위 개념을 의미할 수 있다.
도 5는 서로 다른 복잡도를 갖는 복수의 모델들을 개념적으로 나타낸다.
도 4와 도 5를 참조하면, 제1모델(MOD1)의 복잡도가 가장 낮고, 제5모델 (MOD5)의 복잡도가 가장 높다고 가정한다. 즉, 제2모델(MOD2)의 복잡도는 제1모델 (MOD1)의 복잡도보다 높고, 제3모델(MOD3)의 복잡도는 제2모델(MOD2)의 복잡도보다 높고, 제4모델(MOD4)의 복잡도는 제3모델(MOD3)의 복잡도보다 높고, 제5모델(MOD4)의 복잡도는 제4모델(MOD1)의 복잡도보다 높다.
도 4와 도 5에서는 설명의 편의를 위해 서로 다른 복잡도를 갖는 5개의 모델들(MOD1~MOD5)이 도시되어 있으나 이는 예시적인 것에 불과하다. 실시 예들에 따라, 하나 또는 그 이상의 모델들은 대응되는 두 개의 모델들(MOD1과 MOD2, MOD2와 MOD3, MOD3과 MOD4, 및 MOD4와 MOD5) 사이에 존재할 수 있다.
도 1부터 도 5를 참조하면, CPU(210)는 컴퓨팅 장치(100)의 하나 또는 그 이상의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)하고, 판단(계산 또는 측정)의 결과에 따라 복수의 모델들(MOD1~MOD5)을 저장하는 메모리 (310-1)의 복수의 메모리 영역들(MEM1~MEM5)에 대한 복수의 어드레스들(ADD1~ADD5) 중에서 어느 하나를 선택하고 선택된 어드레스를 GPU(260)로 전송할 수 있다.
상술한 바와 같이, 하나 또는 그 이상의 속성들(또는 특성들)은 GPU(260)와 메모리(310-12) 사이의 대역폭, GPU(260)의 계산 전력, GPU(260)의 최대 전력 소모, GPU(260)의 DVFS에 따라 결정된 전압과 주파수, 및 GPU(260)의 온도를 포함할 수 있다.
예컨대, 컴퓨팅 장치(100)가 데스크 탑 컴퓨터 또는 컴퓨터 워크 스테이션일 때, CPU(210)는, 상기 판단(계산 또는 측정)의 결과에 따라, 가장 높은 복잡도를 갖는 제5모델(MOD5)을 저장하는 제5메모리 영역(MEM5)에 대한 제5어드레스(ADD5)를 GPU(260)로 전송할 수 있다.
그러나, 컴퓨팅 장치(100)가 스마트폰과 같은 휴대용 전자 장치일 때, CPU (210)는, 상기 판단(계산 또는 측정)의 결과에 따라, 가장 낮은 복잡도를 갖는 제1모델(MOD1)을 저장하는 제1메모리 영역(MEM1)에 대한 제1어드레스(ADD1)를 GPU (260)로 전송할 수 있다.
예컨대, 컴퓨팅 장치(100)가 배터리(203)를 포함하는 휴대용 전자 장치일 때, 컴퓨팅 장치(100)의 속성들(또는 특성들)은 배터리(203)의 잔량을 포함할 수 있다.
따라서, CPU(210)는 배터리(203)의 잔량이 제1잔량일 때 제2모델(MOD2)에 상응하는 제2어드레스(ADD2)를 GPU(260)로 전송할 수 있고, 배터리(203)의 잔량이 제2잔량일 때 제1모델(MOD1)에 상응하는 제1어드레스(ADD1)를 GPU(260)로 전송할 수 있다. 이때, 제1잔량은 제2잔량보다 클 수 있다.
GPU(260)는 CPU(210)로부터 수신된 어드레스를 수신하고, 수신된 어드레스를 이용하여 복수의 메모리 영역들(MEM1~MEM5) 중에서 어느 하나의 영역에 저장된 모델을 리드하고, 리드된 모델의 기하 정보를 이용하여 상기 리드된 모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교의 결과에 따라, 상기 모델에 대한 테셀레이션의 실행 여부를 결정할 수 있다.
다른 실시 예에 따라, CPU(210)는 복수의 모델들(MOD1~MOD5)을 저장하는 복수의 메모리 영역들(MEM1~MEM5)에 대한 복수의 어드레스들(ADD1~ADD5), 즉 어드레스 리스트를 GPU(260)로 전송할 수 있다.
GPU(260)는 CPU(210)로부터 전송된 복수의 어드레스들(ADD1~ADD5)을 수신하고, 컴퓨팅 장치(100)의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)하고, 판단(계산 또는 측정)의 결과에 따라 복수의 모델들(MOD1~MOD5)에 관련된 복수의 어드레스들(ADD1~ADD5) 중에서 어느 하나를 선택할 수 있다. 상술한 바와 같이, 선택된 어드레스를 액세스 회로(252)로 전송될 수 있다.
GPU(260), 예컨대 액세스 회로(252)는 선택된 어드레스를 이용하여 복수의 메모리 영역들(MEM1~MEM5) 중에서 어느 하나의 영역에 저장된 모델을 리드하고, 리드된 모델의 기하 정보를 이용하여 상기 리드된 모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교의 결과에 따라, 상기 모델에 대한 테셀레이션 여부를 결정할 수 있다.
리소스 블록(263)을 통해 리드된 모델은 입력 어셈블러(261-1)로 전송될 수 있다. 예컨대, GPU(260)의 액세스 회로(252)는, CPU(210)로부터 출력된 어드레스 또는 GPU(260)에 의해 선택된 어드레스를 이용하여, 상기 어드레스에 해당하는 메모리 영역에 저장된 모델을 제1메모리(310-1) 또는 리소스 블록(263)으로부터 리드하는 작동을 수행할 수 있다.
상기 기하 정보는 리드된 모델에 포함된 컨트롤 포인트들의 깊이 값들 또는 상기 컨트롤 포인트들의 곡률을 포함할 수 있다.
예컨대, 그래픽스 파이프라인(260A)의 헐 쉐이터(261-3)는, 리드된 모델의 기하 정보를 이용하여, 리드된 모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교의 결과에 해당하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
테셀레이터(261-4)는 리드된 모델에 대한 데이터와 비교 정보(INF)를 수신하고, 비교 정보(INF)에 기초하여 리드된 모델에 대한 테셀레이션 여부를 결정할 수 있다. 즉, 테셀레이터(261-4)는 리드된 모델에 대한 테셀레이션을 실행하거나 리드된 모델을 그대로 도메인 쉐이더로 패스할 수 있다.
도 6은 선택된 모델의 복잡도를 계산하는 방법의 일 실시 예를 나타낸다.
GPU(260), 예컨대 헐 쉐이더(261-3)는 처리될 모델의 기하 정보, 즉 컨트롤 포인트들의 깊이 값들을 이용하여 상기 모델의 복잡도를 계산하고 비교할 수 있다.
CPU(210) 또는 GPU(260)는, 컴퓨팅 장치(100)의 속성들에 기초하여, 컴퓨팅 장치(100)가 원하는 모델과 가장 가까운 모델을 리드하기 위한 어드레스를 생성해야 한다. 이에 따라, GPU(260)는 컴퓨팅 장치(100)가 원하는 모델과 가장 가까운 모델을 생성된 어드레스를 이용하여 제1메모리(310-1)로부터 리드한다.
도 6에 도시된 실시 예들은 설명의 편의를 위한 개념도에 불과하다.
경우1(CASE1)을 참조하면, GPU(260)에 의해 리드된 모델이 4개의 컨트롤 포인트들(P11, P12, P13, 및 P14)을 포함하는 사각형 패치이고, 상기 패치에 포함된 4개의 컨트롤 포인트들(P11, P12, P13, 및 P14)의 깊이 값들이 기준 깊이 값(RDEP)보다 작을 때(예컨대, 상기 패치가 시청자(VIEWER)에게 상대적으로 가까이 있을 때), 헐 쉐이더(261-3)는 상기 모델에 대한 테셀레이션의 실행을 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
따라서, 테셀레이터(261-4)는 헐 쉐이더(261-3)로부터 수신된 모델에 대해 테셀레이션을 수행한다.
그러나, 경우3(CASE3)을 참조하면, GPU(260)에 의해 리드된 모델이 4개의 컨트롤 포인트들(P31, P32, P33, 및 P34)을 포함하는 사각형 패치이고, 상기 패치에 포함된 4개의 컨트롤 포인트들(P31, P32, P33, 및 P34)의 깊이 값들이 기준 깊이 값(RDEP)보다 클 때(예컨대, 상기 패치가 시청자(VIEWER)에게 상대적으로 멀리 있을 때), 헐 쉐이더(261-3)는 상기 모델에 대한 테셀레이션의 패스를 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
따라서, 테셀레이터(261-4)는 헐 쉐이더(261-3)로부터 수신된 모델에 대해 테셀레이션을 수행하지 않는다. 테셀레이터(261-4)가 상기 모델에 대해 테셀레이션을 수행하지 않으므로, 테셀레이터(261-4)의 오버헤드가 감소하는 효과가 있다. 즉, 그래픽스 파이프라인(260)의 오버헤드는 감소하는 효과가 있다.
경우2(CASE2)를 참조하면, GPU(260)에 의해 리드된 모델이 4개의 컨트롤 포인트들(P21, P22, P23, 및 P24)을 포함하는 사각형 패치이고, 상기 패치에 포함된 4개의 컨트롤 포인트들(P21, P22, P23, 및 P24) 중에서 컨트롤 포인트(P21)의 깊이 값만이 기준 깊이 값(RDEP)보다 작을 때, 설정된 프로그램에 따라, 헐 쉐이더(261-3)는 상기 모델에 대한 테셀레이션의 패스를 지시하는 비교 정보(INF) 또는 상기 테셀레이션의 패스를 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
실시 예들에 따라 GPU(260)는 컴퓨팅 장치(100)가 원하는 복잡도를 갖는 모델보다 더 높은 복잡도를 갖는 모델을 리드할 수 있다.
예컨대, 컴퓨팅 장치(100)가 원하는 모델이 모델(MOD1)이고 GPU(260)에서 리드된 모델이 모델(MOD3, MOD4, 또는 MOD5)일 때, 헐 쉐이더(261-3)는 각 경우 (CASE1, CASE2, 또는 CASE3)라도 모델(MOD3, MOD4, 또는 MOD5)에 대한 테셀레이션의 패스를 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
실시 예들에 따라 GPU(260)는 컴퓨팅 장치(100)가 원하는 복잡도를 갖는 모델보다 더 낮은 복잡도를 갖는 모델을 리드할 수 있다.
예컨대, 컴퓨팅 장치(100)가 원하는 모델이 모델(MOD5)이고 GPU(260)에서 리드된 모델이 모델(MOD1, MOD3, 또는 MOD4)일 때, 헐 쉐이더(261-3)는 각 경우 (CASE1, CASE2, 또는 CASE3)라도 모델(MOD1, MOD3, 또는 MOD4)에 대한 테셀레이션의 실행을 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
도 7은 선택된 모델의 복잡도를 계산하는 방법의 다른 실시 예를 나타낸다.
도 3부터 도 5, 및 도 7을 참조하면, GPU(260), 예컨대 헐 쉐이더(261-3)는 처리될 모델의 기하 정보, 즉 컨트롤 포인트들의 곡률을 이용하여 상기 모델의 복잡도를 계산하고 비교할 수 있다.
CPU(210) 또는 GPU(260)는, 컴퓨팅 장치(100)의 속성들에 기초하여, 컴퓨팅 장치(100)가 원하는 모델과 가장 가까운 모델을 리드하기 위한 어드레스를 생성해야 한다. 이에 따라, GPU(260)는 컴퓨팅 장치(100)가 원하는 모델과 가장 가까운 모델을 생성된 어드레스를 이용하여 제1메모리(310-1)로부터 리드한다.
GPU(260)에 의해 리드된 모델에 포함된 컨트롤 포인트들(P41, P42, P43, 및 P44)의 곡률(CV1)이 기준 곡률(RCV)보다 클 때, 헐 쉐이더(261-3)는 상기 모델에 대한 테셀레이션의 실행을 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
그러나, GPU(260)에 의해 리드된 모델에 포함된 컨트롤 포인트들(P41, P42, P43, 및 P44)의 곡률(CV2)이 기준 곡률(RCV)보다 작을 때, 헐 쉐이더(261-3)는 상기 모델에 대한 테셀레이션의 패스를 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
실시 예들에 따라 GPU(260)는 컴퓨팅 장치(100)가 원하는 복잡도를 갖는 모델보다 더 높은 복잡도를 갖는 모델을 리드할 수 있다.
예컨대, 컴퓨팅 장치(100)가 원하는 모델이 모델(MOD1)이고 GPU(260)에서 리드된 모델이 모델(MOD3, MOD4, 또는 MOD5)일 때, 헐 쉐이더(261-3)는 계산된 곡률에 무관하게 모델(MOD3, MOD4, 또는 MOD5)에 대한 테셀레이션의 패스를 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
실시 예들에 따라 GPU(260)는 컴퓨팅 장치(100)가 원하는 복잡도를 갖는 모델보다 더 낮은 복잡도를 갖는 모델을 리드할 수 있다.
예컨대, 컴퓨팅 장치(100)가 원하는 모델이 모델(MOD5)이고 GPU(260)에서 리드된 모델이 모델(MOD1, MOD3, 또는 MOD4)일 때, 헐 쉐이더(261-3)는 계산된 곡률에 무관하게 모델(MOD1, MOD3, 또는 MOD4)에 대한 테셀레이션의 실행을 지시하는 비교 정보(INF)를 테셀레이터(261-4)로 전송할 수 있다.
도 8은 서로 다른 복잡도를 갖는 모델들을 개념적으로 나타낸다.
도 4와 8을 참조하면, 서로 다른 복잡도를 갖는 각 모델(MOD11, MOD12, MOD13, 및 MOD14)은 제1메모리(310-1)의 각 메모리 영역(MEM1~MEM4)에 저장될 수 있다. 제1메모리 영역(MEM1)에는 하나의 모델(MOD1 또는 MOD11)이 저장되고, 제2메모리 영역(MEM2)에는 하나의 모델(MOD2 또는 MOD12)이 저장되고, 제3메모리 영역 (MEM2)에는 하나의 모델(MOD3 또는 MOD13)이 저장되고, 제4메모리 영역(MEM4)에는 하나의 모델(MOD4 또는 MOD14)이 저장된다.
제9모델(MOD14)에 포함된 패치들의 개수(M4)는 제8모델(MOD13)에 포함된 패치들의 개수(M3)보다 많고, 제8모델(MOD13)에 포함된 패치들의 개수(M3)는 제7모델(MOD12)에 포함된 패치들의 개수(M2)보다 많고, 제7모델(MOD12)에 포함된 패치들의 개수(M2)는 제6모델(MOD11)에 포함된 패치들의 개수(M1)보다 많다.
도 8에서는 패치로서 삼각형이 도시되어 있으나, 실시 예에 따라 패치는 4각형일 수 있다. 각 모델에 포함된 패치들의 개수는 각 모델의 복잡도에 관련된다. 즉, 해당 모델에 포함된 패치들의 개수가 많을수록 상기 해당 모델의 복잡도는 증가한다.
각 모델(MOD11, MOD12, MOD13, 및 MOD14)은 입력 어셈블러(261-1)와 버텍스 쉐이더(261-2)를 통해 헐 쉐이더(261-3)으로 전송된다.
GPU(260)는, 예컨대, 액세스 회로(252)는, CPU(210) 또는 GPU(260)에 의해 선택된 어드레스에 기초하여, 제1메모리(310-1)에 저장된 모델들(MOD11, MOD12, MOD13, 및 MOD14) 중에서 어느 하나를 읽어 올 수 있다.
도 9는 서로 다른 복잡도를 갖는 모델들 각각에 대해 테셀레이션을 수행한 결과들을 나타낸다.
도 9의 (a)의 이미지(TES1)는 도 8의 제9모델(MOD14)에 해당하는 이미지일 수 있고, 도 9의 (b)의 이미지(TES2)는 도 8의 제6모델(MOD11)에 해당하는 이미지일 수 있다.
실시 예들에 따라, 모델(MOD11, MOD12, 또는 MOD13)이 GPU(260)에 의해 제1메모리(310-1)로부터 리드된 모델일 때, 테셀레이터(261-4)는 헐 쉐이더(261-2)로부터 출력된 비교 정보(INF)에 따라 모델(MOD11, MOD12, 또는 MOD13)에 대해 테셀레이션 작동을 수행한다. 이때, 도 9의 (a)의 이미지(TES1)는 테셀레이션된 모델 (MOD11, MOD12, 또는 MOD13)에 해당하는 이미지일 수 있다.
그러나, 모델(MOD14)이 GPU(260)에 의해 제1메모리(310-1)로부터 리드된 모델일 때, 테셀레이터(261-4)는 헐 쉐이더(261-2)로부터 출력된 비교 정보(INF)에 따라 모델(MOD14)에 대해 테셀레이션 작동을 수행하지 않는다. 이때, 도 9의 (a)의 이미지(TES1)는 테셀레이션되지 않은 모델(MOD14)에 해당하는 이미지일 수 있다.
실시 예들에 따라, 모델(MOD11)이 GPU(260)에 의해 제1메모리(310-1)로부터 리드된 모델일 때, 테셀레이터(261-4)는 헐 쉐이더(261-2)로부터 출력된 비교 정보(INF)에 따라 모델(MOD11)에 대해 테셀레이션 작동을 수행한다. 이때, 도 9의 (b)의 이미지(TES2)는 테셀레이션된 모델(MOD11)에 해당하는 이미지일 수 있다.
도 10은 도 1에 도시된 컴퓨팅 장치의 작동을 설명하기 위한 플로우차트이다. 도 1부터 도 10을 참조하면, 렌더링 작동 전에, CPU(210), GPU(260), 또는 모델자(modeler)는 각각이 서로 다른 복잡도를 갖는 복수의 모델들(MOD1~MOD5 또는 MOD11~MOD14)을 생성하고 생성된 복수의 모델들(MOD1~MOD5 또는 MOD11~MOD14)을 GPU(260)에 의해 액세스될 수 있는 메모리에 저장한다(S110).
CPU(210) 또는 GPU(260)는 컴퓨팅 장치(100)의 속성들(또는 특성들) 중에서 적어도 하나를 이용하여 컴퓨팅 장치(100)의 특성을 판단한다(S120).
GPU(260), 예컨대 액세스 회로(252)는, CPU(210) 또는 GPU(260)에 의해 선택된 어드레스(즉, 판단의 결과)를 이용하여, 상기 메모리에 저장된 복수의 모델들 중에서 어느 하나의 모델을 읽어온다(S130). 읽혀진 모델은 그래픽스 파이프라인 (260A)으로 공급된다.
그래픽스 파이드라인(260A), 특히 테셀레이션 스테이지들(예컨대, 헐 쉐이더 (261-3))는 읽혀진 모델의 기하 정보에 기초하여 상기 모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교한다(S140). 상기 계산된 복잡도와 상기 기준 복잡도는 상기 모델에 포함된 패치에 포함된 컨트롤 포인트들의 깊이 값들 또는 상기 컨트롤 포인트들의 곡률에 기초하여 계산될 수 있다.
헐 쉐이더(261-3)는 오브젝트(object), 프리미티브(primitive), 패치 (patch), 에지(edge), 버텍스(vertex) 또는 컨트롤 포인트(control point) 단위로 해당 모델의 복잡도를 계산할 수 있다.
계산된 복잡도가 기준 복잡도보다 작을 때, 즉 해당 모델에 대한 테셀레이션이 필요할 때, 헐 쉐이더(261-3)는 테셀레이션의 실행을 지시하는 비교 신호(INT)를 테셀레이터(261-4)로 전송한다. 이때, 헐 쉐이더(261-3)는 해당 모델과 테셀레이션의 실행을 위한 테셀레이션 팩터들을 테셀레이터(261-4)로 전송할 수 있다.
테셀레이터(261-4)는 해당 모델에 대한 테셀레이션을 수행한다(S150).
그러나, 계산된 복잡도가 기준 복잡도보다 클 때, 즉 해당 모델에 대한 테셀레이션이 필요하지 않을 때, 헐 쉐이더(261-3)는 테셀레이션의 패스를 지시하는 비교 신호(INT)를 테셀레이터(261-4)로 전송한다. 따라서, 테셀레이터(261-4)는 해당 모델에 대한 테셀레이션을 수행하지 않는다(S160).
도 11은 본 발명의 일 실시 예에 따라, 서로 다른 복잡도를 갖는 모델들 중에서 어느 하나를 선택하는 방법을 나타낸다.
도 11에서 CPU(210)는 컴퓨팅 장치(100)의 속성들(또는 특성들)을 판단한다.
도 1부터 도 7, 및 도 11을 참조하면, 렌더링 작동 전에, CPU(210), GPU(260), 또는 모델자(modeler)는 각각이 서로 다른 복잡도를 갖는 복수의 모델들 (MOD1~MOD5)을 생성하고, 생성된 복수의 모델들(MOD1~MOD5)을 GPU(260)에 의해 액세스될 수 있는 제1메모리(310-1)에 저장한다(S210).
CPU(210)는 컴퓨팅 장치(100)의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)한다(S220).
도 5의 실시 예에 따라, CPU(210)는, 판단(계산 또는 측정)의 결과에 따라, 복수의 모델들(MOD1~MOD5)이 저장된 복수의 메모리 영역들(MEM1~MEM5)에 대한 복수의 어드레스들(ADD1~ADD5) 중에서 어느 하나(ADDi, 1≤i≤5)를 GPU(260)로 전송할 수 있다(S230).
GPU(260)는 CPU(210)로부터 수신된 어드레스(ADDi)를 수신하고, 수신된 어드레스(ADDi)를 이용하여 복수의 메모리 영역들(MEM1~MEM5) 중에서 어느 하나의 영역에 저장된 모델(MODi)을 읽어온다(S240).
GPU(260)는, 리드된 모델(MODi)의 기하 정보를 이용하여, 리드된 모델(MODi)의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교한다(S250).
GPU(260)는, 상기 비교의 결과에 따라, 모델(MODi)에 대한 테셀레이션 여부를 결정할 수 있다(S260). 따라서, 테셀레이터(261-4)는 비교 정보(INF)에 따라 모델(MODi)에 대한 테셀레이션을 실행하거나 실행하지 않을 수 있다(S260).
도 12는 본 발명의 다른 실시 예에 따라, 서로 다른 복잡도를 갖는 모델들 중에서 어느 하나를 선택하는 방법을 나타낸다.
도 12에서 GPU(260)는 컴퓨팅 장치(100)의 속성들(또는 특성들)을 판단한다.
도 1부터 도 7, 및 도 12를 참조하면, 렌더링 작동 전에, CPU(210), GPU (260), 또는 모델자(modeler)는 각각이 서로 다른 복잡도를 갖는 복수의 모델들 (MOD1~MOD5)을 생성하고, 생성된 복수의 모델들(MOD1~MOD5)을 GPU(260)에 의해 액세스될 수 있는 제1메모리(310-1)에 저장한다(S310).
CPU(210)는 복수의 모델들(MOD1~MOD5)을 저장하는 복수의 메모리 영역들 (MEM1~MEM5)에 대한 복수의 어드레스들(ADD1~ADD5)을 GPU(260)로 전송할 수 있다 (S320).
GPU(260)는 CPU(210)로부터 전송된 복수의 어드레스들(ADD1~ADD5)을 수신하고, 컴퓨팅 장치(100)의 속성들(또는 특성들) 중에서 적어도 하나를 판단(계산 또는 측정)한다(S330).
GPU(260)는 판단의 결과에 따라 복수의 어드레스들(ADD1~ADD5) 중에서 어느 하나(ADDj, 1≤j≤5)를 선택하고(S340), 선택된 어드레스(ADDj)를 이용하여 복수의 메모리 영역들(MEM1~MEM5) 중에서 어느 하나의 영역에 저장된 모델(MODj)을 읽어온다(S350).
GPU(260)는, 리드된 모델(MODj)의 기하 정보를 이용하여, 리드된 모델(MODj)의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교한다(S360).
GPU(260)는, 상기 비교의 결과에 따라, 모델(MODj)에 대한 테셀레이션 여부를 결정할 수 있다(S370). 따라서, 테셀레이터(261-4)는 비교 정보(INF)에 따라 모델(MODi)에 대한 테셀레이션을 실행하거나 실행하지 않을 수 있다(S370).
도 13은 본 발명의 실시 예에 따른 그래픽 카드를 포함하는 컴퓨팅 장치의 블록도를 나타낸다.
도 13을 참조하면, 컴퓨팅 장치(100A)는 CPU(210), 그래픽스 카드(graphics card: 500), 및 디스플레이(400)를 포함할 수 있다.
컴퓨팅 장치(100A)는 TV(예컨대, 디지털 TV 또는 스마트 TV를 포함한다.), PC, 데스크 탑 컴퓨터, 랩탑 컴퓨터, 컴퓨터 워크 스테이션, 또는 그래픽 카드 (500)를 사용할 수 있는 컴퓨팅 장치를 포함한다.
GPU(260)와 함께 CPU(210)는 도 1부터 도 12를 참조하여 설명된 작동을 수행
그래픽스 카드(500)는 GPU(260), 인터페이스(510), 그래픽스 메모리(520), DAC(digital-to-analog converter; 530), 출력 포트(540), 및 메인보드 접속 슬롯 (550)을 포함한다.
인터페이스(510)는 CPU(210)로부터 출력된 명령 및/또는 데이터를 그래픽스 메모리(520)로 전송하거나, 그래픽 카드(500)에 대한 정보를 CPU(210)로 전송할 수 있다.
그래픽스 메모리(520)는 GPU(260)에 의해 생성된 데이터를 저장하고, CPU (210)로부터 출력된 명령을 GPU(260)로 전송할 수 있다.
CPU(210)와 함께 GPU(260)는 도 1부터 도 12를 참조하여 설명된 작동을 수행하고, GPU(260)에서 생성된 데이터를 그래픽스 메모리(520)로 전송한다.
DAC(530)은 디지털 신호들을 아날로그 신호들로 변환한다. 출력 포트(540)는 DAC(530)의 아날로그 신호들, 즉 이미지 신호들을 디스플레이(400)로 전송한다.
메인보드 접속 슬롯(550)은 CPU(210)를 포함하는 메인보드에 접속되는 슬롯이다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 100A; 컴퓨팅 장치
200: 시스템 온 칩
210; CPU
220-1, 220-2; 메모리 컨트롤러
230; 유저 인터페이스
240; 디스플레이 컨트롤러
260; 그래픽스 프로세싱 유닛(GPU)
260; GPU 캐시
261-1; 입력 어셈블러
262-2; 버텍스 쉐이더
261-3; 헐 쉐이더
261-4; 테셀레이터
261-5; 도메인 쉐이더
261-6; 지오매트리 쉐이더
261-7; 래스터라이저
261-8; 픽셀 쉐이터(프레그먼트 쉐이더)
261-9; 출력 머저
263; 리소스 블록
200: 시스템 온 칩
210; CPU
220-1, 220-2; 메모리 컨트롤러
230; 유저 인터페이스
240; 디스플레이 컨트롤러
260; 그래픽스 프로세싱 유닛(GPU)
260; GPU 캐시
261-1; 입력 어셈블러
262-2; 버텍스 쉐이더
261-3; 헐 쉐이더
261-4; 테셀레이터
261-5; 도메인 쉐이더
261-6; 지오매트리 쉐이더
261-7; 래스터라이저
261-8; 픽셀 쉐이터(프레그먼트 쉐이더)
261-9; 출력 머저
263; 리소스 블록
Claims (20)
- CPU(central processing unit)의 제어에 따라, 제1모델에 대한 테셀레이션 여부를 결정하는 그래픽스 프로세싱 유닛(GPU)에 있어서,
상기 GPU는,
각각이 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리로부터 상기 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정하되,
상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들을 상기 CPU로부터 수신하고,
상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고,
판단 결과에 기초하여 상기 어드레스들 중에서 제1어드레스를 선택하고,
선택된 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드하고,
상기 제1모델의 기하 정보를 이용하여 상기 제1모델의 복잡도를 계산하고,
상기 계산된 복잡도와 상기 기준 복잡도의 비교 결과에 따라, 상기 제1모델에 대한 상기 테셀레이션 여부를 결정하는 GPU. - 삭제
- 제1항에 있어서, 상기 GPU는,
상기 제1모델에 포함된 오브젝트(object), 프리미티브(primitive), 패치 (patch), 에지(edge), 버텍스(vertex) 또는 컨트롤 포인트(control point) 단위로 상기 제1모델의 상기 복잡도를 계산하는 GPU. - 제3항에 있어서, 상기 GPU는,
상기 프리미티브에 포함된 꼭지점들의 깊이 값들 또는 상기 꼭지점들에 의해 정의된 곡률에 기초하여 상기 제1모델의 상기 복잡도를 계산하는 GPU. - 제4항에 있어서, 상기 GPU는,
상기 패치에 포함된 컨트롤 포인트들의 깊이 값들 또는 상기 꼭지점들에 의해 정의된 곡률에 기초하여 상기 제1모델의 상기 복잡도를 계산하는 GPU. - 삭제
- 테셀레이션 스테이지들을 포함하는 그래픽스 프로세싱 유닛(GPU);
CPU(central processing unit);
상기 GPU에 의해 액세스될 수 있는 GPU 메모리; 및
상기 CPU에 의해 제어되는 메모리 컨트롤러를 포함하고,
상기 GPU는, 상기 CPU의 제어에 따라, 상기 메모리 컨트롤러를 통해 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리로부터 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정하고,
상기 CPU는,
상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고,
판단 결과에 기초하여 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들 중에서 제1어드레스를 상기 GPU로 전송하고,
상기 GPU는 상기 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드하는 시스템 온 칩(system on chip(SoC). - 삭제
- 제7항에 있어서,
상기 GPU는 상기 제1모델에 포함된 패치들 각각의 컨트롤 포인트들의 기하 정보를 이용하여 상기 복잡도를 계산하는 SoC. - 제9항에 있어서,
상기 기하 정보는 상기 컨트롤 포인트들의 깊이 값들 또는 상기 컨트롤 포인트들에 의해 정의된 곡률인 SoC. - 제7항에 있어서,
렌더링 작동(rendering operation) 전에 상기 모델들을 저장하는 메모리는 상기 SoC의 내부 또는 상기 SoC의 외부에 구현되는 SoC. - 테셀레이션 스테이지들을 포함하는 그래픽스 프로세싱 유닛(GPU);
CPU(central processing unit);
상기 GPU에 의해 액세스될 수 있는 GPU 메모리; 및
상기 CPU에 의해 제어되는 메모리 컨트롤러를 포함하고,
상기 GPU는, 상기 CPU의 제어에 따라, 상기 메모리 컨트롤러를 통해 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리로부터 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정하고,
상기 CPU는 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들을 상기 GPU로 전송하고,
상기 GPU는,
상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고,
판단 결과에 기초하여 상기 어드레스들 중에서 제1어드레스를 선택하고,
선택된 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드하는 SoC. - 제12항에 있어서,
상기 GPU는 상기 제1모델에 포함된 패치들 각각의 컨트롤 포인트들 각각의 깊이 값 또는 상기 컨트롤 포인트들에 의해 정의된 곡률을 이용하여 상기 제1모델의 복잡도를 계산하는 SoC. - 제13항에 있어서,
상기 제1모델의 계산된 복잡도이 상기 기준 복잡도보다 작을 때, 상기 제1모델을 테셀레이션하고,
상기 제1모델의 계산된 복잡도이 상기 기준 복잡도보다 같거나 클 때, 상기 제1모델을 테셀레이션하지 않는 SoC. - 제7항에 있어서,
상기 테셀레이션 스테이지들은 헐 쉐이더, 테셀레이터, 및 도메인 쉐이더를 포함하고,
상기 계산과 상기 비교는 상기 헐 쉐이더에 의해 수행되고,
상기 결정은 상기 테셀레이터에서 수행되고,
상기 테셀레이터는 상기 결정의 결과에 기초하여 상기 제1모델을 상기 도메인 쉐이더로 패스하거나 상기 테셀레이터로부터 전송된 테셀레이션 팩터들을 이용하여 상기 제1모델을 테셀레이션하는 SoC. - 각각이 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리;
디스플레이;
상기 메모리와 상기 디스플레이를 제어하는 시스템 온 칩을 포함하고,
상기 시스템 온 칩은,
테셀레이션 스테이지들을 포함하는 그래픽스 프로세싱 유닛(GPU);
CPU(central processing unit); 및
상기 CPU의 제어에 따라 상기 디스플레이를 제어하는 디스플레이 컨트롤러;
상기 CPU의 제어에 따라 상기 메모리를 제어하는 메모리 컨트롤러를 포함하고,
상기 GPU는, 상기 CPU의 제어에 따라, 상기 메모리 컨트롤러를 통해 상기 모델들을 저장하는 상기 메모리로부터 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정하고,
상기 CPU는,
상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고,
판단 결과에 기초하여 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들 중에서 제1어드레스를 상기 GPU로 전송하고,
상기 GPU는 상기 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드하는 컴퓨팅 장치. - 삭제
- 제16항에 있어서, 상기 GPU는,
상기 제1모델에 포함된 오브젝트(object), 프리미티브(primitive), 패치 (patch), 에지(edge), 버텍스(vertex) 또는 컨트롤 포인트(control point) 단위로 상기 제1모델의 상기 복잡도를 계산하는 컴퓨팅 장치. - 제16항에 있어서, 상기 GPU는,
상기 제1모델의 상기 계산된 복잡도이 상기 기준 복잡도보다 작을 때, 상기 제1모델을 테셀레이션하고,
상기 제1모델의 상기 계산된 복잡도이 상기 기준 복잡도보다 같거나 클 때, 상기 제1모델을 테셀레이션하지 않는 컴퓨팅 장치. - 각각이 서로 다른 복잡도를 갖고 미리 준비된 모델들을 저장하는 메모리;
디스플레이;
상기 메모리와 상기 디스플레이를 제어하는 시스템 온 칩을 포함하고,
상기 시스템 온 칩은,
테셀레이션 스테이지들을 포함하는 그래픽스 프로세싱 유닛(GPU);
CPU(central processing unit); 및
상기 CPU의 제어에 따라 상기 디스플레이를 제어하는 디스플레이 컨트롤러;
상기 CPU의 제어에 따라 상기 메모리를 제어하는 메모리 컨트롤러를 포함하고,
상기 GPU는, 상기 CPU의 제어에 따라, 상기 메모리 컨트롤러를 통해 상기 모델들을 저장하는 상기 메모리로부터 제1모델을 리드하고, 리드된 제1모델의 복잡도를 계산하고, 계산된 복잡도와 기준 복잡도를 비교하고, 비교 결과에 따라 상기 제1모델에 대한 테셀레이션 여부를 결정하고,
상기 CPU는 상기 모델들이 저장된 상기 메모리의 메모리 영역들에 대한 어드레스들을 상기 GPU로 전송하고,
상기 GPU는,
상기 GPU와 상기 메모리 사이의 대역폭, 상기 GPU의 계산 전력, 상기 GPU의 최대 전력 소모, 상기 GPU의 DVFS(dynamic voltage frequency scaling), 및 상기 GPU의 온도 중에서 적어도 하나를 판단하고,
판단 결과에 기초하여 상기 어드레스들 중에서 제1어드레스를 선택하고,
선택된 제1어드레스를 이용하여 상기 메모리 영역들 중에서 제1메모리 영역에 저장된 상기 제1모델을 리드하는 컴퓨팅 장치.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140167153A KR102313020B1 (ko) | 2014-11-27 | 2014-11-27 | 그래픽스 프로세싱 유닛과 이를 포함하는 장치 |
US14/823,476 US10140677B2 (en) | 2014-11-27 | 2015-08-11 | Graphics processing unit and device employing tessellation decision |
DE102015117768.4A DE102015117768A1 (de) | 2014-11-27 | 2015-10-19 | Graphikverarbeitungseinheit und Vorrichtung mit derselben |
CN201510844088.XA CN105654418B (zh) | 2014-11-27 | 2015-11-26 | 图形处理单元和包括其的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140167153A KR102313020B1 (ko) | 2014-11-27 | 2014-11-27 | 그래픽스 프로세싱 유닛과 이를 포함하는 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160063648A KR20160063648A (ko) | 2016-06-07 |
KR102313020B1 true KR102313020B1 (ko) | 2021-10-15 |
Family
ID=55967989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140167153A KR102313020B1 (ko) | 2014-11-27 | 2014-11-27 | 그래픽스 프로세싱 유닛과 이를 포함하는 장치 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10140677B2 (ko) |
KR (1) | KR102313020B1 (ko) |
CN (1) | CN105654418B (ko) |
DE (1) | DE102015117768A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170358132A1 (en) * | 2016-06-12 | 2017-12-14 | Apple Inc. | System And Method For Tessellation In An Improved Graphics Pipeline |
US10460513B2 (en) * | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
KR102671404B1 (ko) | 2016-12-12 | 2024-05-31 | 삼성전자주식회사 | 모션 기반 영상을 처리하는 방법 및 장치 |
US11388050B2 (en) * | 2017-10-03 | 2022-07-12 | Dell Products L.P. | Accelerating machine learning and profiling over a network |
US11037356B2 (en) | 2018-09-24 | 2021-06-15 | Zignal Labs, Inc. | System and method for executing non-graphical algorithms on a GPU (graphics processing unit) |
WO2021034496A1 (en) * | 2019-08-20 | 2021-02-25 | Intel Corporation | Apparatus and method to improve switchable graphics system performance and energy consumption based applications and real-time system power/thermal budgets |
CN110706147B (zh) * | 2019-09-29 | 2023-08-11 | 阿波罗智联(北京)科技有限公司 | 图像处理的环境确定方法、装置、电子设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130265309A1 (en) * | 2012-04-04 | 2013-10-10 | Qualcomm Incorporated | Patched shading in graphics processing |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6356263B2 (en) * | 1999-01-27 | 2002-03-12 | Viewpoint Corporation | Adaptive subdivision of mesh models |
US20030210271A1 (en) | 2002-05-13 | 2003-11-13 | King William Davis | Power based level-of- detail management system for a portable computer graphics display |
JP2004213641A (ja) | 2002-12-20 | 2004-07-29 | Sony Computer Entertainment Inc | 画像処理装置、画像処理方法、情報処理装置、情報処理システム、半導体デバイス、コンピュータプログラム |
US7262713B1 (en) | 2004-09-30 | 2007-08-28 | Rockwell Collins, Inc. | System and method for a safe depiction of terrain, airport and other dimensional data on a perspective flight display with limited bandwidth of data presentation |
US7295204B2 (en) * | 2004-12-14 | 2007-11-13 | Adrian Sfarti | Rapid zippering for real time tesselation of bicubic surfaces |
KR100809522B1 (ko) | 2005-12-08 | 2008-03-04 | 한국전자통신연구원 | 지형의 효율적인 뷰-의존 lod 렌더링 방법 |
KR100745768B1 (ko) | 2006-08-29 | 2007-08-02 | 삼성전자주식회사 | 전력 소비를 감소시키기 위한 lod 값 계산 방법과이것을 이용한 3차원 렌더링 시스템 |
US7948500B2 (en) | 2007-06-07 | 2011-05-24 | Nvidia Corporation | Extrapolation of nonresident mipmap data using resident mipmap data |
US20090195541A1 (en) | 2008-02-05 | 2009-08-06 | Rambus Inc. | Rendering dynamic objects using geometry level-of-detail in a graphics processing unit |
JP5419044B2 (ja) | 2008-12-20 | 2014-02-19 | 国立大学法人 東京大学 | ボリュームデータの実時間レンダリング方法及び装置 |
WO2010121085A1 (en) * | 2009-04-16 | 2010-10-21 | Ioan Alexandru Salomie | Scalable particle interactive networks |
GB2484445B (en) * | 2009-07-24 | 2014-09-17 | Uws Ventures Ltd | Direct ray tracing of 3D scenes |
US8532924B2 (en) | 2009-09-02 | 2013-09-10 | Alpine Electronics, Inc. | Method and apparatus for displaying three-dimensional terrain and route guidance |
FI20096354A0 (fi) | 2009-12-18 | 2009-12-18 | Visual Components Oyj | Yksityiskohtien prosessoinnin taso |
CN102196300A (zh) * | 2010-03-18 | 2011-09-21 | 国际商业机器公司 | 虚拟世界场景的图像的提供方法和设备及处理方法和设备 |
US9165403B2 (en) | 2011-01-14 | 2015-10-20 | Intel Corporation | Planetary scale object rendering |
CN102497550A (zh) * | 2011-12-05 | 2012-06-13 | 南京大学 | H.264编码中运动补偿插值的并行加速方法及装置 |
US8654124B2 (en) | 2012-01-25 | 2014-02-18 | Google Inc. | Texture fading for smooth level of detail transitions in a graphics application |
CN102663822A (zh) * | 2012-03-07 | 2012-09-12 | 上海大学 | 基于细分方法的分子表面网格生成方法 |
CN102880587B (zh) * | 2012-10-09 | 2014-12-24 | 无锡江南计算技术研究所 | 基于嵌入式加速核心的独立显卡架构 |
-
2014
- 2014-11-27 KR KR1020140167153A patent/KR102313020B1/ko active IP Right Grant
-
2015
- 2015-08-11 US US14/823,476 patent/US10140677B2/en active Active
- 2015-10-19 DE DE102015117768.4A patent/DE102015117768A1/de active Pending
- 2015-11-26 CN CN201510844088.XA patent/CN105654418B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130265309A1 (en) * | 2012-04-04 | 2013-10-10 | Qualcomm Incorporated | Patched shading in graphics processing |
Also Published As
Publication number | Publication date |
---|---|
US10140677B2 (en) | 2018-11-27 |
DE102015117768A1 (de) | 2016-06-02 |
KR20160063648A (ko) | 2016-06-07 |
CN105654418A (zh) | 2016-06-08 |
CN105654418B (zh) | 2021-01-05 |
US20160155209A1 (en) | 2016-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102313020B1 (ko) | 그래픽스 프로세싱 유닛과 이를 포함하는 장치 | |
KR102197064B1 (ko) | Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들 | |
KR102188543B1 (ko) | 그래픽 처리 장치 | |
US9665980B2 (en) | Graphics processing unit, method of operating the same, and devices including the same | |
US9576396B2 (en) | Graphics processing unit, graphics processing system including the same, and method of operating the same | |
KR102651126B1 (ko) | 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법 | |
US9779547B2 (en) | Tessellation method for assigning a tessellation factor per point and device performing the method | |
US20150170406A1 (en) | Graphic processing unit, system-on-chip including graphic processing unit, and graphic processing system including graphic processing unit | |
KR20120096119A (ko) | 그래픽 프로세서 및 조기 가시성 테스트 방법 | |
US9390554B2 (en) | Off chip memory for distributed tessellation | |
US9824458B2 (en) | Dynamically switching between late depth testing and conservative depth testing | |
US20160140737A1 (en) | Bandwidth reduction using vertex shader | |
KR102066533B1 (ko) | 도메인 쉐이딩 방법과 이를 수행하는 장치들 | |
KR102477265B1 (ko) | 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법 | |
US8558833B1 (en) | System and method for symmetric parameterization of independently tessellated patches | |
US20160071317A1 (en) | Graphics processing unit (gpu) including subdivider and device including the gpu | |
US20210082165A1 (en) | Rendering of cubic bezier curves in a graphics processing unit (gpu) | |
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 | |
KR102053351B1 (ko) | 테셀레이션 데이터 생성 방법과 상기 방법을 수행할 수 있는 장치들 |
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 |