KR20180015564A - Method and apparatus for performing tile-based rendering - Google Patents

Method and apparatus for performing tile-based rendering Download PDF

Info

Publication number
KR20180015564A
KR20180015564A KR1020170025653A KR20170025653A KR20180015564A KR 20180015564 A KR20180015564 A KR 20180015564A KR 1020170025653 A KR1020170025653 A KR 1020170025653A KR 20170025653 A KR20170025653 A KR 20170025653A KR 20180015564 A KR20180015564 A KR 20180015564A
Authority
KR
South Korea
Prior art keywords
tile
draw call
signature
rendering
frame
Prior art date
Application number
KR1020170025653A
Other languages
Korean (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 US15/666,123 priority Critical patent/US10373286B2/en
Publication of KR20180015564A publication Critical patent/KR20180015564A/en

Links

Images

Classifications

    • 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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

Disclosed is a method for performing tile-based rendering in a graphics processing device, which includes the steps of: receiving a first draw call used for rendering a first tile of a preceding frame; receiving a second draw call used for rendering a second tile of a succeeding frame corresponding to a position of the first tile; generating a signature of the first draw call and a signature of the second draw call; comparing the signature of the first draw call with the signature of the second draw call; and rendering the second tile by using a rendering result of the first tile according to a comparison result. Accordingly, the present invention can improve the performance of the graphics processing device.

Description

타일-기반 렌더링을 수행하는 방법 및 장치 {METHOD AND APPARATUS FOR PERFORMING TILE-BASED RENDERING}[0001] METHOD AND APPARATUS FOR PERFORMING TILE-BASED RENDERING [0002]

본 개시는 GPU (Graphics Processing Unit) 관한 것이며, 특히 GPU에서 타일-기반 렌더링을 수행하는 방법 및 장치를 제공한다.This disclosure relates to a Graphics Processing Unit (GPU), and more particularly, to a method and apparatus for performing tile-based rendering on a GPU.

GPU들, 특히 모바일 휴대전화 및 모바일 휴대전화와 같이 상대적으로 낮은 처리 능력을 갖는 전자 장치들에서 사용되는 GPU들은, 프레임을 작은 유닛 단위로 처리될 수 있도록 구분함으로써 데이터 처리를 용이하게 할 수 있다. 타일들은 작은 유닛 단위로 구분된 이후에 처리되고, 다시 서로 연결되어(stitched together) 이미지를 렌더링할 수 있다.GPUs, especially GPUs used in relatively low throughput electronic devices such as mobile phones and mobile phones, can facilitate data processing by separating frames into small units. The tiles are processed after being divided into small unit units and can be stitched together to render the image.

종래에는, 데이터와 연관된 디스플레이된 모든 프레임들은 타일로 구분되어 각기 처리되었다. 그러나, 대부분의 경우 인접한 프레임들은 동일/유사한 객체들을 디스플레이한다. 이러한 경우 인접한 프레임들은 동일한 타일들을 포함할 수 있다. 선행 프레임(preceding frame)의 타일과 동일한, 후속 프레임(succeeding frame)의 타일을 렌더링함으로써, 계산 오버헤드(computational overhead)를 줄일 수 있고 결과적으로 GPU의 성능을 향상시킬 수 있다.Conventionally, all displayed frames associated with data have been processed separately by tiles. However, in most cases, adjacent frames display the same / similar objects. In this case, adjacent frames may contain the same tiles. By rendering a tile of a succeeding frame that is the same as the tile of the preceding frame, the computational overhead can be reduced and the performance of the GPU can be improved as a result.

타일 렌더링에 관한 방법 및 시스템을 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.A method and system for tile rendering. The technical problem to be solved by this embodiment is not limited to the above-mentioned technical problems, and other technical problems can be deduced from the following embodiments.

상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면은, 선행 프레임의 제 1 타일의 렌더링에 이용되는 제 1 드로우콜을 수신하는 단계; 상기 제 1 타일의 위치에 대응되는, 후속 프레임의 제 2 타일의 렌더링에 이용되는 제 2 드로우콜을 수신하는 단계; 상기 제 1 드로우콜의 서명 및 상기 제 2 드로우콜 서명을 생성하는 단계; 상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명을 비교하는 단계; 상기 비교 결과에 따라, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일을 렌더링하는 단계;를 포함하는, 그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법을 제공할 수 있다.As a technical means to achieve the above-mentioned technical object, a first aspect of the present disclosure relates to a method for rendering a first tile, comprising: receiving a first draw call used for rendering a first tile of a preceding frame; Receiving a second draw call used to render a second tile of a subsequent frame, corresponding to a position of the first tile; Generating a signature of the first draw call and the second draw call signature; Comparing a signature of the first draw call and a signature of the second draw call; And rendering the second tile using a rendering result of the first tile according to a result of the comparison. The tile-based rendering may be performed in the graphics processing apparatus.

또한, 본 개시의 제 2 측면은, 적어도 하나의 인스트럭션을 저장하기 위한 메모리; 및 상기 메모리에 저장된 상기 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써, 선행 프레임의 제 1 타일의 렌더링에 이용되는 제 1 드로우콜을 수신하고, 상기 제 1 타일의 위치에 대응되는, 후속 프레임의 제 2 타일의 렌더링에 이용되는 제 2 드로우콜을 수신하고, 상기 제 1 드로우콜의 서명 및 상기 제 2 드로우콜 서명을 생성하고, 상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명을 비교하고, 상기 비교 결과에 따라, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일을 렌더링하는, 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치를 제공할 수 있다.Also, a second aspect of the present disclosure provides a computer program product, comprising: a memory for storing at least one instruction; And at least one processor executing the at least one instruction stored in the memory, wherein the processor executes the one or more instructions to receive a first draw call used to render a first tile of a preceding frame A second draw call used to render a second tile of a subsequent frame corresponding to a position of the first tile, generating a signature of the first draw call and a second draw call signature, Based rendering that compares a signature of a draw call with a signature of the second draw call and renders the second tile using a rendering result of the first tile according to a result of the comparison, Device can be provided.

또한, 본 개시의 제 3 측면은, 선행 프레임 및 후속 프레임과 각각 연관된 적어도 하나의 드로우콜을 처리함으로써, 상기 선행 프레임 내 타일과 동일한 상기 후속 프레임에 포함된 적어도 하나의 타일을 식별하는 단계; 상기 후속 프레임을 렌더링하기 위해 상기 선행 프레임으로부터 상기 적어도 하나의 타일을 저장하는 단계; 및 상기 저장된 적어도 하나의 타일을 이용하여 상기 후속 프레임을 렌더링하는 단계; 를 포함하는, 그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법을 제공할 수 있다.Also, a third aspect of the present disclosure provides a method comprising: identifying at least one tile included in the same frame as a tile in the preceding frame by processing at least one draw call associated with a preceding frame and a subsequent frame, respectively; Storing the at least one tile from the preceding frame to render the subsequent frame; And rendering the subsequent frame using the stored at least one tile; Based rendering in a graphics processing device, which includes a rendering device and a rendering device.

또한, 본 개시의 제 4 측면은, 적어도 하나의 인스트럭션을 저장하기 위한 메모리; 및 상기 메모리에 저장된 상기 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는 상기 적어도 하나의 인스트럭션을 실행함으로써, 선행 프레임 및 후속 프레임과 각각 연관된 적어도 하나의 드로우콜을 처리하고, 상기 처리된 드로우콜들을 분석함으로써, 상기 선행 프레임 내 타일과 동일한 상기 후속 프레임에 포함된 적어도 하나의 타일을 식별하고, 상기 후속 프레임을 렌더링하기 위해 상기 선행 프레임으로부터 상기 적어도 하나의 타일을 보유하는, 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치를 제공할 수 있다.Also, a fourth aspect of the present disclosure provides a computer program product, comprising: a memory for storing at least one instruction; And at least one processor executing the at least one instruction stored in the memory, wherein the at least one processor executes at least one instruction to generate at least one draw call associated with a preceding frame and a subsequent frame, respectively Identifying at least one tile included in the subsequent frame that is the same as a tile in the preceding frame by analyzing the processed draw calls and identifying the at least one tile from the preceding frame to render the subsequent frame A graphics processing device that performs tile-based rendering of a graphics processing device.

또한, 상기 적어도 하나의 프로세서는 상기 적어도 하나의 인스트럭션을 실행함으로써, 상기 선행 프레임과 연관된 드로우콜들의 서명으로부터, 상기 선행 프레임과 연관된 복수의 드로우콜들을 식별하고, 상기 후속 프레임과 연관된 드로우콜들의 서명으로부터, 상기 후속 프레임과 연관된 복수의 드로우콜들을 식별하고, 상기 선행 프레임 및 상기 후속 프레임 각각에 영향을 주는 적어도 하나의 드로우콜을 식별하고, 상기 선행 프레임 내 포함된 드로우콜과 동일한 상기 후속 프레임에 포함된 적어도 하나의 드로우콜을 식별하고, 상기 드로우콜들 간의 유사성에 기초하여, 상기 후속 프레임에서 렌더링될 수 있는 상기 선행 프레임 내 적어도 하나의 타일을 식별하는, 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치를 제공할 수 있다.The at least one processor is further configured to execute the at least one instruction to identify from a signature of draw calls associated with the preceding frame a plurality of draw calls associated with the preceding frame and to identify the signature of the draw calls Identifies a plurality of draw calls associated with the subsequent frame, identifies at least one draw call that affects each of the preceding frame and the subsequent frame, and identifies at least one draw call associated with the next frame Based rendering that identifies at least one included draw call and identifies at least one tile in the preceding frame that can be rendered in the subsequent frame based on the similarity between the draw calls. Device can be provided.

또한, 상기 적어도 하나의 프로세서는 상기 적어도 하나의 인스트럭션을 실행함으로써, 상기 선행 프레임 및 상기 후속 프레임의 상기 적어도 하나의 드로우콜을 상호 연관시키고, 상기 적어도 하나의 변화를 식별하며, 상기 적어도 하나의 변화는 적어도 하나의 실행 모드 및 입력에 기초하여 식별되고, 상기 입력은 적어도 하나의 버텍스 버퍼, 인덱스 버퍼, 속성 버퍼, 셰이더 및 텍스쳐를 포함하는, 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치를 제공할 수 있다.Further, the at least one processor correlates the at least one draw call of the preceding frame and the subsequent frame by executing the at least one instruction, identifies the at least one change, Based rendering, wherein the input is identified based on at least one execution mode and input, the input including at least one vertex buffer, an index buffer, an attribute buffer, a shader, and a texture have.

또한, 상기 적어도 하나의 프로세서는 상기 적어도 하나의 인스트럭션을 실행함으로써, 상기 식별된 상기 선행 프레임으로부터의 상기 적어도 하나의 타일을, 상기 후속 프레임에서 다시 렌더링하는, 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치를 제공할 수 있다.The at least one processor may further execute the at least one instruction to render the at least one tile from the identified preceding frame again in the subsequent frame. Can be provided.

또한, 상기 적어도 하나의 프로세서는 상기 적어도 하나의 인스트럭션을 실행함으로써, 동적 텍스쳐에서 상기 타일 렌더링을 이용하는, 타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치를 제공할 수 있다.The at least one processor may also provide a graphics processing device that performs tile-based rendering, using the tile rendering in a dynamic texture, by executing the at least one instruction.

또한, 본 개시의 제 5 측면은, 제 1 측면 및 제 3측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.Further, the fifth aspect of the present disclosure can provide a computer-readable recording medium on which a program for causing a computer to execute the methods of the first aspect and the third aspect is recorded.

도 1은 일 실시예에 따른 그래픽스 프로세싱 장치를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 객체를 포함하는 선행 프레임 및 후속 프레임의 예시를 나타내는 도면이다.
도 3은 일 실시예에 따른 선행 타일의 렌더링 결과를 이용하여 후속 프레임의 타일을 렌더링하는 방법을 설명하는 흐름도이다.
도 4는 일 실시예에 따른 동적 텍스처를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 동적 텍스쳐가 있는 경우 선행 타일의 렌더링 결과를 이용하여 후속 프레임의 타일을 렌더링하는 방법을 설명하는 흐름도이다.
도 6은 일 실시예에 따른 그래픽스 프로세싱 장치의 입력 및 출력을 나타내는 도면이다.
도 7는 일 실시예에 따른 그래픽스 프로세싱 장치의 구성 요소들을 나타내는 블록도이다.
도 8은 일 실시예에 따른 그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법의 흐름도이다.
도 9는 일 실시예에 따른 타일-기반 렌더링을 위해 선행 프레임 및 후속 프레임에 포함된 유사한 타일들을 식별하는 방법의 흐름도이다.
1 is a block diagram illustrating a graphics processing apparatus according to an exemplary embodiment of the present invention.
2 is a diagram illustrating an example of a preceding frame and a subsequent frame including an object according to one embodiment.
FIG. 3 is a flowchart illustrating a method of rendering a tile of a subsequent frame using a rendering result of a leading tile according to an exemplary embodiment.
4 is a diagram for explaining a dynamic texture according to an embodiment.
FIG. 5 is a flowchart illustrating a method of rendering a tile of a subsequent frame using a rendering result of a leading tile when there is a dynamic texture according to an exemplary embodiment.
6 is a diagram illustrating input and output of a graphics processing apparatus according to one embodiment.
7 is a block diagram illustrating components of a graphics processing apparatus according to an embodiment.
8 is a flow diagram of a method for performing tile-based rendering in a graphics processing apparatus according to one embodiment.
9 is a flow diagram of a method for identifying similar tiles included in a preceding frame and a subsequent frame for tile-based rendering in accordance with one embodiment.

본 개시의 일부 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. "매커니즘", "요소", "수단" 및 "구성"등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다.Some embodiments of the present disclosure may be represented by functional block configurations and various processing steps. Some or all of these functional blocks may be implemented with various numbers of hardware and / or software configurations that perform particular functions. For example, the functional blocks of the present disclosure may be implemented by one or more microprocessors, or by circuit configurations for a given function. Also, for example, the functional blocks of the present disclosure may be implemented in various programming or scripting languages. The functional blocks may be implemented with algorithms running on one or more processors. In addition, the present disclosure may employ conventional techniques for electronic configuration, signal processing, and / or data processing, and the like. Terms such as "mechanism," "element," "means," and " configuration "and the like are widely used and are not limited to mechanical and physical configurations.

또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.Also, the connection lines or connection members between the components shown in the figures are merely illustrative of functional connections and / or physical or circuit connections. In practical devices, connections between components can be represented by various functional connections, physical connections, or circuit connections that can be replaced or added.

이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The present invention will be described in detail with reference to the accompanying drawings.

도 1은 일 실시예에 따른 그래픽스 프로세싱 장치를 설명하기 위한 도면이다.1 is a block diagram illustrating a graphics processing apparatus according to an exemplary embodiment of the present invention.

도 1을 참고하면, 그래픽스 프로세싱 장치(100)는 GPU (Graphic Processing Unit)(10), CPU (Central Processing Unit)(20) 및 메모리(30)를 포함한다. 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.1, the graphics processing apparatus 100 includes a GPU (Graphic Processing Unit) 10, a CPU (Central Processing Unit) 20, and a memory 30. It will be understood by those skilled in the art that other general-purpose components other than the components shown in FIG. 1 may be further included.

그래픽스 프로세싱 장치(100)는 데스크탑 컴퓨터, 노트북 컴퓨터, 스마트폰, PDA (personal digital assistants), 휴대형 미디어 플레이어, 비디오 게임용 콘솔, 텔레비젼 셋탑 박스, 태블릿 디바이스, 이북 리더, 웨어러블 디바이스 등을 예로 들 수 있지만, 이에 제한되지 않는다. 즉, 그래픽스 프로세싱 장치(100)는 컨텐츠의 디스플레이를 위한 그래픽스 프로세싱 기능을 갖는 장치로서, 그래픽스 프로세싱 장치(100)의 범주에는 다양한 장치들이 포함될 수 있다.The graphics processing apparatus 100 may be a desktop computer, a notebook computer, a smart phone, a personal digital assistant (PDA), a portable media player, a video game console, a TV set top box, a tablet device, But is not limited thereto. That is, the graphics processing apparatus 100 is an apparatus having a graphics processing function for displaying contents, and various apparatuses may be included in the category of the graphics processing apparatus 100.

GPU(10)는 OpenGL (Open Graphic(s) Library), DirectX, CUDA(Compute Unified Device Architecture) 등과 같은 다양한 버전들, 종류들의 그래픽스 파이프라인(graphics pipeline)을 수행하는 그래픽 전용 프로세서로서, 3차원 이미지 상의 3차원 객체들을 디스플레이용의 2차원 이미지로 렌더링하기 위해 3차원 그래픽스 파이프라인을 실행하도록 구현된 하드웨어일 수 있다. 예를 들면, GPU(10)는 쉐이딩, 블렌딩, 일루미네이팅과 같은 다양한 기능들 및 디스플레이될 픽셀들에 대한 픽셀 값들을 생성하기 위한 다양한 기능들을 수행할 수도 있다.GPU 10 is a graphics-only processor that performs various versions and types of graphics pipelines such as OpenGL (Open Graphic Library), DirectX, CUDA (Compute Unified Device Architecture) Dimensional graphics pipeline in order to render the three-dimensional objects on the three-dimensional graphics pipeline to a two-dimensional image for display. For example, the GPU 10 may perform various functions such as shading, blending, illuminating, and various functions for generating pixel values for the pixels to be displayed.

GPU(10)는 CPU(20)로부터 명령을 수신할 수 있다. 드로우 명령(draw command)은 영상 또는 프레임에 어떤 객체를 렌더링할 것인지를 나타내는 명령이다. 예를 들어, 드로우 명령은 영상 또는 프레임에 포함된 소정의 개수의 사각형 또는 삼각형을 그리기 위한 명령일 수 있다. 일 실시예에 따라 드로우 명령은 드로우콜(drawcall)일 수 있다.The GPU 10 can receive an instruction from the CPU 20. [ A draw command is an instruction that indicates which object to render in an image or frame. For example, the draw command may be an instruction to draw a predetermined number of squares or triangles contained in an image or a frame. According to one embodiment, the draw command may be a draw call.

GPU(10)는 적어도 하나의 프로세서(11) 및 적어도 하나의 캐시(12)를 포함할 수 있다. 프로세서(11)는 수신된 드로우콜에 포함된 그래픽스 데이터 및 메모리(30)로부터 수신한 그래픽스 데이터를 캐시(12)에 저장할 수 있다. 또한, 프로세서(11)는 수신된 드로우콜에 포함된 그래픽스 데이터에 기초하여, 캐시(12)에 저장된 그래픽스 데이터를 이용함으로써 그래픽스 파이프라인 각 단계를 실행할 수 있다.The GPU 10 may include at least one processor 11 and at least one cache 12. The processor 11 may store the graphics data included in the received draw call and the graphics data received from the memory 30 in the cache 12. Further, the processor 11 can execute each step of the graphics pipeline by using the graphics data stored in the cache 12 based on the graphics data included in the received draw call.

한편, 그래픽스 데이터는 렌더링 수행에 이용되는 데이터이다. 일 실시예에서 그래픽스 데이터는 버텍스 데이터, 인덱스 데이터, 속성 데이터, 셰이더 및 텍스쳐를 포함할 수 있으니, 이에 제한되지 않는다. On the other hand, the graphics data is data used for rendering. In one embodiment, the graphics data may include vertex data, index data, attribute data, shaders, and textures.

CPU(20)는 그래픽스 프로세싱 장치(100)의 전반적인 동작들 및 기능들을 제어하는 하드웨어이다. 예를 들어, CPU(20)는 운영체제(Operating System, OS)를 구동하고, GPU(10)를 위한 그래픽스 API(Application Programming Interface)를 호출하고, GPU(10)의 드라이버를 실행시킬 수 있다. 또한, CPU(20)는 메모리(30)에 저장된 다양한 애플리케이션들, 예를 들어 웹 브라우징 애플리케이션, 게임 애플리케이션, 비디오 애플리케이션 등을 실행할 수 있다.The CPU 20 is hardware that controls the overall operations and functions of the graphics processing apparatus 100. For example, the CPU 20 may run an operating system (OS), call a graphics API (Application Programming Interface) for the GPU 10, and execute a driver of the GPU 10. In addition, the CPU 20 can execute various applications stored in the memory 30, for example, a web browsing application, a game application, a video application, and the like.

메모리(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)에 액세스될 수 있는 외부의 다른 스토리지 디바이스를 포함할 수 있다.The memory 30 is hardware for storing various data processed in the graphics processing apparatus 100 and may store data processed by the GPU 10 and data to be processed. In addition, the memory 30 may store applications, drivers, and the like to be driven by the GPU 10 and the CPU 20. [ The memory 30 may be a random access memory (RAM), a read-only memory (ROM), an electrically erasable programmable read-only memory (EEPROM), a dynamic random access memory (DRAM) ROM, Blu-ray or other optical disk storage, a hard disk drive (HDD), a solid state drive (SSD), or a flash memory, and further includes an external storage device that can be accessed by the graphics processing device 100 .

한편, 그래픽스 프로세싱 장치(100)는 디스플레이(미도시)를 더 포함할 수 있다. 디스플레이는 CPU(20) 또는 GPU(10)로부터 전달받은 렌더링된 이미지를 디스플레이할 수 있다.Meanwhile, the graphics processing apparatus 100 may further include a display (not shown). The display can display the rendered image received from the CPU 20 or the GPU 10.

도 2는 일 실시예에 따른 객체를 포함하는 선행 프레임 및 후속 프레임의 예시를 나타내는 도면이다.2 is a diagram illustrating an example of a preceding frame and a subsequent frame including an object according to one embodiment.

도 2를 참조하면, 선행 프레임(210) 및 후속 프레임(220)에는 객체로서 사각형(211, 221), 삼각형(212, 222) 및 토끼(213, 223)가 포함될 수 있다. 한편, 타일-기반 렌더링을 수행하는 경우, 그래픽스 프로세싱 장치(10)는 선행 프레임(210) 및 후속 프레임(220)을 분할하는 타일들(타일a 내지 타일d) 단위로 렌더링을 수행할 수 있다. Referring to FIG. 2, rectangles 211 and 221, triangles 212 and 222, and rabbits 213 and 223 may be included as objects in the preceding frame 210 and the following frame 220. On the other hand, when tile-based rendering is performed, the graphics processing apparatus 10 may perform rendering in units of tiles (tile a to tile d) that divide the leading frame 210 and the following frame 220.

일 실시예에서, 그래픽스 프로세싱 장치(10)는 선행 프레임(210)의 렌더링 결과를 이용하여 후속 프레임(220)을 렌더링할 수 있다. 예를 들어, 선행 프레임(210) 및 후속 프레임(220)에서 토끼(213, 223)만이 이동하고 사각형(211, 221), 삼각형(212, 222)의 위치는 변함없을 수 있다. 이 경우, 그래픽스 프로세싱 장치(10)는, 사각형(211, 221) 및 삼각형(212, 222)을 포함하는 후속 프레임(220)의 타일a를 렌더링하기 위해, 선행 프레임(210)의 타일a에 대한 렌더링 결과를 이용할 수 있다.In one embodiment, the graphics processing device 10 may render subsequent frames 220 using the rendering results of the preceding frame 210. [ For example, only the rabbits 213, 223 move in the preceding frame 210 and the subsequent frame 220, and the positions of the squares 211, 221, triangles 212, 222 may remain unchanged. In this case, the graphics processing apparatus 10 is configured to render the tile a of the subsequent frame 220 including the squares 211 and 221 and the triangles 212 and 222, Rendering results are available.

도 3은 일 실시예에 따른 선행 타일의 렌더링 결과를 이용하여 후속 프레임의 타일을 렌더링하는 방법을 설명하는 흐름도이다.FIG. 3 is a flowchart illustrating a method of rendering a tile of a subsequent frame using a rendering result of a leading tile according to an exemplary embodiment.

단계 310에서, 그래픽스 프로세싱 장치(10)는 선행 프레임의 제 1 타일의 렌더링에 이용되는 제 1 드로우콜을 수신할 수 있다. 단계 320에서, 그래픽스 프로세싱 장치(10)는 제 1 타일의 위치에 대응되는, 후속 프레임의 제 2 타일의 렌더링에 이용되는 제 2 드로우콜을 수신할 수 있다.In step 310, the graphics processing apparatus 10 may receive a first draw call used to render a first tile of a preceding frame. In step 320, the graphics processing device 10 may receive a second draw call that is used to render a second tile of a subsequent frame, corresponding to the location of the first tile.

한편, 일 실시예에서, 제 1 타일의 렌더링에 이용되는 제 1 드로우콜 및 제 2 타일의 렌더링에 이용되는 제 2 드로우콜은 복수 개일 수 있다.On the other hand, in one embodiment, the first draw call used for rendering the first tile and the second draw call used for rendering the second tile may be plural.

단계 330에서, 그래픽스 프로세싱 장치(10)는 제 1 드로우콜의 서명 및 제 2 드로우콜 서명을 생성할 수 있다. 드로우콜의 서명은 드로우콜 간의 식별이 가능한 특정 문자열일 수 있다.In step 330, the graphics processing apparatus 10 may generate a signature of the first draw call and a second draw call signature. The signature of the draw call may be a specific string that is identifiable between draw calls.

일 실시예에서 그래픽스 프로세싱 장치(10)는 제 1 드로우콜 및 제 2 드로우콜에 관한, 실행 컨텍스트(execution context) 및 그래픽스 데이터를 이용하여 서명을 생성할 수 있다. 예를 들어, 그래픽스 프로세싱 장치(10)는 렌더링하는 중에 설정되는 오픈GL 상태 (openGL state) (GL_TEXTURE_2D, GL_FOG, GL_BLEND 등) 를 포함하는 실행 컨텍스트를 이용하여 서명을 생성할 수 있다. 또한, 그래픽스 프로세싱 장치(10)는 그래픽스 데이터로서, 버텍스 데이터, 인덱스 데이터, 속성 데이터, 셰이더, 텍스쳐 및 유니폼(uniform)을 이용하여 서명을 생성할 수 있다. 한편, 그래픽스 프로세싱 장치(10)는 실행 컨텍스트(execution context) 및 그래픽스 데이터를 이용함으로써 서명의 체크섬(checksum)을 계산할 수 있다.In one embodiment, the graphics processing apparatus 10 may generate a signature using an execution context and graphics data relating to the first draw call and the second draw call. For example, the graphics processing apparatus 10 may generate a signature using an execution context including an openGL state (GL_TEXTURE_2D, GL_FOG, GL_BLEND, etc.) set during rendering. Also, the graphics processing apparatus 10 can generate a signature using graphics data, such as vertex data, index data, attribute data, shaders, textures, and uniforms. Meanwhile, the graphics processing apparatus 10 can calculate a checksum of a signature by using an execution context and graphics data.

단계 340에서, 그래픽스 프로세싱 장치(10)는 제 1 드로우콜의 서명 및 제 2 드로우콜의 서명을 비교할 수 있다. 일 실시예에서, 그래픽스 프로세싱 장치(10)는 제 1 드로우콜의 서명 및 제 2 드로우콜의 서명의 체크섬(checksum)을 계산함으로써 양 서명을 비교할 수 있다.In step 340, the graphics processing apparatus 10 may compare the signature of the first draw call and the signature of the second draw call. In one embodiment, the graphics processing device 10 may compare both signatures by calculating a signature of the first draw call and a checksum of the signature of the second draw call.

단계 360에서, 그래픽스 프로세싱 장치(10)는 상기 비교 결과에 따라, 제 1 타일의 렌더링 결과를 이용하여 제 2 타일을 렌더링할 수 있다. 일 실시예에서, 제 1 드로우콜의 서명 및 제 2 드로우콜의 서명이 일치하는 경우, 그래픽스 프로세싱 장치(10)는 제 1 타일의 렌더링 결과를 이용하여 제 2 타일을 렌더링할 수 있다. 예를 들어, 그래픽스 프로세싱 장치(10)는 제 2 타일을 렌더링하는데 제 1 타일의 렌더링 결과를 재사용할 수 있다. 또한, 제 1 드로우콜의 서명 및 제 2 드로우콜의 서명이 일치하지 않는 경우, 그래픽스 프로세싱 장치(10)는 제 2 타일을 다시 렌더링할 수 있다.In step 360, the graphics processing apparatus 10 may render the second tile using the rendering result of the first tile, according to the comparison result. In one embodiment, when the signature of the first draw call and the signature of the second draw call match, the graphics processing apparatus 10 may render the second tile using the rendering result of the first tile. For example, the graphics processing device 10 may reuse the rendering result of the first tile to render the second tile. Also, if the signature of the first draw call and the signature of the second draw call do not match, the graphics processing apparatus 10 can render the second tile again.

한편, 제 1 드로우콜 및 제 2 드로우콜이 복수 개인 경우, 복수 개의 제 1 드로우콜의 서명과 복수 개의 제 2 드로우콜의 서명 모두가 일치하거나 기설정된 기준을 만족하는 경우, 그래픽스 프로세싱 장치(10)는 제 1 타일의 렌더링 결과를 이용하여 제 2 타일을 렌더링할 수 있다.On the other hand, when there are a plurality of the first draw call and the second draw call, if the signatures of the plurality of first draw calls and the signatures of the plurality of second draw calls are the same or satisfy predetermined criteria, the graphics processing apparatus 10 May render the second tile using the rendering result of the first tile.

또한, 그래픽스 프로세싱 장치(10)는 후속 프레임에 대한 카메라 시점(view point)이 선행 프레임에 대한 카메라 시점과 동일한지 결정할 수 있다. 그래픽스 프로세싱 장치(10)는 드로우콜의 버텍스 셰이더 및/또는 유니폼들(uniforms)을 분석함으로써 카메라 시점을 결정할 수 있다. 예를 들어, 선행 프레임 및 후속 프레임 간의 유니폼들이 기설정된 값 이상인 경우, 그래픽스 프로세싱 장치(10)는 선행 프레임 및 후속 프레임에서 카메라 시점이 동일하다고 결정할 수 있다.In addition, the graphics processing apparatus 10 can determine whether the camera view point for the subsequent frame is the same as the camera point for the preceding frame. The graphics processing apparatus 10 can determine the camera viewpoint by analyzing the vertex shaders and / or uniforms of the draw call. For example, when the uniforms between the preceding frame and the subsequent frame are equal to or greater than a predetermined value, the graphics processing apparatus 10 can determine that the camera viewpoint is the same in the preceding frame and the subsequent frame.

일 실시예에서, 카메라 시점이 선행 프레임 및 후속 프레임에서 동일하다고 결정된 경우, 그래픽스 프로세싱 장치(10)는 제 2 타일을 렌더링하기 위해 제 1 타일의 렌더링 결과를 이용할지 여부를 결정할 수 있다. 또한, 다른 실시예에서, 카메라 시점이 선행 프레임 및 후속 프레임에서 동일하지 않다고 결정된 경우, 그래픽스 프로세싱 장치(10)는 후속 프레임에 포함된 모든 타일들을 다시 렌더링할 수 있다.In one embodiment, if it is determined that the camera viewpoint is the same in the preceding frame and the subsequent frame, the graphics processing device 10 may determine whether to use the rendering result of the first tile to render the second tile. Further, in another embodiment, if it is determined that the camera viewpoint is not the same in the preceding frame and the subsequent frame, the graphics processing apparatus 10 may re-render all the tiles included in the subsequent frame.

도 4는 일 실시예에 따른 동적 텍스처를 설명하기 위한 도면이다.4 is a diagram for explaining a dynamic texture according to an embodiment.

도 4를 참조하면, 동적 텍스처(dynamic texture)는 실시간으로 렌더링된 동적 이미지가 텍스처로 활용되는 것을 의미한다. 예를 들어, 프레임(401) 상에 표시될 객체들 중에 전광판(411)에 해당되는 객체가 존재하는 경우, 전광판 객체의 화면 상에는 어느 장면의 이미지가 표시될 수 있다. 프레임 변화에 따라 전광판 화면 상에 표시될 이미지 또한 대응되도록 동적으로 변화될 수 있다.Referring to FIG. 4, a dynamic texture means that a dynamic image rendered in real time is utilized as a texture. For example, if there is an object corresponding to the electric signboard 411 among the objects to be displayed on the frame 401, an image of a scene may be displayed on the screen of the electric signboard object. The image to be displayed on the screen of the electric sign board may also be dynamically changed to correspond to the frame change.

유사하게, 프레임(402) 상에는 운전 중인 자동차의 장면이 렌더링될 수도 있다. 자동차의 사이드미러(412)에는 자동차 외부의 환경이 표시되므로, 프레임 변화에 따라 사이드미러(412)에 표시될 이미지 또한 대응되도록 동적으로 변화될 수 있다.Similarly, a scene of an automobile in operation may be rendered on the frame 402. Since the exterior of the vehicle is displayed in the side mirror 412 of the vehicle, the image to be displayed on the side mirror 412 can be dynamically changed to correspond to the frame change.

일 실시예에서 설명되는 동적 텍스처는 어느 프레임 내에 동적 이미지가 표시될 별개의 객체가 존재하는 경우, 그 객체에 텍스처링될 텍스처를 의미할 수 있다.The dynamic texture described in one embodiment may refer to a texture to be textured in a frame when a separate object exists in which frame the dynamic image is to be displayed.

도 5는 일 실시예에 따른 동적 텍스쳐가 있는 경우 선행 타일의 렌더링 결과를 이용하여 후속 프레임의 타일을 렌더링하는 방법을 설명하는 흐름도이다.FIG. 5 is a flowchart illustrating a method of rendering a tile of a subsequent frame using a rendering result of a leading tile when there is a dynamic texture according to an exemplary embodiment.

단계 510에서, 그래픽스 프로세싱 장치(10)는 제 1 타일 및 제 2 타일에 동적 텍스쳐가 적용되는지 결정할 수 있다. 한편, 그래픽 프로세싱 과정에서 이용되는 텍스쳐는 미리 결정되어 메모리 상에 저장되어 있을 수 있지만, 실시간으로 생성될 수도 있다. 이렇게 그래픽 프로세싱 과정에서 실시간으로 생성되는 텍스쳐를 동적 텍스처라고 한다. 동적 텍스쳐는 메모리 대역폭 및 판독/기록하는데 드는 전력의 소모를 줄이기 위해 메모리에 저장하기 전에 압축(compression)하는 과정을 거칠 수 있다.In step 510, the graphics processing device 10 may determine whether the dynamic texture is applied to the first tile and the second tile. On the other hand, the texture used in the graphic processing process may be predetermined and stored in the memory, but may be generated in real time. The texture generated in real time during the graphic processing is called dynamic texture. Dynamic textures can go through a process of compression before being stored in memory to reduce memory bandwidth and power consumption for reading / writing.

단계 512에서, 동적 텍스쳐가 제 1 타일 및 제 2 타일에 적용되는 경우, 그래픽스 프로세싱 장치(10)는 제 1 타일의 렌더링 결과와 제 2 타일간의 종속성이 있는지 결정할 수 있다. 일 실시예에서, 그래픽스 프로세싱 장치(10)는 제 1 드로우콜에 포함된 셰이더와 제 2 드로우콜에 포함된 셰이더를 분석하고, 동적 텍스쳐가 제 1 드로우콜 및 제 2 드로우콜에 매핑(mapping)되는지 식별함으로써, 렌더링될 최종 이미지가 동적 텍스쳐에 의존 하는지 결정할 수 있다. 그러나 렌더링될 최종 이미지가 동적 텍스쳐에 의존하는지 결정하는 방법은 이에 제한되지 않는다.In step 512, when the dynamic texture is applied to the first tile and the second tile, the graphics processing apparatus 10 may determine whether there is a dependency between the rendering result of the first tile and the second tile. In one embodiment, the graphics processing apparatus 10 analyzes the shader included in the first draw call and the shader included in the second draw call, and maps the dynamic texture to the first draw call and the second draw call. , It can be determined whether the final image to be rendered depends on the dynamic texture. However, the method of determining whether the final image to be rendered depends on the dynamic texture is not limited thereto.

단계 514에서, 그래픽스 프로세싱 장치(10)는 제 1 타일의 렌더링 결과와 제 2 타일간의 종속성이 있는 경우, 제 1 타일의 렌더링 결과를 이용하여 제 2 타일의 렌더링에 이용되는 동적 텍스쳐를 생성할 수 있다. 일 실시예에서, 제 1 타일의 렌더링 결과와 제 2 타일간의 종속성이 있는 경우, 그래픽스 프로세싱 장치(10)는 제 1 타일의 렌더링 결과 생성된 이미지를 이용하여 제 2 타일의 렌더링에 이용되는 동적 텍스쳐를 생성할 수 있다. In step 514, the graphics processing device 10 may use the rendering result of the first tile to generate a dynamic texture used for rendering the second tile, if there is a dependency between the rendering result of the first tile and the second tile have. In one embodiment, when there is a dependency between the rendering result of the first tile and the second tile, the graphics processing apparatus 10 uses the rendered image of the first tile to determine the dynamic texture used to render the second tile Lt; / RTI >

단계 516에서, 그래픽스 프로세싱 장치(10)는 생성된 동적 텍스쳐를 이용하여 제 2 타일을 렌더링할 수 있다.In step 516, the graphics processing device 10 may render the second tile using the generated dynamic texture.

도 6은 일 실시예에 따른, 그래픽스 프로세싱 장치의 입력 및 출력을 나타내는 도면이다. 6 is a diagram illustrating input and output of a graphics processing apparatus, according to one embodiment.

그래픽스 프로세싱 장치(600)는 이미지의 렌더링을 개시하기 위해 적어도 하나의 어플리케이션 입력을 수신할 수 있다. 어플리케이션 입력은 드로우콜 및 타일 렌더링에 필요한 연관 정보를 포함할 수 있다. 연관 정보는, 그래픽스 프로세싱 장치(600)가 메모리로부터 데이터를 읽고, 메모리에 데이터를 쓰고(write), 드로우콜을 실행할 수 있게 환경을 설정하도록 명령하는 명령어와 같은 데이터를 포함할 수 있으나, 이에 제한되지 않는다. 그래픽스 프로세싱 장치(600)는 어플리케이션 입력에 대한 응답으로, 수신된 어플리케이션 입력을 처리하고, 디스플레이될 이미지에 속한 각 프레임과 관계된 드로우콜(들)을 식별할 수 있다. 어플리케이션 입력은 복수의 프레임들을 렌더링하는데 관한 것일 수 있다. 그러나, 그래픽스 프로세싱 장치(600)는 한 번에 한 프레임씩 렌더링할 수 있다. 그래픽스 프로세싱 장치(600)는 드로우콜(들)을 처리하고, 2개의 프레임들 (이하에서, 선행 프레임(preceding frame) 및 후속 프레임(succeeding frame)) 에서 동일한 타일(들)을 식별할 수 있다. 한편, 드로우콜들의 처리는 드로우콜들의 전체 또는 일부를 처리하는 것을 포함할 수 있다. 일 실시예에서, 선행 프레임 및 후속 프레임은 인접/연속하는 프레임들일 수 있다. 다른 실시예에서, 선행 프레임 및 후속 프레임은 디스플레이될 어플리케이션에 포함된 임의의 2개의 프레임들일 수 있고, 선행 프레임 및 후속 프레임은 인접(연속)하지 않을 수 있다. 한편, 어플리케이션은 이미지, 비디오, 비디오 게임 및 일련의 프레임들을 생성할 수 있는 임의의 적합한 데이터를 포함할 수 있다.Graphics processing device 600 may receive at least one application input to initiate rendering of the image. The application input may include association information necessary for draw call and tile rendering. The association information may include data such as instructions that instruct the graphics processing device 600 to read data from memory, write data to memory, and set the environment to execute a draw call, It does not. The graphics processing device 600 may process the received application input in response to the application input and identify the draw call (s) associated with each frame belonging to the image to be displayed. The application input may be related to rendering a plurality of frames. However, the graphics processing device 600 may render one frame at a time. Graphics processing device 600 may process the draw call (s) and identify the same tile (s) in two frames (hereinafter, the preceding frame and the succeeding frame). On the other hand, processing of draw calls may include processing all or part of the draw calls. In one embodiment, the preceding frame and subsequent frames may be contiguous / contiguous frames. In other embodiments, the preceding frame and subsequent frames may be any two frames included in the application to be displayed, and the preceding frame and subsequent frames may not be contiguous (contiguous). On the other hand, an application may include any suitable data capable of generating images, video, video games, and a series of frames.

또한, 그래픽스 프로세싱 장치(600)는 선행 프레임들 및 후속 프레임들을 한 번에 하나씩 처리될 수 있다. 예를 들어, 그래픽스 프로세싱 장치(600)는 선행 프레임과 연관된 드로우콜들을 처리할 수 있고, 처리된 드로우콜들의 서명이 생성되어 그래픽스 프로세싱 장치(600)와 관련된 저장 공간 내의 대응하는 데이터베이스에 저장될 수 있다. 또한, 그래픽스 프로세싱 장치(600)는 후속 프레임과 연관된 드로우콜들의 서명을 생성하기 위해 후속 프레임을 처리할 수 있다. 또한, 그래픽스 프로세싱 장치(600)는 선행 프레임 및 후속 프레임 내의 동일한 타일(들)을 식별하기 위해, 후속 프레임과 연관된 드로우콜들의 서명이 선행 프레임과 연관된 드로우콜들의 서명과 비교할 수 있다. Further, the graphics processing apparatus 600 may process the preceding frames and the subsequent frames one at a time. For example, the graphics processing device 600 may process the draw calls associated with the preceding frame, and the signature of the processed draw calls may be generated and stored in a corresponding database in a storage space associated with the graphics processing device 600 have. Graphics processing device 600 may also process subsequent frames to generate signatures of drawcalls associated with subsequent frames. The graphics processing device 600 may also compare the signature of the draw calls associated with the subsequent frame to the signature of the draw calls associated with the preceding frame to identify the same tile (s) in the preceding frame and subsequent frames.

일 실시예에서, 선행 프레임이 그래픽스 프로세싱 장치(600)에 의해 처음으로 처리될 때, 선행 프레임과 연관된 드로우콜들의 서명이 생성될 수 있고, 선행 프레임과 연관된 드로우콜들의 서명은 이후에 참조 목적을 위해, 데이터베이스에 저장될 수 있다. 또한, 후속 프레임과 연관된 드로우콜들의 서명은 데이터베이스에 저장됨으로써, 임의의 시점에 동일한 타일(들)을 식별하기 위해 다른 프레임의 서명과 비교될 수 있다.In one embodiment, when the preceding frame is first processed by the graphics processing device 600, a signature of the draw calls associated with the preceding frame may be generated, and the signature of the draw calls associated with the preceding frame may be used for later reference purposes And can be stored in a database. Also, the signatures of the drawcalls associated with subsequent frames can be stored in the database, so that they can be compared to the signature of another frame to identify the same tile (s) at any time.

또한, 선행 프레임과 연관된 드로우콜들의 서명 및 후속 프레임과 연관된 드로우콜들의 서명에 기초하여, 식별된 적어도 하나의 타일이 선행 프레임 및 후속 프레임에 공통된다고 판단되는 경우, 그래픽스 프로세싱 장치(600)는 렌더링될 어플리케이션 입력을 식별할 수 있다. 예를 들어, 하나의 타일이 후속 프레임뿐만 아니라 선행 프레임에서 공통된다고 판단된 경우, 공통된 타일은 후속 프레임에서 그대로 복사될 수 있다 (즉, 후속 프레임에서 재사용됨). 후속 프레임의 나머지 타일들은 그래픽스 프로세싱 장치(600)에 의해 다시 렌더링될(re-rendered) 어플리케이션 입력의 일부로 식별되어, 다시 렌더링될 수 있다.In addition, if it is determined that the identified at least one tile is common to the preceding frame and the subsequent frame, based on the signature of the draw calls associated with the preceding frame and the signature of the draw calls associated with the preceding frame, To identify the application input to be made. For example, if it is determined that one tile is common to the preceding frame as well as the subsequent frame, the common tile may be copied as is in the subsequent frame (i. E., Reused in subsequent frames). The remaining tiles of the subsequent frame may be identified as part of the application input re-rendered by the graphics processing device 600 and rendered again.

도 7는 일 실시예에 따른 그래픽스 프로세싱 장치의 구성 요소들을 나타내는 블록도이다. 그래픽스 프로세싱 장치(600)는 입/출력(I/O) 인터페이스(701), 메모리(702), GPU(Graphics Processing Unit) (703) 및 그래픽스 드라이버(704)를 포함할 수 있다.7 is a block diagram illustrating components of a graphics processing apparatus according to an embodiment. The graphics processing apparatus 600 may include an input / output (I / O) interface 701, a memory 702, a graphics processing unit (GPU) 703, and a graphics driver 704.

I/O 인터페이스(701)는 GPU(703)와 통신하기 위해, 어플리케이션에 적어도 하나의 채널을 제공할 수 있다. 또한, I/O 인터페이스(701)는 렌더링되는 프레임을 사용자에게 디스플레이하기 위한 적어도 하나의 출력 인터페이스를 포함할 수 있다. 예를 들어, GPU의 출력을 사용자들에게 디스플레이하기 위해 디스플레이 스크린이 이용될 수 있다.The I / O interface 701 may provide at least one channel to the application to communicate with the GPU 703. In addition, the I / O interface 701 may include at least one output interface for displaying a frame to be rendered to a user. For example, a display screen may be used to display the output of the GPU to users.

메모리(702)은 이미지 렌더링 프로세스와 연관된 모든 종류의 데이터를 저장할 수 있다. 예를 들어, 메모리(702)은 렌더링될 데이터를 프레임 형태로 저장할 수 있고, 대응하는 드로우콜들을 저장할 수 있다. 또한, 메모리(702)은 선행 프레임 및 후속 프레임 내 타일들과 관련된 데이터를 저장할 수 있고, 선행 프레임 및 후속 프레임 내의 공통되는 타일들을 식별하기 위해 저장된 데이터에 관한 정보를 제공할 수 있다. 또한, 메모리(702)은 이후의 참조 목적을 위해, 각 프레임에서, 렌더링된 타일들 및 다시 렌더링된 타일들에 관한 정보를 저장할 수 있다. 메모리(702)은 프레임 내 하나 이상의 타일들이 후속 프레임에서 렌더링되도록 유지될 수 있는 버퍼로서 동작할 수 있다. 또한, 메모리(702)은 처리되는 모든 프레임들에 대응하는 서명을 저장할 수 있다.The memory 702 may store all sorts of data associated with the image rendering process. For example, the memory 702 may store the data to be rendered in frame form and store corresponding draw calls. Memory 702 may also store data associated with tiles in the preceding frame and in subsequent frames and may provide information about the stored data to identify common tiles within the preceding frame and subsequent frames. In addition, the memory 702 may store information about rendered tiles and re-rendered tiles in each frame, for future reference purposes. The memory 702 may operate as a buffer in which one or more tiles within a frame may be maintained to be rendered in a subsequent frame. In addition, the memory 702 may store a signature corresponding to all of the frames being processed.

GPU(703) 및 드라이버(704)은 적어도 7개의 프레임들에서 유사한 타일들을 검색할 수 있다. 일 실시예에서, 2개의 프레임들 즉, 선행 프레임 및 후속 프레임은 한 번에 하나씩 처리될 수 있다. 프레임들을 처리할 때, 드라이버 모듈(704)은 처리되는 프레임들과 연관된 드로우콜들을 가져(fetch)올 수 있다. 또한, 드로우콜들 및 임의의 연관 데이터를 처리함으로써, 프레임 특정 드로우콜 서명이 생성될 수 있다. 동적 텍스쳐를 이용하는 드로우콜의 경우, 동적 텍스쳐는 드로우콜의 서명의 일부가 아닐 수 있다. 후속 프레임의 드로우콜들의 서명은 선행 프레임의 드로우콜들의 서명과 비교되어, 변형된 드로우콜들이 식별될 수 있다. 다양한 실시예들에서, 드로우콜이 더 이상 후속 프레임에 존재하지 않거나, 드로우콜이 후속 프레임에서 상이한 출력을 생산하는 경우 (동적 텍스쳐가 존재하는 경우에는 이를 무시), 선행 프레임의 드로우콜은 후속 프레임에서 변형되었다고 판단될 수 있다. 유사하게, 후속 프레임에서 추가된 드로우콜 (선행 프레임에서 존재하지 않는 드로우콜) 은 변형된 드로우콜로 판단될 수 있다. 변형된 드로우콜들의 목록은 GPU(703)의 입력으로 제공될 수 있다. GPU(703)는 드라이버 모듈(704)로부터 수신한 변형된 드로우콜들의 목록을 분석함으로써, 분석된 프레임들에 공통적으로 존재하는 타일(들)을 식별할 수 있다. 공통 타일들과 연관된 정보에 기초하여, GPU(703)는 렌더링될 필요가 있는 후속 프레임과 관련된 어플리케이션 입력을 식별할 수 있다. GPU(703)는 공통 타일로서 식별된 타일(들)을 선행 프레임으로부터 재사용될 수 있다고 결정할 수 있다. 또한, GPU(703)는 수신된 어플리케이션 입력에 응답하여 적절한 타일들을 렌더링 또는 다시 렌더링할 수 있다.GPU 703 and driver 704 may retrieve similar tiles in at least seven frames. In one embodiment, two frames, the preceding frame and the subsequent frame, may be processed one at a time. When processing frames, the driver module 704 may fetch the draw calls associated with the frames being processed. In addition, by processing the draw calls and any associated data, a frame specific draw call signature can be generated. In the case of a draw call using a dynamic texture, the dynamic texture may not be part of the signature of the draw call. The signature of the draw calls of the subsequent frame is compared with the signature of the draw calls of the preceding frame, so that the modified draw calls can be identified. In various embodiments, if the draw call is no longer in a subsequent frame, or if the draw call produces a different output in a subsequent frame (ignoring it if dynamic textures are present) As shown in Fig. Similarly, a draw call added in a subsequent frame (a draw call that does not exist in the preceding frame) can be judged as a modified draw call. A list of modified draw calls may be provided at the input of the GPU 703. The GPU 703 may identify the tile (s) that are common to the analyzed frames by analyzing the list of modified draw calls received from the driver module 704. Based on the information associated with the common tiles, the GPU 703 may identify application inputs associated with subsequent frames that need to be rendered. The GPU 703 may determine that the identified tile (s) as common tiles can be reused from the preceding frame. The GPU 703 may also render or re-render the appropriate tiles in response to the received application input.

도 8은 일 실시예에 따른, 그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법의 흐름도이다. 8 is a flow diagram of a method for performing tile-based rendering in a graphics processing device, according to one embodiment.

그래픽스 프로세싱 장치(600)가 프레임을 렌더링하기 위한 어플리케이션 입력을 수신하면, 그래픽스 프로세싱 장치(600)는 어플리케이션 입력에 대응하는 드로우콜들, 연관된 데이터 및 보조 명령어들을 수집할 수 있다. 일 실시예에서, 어플리케이션 입력은 복수의 프레임들을 렌더링하는데 관한 것일 수 있다. 한편, 그래픽스 프로세싱 장치(600)는 한 번에 하나의 프레임만을 렌더링할 수 있다.When the graphics processing apparatus 600 receives an application input for rendering a frame, the graphics processing apparatus 600 may collect drawcalls, associated data, and auxiliary instructions corresponding to the application input. In one embodiment, the application input may be related to rendering a plurality of frames. Meanwhile, the graphics processing apparatus 600 may render only one frame at a time.

단계 802에서 그래픽스 프로세싱 장치(600)는 후속 프레임과 연관된 드로우콜들을 순차적으로 처리할 수 있다. 일 실시예에서, 적어도 7개의 프레임들에 속하는 드로우콜들은 그래픽스 프로세싱 장치(600)에 의해 하나씩 순차적으로 처리될 수 있다. In step 802, the graphics processing apparatus 600 may sequentially process the draw calls associated with the subsequent frame. In one embodiment, drawcalls belonging to at least seven frames may be processed one by one by the graphics processing apparatus 600, one by one.

단계 804에서 그래픽스 프로세싱 장치(600)는 선택된 선행 프레임의 타일들과 동일한 후속 프레임의 타일들을 식별할 수 있다. 일 실시예에서, 각 타일과 연관된 드로우콜들에 기초하여, 그래픽스 프로세싱 장치(600)는 선행 프레임의 타일 및 후속 프레임의 타일 간의 유사성을 식별할 수 있다. 일 실시예에서, 상이한 프레임들에 걸쳐 타일이 변경되지 않으면, 타일에 대응하는 드로우콜들도 동일하게 유지된다. 한편, 일 실시예에서, 처리되는 프레임들 (즉 선행 프레임 및 후속 프레임) 은 서로 인접해있을 수 있다. 다른 실시예에서, 처리되는 프레임들은 서로 인접해있지 않을 수 있다.At step 804, the graphics processing device 600 may identify tiles of subsequent frames that are identical to the tiles of the selected preceding frame. In one embodiment, based on the drawcalls associated with each tile, the graphics processing device 600 may identify the similarity between the tiles of the preceding frame and the tiles of the subsequent frame. In one embodiment, if the tiles are not changed over different frames, the draw calls corresponding to the tiles are also kept the same. On the other hand, in one embodiment, the processed frames (i.e., the preceding frame and the subsequent frame) may be adjacent to each other. In other embodiments, the frames being processed may not be adjacent to each other.

단계 806에서, 식별된 공통 타일들 (존재한다면) 에 기초하여, 그래픽스 프로세싱 장치(600)는 후속 프레임에서 렌더링될 필요가 있는 어플리케이션 입력을 식별할 수 있다. 일 실시예에서, 선행 프레임 및 후속 프레임 사이에서 공통 타일(들)이 식별된 경우, 식별된 공통 타일(들)은 후속 프레임에서 그대로 유지되고, 어플리케이션 입력의 나머지 부분 (즉, 후속 프레임의 다른 타일들) 만이 그래픽스 프로세싱 장치(600)에 의해 다시 렌더링될 수 있다. In step 806, based on the identified common tiles (if any), graphics processing device 600 may identify application inputs that need to be rendered in subsequent frames. In one embodiment, if common tile (s) are identified between a preceding frame and a subsequent frame, then the identified common tile (s) remains intact in the subsequent frame and the remaining portion of the application input May be re-rendered by the graphics processing device 600. < RTI ID = 0.0 >

도 9는 일 실시예에 따른, 타일-기반 렌더링을 위해 선행 프레임 및 후속 프레임에 포함된 유사한 타일들을 식별하는 방법의 흐름도이다.9 is a flow diagram of a method for identifying similar tiles included in a preceding frame and a subsequent frame for tile-based rendering, according to one embodiment.

단계 902에서, 그래픽스 프로세싱 장치(600)는 선행 프레임 및 후속 프레임의 카메라 위치를 확인(check)할 수 있다. 일 실시예서, 그래픽스 드라이버(704)는 카메라 위치가 프레임들에 걸쳐 변경되었는지 검증하기 위해, 선행 프레임 및 후속 프레임의 카메라 위치를 감지하고 확인할 수 있다. 일 실시예에서, 그래픽스 드라이버(704)은 버텍스 셰이더에 대한 입력에 기초하여 카메라 위치의 변경을 식별할 수 있다. In step 902, the graphics processing apparatus 600 may check the camera position of the preceding frame and the subsequent frame. In one embodiment, the graphics driver 704 can detect and verify the camera position of the preceding frame and subsequent frames to verify that the camera position has changed across the frames. In one embodiment, the graphics driver 704 may identify a change in the camera position based on input to the vertex shader.

대부분의 드로우콜들에 대한 선행 프레임 및 후속 프레임에서 "모델 뷰 변환 (model view transform)" 행렬이 동일하게 유지되는 경우, 선행 프레임 및 후속 프레임에서 카메라 위치는 동일하다고 결정될 수 있다. 카메라 위치가 후속 프레임에서 변경된 경우, 선행 프레임의 타일과 비교하여 후속 프레임의 거의 모든 타일들은 변경된 것으로 결정될 수 있고, 이는 분석 중인 선행 프레임 및 후속 프레임에서 동일한 타일은 없는 것으로 결정될 수 있다. If the "model view transform" matrix remains the same in the preceding and following frames for most drawcalls, the camera position in the preceding frame and the subsequent frame may be determined to be the same. If the camera position is changed in a subsequent frame, then almost all of the tiles of the subsequent frame can be determined to have changed compared to the tile of the preceding frame, which can be determined to be the same tile in the preceding frame and subsequent frames being analyzed.

단계 904에서, 그래픽스 프로세싱 장치(600)는 선행 프레임 및 후속 프레임에서의 카메라 위치가 상이한지 판단할 수 있다. 카메라 위치가 상이한 것으로 결정되는 경우, 단계 914으로 진행할 수 있다. 단계 914에서, 그래픽스 프로세싱 장치(600)는 후속 프레임 전체가 다시 렌더링되도록 표시할 수 있다. 한편, 카메라 위치가 동일한 것으로 결정되는 경우, 단계 906으로 진행할 수 있다.In step 904, the graphics processing apparatus 600 may determine whether the camera position in the preceding frame and in the subsequent frame is different. If it is determined that the camera position is different, the process may proceed to step 914. In step 914, the graphics processing device 600 may indicate that the entire subsequent frame is to be rendered again. On the other hand, if it is determined that the camera positions are the same, the process can proceed to step 906.

단계 906에서, 그래픽스 프로세싱 장치(600)는 선행 프레임 및 후속 프레임의 드로우콜들을 상관(correlated)시킬 수 있다. 일 실시예에서, 프레임들에 걸쳐 카메라 위치가 동일한 경우, 분석 중인 프레임들과 연관된 드로우콜들은 그래픽스 드라이버(704)에 의해 처리될 수 있고, 상관될 수 있다. 한편, 실행 모드, 버텍스/인덱스/속성 버퍼, 셰이더 및 드로우콜 특정 텍스쳐 (textures specific to the drawcalls) 와 같은 다양한 파라미터들이 비교되어 임의의 변경 및 변경의 정도를 식별할 수 있다.In step 906, the graphics processing apparatus 600 may correlate the draw calls of the preceding frame and the subsequent frame. In one embodiment, if the camera positions are the same across frames, the draw calls associated with the frames under analysis may be processed by the graphics driver 704 and correlated. On the other hand, various parameters such as execution mode, vertex / index / attribute buffer, shader and textures specific to the drawcalls can be compared to identify any change and degree of modification.

단계 908에서, 그래픽스 프로세싱 장치(600)는 후속 프레임에 포함된 타일 각각에 영향을 주는 드로우콜(들)을 식별할 수 있다. 일 실시예에서, 처리되는 프레임들의 타일 각각에 영향을 주는 드로우콜(들)은 GPU(703)에 의해 식별될 수 있다. In step 908, the graphics processing device 600 may identify the draw call (s) that affect each of the tiles included in the subsequent frame. In one embodiment, the draw call (s) that affect each of the tiles in the frames being processed may be identified by the GPU 703.

단계 910에서, 그래픽스 프로세싱 장치(600)는 렌더링될 최종 이미지가 동적 텍스쳐에 의존하는지 식별할 수 있다. 일 실시예에서, 동적 텍스쳐가 존재하는 경우, GPU(703) 또는 그래픽스 드라이버(704)는, 렌더링될 최종 이미지가 동적 텍스쳐에 의존하는지 판단할 수 있다. 또한, 상이한 타일들에 걸친 동적 텍스쳐 및 렌더링될 최종 이미지 간의 의존성 또한 식별될 수 있다.In step 910, the graphics processing device 600 may identify whether the final image to be rendered depends on the dynamic texture. In one embodiment, when a dynamic texture is present, the GPU 703 or the graphics driver 704 may determine whether the final image to be rendered depends on the dynamic texture. In addition, dependencies between the dynamic texture over different tiles and the final image to be rendered can also be identified.

단계 912에서, 그래픽스 프로세싱 장치(600)는 다시 렌더링될 필요가 있는 후속 프레임에 포함된 타일들을 식별할 수 있다. 일 실시예에서, GPU(703)는 드로우콜들을 분석하고, 분석 중인 드로우콜들 간의 유사성에 기초하여, 선행 프레임 및 후속 프레임에서 공통되는 타일(들)을 식별할 수 있다. GPU(703)는 식별된 타일(들)은 후속 프레임에서 사용될 수 있도록 그대로 유지하고, 다시 렌더링될 어플리케이션 입력의 일부 또한 결정할 수 있다. 일 실시예에서, 선행 프레임으로부터의 하나 이상의 타일들이 변경되지 않고 후속 프레임에 존재하는 것으로 결정되는 경우, 상기 타일들은 후속 프레임에서 그대로 유지되고 후속 프레임의 나머지 타일들만이 다시 렌더링됨으로써, 데이터 처리량을 줄일 수 있다. In step 912, the graphics processing device 600 may identify tiles contained in subsequent frames that need to be rendered again. In one embodiment, the GPU 703 analyzes the draw calls and can identify the tile (s) that are common in the preceding frame and subsequent frames, based on the similarity between the draw calls under analysis. GPU 703 may keep the identified tile (s) available for use in subsequent frames and may also determine a portion of the application input to be rendered again. In one embodiment, if one or more tiles from a preceding frame are determined to remain unchanged and present in a subsequent frame, the tiles remain in the subsequent frame and only the remaining tiles of the subsequent frame are re-rendered, thereby reducing data throughput .

한편, 도 3, 5, 8 및 9의 다양한 동작들은 도시된 순서, 도시된 순서와 상이한 순서 또는 동시에 수행될 수 있다. 또한, 일부 실시예들에서, 도 3 내지 6에 도시된 단계들은 생략될 수 있다.On the other hand, the various operations of Figs. 3, 5, 8 and 9 may be performed in the order shown, different order from the order shown, or concurrently. Further, in some embodiments, the steps shown in Figures 3-6 may be omitted.

본 명세서에 개시된 실시 예는 GPU에서 타일 렌더링을 위한 메커니즘을 특정할 수 있다. 상기 메카니즘은 타일 렌더링을 가능하게 하여 그 시스템을 제공할 수 있다. 따라서, 보호의 범위는 그러한 시스템에 확장되고, 그 안에 메시지를 포함하는 컴퓨터 판독 가능 수단으로 확장되며, 상기 컴퓨터 판독 가능 수단은 상기 방법의 하나 이상의 단계를 구현하기 위한 프로그램 코드를 포함하는 것으로 이해될 수 있다. 프로그램은 서버 또는 모바일 장치 또는 임의의 적절한 프로그램 가능한 장치에서 실행될 수 있다. 본 방법은 예를 들어, 기입 된 소프트웨어 프로그램과 함께 시스템을 사용하는 바람직한 실시 예에서 구현될 수 있다. 초고속 집적 회로 VHDL (Hardware Description Language), 다른 프로그래밍 언어 또는 적어도 하나의 하드웨어 장치에서 실행되는 하나 이상의 VHDL 또는 여러 소프트웨어 모듈에 의해 구현될 수 있다. 하드웨어 장치는, 서버 또는 퍼스널 컴퓨터와 같은 임의의 종류의 컴퓨터, 또는 이들의 임의의 조합 (예를 들어, 1개의 프로세서, 2개의 FPGA들) 과 같은, 프로그래밍 할 수 있는 모든 종류의 장치가 될 수 있다. 또한, 장치는, ASIC와 같은 하드웨어 수단, 또는 하드웨어 수단 및 소프트웨어 수단의 조합 (ASIC 및 FPGA), 또는 적어도 하나의 마이크로프로세서 및 소프트웨어 모듈이 설치된 적어도 하나의 메모리를 포함할 수 있다. 따라서, 상기 수단은 적어도 하나의 하드웨어 수단 또는 적어도 하나의 하드웨어 겸 소프트웨어 수단이다. 본 명세서에서 설명된 방법 실시예들은 전적으로 하드웨어에서, 또는 부분적으로 하드웨어에서 및 부분적으로 소프트웨어로 구현 될 수 있다. 대안적으로, 일 실시예는 상이한 하드웨어 장치, 예를 들어, 복수의 CPU를 이용하여 구현될 수 있다.The embodiments disclosed herein can specify a mechanism for rendering tiles in a GPU. The mechanism may enable tile rendering to provide the system. Thus, the scope of protection extends to such systems and extends to computer-readable means comprising a message therein, which computer-readable means is understood to include program code for implementing one or more steps of the method . The program may be executed on a server or mobile device or on any suitable programmable device. The method may be implemented, for example, in a preferred embodiment using the system with the written software program. A high speed integrated circuit VHDL (Hardware Description Language), another programming language, or one or more VHDL or software modules running on at least one hardware device. A hardware device may be any type of programmable device, such as a server or any kind of computer, such as a personal computer, or any combination thereof (e.g., one processor, two FPGAs) have. The device may also include hardware means such as an ASIC or a combination of hardware means and software means (ASIC and FPGA), or at least one memory with at least one microprocessor and software module installed. Thus, the means is at least one hardware means or at least one hardware and software means. The method embodiments described herein may be implemented entirely in hardware, or partially in hardware, and in part in software. Alternatively, one embodiment may be implemented using a different hardware device, e.g., a plurality of CPUs.

본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈과, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.The embodiments may also be embodied in the form of a recording medium including instructions executable by a computer, such as program modules, being executed by a computer. Computer readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media. In addition, the computer-readable medium may include both computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically comprise any information delivery media, including computer readable instructions, data structures, program modules, or other data of a modulated data signal such as a carrier wave, or other transport mechanism.

또한, 본 명세서에서, "부"는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.Also, in this specification, the term "part" may be a hardware component such as a processor or a circuit, and / or a software component executed by a hardware component such as a processor.

전술한 본 명세서의 설명은 예시를 위한 것이며, 본 명세서의 내용이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.It will be understood by those skilled in the art that the foregoing description of the specification is for illustrative purposes only and that those skilled in the art will readily understand that various changes in form and details may be made therein without departing from the spirit and scope of the invention. It will be possible. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.

본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.The scope of the present invention is defined by the appended claims rather than the foregoing detailed description, and all changes or modifications derived from the meaning and scope of the claims and their equivalents should be interpreted as including the claims.

Claims (19)

그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법에 있어서,
선행 프레임(preceding frame)의 제 1 타일의 렌더링에 이용되는 제 1 드로우콜을 수신하는 단계;
상기 제 1 타일의 위치에 대응되는, 후속 프레임(succeeding frame)의 제 2 타일의 렌더링에 이용되는 제 2 드로우콜을 수신하는 단계;
상기 제 1 드로우콜의 서명(signature) 및 상기 제 2 드로우콜 서명을 생성하는 단계;
상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명을 비교하는 단계;
상기 비교 결과에 따라, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일을 렌더링하는 단계;
를 포함하는, 방법.
A method of performing tile-based rendering in a graphics processing device,
The method comprising: receiving a first draw call used for rendering a first tile of a preceding frame;
Receiving a second draw call used to render a second tile of a succeeding frame, corresponding to a position of the first tile;
Generating a signature of the first draw call and the second draw call signature;
Comparing a signature of the first draw call and a signature of the second draw call;
Rendering the second tile using a rendering result of the first tile according to the comparison result;
/ RTI >
제 1항에 있어서,
상기 제 2 타일을 렌더링하는 단계는,
상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명이 일치하는 경우, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일을 렌더링하는 단계;
를 포함하는, 방법.
The method according to claim 1,
Wherein rendering the second tile comprises:
Rendering the second tile using the rendering result of the first tile if the signature of the first draw call matches the signature of the second draw call;
/ RTI >
제 1항에 있어서,
상기 제 2 타일을 렌더링하는 단계는,
상기 제 1 타일의 렌더링 결과와 상기 제 2 타일간의 종속성이 있는 경우, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일의 렌더링에 이용되는 동적 텍스쳐를 생성하는 단계; 및
상기 생성된 동적 텍스쳐를 이용하여 상기 제 2 타일을 렌더링하는 단계;
를 더 포함하는 방법.
The method according to claim 1,
Wherein rendering the second tile comprises:
Generating a dynamic texture used for rendering the second tile using a rendering result of the first tile when there is a dependency between the rendering result of the first tile and the second tile; And
Rendering the second tile using the generated dynamic texture;
≪ / RTI >
제 3항에 있어서,
상기 방법은,
상기 제 1 드로우콜에 포함된 셰이더와 상기 제 2 드로우콜에 포함된 셰이더가 동일한지 분석하는 단계;
상기 동적 텍스쳐가, 상기 제 1 드로우콜 및 상기 제 2 드로우콜에 매핑되는지 식별하는 단계; 및
상가 분석 결과 및 상기 식별 결과에 기초하여, 상기 제 1 타일의 렌더링 결과와 상기 제 2 타일간의 종속성이 있는지 결정하는 단계;
를 더 포함하는, 방법.
The method of claim 3,
The method comprises:
Analyzing whether a shader included in the first draw call and a shader included in the second draw call are the same;
Identifying whether the dynamic texture is mapped to the first draw call and the second draw call; And
Determining whether there is a dependency between the rendering result of the first tile and the second tile based on the result of the valuation analysis and the identification result;
≪ / RTI >
제 1항에 있어서,
상기 서명을 생성하는 단계는,
상기 제 1 드로우콜 및 상기 제 2 드로우콜에 관한, 오픈GL 상태(openGL state), 버텍스 데이터, 인덱스 데이터, 속성 데이터, 셰이더 및 텍스쳐를 이용하여 상기 제 1 드로우콜의 서명 및 상기 제 2 드로우콜의 서명을 생성하는 단계를 포함하고,
상기 서명은 상기 제 1 드로우콜 및 상기 제 2 드로우콜 간의 식별이 가능한 문자열인, 방법.
The method according to claim 1,
Wherein the generating the signature comprises:
The signature of the first draw call and the signature of the second draw call using the openGL state, vertex data, index data, attribute data, shader and texture relating to the first draw call and the second draw call, And generating a signature of the signature,
Wherein the signature is a character string capable of identifying between the first draw call and the second draw call.
제 1항에 있어서,
상기 제 1 타일 및 상기 제 2 타일은 각각, 상기 선행 프레임 및 상기 후속 프레임을 분할하는, 서로 인접한 복수의 기본 사이즈 타일들을 포함하는, 방법.
The method according to claim 1,
Wherein the first tile and the second tile each comprise a plurality of adjacent base size tiles that divide the preceding frame and the subsequent frame, respectively.
제 1항에 있어서,
상기 방법은,
상기 후속 프레임에 대한 카메라 시점(view point)이 상기 선행 프레임에 대한 카메라 시점과 동일한지 결정하는 단계;
를 더 포함하고,
상기 카메라 시점이 동일한 것으로 결정되는 경우, 상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명을 비교하는, 방법.
The method according to claim 1,
The method comprises:
Determining whether a camera viewpoint for the subsequent frame is the same as a camera viewpoint for the preceding frame;
Further comprising:
And comparing the signature of the first draw call with the signature of the second draw call if the camera viewpoint is determined to be the same.
타일-기반 렌더링을 수행하는 그래픽스 프로세싱 장치에 있어서,
적어도 하나의 인스트럭션을 저장하기 위한 메모리; 및
상기 메모리에 저장된 상기 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함하고,
상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
선행 프레임의 제 1 타일의 렌더링에 이용되는 제 1 드로우콜을 수신하고,
상기 제 1 타일의 위치에 대응되는, 후속 프레임의 제 2 타일의 렌더링에 이용되는 제 2 드로우콜을 수신하고,
상기 제 1 드로우콜의 서명 및 상기 제 2 드로우콜 서명을 생성하고,
상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명을 비교하고,
상기 비교 결과에 따라, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일을 렌더링하는, 장치.
1. A graphics processing apparatus for performing tile-based rendering,
A memory for storing at least one instruction; And
And at least one processor executing the at least one instruction stored in the memory,
The processor executing the one or more instructions,
A first draw call used for rendering a first tile of a preceding frame,
A second draw call used to render a second tile of a subsequent frame, corresponding to a position of the first tile,
Generates a signature of the first draw call and the second draw call signature,
The signature of the first draw call is compared with the signature of the second draw call,
And render the second tile using a rendering result of the first tile according to the comparison result.
제 8항에 있어서,
상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명이 일치하는 경우, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일을 렌더링하는, 장치.
9. The method of claim 8,
Wherein the at least one processor executes the one or more instructions,
And render the second tile using the rendering result of the first tile if the signature of the first draw call matches the signature of the second draw call.
제 8항에 있어서,
상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
상기 제 1 타일의 렌더링 결과와 상기 제 2 타일간의 종속성이 있는 경우, 상기 제 1 타일의 렌더링 결과를 이용하여 상기 제 2 타일의 렌더링에 이용되는 동적 텍스쳐를 생성하고,
상기 생성된 동적 텍스쳐를 이용하여 상기 제 2 타일을 렌더링하는, 장치.
9. The method of claim 8,
Wherein the at least one processor executes the one or more instructions,
Generating a dynamic texture used for rendering the second tile using a rendering result of the first tile when there is a dependency between the rendering result of the first tile and the second tile,
And render the second tile using the generated dynamic texture.
제 10항에 있어서,
상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
상기 제 1 드로우콜에 포함된 셰이더와 상기 제 2 드로우콜에 포함된 셰이더가 동일한지 분석하고,
상기 동적 텍스쳐가, 상기 제 1 드로우콜 및 상기 제 2 드로우콜에 매핑되는지 식별하고,
상가 분석 결과 및 상기 식별 결과에 기초하여, 상기 제 1 타일의 렌더링 결과와 상기 제 2 타일간의 종속성이 있는지 결정하는, 장치.
11. The method of claim 10,
Wherein the at least one processor executes the one or more instructions,
The shader included in the first draw call and the shader included in the second draw call are the same,
Identify whether the dynamic texture is mapped to the first draw call and the second draw call,
And determines whether there is a dependency between the rendering result of the first tile and the second tile, based on the result of the shopping arc analysis and the identification result.
제 8항에 있어서,
상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
상기 제 1 드로우콜 및 상기 제 2 드로우콜에 관한, 오픈GL 상태(openGL state), 버텍스 데이터, 인덱스 데이터, 속성 데이터, 셰이더 및 텍스쳐를 이용하여 상기 제 1 드로우콜의 서명 및 상기 제 2 드로우콜의 서명을 생성하며,
상기 서명은 상기 제 1 드로우콜 및 상기 제 2 드로우콜 간의 식별이 가능한 문자열인, 장치.
9. The method of claim 8,
Wherein the at least one processor executes the one or more instructions,
The signature of the first draw call and the signature of the second draw call using the openGL state, vertex data, index data, attribute data, shader and texture relating to the first draw call and the second draw call, Lt; / RTI > signature,
Wherein the signature is a character string capable of identifying between the first draw call and the second draw call.
제 8항에 있어서,
상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
상기 제 1 타일 및 상기 제 2 타일은 각각, 상기 선행 프레임 및 상기 후속 프레임을 분할하는, 서로 인접한 복수의 기본 사이즈 타일들을 포함하는, 장치.
9. The method of claim 8,
Wherein the at least one processor executes the one or more instructions,
Wherein the first tile and the second tile each include a plurality of adjacent base size tiles that divide the preceding frame and the subsequent frame, respectively.
제 8항에 있어서,
상기 적어도 하나의 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써,
상기 후속 프레임에 대한 카메라 시점(view point)이 상기 선행 프레임에 대한 카메라 시점과 동일한지 결정하고,
상기 카메라 시점이 동일한 것으로 결정되는 경우, 상기 제 1 드로우콜의 서명과 상기 제 2 드로우콜의 서명을 비교하는, 장치.
9. The method of claim 8,
Wherein the at least one processor executes the one or more instructions,
Determines whether a camera viewpoint for the subsequent frame is the same as a camera point for the preceding frame,
And compares the signature of the first draw call with the signature of the second draw call when the camera viewpoint is determined to be the same.
그래픽스 프로세싱 장치에서 타일-기반 렌더링을 수행하는 방법에 있어서,
선행 프레임 및 후속 프레임과 각각 연관된 적어도 하나의 드로우콜을 처리함으로써, 상기 선행 프레임 내 타일과 동일한 상기 후속 프레임에 포함된 적어도 하나의 타일을 식별하는 단계;
상기 후속 프레임을 렌더링하기 위해 상기 선행 프레임으로부터 상기 적어도 하나의 타일을 저장하는 단계; 및
상기 저장된 적어도 하나의 타일을 이용하여 상기 후속 프레임을 렌더링하는 단계;
를 포함하는, 방법.
A method of performing tile-based rendering in a graphics processing device,
Identifying at least one tile included in the subsequent frame that is the same as a tile in the preceding frame by processing at least one draw call associated with each of the preceding frame and the subsequent frame;
Storing the at least one tile from the preceding frame to render the subsequent frame; And
Rendering the subsequent frame using the stored at least one tile;
/ RTI >
제 15항에 있어서,
상기 적어도 하나의 드로우콜을 처리하는 단계는,
상기 선행 프레임과 연관된 드로우콜들의 서명(signature)으로부터, 상기 선행 프레임과 연관된 복수의 드로우콜들을 식별하는 단계;
상기 후속 프레임과 연관된 드로우콜들의 서명으로부터, 상기 후속 프레임과 연관된 복수의 드로우콜들을 식별하는 단계;
상기 선행 프레임 및 상기 후속 프레임 각각에 영향을 주는 적어도 하나의 드로우콜을 식별하는 단계;
상기 선행 프레임 내 포함된 드로우콜과 동일한 상기 후속 프레임에 포함된 적어도 하나의 드로우콜을 식별하는 단계; 및
상기 드로우콜들 간의 유사성에 기초하여, 상기 후속 프레임에서 렌더링될 수 있는 상기 선행 프레임 내 적어도 하나의 타일을 식별하는 단계;
를 더 포함하는 방법.
16. The method of claim 15,
Wherein the processing of the at least one draw call comprises:
Identifying a plurality of draw calls associated with the preceding frame from a signature of draw calls associated with the preceding frame;
Identifying a plurality of draw calls associated with the subsequent frame from a signature of draw calls associated with the subsequent frame;
Identifying at least one draw call affecting each of the preceding frame and the subsequent frame;
Identifying at least one draw call included in the subsequent frame that is the same as the draw call included in the preceding frame; And
Identifying at least one tile in the preceding frame that can be rendered in the subsequent frame, based on the similarity between the draw calls;
≪ / RTI >
제 16항에 있어서,
상기 선행 프레임 및 상기 후속 프레임의 상기 적어도 하나의 드로우콜 간에 상기 적어도 하나의 변화를 식별하는 단계는,
상기 선행 프레임 및 상기 후속 프레임의 상기 적어도 하나의 드로우콜을 상호연관(correlate)시키는 단계; 및
상기 적어도 하나의 변화를 식별하는 단계;
를 더 포함하고,
상기 적어도 하나의 변화는 적어도 하나의 실행 모드 및 입력에 기초하여 식별되고, 상기 입력은 적어도 하나의 버텍스 버퍼(vertex buffer), 인덱스 버퍼(index buffer), 속성 버퍼(attribute buffer), 셰이더(shader) 및 텍스쳐를 포함하는, 방법.
17. The method of claim 16,
Wherein identifying the at least one change between the at least one draw call of the preceding frame and the subsequent frame comprises:
Correlating the at least one draw call of the preceding frame and the subsequent frame; And
Identifying the at least one change;
Further comprising:
Wherein the at least one change is identified based on at least one execution mode and input and the input comprises at least one of a vertex buffer, an index buffer, an attribute buffer, a shader, And a texture.
제 16항에 있어서,
상기 식별된 상기 선행 프레임으로부터의 상기 적어도 하나의 타일은, 상기 후속 프레임에서 다시 렌더링(re-render)되는, 방법.
17. The method of claim 16,
Wherein the at least one tile from the identified preceding frame is re-rendered in the subsequent frame.
제 15항에 있어서,
상기 타일 렌더링은 동적 텍스쳐에 이용되는, 방법.
16. The method of claim 15,
Wherein the tile rendering is used for dynamic textures.
KR1020170025653A 2016-08-03 2017-02-27 Method and apparatus for performing tile-based rendering KR20180015564A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/666,123 US10373286B2 (en) 2016-08-03 2017-08-01 Method and apparatus for performing tile-based rendering

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201641026546 2016-08-03
IN201641026546 2016-08-03

Publications (1)

Publication Number Publication Date
KR20180015564A true KR20180015564A (en) 2018-02-13

Family

ID=61231944

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170025653A KR20180015564A (en) 2016-08-03 2017-02-27 Method and apparatus for performing tile-based rendering

Country Status (1)

Country Link
KR (1) KR20180015564A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109389548A (en) * 2018-10-12 2019-02-26 上海兆芯集成电路有限公司 Computer system and its drawing processing method
KR20210050237A (en) * 2019-10-28 2021-05-07 이화여자대학교 산학협력단 Buffer cache management method and a computing device to which the buffer cache management method are applied

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109389548A (en) * 2018-10-12 2019-02-26 上海兆芯集成电路有限公司 Computer system and its drawing processing method
KR20210050237A (en) * 2019-10-28 2021-05-07 이화여자대학교 산학협력단 Buffer cache management method and a computing device to which the buffer cache management method are applied

Similar Documents

Publication Publication Date Title
WO2020156264A1 (en) Rendering method and apparatus
US10089775B2 (en) Automated graphics and compute tile interleave
US20230290035A1 (en) Graphics library extensions
KR101732288B1 (en) Sprite graphics rendering system
US10164458B2 (en) Selective rasterization
US9715750B2 (en) System and method for layering using tile-based renderers
US9881391B2 (en) Procedurally defined texture maps
US9038034B2 (en) Compiling for programmable culling unit
JP5166552B2 (en) Multi-buffer support for off-screen surfaces in graphics processing systems
KR20180056316A (en) Method and apparatus for performing tile-based rendering
CN108027956B (en) Dynamic switching between late depth testing and conservative depth testing
KR20100004119A (en) Post-render graphics overlays
US20130127858A1 (en) Interception of Graphics API Calls for Optimization of Rendering
CN108701367B (en) Single pass bounding volume level rasterization
US10432914B2 (en) Graphics processing systems and graphics processors
KR20230073222A (en) Depth buffer pre-pass
US10373286B2 (en) Method and apparatus for performing tile-based rendering
US8004515B1 (en) Stereoscopic vertex shader override
CN111989715A (en) Compressed visibility state for GPU compatible with hardware instantiation
KR20180015564A (en) Method and apparatus for performing tile-based rendering
JP2023525725A (en) Data compression method and apparatus
CN113838180A (en) Rendering instruction processing method and related equipment thereof
CN116188552B (en) Region-based depth test method, device, equipment and storage medium
JP2018181308A (en) Image processing device, and image processing method
US10311627B2 (en) Graphics processing apparatus and method of processing graphics pipeline thereof

Legal Events

Date Code Title Description
A201 Request for examination