KR20170055392A - Method and apparatus for processing graphics command - Google Patents

Method and apparatus for processing graphics command Download PDF

Info

Publication number
KR20170055392A
KR20170055392A KR1020160025039A KR20160025039A KR20170055392A KR 20170055392 A KR20170055392 A KR 20170055392A KR 1020160025039 A KR1020160025039 A KR 1020160025039A KR 20160025039 A KR20160025039 A KR 20160025039A KR 20170055392 A KR20170055392 A KR 20170055392A
Authority
KR
South Korea
Prior art keywords
shader
shader program
program
graphics
text
Prior art date
Application number
KR1020160025039A
Other languages
Korean (ko)
Other versions
KR102254119B1 (en
Inventor
김경수
장병준
박봉훈
박찬민
안우람
이태영
정주영
함철희
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US15/198,155 priority Critical patent/US10002401B2/en
Publication of KR20170055392A publication Critical patent/KR20170055392A/en
Application granted granted Critical
Publication of KR102254119B1 publication Critical patent/KR102254119B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06F17/30
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)

Abstract

A method for processing a graphics command includes the step of receiving the graphics command from a device executing an application. At least one shader included in the graphics command to be processed by a graphics processor is selected and a shader program is generated by using the at least one shader which is selected. A searched shader program is outputted by searching for a shader program identical to the shader program generated from at least one shader program previously compiled. Accordingly, the present invention can omit an operation by delaying the graphics command.

Description

그래픽스 명령을 처리하는 방법 및 장치{METHOD AND APPARATUS FOR PROCESSING GRAPHICS COMMAND}METHOD AND APPARATUS FOR PROCESSING GRAPHICS COMMAND BACKGROUND OF THE INVENTION [0001]

그래픽스 명령을 처리하는 방법 및 장치에 관한 것이다.To a method and apparatus for processing graphics commands.

그래픽스 프로세싱 유닛(Graphics Processing Unit, 이하 GPU)은 OpenGL ES 및 OpenCL (CUDA)등의 그래픽스 API를 처리하여 휴대기기 및 TV에서 화려한 그래픽스 효과를 구현 할 수 있다. The Graphics Processing Unit (GPU) can process graphics APIs such as OpenGL ES and OpenCL (CUDA) to realize brilliant graphics effects on mobile devices and TVs.

GPU에서 프로그램이 처리되기 위해서는 프로그램이 표준 API의 정해진 규칙에 따라 작성되어야 한다. GPU에서 처리되는 프로그램은 이미지 생성에 필수적인 버텍스 셰이더(vertex shader)와 픽셀 셰이더(pixel shader)로 구성된다. 버텍스 셰이더와 픽셀 셰이더는 컴파일(compile) 및 링크(link)되어 프로그램에 사용된다.In order for a program to be processed on the GPU, the program must be written according to the standard rules of the standard API. Programs processed on the GPU consist of a vertex shader and a pixel shader that are essential for image generation. Vertex shaders and pixel shaders are compiled and linked to the program.

휴대 기기 및 TV에 사용되는 어플리케이션에서 화려한 그래픽스 효과가 구현되면서 GPU에서 처리되는 어플리케이션의 프로그램 크기가 커지고 있다. GPU에서 처리되는 프로그램의 크기가 커지면서 프로그램을 구성하는 버텍스 셰이더 및 픽셀 셰이더를 컴파일, 링크하는데 많은 시간이 소요되며, 특히 게임에서 사용되는 프로그램에서는 동일 효과를 구현하기 위해 다수의 셰이더들이 반복적으로 사용된다.With the brilliant graphics effects in applications used in mobile devices and TVs, the program size of applications being processed on the GPU is increasing. As the size of the program processed by the GPU increases, it takes a lot of time to compile and link the vertex shader and the pixel shader that constitute the program. Especially, in the program used in the game, many shaders are repeatedly used to realize the same effect .

그래픽스 명령을 처리하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.And a method and apparatus for processing a graphics command. The present invention also provides a computer-readable recording medium on which a program for causing the computer to execute the method is provided. 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.

일 측면에 따른, 그래픽스 명령을 처리하는 방법에 있어서, 어플리케이션을 실행하는 장치로부터 상기 그래픽스 명령을 수신하는 단계; 상기 그래픽스 명령에 포함된, 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택하는 단계; 상기 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램을 생성하는 단계; 이전에 컴파일된 적어도 하나의 셰이더 프로그램 중에서 상기 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색하는 단계; 및 상기 검색된 셰이더 프로그램을 출력하는 단계;를 포함할 수 있다.CLAIMS What is claimed is: 1. A method of processing a graphics instruction, the method comprising: receiving the graphics instruction from an apparatus executing an application; Selecting at least one shader included in the graphics instruction to be processed in the graphics processor; Generating a shader program using at least one selected shader; Searching for a shader program identical to the generated shader program among at least one previously compiled shader program; And outputting the retrieved shader program.

다른 일 측면에 따라, 그래픽스 명령 처리 장치에 있어서, 어플리케이션을 실행하는 장치로부터 그래픽스 명령을 수신하고, 상기 그래픽스 명령에 포함된 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택하며, 상기 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램을 생성하여, 이전에 컴파일된 적어도 하나의 셰이더 프로그램 중에서 상기 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색하고, 상기 검색된 셰이더 프로그램을 출력하는 프로세서; 및 이전에 컴파일 된 셰이더 프로그램들을 저장하는 캐시;를 포함할 수 있다.According to another aspect, there is provided a graphics instruction processing apparatus comprising: a graphics processing unit that receives a graphics command from an apparatus executing an application, selects at least one shader to be processed in a graphics processor included in the graphics command, A processor for generating a shader program using the generated shader program and searching for a shader program identical to the generated shader program among at least one previously compiled shader program and outputting the searched shader program; And a cache that stores previously compiled shader programs.

또 다른 일 측면에 따라, GPU에 있어서, 어플리케이션을 실행하는 장치로부터 그래픽스 명령을 수신하고, 상기 그래픽스 명령에 포함된 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택하며, 상기 선택된 셰이더를 이용하여 셰이더 프로그램을 생성하여, 이전에 컴파일된 적어도 하나의 셰이더 프로그램 중에서 상기 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색하고, 상기 검색된 셰이더 프로그램을 출력하는 그래픽스 드라이버; 및 이전에 컴파일된 셰이더 프로그램들을 저장하는 캐시;를 포함할 수 있다.According to another aspect, there is provided a graphics processing unit (GPU) for receiving a graphics command from an apparatus executing an application, selecting at least one shader to be processed in a graphics processor included in the graphics command, A graphics driver for searching for a same shader program as the generated shader program from among at least one previously compiled shader program and outputting the retrieved shader program; And a cache that stores previously compiled shader programs.

또 다른 일 측면에 따라, 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적 기록매체는 제 1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램으로 기록한다.According to another aspect, a computer-readable non-volatile recording medium recording a program for execution on a computer records the method of the first aspect as a program for executing the method on a computer.

상기된 바에 따르면, 그래픽스 명령을 지연처리 함으로써 연산을 생략할 수 있다. 또한, 셰이더 프로그램을 재생성할 때, 기존에 저장된 셰이더 프로그램 바이너리를 재사용하여 셰이더 프로그램을 컴파일하는 과정을 생략함으로써 연산량을 줄일 수 있다.According to the above, the computation can be omitted by delaying the graphics command. Also, when the shader program is regenerated, the amount of computation can be reduced by omitting the process of compiling the shader program by reusing the previously stored shader program binaries.

도 1은 일 실시예에 따른 그래픽스 명령을 처리하는 방법의 흐름도이다.
도 2는 일 실시예에 따른 GPU 외부에 위치한 그래픽스 명령 처리 장치에서 그래픽스 명령이 처리되는 예시를 나타내는 도면이다.
도 3은 일 실시예에 따른 GPU 내부에 위치한 그래픽스 명령 처리 장치에서 그래픽스 명령이 처리되는 예시를 나타내는 도면이다.
도 4는 일 실시예에 따른 셰이더 프로그램 매니저의 블록도이다.
도 5는 일 실시예에 따른 워크 프로세서에서 셰이더 프로그램을 검색하는 예시를 나타내는 도면이다.
도 6은 일 실시예에 따른 그래픽스 명령 처리 장치가 셰이더 프로그램을 검색 및 출력하는 예시를 나타내는 도면이다.
도 7은 일 실시 예에 따른 그래픽스 명령 처리 장치에서 데이터가 처리되는 과정의 예시를 구체적으로 나타내는 도면이다.
도 8은 일 실시 예에 따른 그래픽스 명령을 처리하는 방법의 자세한 흐름도이다.
도 9는 일 실시 예에 따른 그래픽스 드라이버가 셰이더 프로그램 관련 API를 처리하는 방법의 흐름도이다.
도 10은 일 실시 예에 따른 셰이더 프로그램 매니저가 셰이더 프로그램 관련 API를 처리하는 방법의 흐름도이다.
1 is a flow diagram of a method for processing graphics instructions in accordance with one embodiment.
2 is a diagram illustrating an example in which a graphics command is processed in a graphics command processing apparatus located outside a GPU according to an exemplary embodiment.
FIG. 3 is a diagram illustrating an example in which a graphics command is processed in a graphics command processing apparatus located inside a GPU according to an exemplary embodiment of the present invention.
4 is a block diagram of a shader program manager according to an embodiment.
5 is a diagram illustrating an example of searching a shader program in a work processor according to an embodiment.
6 is a diagram illustrating an example in which a graphics instruction processing apparatus according to an embodiment searches for and outputs a shader program.
7 is a diagram specifically illustrating an example of a process of processing data in the graphics instruction processing apparatus according to an embodiment.
8 is a detailed flowchart of a method of processing a graphics command according to an embodiment.
9 is a flowchart of a method of processing a shader program related API by a graphics driver according to an exemplary embodiment.
10 is a flowchart of a method of processing a shader program related API by a shader program manager according to an exemplary embodiment.

