KR20180055446A - 타일 기반 렌더링 방법 및 장치 - Google Patents

타일 기반 렌더링 방법 및 장치 Download PDF

Info

Publication number
KR20180055446A
KR20180055446A KR1020160153318A KR20160153318A KR20180055446A KR 20180055446 A KR20180055446 A KR 20180055446A KR 1020160153318 A KR1020160153318 A KR 1020160153318A KR 20160153318 A KR20160153318 A KR 20160153318A KR 20180055446 A KR20180055446 A KR 20180055446A
Authority
KR
South Korea
Prior art keywords
tiles
tile
primitives
gpu
rendering
Prior art date
Application number
KR1020160153318A
Other languages
English (en)
Other versions
KR102646906B1 (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 KR1020160153318A priority Critical patent/KR102646906B1/ko
Priority to US15/604,774 priority patent/US10553024B2/en
Publication of KR20180055446A publication Critical patent/KR20180055446A/ko
Application granted granted Critical
Publication of KR102646906B1 publication Critical patent/KR102646906B1/ko

Links

Images

Classifications

    • 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
    • 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/005General purpose rendering architectures
    • 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

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

일 실시 예에 따른 타일 기반 렌더링 방법은 드로우콜을 수신하는 단계; 상기 드로우콜에 기초하여 프레임에서 프리미티브들의 위치를 결정하는 단계; 상기 프레임을 복수의 타일들로 분할하는 단계; 및 상기 타일들을 렌더링하는 단계;를 포함하고, 상기 렌더링하는 단계는, 상기 타일들이 포함하는 프리미티브들에 기초하여 상기 타일들의 렌더링 순서를 결정하고, 상기 렌더링 순서에 따라 상기 타일들을 렌더링하는 것을 특징으로 한다.

Description

타일 기반 렌더링 방법 및 장치{Tile-based rendering method and apparatus}
타일 기반 렌더링 방법 및 장치에 관한 것이다.
3D 그래픽스 API(Application Program Interface) 표준들로는 OpenGL, OpenGL ES, Vulkan by Khronos 또는 Direct 3D by Microsoft 등이 있다. API 표준들은 각 프레임에 대한 렌더링(rendering)을 수행하고, 영상을 표시하는 방법을 포함한다. 각 프레임에 대한 렌더링을 수행할 때, 많은 연산이 수행되며, 많은 전력이 소모된다. 따라서, 렌더링을 수행할 때, 연산량을 줄이고, 메모리에 접속(access)하는 횟수를 줄일 필요가 있다.
타일 기반 렌더링 방법 및 장치를 제공하는 데 있다.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따른 타일 기반 렌더링 방법은 드로우콜을 수신하는 단계; 상기 드로우콜에 기초하여 프레임에서 프리미티브들의 위치를 결정하는 단계; 상기 프레임을 복수의 타일들로 분할하는 단계; 및 상기 타일들을 렌더링하는 단계;를 포함하고, 상기 렌더링하는 단계는, 상기 타일들이 포함하는 프리미티브들에 기초하여 상기 타일들의 렌더링 순서를 결정하고, 상기 렌더링 순서에 따라 상기 타일들을 렌더링하는 것을 특징으로 한다.
일 실시 예에 다른 GPU는 메모리; 적어도 하나의 코어 및 적어도 하나의 캐쉬를 포함하는 프로세서;를 포함하고, 상기 프로세서는 드로우콜에 기초하여 프레임에서 프리미티브들의 위치를 결정하고, 상기 프레임을 복수의 타일들로 분할하고, 상기 타일들이 포함하는 프리미티브들에 기초하여 상기 타일들의 렌더링 순서를 결정하고, 상기 렌더링 순서에 따라 상기 타일들을 렌더링하는 것을 특징으로 한다.
동일한 프리미티브를 포함하는 타일들을 연속하여 렌더링할 수 있다.
동일한 캐쉬를 공유하는 코어가 동일한 프리미티브를 포함하는 타일들을 렌더링할 수 있다.
도 1은 3차원 영상을 처리하는 과정을 설명하기 위한 도면이다.
도 2는 일 실시 예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 3은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 순서도이다.
도 4는 타일 기반 렌더링 방법을 설명하기 위한 도면이다.
도 5는 각 타일들이 포함하는 프리미티브를 나타내는 비트 스트림을 설명하기 위한 도면이다.
도 6은 타일들의 스케줄을 결정하는 방법을 설명하기 위한 도면이다.
도 7은 타일들의 스케줄을 결정하는 방법을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 순서도이다.
도 9는 일 실시 예에 따른 GPU를 설명하기 위한 블록도이다.
도 10은 또 다른 실시 예에 따른 GPU를 설명하기 위한 블록도이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 3차원 영상을 처리하는 과정을 설명하기 위한 도면이다. 도 1을 참조하면, 11 내지 17단계를 통해 3차원 영상을 처리하는 과정을 나타낸다. 11단계 내지 13 단계는 기하 처리 단계이고, 12 내지 17단계는 픽셀 처리 단계이다.
11단계는 영상을 나타내는 정점(vertex)들을 생성하는 단계이다. 정점들은 영상에 포함된 오브젝트(object)들을 나타내기 위해 생성된다.
12단계는 생성된 정점들을 쉐이딩(shading)하는 단계이다. 정점 쉐이더(vertex shader)는 10단계에서 생성된 정점들의 색(color)을 지정하여, 정점들에 대한 쉐이딩을 수행할 수 있다.
13단계는 프리미티브들(primitives)을 생성하는 단계이다. 프리미티브는 점, 선 또는 정점들로부터 형성되는 다각형(polygon)을 나타낸다. 일 예로서, 프리미티브들은 정점들을 연결하여 형성된 삼각형들을 나타낼 수도 있다.
14단계는 프리미티브를 래스터화(rasterization)하는 단계이다. 프리미티브를 래스터화하는 것은 프리미티브를 복수의 프레그먼트들(fragments)로 분할하는 것을 나타낸다. 프레그먼트는 프리미티브를 구성하는 단위이며, 영상 처리를 수행하기 위한 기본 단위일 수 있다. 프리미티브는 정점에 대한 정보만을 포함한다. 따라서, 래스터화하는 단계에서 정점과 정점 사이의 프레그먼트들을 생성할 때 보간(interpolation)이 수행된다.
15단계는 픽셀을 쉐이딩하는 단계를 나타낸다. 도 1에서는 픽셀 단위로 쉐이딩이 수행되는 것을 도시하고 있으나, 프레그먼트 단위로 쉐이딩이 수행될 수도 있다. 예를 들어, 픽셀 또는 프레그먼트를 쉐이딩하는 것은 픽셀 또는 프레그먼트의 색을 지정하는 것이다.
16단계는 픽셀 또는 프레그먼트를 텍스쳐링(texturing)하는 단계는 나타낸다. 텍스쳐링은 픽셀 또는 프레그먼트의 색을 지정할 때, 미리 생성된 이미지를 이용하는 방법이다. 예를 들어, 쉐이딩은 프레그먼트에 어떤 색을 지정할지 계산을 통해서 수행하지만, 텍스쳐링은 미리 생성된 이미지와 대응되는 프레그먼트에 이미지의 색과 동일한 색을 지정하는 방법이다.
15 또는 16단계의 경우, 각각의 픽셀 또는 프레그먼트를 쉐이딩 또는 텍스쳐링하기 위하여 많은 연산이 요구된다. 따라서, 쉐이딩 또는 텍스쳐링하는 단계를 보다 효율적으로 수행하여 연산량을 줄일 필요가 있다. 쉐이딩 과정에서 연산량을 줄이는 대표적인 방법으로 은닉 표면 제거 방법(Hidden surface removal method, HSR)가 있다. 은닉 표면 제거 방법은 앞에 위치한 오브젝트에 의해 가려진 오브젝트는 쉐이딩을 수행하지 않는 방법이다.
17단계는 테스트 및 믹싱(testing and mixing) 단계를 나타낸다.
18단계는 프레임 버퍼에 저장된 프레임을 표시하는 단계를 나타낸다. 11 내지 17단계를 통해 생성된 프레임은 프레임 버퍼에 저장된다. 프레임 버퍼에 저장된 프레임은 디스플레이 장치를 통해 표시된다.
도 2는 일 실시 예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 2를 참고하면, 컴퓨팅 장치(1)는 GPU(Graphic Processing Unit)(10), CPU(Central Processing Unit)(20), 메모리(30), 디스플레이 장치(40) 및 Bus(50)를 포함한다. 도 2에 도시된 컴퓨팅 장치(1)에는 실시 예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
컴퓨팅 장치(1)는 데스크탑 컴퓨터, 노트북 컴퓨터, 스마트폰, PDA (personal digital assistants), 휴대형 미디어 플레이어, 비디오 게임용 콘솔, 텔레비젼 셋탑 박스, 태블릿 디바이스, 이북 리더, 웨어러블 디바이스, HMD(Head Mounted Display) 디바이스 등을 예로 들 수 있지만, 이에 제한되지 않는다. 즉, 컴퓨팅 장치(1)는 컨텐츠의 디스플레이를 위한 그래픽스 프로세싱 기능을 갖는 장치로서, 컴퓨팅 장치(1)의 범주에는 다양한 장치들이 포함될 수 있다.
CPU(20)는 컴퓨팅 장치(1)의 전반적인 동작들 및 기능들을 제어하는 하드웨어이다. 예를 들어, CPU(20)는 운영체제(Operating System, OS)를 구동하고, GPU(10)를 위한 그래픽스 API(Application Programming Interface)를 호출하고, GPU(10)의 드라이버를 실행시킬 수 있다. 또한, CPU(20)는 메모리(30)에 저장된 다양한 어플리케이션들, 예를 들어 웹 브라우징 어플리케이션, 게임 어플리케이션, 비디오 어플리케이션 등을 실행할 수 있다.
또한, CPU(20)는 메모리(30)에 저장된 컴파일러(compiler)를 실행할 수 있다. 컴파일러는 어플리케이션 등으로부터 수신된 명령어를 GPU(10)가 실행하는 인스트럭션으로 변환할 수 있다. 컴파일러는 인스트럭션들을 GPU(10)로 출력한다. 컴파일러는 각각의 인스트럭션에 대한 인스트럭션 마스크를 생성할 수 있다. 인스트럭션 마스크는 인스트럭션에 의해 영향을 받는 컴포넌트를 나타낸다. 생성된 인스트럭션 마스크는 GPU(10)로 출력된다. 인스트럭션 마스크는 CPU(20), 컴파일러, GPU(10), 래스터라이저 등에 의해 생성될 수 있다. 래스터라이저는 고정된 기능을 수행하는 하드웨어로 구현될 수 있다.
GPU(10)는 그래픽스 파이프라인(graphics pipeline)(100)을 수행하는 장치로서, 그래픽 전용 프로세서에 해당될 수 있다. 즉, GPU(10)는 3차원 이미지 상의 3차원 객체들을 디스플레이용의 2차원 이미지로 렌더링하기 위해 3차원 그래픽스 파이프라인을 실행하도록 구현된 하드웨어일 수 있다. 예를 들면, GPU(10)는 쉐이딩, 블렌딩, 일루미네이팅과 같은 다양한 기능들 및 디스플레이될 픽셀들에 대한 픽셀 값들을 생성하기 위한 다양한 기능들을 수행할 수도 있다. 한편, GPU(10)는 타일 기반 렌더링(tile-based rendering, TBR)을 위한 타일 기반(tile-based) 그래픽스 파이프라인도 수행할 수 있다.
GPU(10)는 적어도 하나의 프로세서를 포함할 수 있다. 프로세서는 프로그램에 따라 다른 동작을 수행할 수 있다. 또한, GPU(10)는 지정된 연산을 수행하는 하드웨어를 더 포함할 수 있다. GPU(10)는 래스터라이저(Rasterizer), 쉐이더(shader) 등을 포함할 수 있다.
도 2를 참고하면, GPU(10)에 의해 처리되는 그래픽스 파이프라인(100)은, 다양한 버전들의 DirectX, OpenGL API 등과 같은 그래픽스 API에 의해 정의된 그래픽스 파이프라인에 해당될 수 있다. 즉, 본 실시예에 따른 그래픽스 파이프라인(100)은 어느 하나의 버전 또는 어느 하나의 API 종류에 의해 제한되지 않고 다양한 API들에 적용될 수 있다.
메모리(30)는 컴퓨팅 장치(1) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(30)는 GPU(10) 및 CPU(20)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(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), 또는 플래시 메모리를 포함하며, 나아가서, 컴퓨팅 장치(1)에 액세스될 수 있는 외부의 다른 스토리지 디바이스를 포함할 수 있다.
메모리(30)는 프레임 버퍼(frame buffer)를 포함할 수 있고, 프레임 버퍼는 디스플레이 장치(40)로 출력될 이미지를 저장할 수 있다.
디스플레이 장치(40)는 GPU(10)에 의해 처리된 이미지를 표시하는 하드웨어이다. 디스플레이 장치(40)는 소정의 해상도의 스크린 픽셀들을 구비하고 있고, GPU(10)는 이 해상도에 맞는 이미지를 렌더링한다. 디스플레이 장치(40)는 LCD, OLED 등과 같은 다양한 종류의 디스플레이 패널로 구현될 수 있다. 예를 들어, 디스플레이 장치(40)는 펜타일(PenTile) 디스플레이 장치일 수 있다. 펜타일 디스플레이 장치의 하나의 픽셀은 전체 컴포넌트들 중 일부 컴포넌트만을 포함할 수 있다. 일 예로, 전체 컴포넌트들은 R,G,B,A 일 수 있다. R은 레드 컴포넌트(또는 레드 채널)이고, G는 그린 컴포넌트(또는 그린 채널)이고, B는 블루 컴포넌트(또는 블루 채널)이고, A는 알파(Alpha) 컴포넌트(또는 알파 채널)이다. R,G,B는 색상을 나타내고, A는 투명도를 나타낸다. 예를 들어, 펜타일 디스플레이 장치의 제1 픽셀은 레드 컴포넌트 및 그린 컴포넌트를 포함하고, 제2 픽셀은 그린 컴포넌트 및 블루 컴포넌트를 포함할 수 있다. 깊이 컴포넌트도 전체 컴포넌트들에 포함될 수 있다.
Bus(50)는 컴퓨팅 장치(1) 내의 하드웨어들 간에 데이터를 송수신할 수 있도록 하드웨어들을 연결시켜 주는 하드웨어로서, Bus(50)는 예를 들어 PCI bus, PCI Express bus 등과 같은 다양한 종류들을 포함할 수 있다.
도 3은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 순서도이다. 도 3을 참조하면, GPU(10)는 타일들이 포함하는 프리미티브에 기초하여 렌더링의 순서를 결정하고, 렌더링 순서에 따라 타일들을 렌더링할 수 있다.
단계 310에서, GPU(10)는 드로우콜을 CPU(20)로부터 수신한다. 드로우콜은 GPU(10)가 프레임을 렌더링하기 위한 정보를 포함한다. 다시 말해서, GPU(10)는 드로우콜에 따라 프레임을 렌더링한다.
단계 320에서, GPU(10)는 드로우콜에 기초하여 프레임에서 프리미티브들의 위치를 결정한다. 하나의 프레임에는 복수의 프리미티브들이 포함될 수 있다.
단계 330에서, GPU(10)는 GPU(10)는 프레임을 복수의 타일들로 분할한다. 타일은 GPU(10)가 렌더링하는 단위이다.
단계 340에서, GPU(10)는 타일들이 포함하는 프리미티브들에 기초하여 타일들의 렌더링 순서를 결정하고, 렌더링 순서에 따라 타일들을 렌더링한다. GPU(10)는 타일들이 공통으로 포함하는 프리미티브의 수를 결정하고, 프리미티브의 수에 기초하여 타일들의 렌더링 순서를 결정한다. 예를 들어, GPU(10)는 2개의 타일들이 공통으로 포함하는 프리미티브가 몇 개인지를 결정하고, 공통으로 포함하는 프리미티브의 수가 많은 타일들을 우선적으로 렌더링한다.
GPU(10)는 타일이 포함하는 프리미티브를 나타내는 비트 스트림을 생성하고, 서로 다른 타일에 대한 비트 스트림들을 AND 연산하여 서로 다른 타일들이 공통으로 포함하는 프리미티브의 수를 확인할 수 있다. 만약, 제1 타일과 제2 타일이 2개의 프리미티브를 공통으로 포함하고, 제1 타일과 제3 타일이 3개의 프리미티브를 공통으로 포함할 때, GPU(10)는 제1 타일, 제3 타일, 제2 타일 순서로 렌더링할 수 있다.
GPU(10)는 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 연속하여 렌더링할 수 있다. 예를 들어, 제1 타일, 제2 타일, 제7 타일, 제8 타일이 동일한 프리미티브를 포함하면, GPU(10)는 제1 타일, 제2 타일, 제7 타일, 제8 타일을 연속하여 렌더링할 수 있다.
GPU(10)는 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 동일한 코어에 할당할 수 있다. 예를 들어, 제1 타일, 제2 타일, 제7 타일, 제8 타일이 동일한 프리미티브를 포함하면, GPU(10)는 제1 타일, 제2 타일, 제7 타일, 제8 타일을 제1 코어에 모두 할당할 수 있다. 제1 코어는 할당된 타일들을 렌더링한다.
GPU(10)는 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 동일한 캐쉬를 공유하는 복수의 코어들에 할당할 수 있다. 예를 들어, 제1 타일 및 제2 타일이 동일한 프리미티브를 포함하고, 제1 코어 및 제2 코어가 동일한 캐쉬를 공유하면, GPU(10)는 제1 타일을 제1 코어에 할당하고, 제2 타일을 제2 코어에 할당할 수 있다. 제1 코어와 제2 코어가 동일한 캐쉬를 공유한다는 것은 제1 코어와 제2 코어가 L1 캐쉬(Level 1 cache)를 공유한다는 것을 의미할 수 있고, 제1 코어와 제2 코어가 L1 캐쉬에 저장된 데이터를 이용한다는 것을 의미할 수 있다.
도 4는 타일 기반 렌더링 방법을 설명하기 위한 도면이다. 도 4를 참조하면, 프레임(400)은 10개의 타일들(Tile_A 내지 Tile_J)로 분할된다. 프레임(400)은 4개의 프리미티브들(primitiveID 0 내지 3)을 포함한다.
GPU(10)는 동일한 프리미티브를 포함하는 타일들을 연속적으로 처리할 수 있다. 동일한 프리미티브를 포함하는 타일들을 연속적으로 처리한다는 것은 동일한 프리미티브들을 포함하는 타일들을 처리한 후에 다른 타일들을 처리하는 것을 의미할 수 있다. 예를 들어, GPU(10)는 Tile_A 및 Tile_F를 연속하여 처리할 수 있다. Tile_A 및 Tile_F는 프리미티브ID 0인 프리미티브를 포함하기 때문에, 동일한 프리미티브를 포함하는 타일들이다. 따라서, GPU(10)는 Tile_A를 처리한 후에 Tile_C, Tile_D 등을 처리하기 이전에 Tile_F를 처리할 수 있다.
GPU(10)는 Tile(A, B, F, G, H, I, J, D, E) 순서로 타일들을 처리할 수 있다. GPU(10)는 Tile_A를 처리한 후에, Tile_A가 포함하는 프리미티브들(primitive ID 0, 1)와 동일한 프리미티브를 포함하는 타일들(Tile_B, F, G)를 처리한다. GPU(10)는 Tile_G를 처리한 후에, Tile_G가 포함하는 프리미티브(primitive ID 3)을 포함하는 타일들(Tile_G, H, I, J)를 처리한다. GPU(10)는 Tile_I가 포함하는 프리미티브들(primitive ID 2, 3)과 동일한 프리미티브를 포함하는 타일들(Tile_D, E)를 처리한다.
또는, GPU(10)는 동일한 프리미티브를 포함하는 타일을 동일한 캐쉬를 공유하는 코어들에서 처리할 수 있다. 예를 들어, 제1 캐쉬를 공유하는 제1 내지 제4 코어들이 있고, 제2 캐쉬를 공유하는 제5 내지 8 코어들이 있다. 타일들(Tile_A, B, F, G)이 프리미티브들(primitive ID 0, 1)을 공유할 때, GPU(10)는 타일들(Tile_A, B, F, G)을 제1 내지 제4 코어들에 할당할 수 있다. 따라서, 제1 내지 제4 코어들은 타일들(Tile_A, B, F, G)을 렌더링한다. 제1 캐쉬가 타일들(Tile_A, B, F, G)에 대한 데이터를 저장하고 있으므로, 제1 내지 제4 코어들은 제1 캐쉬에 저장된 데이터를 이용하여 타일들(Tile_A, B, F, G)을 렌더링할 수 있다. 동일한 캐쉬를 공유하는 코어들이 동일한 프리미티브들을 포함하는 타일들을 렌더링함으로써, 캐쉬의 히트율을 높일 수 있다.
도 5는 각 타일들이 포함하는 프리미티브를 나타내는 비트 스트림을 설명하기 위한 도면이다. 도 5를 참조하면, GPU(10)는 각 타일들이 포함하는 프리미티브를 비트 스트림으로 표시할 수 있다. 도 5는 도 4에 도시된 프레임(400)에 포함된 타일들에 대한 비트 스트림을 도시한다.
Tile_A는 2개의 프리미티브들(primitive ID 0, 1)을 포함하므로, GPU(10)는 Tile_A에 대한 비트 스트림(1100)을 생성한다. Tile_B도 Tile_A와 동일하게 2개의 프리미티브들(primitive ID 0, 1)을 포함하므로, GPU(10)는 Tile_B에 대한 비트 스트림(1100)을 생성한다. Tile_C는 아무런 프리미티브를 포함하지 않으므로, GPU(10)는 Tile_C에 대한 비트 스트림(0000)을 생성한다. Tile_D는 2개의 프리미티브들(primitive ID 2, 3)을 포함하므로, GPU(10)는 Tile_D에 대한 비트 스트림(0011)을 생성한다. 다른 타일들에 대한 비트 스트림도 동일한 방식에 따라 생성된다.
GPU(10)는 생성된 비트 스트림을 이용하여 타일들의 스케줄을 결정할 수 있다. GPU(10)는 2개의 비트 스트림들을 AND 연산하여, 타일들이 공유하는 프리미티브를 확인할 수 있다.
도 6은 타일들의 스케줄을 결정하는 방법을 설명하기 위한 도면이다. 도 6은 Tile_A의 비트 스트림과 다른 타일들의 비트 스트림을 AND 연산한 결과를 이용하여 타일들의 스케줄을 결정하는 것을 설명한다.
Tile_A의 비트 스트림은 1100 이다. 다른 타일들의 비트 스트림은 도 5에 도시되어 있다. 도 6의 표에 도시된 비트 스트림은 Tile_A의 비트 스트림과 다른 타일의 비트 스트림을 AND 연산한 결과를 나타낸다. 예를 들어, Tile_A의 비트 스트림은 1100 이고, Tile_B의 비트 스트림은 1100 이므로, Tile_A의 비트 스트림(1100)과 Tile_B의 비트 스트림(1100)을 AND 연산하면 1100 이 된다. 또한, Tile_D의 비트 스트림은 0011 이므로, Tile_A의 비트 스트림(1100)과 Tile_D의 비트 스트림(0011)을 AND 연산하면 0000 이 된다.
GPU(10)는 AND 연산 결과로 생성된 비트 스트림에 포함된 1의 수에 따라 공통 프리미티브의 수를 확인할 수 있다. 예를 들어, Tile_A의 비트 스트림(1100)과 Tile_B의 비트 스트림(1100)을 AND 연산한 비트 스트림은 1100 이고, 비트 스트림 1100은 1을 2개 포함하기 때문에, Tile_A와 Tile_B는 2개의 프리미티브들을 공통으로 포함한다.
GPU(10)는 공통 프리미티브의 수에 따라 타일들의 스케줄을 결정한다. 도 6의 경우, Tile_A와 가장 많은 프리미티브를 공유하는 Tile_B가 Tile_A 다음에 처리되고, Tile_F 와 Tile_G가 Tile_B 다음에 처리된다.
도 7은 타일들의 스케줄을 결정하는 방법을 설명하기 위한 도면이다. 도 7은 Tile_D의 비트 스트림과 다른 타일들의 비트 스트림을 AND 연산한 결과를 이용하여 타일들의 스케줄을 결정하는 것을 설명한다.
Tile_D의 비트 스트림은 0011 이다. 다른 타일들의 비트 스트림은 도 5에 도시되어 있다. 도 7의 표에 도시된 비트 스트림은 Tile_D의 비트 스트림과 다른 타일의 비트 스트림을 AND 연산한 결과를 나타낸다. 예를 들어, Tile_D의 비트 스트림은 0011 이고, Tile_E의 비트 스트림은 0010 이므로, Tile_D의 비트 스트림(0011)과 Tile_E의 비트 스트림(0010)을 AND 연산하면 0010 이 된다. 또한, Tile_G의 비트 스트림은 1001 이므로, Tile_G의 비트 스트림(1001)과 Tile_D의 비트 스트림(0011)을 AND 연산하면 0001 이 된다.
GPU(10)는 AND 연산 결과로 생성된 비트 스트림에 포함된 1의 수에 따라 공통 프리미티브의 수를 확인할 수 있다. 예를 들어, Tile_D의 비트 스트림(0011)과 Tile_E(0010)의 비트 스트림을 AND 연산한 비트 스트림은 0010 이고, 비트 스트림 0010은 1을 1개 포함하기 때문에, Tile_D와 Tile_E는 1개의 프리미티브를 공통으로 포함한다.
GPU(10)는 공통 프리미티브의 수에 따라 타일들의 스케줄을 결정한다. 도 7의 경우, Tile_D와 가장 많은 프리미티브를 공유하는 Tile_I가 Tile_D 다음에 처리되고, Tile_E, Tile_H, Tile_J 가 Tile_I 다음에 처리된다.
도 6 내지 7의 결과를 종합하여, GPU(10)는 타일들(Tile_A 내지 Tile_J)의 처리 순서를 결정할 수 있다. GPU(10)는 A, B, F, G, D, I, E, H, J 순서로 타일들을 처리할 수 있다. Tile_C는 아무런 프리미티브를 포함하지 않으므로 처리 순서에서 생략되었다.
도 8은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 순서도이다. 도 8을 참조하면, GPU(10)는 타일들이 포함하는 프리미티브에 기초하여 타일을 렌더링할 코어를 결정할 수 있다.
단계 810에서, GPU(10)는 드로우콜을 CPU(20)로부터 수신한다. 드로우콜은 GPU(10)가 프레임을 렌더링하기 위한 정보를 포함한다. 다시 말해서, GPU(10)는 드로우콜에 따라 프레임을 렌더링한다.
단계 820에서, GPU(10)는 드로우콜에 기초하여 프레임에서 프리미티브들의 위치를 결정한다. 하나의 프레임에는 복수의 프리미티브들이 포함될 수 있다.
단계 830에서, GPU(10)는 프레임을 복수의 타일들로 분할한다. 타일은 GPU(10)가 렌더링하는 단위이다.
단계 840에서, GPU(10)는 타일들이 포함하는 프리미티브들에 기초하여 타일들을 할당할 코어를 결정하고, 코어는 할당된 타일을 렌더링한다.
GPU(10)는 동일한 프리미티브를 포함하는 타일들을 하나의 코어에 할당한다. 예를 들어, 제1 타일, 제2 타일, 제7 타일, 제8 타일이 동일한 프리미티브를 포함하면, GPU(10)는 제1 타일, 제2 타일, 제7 타일, 제8 타일 모두를 제1 코어에 할당할 수 있다.
또 다른 예로서, GPU(10)는 동일한 프리미티브를 포함하는 타일들을 동일한 캐쉬를 공유하는 복수의 코어들에 할당한다. 예를 들어, 제1 타일 및 제2 타일이 동일한 프리미티브를 포함하고, 제1 코어 및 제2 코어가 동일한 캐쉬를 공유하면, GPU(10)는 제1 타일을 제1 코어에 할당하고, 제2 타일을 제2 코어에 할당할 수 있다. 제1 코어와 제2 코어가 동일한 캐쉬를 공유한다는 것은 제1 코어와 제2 코어가 L1 캐쉬(Level 1 cache)를 공유한다는 것을 의미할 수 있고, 제1 코어와 제2 코어가 L1 캐쉬에 저장된 데이터를 이용한다는 것을 의미할 수 있다.
도 9는 일 실시 예에 따른 GPU를 설명하기 위한 블록도이다. 도 9를 참조하면, GPU(900)는 동일한 프리미티브를 포함하는 타일을 하나의 코어에 할당할 수 있다. 도 9에서 제1 코어(911)는 제1 L1 캐쉬(921)를 사용하고, 제2 코어(912)는 제2 L1 캐쉬(922)를 사용한다. 제1 코어(911)는 제2 L1 캐쉬(922)를 사용하지 않는다.
제1 코어(911)는 데이터의 저장 여부에 따라 제1 L1 캐쉬(921), L2 캐쉬(930) 및 메모리(940)에 순차적으로 접속할 수 있다. 제2 코어(912)는 데이터의 저장 여부에 따라 제2 L1 캐쉬(922), L2 캐쉬(930) 및 메모리(940)에 순차적으로 접속할 수 있다.
제1 코어(911)는 타일을 렌더링할 때, 제1 L1 캐쉬(921)에 데이터가 저장되어 있는지 확인하고, 제1 L1 캐쉬(921)에 필요한 데이터가 저장되어 있지 않으면 L2 캐쉬(930)에 데이터가 저장되어 있는지 확인한다. 제1 L1 캐쉬(921)에 필요한 데이터가 저장되어 있으면(cache hit), 제1 코어(911)는 제1 L1 캐쉬(921)에 저장된 데이터를 이용하여 타일을 렌더링한다. 제1 코어(911)는 제1 L1 캐쉬(921) 및 L2 캐쉬(930)에 필요한 데이터가 저장되어 있지 않으면 메모리(940)에 데이터가 저장되어 있는지 확인한다.
제2 코어(912)는 타일을 렌더링할 때, 제2 L1 캐쉬(922)에 데이터가 저장되어 있는지 확인하고, 제2 L1 캐쉬(922)에 필요한 데이터가 저장되어 있지 않으면 L2 캐쉬(930)에 데이터가 저장되어 있는지 확인한다. 제2 L1 캐쉬(922)에 필요한 데이터가 저장되어 있으면(cache hit), 제2 코어(912)는 제2 L1 캐쉬(922)에 저장된 데이터를 이용하여 타일을 렌더링한다. 제2 코어(912)는 제2 L1 캐쉬(922) 및 L2 캐쉬(930)에 필요한 데이터가 저장되어 있지 않으면 메모리(940)에 데이터가 저장되어 있는지 확인한다.
상기와 같이, 제1 코어(911) 및 제2 코어(912)는 L1 캐쉬들(921, 922), L2 캐쉬(930) 및 메모리(940) 순서대로 데이터의 저장 여부를 확인한다. 제1 코어(911) 및 제2 코어(912)는 L1 캐쉬들(921, 922), L2 캐쉬(930) 및 메모리(940)등에 저장된 데이터를 이용하여 타일들을 렌더링하기 때문에, 제1 코어(911) 및 제2 코어(912)가 메모리(940)에 접속하는 횟수나 메모리(940)로부터 독출하는 데이터의 양을 줄이기 위해서, 캐쉬의 히트율을 높여야 한다. 따라서, 제1 코어(911) 및 제2 코어(912)는 동일한 프리미티브를 포함하는 타일들을 연속으로 렌더링함으로써, 캐쉬의 히트율을 높일 수 있다.
도 10은 또 다른 실시 예에 따른 GPU를 설명하기 위한 블록도이다. 도 10을 참조하면, 제1 코어(1011) 및 제2 코어(1012)는 제1 L1 캐쉬(1021)를 사용하고, 제3 코어(1013) 및 제4 코어(1014)는 제2 L1 캐쉬(1022)를 사용한다. 다시 말해서, 제1 코어(1011) 및 제2 코어(1012)는 제1 L1 캐쉬(1021)를 공유한다.
도 10에서는 2개의 코어들이 1개의 캐쉬를 공유하는 경우를 예를 들어 설명하였으나, 3개 이상의 코어들이 1개의 캐쉬를 공유하거나, 2개 이상의 코어들이 2개 이상의 캐쉬를 공유할 수도 있다.
GPU(1000)는 동일한 프리미티브를 포함하는 타일들을 동일한 캐쉬를 공유하는 복수의 코어들에 할당할 수 있다. 예를 들어, 제1 타일 및 제2 타일이 동일한 프리미티브를 포함하면, GPU(1000)는 제1 타일을 제1 코어(1011)에 할당하고, 제2 타일을 제2 코어(1012)에 할당할 수 있다. 또는, GPU(1000)는 제1 타일을 제3 코어(1013)에 할당하고, 제2 타일을 제4 코어(1014)에 할당할 수도 있다. 제1 타일 및 제2 타일이 제1 코어(1011) 및 제2 코어(1012)에 할당되면, 제1 타일 및 제2 타일에 포함된 프리미티브의 데이터가 제1 L1 캐쉬(1021)에 로딩된다. 따라서, 제1 코어(1011) 및 제2 코어(1012)는 제1 L1 캐쉬(1021)에 로딩된 데이터를 이용하여 제1 타일 및 제2 타일을 렌더링할 수 있다.
제1 코어(1011) 및 제2 코어(1012)는 제1 L1 캐쉬(1021), L2 캐쉬(1030) 및 메모리(1040)에 순차적으로 접속할 수 있다. 제3 코어(1013) 및 제4 코어(1014)는 제2 L1 캐쉬, L2 캐쉬(1030) 및 메모리(1040)에 순차적으로 접속할 수 있다.
GPU(1000)는 프로세서(미도시)를 포함할 수 있고, 프로세서는 복수의 코어들(1011 내지 1014), 타일 스케줄러(Tile scheduler), 복수의 캐쉬들(1021, 1022, 1030) 등을 포함할 수 있다. 타일 스케줄러는 코어들(1011 내지 1014)에 할당되는 타일들을 결정하거나, 코어들(1011 내지 1014)에 할당되는 타일들의 순서를 결정할 수 있다. 타일 스케줄러는 타일이 포함하는 프리미티브를 나타내는 비트 스트림을 이용하여 타일들의 렌더링 순서를 결정할 수 있다. 타일 스케줄러는 타일들을 복수의 코어들(1011 내지 1014)에 할당할 수 있다.
복수의 코어들(1011 내지 1014)은 타일들을 렌더링한다. 복수의 캐쉬들(1021, 1022, 1030)은 코어들(1011 내지 1014)이 타일들을 렌더링할 때 사용하는 데이터가 저장된다.
본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (13)

  1. 타일 기반 렌더링 방법에 있어서,
    드로우콜을 수신하는 단계;
    상기 드로우콜에 기초하여 프레임에서 프리미티브들의 위치를 결정하는 단계;
    상기 프레임을 복수의 타일들로 분할하는 단계; 및
    상기 타일들을 렌더링하는 단계;를 포함하고,
    상기 렌더링하는 단계는, 상기 타일들이 포함하는 프리미티브들에 기초하여 상기 타일들의 렌더링 순서를 결정하고, 상기 렌더링 순서에 따라 상기 타일들을 렌더링하는 것을 특징으로 하는 렌더링 방법.
  2. 제 1 항에 있어서, 상기 렌더링하는 단계는,
    상기 타일들이 공통으로 포함하는 프리미티브의 수를 결정하는 단계; 및
    상기 프리미티브의 수에 기초하여 상기 렌더링 순서를 결정하는 단계를 포함하는 렌더링 방법.
  3. 제 1 항에 있어서, 상기 렌더링하는 단계는,
    상기 타일들 중에서 공통으로 포함하는 프리미티브의 수가 많은 타일들을 연속하여 렌더링하는 것을 특징으로 하는 렌더링 방법.
  4. 제 1 항에 있어서, 상기 렌더링하는 단계는,
    상기 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 연속하여 렌더링하는 것을 특징으로 하는 렌더링 방법.
  5. 제 1 항에 있어서, 상기 렌더링하는 단계는,
    하나의 코어가 상기 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 렌더링하는 것을 특징으로 하는 렌더링 방법.
  6. 제 1 항에 있어서, 상기 렌더링하는 단계는,
    동일한 캐쉬를 공유하는 복수의 코어들이 상기 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 렌더링하는 것을 특징으로 하는 렌더링 방법.
  7. GPU(Graphic Processing Unit)에 있어서,
    메모리;
    적어도 하나의 코어 및 적어도 하나의 캐쉬를 포함하는 프로세서;를 포함하고,
    상기 프로세서는 드로우콜에 기초하여 프레임에서 프리미티브들의 위치를 결정하고, 상기 프레임을 복수의 타일들로 분할하고, 상기 타일들이 포함하는 프리미티브들에 기초하여 상기 타일들의 렌더링 순서를 결정하고, 상기 렌더링 순서에 따라 상기 타일들을 렌더링하는 것을 특징으로 하는 GPU.
  8. 제7항에 있어서,
    상기 프로세서는 상기 타일들이 공통으로 포함하는 프리미티브의 수를 결정하고, 상기 프리미티브의 수에 기초하여 상기 렌더링 순서를 결정하는 단계를 포함하는 GPU.
  9. 제7항에 있어서,
    상기 프로세서는 상기 타일들 중에서 공통으로 포함하는 프리미티브의 수가 많은 타일들을 연속하여 렌더링하는 것을 특징으로 하는 GPU.
  10. 제7항에 있어서,
    상기 프로세서는 상기 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 연속하여 렌더링하는 것을 특징으로 하는 GPU.
  11. 제7항에 있어서,
    상기 프로세서는 상기 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 하나의 코어에 할당하는 것을 특징으로 하는 GPU.
  12. 제7항에 있어서,
    상기 프로세서는 상기 타일들 중에서 동일한 프리미티브를 포함하는 타일들을 동일한 캐쉬를 공유하는 복수의 코어들에 할당하는 것을 특징으로 하는 렌더링 방법.
  13. 제 1 항 내지 제 6 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적인(non-transitory) 기록매체.
KR1020160153318A 2016-11-17 2016-11-17 타일 기반 렌더링 방법 및 장치 KR102646906B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160153318A KR102646906B1 (ko) 2016-11-17 2016-11-17 타일 기반 렌더링 방법 및 장치
US15/604,774 US10553024B2 (en) 2016-11-17 2017-05-25 Tile-based rendering method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160153318A KR102646906B1 (ko) 2016-11-17 2016-11-17 타일 기반 렌더링 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180055446A true KR20180055446A (ko) 2018-05-25
KR102646906B1 KR102646906B1 (ko) 2024-03-12

Family

ID=62108644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160153318A KR102646906B1 (ko) 2016-11-17 2016-11-17 타일 기반 렌더링 방법 및 장치

Country Status (2)

Country Link
US (1) US10553024B2 (ko)
KR (1) KR102646906B1 (ko)

Families Citing this family (11)

* 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
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
CN108228481A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于保证数据一致性的方法和设备
US10649524B2 (en) * 2017-04-07 2020-05-12 Intel Corporation Apparatus and method for foveated rendering, bin comparison and TBIMR memory-backed storage for virtual reality implementations
GB2570743B (en) * 2018-06-29 2021-06-23 Imagination Tech Ltd Tile assignment to processing cores within a graphics processing unit
CN111062858B (zh) * 2019-12-27 2023-09-15 西安芯瞳半导体技术有限公司 高效的提前渲染方法、装置及计算机存储介质
CN111080761B (zh) * 2019-12-27 2023-08-18 西安芯瞳半导体技术有限公司 一种渲染任务的调度方法、装置及计算机存储介质
CN114463160B (zh) * 2022-01-30 2022-10-28 摩尔线程智能科技(北京)有限责任公司 一种图形流水线的并行处理方法、装置及可读存储介质
CN116385253A (zh) * 2023-01-06 2023-07-04 格兰菲智能科技有限公司 图元绘制方法、装置、计算机设备和存储介质
CN116188244B (zh) * 2023-04-25 2023-07-25 摩尔线程智能科技(北京)有限责任公司 图块分发方法、装置、设备及存储介质
CN117934260A (zh) * 2024-03-25 2024-04-26 摩尔线程智能科技(北京)有限责任公司 渲染方法、图块分配装置、图形处理设备及计算设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120139284A (ko) * 2011-06-17 2012-12-27 삼성전자주식회사 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치
US20130254727A1 (en) * 2012-03-22 2013-09-26 Synopsys, Inc System and methods for handling verification errors
US20150022525A1 (en) * 2013-07-19 2015-01-22 Adobe Systems Incorporated Triangle rasterization
US20150228049A1 (en) * 2014-02-13 2015-08-13 Imagination Technologies Limited Processing of Primitive Blocks in Parallel Tiling Engine Pipes
KR20160046293A (ko) * 2014-10-20 2016-04-28 에이알엠 리미티드 타일 기반 그래픽 처리장치 및 타일 기반 그래픽 처리장치에서 그래픽 처리를 수행하는 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6323860B1 (en) * 1999-03-17 2001-11-27 Nvidia Corporation Circuit and method for deferring the binding of render states to primitives in a graphics system
US7215679B2 (en) 2001-08-30 2007-05-08 Thomson Licensing Method, apparatus and data structure enabling multiple channel data stream transmission
US8111928B2 (en) 2003-02-13 2012-02-07 Ati Technologies Ulc Method and apparatus for compression of multi-sampled anti-aliasing color data
US7474313B1 (en) 2005-12-14 2009-01-06 Nvidia Corporation Apparatus, method, and system for coalesced Z data and color data for raster operations
KR100834669B1 (ko) 2006-10-20 2008-06-02 삼성전자주식회사 썸네일 이미지 생성을 위한 웨이블릿 변환 기반 이미지부호화기, 복호화기 및 그 방법
US8331663B2 (en) 2007-06-28 2012-12-11 Qualcomm Incorporated Efficient image compression scheme to minimize storage and bus bandwidth requirements
GB0723536D0 (en) 2007-11-30 2008-01-09 Imagination Tech Ltd Multi-core geometry processing in a tile based rendering system
US8933943B2 (en) 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
JP5663979B2 (ja) * 2010-06-29 2015-02-04 ソニー株式会社 画像管理サーバ、画像表示装置、画像提供方法、画像取得方法、プログラム及び画像管理システム
US8982136B2 (en) 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
EP2648107B1 (en) 2012-04-05 2016-09-28 Siemens Healthcare GmbH Volume rendering on shared memory systems with multiple processors by optimizing cache reuse
US9483861B2 (en) 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
US9370718B2 (en) * 2014-01-02 2016-06-21 Ubitus Inc. System and method for delivering media over network
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US9754344B2 (en) 2014-06-27 2017-09-05 Samsung Electronics Co., Ltd. Forward late predictive rendering in a graphics system
KR102327144B1 (ko) 2014-11-26 2021-11-16 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법
US20160292812A1 (en) * 2015-03-31 2016-10-06 Qualcomm Incorporated Hybrid 2d/3d graphics rendering

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120139284A (ko) * 2011-06-17 2012-12-27 삼성전자주식회사 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치
US20130254727A1 (en) * 2012-03-22 2013-09-26 Synopsys, Inc System and methods for handling verification errors
US20150022525A1 (en) * 2013-07-19 2015-01-22 Adobe Systems Incorporated Triangle rasterization
US20150228049A1 (en) * 2014-02-13 2015-08-13 Imagination Technologies Limited Processing of Primitive Blocks in Parallel Tiling Engine Pipes
KR20160046293A (ko) * 2014-10-20 2016-04-28 에이알엠 리미티드 타일 기반 그래픽 처리장치 및 타일 기반 그래픽 처리장치에서 그래픽 처리를 수행하는 방법

Also Published As

Publication number Publication date
US10553024B2 (en) 2020-02-04
KR102646906B1 (ko) 2024-03-12
US20180137677A1 (en) 2018-05-17

Similar Documents

Publication Publication Date Title
KR102646906B1 (ko) 타일 기반 렌더링 방법 및 장치
US10229529B2 (en) System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
US9547931B2 (en) System, method, and computer program product for pre-filtered anti-aliasing with deferred shading
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US8704830B2 (en) System and method for path rendering with multiple stencil samples per color sample
US10331448B2 (en) Graphics processing apparatus and method of processing texture in graphics pipeline
US9569862B2 (en) Bandwidth reduction using texture lookup by adaptive shading
US9530189B2 (en) Alternate reduction ratios and threshold mechanisms for framebuffer compression
US10055883B2 (en) Frustum tests for sub-pixel shadows
US9230363B2 (en) System, method, and computer program product for using compression with programmable sample locations
US9224227B2 (en) Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader
US9230362B2 (en) System, method, and computer program product for using compression with programmable sample locations
US20130127858A1 (en) Interception of Graphics API Calls for Optimization of Rendering
US9811940B2 (en) Bandwidth reduction using vertex shader
TWI786233B (zh) 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體
KR20160130629A (ko) 양안 시차 영상에 대한 렌더링 방법 및 장치
US10504281B2 (en) Tracking pixel lineage in variable rate shading
JP2017097870A (ja) グラフィックス処理装置を含むコンピューティング装置、及びグラフィックス処理装置においてグラフィックスパイプラインを実行する方法
US10262391B2 (en) Graphics processing devices and graphics processing methods
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
KR20180037839A (ko) 그래픽스 프로세싱 장치 및 인스트럭션의 실행 방법
US10311627B2 (en) Graphics processing apparatus and method of processing graphics pipeline thereof
KR102085701B1 (ko) 이미지를 렌더링하는 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant