KR20180056316A - 타일-기반 렌더링을 수행하는 방법 및 장치 - Google Patents

타일-기반 렌더링을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20180056316A
KR20180056316A KR1020160154451A KR20160154451A KR20180056316A KR 20180056316 A KR20180056316 A KR 20180056316A KR 1020160154451 A KR1020160154451 A KR 1020160154451A KR 20160154451 A KR20160154451 A KR 20160154451A KR 20180056316 A KR20180056316 A KR 20180056316A
Authority
KR
South Korea
Prior art keywords
tile
initial
primitive
rendering
size
Prior art date
Application number
KR1020160154451A
Other languages
English (en)
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 KR1020160154451A priority Critical patent/KR20180056316A/ko
Priority to US15/606,849 priority patent/US20180144538A1/en
Publication of KR20180056316A publication Critical patent/KR20180056316A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume 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
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법을 제공한다. 초기 사이즈의 초기 타일들로 타일 비닝(tile binning)을 수행함으로써, 타일 비닝의 결과를 나타내는 비트스트림(bitstream)을 생성하고, 생성된 비트스트림을 이용하여 초기 타일에 속한 프리미티브가 초기 타일 주변의 다른 초기 타일에 속하는지 여부를 판단하고, 판단 결과에 기초하여 프리미티브가 속한 적어도 하나의 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정하고, 결정된 렌더링 타일 단위로 결정된 렌더링 타일에 포함된 프리미티브에 대한 렌더링을 수행하는, 방법이 제공된다.

Description

