KR20120139284A - 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 - Google Patents

타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 Download PDF

Info

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
Application number
KR1020110059010A
Other languages
English (en)
Other versions
KR101799978B1 (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 KR1020110059010A priority Critical patent/KR101799978B1/ko
Priority to US13/452,095 priority patent/US9514506B2/en
Publication of KR20120139284A publication Critical patent/KR20120139284A/ko
Application granted granted Critical
Publication of KR101799978B1 publication Critical patent/KR101799978B1/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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

타일 기반 렌더링을 수행하기 위한 방법 및 장치가 제공된다. 타일들 간의 근접성에 기반하여 타일들의 처리 순서가 결정된다. 타일 디스패치 유닛은 결정된 순서에 따라 다음으로 분배할 타일을 선택한다. 타일 디스패치 유닛은 프레그먼트 프로세서들 중 유휴 프레그먼트 프로세서를 검사하며, 유휴 프레그먼트 프로세서에게 동적으로 선택된 타일을 분배한다.

Description

타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치{METHOD AND APPARATUS FOR TILE BASED RENDERING USING TILE-TO-TILE LOCALITY}
아래의 실시예들은 렌더링 방법 및 장치에 관한 것이다.
멀티 코어를 사용한 타일 기반 렌더링을 수행하는 방법 및 장치가 개시된다.
영상(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은 본 발명의 일 실시예에 따른 영상 처리 방법의 흐름도이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 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: 외부 메모리

Claims (17)

  1. 복수 개의 프레그먼트 프로세서들을 포함하는 그래픽 프로세싱 유닛이 영상을 처리하는 방법에 있어서,
    복수 개의 타일들 간의 근접성에 기반하여 상기 복수 개의 타일들 간의 순서를 결정하는 단계;
    상기 결정된 순서에 따라 처리할 타일을 선택하는 단계;
    상기 복수 개의 프레그먼트 프로세서들 중 유후 프레그먼트에게 상기 선택된 타일을 할당하는 단계; 및
    상기 타일이 할당된 프레그먼트 프로세서가 상기 선택된 타일에 대한 렌더링을 수행하는 단계
    를 포함하는, 영상 처리 방법.
  2. 제1항에 있어서,
    상기 순서는 상기 복수 개의 타일의 2 차원 배열 내의 공간 채움 커브 또는 힐베르트 커브에 기반하여 결정되는, 영상 처리 방법.
  3. 제1항에 있어서,
    상기 타일이 할당된 프레그먼트 프로세서가 상기 선택된 타일에 대한 렌더링을 수행하는 단계는, 상기 복수 개의 프레그먼트 프로세서들에 의해 병렬로 수행되는, 영상 처리 방법.
  4. 제1항에 있어서,
    상기 복수 개의 프레그먼트 프로세서들은 공유된 캐쉬를 통해 상기 선택된 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 접근하는, 영상 처리 방법.
  5. 제1항에 있어서,
    상기 선택된 프레그먼트 프로세서는 복수 개의 텍셀들을 포함하는 블록을 통해 상기 선택된 타일의 텍스처 데이터를 패치하는, 영상 처리 방법.
  6. 제1항 내지 제5항 중 어느 한 항의 영상 처리 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
  7. 할당된 타일에 대한 렌더링을 수행하는 복수 개의 프레그먼트 프로세서들; 및
    복수 개의 타일들 간의 근접성에 기반하여 결정된 순서에 따라 처리할 타일을 선택하고, 선택된 타일을 상기 복수 개의 프레그먼트 프로세서들 중 유휴 프로세서에게 할당하는 타일 디스패치 유닛
    을 포함하는, 영상 처리 장치.
  8. 제7항에 있어서,
    상기 순서는 상기 복수 개의 타일의 2 차원 배열 내의 공간 필링 커브 또는 힐베르트 커브에 기반하여 결정되는, 영상 처리 장치.
  9. 제7항에 있어서,
    상기 복수 개의 프레그먼트 프로세서들은 상이한 타일들에 대한 타일 렌더링을 병렬로 수행하는, 영상 처리 장치,
  10. 제7항에 있어서,
    모델 데이터에 대한 기하학적 처리를 수행하고, 타일 데이터를 생성하는, 버텍스 프로세서
    를 더 포함하는, 영상 처리 장치.
  11. 제7항에 있어서,
    상기 선택된 타일에 대한 렌더링을 수행하기 위해 필요한 데이터를 제공하는 캐쉬
    를 더 포함하고, 상기 복수 개의 프레그먼트 프로세서들은 상기 캐쉬를 공유하는, 영상 처리 장치.
  12. 제7항에 있어서,
    상기 선택된 프레그먼트 프로세서는 복수 개의 텍셀들을 포함하는 블록을 통해 상기 할당된 타일의 텍스처 데이터를 패치하는, 영상 처리 장치.
  13. 복수 개의 타일들 간의 근접성에 기반하여 상기 복수 개의 타일들 간의 순서를 결정하고, 상기 순서에 따라 다음으로 처리될 타일을 선택하는 타일 선택부;
    복수 개의 프레그먼트 프로세서들 중 유휴 프레그먼트에게 상기 선택된 타일을 할당하는 타일 패치부; 및
    상기 타일이 할당된 프레그먼트 프로세서에게 상기 선택된 타일의 타일 데이터를 전송하는 타일 전송부
    를 포함하는, 타일 디스패치 유닛.
  14. 제13항에 있어서,
    상기 순서는 상기 복수 개의 타일의 2 차원 배열 내의 공간 채움 커브 또는 힐베르트 커브에 기반하여 결정되는, 타일 디스패치 유닛.
  15. 제13항에 있어서,
    상기 복수 개의 프레그먼트 프로세서들 중 상기 유후 프레그먼트 프로세서들을 검사하는 프로세서 상태 검사부
    를 더 포함하는, 타일 디스패치 유닛.
  16. 제13항에 있어서,
    상기 타일 패치부는 외부 메모리로부터 상기 선택된 타일의 상기 타일 데이터를 패치해오는, 타일 디스패치 유닛.
  17. 제13항에 있어서,
    상기 타일 선택부, 상기 타일 패치부 및 상기 타일 전송부는 상기 복수 개의 타일들 모두가 각각 상기 복수 개의 프레그먼트 프로세서들 중 하나의 프레그먼트 프로세서에게 할당될 때까지 동작을 반복하는, 타일 디스패치 유닛.
KR1020110059010A 2011-06-17 2011-06-17 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 KR101799978B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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