KR20120139284A - 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 - Google Patents
타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 Download PDFInfo
- Publication number
- KR20120139284A KR20120139284A KR1020110059010A KR20110059010A KR20120139284A KR 20120139284 A KR20120139284 A KR 20120139284A KR 1020110059010 A KR1020110059010 A KR 1020110059010A KR 20110059010 A KR20110059010 A KR 20110059010A KR 20120139284 A KR20120139284 A KR 20120139284A
- Authority
- KR
- South Korea
- Prior art keywords
- tile
- fragment
- tiles
- processors
- processor
- 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
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- 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
-
- 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
Abstract
타일 기반 렌더링을 수행하기 위한 방법 및 장치가 제공된다. 타일들 간의 근접성에 기반하여 타일들의 처리 순서가 결정된다. 타일 디스패치 유닛은 결정된 순서에 따라 다음으로 분배할 타일을 선택한다. 타일 디스패치 유닛은 프레그먼트 프로세서들 중 유휴 프레그먼트 프로세서를 검사하며, 유휴 프레그먼트 프로세서에게 동적으로 선택된 타일을 분배한다.
Description
아래의 실시예들은 렌더링 방법 및 장치에 관한 것이다.
멀티 코어를 사용한 타일 기반 렌더링을 수행하는 방법 및 장치가 개시된다.
영상(image)의 렌더링(rendering)을 위해, 객체 기반 렌더링(Object Based Rendering; OBR) 또는 타일 기반 렌더링(Tile Based Rendering; TBR)이 사용될 수 있다.
OBR은 직관적인 처리 과정을 갖는다. 또한, OBR을 위한 하드웨어는 용이하게 설계될 수 있다.
OBR은, 픽셀(pixel) 파이프라인(pipeline) 단에서, 매 픽셀(pixel)마다 메모리(예컨대, 동적 임의 접근 메모리(dynamic random access memory; DRAM)의 임의 접근(random access)를 유발한다.
TBR은 스크린(screen) 영역을 타일 단위로 분할하고, 분할된 타일을 빠른 내부 메모리를 사용하여 렌더링하고, 렌더링된 결과를 메모리로 전송한다.
따라서, OBR은 전력 소모의 측면 및 메모리 사용의 측면에 있어서 TBR에 비해 불리한 면을 갖는다.
본 발명의 일 실시예는 타일들 간에 근접성에 기반하여 결정된 순서에 따라, 동적으로 타일들을 프레그먼트 프로세서들에게 분배하는 영상 처리 장치 및 영상 처리 방법을 제공할 수 있다.
본 발명의 일 실시예는 타일들 간에 근접성에 기반하여 처리 순서를 생성하고, 처리 순서에 따라 결정된 타일을 유휴 프레그먼트 프로세서에게 전달하는 타일 디스패치 장치를 제공할 수 있다.
본 발명의 일 측에 따르면, 복수 개의 프레그먼트 프로세서들을 포함하는 그래픽 프로세싱 유닛이 영상을 처리하는 방법에 있어서, 복수 개의 타일들 간의 근접성에 기반하여 상기 복수 개의 타일들 간의 순서를 결정하는 단계, 상기 결정된 순서에 따라 처리할 타일을 선택하는 단계, 상기 복수 개의 프레그먼트 프로세서들 중 유후 프레그먼트에게 상기 선택된 타일을 할당하는 단계 및 상기 타일이 할당된 프레그먼트 프로세서가 상기 선택된 타일에 대한 렌더링을 수행하는 단계를 포함하는, 영상 처리 방법이 제공된다.
상기 순서는 상기 복수 개의 타일의 2 차원 배열 내의 공간 채움 커브 또는 힐베르트 커브에 기반하여 결정될 수 있다.
상기 타일이 할당된 프레그먼트 프로세서가 상기 선택된 타일에 대한 렌더링을 수행하는 단계는, 상기 복수 개의 프레그먼트 프로세서들에 의해 병렬로 수행될 수 있다.
상기 복수 개의 프레그먼트 프로세서들은 공유된 캐쉬를 통해 상기 선택된 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 접근할 수 있다.
상기 선택된 프레그먼트 프로세서는 복수 개의 텍셀들을 포함하는 블록을 통해 상기 선택된 타일의 텍스처 데이터를 패치할 수 있다.
본 발명의 다른 일 측에 따르면, 할당된 타일에 대한 렌더링을 수행하는 복수 개의 프레그먼트 프로세서들 및 복수 개의 타일들 간의 근접성에 기반하여 결정된 순서에 따라 처리할 타일을 선택하고, 선택된 타일을 상기 복수 개의 프레그먼트 프로세서들 중 유휴 프로세서에게 할당하는 타일 디스패치 유닛을 포함하는, 영상 처리 장치가 제공된다.
상기 복수 개의 프레그먼트 프로세서들은 상이한 타일들에 대한 타일 렌더링을 병렬로 수행할 수 있다.
상기 영상 처리 장치는, 모델 데이터에 대한 기하학적 처리를 수행하고, 타일 데이터를 생성하는, 버텍스 프로세서를 더 포함할 수 있다.
상기 영상 처리 장치는, 상기 선택된 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 제공하는 캐쉬를 더 포함할 수 있다.
상기 복수 개의 프레그먼트 프로세서들은 상기 캐쉬를 공유할 수 있다.
본 발명의 또 다른 일 측에 따르면, 복수 개의 타일들 간의 근접성에 기반하여 상기 복수 개의 타일들 간의 순서를 결정하고, 상기 순서에 따라 다음으로 처리될 타일을 선택하는 타일 선택부, 복수 개의 프레그먼트 프로세서들 중 유휴 프레그먼트에게 상기 선택된 타일을 할당하는 타일 패치부 및 상기 타일이 할당된 프레그먼트 프로세서에게 상기 선택된 타일의 타일 데이터를 전송하는 타일 전송부를 포함하는, 타일 디스패치 유닛이 제공된다.
상기 타일 디스패치 유닛은, 상기 복수 개의 프레그먼트 프로세서들 중 상기 유후 프레그먼트 프로세서들을 검사하는 프로세서 상태 검사부를 더 포함할 수 있다.
상기 타일 패치부는 외부 메모리로부터 상기 선택된 타일의 상기 타일 데이터를 패치해올 수 있다.
상기 타일 선택부, 상기 타일 패치부 및 상기 타일 전송부는 상기 복수 개의 타일들 모두가 각각 상기 복수 개의 프레그먼트 프로세서들 중 하나의 프레그먼트 프로세서에게 할당될 때까지 동작을 반복할 수 있다.
타일들 간에 근접성에 기반하여 결정된 순서에 따라, 동적으로 타일들을 프레그먼트 프로세서들에게 분배하는 영상 처리 장치 및 영상 처리 방법이 제공된다.
타일들 간에 근접성에 기반하여 처리 순서를 생성하고, 처리 순서에 따라 결정된 타일을 유휴 프레그먼트 프로세서에게 전달하는 타일 디스패치 장치가 제공된다.
도 1은 본 발명의 일 실시예에 따른 영상 처리 장치의 구조도이다.
도 2는 본 발명의 일 예에 따른 에지 효과(edge effect)를 설명한다.
도 3은 본 발명의 일 예에 따른 동적(dynamic) 일관적(coherent) 타일 분배를 설명한다.
도 4는 본 발명의 일 예에 따른 동적 일관적 타일 분배의 실행 예를 설명한다.
도 5는 본 발명의 일 실시예에 따른 TDU(120)의 구조도이다.
도 6은 본 발명의 일 실시예에 따른 영상 처리 방법의 흐름도이다.
도 2는 본 발명의 일 예에 따른 에지 효과(edge effect)를 설명한다.
도 3은 본 발명의 일 예에 따른 동적(dynamic) 일관적(coherent) 타일 분배를 설명한다.
도 4는 본 발명의 일 예에 따른 동적 일관적 타일 분배의 실행 예를 설명한다.
도 5는 본 발명의 일 실시예에 따른 TDU(120)의 구조도이다.
도 6은 본 발명의 일 실시예에 따른 영상 처리 방법의 흐름도이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 영상 처리 장치의 구조도이다.
영상 처리 장치는 그래픽 프로세싱 유닛(Graphic Processing Unit; GPU)(100), 시스템 버스(180) 및 외부 메모리(190)를 포함할 수 있다.
GPU(100)는 그래픽 연산을 처리한다. GPU(100)는 그래픽스 하드웨어일 수 있다.
외부 메모리(external memory)(190)는 GPU(100)에게 모델 데이터 등 그래픽 데이터를 제공하며, GPU(100)에 의해 처리된 그래픽 데이터를 제공한다.
시스템 버스(system bus)(180)는 GPU(100) 및 외부 메모리(190) 간의 데이터 전송 버스이다. GPU(100)는 시스템 버스(180)를 통해 외부 메모리(190) 내의 데이터를 독출(read)할 수 있으며, 시스템 버스(180)를 통해 외부 메모리(190)로 데이터를 기입(write)할 수 있다.
GPU(100)는 버텍스(vertex) 프로세서(processor)(110), 타일 디스패치 유닛((Tile Dispatch Unit); TDU)(120) 및 L2(Level 2) 텍스처 캐쉬(texture cache)를 포함할 수 있다.
GPU(100)는 복수 개의 프레그먼트 프로세서들(130, 140 및 150)을 포함할 수 있다. GPU(100)의 n 개의 프레그먼트 프로세서들(130, 140 및 150) 중 제1 프레그먼트 프로세서(130), 제2 프레그먼트 프로세서(140) 및 제n 프레그먼트 프로세서(150)가 도시되었다.
버텍스 프로세서(110)는 모델 데이터(model data)를 로드하여, 로드된 모델 데이터에 대한 기하학적 처리(geometrical processing)를 수행할 수 있다. 버텍스 프로세서(110)는 기하학적 처리를 수행하고, 타일 데이터(즉, 각 타일에 해당하는 버텍스 데이터)를 생성할 수 있다.
버텍스 프로세서(110)는 생성된 타일 데이터를 외부 메모리(190)에 저장할 수 있다.
TDU(120)는 스크린 영역을 구성하는 복수 개의 타일들 각각을 복수 개의 프레그먼트들(130, 140 및 150)에게 분배(dispatch)할 수 있다. 즉, TDU(120)는 특정한 타일을 복수 개의 프레그먼트들(130, 140 및 150) 중 하나의 프로세서에게 할당할 수 있다.
TDU(120)는 기하학 처리가 완료된 타일 데이터를 외부 메모리(190)로부터 독출하여, 독출된 타일 데이터를 프레그먼트 프로세서들(130, 140 및 150)에게 분배할 수 있다. 즉, TDU(120)는 타일 데이터를 상기 타일 데이터를 처리하도록 선택된 프레그먼트 프로세서(130, 140 또는 150)에게 할당할 수 있다.
TDU(120)는 복수 개의 타일들 간에 근접성에 기반하여 결정된 순서에 따라 처리할 타일을 선택할 수 있고, 선택된 타일을 복수 개의 프레그먼트 프로세서들(130, 140 및 150) 중 유휴(idle) 프로세서에게 할당할 수 있다.
TDU(120)에 대해, 도 5를 참조하여 하기에서 상세히 설명된다.
복수 개의 프레그먼트 프로세서들(130, 140 및 150)은 각각 할당된 타일에 대한 타일 렌더링을 수행한다. 복수 개의 프레그먼트 프로세서들(130, 140 및 150)은 상이한 타일들에 대한 타일 렌더링을 병렬로 수행할 수 있다.
복수 개의 프레그먼트 프로세서들(130, 140 및 150)은 각각 하나의 그래픽 코어(core)에 대응할 수 있다. 따라서, GPU(100)(또는, 영상 처리 장치)는 멀티 코어(multi-core)에 기반한 병렬 타일 렌더링 시스템(system)을 나타낼 수 있다.
프레그먼트 프로세서(130, 140 또는 150)는 TDU(120)에 의해 할당된 분배 받은 타일 데이터를 병렬로 처리할 수 있다. 즉, 프레그먼트 프로세서(130, 140 또는 150)는 분배 받은 타일에 대한 렌더링을 수행할 수 있다.
L2 텍스처 캐쉬(170)는 프레그먼트 프로세서(130, 140 또는 150)가 할당 받은 타일에 대한 렌더링을 수행하기 위해 필요한 데이터(예컨대, 텍스처 데이터)를 제공한다.
복수 개의 프레그먼트 프로세서들(130, 140 및 150)은 L2 텍스처 캐쉬(170)를 공유한다. 즉, L2 텍스처 캐쉬(170)는 복수 개의 프레그먼트 프로세서들(130, 140 및 150)들이 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 공유할 수 있게 한다.
즉, 하나의 프레그먼트 프로세서(130, 140 또는 150)가 외부 메모리(190) 내의 특정 텍스처 데이터에 접근함에 따라, 접근된 특정 텍스처 데이터가 L2 텍스처 캐쉬(170) 내에 저장된다. 저장된 특정 텍스처 데이터는 이후 다른 프레그먼트 프로세서(130, 140 또는 150)에 의해 사용될 수 있다.
버텍스 프로세서(110)는 버텍스 로더(loader)(112), 버텍스 쉐이더(shader)(114), 프리미티브 어셈블리(primitive assembly)(116) 및 타일 비닝(binning) 유닛(118)을 포함할 수 있다.
버텍스 로더(112)는 모델 데이터를 GPU(100)로 읽어 올 수 있다.
버텍스 쉐이더(1140)는 모델 데이터에 대한 기하 처리를 수행할 수 있다.
프리미티브 어셈블리(116)는 기하 처리의 수행에 따라 생성된 버텍스들을 프리미티브 타입(type)으로 조합하여 프리미티브(예컨대, 삼각형)를 생성할 수 있다.
타일 비닝 유닛(118)은 생성된 프리미티브에 대한 타일 비닝을 수행하여 타일 데이터를 생성할 수 있고, 생성된 타일 데이터를 외부 메모리(190) 내에 저장할 수 있다.
프레그먼트 프로세서(130, 140 또는 150)는 프레그먼트(fragment) 제네레이터(generator)(132), 프레그먼트 쉐이더(134), L1 텍스처 캐쉬(136) 및 레스터 오퍼레이터(Raster Operator; ROP)(138)를 포함할 수 있다.
프레그먼트 제네레이터(132)는 프리미티브의 내부의 프레그먼트들을 생성할 수 있다.
프레그먼트 쉐이더(134)는 생성된 프레그먼트에 대한 텍스처링 및 컬러링을 수행할 수 있다. 프레그먼트 쉐이더(134)는 텍스처 데이터를 사용하여 프레그먼트에 대한 텍스처 매핑을 수행함으로써 프리미티브 내부에 질감 효과를 줄 수 있다.
프레그먼트 쉐이더(134)는 텍스처 매핑에 필요한 텍스처 데이터를 외부 메모리로부터 읽어 온다. 프레그먼트 쉐이더(134)는 L2 텍스처 캐쉬(170)를 통해 텍스처 데이터를 제공받을 수 있다.
L1 텍스처 캐쉬(146)는 텍스처 데이터를 저장할 수 있다. 즉, 프레그먼트 프로세서(130, 140 또는 150)는 텍스처 데이터를 접근하기 위해 각각 L1 텍스처 캐쉬(146)를 포함할 수 있다. L1 텍스처 캐쉬(146)는 L2 텍스처 캐쉬(170)과는 달리 하나의 프레그먼트 프로세서(130, 140 또는 150)에 의해 사용된다.
레스터 오퍼레이터(138)는 텍스처된 프레그먼트들을 프레임 버퍼로 기입한다.
도 2는 본 발명의 일 예에 따른 에지 효과(edge effect)를 설명한다.
TBL은 스크린 영역(200)(즉, 프레임(frame)을 복수 개의 타일들로 분할한다.
도 2에서, 7 행 및 7 열의 타일들이 스크린 영역(200)을 구성한다.
스크린 영역(200) 내에는 3 개의 객체들(230, 240 및 250)이 있다.
객체(230, 240 또는 250)의 실루엣 에지(silhouette edge) 또는 병렬 태스크(즉, 타일)의 에지 부분에서는 프레그먼트의 연속성이 끝난다. 에지 부분이 증가할수록, 데이터의 재사용성을 활용하는 캐쉬의 활용도(utilization)이 감소한다. 이러한 활용도의 감소는 시스템의 성능에 악영향을 줄 수 있다.
도 2에서 제1 타일(210)의 일부(212) 및 제2 타일(220)의 일부(222)가 확대되었다. 에지(205)는 제1 타일(210) 및 제2 타일(220) 간의 에지이다. 일부(210) 및 일부(220) 내에는 제2 객체(240)의 일부(242)가 있다.
도 2에서, 프레그먼트 쉐이더(134)(또는, 프레그먼트 프로세서(130, 140 또는 150))는 제1 타일(210)에 대한 렌더링을 수행한다.
프레그먼트 쉐이더(134)(또는, 프레그먼트 프로세서(130, 140 또는 150))는 스캔 라인(scan line)에 따라, 타일 내의 삼각형(즉, 제2 객체(240))을 렌더링할 수 있다.
프레그먼트 쉐이더(134)(또는, 프레그먼트 프로세서(130, 140 또는 150))는 에지(205)의 프레그먼트를 처리할 때, 외부 메모리(190)에게 데이터(예컨대, 텍스처 데이터)를 요청한다.
요청된 데이터는 향후의 재사용을 위해 L2 텍스처 캐쉬(170) 및 L1 텍스처 캐쉬(136) 내에 저장된다.
요청된 데이터는 블록(260) 단위로 제공될 수 있다. 블록(260)은 복수 개의 텍셀(texel)들을 포함할 수 있다. 블록(260)은 4 개의 텍셀들(262, 264, 266 및 268)을 포함할 수 있다.
블록(260) 내의 텍셀들(262, 264, 266 및 268) 중 제1 타일(210)과 인접한 제2 타일(220) 내에 있는 텍셀들(266 및 268)은 제1 타일(210)의 렌더링에서는 사용되지 않는다.
즉, 블록(260)이 렌더링이 되는 제1 타일(210) 및 상기 제1 타일(210)과 인접한 제2 타일(220)에 걸쳐 있는 경우, 제2 타일(220) 내에 있는 프레그먼트에 대한 데이터는(예컨대, 텍셀들(266 및 268) 제1 타일(210)의 렌더링을 수행하는 프레그먼트 프로세서(130, 140 또는 150)에 의해 사용되지 않을 수 있다.
경계 영역의 데이터가 많아질수록, 경계 효과에 의해 L1 텍스처 캐쉬(136)의 효율이 악화될 수 있으며, OBR에 비했을 때 더 많은 텍스처 대역폭(bandwidth)를 유발할 수 있다. 따라서, 시스템의 전체 성능에 악영향이 가해질 수 있다.
블록(260)의 데이터가 특정한 프레그먼트 프로세서(130, 140 또는 150)에 의해 사용될 때, 블록(260)의 데이터는 L2 텍스처 캐쉬(170) 내에 저장된다.
블록(260)의 데이터가 L2 텍스처 캐쉬(170)로부터 제거되기 전에, 다른 프레그먼트 프로세서(130, 140 또는 150)가 블록(260)을 사용할 경우, 외부 메모리(190)로의 접근 없이, L2 텍스처 캐쉬(170)로부터 블록(260)의 데이터를 가져올 수 있다.
즉, 블록(260)을 사용하는 제1 타일(210) 및 제2 타일(220) 각각에 대한 렌더링이 병렬로 수행되거나 짧은 시간 간격 내에 수행되면, 블록(260)에 대한 데이터가 한 번만 외부 메모리(190)로부터 L2 텍스처 캐쉬(170)로 이동될 수 있다. 따라서, L2 텍스처 캐쉬(170)의 효율이 증가함으로써 시스템의 전체 성능이 향상될 수 있다.
따라서, 인접한 타일들(예컨대, 제1 타일(210) 및 제2 타일(220)이 병렬로 또는 짧은 시간 간격 내에 프레그먼트 프로세서들(130, 140 및 150)에 의해 처리됨으로써 시스템의 전체 성능이 향상될 수 있다. 따라서, 타일들의 근접성에 기반하여 타일들을 프레그먼트 프로세서들(130, 140 및 150)에게 분배하는 순서가 결정될 필요가 있다.
도 3은 본 발명의 일 예에 따른 동적(dynamic) 일관적(coherent) 타일 분배를 설명한다.
하기에서, 병렬 TBR의 정적(static) 타일 분배 및 동적 타일 분배를 설명한다.
정적 타일 분배는, 복수 개의 타일들 각각을 처리할 프레그먼트 프로세서가 정적으로 결정된 분배 방식이다.
예컨대, 4 개의 프레그먼트 프로세서들이 있는 경우, 제1 프레그먼트 프로세서는 제1 타일, 제5 타일, 제9 타일 등을 처리하고, 제2 프레그먼트 프로세서는 제2 타일, 제6 타일, 제10 타일 등을 처리한다.
타일들의 분배 순서는 근접성을 높이기 위한 패턴(예컨대, 공간 채움 커브(space filling curve) 또는 힐베르트 커브(Hilvert curve))을 이용하여 결정될 수 있다.
근접성을 높이기 위한 패턴에 기반하여 결정된 분배 순서에 따라 타일들이 프레그먼트 프로세서들에게 분배될 수 있다.
예컨대, 제1 타일, 제2 타일, 제8 타일, 제9 타일, 제3 타일, 제4 타일, 제10 타일 및 제11 타일의 순서로 타일들이 분배되면, 제1 프레그먼트 프로세서는 제1 타일 및 제3 타일을 처리하고, 제2 프레그먼트 프로세서는 제2 타일 및 제4 타일을 처리하고, 제3 프레그먼트 프로세서는 제8 타일 및 제10 타일을 처리하고, 제4 프레그먼트 프로세서는 제9 타일 및 제11 타일을 처리한다.
이러한 정적 타일 분배는 타일-대-타일(tile-to-tile)의 근접성(localily)을 높힘으로써 L2 텍스처 캐쉬(170)의 성능을 향상시킬 수 있고, 프레그먼트 쉐이더(134)의 지연(latency)을 감소시킬 수 있다.
일반적으로, 프레그먼트 프로세서에 의해 렌더링이 처리되기에 필요한 시간은 타일 별로 상이하다. 따라서, 타일을 처리할 프레그먼트 프로세서가 정적으로 결정된 경우, 분배된 모든 타일들에 대한 렌더링을 종료한 프레그먼트 프로세서는 유휴 상태가 될 수 있다.
예컨대, 제2 타일 및 제4 타일의 처리 시간이 다른 타일들에 비해 짧을 경우, 제2 프레그먼트 프로세서는 제2 타일 및 제4 타일을 처리한 후, 다른 프레그먼트 프로세서들 타일을 처리하는 동안 유휴 상태에 있을 수 있다.
따라서, 정정 타일 분배가 사용될 경우, 프레그먼트 프로세서의 활용도가 떨어질 수 있으며, 로드 밸런싱(load balancing) 문제가 발생할 수 있고, 시스템의 성능의 확장성에 나쁜 영향이 가해질 수 있다.
동적 타일 분배는, 타일들을 순차적으로 프레그먼트 프로세서들에게 분배하되, 유휴 프레그먼트 프로세서에게 분배되지 않은 다음 타일을 전송하는 방식이다.
예컨대, 우선 4 개의 프레그먼트 프로세서들 각각에게 제1 타일 내지 제2 타일 중 하나의 타일이 분배되고, 4 개의 프레그먼트 프로세서들 중 먼저 분배된 타일을 처리한 프레그먼트 프로세서에게 다음 타일인 제5 타일이 분배된다.
이러한 동적 타일 분배는 프레그먼트 프로세서들의 유휴 시간을 줄임으로써 프레그먼트 프로세서들의 활용도 및 프레그먼트 프로세서들 간의 로드 밸런싱을 향상시킬 수 있다.
그러나, 동적 타일 분배는 타일 처리에 있어서의 근접성을 감소시킬 수 있다. 따라서, L2 텍스처 캐쉬(170)의 성능이 감소될 수 있고, 프레그먼트 쉐이더(134)의 지연을 증가시킬 수 있다.
예컨대, 다른 프레그먼트 프로세서들이 각각 제5 타일(T5), 제6 타일(T6) 및 제7 타일(T7)을 처리하고 있을 때, 유휴 프레그먼트 프로세서에게 제8 타일(T8)이 분배될 경우, 제8 타일 및 다른 타일들(제5 타일, 제6 타일 및 제7 타일) 간의 근접성은 매우 낮다. 따라서, 프레그먼트 프로세서가 제8 타일을 처리함에 있어서, L2 텍스처 캐쉬(170)의 성능은 매우 낮을 수 있다.
하기에서, 동적 일관적 타일 분배를 설명한다.
동적 일관적 타일 분배에서, 복수 개의 타일들 간의 처리 순서(즉, 분배 패턴)는 복수 개의 타일들 간의 근접성에 기반하여 결정될 수 있다. 상기의 처리 순서는 복수 개의 타일의 2 차원 배열 내의 공간 채움 커브 또는 힐베르트 커브에 기반하여 결정될 수 있다.
각 타일을 처리할 프레그먼트 프로세서는 동적으로 결정될 수 있다.
즉, 분배된 타일에 대한 처리를 종료하여, 유휴 상태가 된 프레그먼트 프로세서에게 동적으로 다음 타일이 할당된다.
예컨대, 분배 패턴이 제1 타일(T1), 제2 타일(T2), 제8 타일(T8), 제9 타일(T9), 제3 타일(T3), 제4 타일(T4), 제10 타일(T10) 및 제11 타일(T11)의 순서일 때, 4 개의 프로세서들 각각에게 제1 타일, 제2 타일, 제8 타일 및 제9 타일 중 하나의 타일이 분배된다. 4 개의 프로세서들 중 가장 먼저 분배된 타일을 처리하여 유휴 상태가 된 프로세서에게 다음 순서인 제3 타일이 분배된다. 또한, 다음으로 유휴 상태가 된 프로세서(제3 타일을 분배 받은 프로세서도 포함될 수 있다.)에게 다음 순서인 제4 타일이 분배된다.
유휴 상태의 프로세서에게 타일을 할당하는 것을 동적 분배로 명명한다.
주어진 패턴에 따라 다음 타일을 할당하는 것을 일관적 분배로 명명한다.
도 4는 본 발명의 일 예에 따른 동적 일관적 타일 분배의 실행 예를 설명한다.
도 4의 그래프(400)에서, 가로 축은 하드웨어 가속된(Hardware Accelerated; HWA) 파이프라인(pipeline) 처리를 나타낸다.
도 4의 그래프(400)에서, 세로 축은 각 수행 주체들을 나타낸다.
그래프(400)의 TDU는 TUD(120)의 동작을 나타낼 수 있다.
그래프(400)의 FG는 프레그먼트 제네레이터(132)의 동작을 나타낼 수 있다.
그래프(400)의 SRP0 내지 SPR3은 각각 프레그먼트 쉐이더(134)의 동작을 나타낼 수 있다. SRP0 내지 SRP3은 4 개의 씬(scene) 렌더링(rendering) 프로세서를 나타낼 수 있다.
세로로 배열된 SRP0 내지 SRP3은 복수 개의 프레그먼트 쉐이더들(130, 140 및 150)에 의해 수행되는 멀티-프로세서 병렬처리를 나타낼 수 있다.
그래프(400)의 ROP는 레스터 오퍼레이터(138)의 동작을 나타낼 수 있다.
TDU(120)가 타일들을 분배하고, 프레그먼트 제네레이터(132)가 프레그먼트를 생성하면, 프레그먼트 쉐이더(134)가 프레그먼트에 대한 텍스처링 등을 수행한다.
동적 일관적 타일 분배에 따라, 타일들의 분배는 제1 타일(T1), 제2 타일(T2), 제8 타일(T8), 제9 타일(T9), 제3 타일(T3), 제4 타일(T4), 제10 타일(T10) 및 제11 타일(T11)의 순서로 진행된다.
우선, 제1 타일이 SRP0(예컨대, 제1 프레그먼트 프로세서 또는 제1 프레그먼트 프로세서의 프레그먼트 쉐이더(134))에게 분배된다. 제2 타일은 SRP1(예컨대, 제2 프레그먼트 프로세서 또는 제2 프레그먼트 프로세서의 프레그먼트 쉐이더(134))에게 분배된다. 제8 타일은 SRP2(예컨대, 제3 프레그먼트 프로세서 또는 제3 프레그먼트 프로세서의 프레그먼트 쉐이더(134))에게 분배된다. 제9 타일은 SRP3(예컨대, 제4 프레그먼트 프로세서 또는 제4 프레그먼트 프로세서의 프레그먼트 쉐이더(134))에게 분배된다.
4개의 타일 중 제2 타일에 대한 처리가 제일 먼저 완료된다. 따라서, 제2 타일에 대한 처리를 완료한 SRP1에게 다음 타일인 제3 타일이 분배된다.
제3 타일은 제1 타일, 제2 타일, 제8 타일 밑 제9 타일과 상대적으로 높은 근접성을 갖는다. 따라서, SRP1이 제3 타일을 처리함에 있어서, L2 텍스처 캐쉬(170)의 활용도가 높을 수 있다. 또한, SRP1의 유휴 시간이 최소화된다.
다음으로, 제1 타일의 처리를 완료한 SPR0에게 다음 순서인 제4 타일이 분배된다.
다음으로, 제9 타일의 처리를 완료한 SPR3에게 다음 순서인 제10 타일이 분배된다.
다음으로, 제8 타일의 처리를 완료한 SPR2에게 다음 순서인 제11 타일이 분배된다.
프레그먼트 프로세서에게 분배된 타일은, 상기 프레그먼트 프로세서에 의해 이전에 처리된 타일 및 다른 프레그먼트 프로세서들에 의해 병렬로 처리되는 타일들과 높은 근접성을 갖는다.
따라서, 동적 일관적 타일 분배에 의해, 타일-대-타일의 근접성이 확보될 수 있다.
또한, 동적 일관적 타일 분배에 의해, 프레그먼트 프로세서들의 활용도가 향상될 수 있다. 즉, 짧은 지연시간을 갖는 프레그먼트 쉐이더들이 로드 밸런싱되어 동작할 수 있다.
또한, 동적 일관적 타일 분배에 의해, L2 텍스처 캐쉬(17)의 활용도가 향상됨으로써 LBR의 문제점인 텍스처 대역폭의 증가가 완화될 수 있다.
따라서, 동적 일관적 타일 분배는 OBR에 비해 더 적은 레스터 오퍼레이터 대역폭을 가질 수 있으며, OBR과 비슷한 수준의 텍스처 대역폭을 가질 수 있다.
도 5는 본 발명의 일 실시예에 따른 TDU(120)의 구조도이다.
TDU(120)는 타일 선택부(510), 타일 패치부(520), 프로세서 상태 검사부(530) 및 타일 전송부(540)를 포함할 수 있다.
타일 선택부(510)는 복수 개의 타일들 간의 근접성에 기반하여 복수 개의 타일들 간의 순서를 결정할 수 있다.
상기의 순서는 복수 개의 타일의 2 차원 배열 내의 공간 채움 커브 또는 힐베르트 커브에 기반하여 결정될 수 있다.
타일 선택부(510)는 결정된 순서에 따라 다음으로 처리될 타일을 선택할 수 있다.
타일 선택부(510)는 주어진 패턴(즉, 복수 개의 타일들 간의 순서)에 기반하여, 전송(즉, 분배 또는 할당)이 예정된 다음 타일의 좌표 위치를 계산할 수 있다. 예컨대, 패턴에 따른 다음 타일이 제3 타일일 경우, 타일 선택부(510)는 제3 타일의 좌표 위치(예컨대, 제3 타일의 행 및 열)을 계산할 수 있다.
프로세서 상태 검사부(530)는 복수 개의 프레그먼트 프로세서들(130, 140 및 150) 중 유후 프레그먼트 프로세서들을 검사할 수 있다.
타일 패치부(520)는 유휴 프레그먼트 프로세서에게 선택된 타일(즉, 다음으로 처리할 타일)을 할당할 수 있다.
유휴 프레그먼트 프로세서가 복수 개일 경우, 타일 패치부(520) 또는 프로세서 상태 검사부(530)에 의해, 유휴 프레그먼트 프로세서들 중 하나의 프레그먼트 프로세서가 타일을 할당 받을 프레그먼트 프로세서로서 선택될 수 있다.
유휴 프레그먼트 프로세서들은 복수 개의 프레그먼트 프로세서들(130, 140 및 150) 중 타일에 대한 처리를 완료하고 유휴 상태에 있는 프로세서들일 수 있다.
타일 패치부(520)는 선택된 프레그먼트 프로세서에게 선택된 타일(즉, 다음으로 처리할 타일)을 할당할 수 있다.
타일 패치부(520)는 외부 메모리(190)로부터 선택된 타일의 타일 데이터를 패치(patch)해올 수 있다.
타일 전송부(540)는 선택된 프레그먼트 프로세서에게 선택된 타일의 타일 데이터를 전송할 수 있다.
타일 데이터를 전송 받은 프레그먼트 프로세서는, 전송 받은 타일에 대한 렌더링을 수행한다.
타일 선택부(510), 타일 패치부(520), 프로세서 상태 검사부(530) 및 타일 전송부(540)는 복수 개의 타일들 모두가 각각 복수 개의 프레그먼트 프로세서들(130, 140 및 150) 중 하나의 프레그먼트 프로세서에게 분배할 때까지 동작을 반복할 수 있다.
앞서 도 1 내지 도 4를 참조하여 설명된 본 발명의 일 실시예에 따른 기술적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
도 6은 본 발명의 일 실시예에 따른 영상 처리 방법의 흐름도이다.
동작(610)에서, 예컨대 타일 선택부(510)에 의해, 복수 개의 타일들 간의 근접성에 기반하여 복수 개의 타일들 간의 순서가 결정될 수 있다.
동작(620)에서, 예컨대 타일 선택부(510)에 의해, 결정된 순서에 따라 다음으로 처리될 타일이 선택될 수 있다.
동작(630)에서, 예컨대 프로세서 상태 검사부(530)에 의해, 복수 개의 프레그먼트 프로세서들(130, 140 및 150)들의 상태가 검사된다. 즉, 복수 개의 프레그먼트 프로세서들(130, 140 및 150)들 각각이 유휴 상태인지 여부가 검사된다.
동작(640)에서, 예컨대 프로세서 상태 검사부(530) 또는 타일 패치부(520)에 의해, 유휴 프레그먼트 프로세서가 존재하는지 여부가 판단된다.
유휴 프레그먼트 프로세서가 없는 경우, 단계(630)이 반복된다. 이 때, 단계(630)이 반복되기 전에 일정 시간이 지연(delay)될 수 있다.
유휴 프레그먼트 프로세서가 있는 경우, 단계(650)이 수행될 수 있다.
단계(650)에서, 예컨대 타일 패치부(520)에 의해, 유휴 프레그먼트에게 선택된 타일이 할당될 수 있다.
유휴 프레그먼트 프로세서가 복수 개인 경우, 단계(650) 또는 단계(630)에서 복수 개의 유휴 프레그먼트 프로세서들 중 하나의 프레그먼트 프로세서가 선택된 타일을 할당 받을 프레그먼트 프로세서로 선택될 수 있다.
단계(650)에서, 예컨대 타일 패치부(520)에 의해 외부 메모리(190)로부터 선택된 타일의 타일 데이터가 패치될 수 있다.
단계(660)에서, 예컨대 타일 전송부(540)에 의해, 타일이 할당된 프레그먼트 프로세서에게 타일 데이터가 전송된다.
단계(670)에서, 타일이 할당된 프레그먼트 프로세서는 선택된 타일에 대한 렌더링을 수행한다.
단계(670)은 복수 개의 프레그먼트 프로세서들(130, 140 및 150)에 의해 병렬로 수행될 수 있다.
복수 개의 프레그먼트 프로세서들(130, 140 및 150)은 공유된 L2 텍스처 캐쉬(180)를 통해 자신에게 분배된 선택된 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 접근할 수 있다.
선택된 프레그먼트 프로세서는 복수 개의 텍셀들을 포함하는 블록을 통해 선택된 타일의 텍스처 데이터를 패치할 수 있다.
단계(680)에서, 예컨대 타일 선택부(510) 또는 타일 디스패치 유닛(120)에 의해 남은 타일이 있는지 여부가 검사된다.
남은 타일이 없는 경우 절차가 종료하고, 남은 타일이 있는 경우 단계(620)의 수행이 반복된다.
앞서 도 1 내지 도 5를 참조하여 설명된 본 발명의 일 실시예에 따른 기술적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
110: GPU
110: 버텍스 프로세서
120: 타일 디스패치 유닛
130: 제1 프레그먼트 프로세서
140: 제2 프레그먼트 프로세서
150: 제n 프레그먼트 프로세서
170: L2 텍스처 캐쉬
180: 시스템 버스
190: 외부 메모리
110: 버텍스 프로세서
120: 타일 디스패치 유닛
130: 제1 프레그먼트 프로세서
140: 제2 프레그먼트 프로세서
150: 제n 프레그먼트 프로세서
170: L2 텍스처 캐쉬
180: 시스템 버스
190: 외부 메모리
Claims (17)
- 복수 개의 프레그먼트 프로세서들을 포함하는 그래픽 프로세싱 유닛이 영상을 처리하는 방법에 있어서,
복수 개의 타일들 간의 근접성에 기반하여 상기 복수 개의 타일들 간의 순서를 결정하는 단계;
상기 결정된 순서에 따라 처리할 타일을 선택하는 단계;
상기 복수 개의 프레그먼트 프로세서들 중 유후 프레그먼트에게 상기 선택된 타일을 할당하는 단계; 및
상기 타일이 할당된 프레그먼트 프로세서가 상기 선택된 타일에 대한 렌더링을 수행하는 단계
를 포함하는, 영상 처리 방법. - 제1항에 있어서,
상기 순서는 상기 복수 개의 타일의 2 차원 배열 내의 공간 채움 커브 또는 힐베르트 커브에 기반하여 결정되는, 영상 처리 방법. - 제1항에 있어서,
상기 타일이 할당된 프레그먼트 프로세서가 상기 선택된 타일에 대한 렌더링을 수행하는 단계는, 상기 복수 개의 프레그먼트 프로세서들에 의해 병렬로 수행되는, 영상 처리 방법. - 제1항에 있어서,
상기 복수 개의 프레그먼트 프로세서들은 공유된 캐쉬를 통해 상기 선택된 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 접근하는, 영상 처리 방법. - 제1항에 있어서,
상기 선택된 프레그먼트 프로세서는 복수 개의 텍셀들을 포함하는 블록을 통해 상기 선택된 타일의 텍스처 데이터를 패치하는, 영상 처리 방법. - 제1항 내지 제5항 중 어느 한 항의 영상 처리 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
- 할당된 타일에 대한 렌더링을 수행하는 복수 개의 프레그먼트 프로세서들; 및
복수 개의 타일들 간의 근접성에 기반하여 결정된 순서에 따라 처리할 타일을 선택하고, 선택된 타일을 상기 복수 개의 프레그먼트 프로세서들 중 유휴 프로세서에게 할당하는 타일 디스패치 유닛
을 포함하는, 영상 처리 장치. - 제7항에 있어서,
상기 순서는 상기 복수 개의 타일의 2 차원 배열 내의 공간 필링 커브 또는 힐베르트 커브에 기반하여 결정되는, 영상 처리 장치. - 제7항에 있어서,
상기 복수 개의 프레그먼트 프로세서들은 상이한 타일들에 대한 타일 렌더링을 병렬로 수행하는, 영상 처리 장치, - 제7항에 있어서,
모델 데이터에 대한 기하학적 처리를 수행하고, 타일 데이터를 생성하는, 버텍스 프로세서
를 더 포함하는, 영상 처리 장치. - 제7항에 있어서,
상기 선택된 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 제공하는 캐쉬
를 더 포함하고, 상기 복수 개의 프레그먼트 프로세서들은 상기 캐쉬를 공유하는, 영상 처리 장치. - 제7항에 있어서,
상기 선택된 프레그먼트 프로세서는 복수 개의 텍셀들을 포함하는 블록을 통해 상기 할당된 타일의 텍스처 데이터를 패치하는, 영상 처리 장치. - 복수 개의 타일들 간의 근접성에 기반하여 상기 복수 개의 타일들 간의 순서를 결정하고, 상기 순서에 따라 다음으로 처리될 타일을 선택하는 타일 선택부;
복수 개의 프레그먼트 프로세서들 중 유휴 프레그먼트에게 상기 선택된 타일을 할당하는 타일 패치부; 및
상기 타일이 할당된 프레그먼트 프로세서에게 상기 선택된 타일의 타일 데이터를 전송하는 타일 전송부
를 포함하는, 타일 디스패치 유닛. - 제13항에 있어서,
상기 순서는 상기 복수 개의 타일의 2 차원 배열 내의 공간 채움 커브 또는 힐베르트 커브에 기반하여 결정되는, 타일 디스패치 유닛. - 제13항에 있어서,
상기 복수 개의 프레그먼트 프로세서들 중 상기 유후 프레그먼트 프로세서들을 검사하는 프로세서 상태 검사부
를 더 포함하는, 타일 디스패치 유닛. - 제13항에 있어서,
상기 타일 패치부는 외부 메모리로부터 상기 선택된 타일의 상기 타일 데이터를 패치해오는, 타일 디스패치 유닛. - 제13항에 있어서,
상기 타일 선택부, 상기 타일 패치부 및 상기 타일 전송부는 상기 복수 개의 타일들 모두가 각각 상기 복수 개의 프레그먼트 프로세서들 중 하나의 프레그먼트 프로세서에게 할당될 때까지 동작을 반복하는, 타일 디스패치 유닛.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110059010A KR101799978B1 (ko) | 2011-06-17 | 2011-06-17 | 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 |
US13/452,095 US9514506B2 (en) | 2011-06-17 | 2012-04-20 | Method and apparatus for tile based rendering using tile-to-tile locality |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110059010A KR101799978B1 (ko) | 2011-06-17 | 2011-06-17 | 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120139284A true KR20120139284A (ko) | 2012-12-27 |
KR101799978B1 KR101799978B1 (ko) | 2017-11-22 |
Family
ID=47353331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110059010A KR101799978B1 (ko) | 2011-06-17 | 2011-06-17 | 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9514506B2 (ko) |
KR (1) | KR101799978B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160122496A (ko) * | 2015-04-14 | 2016-10-24 | 삼성전자주식회사 | 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. |
KR20180055446A (ko) * | 2016-11-17 | 2018-05-25 | 삼성전자주식회사 | 타일 기반 렌더링 방법 및 장치 |
CN112100822A (zh) * | 2020-08-26 | 2020-12-18 | 中国人民解放军63856部队 | 典型破片杀伤战斗部威力评估系统 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9760964B2 (en) | 2013-04-11 | 2017-09-12 | Facebook, Inc. | Application-tailored object re-use and recycling |
US9207986B2 (en) | 2013-04-11 | 2015-12-08 | Facebook, Inc. | Identifying a next window of idle time to perform pre-generation tasks of content portions outside of the displayable region stored in a message queue |
US10126903B2 (en) | 2013-04-15 | 2018-11-13 | Facebook, Inc. | Application-tailored object pre-inflation |
US10438312B2 (en) * | 2014-04-05 | 2019-10-08 | Sony Interactive Entertainment LLC | Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters |
US9842428B2 (en) * | 2014-06-27 | 2017-12-12 | Samsung Electronics Co., Ltd. | Dynamically optimized deferred rendering pipeline |
US9978171B2 (en) * | 2014-07-29 | 2018-05-22 | Nvidia Corporation | Control of a sample mask from a fragment shader program |
KR20160047317A (ko) * | 2014-10-22 | 2016-05-02 | 삼성전자주식회사 | 하이브리드 렌더링 장치 및 방법 |
US10163180B2 (en) * | 2015-04-29 | 2018-12-25 | Qualcomm Incorporated | Adaptive memory address scanning based on surface format for graphics processing |
US9300737B1 (en) | 2015-06-02 | 2016-03-29 | Mylio, LLC | Object replication using object device links and flags |
US9286657B1 (en) | 2015-06-25 | 2016-03-15 | Mylio, LLC | Efficient image processing using dynamically sized tiles |
GB2559042B (en) * | 2015-12-21 | 2019-06-05 | Imagination Tech Ltd | Allocation of tiles to processing engines in a graphics processing system |
GB2570743B (en) | 2018-06-29 | 2021-06-23 | Imagination Tech Ltd | Tile assignment to processing cores within a graphics processing unit |
US20230195626A1 (en) * | 2021-12-21 | 2023-06-22 | Advanced Micro Devices, Inc. | Variable dispatch walk for successive cache accesses |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4448210B2 (ja) | 1998-07-30 | 2010-04-07 | ヒューレット・パッカード・カンパニー | 3次元画像レンダリング装置及び方法 |
US6658449B1 (en) * | 2000-02-17 | 2003-12-02 | International Business Machines Corporation | Apparatus and method for periodic load balancing in a multiple run queue system |
US6433789B1 (en) * | 2000-02-18 | 2002-08-13 | Neomagic Corp. | Steaming prefetching texture cache for level of detail maps in a 3D-graphics engine |
WO2005116930A1 (en) | 2004-05-24 | 2005-12-08 | Koninklijke Philips Electronics N.V. | Tile based graphics rendering |
US20060143384A1 (en) * | 2004-12-27 | 2006-06-29 | Hughes Christopher J | System and method for non-uniform cache in a multi-core processor |
US7728841B1 (en) | 2005-12-19 | 2010-06-01 | Nvidia Corporation | Coherent shader output for multiple targets |
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
JP4637199B2 (ja) | 2008-03-28 | 2011-02-23 | 株式会社コナミデジタルエンタテインメント | 画像処理装置、画像処理方法、ならびに、プログラム |
US8908763B2 (en) | 2008-06-25 | 2014-12-09 | Qualcomm Incorporated | Fragmented reference in temporal compression for video coding |
US8593466B2 (en) | 2010-06-08 | 2013-11-26 | Intel Corporation | Tile rendering for image processing |
US8612781B2 (en) * | 2010-12-14 | 2013-12-17 | Advanced Micro Devices, Inc. | Method and apparatus for application of power density multipliers optimally in a multicore system |
-
2011
- 2011-06-17 KR KR1020110059010A patent/KR101799978B1/ko active IP Right Grant
-
2012
- 2012-04-20 US US13/452,095 patent/US9514506B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160122496A (ko) * | 2015-04-14 | 2016-10-24 | 삼성전자주식회사 | 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치. |
KR20180055446A (ko) * | 2016-11-17 | 2018-05-25 | 삼성전자주식회사 | 타일 기반 렌더링 방법 및 장치 |
CN112100822A (zh) * | 2020-08-26 | 2020-12-18 | 中国人民解放军63856部队 | 典型破片杀伤战斗部威力评估系统 |
Also Published As
Publication number | Publication date |
---|---|
KR101799978B1 (ko) | 2017-11-22 |
US9514506B2 (en) | 2016-12-06 |
US20120320069A1 (en) | 2012-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101799978B1 (ko) | 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 | |
JP6294565B2 (ja) | グラフィックス処理において使用するためのシェーダプログラム実行技法 | |
JP4489806B2 (ja) | スケーラブルシェーダアーキテクチャ | |
EP2791910B1 (en) | Graphics processing unit with command processor | |
US9633469B2 (en) | Conservative rasterization of primitives using an error term | |
US9177413B2 (en) | Unique primitive identifier generation | |
KR20130123645A (ko) | 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법 | |
EP2734923B1 (en) | Synchronization of shader operation | |
US9224227B2 (en) | Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader | |
US10235799B2 (en) | Variable rate deferred passes in graphics rendering | |
US9286647B2 (en) | Pixel shader bypass for low power graphics rendering | |
US20110043518A1 (en) | Techniques to store and retrieve image data | |
JP2017527898A (ja) | 適応的シェーディングによるテクスチャルックアップを使用した帯域幅低減 | |
US8212825B1 (en) | System and method for geometry shading | |
KR102545176B1 (ko) | 레지스터 관리 방법 및 장치 | |
CN105122310A (zh) | 用于基于瓦片的渲染的帧内时戳 | |
JP2016085729A (ja) | キャッシュメモリ・システム及びその動作方法 | |
JP2018529168A (ja) | 帯域幅圧縮グラフィックスデータの記憶 | |
CN103871019A (zh) | 优化三角形拓扑用于路径渲染 | |
US10192348B2 (en) | Method and apparatus for processing texture | |
US10262391B2 (en) | Graphics processing devices and graphics processing methods | |
US20220309606A1 (en) | Dynamically reconfigurable register file | |
US20240104685A1 (en) | Device and method of implementing subpass interleaving of tiled image rendering | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
KR20220112710A (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 |