타일-기반 렌더링을 수행하는 방법 및 장치{METHOD AND APPARATUS FOR PERFORMING TILE-BASED RENDERING}
본 개시는 타일-기반 렌더링을 수행하는 방법 및 장치를 제공한다.
렌더링 시스템은 컨텐츠의 디스플레이를 위한 그래픽스 프로세싱 기능을 갖는 장치로서, PC (personal computers), 노트북, 비디오 게임용 콘솔뿐만 아니라, 스마트폰, 태블릿 디바이스, 웨어러블 디바이스와 같은 임베디드(embedded) 디바이스들도 포함될 수 있다. 일반적으로, 렌더링 시스템에 포함되는 그래픽 프로세싱 장치는 2차원 또는 3차원 객체들에 해당되는 그래픽스 데이터를 2차원 픽셀 표현으로 변환하여 디스플레이를 위한 프레임을 생성한다.
한편, 스마트폰, 태블릿 디바이스, 웨어러블 디바이스 등과 같은 임베디드 디바이스들은 비교적 낮은 연산 처리 능력과 많은 전력 소모의 문제들로 인하여, 충분한 메모리 공간과 프로세싱 파워를 확보하고 있는 PC, 노트북, 비디오 게임용 콘솔 등과 같은 워크스테이션들과 동일한 그래픽 프로세싱 성능을 갖추기 어렵다. 하지만, 최근 전세계적으로 스마트폰 또는 태블릿 디바이스와 같은 휴대용 디바이스들이 널리 보급됨에 따라 사용자들이 스마트폰 또는 태블릿 디바이스를 통해 게임을 플레이하거나 또는 영화, 드라마 등의 컨텐츠를 감상하는 빈도가 급격히 증가하였다. 이에 따라, 그래픽 프로세싱 장치의 제조사들은 사용자들의 수요에 발맞추어 임베디드 디바이스에서도 그래픽 프로세싱 장치의 성능 및 처리 효율을 높이기 위한 많은 연구들을 진행하고 있다.
타일-기반 렌더링을 수행하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면은, 초기 사이즈의 초기 타일들로 타일 비닝(tile binning)을 수행함으로써, 상기 타일 비닝의 결과를 나타내는 비트스트림(bitstream)을 생성하는 단계; 상기 생성된 비트스트림을 이용하여 상기 초기 타일에 속한 프리미티브가 상기 초기 타일 주변의 다른 초기 타일에 속하는지 여부를 판단하는 단계; 상기 판단 결과에 기초하여 상기 프리미티브가 속한 적어도 하나의 상기 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정하는 단계; 및 상기 결정된 렌더링 타일 단위로, 상기 결정된 렌더링 타일에 포함된 상기 프리미티브에 대한 렌더링을 수행하는 단계;를 포함하는 그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법을 제공할 수 있다.
또한, 본 개시의 제 2 측면은, 프리미티브들에 대한 정보가 저장된 외부 메모리; 및 초기 사이즈의 초기 타일들로 타일 비닝을 수행함으로써 상기 타일 비닝의 결과를 나타내는 비트스트림을 생성하고, 상기 생성된 비트스트림을 이용하여 상기 초기 타일에 속한 프리미티브가 상기 초기 타일 주변의 다른 초기 타일에 속하는지 여부를 판단하고, 상기 판단 결과에 기초하여 상기 프리미티브가 속한 적어도 하나의 상기 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정하고, 상기 결정된 렌더링 타일 단위로 상기 결정된 렌더링 타일에 포함된 상기 프리미티브에 대한 렌더링을 수행하는 적어도 하나의 프로세서;를 포함하는 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치를 제공할 수 있다.
또한, 본 개시의 제 3 측면은, 제 1 측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
도 1은 일 실시예에 따른 타일-기반 렌더링을 수행하는 컴퓨팅 장치를 설명하는 블록도이다.
도 2는 일 실시예에 따른 타일-기반 렌더링을 수행하는 그래픽스 파이프라인을 설명하는 도면이다.
도 3은 일 실시예에 따른 프레임을 분할하는 타일의 예시를 설명하는 도면이다.
도 4는 일 실시예에 따른 그래픽스 파이프라인 처리부에서 프리미티브에 대한 정보를 이용하는 예시를 설명하는 도면이다.
도 5는 일 실시예에 따른 타일-기반 렌더링을 수행하는 GPU의 타일 사이즈 결정부를 설명하는 도면이다.
도 6은 일 실시예에 따른 렌더링된 프리미티브를 외부 메모리에 저장하는 예시를 설명하는 도면이다.
도 7을 일 실시예에 따른 타일 사이즈 결정부를 포함하는 GPU에서 수행되는 타일-기반 렌더링의 예시를 설명하는 도면이다.
도 8은 일 실시예에 따른 프리미티브에 대한 정보가 저장된 비트스트림의 예시를 설명하는 도면이다.
도 9는 일 실시예에 따른 렌더링 타일 단위에 대응하는 동적 사이즈를 결정하는 예시를 설명하는 도면이다.
도 10은 일 실시예에 따른 GPU에서 타일-기반 렌더링을 수행하는 방법을 설명하는 흐름도이다.
도 11은 일 실시예에 따른 타일 사이즈 결정부에서 타일 사이즈를 결정하는 방법을 설명하는 흐름도이다.
실시 예들에서 사용되는 용어는 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
본 실시예들에서 사용되는 “구성된다” 또는 “포함한다” 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 “제 1” 또는 “제 2” 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 실시예들을 상세히 설명한다.
도 1은 일 실시예에 따른 타일-기반 렌더링을 수행하는 컴퓨팅 장치를 설명하는 블록도이다.
도 1을 참조하면, 컴퓨팅 장치(100)는 GPU (Graphic Processing Unit)(10), CPU (Central Processing Unit)(20) 및 외부 메모리(30)를 포함한다. 도 1에 도시된 컴퓨팅 장치(100)에는 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
컴퓨팅 장치(100)는 데스크탑 컴퓨터, 노트북 컴퓨터, 스마트폰, PDA (personal digital assistants), 휴대형 미디어 플레이어, 비디오 게임용 콘솔, 텔레비젼 셋탑 박스, 태블릿 디바이스, 이북 리더, 웨어러블 디바이스 등을 예로 들 수 있지만, 이에 제한되지 않는다. 즉, 컴퓨팅 장치(100)는 컨텐츠의 디스플레이를 위한 그래픽스 프로세싱 기능을 갖는 장치로서, 컴퓨팅 장치(100)의 범주에는 다양한 장치들이 포함될 수 있다.
CPU(20)는 컴퓨팅 장치(100)의 전반적인 동작들 및 기능들을 제어하는 하드웨어이다. 예를 들어, CPU(20)는 운영체제(Operating System, OS)를 구동하고, GPU(10)를 위한 그래픽스 API(Application Programming Interface)를 호출하고, GPU(10)의 드라이버를 실행시킬 수 있다. 또한, CPU(20)는 메모리(30)에 저장된 다양한 애플리케이션들, 예를 들어 웹 브라우징 애플리케이션, 게임 애플리케이션, 비디오 애플리케이션 등을 실행할 수 있다.
GPU(10)는 OpenGL (Open Graphic(s) Library), DirectX, CUDA(Compute Unified Device Architecture) 등과 같은 다양한 버전들, 종류들의 그래픽스 파이프라인(graphics pipeline)을 수행하는 그래픽 전용 프로세서로서, 3차원 이미지 상의 3차원 객체들을 디스플레이용의 2차원 이미지로 렌더링하기 위해 3차원 그래픽스 파이프라인을 실행하도록 구현된 하드웨어일 수 있다. 예를 들면, GPU(10)는 쉐이딩, 블렌딩, 일루미네이팅과 같은 다양한 기능들 및 디스플레이될 픽셀들에 대한 픽셀 값들을 생성하기 위한 다양한 기능들을 수행할 수도 있다.
GPU(10)는 타일 기반(tile-based) 그래픽스 파이프라인 또는 타일 기반 렌더링(tile-based rendering, TBR)을 수행할 수 있다. 타일 기반이라는 용어는, 동영상의 각 프레임을 복수의 타일들로 구분한(divide 또는 partitioning) 후, 타일 단위로 렌더링을 수행하는 것을 의미한다. 타일 기반의 아키텍쳐는, 픽셀 단위로 프레임을 처리할 때보다 연산량이 적어질 수 있기 때문에, 스마트폰, 태블릿 디바이스와 같이 비교적 처리 성능이 낮은 모바일 디바이스(또는 임베디드 디바이스)에서 사용하는 그래픽스 렌더링 방법일 수 있다. 타일 단위로 렌더링을 수행하는 경우, 타일 단위로 버텍스 정보를 처리하는 작업과 타일 단위 처리 후에 나뉘어진 타일을 모아 프레임을 구성하는 작업이 추가되지만, 외부 메모리(30)에서 로딩하는 정보는 타일 단위로 줄어드는 효과가 있다. 또한, 타일 간의 독립성으로 타일 단위로 병렬 처리가 가능하기 때문에, 병렬 처리 효율성을 높일 수 있다.
GPU(10)는 CPU(20)로부터 드로우 명령을 수신할 수 있다. 드로우 명령(draw command)은 영상 또는 프레임에 어떤 객체를 렌더링할 것인지를 나타내는 명령이다. 예를 들어, 드로우 명령은 영상 또는 프레임에 포함된 프리미티브를 그리기 위한 명령일 수 있다. 한편, 프리미티브는 적어도 하나의 버텍스를 이용하여 형성되는 점, 선, 다각형(polygon)등을 의미한다. 예를 들어, 프리미티브는 버텍스들을 연결하여 형성된 삼각형으로 나타낼 수 있다.
GPU(10)는 제어부(11), 그래픽스 파이프라인 처리부(12), 캐시(13) 및 버퍼(14)를 포함할 수 있다.
제어부(11)는 CPU(20)로부터 3차원 그래픽스에 대한 적어도 하나의 드로우 명령을 수신할 수 있다. 제어부(11)는 그래픽스 파이프라인 처리부(12), 캐시(13) 및 버퍼(180)의 전반적인 기능들 및 동작들을 제어한다.
그래픽스 파이프라인 처리부(12)는 그래픽스 파이프라인들은 할당된 배치들에 따라 3차원 이미지 상의 3차원 객체들을 디스플레이용의 2차원 이미지로 렌더링할 수 있다. 일 실시예에서 타일 기반으로 렌더링하는 경우, 그래픽스 파이프라인 처리부(12)는 동영상의 각 프레임을 복수의 타일들로 구분한 후, 타일 단위로 렌더링할 수 있다.
캐시(13)는 CPU(20)로부터 수신한 드로우 명령에 포함된 그래픽스 데이터, 및 외부 메모리(30)로부터 수신한 그래픽스 데이터를 저장할 수 있다. 그래픽스 데이터는 렌더링 수행에 이용되는 데이터이다. 예를 들어, 그래픽스 데이터는 객체에 대한 좌표 정보와 같은 소스 데이터(source data), 텍스쳐 타입(texture type), 카메라 시점 정보를 포함할 수 있다.
버퍼(14)는 3차원 이미지 상의 3차원 객체들을 디스플레이용의 2차원 이미지로 렌더링한 렌더링 결과를 저장할 수 있다. 타일 기반으로 렌더링되는 경우, 버퍼(14)에는 타일 단위의 렌더링 결과가 저장될 수 있다. 버퍼(14)에 저장된 렌더링 결과는 외부 메모리(30)에 저장될 수 있다.
외부 메모리(30)는 컴퓨팅 장치(100)에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, GPU(10)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 외부 메모리(30)는 GPU(10) 및 CPU(20)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 외부 메모리(30)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함하며, 나아가서, 컴퓨팅 장치(100)에 액세스될 수 있는 외부의 다른 스토리지 디바이스를 포함할 수 있다. 한편, GPU(10) 내 버퍼(14)에 저장된 렌더링 결과는 외부 메모리(30)에 할당된 저장 공간인 프레임 버퍼에 저장될 수 있다.
도 2는 일 실시예에 따른 타일-기반 렌더링을 수행하는 그래픽스 파이프라인을 설명하는 도면이다.
도 2를 참고하면, 타일-기반 렌더링을 위한 그래픽스 파이프라인(200)은, 각각의 타일에 대응되는 프리미티브 리스트에 관한 정보를 생성하는 비닝 파이프라인(210) 및 생성된 프리미티브 리스트에 관한 정보를 이용하여 타일 별로(per tile) 렌더링을 수행하는 렌더링 파이프라인(102)을 포함한다.
비닝 파이프라인(210)은, 입력 어셈블러 단계(211), 버텍스 쉐이더(vertex shader) 단계(212), 프리미티브 어셈블러 단계(213) 및 비너 단계(214)를 포함할 수 있다.
단계 211에서 입력 어셈블러는 버텍스들(vertices)을 생성할 수 있다. CPU(20)로부터 수신한 드로우 명령에 기초하여, 어셈블러는 3차원 그래픽스에 포함된 객체(object)들을 나타내기 위해 버텍스들을 생성할 수 있다. 생성된 버텍스들은 메쉬(mesh) 또는 표면(surface)의 표현인 패치(patch)에 관한 것일 수 있으나, 이에 제한되지 않는다.
단계 212에서 버텍스 쉐이더는 생성된 버텍스들을 쉐이딩(shading)할 수 있다. 버텍스 쉐이더는 생성된 버텍스들의 위치를 지정함으로써, 버텍스들에 대한 쉐이딩을 수행할 수 있다.
단계 213에서 프리미티브 어셈블러는 버텍스들을 프리미티브들로 변환할 수 있다. 프리미티브는 적어도 하나의 버텍스를 이용하여 형성되는 점, 선, 다각형(polygon)등을 의미한다. 일 예로서, 프리미티는 버텍스들을 연결하여 형성된 삼각형으로 나타낼 수 있다.
단계 214에서 비너는, 단계 213의 프리미티브 어셈블러로부터 출력된 프리미티브들을 이용하여, 비닝(binning) 또는 타일링(tiling)을 수행할 수 있다. 예를 들어, 비너는 깊이 테스트(또는 tile Z test)를 수행하여 프리미티브들 각각이 속한 타일들의 정보를 나타내는 비트스트림을 생성(비닝)한다.
렌더링 파이프라인(220)은, 타일 스케줄러 스테이지(221), 래스터라이저 스테이지(222), 프래그먼트 쉐이더 스테이지(223), 타일 버퍼 스테이지(224)를 포함할 수 있다.
단계 221에서 타일 스케줄러는 타일 별로(per tile) 수행되는 렌더링 파이프라인을 위하여, 처리될 타일의 순서를 스케줄링할 수 있다.
단계 222에서 래스터라이저는 생성된 타일 리스트에 기초하여, 프리미티브들을 2차원 공간에서의 픽셀 값들로 변환할 수 있다. 프리미티브는 버텍스에 대한 정보만을 포함하므로, 단계 222에서 버텍스와 버텍스 사이의 프레그먼트들을 생성함으로써, 3차원 그래픽스에 대한 그래픽 처리를 수행할 수 있도록 한다.
단계 223에서 프래그먼트 쉐이더는 프래그먼트를 생성하고, 프래그먼트에 대한 깊이 값, 스텐실 값, 컬러 값 등을 결정할 수 있다. 한편, 프래그먼트는 프리미티브에 의해 커버되는 픽셀들을 의미한다.
단계 224에서 타일 버퍼에는 프래그먼트 쉐이딩 결과가 저장될 수 있다.
또한, 상기 스테이지를 통해 생성된 렌더링 결과는 외부 메모리(30)에 할당된 저장 공간인 프레임 버퍼(frame buffer)에 저장될 수 있고, 프레임 버퍼에 저장된 렌더링 결과는 동영상의 프레임으로서 디스플레이 장치를 통해 디스플레이될 수 있다.
한편, 비닝 파이프라인(210) 및 렌더링 파이프라인(220)에 포함된 스테이지들은 본 실시예들의 설명의 편의를 위하여 도시된 것일 뿐, 비닝 파이프라인(210) 및 렌더링 파이프라인(220)에는 이미 알려진 다른 스테이지들(예를 들어, 테셀레이션 파이프라인 등)이 더 포함될 수도 있다. 나아가서, 비닝 파이프라인(210) 및 렌더링 파이프라인(220)에 포함된 각 스테이지들의 명칭들은 그래픽스 API의 종류에 따라 달라질 수 있다.
도 3은 일 실시예에 따른 프레임을 분할하는 타일의 예시를 설명하는 도면이다.
도 3을 참조하면 어느 동영상에서의 어느 한 프레임(310)에 프리미티브(320)가 포함된 것으로 가정한다. GPU(10)는 프리미티브(320)가 포함된 한 프레임(310)을 NxM (N, M은 자연수) 타일들로 분할할 수 있다. 이하에서 프레임(310)을 분할하는 가장 작은 사이즈의 타일들 각각을 초기 타일이라 하고, 초기 타일의 타일 사이즈를 초기 사이즈라고 하기로 한다.
프리미티브(320)가 포함된 프레임을 초기 타일들(311)로 분할하고, 프리미티브(320)가 속하는 초기 타일들을 판단하는 것은 도 2의 비닝 파이프라인(210)에 의해 수행될 수 있다. 비닝 파이프라인(210)을 수행한 결과 생성된 비트스트림에는 각 초기 타일(311)에 속한 프리미티브(320)에 대한 정보가 포함될 수 있다.
비닝 파이프라인(210)이 수행된 이후, GPU(10)는 타일 단위로(per tile) 초기 타일들(311)에 포함된 프리미티브(320)를 렌더링하여 픽셀 표현들로 변환한다. 타일 단위로 프리미티브(320)를 렌더링하여 픽셀 표현들로 변환하는 것은 도 2의 렌더링 파이프라인(220)에 의해 수행될 수 있다.
한편, 렌더링 파이프라인(220)은 기설정된 사이즈의 타일 단위로 렌더링을 수행할 수 있다. 렌더링에 이용되는 타일 단위는 가변적일 수 있으며, 타일 단위 및 타일의 조합에 따라, 렌더링 파이프라인(220)에서는 한 번의 렌더링 과정을 통해 프리미티브(320)의 전부 또는 일부를 렌더링할 수 있다. 예를 들어, 초기 사이즈의 타일 e(312)를 이용하면 프리미티브(320)의 일부가 렌더링될 수 있는 반면, 2X2 사이즈의 타일 (타일 e, 타일 f, 타일 h 및 타일 i) 로 형성된 타일 (313)을 이용하면 한 번의 렌더링 과정을 통해 프리미티브(320)의 전부가 렌더링될 수 있다.
도 4는 일 실시예에 따른 그래픽스 파이프라인 처리부에서 프리미티브에 대한 정보를 이용하는 예시를 설명하는 도면이다.
그래픽스 파이프라인 처리부(410)의 렌더링 파이프라인(412)은 비닝 파이프라인(411)을 수행한 결과 생성된 비트스트림 정보를 이용하여 렌더링을 수행할 수 있다. 타일 단위로 렌더링 파이프라인(412)을 수행하여 타일에 속한 프리미티브를 렌더링하기 위해, 그래픽스 파이프라인 처리부(410)는 외부 메모리(30)에 저장된 그래픽스 데이터를 이용할 수 있다. 그래픽스 데이터는 프리미티브에 대한 정보(421)를 포함할 수 있으며, 프리미티브에 대한 정보(421)는 객체에 대한 좌표 및 선분 정보와 같은 소스 데이터일 수 있다.
프리미티브를 렌더링하기 위해 GPU(10)가 외부 메모리(30)에 액세스(access)하여 프리미티브에 대한 정보를 읽어오는 처리 속도는 느리므로, 속도 개선을 위해 GPU(10) 내부에 위치한 온칩 메모리(on-chip memory)인 캐시(420)에 액세스할 수 있다. 캐시(420)는 그래픽스 파이프라인 처리부(410)가 최근에 렌더링한 프리미티브에 대한 정보를 저장할 수 있고, 그래픽스 파이프라인 처리부(410)는 이전에 렌더링한 프리미티브와 동일한 프리미티브에 대한 정보가 필요한 경우, 외부 메모리(30)에 액세스하지 않고 캐시(420)에 액세스함으로써 프리미티브에 대한 정보(430)를 빠르게 읽어올 수 있다.
한편, 온칩 메모리 특성상 캐시(420)의 저장 용량은 제한적일 수 있으므로, 그래픽스 파이프라인 처리부(410)가 새로운 프리미티브에 대한 정보를 캐시에 요청하는 경우, 캐시에 저장된 기존 프리미티브에 대한 정보가 삭제되고, 외부 메모리(30)로부터 읽어온 새로운 프리미티브에 대한 정보가 캐시에 업데이트될 수 있다. 렌더링을 수행한 결과 프리미티브(이하, 기존 프리미티브)의 일부만 렌더링된 경우, 기존 프리미티브의 나머지 부분에 대해 렌더링을 수행하는 시점에는 새로운 프리미티브들에 대한 정보가 캐시에 업데이트됨으로써 캐시에 저장되었던 기존 프리미티브에 대한 정보가 삭제돼있을 수 있다. 그래픽스 파이프라인 처리부(410)는 기존 프리미티브의 나머지 부분에 대해 렌더링을 수행하기 위해 외부 메모리(30)에 액세스하여 기존 프리미티브에 대한 정보를 다시 읽어와야 하므로 대역폭(bandwidth)이 증가할 수 있다.
도 5는 일 실시예에 따른 타일-기반 렌더링을 수행하는 GPU의 타일 사이즈 결정부를 설명하는 도면이다.
도 5를 참조하면, 그래픽스 파이프라인 처리부(510)의 비닝 파이프라인(511)에서 프레임을 분할하는 초기 타일 단위로 타일 비닝을 수행한 결과, 비닝의 결과를 나타내는 비트스트림을 생성할 수 있다. 비트스트림에는 각 초기 타일에 속한 프리미티브에 대한 정보가 저장될 수 있다.
타일 사이즈 결정부(520)는 생성된 비트스트림을 이용하여 초기 타일에 속한 프리미티브가, 초기 타일 외에 다른 초기 타일에도 속하는지 판단할 수 있다. 한편, 초기 타일은 프레임을 분할하는 초기 사이즈의 타일 중 하나일 수 있다.
타일 사이즈 결정부(520)는 상기 판단 결과에 기초하여, 프리미티브가 속한 적어도 하나의 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정할 수 있다. 또한, 타일 사이즈 결정부(730)는 결정된 렌더링 타일 단위로, 결정된 렌더링 타일에 포함된 프리미티브에 대한 렌더링을 수행할 수 있다. 한편, 프레임 내 프리미티브들의 사이즈는 서로 상이할 수 있으므로, 동적 사이즈의 렌더링 타일은 프리미티브가 속한 초기 타일의 개수에 따라 가변적으로 결정될 수 있다.
예를 들어, 제 1 프리미티브가 한 개의 초기 타일에만 속하는 경우, 제 1 프리미티브에 대한 렌더링을 수행하는 렌더링 타일 단위에 대응하는 동적 사이즈는 초기 사이즈의 초기 타일 한 개일 수 있다. 또한, 복수개의 초기 사이즈의 타일들에 제 2 프리미티브가 속할 수 있다. 예를 들어, 제 2 프리미티브가 네 개의 초기 사이즈의 타일들에 속하는 경우, 제 2 프리미티브는 초기 타일뿐만 아니라 초기 타일 주변의 다른 세 개의 초기 타일들에도 속하며, 제 2 프리미티브의 렌더링을 수행하는 렌더링 타일 단위에 대응하는 동적 사이즈는 네 개의 초기 사이즈의 타일들로 형성될 수 있다.
타일 사이즈 결정부(520)는 프리미티브에 대한 렌더링을 수행하는 렌더링 타일 단위에 대응하는 동적 사이즈 정보를 그래픽스 파이프라인 처리부(510)에 제공할 수 있다. 동적 사이즈 정보는 프리미티브의 식별 값 및 프리미티브가 속한 적어도 하나의 초기 타일의 식별 값이 매칭된 정보일 수 있으나, 이에 제한되지 않는다. 그래픽스 파이프라인 처리부(510)는 동적 사이즈 정보에 기초하여 각각의 프리미티브에 대응하는 렌더링 타일 단위로, 각각의 프리미티브를 렌더링할 수 있다.
예를 들어, 초기 타일에 속한 제 1 프리미티브에 대한 렌더링을 수행하는 렌더링 타일 단위가 초기 타일 한 개인 경우, 동적 사이즈 정보는 제 1 프리미티브의 식별 값 및 제 1 프리미티브가 속한 한 개의 초기 타일의 식별 값이 매칭된 정보일 수 있다. 또한, 예를 들어, 제 2 프리미티브에 대한 렌더링을 수행하는 렌더링 타일 단위가 초기 사이즈의 타일 및 초기 사이즈의 타일 주변의 다른 초기 타일들 세 개인 경우, 동적 사이즈 정보는 '제 2 프리미티브의 식별 값 및 제 2 프리미티브가 속한 네 개의 초기 사이즈의 타일들의 식별 값들이 매칭된 정보일 수 있다.
한편, 그래픽스 파이프라인 처리부(510)의 렌더링 파이프라인(512)에서 렌더링을 수행할 때 이용하는 렌더링 타일 단위는 가변적일 수 있으며, 프리미티브의 사이즈 및 렌더링 타일 단위 간의 대소 관계에 따라, 렌더링 파이프라인(512)은 한 번의 렌더링 과정을 통해서 프리미티브의 전부 또는 일부를 렌더링할 수 있다. 일 실시예에서 렌더링을 수행하는 렌더링 타일 단위는 초기 사이즈의 타일일 수 있다. 예를 들어, 제 1 프리미티브가 초기 사이즈의 타일 한 개에 속하는 경우, 초기 사이즈의 타일 단위를 이용하여 한 번의 렌더링 과정을 통해 제 1 프리미티브의 전부가 렌더링될 수 있다. 또한, 예를 들어, 제 2 프리미티브의 사이즈가 네 개의 초기 사이즈의 타일에 속하는 경우, 초기 사이즈의 타일 단위를 이용하여 한 번의 렌더링 과정을 통해 제 2 프리미티브의 일부만이 렌더링될 수 있다.
타일 사이즈 결정부(520)는 프리미티브의 전부가 속할 수 있는 동적 사이즈의 타일을 결정할 수 있고, 결정된 동적 사이즈 정보를 그래픽스 파이프라인 처리부(510)에 제공할 수 있다. 그래픽스 파이프라인 처리부(510)에서 동적 사이즈 정보를 이용하여 동적 사이즈의 렌더링 타일 단위로 프리미티브를 렌더링하는 경우, 한 번의 렌더링 과정을 통해 프리미티브의 전부를 렌더링할 수 있다.
일 실시예에서 캐시가 외부 메모리(30)로부터 프리미티브에 대한 정보를 한 번 읽어온 후 읽어온 정보를 캐시에 업데이트하면, 그래픽스 파이프라인 처리부(510)는 외부 메모리(30)에 중복적으로 액세스할 필요 없이 캐시에만 액세스함으로써 프리미티브에 대한 정보를 읽어올 수 있다. 따라서, 한 번의 렌더링 과정을 통해 프리미티브의 전부를 렌더링하면 외부 메모리(30)로부터 프리미티브에 대한 정보를 읽어오는 대역폭을 줄일 수 있다.
그래픽스 파이프라인 처리부(510)는 프리미티브에 대응하는 동적 사이즈 정보를 이용하여 렌더링 파이프라인(512)를 수행한 결과, 프리미티브의 전부를 렌더링할 수 있다. 그래픽스 파이프라인 처리부(510)는 렌더링된 프리미티브(513)를 타일 버퍼(530)에 저장할 수 있다.
도 6은 일 실시예에 따른 렌더링된 프리미티브를 외부 메모리에 저장하는 예시를 설명하는 도면이다.
도 6을 참조하면 GPU(10)의 그래픽스 파이프라인 처리부(12)에서 프리미티브에 대응하는 동적 사이즈 정보를 이용하여 렌더링한 프리미티브의 전부가 타일 버퍼(610)에 저장될 수 있다.
한편, 온칩 메모리로서 이용되는 타일 버퍼(610)의 용량은 제한적일 수 있으므로, 타일 버퍼(610)의 용량에 기초하여 동적 사이즈의 렌더링 타일이 결정될 수 있다. 타일 사이즈 결정부(520)는 타일 버퍼(610)의 제한된 용량 내에서 동적 사이즈의 렌더링 타일의 용량을 결정할 수 있다. 예를 들어, 타일 버퍼(610)의 용량의 제한이 32X32 사이즈의 타일인 경우, 프리미티브의 사이즈가 32X32를 초과하더라도 프리미티브에 대응하는 동적 사이즈 정보는 32X32일 수 있다.
GPU(10)는 외부 메모리(30)에 액세스하여, 타일 버퍼(610)에 저장된 프리미티브(611a)를 외부 메모리(30)에 할당된 저장 공간인 프레임 버퍼(620)에 저장할 수(또는 쓰여질 수(write)) 있다.
한편, GPU(10)의 그래픽스 파이프라인 처리부(12)에서 고정된 사이즈의 타일 단위로 적어도 하나의 프리미티브를 렌더링하는 경우, 고정된 사이즈의 타일에 속한 적어도 하나의 프리미티브를 타일 버퍼(610)에 저장할 수 있다. 타일 버퍼(610)에 저장된 고정된 사이즈의 타일에 속한 적어도 하나의 프리미티브를 프레임 버퍼(620)에 저장할 때, 고정된 사이즈의 타일을 형성하는 초기 사이즈의 타일들 중 일부에는 어느 프리미티브도 속하지 않을 수 있으며, 프리미티브가 존재하지 않는 초기 사이즈의 타일까지 프레임 버퍼(620)에 저장하는 경우 대역폭이 증가할 수 있다.
GPU(10)는 타일 사이즈 결정부에서 결정된, 프리미티브에 대응하는 동적 사이즈 정보를 이용하여 렌더링을 수행함으로써 프리미티브가 존재하는 타일들만을 프레임 버퍼(620)에 저장할 수 있다. 프리미티브에 대응하는 동적 사이즈 정보를 이용함으로써 외부 메모리(30)에 할당된 프레임 버퍼(620)에 렌더링 결과를 저장하는 대역폭을 줄일 수 있다.
도 7을 일 실시예에 따른 타일 사이즈 결정부를 포함하는 GPU에서 수행되는 타일-기반 렌더링의 예시를 설명하는 도면이다. 그래픽스 파이프라인 처리부(710)의 비닝 파이프라인(711)에서 프레임을 분할하는 초기 사이즈의 타일 단위로 타일 비닝을 수행한 결과, 비닝의 결과를 나타내는 비트스트림을 생성할 수 있다. 비트스트림에는 각 초기 타일에 속한 프리미티브에 대한 정보가 저장될 수 있다.
타일 사이즈 결정부(730)는 생성된 비트스트림을 이용하여 초기 타일에 속한 프리미티브가, 초기 타일 외에 다른 초기 타일에도 속하는지 판단할 수 있다. 타일 사이즈 결정부(730)는 상기 판단 결과에 기초하여, 프리미티브가 속한 적어도 하나의 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정할 수 있다. 또한, 타일 사이즈 결정부(730)는 결정된 렌더링 타일 단위로, 결정된 렌더링 타일에 포함된 프리미티브에 대한 렌더링을 수행할 수 있다.
타일 사이즈 결정부(730)는 프리미티브에 대한 렌더링을 수행하는 렌더링 타일 단위에 대응하는 동적 사이즈 정보를 그래픽스 파이프라인 처리부(710)에 제공할 수 있다. 그래픽스 파이프라인 처리부(710)는 동적 사이즈 정보에 기초하여 각각의 프리미티브에 대응하는 렌더링 타일 단위로, 각각의 프리미티브를 렌더링할 수 있다.
그래픽스 파이프라인 처리부(710)는 렌더링 타일 단위로 각각의 프리미티브를 렌더링하기 위해, 외부 메모리(30)에 액세스(access)하는 대신 속도 개선을 위해 GPU(10) 내부에 위치한 캐시(720)에 액세스할 수 있다. 캐시(420)는 그래픽스 파이프라인 처리부(410)가 최근에 렌더링한 프리미티브에 대한 정보를 저장할 수 있고, 그래픽스 파이프라인 처리부(410)는 이전에 렌더링한 프리미티브와 동일한 프리미티브에 대한 정보가 필요한 경우, 외부 메모리(30)에 액세스하지 않고 캐시(420)에 액세스함으로써 프리미티브에 대한 정보(430)를 빠르게 읽어올 수 있다.
그래픽스 파이프라인 처리부(710)는 프리미티브에 대응하는 동적 사이즈 정보를 이용하여 렌더링 파이프라인(712)을 수행한 결과, 프리미티브의 전부(713a)를 렌더링할 수 있다. 캐시(720)가 외부 메모리(30)로부터 프리미티브에 대한 정보를 한 번 읽어온 후 읽어온 정보를 캐시(720)에 업데이트하면, 그래픽스 파이프라인 처리부(710)는 외부 메모리(30)에 중복적으로 액세스할 필요 없이 캐시에만 액세스함으로써 프리미티브에 대한 정보를 읽어올 수 있다. 따라서, 한 번의 렌더링 과정을 통해 프리미티브의 전부를 렌더링하면 외부 메모리(30)로부터 프리미티브에 대한 정보를 읽어오는 대역폭을 줄일 수 있다.
그래픽스 파이프라인 처리부(710)는 동적 사이즈의 렌더링 타일 단위로 렌더링된 프리미티브(713a)를 타일 버퍼(740)에 저장할 수 있다.
GPU(10)는 외부 메모리(30)에 액세스하여, 타일 버퍼(740)에 저장된 프리미티브(713b)를 외부 메모리(30)에 할당된 저장 공간인 프레임 버퍼(750)에 저장할 수(또는 쓰여질 수(write)) 있다.
GPU(10)는 타일 사이즈 결정부에서 결정된, 프리미티브에 대응하는 동적 사이즈 정보를 이용하여 렌더링을 수행함으로써 프리미티브가 존재하는 타일들만을 프레임 버퍼(750)에 저장할 수 있다. 프리미티브에 대응하는 동적 사이즈 정보를 이용함으로써 외부 메모리(30)에 할당된 프레임 버퍼(750)에 렌더링 결과를 저장하는 대역폭을 줄일 수 있다.
도 8은 일 실시예에 따른 프리미티브에 대한 정보가 저장된 비트스트림의 예시를 설명하는 도면이다.
도 8a를 참조하면 프레임(810)은 초기 사이즈의 10개의 타일(타일 a 내지 타일 j)로 분할될 수 있다. 10개의 타일들 각각에는 프리미티브들(프리미티브 0 내지 프리미티브 4)의 일부 또는 전부가 속할 수 있다. 또한, 어느 프리미티브들도 속하지 않은 타일(타일 c)이 존재할 수 있다.
도 8b를 참조하면 GPU(10)는 비닝 파이프라인을 수행함으로써, 각 타일에 속한 프리미티브에 대한 정보를 타일 별 비트스트림(820)에 저장할 수 있다. 비트스트림(820)의 비트 값 1은 타일에 프리미티브가 존재한다는 것을 의미하고, 비트 값 0은 타일에 프리미티브가 존재하지 않는다는 것을 의미할 수 있다.
예를 들어, 도 8a를 참조하면 타일 a에는 프리미티브 0 및 프리미티브 1이 속한다. 도 8b에서 타일 a의 비트스트림을 살펴보면, 프리미티브 0 및 프리미티브 1의 비트 값은 모두 1이며, 프리미티브 2, 프리미티브 3 및 프리미티브 4의 비트 값은 모두 0이므로, 타일 a에는 프리미티브 0 및 프리미티브 1이 속함을 알 수 있다.
도 9는 일 실시예에 따른 렌더링 타일 단위에 대응하는 동적 사이즈를 결정하는 예시를 설명하는 도면이다.
도 9를 참조하면 GPU(10)의 타일 결정부에서는 비트스트림을 이용하여 초기 타일에 속한 프리미티브가 초기 타일 주변의 다른 초기 타일에도 속하는지 여부를 판단할 수 있다. 초기 타일 주변의 다른 초기 타일은 초기 타일과 인접한(adjacent) 이웃 타일(neighboring tile)일 수 있다. 또한, 판단 결과에 기초하여, 타일 결정부에서는 프리미티브가 속한 적어도 하나의 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정할 수 있다. 이하의 프로세스는 GPU(10)의 타일 결정부에서 실행될 수 있으나, 이에 제한되지 않는다.
일 실시예에서 타일 결정부는 초기 타일을 결정할 수 있다. 초기 타일은 프레임을 분할하는 초기 사이즈의 타일일 수 있다. 또한, 타일 결정부는 결정된 초기 타일에 속하는 프리미티브를 선택할 수 있다. 예를 들어, 초기 타일은 타일 a 내지 타일 j일 수 있다. 타일 결정부는 타일 a를 초기 타일로 결정할 수 있고, 타일 a에 속하는 프리미티브 0 및 프리미티브 1 중에서 프리미티브 0을 선택할 수 있다.
일 실시예에서 타일 결정부는 비트스트림을 이용하여 선택된 프리미티브에 대응하는 초기 타일의 비트 값 및 초기 타일 주변의 다른 초기 타일의 비트 값을 비교할 수 있다. 또한, 타일 결정부는 AND 연산에 기초하여 비트 값들을 비교할 수 있다. 비트 값들을 비교한 결과 선택된 프리미티브가 다른 초기 타일에도 속하는 경우, 동적 사이즈의 렌더링 타일은 초기 타일 및 다른 초기 타일을 포함할 수 있다. 또한, 비트 값들을 비교한 결과 선택된 프리미티브가 다른 초기 타일에 속하지 않는 경우, 동적 사이즈의 렌더링 타일은 초기 타일을 포함하고 다른 초기 타일은 포함하지 않을 수 있다.
일 실시예에서 선택된 프리미티브가 다른 초기 타일에 속한다고 판단된 경우, 다른 초기 타일이 선택되어 상기 프로세스가 반복될 수 있다. 또한, 초기 타일에 속하는 프리미티브들 중에서 선택되지 않은 프리미티브에 대해서도 상기 프로세스가 반복될 수 있다. 다만, 이미 동적 사이즈의 렌더링 타일에 포함된 초기 타일에 대해서는 상기 프로세스가 생략될 수 있다. 한편, 동적 사이즈는 반복적인 프로세스가 수행됨으로써 점차 확장될 수 있으나, 타일 버퍼의 용량에 기초하여 동적 사이즈의 렌더링 타일이 결정될 수 있다.
도 9를 참조하면 표에 기재된 'a0' 및 이에 대응하는 비트 값은 타일 a에 프리미티브 0이 속하는지 여부를 나타내는 지표이다. 'a0'에 대응하는 비트 값이 1인 경우 타일 a에 프리미티브 0이 속하는 것을 나타내며, 'a0'에 대응하는 비트 값이 0인 경우 타일 a에 프리미티브 0 이 속하지 않는 것을 나타낸다.
이하의 단계들에서 중복되는 내용은 편의상 생략하기로 한다.
예를 들어, 타일 사이즈 결정부는 초기 타일을 타일 a로 결정할 수 있고 타일 a에 속한 프리미티브 0을 선택할 수 있다.
단계 1(901)에서, 선택된 프리미티브 0에 대응하는 타일 a의 비트 값과, 타일 a 주변의 다른 초기 타일들인 타일 b 및 타일 f의 프리미티브 0에 대응하는 비트 값들을 각각 비교할 수 있다. 프리미티브 0에 대응하는 타일 a의 비트 값 1과 프리미티브 0에 대응하는 타일 b의 비트 값 1의 AND 연산 수행 결과는 1이다(910). 또한, 프리미티브 0에 대응하는 타일 a의 비트 값 1과 프리미티브 0에 대응하는 타일 f의 비트 값 1의 AND 연산 수행 결과 역시 1이다(920). 비트 값들에 대한 AND 연산 수행 결과가 모두 1이므로, 타일 사이즈 결정부는 프리미티브 0이 타일 b 및 타일 f에 속한다고 판단할 수 있으며, 동적 사이즈의 렌더링 타일은 타일 a, 타일 b 및 타일 f를 포함하는 타일로 결정될 수 있다. 한편, 타일 a에 속하지만 선택되지 않은 프리미티브 1에 대해서도 상기 프로세스가 반복될 수 있으나, 이미 동적 사이즈의 렌더링 타일에 포함된 타일 b 및 타일 f에 대해서는 프리미티브 1에 대한 상기 프로세스가 생략될 수 있다.
단계 2에서, 타일 사이즈 결정부는 단계 1의 결과에 기초하여, 프리미티브 0이 속하는 타일 b 및 타일 f 각각을 순차적으로 새로운 기준 타일로 결정하여 상기 프로세스를 반복할 수 있다. 타일 사이즈 결정부는 타일 b를 초기 타일로 결정하고 타일 b에 속한 프리미티브 0을 선택할 수 있다. 선택된 프리미티브 0에 대응하는 타일 b의 비트 값과, 타일 b 주변의 다른 초기 타일들인 타일 c 및 타일 g의 프리미티브 0에 대응하는 비트 값들을 각각 비교할 수 있다. 프리미티브 0에 대응하는 타일 b의 비트 값 1과 프리미티브 0에 대응하는 타일 c의 비트 값 0의 AND 연산 수행 결과는 0이다(930). 또한, 프리미티브 0에 대응하는 타일 b의 비트 값 1과 프리미티브 0에 대응하는 타일 g의 비트 값 1의 AND 연산 수행 결과는 1이다(940). 비트 값들에 대한 AND 연산 수행 결과, 동적 사이즈의 렌더링 타일은 타일 c는 포함하지 않고, 타일 g를 포함하는 것으로 결정할 수 있다. 한편, 단계 1을 통해 이미 동적 사이즈의 렌더링 타일에 포함된 것으로 결정된 타일 f에 대해서는 상기 프로세스가 생략될 수 있다.
단계 3에서, 타일 사이즈 결정부는 단계 2의 결과에 기초하여, 프리미티브 0이 속하는 타일 g를 새로운 초기 타일로 결정하여 상기 프로세스를 반복할 수 있다. 타일 사이즈 결정부는 타일 g를 초기 타일로 결정하고 타일 g에 속한 프리미티브 0을 선택할 수 있다. 선택된 프리미티브 0에 대응하는 타일 g의 비트 값과 타일 g 주변의 다른 초기 타일들인 타일 f 및 타일 h의 프리미티브 0에 대응하는 비트 값들을 각각 비교할 수 있다. 다만, 단계 1에서 이미 동적 사이즈의 렌더링 타일에 포함된 것으로 결정된 타일 f에 대해서는 상기 프로세스가 생략될 수 있다. 프리미티브 0에 대응하는 타일 g의 비트 값 1과 프리미티브 0에 대응하는 타일 h의 비트 값 0의 AND 연산 수행 결과는 0이므로(950), 동적 사이즈의 렌더링 타일은 타일 h를 포함하지 않을 수 있다.
도 9를 참조하면, 단계 1 내지 3을 통해, 동적 사이즈의 렌더링 타일(900)은 타일 a, 타일 b, 타일 f 및 타일 g를 포함하는 타일로 결정될 수 있다. 단계 1 내지 3은 프리미티브 0이 속한 초기 타일을 결정하기 위한 프로세스이며, 동적 사이즈의 렌더링 타일(900)에 포함된 타일 a, 타일 b, 타일 f 및 타일 g에 속한 프리미티브 0외에 다른 프리미티브들이 속한 초기 타일을 결정하는 프로세스가 추가로 수행될 수 있다. 다만, 동적 사이즈의 렌더링 타일(900)에 이미 포함된 것으로 결정된 타일들(타일 a, 타일 b, 타일 f 및 타일 g)에 대해서는 프로세스가 생략될 수 있다.
예를 들어, 동적 사이즈의 렌더링 타일(900)에는 단계 1 내지 3의 프로세스에서 이용된 프리미티브 0 외에도 프리미티브 1이 속하므로, 프리미티브 1이 속한 초기 타일을 결정하는 프로세스(960, 970, 980 및 990)가 진행될 수 있다. 다만, 프리미티브 1이 속한 초기 타일들 즉, 타일 a 및 타일 b는 단계 1을 통해 이미 동적 사이즈의 렌더링 타일(900)에 포함된 것으로 결정되었으므로, 960 내지 990의 프로세스는 생략될 수 있다.
타일 사이즈 결정부는 단계 1 내지 3을 통해, 동적 사이즈의 렌더링 타일(900)을 결정할 수 있다. 그래픽스 파이프라인 처리부는 결정된 동적 사이즈의 렌더링 타일(900) 단위로 렌더링 타일(900)에 포함된 프리미티브 0 및 프리미티브 1를 렌더링할 수 있다. 동적 사이즈의 렌더링 타일(900)에는 프리미티브 0 및 프리미티브 1의 전부가 포함되므로, 한 번의 렌더링 과정을 통해 프리미티브 0 및 프리미티브 1의 전부를 렌더링할 수 있다. 동적 사이즈의 렌더링 타일(900) 단위로 렌더링함으로써, 외부 메모리(30)에 중복적으로 액세스할 필요 없이 캐시에만 액세스하여 프리미티브 0 및 프리미티브 1에 대한 정보를 읽어올 수 있다. 또한, 동적 사이즈의 렌더링 타일(900)은 프리미티브가 존재하지 않는 타일을 포함하지 않으므로, 프리미티브가 존재하는 초기 타일들만을 프레임 버퍼에 저장할 수 있다.
도 10은 일 실시예에 따른 GPU에서 타일-기반 렌더링을 수행하는 방법을 설명하는 흐름도이다.
단계 1010에서, GPU(10)는 비닝 파이프라인에서 초기 사이즈의 초기 타일들로 타일 비닝을 수행함으로써, 타일 비닝의 결과를 나타내는 비트스트림을 생성할 수 있다. 비트스트림은 각 초기 타일에 속한 프리미티브에 대한 정보가 저장될 수 있다.
단계 1020에서, GPU(10)는 생성된 비트스트림을 이용하여 초기 타일에 속한 프리미티브가 초기 타일 주변의 다른 초기 타일에 속하는지 여부를 판단할 수 있다.
단계 1030에서, GPU(10)는 판단 결과에 기초하여 프리미티브가 속한 적어도 하나의 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정할 수 있다.
단계 1040에서, GPU(10)는 결정된 렌더링 타일 단위로, 결정된 렌더링 타일에 포함된 상기 프리미티브에 대한 렌더링을 수행할 수 있다.
도 11은 일 실시예에 따른 타일 사이즈 결정부에서 동적 사이즈의 렌더링 타일을 결정하는 방법을 설명하는 흐름도이다.
단계 1110에서, GPU(10)는 프리미티브가 초기 타일 외에 초기 타일 주변의 다른 초기 타일에 속하는지 판단할 수 있다. GPU(10)는 비닝 파이프라인을 수행한 결과 생성된 비트스트림을 이용하여, 프리미티브에 대응하는 초기 타일의 비트 값 및 다른 초기 타일의 비트 값을 비교함으로써, 프리미티브가 다른 초기 타일에 속하는지 여부를 판단할 수 있다.
단계 1120에서, 단계 1110에서의 판단 결과 프리미티브가 다른 초기 타일에도 속하는 경우, 동적 사이즈의 렌더링 타일은 초기 타일 및 다른 초기 타일을 포함할 수 있다.
단계 1130에서, 단계 1110에서의 판단 결과 프리미티브가 다른 초기 타일에 속하지 않는 경우, 동적 사이즈의 렌더링 타일은 초기 타일을 포함하고 다른 초기 타일을 포함하지 않을 수 있다.
동적 사이즈는 상기 프리미티브가 속한 초기 타일의 개수에 따라 가변적으로 결정될 수 있으며, 타일 버퍼의 용량에 기초하여 동적 사이즈의 렌더링 타일이 결정될 수 있다.
본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.