아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙임으로써 중복 설명을 생략한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, which will be readily apparent to those skilled in the art. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly describe the present invention in the drawings, parts not related to the description are omitted, and similar parts are denoted by similar reference numerals throughout the specification, and redundant description is omitted.

명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part is referred to as being "connected" to another part, it includes not only "directly connected" but also "electrically connected" with another part in between . Also, when a part is referred to as "including " an element, it does not exclude other elements unless specifically stated otherwise.

이하에 첨부 도면을 참조하면서 본 발명의 실시형태에 대해서 상세히 설명하기로 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 일 실시예에 따른 그래픽스 명령을 처리하는 방법의 흐름도이다. 단계 101에서, 어플리케이션에서 그래픽스 명령을 처리하라는 요청이 발생한 경우, 그래픽스 명령 처리 장치는 어플리케이션을 실행하는 장치로부터 그래픽스 명령을 수신한다. 그래픽스 명령에는 GPU에서 처리될 수 있는 명령이 포함될 수 있다. 예를 들어, 셰이더 프로그램 관련 API가 포함 될 수 있다. 1 is a flow diagram of a method for processing graphics instructions in accordance with one embodiment. In step 101, when a request to process a graphics command is made in the application, the graphics command processing apparatus receives a graphics command from the apparatus executing the application. A graphics command may include an instruction that can be processed by the GPU. For example, a shader program related API may be included.

단계 102에서, 그래픽스 명령 처리 장치는 단계 101에서 수신된 그래픽스 명령에 포함된, 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택할 수 있다. 그래픽스 프로세서에서 처리될 셰이더는 버텍스 셰이더 및 픽셀 셰이더를 포함할 수 있다. 그러나 이에 제한되지 않는다.In step 102, the graphics instruction processing device may select at least one shader to be processed in the graphics processor, contained in the graphics instruction received in step 101. A shader to be processed by a graphics processor may include a vertex shader and a pixel shader. However, it is not limited thereto.

