KR20150052585A - 커맨드들을 관리하는 장치 및 방법 - Google Patents

커맨드들을 관리하는 장치 및 방법

Info

Publication number
KR20150052585A
KR20150052585A KR1020130134199A KR20130134199A KR20150052585A KR 20150052585 A KR20150052585 A KR 20150052585A KR 1020130134199 A KR1020130134199 A KR 1020130134199A KR 20130134199 A KR20130134199 A KR 20130134199A KR 20150052585 A KR20150052585 A KR 20150052585A
Authority
KR
South Korea
Prior art keywords
command
fbo
changing
gpu
commands
Prior art date
Application number
KR1020130134199A
Other languages
English (en)
Other versions
KR102147357B1 (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 KR1020130134199A priority Critical patent/KR102147357B1/ko
Priority to US15/035,170 priority patent/US9984491B2/en
Priority to PCT/KR2014/010505 priority patent/WO2015069001A1/en
Publication of KR20150052585A publication Critical patent/KR20150052585A/ko
Application granted granted Critical
Publication of KR102147357B1 publication Critical patent/KR102147357B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

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

Abstract

일 실시 예에 따른 커맨드 관리 방법은 FBO를 변경하는 커맨드를 수신하는 단계; 상기 FBO를 변경하는 커맨드가 지정하는 FBO(Frame Buffer Object)와 GPU가 처리 중인 FBO가 동일한지 비교하는 단계; 및 상기 비교 결과에 따라, 상기 FBO를 변경하는 커맨드 또는 플러쉬 커맨드(Flush command)를 관리하는 단계를 포함한다.

Description

커맨드들을 관리하는 장치 및 방법{Apparatus and Method for managing commands}
3차원 영상을 렌더링하는 장치 및 방법에 관한 것이다.
3D 그래픽스 API(Application Program Interface) 표준들로는 OpenGL, OpenGL ES 또는 Direct 3 등이 있다. API 표준들은 각 프레임에 대한 렌더링(rendering)을 수행하고, 영상을 표시하는 방법을 포함한다. 각 프레임에 대한 렌더링을 수행할 때, 많은 연산이 수행되며, 많은 전력이 소모된다. 따라서, 렌더링을 수행할 때, 연산량을 줄이고, 메모리에 접속(access)하는 횟수를 줄일 필요가 있다.
어플리케이션으로부터 수신되는 커맨드들을 효율적으로 처리하기 위한 방법 및 장치를 제공하는 데 있다.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따른 커맨드 관리 방법은 FBO를 변경하는 커맨드를 수신하는 단계; 상기 FBO를 변경하는 커맨드가 지정하는 FBO(Frame Buffer Object)와 GPU가 처리 중인 FBO가 동일한지 비교하는 단계; 및 상기 비교 결과에 따라, 상기 FBO를 변경하는 커맨드 또는 플러쉬 커맨드(Flush command)를 관리하는 단계를 포함한다.
일 실시 예에 따른 커맨드 관리 방법은 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들을 상호 비교하는 단계; 및 상기 비교 결과에 따라, 상기 커맨드 큐에 저장된 FBO를 변경하는 커맨드들의 처리 순서를 조정하는 단계를 포함한다.
일 실시 예에 따른 디바이스 드라이버(300)는 FBO를 변경하는 커맨드를 수신하는 수신부; 상기 FBO를 변경하는 커맨드가 지정하는 FBO(Frame Buffer Object)와 GPU가 처리 중인 FBO가 동일한지 비교하는 FBO 비교부; 및 상기 비교 결과에 따라, 상기 FBO를 변경하는 커맨드 또는 플러쉬 커맨드(Flush command)를 관리하는 커맨드 관리부를 포함한다.
일 실시 예에 따른 디바이스 드라이버(300)는 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들을 상호 비교하는 FBO 비교부; 및 상기 비교 결과에 따라, 상기 커맨드 큐에 저장된 FBO를 변경하는 커맨드들의 처리 순서를 조정하는 커맨드 관리부를 포함한다.
수신된 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU가 처리 중인 FBO가 동일한지 여부에 따라 커맨드들을 관리함으로써, GPU에서 처리 중인 FBO의 변화를 최소화할 수 있다.
커맨드 큐에 저장된 FBO를 변경하는 커맨드들의 처리 순서를 조정함으로써, GPU에서 처리 중인 FBO의 변화를 최소화할 수 있다.
도 1은 3차원 영상을 처리하는 과정을 설명하기 위한 도면이다.
도 2는 장치들의 연결관계를 설명하기 위한 도면이다.
도 3은 일 실시 예에 따른 디바이스 드라이버를 설명하기 위한 도면이다.
도 4는 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 흐름도이다.
도 5는 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 흐름도이다.
도 6은 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 흐름도이다.
도 7은 커맨드의 처리 순서를 변경하는 것을 설명하기 위한 도면이다.
도 8은 커맨드의 처리 순서를 변경하는 것을 설명하기 위한 도면이다.
도 9는 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 순서도이다.
도 10은 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 순서도이다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다.
도 1은 3차원 영상을 처리하는 과정을 설명하기 위한 도면이다. 도 1을 참조하면, 11 내지 17단계를 통해 3차원 영상을 처리하는 과정을 나타낸다.
11단계는 영상을 나타내는 정점(vertex)들을 생성하는 단계이다. 정점들은 영상에 포함된 오브젝트(object)들을 나타내기 위해 생성된다.
12단계는 생성된 정점들을 쉐이딩(shading)하는 단계이다. 정점 쉐이더(vertex shader)는 10단계에서 생성된 정점들의 색(color)를 지정하여, 정점들에 대한 쉐이딩을 수행할 수 있다.
13단계는 프리미티브들(primitives)을 생성하는 단계이다. 프리미티브는 점, 선 또는 정점들로부터 형성되는 다각형(polygon)을 나타낸다. 일 예로서, 프리미티브들은 정점들을 연결하여 형성된 삼각형들을 나타낼 수도 있다.
14단계는 프리미티브를 래스터화(rasterization)하는 단계이다. 프리미티브를 래스터화하는 것은 프리미티브를 복수의 프레그먼트들(fragments)로 분할하는 것을 나타낸다. 프레그먼트는 프리미티브를 구성하는 단위이며, 영상 처리를 수행하기 위한 기본 단위일 수 있다. 프리미티브는 정점에 대한 정보만을 포함한다. 따라서, 래스터화하는 단계에서 정점과 정점 사이의 프레그먼트들을 생성할 때 보간(interpolation)이 수행된다.
15단계는 픽셀을 쉐이딩하는 단계를 나타낸다. 도 1에서는 픽셀 단위로 쉐이딩이 수행되는 것을 도시하고 있으나, 프레그먼트 단위로 쉐이딩이 수행될 수도 있다. 예를 들어, 픽셀 또는 프레그먼트를 쉐이딩하는 것은 픽셀 또는 프레그먼트의 색을 지정하는 것이다.
16단계는 픽셀 또는 프레그먼트를 텍스쳐링(texturing)하는 단계는 나타낸다. 텍스쳐링은 픽셀 또는 프레그먼트의 색을 지정할 때, 미리 생성된 이미지를 이용하는 방법이다. 예를 들어, 쉐이딩은 프레그먼트에 어떤 색을 지정할지 계산을 통해서 수행하지만, 텍스쳐링은 미리 생성된 이미지와 대응되는 프레그먼트에 이미지의 색과 동일한 색을 지정하는 방법이다.
15 또는 16단계의 경우, 각각의 픽셀 또는 프레그먼트를 쉐이딩 또는 텍스쳐링하기 위하여 많은 연산이 요구된다. 따라서, 쉐이딩 또는 텍스쳐링하는 단계를 보다 효율적으로 수행하여 연산량을 줄일 필요가 있다. 쉐이딩 과정에서 연산량을 줄이는 대표적인 방법으로 Z-테스트(또는, 깊이 테스트) 및 은면 제거 방법(hidden surface removal)가 있다.
17단계는 테스트 및 블렌딩(testing and blending) 단계를 나타낸다.
18단계는 프레임 버퍼에 저장된 프레임을 표시하는 단계를 나타낸다. 11 내지 17단계를 통해 생성된 프레임은 프레임 버퍼에 저장된다. 프레임 버퍼에 저장된 프레임은 디스플레이 장치를 통해 표시된다.
도 2는 장치들의 연결관계를 설명하기 위한 도면이다.
어플리케이션(210)은 FBO를 변경하는 커맨드를 포함한 커맨드들을 디바이스 드라이버(220)로 전송한다. 예를 들어, FBO를 변경하는 커맨드는 바인드 커맨드일 수 있다. 어플리케이션(210)은 다양한 형태의 커맨드들을 디바이스 드라이버(220)로 전송할 수 있고, 디바이스 드라이버(220) 또는 GPU(230)로부터 결과를 수신할 수 있다.
디바이스 드라이버(220)는 어플리케이션(210)으로부터 수신된 커맨드들 GPU(230)로 출력한다.
디바이스 드라이버(220)는 커맨드들의 처리 순서를 조정할 수 있다. 디바이스 드라이버(220)는 어플리케이션(210)으로부터 수신된 커맨드들의 처리 순서를 조정하고, 처리 순서가 조정된 커맨드들을 GPU(230)로 전송한다.
디바이스 드라이버(220)는 GPU(230)에 새로운 커맨드를 전송할 수 있다. 디바이스 드라이버(220)는 GPU(230)에서 수행되지 않은 커맨드를 삭제하기 위한 커맨드를 GPU(230)로 전송할 수 있다. 예를 들어, 디바이스 드라이버(220)는 GPU(230)에서 수행되지 않은 플러쉬 커맨드를 삭제하는 커맨드를 GPU(230)로 전송할 수 있다.
GPU(230)는 그래픽 처리를 수행하는 렌더링 장치이다. GPU(230)는 도 1의 각 단계를 수행하는 장치일 수 있다. GPU(230)는 디바이스 드라이버(220)로부터 수신된 커맨드에 따라, 영상 처리를 수행하고, 생성된 이미지를 출력한다.
GPU(230)는 타일 버퍼를 포함한다. GPU(230)는 타일 단위로 렌더링할 수 있다. 타일 기반 렌더링 방법(tile-based rendering method)은 프레임을 복수의 타일들로 분할하고, 타일 단위로 렌더링하는 방법이다.
GPU(230)는 커맨드 큐를 포함한다. 커맨드 큐는 수신된 커맨드들을 저장하고, 수신된 커맨드들을 순차적으로 처리하기 위한 버퍼이다.
GPU(230)는 커맨드 큐를 관리할 수 있다. 예를 들어, GPU(230)는 FBO 단위로 커맨드 큐를 관리할 수 있다. GPU(230)는 커맨드 큐에 저장된 커맨드들 사이에 새로운 커맨드를 삽입할 수 있다. GPU(230)는 커맨드 큐에 저장된 커맨드들 중 어느 하나의 커맨드를 삭제할 수 있다.
GPU(230)는 디바이스 드라이버(220)로부터 수신된 커맨드들을 처리한다. 예를 들어, GPU(230)는 드로우 커맨드를 수신하면 이미지를 생성한다. GPU(230)는 플러쉬 커맨드를 수신하면 타일 버퍼에 저장된 데이터를 프레임 버퍼(240)로 출력한다. GPU(230)는 플러쉬 커맨드를 삭제하는 커맨드를 수신하면 커맨드 큐에 저장된 플러쉬 커맨드를 삭제한다. GPU(230)는 디바이스 드라이버(220)로부터 현재 처리 중인 FBO가 무엇인지 묻는 커맨드를 수신하면 현재 처리 중인 FBO의 ID 또는 주소를 디바이스 드라이버(220)로 출력한다.
GPU(230)는 타일 버퍼에 저장된 정보들을 프레임 버퍼(240)로 전송한다. GPU(230)는 디바이스 드라이버(220)로부터 플러쉬 커맨드를 수신하면 타일 버퍼에 저장된 정보들을 프레임 버퍼(240)로 전송한다. 어플리케이션(210)이 FBO를 변경할 것을 지시하는 커맨드를 출력하면, 디바이스 드라이버(220)는 FBO의 변경과 함께 플러쉬 커맨드를 생성하여 GPU(230)로 출력한다. 타일 버퍼는 하나의 FBO만을 지원한다. 따라서, 디바이스 드라이버(220)는 FBO를 변경하는 커맨드가 수신되면, GPU(230)의 타일 버퍼에 저장된 정보를 기존의 FBO로 모두 전송하도록 플러쉬 커맨드를 생성한다.
프레임 버퍼(240)는 프레임에 대한 데이터를 저장한다. 프레임 버퍼(240)는 일종의 메모리이다. 프레임 버퍼(240)는 GPU(230)로부터 수신되는 데이터를 저장한다.
프레임 버퍼(240)는 복수의 FBO들을 포함한다. FBO들은 각각 ID를 갖거나 서로 다른 주소를 갖는다.
도 3은 일 실시 예에 따른 디바이스 드라이버를 설명하기 위한 도면이다. 도 3을 참조하면, 디바이스 드라이버(300)는 수신부(310), FBO 비교부(320) 및 커맨드 관리부(330)를 포함한다.
수신부(310)는 어플리케이션(210)으로부터 커맨드를 수신한다. 예를 들어, 수신부(310)는 드로우 커맨드 또는 FBO를 변경하는 커맨드 등을 수신한다. 예를 들어, FBO를 변경하는 커맨드는 바인드 커맨드일 수 있다. 드로우 커맨드는 오브젝트 또는 프리미티브에 대한 정보를 포함한다. 다시 말하면, 드로우 커맨드는 어떠한 오브젝트 또는 프리미티브에 대하여 렌더링을 수행할 것인지를 나타내는 정보를 포함한다. FBO를 변경하는 커맨드는 FBO를 지정한다. FBO를 변경하는 커맨드는 현재 FBO 대신에 새로운 FBO를 지정한다. 다시 말해서, FBO를 변경하는 커맨드는 프레임 버퍼(240)의 어느 FBO에 데이터를 저장할지를 지정하는 커맨드이다. 또한, 바인드 커맨드는 영상을 출력할 것을 지시하는 커맨드이다. GPU(230)는 바인드 커맨드를 수신하면 바인드 커맨드를 수신하기 이전까지 수행된 렌더링 결과를 출력한다.
FBO 비교부(320)는 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일한지 비교한다. FBO 비교부(320)는 FBO들의 ID 또는 주소를 비교하여 FBO들이 동일한지 여부를 판단할 수 있다.
FBO 비교부(320)는 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들을 상호 비교한다. 디바이스 드라이버(300)는 커맨드 큐를 포함하며, 커맨드 큐에는 커맨드들이 저장된다. FBO 비교부(320)는 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 동일한 FBO를 지정하는지를 판단한다.
FBO 비교부(320)는 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들 또는 GPU가 처리 중인 FBO를 상호 비교한다. FBO 비교부(320)는 GPU가 처리 중인 FBO와 동일한 FBO를 지정하는 FBO를 변경하는 커맨드가 있는지 판단한다. 또한, FBO 비교부(320)는 동일한 FBO를 지정하는 FBO를 변경하는 커맨드들이 있는지 판단한다.
커맨드 관리부(330)는 FBO 비교부(320)의 비교 결과에 따라, FBO를 변경하는 커맨드 또는 플러쉬 커맨드를 관리한다. 예를 들어, 커맨드 관리부(330)는 커맨드를 삭제하거나 커맨드를 생성할 수 있다. 또한, 커맨드 관리부(330)는 커맨드들의 순서를 재조정할 수 있다.
수신된 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일한 경우, 커맨드 관리부(330)는 수신된 FBO를 변경하는 커맨드에 대한 플러쉬 커맨드를 생성하지 않는다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하기 때문에 FBO를 변경할 필요가 없으므로, 커맨드 관리부(330)는 플러쉬 커맨드를 생성하지 않는다. 따라서, 커맨드 관리부(330)는 FBO를 변경하는 커맨드가 수신된 이후에 수신되는 드로우 커맨드들을 GPU(230)로 전송한다.
수신된 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일한 경우, 커맨드 관리부(330)는 수신된 FBO를 변경하는 커맨드를 삭제한다. 따라서, 커맨드 관리부(330)는 GPU(230)가 처리중인 FBO에 이후에 수신되는 드로우 커맨드들의 처리 결과가 저장될 수 있도록 한다.
수신된 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 상이한 경우, 커맨드 관리부(330)는 GPU(230)가 처리 중인 FBO에 적용된 드로우 커맨드가 있는지 판단한다. 다시 말해서, 커맨드 관리부(330)는 FBO가 지정된 이후에 처리된 드로우 커맨드가 있는지를 판단한다. 커맨드 관리부(330)는 판단 결과에 따라, FBO를 변경하는 커맨드 또는 플러쉬 커맨드를 관리한다. 예를 들어, 커맨드 관리부(330)는 FBO를 변경하는 커맨드에 대한 플러쉬 커맨드를 생성하지 않는다. 또는, 커맨드 관리부(330)는 GPU(230)에 전달된 플러쉬 커맨드를 제거하는 커맨드를 GPU(230)로 전송한다.
커맨드 관리부(330)는 비교 결과에 따라, 커맨드 큐에 저장된 FBO를 변경하는 커맨드들의 처리 순서를 조정한다. 다시 말해서, 커맨드 관리부(330)는 FBO의 변경을 최소화하기 위해 FBO를 변경하는 커맨드들의 처리 순서를 조정한다.
커맨드 관리부(330)는 비교 결과에 따라, 동일한 FBO를 지정하는 FBO를 변경하는 커맨드들을 그룹핑한다. 다시 말해서, 커맨드 관리부(330)는 동일한 FBO를 지정하는 FBO를 변경하는 커맨드들이 순차적으로 처리되도록 동일한 그룹으로 분류한다. 이때, 커맨드 관리부(330)는 FBO를 변경하는 커맨드에 적용되는 다른 커맨드들도 함께 그룹핑한다.
도 4는 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 흐름도이다. 도 4를 참조하면, 도 4는 FBO의 변경이 없는 경우 디바이스 드라이버(300)가 커맨드들을 처리하는 방법을 도시하고 있다.
단계 410에서, 디바이스 드라이버(300)는 어플리케이션으로부터 커맨드를 수신한다. 커맨드는 드로우 커맨드, FBO를 변경하는 커맨드 또는 바인드 커맨드 등을 포함한다.
단계 420에서, 디바이스 드라이버(300)는 수신된 커맨드가 FBO를 변경하는 커맨드인지 판단한다. 만약, 수신된 커맨드가 FBO를 변경하는 커맨드이면 단계 430으로 진행하고, 그렇지 않으면 단계 450으로 진행한다.
단계 430에서, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일한지 판단한다. 만약, FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면 단계 410으로 진행하고, 그렇지 않으면 단계 440으로 진행한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면, 디바이스 드라이버(300)는 FBO를 변경하지 않고 다음 커맨드를 수신하고 처리한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하지 않으면, 디바이스 드라이버(300)는 FBO를 변경하기 위해 커맨드를 생성한다.
단계 440에서, 디바이스 드라이버(300)는 플러쉬 커맨드를 생성한다. 플러쉬 커맨드는 FBO를 변경하기 전에, GPU(230)가 타일 버퍼에 저장된 데이터를 FBO에 모두 저장하도록 하는 커맨드이다.
단계 450에서, 디바이스 드라이버(300)는 커맨드를 GPU(230)로 전송한다. 디바이스 드라이버(300)는 플러쉬 커맨드를 GPU(230)로 전송하거나 단계 420에서 수신된 커맨드가 FBO를 변경하는 커맨드가 아닌 경우 수신된 커맨드를 GPU(230)로 전송한다.
도 5는 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 흐름도이다. 도 5를 참조하면, 도 5는 FBO의 변경이 있으나 이전 FBO에 대한 드로우 커맨드가 없는 는 경우 디바이스 드라이버(300)가 커맨드들을 처리하는 방법을 도시하고 있다.
단계 510에서, 디바이스 드라이버(300)는 어플리케이션으로부터 커맨드를 수신한다. 커맨드는 드로우 커맨드, FBO를 변경하는 커맨드 또는 바인드 커맨드 등을 포함한다.
단계 515에서, 디바이스 드라이버(300)는 수신된 커맨드가 인지 판단한다. 만약, 수신된 커맨드가 FBO를 변경하는 커맨드이면 단계 520으로 진행하고, 그렇지 않으면 단계 525로 진행한다.
단계 520에서, 디바이스 드라이버(300)는 DE 플래그를 설정한다. 어플리케이션으로부터 수신된 커맨드가 드로우 커맨드인 경우, 디바이스 드라이버(300)는 DE 플래그를 설정하여 드로우 커맨드가 수신되었음을 표시한다. 예를 들어, DE 플래그는 1비트의 메모리이고, DE 플래그가 설정되면 DE 플래그를 나타내는 메모리에는 1이 저장되고, DE 플래그가 설정되지 않은 상태에서 DE 플래그를 나타내는 메모리에는 0이 저장될 수 있다. 디바이스 드라이버(300)는 DE 플래그에 저장된 값을 읽고, 현재 FBO에 적용된 드로우 커맨드가 있었는지 여부를 판단할 수 있다.
단계 525에서, 디바이스 드라이버(300)는 수신된 커맨드가 FBO를 변경하는 커맨드인지를 판단한다. 만약, 수신된 커맨드가 FBO를 변경하는 커맨드인 경우 단계 530으로 진행하고, 그렇지 않으면 단계 555로 진행한다.
단계 530에서, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일한지 판단한다. 만약, FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면 단계 510으로 진행하고, 그렇지 않으면 535단계로 진행한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면, 디바이스 드라이버(300)는 플러쉬 커맨드를 생성하지 않고 다음 커맨드를 처리하기 위해 단계 510으로 진행한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하지 않으면, 디바이스 드라이버(300)는 현재 FBO에 적용된 드로우 커맨드가 있었는지 판단하기 위해 단계 535로 진행한다.
단계 535에서, 디바이스 드라이버(300)는 DE 플래그가 설정되어 있는지 판단한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하지 않더라도, 현재 FBO에 적용된 드로우 커맨드가 없으면 디바이스 드라이버(300)는 플러쉬 커맨드를 생성하지 않는다. 또한, 현재 FBO에 적용된 드로우 커맨드가 없으면 디바이스 드라이버(300)는 이미 생성된 플러쉬 커맨드를 제거한다.
단계 540에서, 디바이스 드라이버(300)는 플러쉬 커맨드를 제거하는 커맨드를 생성한다. 만약, 플러쉬 커맨드가 이미 생성되어 GPU(230)로 전송된 경우, 디바이스 드라이버(300)는 GPU(230)에 전송된 플러쉬 커맨드를 삭제하는 커맨드를 GPU(230)로 전송한다.
단계 545에서, 디바이스 드라이버(300)는 DE 플래그를 리셋한다. 예를 들어, DE 플래그를 리셋하는 것은 DE 플래그를 나타내는 비트를 0으로 설정하는 것을 의미한다.
단계 550에서, 디바이스 드라이버(300)는 플러쉬 커맨드를 생성한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하지 않고, GPU(230)가 처리 중인 FBO에 적용된 드로우 커맨드가 있는 경우, 디바이스 드라이버(300)는 타일 버퍼에 저장된 데이터를 GPU(230)가 처리 중인 FBO에 저장하기 위해 플러쉬 커맨드를 생성한다.
단계 555에서, 디바이스 드라이버(300)는 커맨드를 GPU(300)로 전송한다. 디바이스 드라이버(300)는 플러쉬 커맨드, 플러쉬 커맨드를 제거하는 커맨드, 드로우 커맨드 등을 GPU(230)로 전송한다.
도 6은 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 흐름도이다. 도 6을 참조하면, 도 6은 디바이스 드라이버(300)가 GPU(230)가 처리 중인 FBO와 동일한 FBO에 대한 드로우 커맨드를 처리하는 방법을 도시하고 있다.
단계 610에서, 디바이스 드라이버(300)는 어플리케이션으로부터 커맨드를 수신한다.
단계 615에서, 디바이스 드라이버(300)는 수신된 커맨드가 드로우 커맨드인지 판단한다. 만약, 수신된 커맨드가 드로우 커맨드이면 단계 620으로 진행하고, 그렇지 않으면 630단계로 진행한다.
단계 620에서, 디바이스 드라이버(300)는 DIR 플래그가 설정되어 있는지 판단한다. 만약, DIR 플래그가 설정되어 있으면 단계 670으로 진행하고, 그렇지 않으면 단계 625로 진행한다. 예를 들어, DIR 플래그는 1비트의 메모리이고, DIR 플래그가 설정되면 DIR 플래그를 나타내는 메모리에는 1이 저장되고, DIR 플래그가 설정되지 않은 상태에서 DIR 플래그를 나타내는 메모리에는 0이 저장될 수 있다. DIR 플래그는 GPU(230)가 처리 중인 FBO와 동일한 FBO에 적용되는 드로우 커맨드를 우선적으로 처리하기 위한 데이터를 나타낸다.
단계 625에서, 디바이스 드라이버(300)는 DE 플래그를 설정한다. 어플리케이션으로부터 수신된 커맨드가 드로우 커맨드인 경우, 디바이스 드라이버(300)는 DE 플래그를 설정하여 드로우 커맨드가 수신되었음을 표시한다. 예를 들어, DE 플래그는 1비트의 메모리이고, DE 플래그가 설정되면 DE 플래그를 나타내는 메모리에는 1이 저장되고, DE 플래그가 설정되지 않은 상태에서 DE 플래그를 나타내는 메모리에는 0이 저장될 수 있다. 디바이스 드라이버(300)는 DE 플래그에 저장된 값을 읽고, 현재 FBO에 적용된 드로우 커맨드가 있었는지 여부를 판단할 수 있다.
단계 630에서, 디바이스 드라이버(300)는 수신된 커맨드가 FBO를 변경하는 커맨드인지 판단한다. 만약, 수신된 커맨드가 FBO를 변경하는 커맨드이면 단계 635로 진행하고, 그렇지 않으면 단계 670으로 진행한다.
단계 635에서, 디바이스 드라이버(300)는 DIR 플래그를 리셋한다. 예를 들어, DIR 플래그를 리셋하는 것은 DIR 플래그를 나타내는 비트를 0으로 설정하는 것을 의미한다.
단계 640에서, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일한지 판단한다. 만약, FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면 645단계로 진행하고, 그렇지 않으면 650단계로 진행한다.
단계 645에서, 디바이스 드라이버(300)는 DIR 플래그를 설정한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면, 디바이스 드라이버(300)는 DIR 플래그를 설정하고 다음 커맨드를 수신하기 위해 단계 610으로 진행한다. 다시 말해서, FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면, 디바이스 드라이버(300)는 플러쉬 커맨드를 생성하지 않고 FBO를 변경하는 커맨드로 GPU(230)로 전송하지 않는다. 또한, 디바이스 드라이버(300)는 GPU(230)가 처리 중인 FBO에 드로우 커맨드를 적용하기 위해 단계 610으로 진행한다.
단계 650에서, 디바이스 드라이버(300)는 DE 플래그가 설정되어 있는지 판단한다. 만약, DE 플래그가 설정되어 있으면 단계 660로 진행하고, 그렇지 않으면 단계 655로 진행한다.
단계 655에서, 디바이스 드라이버(300)는 플러쉬 커맨드를 제거하는 커맨드를 생성한다. 또한, 디바이스 드라이버(300)는 플러쉬 커맨드가 아직 생성되지 않은 경우에는 플러쉬 커맨드를 생성하지 않는다.
단계 660에서, 디바이스 드라이버(300)는 DE 플래그를 리셋한다.
단계 665에서, 디바이스 드라이버(300)는 플러쉬 커맨드를 생성한다. FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 다르고, GPU(230)가 처리 중인 FBO에 적용된 드로우 커맨드가 있으므로, 디바이스 드라이버(300)는 GPU(230)가 처리하는 FBO를 변경하기 위해 플러쉬 커맨드를 생성한다.
단계 670에서, 디바이스 드라이버(300)는 커맨드를 GPU(230)로 전송한다. 디바이스 드라이버(300)는 드로우 커맨드, FBO를 변경하는 커맨드, 플러쉬 커맨드 또는 플러쉬 커맨드를 제거하는 커맨드 등을 GPU(230)로 전송한다.
도 7은 커맨드의 처리 순서를 변경하는 것을 설명하기 위한 도면이다. 도 7을 참조하면, 디바이스 드라이버(300)는 커맨드 큐(221)에 대기중인 커맨드들의 처리 순서를 조정한다.
도 7에서는 FBO를 변경하는 커맨드가 바인드 커맨드인 경우를 예를 들어 설명하고 있다. 따라서, 바인드 커맨드가 아닌 다른 커맨드라 할지라도, 도 7에서 설명된 내용들은 FBO를 변경하는 모든 커맨드들에도 동일하게 적용된다.
디바이스 드라이버(300)의 커맨드 큐(221)는 처리될 커맨드들을 순서대로 저장한다. 도 7에서는 디바이스 드라이버(300)는 커맨드 큐(221)의 가장 아래에 위치한 커맨드부터 커맨드 큐(221)의 가장 위에 위치한 커맨드를 순차적으로 처리한다.
커맨드 큐(221)는 3개의 바인드 커맨드들을 포함한다. 2개의 바인드 커맨드들은 FBO(n)으로 지정하는 커맨드를 포함하고, 1개의 바인드 커맨드는 FBO(m)으로 지정하는 커맨드를 포함한다. 바인드 커맨드들 사이에는 드로우 커맨드가 포함된다.
디바이스 드라이버(300)는 커맨드 큐(221)에 포함된 커맨드들을 그룹핑한다. 제1 그룹(710)은 FBO(n)에 적용되는 드로우 커맨드들을 포함하고, 제2 그룹(720)은 FBO(m)에 적용되는 드로우 커맨드들을 포함하고, 제3 그룹(730)은 FBO(n)에 적용되는 드로우 커맨드들을 포함한다. 제1 그룹(710) 및 제3 그룹(730)은 동일한 FBO(n)에 적용되는 드로우 커맨드들을 포함한다.
디바이스 드라이버(300)는 제1 그룹(710)과 제2 그룹(720)의 처리 순서를 스위치한다. 변경된 처리 순서에 따라, 디바이스 드라이버(300)는 제2 그룹(720), 제1 그룹(710), 제3 그룹(730)의 순서로 처리한다. 또한, 디바이스 드라이버(300)는 제3 그룹(730)에 포함된 바인드 커맨드를 삭제하고 플러쉬 커맨드를 생성하지 않는다.
도 7에서는 제1 그룹(710)과 제2 그룹(720)을 스위치 하는 경우를 예를 들어 설명하고 있으나, 제2 그룹(720)과 제3 그룹(730)을 스위치 할 수도 있다.
도 8은 커맨드의 처리 순서를 변경하는 것을 설명하기 위한 도면이다. 도 8을 참조하면, 디바이스 드라이버(300)는 GPU(230)에서 처리 중인 FBO를 고려하여 커맨드 큐(221)에 대기중인 커맨드들의 처리 순서를 조정한다.
도 8에서는 FBO를 변경하는 커맨드가 바인드 커맨드인 경우를 예를 들어 설명하고 있다. 따라서, 바인드 커맨드가 아닌 다른 커맨드라 할지라도, 도 8에서 설명된 내용들은 FBO를 변경하는 모든 커맨드들에도 동일하게 적용된다.
디바이스 드라이버(300)는 커맨드 큐(221)에 포함된 커맨드들을 그룹핑한다. 제1 그룹(810)은 FBO(n)에 적용되는 드로우 커맨드들을 포함하고, 제2 그룹(820)은 FBO(m)에 적용되는 드로우 커맨드들을 포함하고, 제3 그룹(830)은 FBO(n)에 적용되는 드로우 커맨드들을 포함한다. 제1 그룹(810) 및 제3 그룹(830)은 동일한 FBO(n)에 적용되는 드로우 커맨드들을 포함한다. 다만, 제1 그룹(810)에 포함된 커맨드들은 GPU(230)로 전송된 커맨드들을 나타낸다.
디바이스 드라이버(300)는 GPU(230)가 처리 중인 FBO를 고려하여 커맨드 큐(221)에 대기 중인 커맨드들의 처리 순서를 조정한다. GPU(230)는 FBO(n)에 드로우 커맨드들을 적용하고 있다. 따라서, 디바이스 드라이버(300)는 FBO(n)에 적용되는 드로우 커맨드들을 포함하는 제3 그룹(830)을 제2 그룹(820)보다 먼저 처리한다. 다시 말해서, 디바이스 드라이버(300)는 제2 그룹(820)과 제2 그룹(820)을 스위치 한다. 또한, 디바이스 드라이버(300)는 제3 그룹(830)에 포함된 바인드 커맨드를 삭제하고 플러쉬 커맨드를 생성하지 않는다. 제3 그룹(830)의 드로우 커맨드들을 우선적으로 처리함으로써, GPU(230)가 FBO를 변경하는 것을 최소화할 수 있다.
도 9는 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 순서도이다. 도 9를 참조하면, 도 9는 도 3의 디바이스 드라이버(300)에서 수행되는 단계들을 포함한다. 따라서, 이하 생략된 내용이라 하더라도 디바이스 드라이버(300)에 관하여 이상에서 기술된 내용은 도 9의 실시 예에 따른 커맨드 관리 방법에도 적용된다.
단계 910에서, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드를 수신한다. FBO를 변경하는 커맨드를 어플리케이션(210)으로부터 전송된다.
단계 920에서, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU가 처리 중인 FBO가 동일한지 비교한다. FBO를 변경하는 커맨드는 FBO를 지정하는 커맨드를 포함한다. 디바이스 드라이버는 FBO들의 ID 또는 주소를 비교하여 2개의 FBO가 동일한지 판단한다.
단계 930에서, 디바이스 드라이버(300)는 비교 결과에 따라, FBO를 변경하는 커맨드 또는 플러쉬 커맨드를 관리한다. 디바이스 드라이버(300)는 비교 결과에 따라 플러쉬 커맨드의 생성 여부를 결정한다. 디바이스 드라이버(300)는 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하면 FBO를 변경하는 커맨드를 삭제하고 플러쉬 커맨드를 생성하지 않는다. 또한, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU(230)가 처리 중인 FBO가 동일하지 않으면, 플러쉬 커맨드를 생성하고, FBO를 변경하는 커맨드와 함께 GPU(230)로 전송한다.
도 10은 일 실시 예에 따른 커맨드 관리 방법을 설명하기 위한 순서도이다. 도 10을 참조하면, 도 10은 도 3의 디바이스 드라이버(300)에서 수행되는 단계들을 포함한다. 따라서, 이하 생략된 내용이라 하더라도 디바이스 드라이버(300)에 관하여 이상에서 기술된 내용은 도 10의 실시 예에 따른 커맨드 관리 방법에도 적용된다.
단계 1010에서, 디바이스 드라이버(300)는 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들을 상호 비교한다. FBO를 변경하는 커맨드는 FBO를 지정하는 커맨드를 포함한다. 디바이스 드라이버는 FBO들의 ID 또는 주소를 비교하여 2개의 FBO가 동일한지 판단한다. 커맨드 큐에 복수의 FBO를 변경하는 커맨드들이 저장되어 있는 경우, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드들을 GPU(230)로 전송하기 전에 FBO를 변경하는 커맨드들의 처리 순서를 조정할 수 있다. 다시 말해서, 디바이스 드라이버(300)는 어플리케이션(210)으로부터 수신된 순서가 아닌 조정된 순서로 FBO를 변경하는 커맨드들을 GPU(230)로 전송할 수 있다.
단계 1020에서, 디바이스 드라이버(300)는 비교 결과에 따라, 커맨드 큐에 저장된 FBO를 변경하는 커맨드들의 처리 순서를 조정한다. 디바이스 드라이버(300)는 동일한 FBO를 지정하는 FBO를 변경하는 커맨드들이 순차적으로 처리되도록 FBO를 변경하는 커맨드들의 처리 순서를 조정한다. 이때, 디바이스 드라이버(300)는 FBO를 변경하는 커맨드들에 적용되는 드로우 커맨드들도 FBO를 변경하는 커맨드와 함께 처리 순서가 조정된다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
300: 디바이스 드라이버
310: 수신부
320: FBO 비교부
330: 커맨드 관리부

Claims (18)

  1. FBO를 변경하는 커맨드를 수신하는 단계;
    상기 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU가 처리 중인 FBO가 동일한지 비교하는 단계; 및
    상기 비교 결과에 따라, 상기 FBO를 변경하는 커맨드 또는 플러쉬 커맨드를 관리하는 단계를 포함하는 커맨드 관리 방법.
  2. 제 1 항에 있어서, 상기 관리하는 단계는,
    상기 비교 결과 동일한 FBO 인 경우, 상기 FBO를 변경하는 커맨드에 대한 플러쉬 커맨드를 생성하지 않는 것을 특징으로 하는 커맨드 관리 방법.
  3. 제 1 항에 있어서, 상기 관리하는 단계는,
    상기 비교 결과 동일한 FBO 인 경우, 상기 FBO를 변경하는 커맨드를 삭제하는 것을 특징으로 하는 커맨드 관리 방법.
  4. 제 1 항에 있어서,
    상기 비교 결과 상이한 FBO 인 경우, 상기 GPU가 처리 중인 FBO에 적용된 드로우 커맨드가 있는지 판단하는 단계를 더 포함하고,
    상기 관리하는 단계는,
    상기 판단 결과 적용된 드로우 커맨드가 없는 경우, 상기 GPU에 전달된 플러쉬 커맨드를 제거하는 커맨드를 상기 GPU로 전송하는 단계를 포함하는, 커맨드 관리 방법.
  5. 제 1 항에 있어서,
    상기 FBO를 변경하는 커맨드는 바인드 커맨드인 것을 특징으로 하는 커맨드 관리 방법.
  6. 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들을 상호 비교하는 단계; 및
    상기 비교 결과에 따라, 상기 커맨드 큐에 저장된 FBO를 변경하는 커맨드들의 처리 순서를 조정하는 단계를 포함하는 커맨드 관리 방법.
  7. 제 6 항에 있어서, 상기 비교하는 단계는,
    상기 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들 또는 GPU가 처리 중인 FBO를 상호 비교하는 것을 특징으로 하는 커맨드 관리 방법.
  8. 제 6 항에 있어서, 상기 처리 순서를 조정하는 단계는,
    상기 비교 결과 동일한 FBO를 지정하는 FBO를 변경하는 커맨드들을 그룹핑하는 것을 특징으로 하는 커맨드 관리 방법.
  9. 제 6 항에 있어서,
    상기 FBO를 변경하는 커맨드는 바인드 커맨드인 것을 특징으로 하는 커맨드 관리 방법.
  10. FBO를 변경하는 커맨드를 수신하는 수신부;
    상기 FBO를 변경하는 커맨드가 지정하는 FBO와 GPU가 처리 중인 FBO가 동일한지 비교하는 FBO 비교부; 및
    상기 비교 결과에 따라, 상기 FBO를 변경하는 커맨드 또는 플러쉬 커맨드를 관리하는 커맨드 관리부를 포함하는 디바이스 드라이버.
  11. 제 10 항에 있어서,
    상기 디바이스 관리부는 상기 비교 결과 동일한 FBO 인 경우, 상기 FBO를 변경하는 커맨드에 대한 플러쉬 커맨드를 생성하지 않는 것을 특징으로 하는 디바이스 드라이버.
  12. 제 10 항에 있어서,
    상기 커맨드 관리부는 상기 비교 결과 동일한 FBO 인 경우, 상기 FBO를 변경하는 커맨드를 삭제하는 것을 특징으로 하는 디바이스 드라이버.
  13. 제 10 항에 있어서,
    상기 커맨드 관리부는 상기 비교 결과 상이한 FBO 인 경우, 상기 GPU가 처리 중인 FBO에 적용된 드로우 커맨드가 있는지 판단하고,
    상기 판단 결과 적용된 드로우 커맨드가 없는 경우, 상기 GPU에 전달된 플러쉬 커맨드를 제거하는 커맨드를 상기 GPU로 전송하는 것을 특징으로 하는 디바이스 드라이버.
  14. 제 10 항에 있어서,
    상기 FBO를 변경하는 커맨드는 바인드 커맨드인 것을 특징으로 하는 디바이스 드라이버.
  15. 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들을 상호 비교하는 FBO 비교부; 및
    상기 비교 결과에 따라, 상기 커맨드 큐에 저장된 FBO를 변경하는 커맨드들의 처리 순서를 조정하는 커맨드 관리부를 포함하는 디바이스 드라이버.
  16. 제 15 항에 있어서,
    상기 FBO 비교부는 상기 커맨드 큐에 저장된 FBO를 변경하는 커맨드들이 지정하는 FBO들 또는 GPU가 처리 중인 FBO를 상호 비교하는 것을 특징으로 하는 디바이스 드라이버.
  17. 제 15 항에 있어서,
    상기 커맨드 관리부는 상기 비교 결과 동일한 FBO를 지정하는 FBO를 변경하는 커맨드들을 그룹핑하는 것을 특징으로 하는 디바이스 드라이버.
  18. 제 15 항에 있어서,
    상기 FBO를 변경하는 커맨드는 바인드 커맨드인 것을 특징으로 하는 디바이스 드라이버.
KR1020130134199A 2013-11-06 2013-11-06 커맨드들을 관리하는 장치 및 방법 KR102147357B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020130134199A KR102147357B1 (ko) 2013-11-06 2013-11-06 커맨드들을 관리하는 장치 및 방법
US15/035,170 US9984491B2 (en) 2013-11-06 2014-11-04 Apparatus and method for managing commands
PCT/KR2014/010505 WO2015069001A1 (en) 2013-11-06 2014-11-04 Apparatus and method for managing commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130134199A KR102147357B1 (ko) 2013-11-06 2013-11-06 커맨드들을 관리하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150052585A true KR20150052585A (ko) 2015-05-14
KR102147357B1 KR102147357B1 (ko) 2020-08-24

Family

ID=53041711

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130134199A KR102147357B1 (ko) 2013-11-06 2013-11-06 커맨드들을 관리하는 장치 및 방법

Country Status (3)

Country Link
US (1) US9984491B2 (ko)
KR (1) KR102147357B1 (ko)
WO (1) WO2015069001A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108765531A (zh) * 2018-03-27 2018-11-06 广东欧珀移动通信有限公司 图像渲染方法、装置、存储介质及智能终端
US20230140640A1 (en) * 2021-11-03 2023-05-04 Intel Corporation 3d graphics driver to split frames into multiple command buffer submissions based on analysis of previous frames

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020001072A (ko) * 2000-06-24 2002-01-09 한탁돈 3차원 그래픽 가속기 및 그의 그래픽 가속처리 방법
KR20110093404A (ko) * 2010-02-12 2011-08-18 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
US20130120388A1 (en) * 2008-08-28 2013-05-16 Daniel O'Donnell Time-Based Degradation of Images Using a GPU

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909224A (en) 1996-10-18 1999-06-01 Samsung Electronics Company, Ltd. Apparatus and method for managing a frame buffer for MPEG video decoding in a PC environment
JP2004015225A (ja) 2002-06-04 2004-01-15 Konica Minolta Holdings Inc 画像処理装置
KR100514137B1 (ko) 2003-07-04 2005-09-08 아이앤아이스틸 주식회사 압연기용 스트리퍼
TWI348652B (en) * 2005-10-17 2011-09-11 Via Tech Inc Driver assisted asynchronous command processing
JP2007200251A (ja) 2006-01-30 2007-08-09 Renesas Technology Corp 画像データ処理装置
US8149242B2 (en) 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
US8448067B2 (en) 2006-12-07 2013-05-21 Sony Computer Entertainment America, LLC Graphics command management tool and methods for analyzing performance for command changes before application modification
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US8294714B1 (en) 2009-06-26 2012-10-23 Nvidia Corporation Accelerated rendering with temporally interleaved details

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020001072A (ko) * 2000-06-24 2002-01-09 한탁돈 3차원 그래픽 가속기 및 그의 그래픽 가속처리 방법
US20130120388A1 (en) * 2008-08-28 2013-05-16 Daniel O'Donnell Time-Based Degradation of Images Using a GPU
KR20110093404A (ko) * 2010-02-12 2011-08-18 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법

Also Published As

Publication number Publication date
WO2015069001A1 (en) 2015-05-14
KR102147357B1 (ko) 2020-08-24
US9984491B2 (en) 2018-05-29
US20160292906A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
EP3673463B1 (en) Rendering an image from computer graphics using two rendering computing devices
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US11282162B2 (en) Tile based computer graphics
US10102663B2 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
JP5847159B2 (ja) タイル・ベース・レンダリング・システムにおけるサーフェスのパッチのテッセレーション
US10229524B2 (en) Apparatus, method and non-transitory computer-readable medium for image processing based on transparency information of a previous frame
KR102651126B1 (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
WO2017198104A1 (zh) 一种粒子系统的处理方法及装置
US9013479B2 (en) Apparatus and method for tile-based rendering
US10169839B2 (en) Method and apparatus for executing graphics pipeline
US10217259B2 (en) Method of and apparatus for graphics processing
US20170091961A1 (en) Graphics processing apparatus and method for determining level of detail (lod) for texturing in graphics pipeline
US20150015574A1 (en) System, method, and computer program product for optimizing a three-dimensional texture workflow
KR20170025099A (ko) 렌더링 방법 및 장치
KR102512521B1 (ko) 텍스쳐 처리 방법 및 장치
KR20180038793A (ko) 영상 데이터 처리 방법 및 장치
KR102147357B1 (ko) 커맨드들을 관리하는 장치 및 방법
KR20160068204A (ko) 메시 지오메트리를 위한 데이터 처리 방법 및 이를 기록한 컴퓨터 판독 가능 저장 매체
KR102116976B1 (ko) 렌더링 방법 및 장치
KR20150042095A (ko) 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
CN106327419B (zh) Gpu显示列表中显存块的分配方法及装置
TWI839352B (zh) 圖形處理器、數據處理器、及其等的操作方法
KR20140116600A (ko) 그래픽 렌더링에서의 프래그먼트 제어 방법 및 장치

Legal Events

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