Claims (15)

  1. 그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법에 있어서,
    초기 사이즈의 초기 타일들로 타일 비닝(tile binning)을 수행함으로써, 상기 타일 비닝의 결과를 나타내는 비트스트림(bitstream)을 생성하는 단계;
    상기 생성된 비트스트림을 이용하여 상기 초기 타일에 속한 프리미티브가 상기 초기 타일 주변의 다른 초기 타일에 속하는지 여부를 판단하는 단계;
    상기 판단 결과에 기초하여 상기 프리미티브가 속한 적어도 하나의 상기 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정하는 단계; 및
    상기 결정된 렌더링 타일 단위로, 상기 결정된 렌더링 타일에 포함된 상기 프리미티브에 대한 렌더링을 수행하는 단계;
    를 포함하는, 방법.
  2. 제 1항에 있어서,
    상기 동적 사이즈는 상기 프리미티브가 속한 상기 초기 타일의 개수에 따라 가변적으로 결정되는, 방법.
  3. 제 1항에 있어서,
    상기 동적 사이즈의 상기 렌더링 타일을 결정하는 단계는,
    타일 버퍼의 용량에 기초하여 상기 동적 사이즈의 상기 렌더링 타일을 결정하는, 방법.
  4. 제 1항에 있어서,
    상기 생성된 비트스트림을 이용하여 상기 초기 타일에 속한 프리미티브가 상기 초기 타일 주변의 다른 초기 타일에 속하는지 여부를 판단하는 단계는,
    상기 비트스트림을 이용하여, 상기 프리미티브에 대응하는 상기 초기 타일의 비트 값(bit value) 및 상기 다른 초기 타일의 비트 값을 비교함으로써, 상기 프리미티브가 상기 다른 초기 타일에 속하는지 여부를 판단하는 방법.
  5. 제 4항에 있어서,
    상기 동적 사이즈의 상기 렌더링 타일은,
    상기 비교 결과 상기 다른 초기 타일에 상기 프리미티브가 속하는 경우 상기 초기 타일 및 상기 다른 초기 타일을 포함하고,
    상기 비교 결과 상기 다른 초기 타일에 상기 프리미티브가 속하지 않는 경우 상기 초기 타일을 포함하고 상기 다른 초기 타일을 포함하지 않는, 방법.
  6. 제 5항에 있어서,
    상기 비교는, 상기 비트 값들에 대한 AND 연산에 기초하여 수행되는, 방법.
  7. 제 1항에 있어서,
    상기 동적 사이즈의 렌더링 타일을 이용하여 상기 프리미티브에 대한 렌더링을 수행한 후의 렌더링 결과를 외부 메모리에 할당된 프레임 버퍼에 저장하는 단계;
    를 더 포함하는, 방법.
  8. 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치에 있어서,
    프리미티브들에 대한 정보가 저장된 외부 메모리; 및
    초기 사이즈의 초기 타일들로 타일 비닝을 수행함으로써 상기 타일 비닝의 결과를 나타내는 비트스트림을 생성하고, 상기 생성된 비트스트림을 이용하여 상기 초기 타일에 속한 프리미티브가 상기 초기 타일 주변의 다른 초기 타일에 속하는지 여부를 판단하고, 상기 판단 결과에 기초하여 상기 프리미티브가 속한 적어도 하나의 상기 초기 타일로 형성된 동적 사이즈의 렌더링 타일을 결정하고, 상기 결정된 렌더링 타일 단위로 상기 결정된 렌더링 타일에 포함된 상기 프리미티브에 대한 렌더링을 수행하는 적어도 하나의 프로세서;
    를 포함하는, 장치.
  9. 제 8항에 있어서,
    상기 동적 사이즈는 상기 프리미티브가 속한 상기 초기 타일의 개수에 따라 가변적으로 결정되는, 장치.
  10. 제 8항에 있어서,
    상기 적어도 하나의 프로세서는,
    타일 버퍼의 용량에 기초하여 상기 동적 사이즈의 상기 렌더링 타일을 결정하는, 장치.
  11. 제 8항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 비트스트림을 이용하여, 상기 프리미티브에 대응하는 상기 초기 타일의 비트 값 및 상기 다른 초기 타일의 비트 값을 비교함으로써, 상기 프리미티브가 상기 다른 초기 타일에 속하는지 여부를 판단하는, 장치.
  12. 제 11항에 있어서,
    상기 동적 사이즈의 상기 렌더링 타일은,
    상기 비교 결과 상기 다른 초기 타일에 상기 프리미티브가 속하는 경우 상기 초기 타일 및 상기 다른 초기 타일을 포함하고,
    상기 비교 결과 상기 다른 초기 타일에 상기 프리미티브가 속하지 않는 경우 상기 초기 타일을 포함하고 상기 다른 초기 타일을 포함하지 않는, 장치.
  13. 제 12항에 있어서,
    상기 비교는, 상기 비트 값들에 대한 AND 연산에 기초하여 수행되는, 장치.
  14. 제 8항에 있어서,
    상기 외부 메모리는,
    상기 외부 메모리에 할당된 프레임 버퍼에, 상기 동적 사이즈의 렌더링 타일을 이용하여 상기 프리미티브에 대한 렌더링을 수행한 후의 렌더링 결과를 저장하는, 장치.
  15. 제 1항 내지 7항 중에 적어도 어느 한 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020160154451A 2016-11-18 2016-11-18 타일-기반 렌더링을 수행하는 방법 및 장치 KR20180056316A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160154451A KR20180056316A (ko) 2016-11-18 2016-11-18 타일-기반 렌더링을 수행하는 방법 및 장치