단계 103에서, 그래픽스 명령 처리 장치는 단계 102에서 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램을 생성할 수 있다. 셰이더 프로그램은 GPU에서 처리될 수 있는 프로그램의 단위 또는 형태이다. 셰이더 프로그램은 단계 102에서 선택된 셰이더 및 그래픽스 명령 처리 장치가 수신한 유니폼 데이터를 포함할 수 있다. 그러나 이에 제한되지 않는다.In step 103, the graphics instruction processing device can generate a shader program using at least one shader selected in step 102. [ A shader program is a unit or type of program that can be processed by a GPU. The shader program may include the uniform data received by the shader and graphics instruction processing device selected in step 102. [ However, it is not limited thereto.

단계 104에서, 그래픽스 명령 처리 장치는 이전에 컴파일된 적어도 하나의 셰이더 프로그램 중에서, 단계 103에서 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색할 수 있다. 그래픽스 명령 처리 장치는 셰이더 프로그램에 포함된 버텍스 셰이더 및 픽셀 셰이더의 소스(source) 코드(또는 컴파일 코드), 유니폼 데이터, 컴파일러 버전, 및 GPU 버전 정보를 이용하여 단계 103에서 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색할 수 있다. 그래픽스 명령 처리 장치는 셰이더 소스 코드의 텍스트 및 텍스트의 길이와 유니폼 데이터의 텍스트 및 텍스트의 길이를 이용하여 단계 103에서 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색할 수 있다. 그래픽스 명령 처리 장치는 셰이더 소스 코드의 텍스트 및 텍스트의 길이, 유니폼 데이터의 텍스트 및 텍스트의 길이, 컴파일러 버전, 및 GPU 버전 정보를 이용하여 키를 생성할 수 있다. 그래픽스 명령 처리 장치는 생성된 키와 동일한 키를 검색할 수 있다. 키는 셰이더 프로그램을 식별하기 위한 고유(unique)의 데이터이다. 다시 말해서, 셰이더 프로그램마다 서로 다른 키가 생성된다.In step 104, the graphics command processing device can search for the same shader program as the shader program generated in step 103 among at least one previously compiled shader program. The graphics command processing device uses the source code (or compiled code), the uniform data, the compiler version, and the GPU version information of the vertex shader and pixel shader included in the shader program to generate the same shader program You can search for programs. The graphics instruction processing device can search for the same shader program as the shader program generated in step 103 using the length of the text and text of the shader source code, the text of the uniform data, and the length of the text. The graphics command processing device can generate the key using the length of the text and text of the shader source code, the text and text length of the uniform data, the compiler version, and the GPU version information. The graphics command processing device can retrieve the same key as the generated key. The key is unique data for identifying the shader program. In other words, different keys are generated for each shader program.

단계 105에서, 그래픽스 명령 처리 장치는 단계 104에서 검색된 셰이더 프로그램을 출력할 수 있다. 그래픽스 명령 처리 장치는 검색된 셰이더 프로그램을 그래픽스 드라이버 또는 그래픽스 프로세서로 출력할 수 있다. 셰이더 프로그램 매니저는 단계 104에서 검색된 셰이더 프로그램을 바이너리로 출력할 수 있다. In step 105, the graphics command processing device may output the shader program retrieved in step 104. [ The graphics command processing device can output the searched shader program to a graphics driver or a graphics processor. The shader program manager can output the shader program retrieved in step 104 as a binary.

도 1의 단계들은 프로그램 또는 인스트럭션 등의 형태로 메모리에 저장되고, 메인 프로세서, GPU, 셰이더 프로그램 매니저, 그래픽스 드라이버 등에 의해 구현될 수 있다. 그러나 이에 제한되지 않는다.1 may be stored in a memory in the form of a program or an instruction, and may be implemented by a main processor, a GPU, a shader program manager, a graphics driver, or the like. However, it is not limited thereto.

도 2는 일 실시예에 따른 GPU 외부에 위치한 그래픽스 명령 처리 장치에서 그래픽스 명령이 처리되는 예시를 나타내는 도면이다.2 is a diagram illustrating an example in which a graphics command is processed in a graphics command processing apparatus located outside a GPU according to an exemplary embodiment.

도 2를 참조하면, 그래픽스 명령 처리 장치는 메인 프로세서(10) 또는 셰이더 프로그램 매니저(100)에 의해 구현될 수 있다. 셰이더 프로그램 매니저(100)는 GPU(20) 외부에 위치할 수 있다.Referring to FIG. 2, the graphics instruction processing device may be implemented by the main processor 10 or the shader program manager 100. The shader program manager 100 may be located outside the GPU 20.

GPU(20)는 그래픽스 드라이버(200), 그래픽스 프로세서(300) 및 컴파일러(500)를 포함할 수 있다. The GPU 20 may include a graphics driver 200, a graphics processor 300, and a compiler 500.

메인 프로세서(10)는 셰이더 프로그램 매니저(100) 및 캐시(400)를 포함할 수 있다.The main processor 10 may include a shader program manager 100 and a cache 400.

캐시(400)에는 이전에 컴파일된 적어도 하나의 셰이더 프로그램이 저장될 수 있다. 캐시(400)에는 셰이더 프로그램이 바이너리로 저장될 수 있다. 캐시(400)에는 셰이더 프로그램(1000a)에 포함된 정보를 이용하여 생성된 키가 저장될 수 있다. 키는 셰이더 소스 코드의 텍스트 및 텍스트의 길이, 유니폼 데이터의 텍스트 및 텍스트의 길이, 컴파일러 버전, 및 GPU 버전 정보를 이용하여 생성될 수 있다. 그러나 이에 제한되지 않는다.The cache 400 may store at least one previously compiled shader program. The cache 400 may store the shader program as a binary. The cache 400 may store a key generated using the information included in the shader program 1000a. The key may be generated using the length of the text and text of the shader source code, the length of the text and text of the uniform data, the compiler version, and the GPU version information. However, it is not limited thereto.

셰이더 프로그램 매니저(100)는 그래픽스 명령을 수신할 수 있다. 셰이더 프로그램 매니저(100)는 수신된 그래픽스 명령에 포함된, 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택할 수 있다. 셰이더 프로그램 매니저(100)는 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램을 생성할 수 있다. 셰이더 프로그램 매니저(100)는 이전에 컴파일된 적어도 하나의 셰이더 프로그램 중에서, 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색할 수 있고 검색된 셰이더 프로그램을 출력할 수 있다.The shader program manager 100 may receive a graphics command. The shader program manager 100 may select at least one shader to be processed in the graphics processor included in the received graphics instruction. The shader program manager 100 may generate a shader program using at least one selected shader. The shader program manager 100 can search for the same shader program as the generated shader program among at least one previously compiled shader program and output the retrieved shader program.

셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색하는 단계에서 키를 이용할 수 있다. 일 실시예에서, 셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)에 포함된 정보를 이용하여 키를 생성할 수 있다. 또한, 셰이더 프로그램 매니저(100)가 생성한 키는 캐시(400)에 저장될 수 있다. 키가 캐시에 저장된 경우, 셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)의 키와 캐시(400)에 저장된 셰이더 프로그램의 키를 비교함으로써, 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 캐시(400)에서 검색할 수 있다.The shader program manager 100 can use the key in the step of searching for the same shader program as the generated shader program 1000a. In one embodiment, the shader program manager 100 may generate a key using the information contained in the generated shader program 1000a. In addition, the key generated by the shader program manager 100 may be stored in the cache 400. When the key is stored in the cache, the shader program manager 100 compares the key of the generated shader program 1000a with the key of the shader program stored in the cache 400, thereby obtaining the same shader program as the generated shader program 1000a It can be retrieved from the cache 400.

셰이더 프로그램 매니저(100)가 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색한 경우, 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 출력할 수 있다. 동일한 셰이더 프로그램이 검색된 경우, 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 그래픽스 드라이버(200)로 출력할 수 있다. 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 바이너리로 출력할 수 있다. 바이너리는 그래픽스 프로세서(300)에서 인식 가능한 형태의 데이터이다.When the shader program manager 100 searches for the same shader program as the generated shader program 1000a, the shader program manager 100 can output the searched shader program. When the same shader program is searched, the shader program manager 100 can output the searched shader program to the graphics driver 200. [ The shader program manager 100 can output the searched shader program as a binary. The binary is data of a form recognizable by the graphics processor 300.

셰이더 프로그램 매니저(100)가 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색하지 못한 경우, 셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)을 그래픽스 드라이버(200)로 출력할 수 있다. 생성된 셰이더 프로그램(1000a)이 그래픽스 드라이버(200)로 출력된 경우, 그래픽스 드라이버(200)는 컴파일러(500)를 이용하여 입력받은 셰이더 프로그램(1000a)을 컴파일하여 바이너리를 생성할 수 있다. 그래픽스 드라이버(200)는 생성된 바이너리를 그래픽스 프로세서(300)로 출력할 수 있다. 그래픽스 드라이버(200)는 생성된 바이너리를 캐시(400)에 저장할 수 있다. 셰이더 프로그램 매니저(100)는 검색에 이용한 셰이더 프로그램(1000a)의 키를 캐시(400)에 저장할 수 있다. The shader program manager 100 can output the generated shader program 1000a to the graphics driver 200 when the shader program manager 100 fails to search for the same shader program as the generated shader program 1000a. When the generated shader program 1000a is output to the graphics driver 200, the graphics driver 200 can compile the input shader program 1000a using the compiler 500 to generate a binary. The graphics driver 200 can output the generated binary to the graphics processor 300. [ The graphics driver 200 may store the generated binaries in the cache 400. [ The shader program manager 100 may store the key of the shader program 1000a used for the search in the cache 400. [

도 3은 일 실시예에 따른 GPU 내부에 위치한 그래픽스 명령 처리 장치에서 그래픽스 명령이 처리되는 예시를 나타내는 도면이다.FIG. 3 is a diagram illustrating an example in which a graphics command is processed in a graphics command processing apparatus located inside a GPU according to an exemplary embodiment of the present invention.

도 3을 참조하면, 그래픽스 명령 처리 장치는 그래픽스 드라이버(200) 또는 셰이더 프로그램 매니저(100)에 의해 구현될 수 있다. 그러나 이에 제한되지 않는다. 셰이더 프로그램 매니저(100)는 GPU(20) 내부에 위치할 수 있다.Referring to FIG. 3, the graphics instruction processing apparatus may be implemented by the graphics driver 200 or the shader program manager 100. However, it is not limited thereto. The shader program manager 100 may be located within the GPU 20.

GPU(20)는 그래픽스 드라이버(200), 그래픽스 프로세서(300), 캐시(400) 및 컴파일러(500)를 포함할 수 있다. The GPU 20 may include a graphics driver 200, a graphics processor 300, a cache 400 and a compiler 500.

캐시(400)에는 이전에 컴파일된 적어도 하나의 셰이더 프로그램이 저장될 수 있다. 캐시(400)에는 셰이더 프로그램이 바이너리로 저장될 수 있다. 캐시(400)에는 셰이더 프로그램(1000a)에 포함된 정보를 이용하여 생성된 키가 저장될 수 있다. 키는 셰이더 소스 코드의 텍스트 및 텍스트의 길이, 유니폼 데이터의 텍스트 및 텍스트의 길이, 컴파일러 버전, 및 GPU 버전 정보를 이용하여 생성될 수 있다. 그러나 이에 제한되지 않는다.The cache 400 may store at least one previously compiled shader program. The cache 400 may store the shader program as a binary. The cache 400 may store a key generated using the information included in the shader program 1000a. The key may be generated using the length of the text and text of the shader source code, the length of the text and text of the uniform data, the compiler version, and the GPU version information. However, it is not limited thereto.

셰이더 프로그램 매니저(100)는 그래픽스 명령을 수신할 수 있다. 셰이더 프로그램 매니저(100)는 수신된 그래픽스 명령에 포함된, 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택할 수 있다. 셰이더 프로그램 매니저(100)는 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램을 생성할 수 있다. 셰이더 프로그램 매니저(100)는 이전에 컴파일된 적어도 하나의 셰이더 프로그램 중에서, 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색할 수 있고 검색된 셰이더 프로그램을 출력할 수 있다.The shader program manager 100 may receive a graphics command. The shader program manager 100 may select at least one shader to be processed in the graphics processor included in the received graphics instruction. The shader program manager 100 may generate a shader program using at least one selected shader. The shader program manager 100 can search for the same shader program as the generated shader program among at least one previously compiled shader program and output the retrieved shader program.

셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색하는 단계에서 키를 이용할 수 있다. 일 실시예에서, 셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)에 포함된 정보를 이용하여 키를 생성할 수 있다. 또한, 셰이더 프로그램 매니저(100)가 생성한 키는 캐시(400)에 저장될 수 있다. 키가 캐시에 저장된 경우, 셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)의 키와 캐시(400)에 저장된 셰이더 프로그램의 키를 비교함으로써, 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 캐시(400)에서 검색할 수 있다.The shader program manager 100 can use the key in the step of searching for the same shader program as the generated shader program 1000a. In one embodiment, the shader program manager 100 may generate a key using the information contained in the generated shader program 1000a. In addition, the key generated by the shader program manager 100 may be stored in the cache 400. When the key is stored in the cache, the shader program manager 100 compares the key of the generated shader program 1000a with the key of the shader program stored in the cache 400, thereby obtaining the same shader program as the generated shader program 1000a It can be retrieved from the cache 400.

셰이더 프로그램 매니저(100)가 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색한 경우, 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 출력할 수 있다. 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 그래픽스 프로세서(300)로 출력할 수 있다. 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 바이너리로 출력할 수 있다.When the shader program manager 100 searches for the same shader program as the generated shader program 1000a, the shader program manager 100 can output the searched shader program. The shader program manager 100 may output the searched shader program to the graphics processor 300. The shader program manager 100 can output the searched shader program as a binary.

셰이더 프로그램 매니저(100)가 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색하지 못한 경우, 셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)을 컴파일러(500)로 출력할 수 있다. 컴파일러(500)는 입력받은 셰이더 프로그램(1000a)을 컴파일하여 바이너리를 생성할 수 있다. 그래픽스 드라이버(200)는 생성된 바이너리를 그래픽스 프로세서(300)로 출력할 수 있다. 생성된 바이너리는 캐시(400)에 저장될 수 있다. 셰이더 프로그램 매니저(100)가 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색하지 못한 경우, 생성된 셰이더 프로그램(1000a)의 키는 캐시(400)에 저장될 수 있다. 그러나 이에 제한되지 않는다.The shader program manager 100 can output the generated shader program 1000a to the compiler 500 when the shader program manager 100 fails to search for the same shader program as the generated shader program 1000a. The compiler 500 can compile the input shader program 1000a to generate a binary. The graphics driver 200 can output the generated binary to the graphics processor 300. [ The generated binaries may be stored in the cache 400. If the shader program manager 100 fails to retrieve the same shader program as the generated shader program 1000a, the key of the generated shader program 1000a may be stored in the cache 400. [ However, it is not limited thereto.

도 4는 일 실시예에 따른 셰이더 프로그램 매니저의 블록도이다.4 is a block diagram of a shader program manager according to an embodiment.

도 4를 참조하면, 일 실시예에 따른 셰이더 프로그램 매니저(100)는 셰이더 메모리(110) 및 워크 매니저(120)를 포함할 수 있다.Referring to FIG. 4, the shader program manager 100 according to an embodiment may include a shader memory 110 and a work manager 120.

셰이더 메모리(110)에는 셰이더 프로그램 매니저(100)가 수신한 그래픽스 명령이 저장될 수 있다. 셰이더 메모리(110)에는 그래픽스 명령에 포함된 적어도 하나의 셰이더가 저장될 수 있다. 셰이더 메모리(110)에 저장된 셰이더는 버텍스 셰이더 및 픽셀 셰이더를 포함할 수 있다. The graphics command received by the shader program manager 100 may be stored in the shader memory 110. The shader memory 110 may store at least one shader included in the graphics instruction. The shader stored in the shader memory 110 may include a vertex shader and a pixel shader.

일 실시예에서, 셰이더 메모리(110)에는 소스 API를 포함하는 버텍스 셰이더 및 픽셀 셰이더가 저장될 수 있다. 소스 API는 소스 코드를 포함할 수 있다. 셰이더 메모리(110)에는 소스 API를 포함하는 버텍스 셰이더 및 픽셀 셰이더의 소스 코드가 저장될 수 있다. 버텍스 셰이더 및 픽셀 셰이더의 소스 코드는 텍스트 형태로 저장될 수 있다. 버텍스 셰이더 및 픽셀 셰이더 각각의 소스 코드는 셰이더 메모리(110)의 TEXT_소스 공간에 독립적으로 저장될 수 있다. 그러나 이에 제한되지 않는다.In one embodiment, the shader memory 110 may store vertex shaders and pixel shaders that include the source API. The source API may include source code. The shader memory 110 may store the source code of the vertex shader and pixel shader including the source API. The source code for vertex shaders and pixel shaders can be stored in text form. The source code of each of the vertex shader and pixel shader may be stored independently in the TEXT_source space of the shader memory 110. [ However, it is not limited thereto.

또한, 셰이더 메모리(110)에는 소스 API 및 컴파일 API를 포함하는 버텍스 셰이더 및 픽셀 셰이더가 저장될 수 있다. 컴파일 API는 컴파일 코드를 포함할 수 있다. 셰이더 메모리(110)에는 버텍스 셰이더 및 픽셀 셰이더의 컴파일 코드가 저장될 수 있다. 버텍스 셰이더 및 픽셀 셰이더의 컴파일 코드는 텍스트 형태로 저장될 수 있다. 버텍스 셰이더 및 픽셀 셰이더 각각의 컴파일 코드는 셰이더 메모리(110)의 TEXT_컴파일 공간에 독립적으로 저장될 수 있다.In addition, the shader memory 110 may store a vertex shader and a pixel shader including a source API and a compilation API. The compilation API can include compiled code. In the shader memory 110, compile codes of the vertex shader and the pixel shader may be stored. The compile code for vertex shaders and pixel shaders can be stored in text form. The compile code of each of the vertex shader and the pixel shader can be stored independently in the TEXT_ compilation space of the shader memory 110. [

또는, 하나의 셰이더가 수신될 때 컴파일 API는 소스 API보다 나중에 처리될 수 있다. 셰이더 메모리(110)의 TEXT_소스 공간에 독립적으로 저장되어 있는 버텍스 셰이더 및 픽셀 셰이더의 소스 코드가 복사되어, 복사된 소스 코드는 셰이더 메모리(110)의 TEXT_컴파일 공간에 독립적으로 저장될 수 있다. 그러나 이에 제한되지 않는다.Alternatively, the compilation API may be processed later than the source API when a single shader is received. The source code of the vertex shader and pixel shader independently stored in the TEXT_ source space of the shader memory 110 is copied and the copied source code can be independently stored in the TEXT_ compilation space of the shader memory 110 . However, it is not limited thereto.

셰이더 프로그램 매니저(100)가 소스 API를 포함하는 적어도 하나의 버텍스 셰이더 및 픽셀 셰이더 각각을 순차적으로 수신하는 경우, 셰이더 프로그램 매니저(100)는 나중에 수신한 버텍스 셰이더 및 픽셀 셰이더를 셰이더 메모리(110)에 저장할 수 있다.When the shader program manager 100 sequentially receives each of the at least one vertex shader and the pixel shader including the source API, the shader program manager 100 stores the received vertex shader and pixel shader in the shader memory 110 Can be stored.

일 실시예에서, 셰이더 메모리(110)내의 TEXT_소스 공간에 소스 코드가 저장되어있는지 여부와 상관없이, 셰이더 프로그램 매니저(100)는 나중에 수신한 버텍스 셰이더 및 픽셀 셰이더 각각의 소스 코드를 셰이더 메모리(110)내의 TEXT_소스 공간에 독립적으로 저장할 수 있다. 최종적으로 셰이더 메모리(110)내의 TEXT_소스 공간에는 소스 API를 포함하는 버텍스 셰이더 및 픽셀 셰이더 중에서 셰이더 프로그램 매니저(100)가 가장 나중에 수신한 버텍스 셰이더 및 픽셀 셰이더의 소스 코드가 독립적으로 저장될 수 있다.In one embodiment, regardless of whether the source code is stored in the TEXT_source space in the shader memory 110, the shader program manager 100 stores the source code of each of the later received vertex shader and pixel shader in the shader memory 110 in the TEXT_source space. Finally, the source code of the vertex shader and the pixel shader received most recently by the shader program manager 100 among the vertex shader and pixel shader including the source API can be independently stored in the TEXT_ source space in the shader memory 110 .

셰이더 프로그램 매니저(100)가 소스 API 및 컴파일 API를 포함하는 적어도 하나의 버텍스 셰이더 및 픽셀 셰이더 각각을 순차적으로 수신하는 경우, 셰이더 프로그램 매니저(100)는 나중에 수신한 버텍스 셰이더 및 픽셀 셰이더를 셰이더 메모리(110)에 저장할 수 있다.When the shader program manager 100 sequentially receives each of the at least one vertex shader and the pixel shader including the source API and the compile API, the shader program manager 100 stores the received vertex shader and pixel shader in the shader memory 110).

일 실시예에서, 셰이더 메모리(110)내의 TEXT_컴파일 공간에 소스 코드(또는 컴파일 코드)가 저장되어있는지 여부와 상관없이, 셰이더 프로그램 매니저(100)는 나중에 수신한 버텍스 셰이더 및 픽셀 셰이더 각각의 소스 코드(또는 컴파일 코드)를 셰이더 메모리(110)내의 TEXT_컴파일 공간에 독립적으로 저장할 수 있다. 셰이더 프로그램 매니저(100)가 셰이더 메모리(110)내의 TEXT_컴파일 공간에 소스 코드를 독립적으로 저장하는 경우, 셰이더 메모리(110)의 TEXT_소스 공간에 독립적으로 저장되어 있는 버텍스 셰이더 및 픽셀 셰이더의 소스 코드가 복사되어, 복사된 소스 코드는 셰이더 메모리(110)의 TEXT_컴파일 공간에 독립적으로 저장될 수 있다.In one embodiment, regardless of whether the source code (or compiled code) is stored in the TEXT_ compilation space in the shader memory 110, the shader program manager 100 determines whether each of the vertex shaders and pixel shaders Code (or compiled code) in the TEXT_ compilation space in the shader memory 110 independently. When the shader program manager 100 independently stores the source code in the TEXT_ compilation space in the shader memory 110, the source of the vertex shader and the pixel shader independently stored in the TEXT_ source space of the shader memory 110 The code is copied and the copied source code can be stored independently in the TEXT_ compilation space of the shader memory 110. [

일 실시예에서, 그래픽스 명령을 지연처리 함으로써 연산을 생략할 수 있다. 또 다른 실시예에서, 셰이더 프로그램 선택을 위해 수신받은 셰이더를 지연처리함으로써 셰이더 프로그램에서 사용되지 않을 셰이더 생성 연산을 생략할 수 있다. 다른 실시예에서, 지연처리되는 셰이더는 버텍스 셰이더 및 픽셀 셰이더일 수 있다.In one embodiment, the operation may be omitted by delaying the graphics instruction. In another embodiment, the received shader for the shader program selection may be deferred to omit the shader creation operation that would not be used in the shader program. In another embodiment, the shader being deferred may be a vertex shader and a pixel shader.

워크 매니저(120)는 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색할 수 있다.The work manager 120 can search for the same shader program as the generated shader program 1000a.

워크 매니저(120)는 워크 메모리(121) 및 워크 프로세서(122)를 포함할 수 있다.The work manager 120 may include a work memory 121 and a work processor 122.

워크 메모리(121)에는 셰이더 프로그램 검색에 이용되는 정보가 저장될 수 있다. The work memory 121 may store information used for shader program search.

워크 메모리(121)에는 버텍스 셰이더, 픽셀 셰이더, 유니폼 데이터 정보가 포함될 수 있다. 일 실시예에서, 워크 메모리(121)에는 버텍스 셰이더 및 픽셀 셰이더 소스 코드(또는 컴파일 코드)의 텍스트 및 텍스트의 길이, 유니폼 데이터의 텍스트 및 텍스트의 길이, 컴파일러 버전 및 GPU 버전 정보가 포함될 수 있다.The work memory 121 may include a vertex shader, a pixel shader, and uniform data information. In one embodiment, work memory 121 may include text and text lengths of vertex shader and pixel shader source code (or compiled code), text and text length of uniform data, compiler version, and GPU version information.

워크 프로세서(122)는 셰이더 프로그램을 검색할 수 있다. 이하의 도 5를 참조하여 워크 프로세서(122)에 대해 설명하기로 한다.The work processor 122 may search for a shader program. The work processor 122 will be described below with reference to FIG.

도 5는 일 실시예에 따른 워크 프로세서에서 셰이더 프로그램을 검색하는 예시를 나타내는 도면이다.5 is a diagram illustrating an example of searching a shader program in a work processor according to an embodiment.

워크 프로세서(122)는 워크 메모리(121)에 저장된 정보를 이용하여, 컴파일 된 적어도 하나의 셰이더 프로그램 중에서 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램을 검색할 수 있다.The work processor 122 can search for the same shader program as the shader program 1000a generated from at least one compiled shader program using the information stored in the work memory 121. [

워크 프로세서(122)는 키를 이용하여 검색을 할 수 있다. 키를 이용하여 검색하는 경우, 워크 프로세서(122)는 키 생성부(123) 및 키 비교부(124)를 포함할 수 있다.The work processor 122 can perform a search using a key. When searching by using a key, the work processor 122 may include a key generating unit 123 and a key comparing unit 124.

키 생성부(123)는 워크 메모리(121)에 저장된 검색에 이용되는 정보를 이용하여 키를 생성할 수 있다. 예를 들어, 워크 메모리(121)에 저장된 버텍스 셰이더 및 픽셀 셰이더 소스 코드(또는 컴파일 코드)의 텍스트 및 텍스트의 길이, 유니폼 데이터의 텍스트 및 텍스트의 길이, 컴파일러 버전 및 GPU 버전 정보를 이용하여 키를 생성할 수 있다.The key generation unit 123 can generate a key using information stored in the work memory 121. For example, the length of the text and text of the vertex shader and pixel shader source code (or compiled code) stored in the work memory 121, the length of the text and text of the uniform data, the compiler version, and the GPU version information are used Can be generated.

키 비교부(124)는 키 생성부(123)에서 생성된 키와 이전에 컴파일된 적어도 하나의 셰이더 프로그램의 키를 비교할 수 있다. 이전에 컴파일된 적어도 하나의 셰이더 프로그램의 키는 캐시(400)에 저장될 수 있다. 키가 캐시(400)에 저장된 경우, 키 비교부(124)는 키 생성부(123)에서 생성된 키와 캐시(400)에 저장되어있는 이전에 컴파일 된 적어도 하나의 셰이더 프로그램의 키를 비교할 수 있다.The key comparing unit 124 may compare the key generated by the key generating unit 123 with the key of at least one previously compiled shader program. The keys of at least one previously compiled shader program may be stored in the cache 400. When the key is stored in the cache 400, the key comparison unit 124 may compare the key generated by the key generation unit 123 with the key of at least one previously compiled shader program stored in the cache 400 have.

도 6은 일 실시예에 따른 그래픽스 명령 처리 장치가 셰이더 프로그램을 검색 및 출력하는 예시를 나타내는 도면이다.6 is a diagram illustrating an example in which a graphics instruction processing apparatus according to an embodiment searches for and outputs a shader program.

도 6을 참조하면, 일 실시예에 따른 그래픽스 명령 처리 장치는 셰이더 프로그램 매니저(100)에 의해 구현될 수 있다. 그러나 이에 제한되지 않는다.Referring to FIG. 6, the graphics instruction processing apparatus according to an embodiment may be implemented by the shader program manager 100. However, it is not limited thereto.

워크 프로세서(122)에서 생성된 셰이더 프로그램(1000a)과 동일한 컴파일 된 셰이더 프로그램을 검색한 경우, 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 그래픽스 드라이버(200)로 출력할 수 있다. 또는, 그래픽스 명령 처리 장치가 그래픽스 드라이버(200)에 의해 구현되는 경우, 그래픽스 드라이버(200)는 검색된 셰이더 프로그램을 그래픽스 프로세서(300)로 출력할 수 있다. 검색된 셰이더 프로그램은 바이너리로 출력될 수 있다.The shader program manager 100 can output the searched shader program to the graphics driver 200 when searching for a compiled shader program that is the same as the shader program 1000a generated by the work processor 122. [ Alternatively, when the graphics instruction processing device is implemented by the graphics driver 200, the graphics driver 200 may output the searched shader program to the graphics processor 300. [ The retrieved shader program can be output as binary.

워크 프로세서(122)가 생성된 셰이더 프로그램(1000a)과 동일한 컴파일 된 셰이더 프로그램을 검색하지 못한 경우, 셰이더 프로그램 매니저(100)는 생성된 셰이더 프로그램(1000a)을 컴파일러(500)로 출력할 수 있고, 생성된 셰이더 프로그램(1000a)은 컴파일러(500)에서 컴파일될 수 있다. 또는, 그래픽스 명령 처리 장치가 그래픽스 드라이버(200)에 의해 구현되는 경우, 그래픽스 드라이버(200)는 생성된 셰이더 프로그램(1000a)을 컴파일러(500)로 출력할 수 있고, 생성된 셰이더 프로그램(1000a)은 컴파일러(500)에서 컴파일될 수 있다. 컴파일된 셰이더 프로그램(1000b)은 워크 프로세서(122)가 새롭게 생성된 셰이더 프로그램(1000a)과 동일한 셰이더 프로그램이 있는지 검색할 때 이용될 수 있다. 워크 프로세서(122)가 생성된 셰이더 프로그램(1000a)과 동일한 컴파일 된 셰이더 프로그램을 검색하지 못한 경우, 컴파일된 셰이더 프로그램(1000b)은 캐시(400)에 저장될 수 있다. 컴파일된 셰이더 프로그램(1000b)은 캐시(400)에 바이너리로 저장될 수 있다.The shader program manager 100 can output the generated shader program 1000a to the compiler 500 when the work processor 122 can not retrieve the same compiled shader program as the generated shader program 1000a, The generated shader program 1000a can be compiled in the compiler 500. [ Alternatively, when the graphics instruction processing apparatus is implemented by the graphics driver 200, the graphics driver 200 can output the generated shader program 1000a to the compiler 500, and the generated shader program 1000a Can be compiled in the compiler 500. The compiled shader program 1000b can be used when the work processor 122 searches for the same shader program as the newly generated shader program 1000a. If the work processor 122 fails to retrieve the same compiled shader program as the generated shader program 1000a, the compiled shader program 1000b may be stored in the cache 400. [ The compiled shader program 1000b may be stored in the cache 400 as a binary.

워크 프로세서(122)가 생성된 셰이더 프로그램(1000a)과 동일한 컴파일 된 셰이더 프로그램을 검색하는 경우, 키를 이용하여 셰이더 프로그램을 검색할 수 있다. When the work processor 122 searches for a compiled shader program that is the same as the generated shader program 1000a, the shader program can be searched using the key.

워크 프로세서(122)가 생성된 셰이더 프로그램(1000a)의 키와 동일한 키를 갖는 컴파일된 셰이더 프로그램을 검색하지 못한 경우, 생성된 셰이더 프로그램(1000a)의 키가 캐시(400)에 저장될 수 있다. 생성된 셰이더 프로그램(1000a)이 컴파일 된 후 컴파일된 셰이더 프로그램(1000b)은 캐시(400)에 바이너리로 저장될 수 있다. 바이너리가 캐시(400)에 저장된 후, 캐시(400)에 저장되어 있던 셰이더 프로그램(1000a)의 키가 바이너리와 연결될 수 있다.If the work processor 122 fails to retrieve a compiled shader program having the same key as the generated shader program 1000a, the key of the generated shader program 1000a may be stored in the cache 400. [ After the generated shader program 1000a is compiled, the compiled shader program 1000b can be stored in the cache 400 as a binary. After the binary is stored in the cache 400, the key of the shader program 1000a stored in the cache 400 may be concatenated with the binary.

도 7은 일 실시 예에 따른 그래픽스 명령 처리 장치에서 데이터가 처리되는 과정의 예시를 구체적으로 나타내는 도면이다. 그러나 이제 제한되지 않는다.7 is a diagram specifically illustrating an example of a process of processing data in the graphics instruction processing apparatus according to an embodiment. However, it is not limited anymore.

도 8은 일 실시 예에 따른 그래픽스 명령을 처리하는 방법의 자세한 흐름도이다.8 is a detailed flowchart of a method of processing a graphics command according to an embodiment.

도 8의 아래 단계들은 메인 프로세서, GPU, 셰이더 프로그램 매니저, 그래픽스 드라이버 등에 의해 구현될 수 있다. 그러나 이에 제한되지 않는다.8 may be implemented by a main processor, a GPU, a shader program manager, a graphics driver, or the like. However, it is not limited thereto.

이하 셰이더 프로그램 매니저(100)에 의해 각 단계들이 실행되는 경우로 설명하기로 한다.Hereinafter, the case where each step is executed by the shader program manager 100 will be described.

셰이더 프로그램 매니저(100)는 그래픽스 명령이 수신되었는지 판단할 수 있다. 그래픽스 명령이 수신되었다고 판단되면, 셰이더 프로그램 매니저(100)는 이하의 동작을 시작할 수 있다. 단계 810에서 셰이더 프로그램 매니저(100)는 수신한 그래픽스 명령이 셰이더 프로그램 관련 API 인지 판단할 수 있다. The shader program manager 100 can determine whether a graphics command has been received. If it is determined that a graphics command has been received, the shader program manager 100 can start the following operations. In step 810, the shader program manager 100 may determine whether the received graphics command is a shader program related API.

단계 810에서 판단 결과, 셰이더 프로그램 관련 API가 아닌 API가 수신되었다고 판단되면, 셰이더 프로그램 관련 API가 아닌 API는 셰이더 프로그램 매니저(100)에서 처리되지 않고 직접 그래픽스 드라이버(200)로 출력될 수 있다. 그래픽스 드라이버(200)로 출력된 셰이더 프로그램 관련 API가 아닌 API에 대해 기존 그래픽스 드라이버(200) 연산이 수행될 수 있다.If it is determined in step 810 that an API other than the shader program-related API has been received, the API other than the shader program-related API may be output directly to the graphics driver 200 without being processed in the shader program manager 100. An existing graphics driver 200 operation may be performed on an API other than the shader program related API output to the graphics driver 200. [

또는, 단계 810에서 판단 결과, 셰이더 프로그램 관련 API가 수신되었다고 판단되면 단계 820을 진행할 수 있다.Alternatively, if it is determined in step 810 that the shader program related API has been received, the process proceeds to step 820.

단계 820에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 프로그램 생성 또는 삭제 API를 수신하였다고 판단되면, 단계 821에서 셰이더 프로그램 매니저(100)는 셰이더 및 셰이더 프로그램 관련 메모리에 공간을 할당 또는 삭제할 수 있다. 단계 821에서 셰이더 프로그램 매니저(100)는 셰이더 메모리(110) 및 워크 메모리(121)에 공간을 할당 또는 삭제할 수 있다. If it is determined in step 820 that the shader program manager 100 has received the shader program creation or deletion API, the shader program manager 100 may allocate or delete space in the shader and shader program related memory in step 821 . In step 821, the shader program manager 100 may allocate or delete space to the shader memory 110 and the work memory 121. [

또는, 단계 820에서 판단 결과, 셰이더 프로그램 생성 또는 셰이더 프로그램 삭제 API를 수신하지 않았다고 판단되면, 단계 830을 진행할 수 있다.Alternatively, if it is determined in step 820 that the shader program creation or shader program deletion API has not been received, step 830 may be performed.

단계 830에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 소스 API를 수신하였다고 판단되면, 단계 831에서 셰이더 프로그램 매니저(100)는 셰이더 소스 API를 포함하는 셰이더를 저장할 수 있다. 셰이더는 셰이더 메모리(110)에 저장될 수 있다. 셰이더의 소스 코드가 셰이더 메모리(110)에 저장될 수 있다. 셰이더의 소스 코드는 셰이더 메모리(110)의 TEXT_소스 공간에 저장될 수 있다. 버텍스 셰이더 및 픽셀 셰이더 각각의 소스 코드는 셰이더 메모리(110)의 TEXT_소스 공간에 독립적으로 저장될 수 있다. 그러나 이에 제한되지 않는다.If it is determined in step 830 that the shader program manager 100 has received the shader source API, the shader program manager 100 may store the shader including the shader source API in step 831. The shader may be stored in the shader memory 110. The source code of the shader may be stored in the shader memory 110. The source code of the shader may be stored in the TEXT_ source space of the shader memory 110. The source code of each of the vertex shader and pixel shader may be stored independently in the TEXT_source space of the shader memory 110. [ However, it is not limited thereto.

또는 단계 830에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 소스 API를 수신하지 않았다고 판단되면, 단계 840을 진행할 수 있다.Or if it is determined in step 830 that the shader program manager 100 has not received the shader source API, step 840 may be performed.

단계 840에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 컴파일 API를 수신하였다고 판단되면, 단계 841에서 셰이더 프로그램 매니저(100)는 셰이더를 저장할 수 있다. 셰이더는 셰이더 메모리(110)에 저장될 수 있다. 셰이더의 소스 코드(또는 컴파일 코드)가 셰이더 메모리(110)에 저장될 수 있다. 셰이더의 소스 코드(또는 컴파일 코드)는 셰이더 메모리(110)의 TEXT_컴파일 공간에 저장될 수 있다. 셰이더의 소스 코드가 저장되는 경우, TEXT_소스 공간에 저장되어 있는 소스 코드가 복사되어, 복사된 소스 코드는 셰이더 메모리(110)의 TEXT_컴파일 공간에 저장될 수 있다. 버텍스 셰이더 및 픽셀 셰이더 각각의 소스 코드는 셰이더 메모리(110)의 TEXT_컴파일 공간에 독립적으로 저장될 수 있다.If it is determined in step 840 that the shader program manager 100 has received the shader compilation API, the shader program manager 100 may store the shader in step 841. The shader may be stored in the shader memory 110. The shader source code (or compiled code) may be stored in the shader memory 110. The shader source code (or compiled code) may be stored in the TEXT_ compilation space of the shader memory 110. When the source code of the shader is stored, the source code stored in the TEXT_ source space is copied, and the copied source code can be stored in the TEXT_ compilation space of the shader memory 110. The source code of each of the vertex shader and the pixel shader may be stored independently in the TEXT_ compilation space of the shader memory 110.

또한, 단계 841에서 셰이더 메모리(110)내의 TEXT_소스 공간에 소스 코드가 저장되어있거나 또는 TEXT_컴파일 공간에 소스 코드(또는 컴파일 코드)가 저장되어있는 경우, TEXT_소스 공간 또는 TEXT_컴파일 공간에는 셰이더 프로그램 매니저(100)가 나중에 수신한 셰이더의 소스 코드(또는 컴파일 코드)가 저장될 수 있다.If the source code is stored in the TEXT_source space in the shader memory 110 in step 841, or if the source code (or compiled code) is stored in the TEXT_compile space, the TEXT_source space or the TEXT_compile space The source code (or the compiled code) of the shader received later by the shader program manager 100 may be stored.

또는 단계 840에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 컴파일 API를 수신하지 않았다고 판단되면, 단계 850을 진행할 수 있다.Or if it is determined in step 840 that the shader program manager 100 has not received the shader compilation API, the process proceeds to step 850.

단계 850에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 attach/detach API를 수신하였다고 판단되면, 단계 851에서 셰이더 프로그램 매니저(100)는 셰이더 메모리(110)에 저장된 셰이더를 워크 매니저(120)로 연결(또는 저장)할 수 있다. 셰이더가 워크 매니저(120)로 연결(또는 저장)된 경우, TEXT_컴파일 공간에 저장된 소스 코드(또는 컴파일 코드)를 워크 매니저(120)로 연결(또는 저장)할 수 있다. 셰이더가 워크 매니저(120)에 저장되는 경우, 셰이더 프로그램 매니저(100)는 소스 코드(또는 컴파일 코드)를 워크 메모리(121)에 저장할 수 있다. 소스 코드(또는 컴파일 코드)의 텍스트 및 텍스트의 길이가 워크 메모리(121)에 저장될 수 있다. 또는 단계 850에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 attach/detach API를 수신하지 않았다고 판단되면, 단계 860을 진행할 수 있다. If it is determined in step 850 that the shader program manager 100 has received the shader attach / detach API, the shader program manager 100 sends the shader stored in the shader memory 110 to the work manager 120 in step 851 Connection (or storage). When the shader is connected (or stored) to the work manager 120, the source code (or compiled code) stored in the TEXT_compile space can be connected (or stored) to the work manager 120. When the shader is stored in the work manager 120, the shader program manager 100 may store the source code (or compiled code) in the work memory 121. [ The length of the text and the text of the source code (or compiled code) may be stored in the work memory 121. Or if it is determined in step 850 that the shader program manager 100 has not received the shader attach / detach API, the process proceeds to step 860.

단계 860에서의 판단 결과, 셰이더 프로그램 매니저(100)가 유니폼 데이터 저장 API를 수신하였다고 판단되면, 단계 861에서 셰이더 프로그램 매니저(100)는 유니폼 데이터를 워크 매니저(120)로 연결(또는 저장)할 수 있다. 셰이더가 워크 매니저(120)에 저장되는 경우, 셰이더 프로그램 매니저(100)는 유니폼 데이터를 워크 메모리(121)에 저장할 수 있다. 유니폼 데이터의 텍스트 및 텍스트의 길이가 워크 메모리(121)에 저장될 수 있다. 그러나 이에 제한되지 않는다.If it is determined in step 860 that the shader program manager 100 has received the uniform data storage API, the shader program manager 100 may connect (or store) the uniform data to the work manager 120 in step 861 have. When the shader is stored in the work manager 120, the shader program manager 100 may store the uniform data in the work memory 121. [ The length of the text and the text of the uniform data can be stored in the work memory 121. [ However, it is not limited thereto.

또는 단계 860에서의 판단 결과, 셰이더 프로그램 매니저(100)가 유니폼 데이터 저장 API를 수신하지 않았다고 판단되면, 단계 870을 진행할 수 있다.Or if it is determined in step 860 that the shader program manager 100 has not received the uniform data storage API, the process proceeds to step 870.

단계 870에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 프로그램 링크 API를 수신하였다고 판단되면, 단계 871에서 셰이더 프로그램 매니저(100)는 워크 매니저(120)에 연결(또는 저장)된 정보를 이용하여 키를 생성할 수 있다. 키가 생성된 경우, 셰이더 프로그램 매니저(100)는 워크 매니저(120)에 연결(또는 저장)된 적어도 하나의 셰이더 소스 코드의 텍스트 및 텍스트의 길이, 유니폼 데이터의 텍스트 및 텍스트의 길이, 컴파일러 버전, 및 GPU 버전 정보를 이용하여 키를 생성할 수 있다. If it is determined in step 870 that the shader program manager 100 has received the shader program link API, the shader program manager 100 uses the information connected (or stored) to the work manager 120 in step 871 Key can be generated. The shader program manager 100 determines the length of the text and text of the at least one shader source code connected to (or stored in) the work manager 120, the length of the text and text of the uniform data, And the GPU version information.

또는 단계 870에서의 판단 결과, 셰이더 프로그램 매니저(100)가 셰이더 프로그램 링크 API를 수신하지 않았다고 판단되면, 수신된 API에 대해 그래픽스 명령에 대해 기존 그래픽스 드라이버(200) 연산이 수행될 수 있다.Alternatively, if it is determined in step 870 that the shader program manager 100 has not received the shader program link API, the existing graphics driver 200 operation may be performed on the received graphics API on the received API.

단계 872에서의 판단 결과, 단계 871에서 생성된 키와 동일한 키를 갖는 셰이더 프로그램이 검색되었다고 판단되면, 단계 873에서 셰이더 프로그램 매니저(100)는 검색된 셰이더 프로그램을 출력할 수 있다. 출력된 셰이더 프로그램에 대해 기존 그래픽스 드라이버(200) 연산이 수행될 수 있다. 셰이더 프로그램의 키는 캐시에 저장될 수 있다. 검색된 셰이더 프로그램은 바이너리로 출력될 수 있다. If it is determined in step 872 that a shader program having the same key as the key generated in step 871 is searched, the shader program manager 100 may output the searched shader program in step 873. The existing graphics driver 200 operation can be performed on the output shader program. The key of the shader program can be stored in the cache. The retrieved shader program can be output as binary.

또는 단계 872에서의 판단 결과, 단계 871에서 생성된 키와 동일한 키를 갖는 셰이더 프로그램이 검색되지 않았다고 판단되면, 단계 874에서 셰이더 프로그램 매니저(100)는 워크 매니저(120)에 연결(또는 저장)된 정보를 이용하여 셰이더 프로그램 컴파일에 필요한 정보를 생성하고 그래픽스 드라이버(200)에 컴파일 요청을 할 수 있다. Or if it is determined in step 872 that the shader program having the same key as the key generated in step 871 has not been found, the shader program manager 100 determines whether the shader program has been connected (or stored) to the work manager 120 Information necessary for compiling the shader program can be generated and the compile request can be made to the graphics driver 200. [

도 9는 일 실시 예에 따른 그래픽스 드라이버가 셰이더 프로그램 관련 API를 처리하는 방법의 흐름도이다. 도 10은 일 실시 예에 따른 셰이더 프로그램 매니저가 셰이더 프로그램 관련 API를 처리하는 방법의 흐름도이다.9 is a flowchart of a method of processing a shader program related API by a graphics driver according to an exemplary embodiment. 10 is a flowchart of a method of processing a shader program related API by a shader program manager according to an exemplary embodiment.

이하 도 9와 비교하여 도 10을 설명하기로 한다.Hereinafter, Fig. 10 will be described in comparison with Fig.

도 10을 참조하면, 셰이더 프로그램 매니저(100)가 적어도 하나의 버텍스 셰이더 및 적어도 하나의 픽셀 셰이더를 수신한 경우, 셰이더를 수신한 순서대로 버텍스 셰이더 및 픽셀 셰이더가 셰이더 프로그램 매니저(100)에 의해 처리될 수 있다.10, when the shader program manager 100 receives at least one vertex shader and at least one pixel shader, the vertex shader and the pixel shader are processed by the shader program manager 100 in the order of receiving the shader .

도 9에서 셰이더가 수신될 때마다 그래픽스 드라이버(200)에서 셰이더에 포함된 모든 API를 처리하는 것과 달리, 도 10에서는 셰이더 프로그램 매니저(100)가 셰이더 생성 API 및 소스 코드 저장 API만을 처리할 수 있다. 셰이더에 포함된 그 외의 API에 대해선 처리를 보류할 수 있다. 셰이더 프로그램 매니저(100)는 셰이더 프로그램 링크 API 수신 전까지 셰이더 생성 API 및 소스 코드 저장 API만을 처리하고 그 외의 API에 대해선 처리를 보류할 수 있다. 그러나 이에 제한되지 않는다.In FIG. 9, the shader program manager 100 can process only the shader creation API and the source code storage API in FIG. 10, except that the graphics driver 200 processes all the APIs included in the shader every time a shader is received . You can suspend processing for other APIs contained in the shader. The shader program manager 100 may process only the shader creation API and the source code storage API until the shader program link API is received and suspend processing for the other APIs. However, it is not limited thereto.

도 10에서는 셰이더 프로그램 매니저(100)가 셰이더 프로그램 링크 API를 수신한 경우, 가장 나중에 수신한 버텍스 셰이더 및 픽셀 셰이더 각각에 포함된 API를 처리할 수 있다. 버텍스 셰이더 및 픽셀 셰이더는 소스 API 및 컴파일 API를 포함할 수 있다. 버텍스 셰이더 및 픽셀 셰이더에 소스 API 및 컴파일 API가 포함된 경우, 셰이더 프로그램 매니저(100)는 컴파일 API를 제외한 API를 처리할 수 있다. 컴파일 API를 제외한 API가 처리된 후, 컴파일 API는 그래픽스 드라이버(200)에서 처리될 수 있다.In FIG. 10, when the shader program manager 100 receives the shader program link API, it can process the API included in each of the vertex shader and pixel shader received last. Vertex shaders and pixel shaders may include a source API and a compilation API. When the vertex shader and the pixel shader include the source API and the compile API, the shader program manager 100 can process the API except the compilation API. After the API other than the compiling API is processed, the compiling API can be processed in the graphics driver 200. [

도 10을 참조하면, 그래픽스 드라이버(200)가 컴파일 API 명령을 처리하면 컴파일러(500)에서 버텍스 셰이더 및 픽셀 셰이더가 컴파일 될 수 있다. 컴파일러(500)에서 컴파일 되는 버텍스 셰이더 및 픽셀 셰이더 각각은 셰이더 프로그램 매니저(100)가 가장 나중에 수신한 버텍스 셰이더 및 픽셀 셰이더일 수 있다. 버텍스 셰이더 및 픽셀 셰이더가 컴파일된 경우, 그래픽스 드라이버(200)는 컴파일 된 버텍스 셰이더 및 픽셀 셰이더를 포함하는 셰이더 프로그램(1000b)을 생성할 수 있다. 생성된 셰이더 프로그램(1000b)에 대해 기존 그래픽스 드라이버(200) 연산이 수행될 수 있다.Referring to FIG. 10, when the graphics driver 200 processes the compile API command, the vertex shader and the pixel shader may be compiled in the compiler 500. Each of the vertex shader and pixel shader compiled in the compiler 500 may be a vertex shader and a pixel shader that are most recently received by the shader program manager 100. When the vertex shader and the pixel shader are compiled, the graphics driver 200 can generate the shader program 1000b including the compiled vertex shader and the pixel shader. The existing graphics driver 200 operation can be performed on the generated shader program 1000b.

일부 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다. Some embodiments may also be implemented 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 includes any information delivery media, including computer readable instructions, data structures, program modules, or other data in 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 present invention is for illustrative purposes only and that those of ordinary skill in the art can readily understand that various changes and modifications may be made without departing from the spirit or essential characteristics of the present invention. will be. 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 detailed description and all changes or modifications derived from the meaning and scope of the claims and their equivalents are to be construed as being included within the scope of the present invention do.

Claims (15)

그래픽스 명령을 처리하는 방법에 있어서,
어플리케이션(application)을 실행하는 장치로부터 상기 그래픽스 명령을 수신하는 단계;
상기 그래픽스 명령에 포함된, 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더(shader)를 선택하는 단계;
상기 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램(shader program)을 생성하는 단계;
이전에 컴파일(compile) 된 적어도 하나의 셰이더 프로그램 중에서 상기 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색하는 단계; 및
상기 검색된 셰이더 프로그램을 출력하는 단계;
를 포함하는, 방법.
A method for processing a graphics command,
Receiving the graphics command from an apparatus executing an application;
Selecting at least one shader included in the graphics instruction to be processed in the graphics processor;
Generating a shader program using at least one selected shader;
Searching for a shader program identical to the generated shader program among at least one previously compiled shader program; And
Outputting the retrieved shader program;
/ RTI >
제 1항에 있어서,
상기 선택하는 단계는, 소스 명령 및 컴파일 명령 포함하는 버텍스 셰이더(vertex shader) 및 픽셀 셰이더(pixel shader)를 선택하는 것인, 방법.
The method according to claim 1,
Wherein the selecting step selects a vertex shader and a pixel shader that include a source instruction and a compile instruction.
제 1항에 있어서,
상기 선택하는 단계는, 소스 코드 및 컴파일 코드를 포함하고, 가장 나중에 수신하는 버텍스 셰이더 및 픽셀 셰이더를 선택하는 것인, 방법.
The method according to claim 1,
Wherein the selecting includes selecting a vertex shader and a pixel shader that include the source code and the compiled code, and which are received most recently.
제 3항에 있어서,
상기 셰이더 프로그램 생성하는 단계는, 상기 버텍스 셰이더, 상기 픽셀 셰이더, 및 유니폼 데이터를 이용하여 셰이더 프로그램을 생성하는 것인, 방법.
The method of claim 3,
Wherein the generating the shader program comprises generating the shader program using the vertex shader, the pixel shader, and the uniform data.
제 1항에 있어서,
상기 검색하는 단계는, 상기 적어도 하나의 셰이더의 텍스트 및 텍스트 길이, 상기 유니폼 데이터(uniform data)의 텍스트 및 텍스트 길이, 컴파일러(compiler) 버전, 및 GPU 버전 정보를 포함하는 키를 생성하는 단계; 및
상기 생성된 키를 이용하여 검색하는 단계;
를 포함하는, 방법.
The method according to claim 1,
Wherein the searching comprises: generating a key including text and text length of the at least one shader, text and text length of uniform data, compiler version, and GPU version information; And
Searching by using the generated key;
/ RTI >
제 1항에 있어서,
상기 출력하는 단계는, 상기 검색된 셰이더 프로그램의 바이너리(binary)를 출력하는 것인, 방법.
The method according to claim 1,
Wherein the outputting step outputs a binary of the searched shader program.
그래픽스 명령 처리 장치에 있어서,
어플리케이션을 실행하는 장치로부터 그래픽스 명령을 수신하고, 상기 그래픽스 명령에 포함된 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택하며, 상기 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램을 생성하여, 이전에 컴파일된 적어도 하나의 셰이더 프로그램 중에서 상기 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색하고, 상기 검색된 셰이더 프로그램을 출력하는 프로세서; 및
이전에 컴파일된 셰이더 프로그램들을 저장하는 캐시;
를 포함하는, 장치.
A graphics instruction processing apparatus comprising:
A graphics processor for receiving graphics commands from an apparatus executing an application, selecting at least one shader to be processed in a graphics processor included in the graphics command, generating a shader program using the selected at least one shader, A processor for searching for a shader program identical to the generated shader program among at least one shader program and outputting the retrieved shader program; And
A cache storing previously compiled shader programs;
.
제 7항에 있어서,
상기 프로세서는, 컴파일 코드를 포함하는 버텍스 셰이더 및 픽셀 셰이더를 선택하는 것인, 장치.
8. The method of claim 7,
Wherein the processor is to select a vertex shader and a pixel shader that include compiled code.
제 7항에 있어서,
상기 프로세서는, 명령 및 컴파일 명령을 포함하고, 가장 나중에 수신하는 버텍스 셰이더 및 픽셀 셰이더를 선택하는 것인, 장치.
8. The method of claim 7,
Wherein the processor comprises a command and a compile instruction, and selects a vertex shader and a pixel shader that are to be received most recently.
제 9항에 있어서,
상기 프로세서는, 상기 버텍스 셰이더, 상기 픽셀 셰이더, 및 유니폼 데이터를 이용하여 셰이더 프로그램을 생성하는 것인, 장치.
10. The method of claim 9,
Wherein the processor is to generate a shader program using the vertex shader, the pixel shader, and the uniform data.
제 7항에 있어서,
상기 프로세서는, 상기 적어도 하나의 셰이더의 텍스트 및 텍스트 길이, 상기 유니폼 데이터의 텍스트 및 텍스트 길이, 컴파일러 버전, 및 GPU 버전 정보를 포함하는 데이터를 이용하여 키를 생성하고, 상기 생성된 키를 이용하여 검색하는 것인, 장치.
8. The method of claim 7,
The processor generates a key using data including text and text length of the at least one shader, text and text length of the uniform data, compiler version, and GPU version information, and using the generated key Device.
제 7항에 있어서,
상기 캐시는, 컴파일된 셰이더 프로그램들에 대응하는 키와 바이너리를 포함하는 정보를 저장하는 것인, 장치.
8. The method of claim 7,
Wherein the cache stores information comprising keys and binaries corresponding to compiled shader programs.
제 7항에 있어서,
상기 프로세서는, 컴파일 코드를 포함하는 셰이더를 수신하여도 컴파일을 수행하지 않는 것인, 장치.
8. The method of claim 7,
Wherein the processor does not perform compilation even upon receipt of a shader that includes compiled code.
어플리케이션을 실행하는 장치로부터 그래픽스 명령을 수신하고, 상기 그래픽스 명령에 포함된 그래픽스 프로세서에서 처리될 적어도 하나의 셰이더를 선택하며, 상기 선택된 적어도 하나의 셰이더를 이용하여 셰이더 프로그램을 생성하여, 이전에 컴파일된 셰이더 프로그램들 중에서 상기 생성된 셰이더 프로그램과 동일한 셰이더 프로그램을 검색하고, 상기 검색된 셰이더 프로그램을 출력하는 그래픽스 드라이버; 및
이전에 컴파일된 셰이더 프로그램들을 저장하는 캐시;
를 포함하는, GPU.
A graphics processor for receiving graphics commands from an apparatus executing an application, selecting at least one shader to be processed in a graphics processor included in the graphics command, generating a shader program using the selected at least one shader, A graphics driver for searching for a same shader program as the generated shader program among the shader programs and outputting the retrieved shader program; And
A cache storing previously compiled shader programs;
Gt; GPU. ≪ / RTI >
제 1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적(non-transitory) 기록매체.A computer readable non-transitory recording medium having recorded thereon a program for causing a computer to execute the method of claim 1.
KR1020160025039A 2015-11-11 2016-03-02 Method and apparatus for processing graphics command KR102254119B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/198,155 US10002401B2 (en) 2015-11-11 2016-06-30 Method and apparatus for efficient processing of graphics commands

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562253891P 2015-11-11 2015-11-11
US62/253,891 2015-11-11

Publications (2)

Publication Number Publication Date
KR20170055392A true KR20170055392A (en) 2017-05-19
KR102254119B1 KR102254119B1 (en) 2021-05-20

Family

ID=59049525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160025039A KR102254119B1 (en) 2015-11-11 2016-03-02 Method and apparatus for processing graphics command

Country Status (1)

Country Link
KR (1) KR102254119B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110609688A (en) * 2019-09-19 2019-12-24 网易(杭州)网络有限公司 Processing method and processing device of shader, storage medium and processor

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7750913B1 (en) * 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US20130293544A1 (en) * 2012-05-03 2013-11-07 Richard W. Schreyer Tiled Forward Shading with Improved Depth Filtering
US20140043333A1 (en) * 2012-01-11 2014-02-13 Nvidia Corporation Application load times by caching shader binaries in a persistent storage
US20150379680A1 (en) * 2014-06-26 2015-12-31 Qualcomm Incorporated Load scheme for shared register in gpu
US20160055667A1 (en) * 2014-08-22 2016-02-25 Qualcomm Incorporated Shader program execution techniques for use in graphics processing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US7750913B1 (en) * 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
US20140043333A1 (en) * 2012-01-11 2014-02-13 Nvidia Corporation Application load times by caching shader binaries in a persistent storage
US20130293544A1 (en) * 2012-05-03 2013-11-07 Richard W. Schreyer Tiled Forward Shading with Improved Depth Filtering
US20150379680A1 (en) * 2014-06-26 2015-12-31 Qualcomm Incorporated Load scheme for shared register in gpu
US20160055667A1 (en) * 2014-08-22 2016-02-25 Qualcomm Incorporated Shader program execution techniques for use in graphics processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110609688A (en) * 2019-09-19 2019-12-24 网易(杭州)网络有限公司 Processing method and processing device of shader, storage medium and processor

Also Published As

Publication number Publication date
KR102254119B1 (en) 2021-05-20

Similar Documents

Publication Publication Date Title
US10324694B2 (en) Arranging binary code based on call graph partitioning
KR102010508B1 (en) System and method for updating source code files
KR102059705B1 (en) Adaptive portable libraries
US8522225B2 (en) Rewriting branch instructions using branch stubs
CN107797820B (en) Method and device for generating patch
JP6506412B2 (en) Application loading method and apparatus
US20150019825A1 (en) Sharing virtual memory-based multi-version data between the heterogeneous processors of a computer platform
US8584110B2 (en) Execution trace truncation
US20150113512A1 (en) Speculative object representation
US9311079B2 (en) Parallel development of a software system
US10002401B2 (en) Method and apparatus for efficient processing of graphics commands
US11029924B2 (en) Program optimization by converting code portions to directly reference internal data representations
JP2015094960A (en) Information processing device, compilation method, and compiler program
CN108694049B (en) Method and equipment for updating software
US11003443B1 (en) Methods and systems for providing a source code extractions mechanism
KR102141749B1 (en) APP program execution method and device
US20130152049A1 (en) Warning of register and storage area assignment errors
KR102254119B1 (en) Method and apparatus for processing graphics command
US20140196018A1 (en) Compiler optimization based on collectivity analysis
US20170228243A1 (en) Non-transitory computer-readable recording medium storing control program, control device and control method
JP2019523480A (en) Preemptive decompression scheduling for NAND storage devices
US9612808B1 (en) Memory use for string object creation
US11775471B2 (en) System and method for caching converted files and compiling computer code from the cache
US8561027B2 (en) Reflection capability in static programming languages
US20140351799A1 (en) Binary interface instrumentation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant