KR101670958B1 - 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 - Google Patents
이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 Download PDFInfo
- Publication number
- KR101670958B1 KR101670958B1 KR1020100120375A KR20100120375A KR101670958B1 KR 101670958 B1 KR101670958 B1 KR 101670958B1 KR 1020100120375 A KR1020100120375 A KR 1020100120375A KR 20100120375 A KR20100120375 A KR 20100120375A KR 101670958 B1 KR101670958 B1 KR 101670958B1
- Authority
- KR
- South Korea
- Prior art keywords
- context data
- data
- frame
- shader
- address information
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 10
- 238000000034 method Methods 0.000 claims abstract description 27
- 238000009877 rendering Methods 0.000 claims description 64
- 238000004904 shortening Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 16
- 230000000694 effects Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
입력되는 프레임 중 데이터가 중복되지 않는 프레임만 공유 메모리에 저장함으로써, 데이터 처리 시간을 단축시킬 수 있는 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치에 관한 것이다. 데이터 처리 장치는 입력된 제2 프레임과 시간적으로 상이한 제1 프레임을 비교하여, 상기 제1 프레임과 상기 제2 프레임이 동일한지 여부를 판단하고, 상기 판단결과에 따라, 상기 제1 프레임과 연관된 주소정보 또는 상기 제2 프레임을 공유 메모리에 저장함으로써, 업데이트되는 데이터량을 줄일 수 있다.
Description
본 발명의 일실시예는 렌더링 데이터를 처리하는 시간을 줄일 수 있는 방안에 관한 것이다.
렌더링은 컴퓨터 그래픽스 장면의 3차원 설명정보(description), 예컨대, 기하 모델, 동작, 카메라, 텍스처, 조명 정보 등, 을 2차원 영상으로 생성하면서 사실감을 부여하는 그래픽스 파이프라인의 최종 과정을 말한다. 따라서, 어떤 렌더링 기술을 사용하는가에 따라 성능이 크게 좌우되며 이에 따라 생성되는 영상의 실재감과 품질이 결정된다고 할 수 있다. 과거에 비해 렌더링 기술이 많이 발전하면서 극사실적인 영상의 렌더링이 가능하게 되었으나 이를 위해서는 아직도 많은 계산 시간을 필요로 하고 있다.
예를 들어, 기존의 렌더링 기술은 장면이 바뀌어도 바뀐 장면의 그래픽 데이터를 모두 렌더링한다. 그러나, 대부분의 장면(scene)들은 부분적인 변화가 자주 발생한다. 따라서, 기존에는 장면이 바뀔 때마다 모든 그래픽 데이터를 렌더링하므로, 렌더링하여 표시하는데까지 중복된 작업을 수행하며, 많은 시간과 많은 메모리 공간을 필요로 한다.
본 발명의 일실시예에 따른 데이터 처리 장치는 제2 프레임을 입력받는 인터페이스부, 상기 입력된 제2 프레임과 시간적으로 상이한 제1 프레임을 비교하여, 상기 제1 프레임과 상기 제2 프레임이 동일한지 여부를 판단하는 처리부, 및 상기 판단결과, 상기 제1 프레임과 상기 제2 프레임이 동일한 경우, 상기 제1 프레임과 연관된 주소정보를 저장하고, 상기 제1 프레임과 상기 제2 프레임이 동일하지 않은 경우, 상기 제2 프레임을 저장하는 공유 메모리를 포함한다.
상기 제1, 제2 프레임은 컨텍스트(Context) 데이터를 포함할 수 있다. 이 경우, 상기 처리부는 상기 제1 프레임에 포함된 제1 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 컨텍스트 데이터가 동일한 경우, 상기 제1 컨텍스트 데이터와 연관된 주소정보를 상기 공유 메모리에 저장하거나, 또는 상기 제1 프레임에 포함된 제1 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 컨텍스트 데이터를 상기 공유 메모리에 저장할 수 있다.
상기 제1, 제2 컨텍스트 데이터는 각각 속성(Attribute) 데이터, 텍스처(Texture) 데이터, 렌더 상태(Render state)값 중 적어도 하나를 포함할 수 있다. 상기 처리부에 의해 상기 제2 컨텍스트 데이터의 일부가 상기 제1 컨텍스트 데이터와 동일한 것으로 판단된 경우, 상기 공유 메모리는 상기 제1 컨텍스트 데이터와 동일하지 않는 제2 속성 데이터, 제2 텍스처 데이터, 또는 제2 렌더 상태값 중 적어도 하나를 저장하고, 상기 제2 컨텍스트 데이터와 동일한 제1 속성 데이터, 제1 텍스처 데이터, 또는 제1 렌더 상태값 중 적어도 하나와 연관된 주소정보를 저장할 수 있다.
상기 데이터 처리 장치는, 상기 공유 메모리에 저장된 상기 제1 프레임을 이용하여 제1 렌더링 데이터를 생성하고, 상기 제1 프레임과 연관된 주소 정보를 이용하여 제2 렌더링 데이터를 생성하거나, 또는 상기 제2 프레임을 이용하여 제2 렌더링 데이터를 생성하는 렌더링부를 더 포함할 수 있다.
상기 제1, 제2 프레임은 셰이더 컨텍스트(Shader Context) 데이터를 포함할 수 있다. 이 경우, 상기 처리부는 상기 제1 프레임에 포함된 제1 셰이더 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 셰이더 컨텍스트 데이터가 동일한 경우, 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보를 상기 공유 메모리에 저장하거나, 또는 상기 제1 프레임에 포함된 제1 셰이더 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 셰이더 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 셰이더 컨텍스트 데이터를 상기 공유 메모리에 저장할 수 있다.
본 발명의 다른 일실시예에 따른 데이터 처리 장치는 프레임 내에 객체를 입력받는 인터페이스부, 상기 입력된 제1 객체와, 상기 제1 객체와 시간적으로 상이한 제2 객체를 비교하여, 상기 제1 객체와 상기 제2 객체가 동일한지 여부를 판단하는 처리부, 및 상기 판단결과, 상기 제1 객체와 상기 제2 객체가 동일한 경우, 상기 제1 객체와 연관된 주소정보를 저장하고, 상기 제1 객체와 상기 제2 객체가 동일하지 않은 경우, 상기 제2 객체를 저장하는 공유 메모리를 포함한다.
본 발명의 일실시예에 따른 데이터 처리 방법은 제2 프레임을 입력받는 단계, 상기 입력된 제2 프레임과 시간적으로 상이한 제1 프레임이 동일한지 여부를 판단하는 단계, 및 상기 판단결과에 따라, 상기 제1 프레임과 연관된 주소정보 또는 상기 제2 프레임을 공유 메모리에 저장하는 단계를 포함한다.
본 발명의 다른 일실시예에 따른 데이터 처리 방법은 프레임 내에 포함된 제1 객체와, 상기 제1 객체와 시간적으로 상이한 제2 객체의 비교를 통해 상기 제1 객체와 상기 제2 객체가 동일한지 여부를 판단하는 단계, 및 상기 판단결과에 따라, 상기 제1 객체와 연관된 주소정보 또는 상기 제2 객체를 공유 메모리에 저장하는 단계를 포함한다.
본 발명의 일실시예에 따르면, 이전 프레임과 렌더링할 현재 프레임이 동일한 경우, 현재 프레임을 공유 메모리에 업데이트하지 않음으로써, 이전 프레임을 이용하여 렌더링 처리할 수 있도록 하여 렌더링 처리 시간을 단축할 수 있다.
본 발명의 일실시예에 따르면, 이전 프레임과 렌더링할 현재 프레임이 동일한 경우, 이전 프레임과 연관된 주소정보만을 공유 메모리에 저장함으로써, 저장공간을 줄일 수 있다.
본 발명의 일실시예에 따르면, 이전 프레임과 렌더링할 현재 프레임이 일부 다를 경우, 값이 다른 일부 데이터만 공유 메모리에 저장함으로써, 업데이트하는 데이터량을 줄일 수 있다.
본 발명의 일실시예에 따르면, 동일한 프레임 내에 포함된 복수의 객체들에 대해서도 업데이트되었는지 여부를 판단하고, 업데이트된 객체에 대해서만 공유 메모리에 저장함으로써, 업데이트되는 데이터량을 줄일 수 있다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 장치의 구성을 도시한 블록도이다.
도 2는 본 발명의 일실시예에 따른 데이터 처리 방법의 순서를 도시한 흐름도이다.
도 3은 렌더링 데이터를 구성하는 일례를 도시한 도면이다.
도 4는 프레임을 공유 메모리에 저장하는 일례를 도시한 도면이다.
도 5는 컨텍스트 데이터를 처리하는 일례를 도시한 도면이다.
도 6은 데이터 처리 시간이 감소되는 일례를 도시한 도면이다.
도 7은 데이터 처리 시간이 감소되는 다른 일례를 도시한 도면이다.
도 8은 컨텍스트 데이터와 연관된 데이터 구조를 도시한 도면이다.
도 9는 셰이더 컨텍스트 데이터와 연관된 데이터 구조를 도시한 도면이다.
도 10은 본 발명의 다른 일실시예에 따른 데이터 처리 방법의 순서를 도시한 흐름도이다.
도 2는 본 발명의 일실시예에 따른 데이터 처리 방법의 순서를 도시한 흐름도이다.
도 3은 렌더링 데이터를 구성하는 일례를 도시한 도면이다.
도 4는 프레임을 공유 메모리에 저장하는 일례를 도시한 도면이다.
도 5는 컨텍스트 데이터를 처리하는 일례를 도시한 도면이다.
도 6은 데이터 처리 시간이 감소되는 일례를 도시한 도면이다.
도 7은 데이터 처리 시간이 감소되는 다른 일례를 도시한 도면이다.
도 8은 컨텍스트 데이터와 연관된 데이터 구조를 도시한 도면이다.
도 9는 셰이더 컨텍스트 데이터와 연관된 데이터 구조를 도시한 도면이다.
도 10은 본 발명의 다른 일실시예에 따른 데이터 처리 방법의 순서를 도시한 흐름도이다.
이하, 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 다양한 실시예를 상세하게 설명하지만, 본 발명이 실시예에 의해 제한되거나 한정되는 것은 아니다.
3차원 애플리케이션(Three Dimension Application)은 다수의 3차원 객체와 그 객체에 다양한 셰이더 효과를 적용해 표현되거나, 3차원 객체의 애니메이션으로 표현된다. 3차원 객체는 'geometric primitives'로 구성되고, 다양한 속성(vertices, colors, normals, texture coordinates)을 갖는 버텍스 스트림(vertex stream)으로 표현된다. 일반적으로 3차원 애플리케이션은 Open GL|ES API(commands) 프로그램으로 생성된다. 이 프로그램은 렌더링 엔진에서 해석되어 처리되며, 그 중 3차원 객체의 버텍스 스트림은 glDraw* 커맨드(commands) 단위로 처리된다.
렌더링될 데이터는 버텍스 스트림, 텍스처 이미지(texture images), 빛(light), 렌더 상태값(render states) 등으로 구성된 컨텍스트(context)와 버텍스 스트림과 빛에 적용될 셰이더 효과(움직임, 색상, 음영 효과 등)를 표현하는 셰이더 프로그램(shader program)을 포함하는 셰이더 컨텍스트(shadercontext)로 구성된다.
렌더링 엔진은 상기 렌더링될 데이터를 컨텍스트, 셰이더 컨텍스트 형태로 관리 및 처리할 수 있다.
이 때, 임의의 프레임의 객체마다 컨텍스트, 셰이더 컨텍스트에 담긴 정보가 같을 수도 있고, 다를 수도 있다. 또한, 프레임마다 컨텍스트, 셰이더 컨텍스트에 담긴 정보가 같을 수도 있고, 다를 수도 있다.
게임과 같은 3차원 애플리케이션을 보면, 다양한 셰이더 효과의 객체가 존재하며, 객체의 애니메이션도 존재한다.
이런, 3차원 애플리케이션을 실시간으로 렌더링하기 위해서는 렌더링될 데이터의 빠른 처리가 필요하다. 즉, 데이터의 빠른 전송 및 업데이트가 필요하다.
3차원 애플리케이션을 처리하기 위해, 스마트폰을 포함한 모바일기기에 CPU(Central Processing Unit)와 GPU(Graphics Processing Unit)를 포함하는 멀티코어 프로세서가 탑재되고 있다. 멀티코어 프로세서의 동작 방식을 보면, CPU에서 처리한 데이터를 GPU에서 처리하거나 GPU에서 처리한 결과를 CPU에서 처리하는 플랫폼으로 구성된다. 멀티코어 플랫폼에서 3차원 애플리케이션의 처리 속도를 향상시키기 위해, 데이터의 처리 속도를 향상시키는 방법이 필요하다.
본 발명에서는 임의의 코어에서 처리한 데이터를 다른 코어에게 빠르게 전송하는 방법을 제안한다. 즉, 데이터의 전송 횟수 및 전송량을 줄이는 방법을 제안한다. 구체적으로, 한 코어에서 처리한 데이터를 다른 코어에 전달하기 위해 공유 메모리에 저장하고, 상기 공유 메모리에 저장된 데이터를 다른 코어에서 가져가 처리한다. 이 때 두 코어 간의 데이터 접근 및 업데이트 비용이 발생한다. 이 경우, 이전 데이터와 현재 데이터를 비교해서, 데이터 값이 변화하지 않았으면, 이전 값을 재사용하고, 변화된 값만 업데이트하거나, 저장한 후, 값이 변경되었음을 알리는 방법이다. 데이터값이 변화하였는지 여부를 판단하는 데이터는 컨텍스트, 셰이더 컨텍스트의 형태로 관리된다.
도 1은 본 발명의 일실시예에 따른 데이터 처리 장치의 구성을 도시한 블록도이다.
도 1을 참고하면, 데이터 처리 장치(100)는 인터페이스부(110), 처리부(120), 공유 메모리(130), 및 렌더링부(140)를 포함할 수 있다.
실시예로, 인터페이스부(110)는 제1 프레임을 입력받는다. 여기서, 제1 프레임은 렌더링 데이터를 구성하는 첫번째 프레임일 수 있다. 여기서는, 프레임으로 설명하였지만, 렌더링 데이터를 처리하는 애플리케이션 내에서, Open GL│ES 를 실행할 때, "glDraw*" 커맨드(commands)가 호출되는 것을, 상기 프레임이 입력된 것으로 해석할 수 있다. 예를 들어, 인터페이스부(110)에 상기 제1 프레임이 입력된 것은 glDraw* 커맨드 (n)이 호출(call)된 것을 의미한다. 여기서, n은 자연수이고, '시간 변수'일 수 있다.
처리부(120)는 공유 메모리(130)에 상기 입력된 제1 프레임보다 시간적으로 앞선 프레임이 저장되어 있는지 판단하고, 저장되어 있지 않은 경우, 상기 제1 프레임을 공유 메모리(130)에 저장할 수 있다.
공유 메모리(130)는 상기 제1 프레임을 저장한다. 상기 제1 프레임은 렌더링 데이터를 구성하는 컨텍스트(Context) 데이터, 셰이더 컨텍스트(Shader Context) 데이터 등을 포함할 수 있다. 즉, 공유 메모리(130)는 상기 제1 프레임과 연관된 데이터들을 저장하는 것이다.
렌더링부(140)는 공유 메모리(130)로부터 상기 제1 프레임을 추출하여, 상기 제1 프레임과 연관된 제1 렌더링 데이터를 생성할 수 있다.
인터페이스부(110)는 제2 프레임을 입력받는다. 여기서, 제2 프레임은 상기 제1 프레임과 시간적으로 상이한 두번째 프레임일 수 있다. 즉, 상기 제1 프레임은 상기 제2 프레임보다 시간적으로 앞선 프레임이다. 예를 들어, 인터페이스부(110)에 상기 제2 프레임이 입력된 것은 glDraw(n+1)이 호출된 것을 의미한다.
처리부(120)는 공유 메모리(130)에 상기 제2 프레임보다 시간적으로 앞선 제1 프레임이 저장되어 있는지 판단하고, 저장되어 있는 경우, 상기 제1 프레임과 상기 제2 프레임을 비교할 수 있다. 처리부(120)는 상기 제1 프레임과 상기 제2 프레임이 동일한지 여부를 판단할 수 있다. 예들 들어, 처리부(120)는 상기 제1 프레임에 포함된 데이터들과 상기 제2 프레임에 포함된 데이터들 중, 동일한 분류의 데이터(예컨대, 컨텍스트 데이터, 셰이더 컨텍스트 데이터)들의 값이 서로 동일한지 여부를 판단할 수 있다.
상기 판단결과, 상기 제1 프레임과 상기 제2 프레임이 동일한 경우, 공유 메모리(130)는 상기 제1 프레임과 연관된 주소정보를 저장한다. 즉, 이미 상기 제1 프레임과 연관된 데이터들은 공유 메모리(130)에 저장되어 있기 때문에, 상기 제1 프레임과 상기 제2 프레임이 동일하다면, 굳이 중복되는 데이터들을 저장할 필요가 없다. 이 경우, 공유 메모리(130)는 상기 제1 프레임과 연관된 데이터들을 저장한 주소정보만을 상기 제2 프레임을 대신하여 저장할 수 있다. 이 경우, 렌더링부(140)는 상기 제2 프레임과 연관된 제2 렌더링 데이터를 생성할 때, 상기 제1 프레임이 저장된 주소정보를 이용하여 상기 제2 렌더링 데이터를 생성할 수 있다. 즉, 렌더링부(140)는 상기 주소정보에 저장된 제1 프레임을 이용하여 상기 제2 렌더링 데이터를 생성할 수 있다. 예를 들어, 렌더링부(140)는 이미 생성된 상기 제1 렌더링 데이터를 재사용할 수 있다.
또는, 상기 판단결과, 상기 제1 프레임과 상기 제2 프레임이 동일하지 않은 경우, 공유 메모리(130)는 상기 제2 프레임을 저장한다. 즉, 상기 제2 프레임과 연관된 데이터들은 공유 메모리(130)에 저장되어 있지 않기 때문에, 공유 메모리(130)는 제2 렌더링 데이터를 생성할 때 필요한 제2 프레임을 저장할 수 있다. 이 경우, 렌더링부(140)는 상기 제2 프레임과 연관된 제2 렌더링 데이터를 생성할 때, 상기 제2 프레임을 이용하여 상기 제2 렌더링 데이터를 생성할 수 있다.
이하에서는, 상기 프레임에 포함된 컨텍스트 데이터를 비교하여 제1 프레임과 제2 프레임의 동일성을 판단하는 실시예를 설명한다.
실시예로, 처리부(120)는 상기 제1 프레임에 포함된 제1 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 컨텍스트 데이터가 동일한 경우, 상기 제1 컨텍스트 데이터와 연관된 주소정보를 공유 메모리(130)에 저장할 수 있다. 이 경우, 렌더링부(140)는 상기 제1 컨텍스트 데이터와 연관된 주소정보에 저장된 제1 컨텍스트 데이터를 이용하여 상기 제2 프레임과 연관된 제2 렌더링 데이터를 생성할 수 있다.
또는, 처리부(120)는 상기 제1 프레임에 포함된 제1 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 컨텍스트 데이터를 공유 메모리(130)에 저장할 수 있다. 렌더링부(140)는 상기 제2 컨텍스트 데이터를 이용하여 상기 제2 프레임과 연관된 제2 렌더링 데이터를 생성할 수 있다.
컨텍스트 데이터는 속성(Attribute) 데이터, 텍스처(Texture) 데이터, 렌더 상태(Render state)값 중 적어도 하나를 포함할 수 있다. 속성 데이터는 버텍스(Vertices), colors, normals, texture coordinates 등을 포함할 수 있다.
처리부(120)는 상기 제1 컨텍스트 데이터와 상기 제2 컨텍스트 데이터를 비교하고, 상기 제2 컨텍스트 데이터의 일부가 상기 제1 컨텍스트 데이터와 동일한 것으로 판단할 수 있다. 이 경우, 공유 메모리(130)는 상기 제1 컨텍스트 데이터와 동일하지 않는 제2 속성 데이터, 제2 텍스처 데이터, 또는 제2 렌더 상태값 중 적어도 하나를 저장할 수 있다. 또한, 공유 메모리(130)는 상기 제2 컨텍스트 데이터와 동일한 제1 속성 데이터, 제1 텍스처 데이터, 또는 제1 렌더 상태값 중 적어도 하나와 연관된 주소정보를 저장할 수 있다.
예를 들어, 상기 제1, 제2 속성 데이터와 제1, 제2 텍스처 데이터는 동일하고, 제1 렌더 상태값과 제2 렌더 상태값만 다를 수 있다. 이 경우, 공유 메모리(130)는 상기 제2 속성 데이터 대신에 상기 제1 속성 데이터의 주소정보를 저장하고, 상기 제2 텍스처 데이터 대신에 상기 제1 텍스처 데이터의 주소정보를 저장하며, 상기 제2 렌더 상태값을 저장할 수 있다.
또한, 실시예에 따라, 상기 프레임에 포함된 셰이더 컨텍스트 데이터를 비교하여 제1 프레임과 제2 프레임의 동일성을 판단할 수도 있다. 예를 들어, 셰이더 컨텍스트 데이터는 셰이더 프로그램(Shader program), 셰이더 프로그램 변수(uniform varying 변수 등)를 포함할 수 있다.
처리부(120)는 상기 제1 프레임에 포함된 제1 셰이더 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 셰이더 컨텍스트 데이터가 동일한 경우, 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보를 공유 메모리(130)에 저장할 수 있다. 렌더링부(140)는 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보에 저장된 제1 셰이더 컨텍스트 데이터를 이용하여 상기 제2 프레임과 연관된 제2 렌더링 데이터를 생성할 수 있다.
또는, 처리부(120)는 상기 제1 프레임에 포함된 제1 셰이더 컨텍스트 데이터와 상기 제2 프레임에 포함된 제2 셰이더 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 셰이더 컨텍스트 데이터를 공유 메모리(130)에 저장할 수 있다. 렌더링부(140)는 상기 제2 셰이더 컨텍스트 데이터를 이용하여 상기 제2 프레임과 연관된 제2 렌더링 데이터를 생성할 수 있다.
다른 실시예로, 처리부(120)는 동일한 프레임 내에서 객체 또는 서브객체의 비교를 통해 객체 또는 서브객체가 업데이트된 경우, 현재 객체에 대한 데이터를 공유 메모리(130)에 저장하거나, 업데이트되지 않은 경우, 이전 객체에 대한 주소정보만을 공유 메모리(130)에 저장할 수 있다. 즉, 상기에서는 프레임 간의 업데이트 여부를 비교하였지만, 이하에서는 프레임 내에 포함된 복수의 객체에 대하여, 업데이트 여부를 비교함으로써, 데이터를 선택적으로 공유 메모리(130)에 저장시킬 수 있다.
구체적으로, 인터페이스부(110)는 프레임 내에 객체를 입력받는다. 여기서, 객체는 사람, 다리, 빌딩, 나무 등 영상을 구성하는 기본적인 요소들을 의미한다. 또한, 서브객체는 객체에 대한 구체화된 대상, 예컨대, 객체가 사람인 경우, 사람의 머리, 팔, 다리 등이 서브객체가 될 수 있다.
처리부(120)는 상기 입력된 제1 객체와, 상기 제1 객체와 시간적으로 상이한 제2 객체를 비교하여, 상기 제1 객체와 상기 제2 객체가 동일한지 여부를 판단할 수 있다. 상기 제1 객체와 상기 제2 객체는 동일한 객체이며, 인터페이스부(110)에 입력되는 순서에 차이가 있는 것을 의미한다.
상기 판단결과, 상기 제1 객체와 상기 제2 객체가 동일한 경우, 공유 메모리(130)는 상기 제1 객체와 연관된 주소정보를 저장하고, 상기 제1 객체와 상기 제2 객체가 동일하지 않은 경우, 상기 제2 객체를 저장할 수 있다.
또한, 처리부(120)는 상기 제1 객체와 연관된 제1 서브객체와 상기 제1 서브객체와 시간적으로 상이한 제2 서브객체를 비교하여, 상기 제1 서브객체와 상기 제2 서브객체가 동일한지 여부를 판단할 수 있다. 공유 메모리(130)는 상기 판단결과, 상기 제1 서브객체와 상기 제2 서브객체가 동일한 경우, 상기 제1 서브객체와 연관된 주소정보를 저장하고, 상기 제1 서브객체와 상기 제2 서브객체가 동일하지 않은 경우, 상기 제2 서브객체를 저장할 수 있다.
상기 제1 객체와 상기 제2 객체도 상기 프레임과 동일하게, 컨텍스트 데이터를 포함할 수 있다. 처리부(120)는 상기 제1 객체에 포함된 제1 컨텍스트 데이터와 상기 제2 객체에 포함된 제2 컨텍스트 데이터가 동일한 경우, 상기 제1 컨텍스트 데이터와 연관된 주소정보를 공유 메모리(130)에 저장하거나, 상기 제1 객체에 포함된 제1 컨텍스트 데이터와 상기 제2 객체에 포함된 제2 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 컨텍스트 데이터를 공유 메모리(130)에 저장할 수 있다. 상기에서 상세히 설명하였으므로, 여기서는 간단히 설명한다.
상기 제1, 제2 컨텍스트 데이터는 각각 속성 데이터, 텍스처 데이터, 렌더 상태값 중 적어도 하나를 포함할 수 있다. 처리부(120)에 의해 상기 제2 컨텍스트 데이터의 일부가 상기 제1 컨텍스트 데이터와 동일한 것으로 판단된 경우, 공유 메모리(130)는 상기 제1 컨텍스트 데이터와 동일하지 않는 제2 속성 데이터, 제2 텍스처 데이터, 또는 제2 렌더 상태값 중 적어도 하나를 저장하고, 상기 제2 컨텍스트 데이터와 동일한 제1 속성 데이터, 제1 텍스처 데이터, 또는 제1 렌더 상태값 중 적어도 하나와 연관된 주소정보를 저장할 수 있다.
또는, 상기 제1 객체와 상기 제2 객체는 셰이더 컨텍스트 데이터를 포함할 수 있다. 이때, 처리부(120)는 상기 제1 객체 포함된 제1 셰이더 컨텍스트 데이터와 상기 제2 객체에 포함된 제2 셰이더 컨텍스트 데이터가 동일한 경우, 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보를 공유 메모리(130)에 저장할 수 있다. 또는, 처리부(120)는 상기 제1 객체에 포함된 제1 셰이더 컨텍스트 데이터와 상기 제2 객체에 포함된 제2 셰이더 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 셰이더 컨텍스트 데이터를 공유 메모리(130)에 저장할 수 있다.
도 2는 본 발명의 일실시예에 따른 데이터 처리 방법의 순서를 도시한 흐름도이다.
도 2를 참조하면, 단계 210에서, 데이터 처리 장치(100)는 Open GL│ES 커맨드를 실행할 수 있다.
단계 220에서, 데이터 처리 장치(100)는 Open GL│ES의 입출력 파라미터를 분석할 수 있다. Open GL│ES 내에는 렌더링을 처리하기 위한 예컨대, glDraw*, glFlush, glColor 등의 복수의 커맨드들이 포함될 수 있다.
단계 230에서, 데이터 처리 장치(100)는 프레임을 입력받는다. 예컨대, 데이터 처리 장치(100)는 Open GL│ES 커맨드 내에 복수의 커맨드 중, 'glDraw* 커맨드'를 호출받는 것일 수 있다.
단계 240에서, 데이터 처리 장치(100)는 상기 입력된 프레임이 첫번째 프레임(제1 프레임)인지 판단할 수 있다. 첫번째 프레임인 경우, 단계 250에서, 데이터 처리 장치(100)는 제1 프레임을 공유 메모리(130)에 저장할 수 있다. 즉, 데이터 처리 장치(100)는 glDraw* commands(n)에 관한 데이터들을 공유 메모리(130)에 저장할 수 있다. 이때, 단계 230에서 제1 프레임이 입력된 것으로 해석될 수 있다.
첫번째 프레임이 아닌 경우, 단계 260에서, 데이터 처리 장치(100)는 제1 프레임(glDraw* commands(n))과 제2 프레임(glDraw* commands(n+1))을 비교하여 상기 제1 프레임과 상기 제2 프레임이 동일한지 여부를 판단한다. 이때, 제1 프레임과 제2 프레임 비교 시, 동일 객체의 데이터를 비교한다. 즉, 제1 프레임의 k번째 객체와 제2 프레임의 k번째 객체를 비교한다. 이때, 단계 230에서 제2 프레임이 입력된 것으로 해석될 수 있다.
제1 프레임과 제2 프레임이 다른 경우, 단계 270에서, 데이터 처리 장치(100)는 제2 프레임을 공유 메모리(130)에 저장한다. 즉, 데이터 처리 장치(100)는 glDraw* commands(n+1)에 관한 데이터들을 공유 메모리(130)에 저장할 수 있다. 이 경우, 렌더링부(140)는 상기 제2 프레임을 이용하여 상기 제2 프레임과 연관된 제2 렌더링 데이터를 생성할 수 있다.
제1 프레임과 제2 프레임이 동일한 경우, 단계 280에서, 데이터 처리 장치(100)는 제1 프레임과 연관된 주소정보를 공유 메모리(130)에 저장한다. 즉, 데이터 처리 장치(100)는 glDraw* commands(n)에 관한 데이터들을 저장한 주소정보를 공유 메모리(130)에 저장할 수 있다. 이 경우, 렌더링부(140)는 상기 주소정보에 저장된 제1 프레임을 이용하여 상기 제2 렌더링 데이터를 생성할 수 있다.
도 3은 렌더링 데이터를 구성하는 일례를 도시한 도면이다.
도 3에 도시한 바와 같이, 장면(310)은 복수개의 객체(객체 1, 2, 3)로 구성되고, 데이터 처리 장치(100)는 장면(310)으로부터 렌더링 데이터를 생성할 수 있다. 예를 들어, 렌더링 데이터는 지오메트리(Geometry) 객체(object) 단위로 구성되고, 하나의 지오메트리 객체는 하나 이상의 서브 객체(Sub object)로 구성될 수 있다. 객체 또는 서브 객체의 지오메트리 객체마다 동일하거나, 다른 효과의 셰이더 프로그램(Shader Program)이 적용 가능하다.
따라서, 셰이더 프로그램이 동일한지, 다른지에 따라 렌더링 데이터를 분류할 수 있다. 예컨대, 셰이더 프로그램을 식별자로 구분할 수 있고, 데이터 처리 장치(100)는 동일한 셰이더 프로그램 식별자를 갖는 렌더링 데이터를 동일한 데이터값으로 분류할 수 있다.
예를 들어, 컨텍스트 데이터에 포함된 버텍스 데이터의 값을 비교하여, 프레임 간의 동일성을 판단할 수 있다. 일례로, 데이터 처리 장치(100)는 제1 버텍스 데이터(Vertex array(n))와 제2 버텍스 데이터(Vertex array(n+1))의 첫번째 좌표값, 마지막 좌표값, 중간 좌표값, 나머지 좌표값들을 차례로 비교하여 제1 프레임과 제2 프레임 간의 동일성을 판단할 수 있다. 데이터 처리 장치(100)는 컨텍스트 데이터에 포함된 다른 데이터들, 텍스처 데이터, 렌더 상태값 등에 대해서도 동일하게 수행할 수 있다.
도 4는 프레임을 공유 메모리에 저장하는 일례를 도시한 도면이다.
도 4를 참고하면, 처리부(120)는 입력된 프레임(glDraw call (n))을 공유 메모리(130)에 저장할 수 있다. 처리부(120)는 'CPU의 ARM'으로 해석할 수 있다. 처리부(120)는 제1 프레임(glDraw* commands (n))과 연관된 데이터(Surface, Config, Context[0](410, 제1 컨텍스트 데이터), Shader Context[0](420, 제1 셰이더 컨텍스트 데이터) 등등)를 공유 메모리(130)에 저장할 수 있다. 렌더링부(140)는 공유 메모리(130)에 저장된 제1 프레임과 연관된 데이터를 추출하여, 제1 렌더링 데이터를 생성할 수 있다. 렌더링부(140)는 3차원 가속기로, SRP(Samsung Reconfigurable Processor)를 사용하는 방식일 수 있다.
이때, 처리부(120)는 1 비트(bit) 플래그(flag)로 컨텍스트 데이터와 셰이더 컨텍스트 데이터가 변경되었는지 여부를 공유 메모리(130)에 저장 및 저장된 데이터를 가져갈 코어에게 알려줄 수 있다.
또한, 처리부(120)는 제2 프레임(glDraw* commands (n+1))와 연관된 데이터(Surface, Config, Context[1](430, 제2 컨텍스트 데이터), Shader Context[1](440, 제2 셰이더 컨텍스트 데이터) 등등)를 공유 메모리(130)에 저장할 수 있다. 이때, 처리부(120)는 제1 프레임과 제2 프레임 간의 동일성 여부에 따라, 공유 메모리(130)에 제2 컨텍스트 데이터 대신 제1 컨텍스트 데이터의 주소정보를 저장하거나, 제2 셰이더 컨텍스트 데이터 대신 제1 셰이더 컨텍스트 데이터의 주소정보를 저장할 수 있다. 렌더링부(140)는 공유 메모리(130)에 저장된 제2 프레임과 연관된 데이터를 추출하여, 제2 렌더링 데이터를 생성할 수 있다.
도 5는 컨텍스트 데이터를 처리하는 일례를 도시한 도면이다.
도 5을 참고하면, 우측에는 제1 프레임에 포함된 제1 컨텍스트 데이터(glDraw* commands(n)의 Context)와 제2 프레임에 포함된 제2 컨텍스트 데이터(glDraw* commands(n+1)의 Context)의 일부가 동일한 경우, 공유 메모리(130)에 저장되는 일례를 나태낸 것이다. 즉, 제1 컨텍스트 데이터와 제2 컨텍스트 데이터의 'Texturecoordinate array 1'가 동일하지만, 종래에는 동일한 'Texturecoordinate array 1'를 재사용하지 않고, 'Texturecoordinate array 2'를 공유 메모리(130)에 저장하는 것을 알 수 있다.
좌측에는 본 발명을 적용한 것으로, 제1 컨텍스트 데이터와 제2 컨텍스트 데이터의 'Texturecoordinate array 1'가 동일한 경우, 데이터 처리 장치(100)는 'Texturecoordinate array 2'를 공유 메모리(130)에 저장하지 않고, 'Texturecoordinate array 2' 대신에 'Texturecoordinate array 1'를 재사용함으로써, 렌더링부(140)의 렌더링 시간을 줄일 수 있다.
도 6은 데이터 처리 시간이 감소되는 일례를 도시한 도면이다.
도 6을 참고하면, 버텍스 데이터와 텍스처 데이터가 동일한 경우, '3D 그래픽 가속기(GPU)'에서 버텍스 데이터와 텍스처 데이터를 처리하는 시간을 줄일 수 있다(610).
또한, 620을 참고하면, 2개의 glDraw* 커맨드가 호출되었을 때, '3D 그래픽 가속기(GPU)'에서 렌더링 처리 시간을 단축시킬 수 있다.
도 7은 데이터 처리 시간이 감소되는 다른 일례를 도시한 도면이다.
도 7을 참고하면, 본 발명의 데이터 처리 장치(100)는 처리구간(710 내지 740)에서 데이터 처리 시간을 감소할 수 있다. 예를 들어, 애플리케이션 'simple texture'을 구동하는 데이터 처리 장치(100)에서 glDraw* 커맨드가 2개 호출되면, 107 cycle 수만큼 처리 시간을 줄일 수 있다. 또한, 애플리케이션 'Anim samurai'을 구동하는 데이터 처리 장치(100)에서 glDraw* 커맨드가 66개 호출되면, 6,955 cycle 수만큼 처리 시간을 줄일 수 있다. 또한, 애플리케이션 'Taiji'을 구동하는 데이터 처리 장치(100)에서 glDraw* 커맨드가 128개 호출되면, 13,589 cycle 수만큼 처리 시간을 줄일 수 있다.
도 8은 컨텍스트 데이터와 연관된 데이터 구조를 도시한 도면이다.
도 8을 참고하면, 데이터 처리 장치(100)는 제1, 제2 프레임에 포함된 각각의 제1, 제2 컨텍스트 데이터의 값을 비교하여, 동일한 경우, 주소정보를 저장하고, 동일하지 않은 경우, 제2 컨텍스트 데이터의 값을 공유 메모리(130)에 저장할 수 있다. 예를 들어, 제2 버텍스 데이터(Vertex Array)의 값이 동일한 경우, 데이터 처리 장치(100)는 제2 버텍스 데이터의 값이 저장된 주소정보(Context.m_VertexAttribArray[indx].pointer = ptr)를 공유 메모리에 저장할 수 있다.
도 9는 셰이더 컨텍스트 데이터와 연관된 데이터 구조를 도시한 도면이다.
도 9를 참고하면, 데이터 처리 장치(100)는 제1, 제2 프레임에 포함된 각각의 제1, 제2 셰이더 컨텍스트 데이터의 값을 비교하여, 동일한 경우, 주소정보를 저장하고, 동일하지 않은 경우, 제2 셰이더 컨텍스트 데이터의 값을 공유 메모리(130)에 저장할 수 있다. 예를 들어, 제2 셰이더 컨텍스트 데이터의 제2 셰이더 리스트(ShaderList)의 값이 동일한 경우, 데이터 처리 장치(100)는 제2 셰이더 리스트의 값이 저장된 주소정보(xx)를 공유 메모리에 저장할 수 있다.
도 10은 본 발명의 다른 일실시예에 따른 데이터 처리 방법의 순서를 도시한 흐름도이다.
도 10을 참조하면, 단계 1010에서, 데이터 처리 장치(100)는 프레임 내에 객체를 순서대로 입력받는다.
단계 1020에서, 데이터 처리 장치(100)는 상기 입력된 객체가 첫번째 객체(제1 객체)인지 판단할 수 있다. 첫번째 객체인 경우, 단계 1030에서, 데이터 처리 장치(100)는 제1 객체를 공유 메모리(130)에 저장할 수 있다. 즉, 데이터 처리 장치(100)는 상기 제1 객체를 구성하는 데이터들을 공유 메모리(130)에 저장할 수 있다. 이때는, 단계 1010에서 제1 객체가 입력된 것으로 해석될 수 있다.
첫번째 객체가 아닌 경우, 단계 1040에서, 데이터 처리 장치(100)는 제1 객체와 제2 객체를 비교하여 상기 제1 객체와 상기 제2 객체가 동일한지 여부를 판단한다. 이때는, 단계 1010에서 제2 객체가 입력된 것으로 해석될 수 있다.
제1 객체와 제2 객체가 다른 경우, 단계 1050에서, 데이터 처리 장치(100)는 제2 객체를 공유 메모리(130)에 저장한다. 즉, 데이터 처리 장치(100)는 상기 제2 객체에 관한 데이터들을 공유 메모리(130)에 저장할 수 있다. 이 경우, 렌더링부(140)는 상기 제2 객체에 관한 데이터들을 이용하여 상기 제2 객체와 연관된 렌더링 데이터를 생성할 수 있다.
제1 객체와 제2 객체가 동일한 경우, 단계 1060에서, 데이터 처리 장치(100)는 제1 객체와 연관된 주소정보를 공유 메모리(130)에 저장한다. 즉, 데이터 처리 장치(100)는 상기 제1 객체에 관한 데이터들을 저장한 주소정보를 공유 메모리(130)에 저장할 수 있다. 이 경우, 렌더링부(140)는 상기 주소정보에 저장된 제1 객체를 이용하여 상기 제2 객체와 연관된 렌더링 데이터를 생성할 수 있다.
본 발명의 실시예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 데이터 처리 장치
110: 인터페이스부
120: 처리부
130: 공유 메모리
140: 렌더링부
110: 인터페이스부
120: 처리부
130: 공유 메모리
140: 렌더링부
Claims (21)
- 제1 프레임과, 상기 제1 프레임과 시간적으로 상이한 제2 프레임을 입력받는 인터페이스부;
상기 제1 프레임과 상기 제2 프레임을 비교하여, 상기 제1 프레임에 포함된 제1 컨텍스트 데이터와, 상기 제2 프레임에 포함된 제2 컨텍스트 데이터가 동일한지 여부를 판단하는 처리부; 및
상기 제2 프레임에 대응하여 상기 제2 컨텍스트 데이터를 저장하되, 상기 제1 컨텍스트 데이터와 동일한 것으로 판단되는, 상기 제2 컨텍스트 데이터의 일부에 대해 상기 제1 컨텍스트 데이터와 연관된 주소정보를 저장하는 공유 메모리
를 포함하는, 데이터 처리 장치. - 삭제
- 제1항에 있어서,
상기 공유 메모리는,
상기 제2 컨텍스트 데이터의 일부에 대해, 동일한 것으로 판단되는, 상기 제1 컨텍스트 데이터에 포함되는 속성(Attribute) 데이터, 텍스처(Texture) 데이터, 및 렌더 상태(Render state)값 중 적어도 하나를 식별하기 위한 주소정보를 저장하는
데이터 처리 장치. - 제1항에 있어서,
상기 공유 메모리에 저장된 상기 제2 컨텍스트 데이터와, 상기 주소 정보에 의해 식별되는 제1 컨텍스트 데이터를 이용하여 렌더링 데이터를 생성하는 렌더링부
를 더 포함하는, 데이터 처리 장치. - 제1항에 있어서,
상기 제1, 제2 프레임은 셰이더 컨텍스트(Shader Context) 데이터를 더 포함하고,
상기 처리부는,
상기 제1 프레임에 포함된 제1 셰이더 컨텍스트 데이터와, 상기 제2 프레임에 포함된 제2 셰이더 컨텍스트 데이터를 비교하고,
상기 공유 메모리는,
상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 동일한 경우, 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보를 저장하고, 상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 셰이더 컨텍스트 데이터를 저장하는
데이터 처리 장치. - 프레임 내에, 제1 객체와, 상기 제1 객체와 시간적으로 상이한 제2 객체를 입력받는 인터페이스부;
상기 제1 객체와 상기 제2 객체를 비교하여, 상기 제1 객체에 포함된 제1 컨텍스트 데이터와, 상기 제2 객체에 포함된 제2 컨텍스트 데이터가 동일한지 여부를 판단하는 처리부; 및
상기 제2 객체에 대응하여 상기 제2 컨텍스트 데이터를 저장하되, 상기 제1 객체와 동일한 것으로 판단되는, 상기 제2 컨텍스트 데이터의 일부에 대해 상기 제1 컨텍스트 데이터와 연관된 주소정보를 저장하는 공유 메모리
를 포함하는, 데이터 처리 장치. - 제6항에 있어서,
상기 처리부는,
상기 제1 객체와 연관된 제1 서브객체와 상기 제1 서브객체와 시간적으로 상이한 제2 서브객체를 비교하여, 상기 제1 서브객체와 상기 제2 서브객체가 동일한지 여부를 판단하고,
상기 공유 메모리는,
상기 판단결과, 상기 제1 서브객체와 상기 제2 서브객체가 동일한 경우, 상기 제1 서브객체와 연관된 주소정보를 저장하고, 상기 제1 서브객체와 상기 제2 서브객체가 동일하지 않은 경우, 상기 제2 서브객체를 저장하는, 데이터 처리 장치. - 삭제
- 제6항에 있어서,
상기 공유 메모리는,
상기 제2 컨텍스트 데이터의 일부에 대해, 동일한 것으로 판단되는, 상기 제1 컨텍스트 데이터에 포함되는 속성 데이터, 텍스처 데이터, 및 렌더 상태값 중 적어도 하나를 식별하기 위한 주소정보를 저장하는
데이터 처리 장치. - 제6항에 있어서,
상기 제1 객체와 상기 제2 객체는 셰이더 컨텍스트 데이터를 더 포함하고,
상기 처리부는,
상기 제1 객체 포함된 제1 셰이더 컨텍스트 데이터와, 상기 제2 객체에 포함된 제2 셰이더 컨텍스트 데이터를 비교하고,
상기 공유 메모리는,
상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 동일한 경우, 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보를 저장하고, 상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 셰이더 컨텍스트 데이터를 저장하는
데이터 처리 장치. - 제1 프레임과, 상기 제1 프레임과 시간적으로 상이한 제2 프레임을 입력받는 단계;
상기 제1 프레임과 상기 제2 프레임을 비교하여, 상기 제1 프레임에 포함된 제1 컨텍스트 데이터와, 상기 제2 프레임에 포함된 제2 컨텍스트 데이터가 동일한지 여부를 판단하는 단계; 및
상기 제2 프레임에 대응하여 상기 제2 컨텍스트 데이터를 저장하되, 상기 제1 컨텍스트 데이터와 동일한 것으로 판단되는, 상기 제2 컨텍스트 데이터의 일부에 대해 상기 제1 컨텍스트 데이터와 연관된 주소정보를 저장하는 단계
를 포함하는, 데이터 처리 방법. - 삭제
- 삭제
- 제11항에 있어서,
상기 저장하는 단계는,
상기 제2 컨텍스트 데이터의 일부에 대해, 동일한 것으로 판단되는, 상기 제1 컨텍스트 데이터에 포함되는 속성 데이터, 텍스처 데이터, 및 렌더 상태값 중 적어도 하나를 식별하기 위한 주소정보를 저장하는 단계
를 포함하는, 데이터 처리 방법. - 제11항에 있어서,
저장된 상기 제2 컨텍스트 데이터와, 상기 주소 정보에 의해 식별되는 제1 컨텍스트 데이터를 이용하여 렌더링 데이터를 생성하는 단계
를 더 포함하는, 데이터 처리 방법. - 제11항에 있어서,
상기 제1 프레임에 포함된 제1 셰이더 컨텍스트 데이터와, 상기 제2 프레임에 포함된 제2 셰이더 컨텍스트 데이터를 비교하는 단계;
상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 가 동일한 경우, 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보를 저장하는 단계; 및
상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 셰이더 컨텍스트 데이터를 저장하는 단계
를 더 포함하는, 데이터 처리 방법. - 프레임 내에, 제1 객체와, 상기 제1 객체와 시간적으로 상이한 제2 객체를 입력받는 단계;
상기 제1 객체와 상기 제2 객체를 비교하여, 상기 제1 객체에 포함된 제1 컨텍스트 데이터와, 상기 제2 객체에 포함된 제2 컨텍스트 데이터가 동일한지 여부를 판단하는 단계; 및
상기 제2 객체에 대응하여 상기 제2 컨텍스트 데이터를 저장하되, 상기 제1 객체와 동일한 것으로 판단되는, 상기 제2 컨텍스트 데이터의 일부에 대해 상기 제1 컨텍스트 데이터와 연관된 주소정보를 저장하는 단계
를 포함하는, 데이터 처리 방법. - 삭제
- 제17항에 있어서,
상기 제1 객체와 연관된 제1 서브객체와 상기 제1 서브객체와 시간적으로 상이한 제2 서브객체를 비교하여, 상기 제1 서브객체와 상기 제2 서브객체가 동일한지 여부를 판단하는 단계; 및
상기 판단결과, 상기 제1 서브객체와 상기 제2 서브객체가 동일한 경우, 상기 제1 서브객체와 연관된 주소정보를 저장하거나, 또는 상기 제1 서브객체와 상기 제2 서브객체가 동일하지 않은 경우, 상기 제2 서브객체를 저장하는 단계
를 더 포함하는, 데이터 처리 방법. - 제17항에 있어서,
상기 저장하는 단계는,
상기 제2 컨텍스트 데이터의 일부에 대해, 동일한 것으로 판단되는, 상기 제1 컨텍스트 데이터에 포함되는 속성 데이터, 텍스처 데이터, 및 렌더 상태값 중 적어도 하나를 식별하기 위한 주소정보를 저장하는 단계
를 포함하는 데이터 처리 방법. - 제17항에 있어서,
상기 제1 객체와 상기 제2 객체는 셰이더 컨텍스트 데이터를 더 포함하고,
상기 제1 객체 포함된 제1 셰이더 컨텍스트 데이터와, 상기 제2 객체에 포함된 제2 셰이더 컨텍스트 데이터를 비교하는 단계;
상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 동일한 경우, 상기 제1 셰이더 컨텍스트 데이터와 연관된 주소정보를 저장하는 단계; 및
상기 제1 셰이더 컨텍스트 데이터와 상기 제2 셰이더 컨텍스트 데이터가 동일하지 않은 경우, 상기 제2 셰이더 컨텍스트 데이터를 저장하는 단계
를 더 포함하는 데이터 처리 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100120375A KR101670958B1 (ko) | 2010-11-30 | 2010-11-30 | 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 |
US13/308,007 US20120133660A1 (en) | 2010-11-30 | 2011-11-30 | Data processing method and apparatus in heterogeneous multi-core environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100120375A KR101670958B1 (ko) | 2010-11-30 | 2010-11-30 | 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120058867A KR20120058867A (ko) | 2012-06-08 |
KR101670958B1 true KR101670958B1 (ko) | 2016-11-01 |
Family
ID=46126309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100120375A KR101670958B1 (ko) | 2010-11-30 | 2010-11-30 | 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120133660A1 (ko) |
KR (1) | KR101670958B1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9075903B2 (en) | 2010-11-26 | 2015-07-07 | Hologic, Inc. | User interface for medical image review workstation |
US20130152108A1 (en) * | 2011-12-13 | 2013-06-13 | Ati Technologies Ulc | Method and apparatus for video processing |
KR102116976B1 (ko) * | 2013-09-04 | 2020-05-29 | 삼성전자 주식회사 | 렌더링 방법 및 장치 |
GB2531358B (en) | 2014-10-17 | 2019-03-27 | Advanced Risc Mach Ltd | Method of and apparatus for processing a frame |
KR102235803B1 (ko) * | 2017-03-31 | 2021-04-06 | 삼성전자주식회사 | 반도체 장치 |
US10649771B2 (en) | 2017-03-31 | 2020-05-12 | Samsung Electronics Co., Ltd. | Semiconductor device |
US10672367B2 (en) * | 2017-07-03 | 2020-06-02 | Arm Limited | Providing data to a display in data processing systems |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090033670A1 (en) | 2007-07-31 | 2009-02-05 | Hochmuth Roland M | Providing pixels from an update buffer |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4541811B2 (ja) * | 2004-09-13 | 2010-09-08 | キヤノン株式会社 | 画像処理装置、画像処理方法およびプログラム |
JP2011028689A (ja) * | 2009-07-29 | 2011-02-10 | Sony Corp | 動画抽出装置、プログラム、および動画抽出方法 |
GB0916924D0 (en) * | 2009-09-25 | 2009-11-11 | Advanced Risc Mach Ltd | Graphics processing systems |
US9058685B2 (en) * | 2010-03-11 | 2015-06-16 | Broadcom Corporation | Method and system for controlling a 3D processor using a control list in memory |
JP2012203458A (ja) * | 2011-03-23 | 2012-10-22 | Fuji Xerox Co Ltd | 画像処理装置及びプログラム |
US8847968B2 (en) * | 2011-07-12 | 2014-09-30 | Qualcomm Incorporated | Displaying static images |
US8786716B2 (en) * | 2011-08-15 | 2014-07-22 | Apple Inc. | Rolling shutter reduction based on motion sensors |
-
2010
- 2010-11-30 KR KR1020100120375A patent/KR101670958B1/ko active IP Right Grant
-
2011
- 2011-11-30 US US13/308,007 patent/US20120133660A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090033670A1 (en) | 2007-07-31 | 2009-02-05 | Hochmuth Roland M | Providing pixels from an update buffer |
JP2010535382A (ja) | 2007-07-31 | 2010-11-18 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | ピクセルをアップデートバッファから供給する方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20120058867A (ko) | 2012-06-08 |
US20120133660A1 (en) | 2012-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022116759A1 (zh) | 图像渲染方法、装置、计算机设备和存储介质 | |
CN106575228B (zh) | 图形处理中的渲染目标命令重新排序 | |
KR101670958B1 (ko) | 이기종 멀티코어 환경에서의 데이터 처리 방법 및 장치 | |
JP5960368B2 (ja) | ビジビリティ情報を用いたグラフィックスデータのレンダリング | |
KR101563098B1 (ko) | 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛 | |
US10607400B2 (en) | Graphics processing systems using a vertex shader to render plural images | |
US7463261B1 (en) | Three-dimensional image compositing on a GPU utilizing multiple transformations | |
JP2022091849A (ja) | 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット | |
US9147277B2 (en) | Systems and methods for portable animation rigs | |
KR102442488B1 (ko) | 그래픽 처리 시스템 및 그래픽 프로세서 | |
KR20210119899A (ko) | 그래픽 프로세싱 | |
CN113076152B (zh) | 渲染方法及装置、电子设备和计算机可读存储介质 | |
US9704290B2 (en) | Deep image identifiers | |
US20240062453A1 (en) | Generation of tight world space bounding regions | |
US20230316626A1 (en) | Image rendering method and apparatus, computer device, and computer-readable storage medium | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
US10062140B2 (en) | Graphics processing systems | |
CN104156999A (zh) | 一种三维场景渲染方法 | |
CN115345769A (zh) | 经由基于物理的渲染引擎的加速处理 | |
CN115222869A (zh) | 分布式渲染方法及装置 | |
US10832465B2 (en) | Use of workgroups in pixel shader | |
CN107316336A (zh) | 基于交互技术的vr实时渲染系统 | |
US20240087078A1 (en) | Two-level primitive batch binning with hardware state compression | |
CN115345770A (zh) | 经由基于物理的渲染引擎的加速处理 | |
CN118799471A (zh) | 一种bim轻量化引擎的材质属性存储方法、装置及设备 |
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 | ||
FPAY | Annual fee payment |
Payment date: 20190910 Year of fee payment: 4 |