US15/606,849 US20180144538A1 (en) 2016-11-18 2017-05-26 Method and apparatus for performing tile-based rendering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160154451A KR20180056316A (ko) 2016-11-18 2016-11-18 타일-기반 렌더링을 수행하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20180056316A true KR20180056316A (ko) 2018-05-28

Family

ID=62147164

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160154451A KR20180056316A (ko) 2016-11-18 2016-11-18 타일-기반 렌더링을 수행하는 방법 및 장치

Country Status (2)

Country Link
US (1) US20180144538A1 (ko)
KR (1) KR20180056316A (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
GB2567436B (en) * 2017-10-10 2019-10-02 Imagination Tech Ltd Geometry to tiling arbiter for tile-based rendering system
GB2570743B (en) * 2018-06-29 2021-06-23 Imagination Tech Ltd Tile assignment to processing cores within a graphics processing unit
US10565689B1 (en) 2018-08-07 2020-02-18 Qualcomm Incorporated Dynamic rendering for foveated rendering
US11037271B2 (en) * 2018-08-07 2021-06-15 Qualcomm Incorporated Dynamic rendering for foveated rendering
US10733782B2 (en) * 2018-10-05 2020-08-04 Arm Limited Graphics processing systems
US11321803B2 (en) * 2020-09-02 2022-05-03 Arm Limited Graphics processing primitive patch testing
CN115049531B (zh) * 2022-08-12 2022-10-25 深流微智能科技(深圳)有限公司 图像渲染方法、装置、图形处理设备及存储介质

Also Published As

Publication number Publication date
US20180144538A1 (en) 2018-05-24

Similar Documents

Publication Publication Date Title
KR20180056316A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
CN106296565B (zh) 图形管线方法和设备
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
CN108701366B (zh) 用于图形处理中的阴影光线的树遍历的开始节点确定的方法、设备及可读存储媒体
CN105849780B (zh) 平铺块式基础架构上的经优化多遍次再现
US9569862B2 (en) Bandwidth reduction using texture lookup by adaptive shading
US10049486B2 (en) Sparse rasterization
US9342322B2 (en) System and method for layering using tile-based renderers
US20140098117A1 (en) Multi-primitive graphics rendering pipeline
KR102651126B1 (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
KR102454893B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법
KR102140387B1 (ko) 대역폭-압축된 그래픽스 데이터의 저장
US9811940B2 (en) Bandwidth reduction using vertex shader
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
KR102006584B1 (ko) 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭
KR102499397B1 (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
US8907979B2 (en) Fast rendering of knockout groups using a depth buffer of a graphics processing unit
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
US10262391B2 (en) Graphics processing devices and graphics processing methods
US10373286B2 (en) Method and apparatus for performing tile-based rendering
US20210358174A1 (en) Method and apparatus of data compression
EP4379647A1 (en) Render format selection method and device related thereto
KR20180015564A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
US10311627B2 (en) Graphics processing apparatus and method of processing graphics pipeline thereof
KR102085701B1 (ko) 이미지를 렌더링하는 방법