KR20150069617A - 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템 - Google Patents

그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템 Download PDF

Info

Publication number
KR20150069617A
KR20150069617A KR1020130155734A KR20130155734A KR20150069617A KR 20150069617 A KR20150069617 A KR 20150069617A KR 1020130155734 A KR1020130155734 A KR 1020130155734A KR 20130155734 A KR20130155734 A KR 20130155734A KR 20150069617 A KR20150069617 A KR 20150069617A
Authority
KR
South Korea
Prior art keywords
primitive
information
position information
visibility
triangle
Prior art date
Application number
KR1020130155734A
Other languages
English (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 KR1020130155734A priority Critical patent/KR20150069617A/ko
Priority to US14/550,099 priority patent/US20150170406A1/en
Priority to DE102014117055.5A priority patent/DE102014117055A1/de
Priority to CN201410771945.3A priority patent/CN104715443A/zh
Publication of KR20150069617A publication Critical patent/KR20150069617A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

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

Abstract

본 발명의 실시예에 따른 그래픽 프로세싱 유닛은 제1 프리미티브의 포지션 정보로부터 상기 제1 프리미티브의 트라이앵글 상관 정보(triangle correlation information)를 생성하는 프리미티브 어셈블러, 제2 프리미티브의 포지션 정보와 상기 제1 프리미티브의 상기 트라이앵글 상관 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고 상기 비저빌리티 테스트의 결과에 따라 래스터라이저의 동작 이전에 제2 프리미티브를 제거하는 비저빌리티 테스터를 포함한다.

Description

그래픽 프로세싱 유닛, 이를 포함하는 SOC, 및 이를 포함하는 그래픽 프로세싱 시스템{A GRAPHIC PROCESSING UNIT, A SYSTEM ON CHIP(SOC) INCLUDING THE SAME, AND A GRAPHIC PROCESSING SYSTEM INCLUDING THE SAME}
본 발명의 개념에 따른 실시예는 그래픽 프로세싱 유닛, 이를 포함하는 SOC, 및 이를 포함하는 그래픽 프로세싱 시스템에 관한 것으로, 보다 상세하게는 연산량과 전력 소모를 줄일 수 있는 그래픽 프로세싱 유닛, 및 이의 동작 방법에 관한 것이다.
GPU(graphic processing unit)는 디스플레이에 디스플레이될 대상(object)의 이미지를 렌더링(rendering)한다. 최근에, 상기 GPU는 상기 대상의 이미지를 렌더링하는 과정 중에 상기 대상의 이미지를 보다 세밀하게 표현하기 위해 테셀레이션 동작(tessellation operation) 및 지오메트리 쉐이딩(geometry shading)을 수행한다.
상기 GPU는 상기 테셀레이션 동작 및 상기 지오메트리 쉐이딩을 통해 상기 대상의 이미지를 위한 복수의프리미티브들(primitives)을 생성하고, 상기 복수의 프리미티브들에 대해 추가적인 연산을 수행한다.
상기 GPU의 상기 추가적인 연산은 상당한 연산량이 소요되어 큰 전력 소모를 요구한다.
본 발명이 이루고자 하는 기술적 과제는 프리미티브들의 일부 정보를 이용해 보이지 않는 프리미티브를 미리 제거하여 연산량과 전력 소모를 줄일 수 있는 그래픽 프로세싱 유닛, 이를 포함하는 SOC, 및 이를 포함하는 그래픽 프로세싱 시스템을 제공함에 있다.
본 발명의 실시예에 따른 그래픽 프로세싱 유닛은 제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler) 및 상기 제1 프리미티브의 트라이앵글 상관 정보(triangle correlation information)와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester, 161)를 포함한다.
실시예에 따라 상기 제1 프리미티브의 상기 포지션 정보는 상기 제1 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함하고, 상기 제2 프리미티브의 상기 포지션 정보는 상기 제2 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함한다.
실시예에 따라 상기 비저빌리티 테스터는 상기 제2 프리미티브의 상기 포지션 정보 및 상기 제1 프리미티브의 상기 포지션 정보와 상기 트라이앵글 상관 정보에 기초하여 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는지 여부를 판단하고, 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는 경우 상기 제1 프리미티브와 상기 제2 프리미티브에 포함된 버텍스들 각각의 상기 Z 좌표값을 비교한다.
실시예에 따라 상기 비저빌리티 테스트의 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보를 비저빌리티 버퍼(visibility buffer)에 저장할지 여부를 결정하는 업데이트 결정 유닛(update determination unit) 및 상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 업데이트 유닛을 더 포함한다.
실시예에 따라 상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하여 상기 비저빌리티 버퍼 또는 상기 업데이트 유닛으로 전송하는 트라이앵글 셋업 유닛 (triangle setup unit)을 더 포함한다.
실시예에 따라 상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하는 초기 트라이앵글 셋업 유닛(initial triangle setup unit)을 더 포함한다.
실시예에 따라 상기 제2 프리미티브의 상기 트라이앵글 상관 정보를 수신하여 상기 제2 프리미티브의 트라이앵글 셋업 정보(triangle setup information)를 생성하는 트라이앵글 셋업 유닛(triangle setup unit)을 더 포함한다.
실시예에 따라 상기 업데이트 결정 유닛은 상기 제2 프리미티브의 면적을 임계 면적과 비교하고, 상기 제2 프리미티브의 X 축 길이를 임계 X 축 길이와 비교하고, 상기 제2 프리미티브의 Y 축 길이를 임계 Y 축 길이와 비교한다.
실시예에 따라 상기 업데이트 유닛(update unit)은 상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장할 경우, 스크린 공간(screen space)를 여러 영역들로 나눌지 여부, 상기 제2 프리미티브와 상기 여러 영역들의 포함 관계 및 상기 여러 영역들의 계층 관계 중 적어도 하나에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장한다.
본 발명의 실시예에 따른 그래픽 프로세싱 유닛은 제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler), 비저빌리티 버퍼(visibility buffer)에 저장된 상기 제1 프리미티브의 트라이앵글 상관 정보와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester), 상기 비저빌리티 테스트의 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보를 상기 비저빌리티 버퍼에 저장할지 여부를 결정하는 업데이트 결정 유닛(update determination unit) 및 상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 업데이트 유닛을 포함한다.
실시예에 따라 상기 제1 프리미티브의 상기 포지션 정보는 상기 제1 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함하고, 상기 제2 프리미티브의 상기 포지션 정보는 상기 제2 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함한다.
실시예에 따라 상기 비저빌리티 테스터는 상기 제2 프리미티브의 상기 포지션 정보 및 상기 제1 프리미티브의 상기 포지션 정보와 상기 트라이앵글 상관 정보에 기초하여 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는지 여부를 판단하고, 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는 경우 상기 제1 프리미티브와 상기 제2 프리미티브에 포함된 버텍스들 각각의 상기 Z 좌표값을 비교한다.
실시예에 따라 상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하여 상기 비저빌리티 버퍼 또는 상기 업데이트 유닛로 전송하는 트라이앵글 셋업 유닛 (triangle setup unit)을 더 포함한다.
실시예에 따라 상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하는 초기 트라이앵글 셋업 유닛(initial triangle setup unit)을 더 포함한다.
실시예에 따라 상기 제2 프리미티브의 상기 트라이앵글 상관 정보를 수신하여 상기 제2 프리미티브의 트라이앵글 셋업 정보(triangle setup information)를 생성하는 트라이앵글 셋업 유닛(triangle setup unit)을 더 포함한다.
실시예에 따라 상기 업데이트 결정 유닛은 상기 제2 프리미티브의 면적을 임계 면적과 비교하고, 상기 제2 프리미티브의 X 축 길이를 임계 X 축 길이와 비교하고, 상기 제2 프리미티브의 Y 축 길이를 임계 Y 축 길이와 비교한다.
실시예에 따라 상기 업데이트 유닛(update unit)은 상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장할 경우, 스크린 공간(screen space)를 여러 영역들로 나눌지 여부, 상기 제2 프리미티브와 상기 여러 영역들의 포함 관계 및 상기 여러 영역들의 계층 관계 중 적어도 하나에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장한다.
본 발명의 실시예에 따른 SOC(System On Chip)는 보이는 프리미티브로 판단된 제1 프리미티브들 각각의 포지션 정보와 트라이앵글 상관 정보를 저장하는 비저빌리티 버퍼를 포함하는 메모리와 데이터를 송수신하는 메모리 인터페이스, 상기 메모리 인터페이스로부터 수신된 데이터를 처리하고 처리된 데이터를 출력하는 그래픽 프로세싱 유닛 및 상기 처리된 데이터를 디스플레이로 전송하는 디스플레이 컨트롤러를 포함하며, 상기 그래픽 프로세싱 유닛은 제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler) 및 상기 제1 프리미티브의 트라이앵글 상관 정보와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester)를 포함한다.
실시예에 따라 상기 제1 프리미티브의 상기 포지션 정보는 상기 제1 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함하고, 상기 제2 프리미티브의 상기 포지션 정보는 상기 제2 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함한다.
실시예에 따라 상기 비저빌리티 테스터는 상기 제2 프리미티브의 상기 포지션 정보 및 상기 제1 프리미티브의 상기 포지션 정보와 상기 트라이앵글 상관 정보에 기초하여 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는지 여부를 판단하고, 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는 경우 상기 제1 프리미티브와 상기 제2 프리미티브에 포함된 버텍스들 각각의 상기 Z 좌표값을 비교한다.
실시예에 따라 상기 비저빌리티 테스트의 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보를 비저빌리티 버퍼(visibility buffer)에 저장할지 여부를 결정하는 업데이트 결정 유닛 (update determination unit) 및 상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 업데이트 유닛을 더 포함한다.
실시예에 따라 상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하여 상기 비저빌리티 버퍼 또는 상기 업데이트 유닛으로 전송하는 트라이앵글 셋업 유닛 (triangle setup unit)을 더 포함한다.
실시예에 따라 상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하는 초기 트라이앵글 셋업 유닛(initial triangle setup unit)을 더 포함한다.
실시예에 따라 상기 제2 프리미티브의 상기 트라이앵글 상관 정보를 수신하여 상기 제2 프리미티브의 트라이앵글 셋업 정보(triangle setup information)를 생성하는 트라이앵글 셋업 유닛(triangle setup unit)을 더 포함한다.
본 발명의 실시예에 따른 그래픽 프로세싱 시스템은 보이는 프리미티브로 판단된 제1 프리미티브들 각각의 포지션 정보와 트라이앵글 상관 정보를 저장하는 비저빌리티 버퍼를 포함하는 메모리, 상기 메모리로부터 수신된 데이터를 처리하고 처리된 데이터를 출력하는 데이터 처리 장치 및 상기 처리된 데이터를 수신하여 상기 처리된 데이터에 대응되는 이미지를 디스플레이하는 디스플레이를 포함하며, 상기 데이터 처리 장치는 제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler) 및 상기 제1 프리미티브의 트라이앵글 상관 정보와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester)를 포함한다.
본 발명의 실시예에 따른 그래픽 프로세싱 유닛, 이를 포함하는 SOC, 및 이를 포함하는 그래픽 프로세싱 시스템에 의하면, 프리미티브의 포지션이 정해진 후 미리 저장된 오클루더의 트라이앵글 상관 정보에 기초해 상기 프리미티브를 선택적으로 제거함으로써 불필요한 연산량 및 전력 소모를 감소시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 그래픽 프로세싱 유닛을 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 메모리의 개략적인 블록도를 나타낸다.
도 3은 도 1에 도시된 그래픽 프로세싱 유닛의 개략적인 블록도이다.
도 4는 도 3에 도시된 프리미티브 컬링 유닛의 일 실시예를 나타낸 블록도이다.
도 5는 도 3에 도시된 프리미티브 컬링 유닛의 다른 실시예를 나타낸 블록도이다.
도 6은 도 4와 도 5에 도시된 비저빌리티 테스터의 동작을 설명하기 위한 도면이다.
도 7은 도 4와 도 5에 도시된 업데이트 결정 유닛의 동작을 설명하기 위한 도면이다.
도 8은 도 4와 도 5에 도시된 업데이트 유닛의 동작의 일 실시예를 설명하기 위한 도면이다.
도 9는 도 4와 도 5에 도시된 업데이트 유닛의 동작의 다른 실시예를 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법을 나타낸 흐름도이다.
도 11은 본 발명의 다른 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법을 나타낸 흐름도이다.
도 12는 본 발명의 또 다른 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법을 나타낸 흐름도이다.
도 13은 도 10 내지 도 12에 도시된 비저빌리티 테스트를 수행하는 단계를 상세히 나타낸 흐름도이다.
도 14는 도 11과 도 12에 도시된 비저빌리티 버퍼에 저장할지 여부를 결정하는 단계를 상세히 나타낸 흐름도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 그래픽 프로세싱 유닛을 포함하는 데이터 처리 시스템의 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(10)은 데이터 처리 장치(50), 디스플레이(200) 및 메모리(300)를 포함할 수 있다.
데이터 처리 시스템(10)은 PC(personal computer) 또는 휴대용 전자 장치(또는 모바일 기기), 또는 이미지 데이터를 디스플레이할 수 있는 디스플레이(300)를 포함하는 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 또는 e-북(e-book)으로 구현될 수 있다.
데이터 처리 장치(50)는 디스플레이(200) 및/또는 메모리(300)를 제어할 수 있다. 즉, 데이터 처리 장치(50)는 데이터 처리 시스템(10)의 동작을 전반적으로 제어할 수 있다.
데이터 처리 장치(50)는 마더보드(motherboard)와 같은 인쇄 회로 기판(printed circuit board(PCB)), 집적 회로(integrated circuit(IC)), 또는 SoC(system on chip)로 구현될 수 있다. 예컨대, 데이터 처리 장치(50)는 애플리케이션 프로세서(application processor)일 수 있다.
데이터 처리 장치(50)는 CPU(Central Processing Unit; 60), ROM(Read Only Memory; 70), RAM(Random Access Memory; 80), 디스플레이 컨트롤러(display controller; 90), 메모리 인터페이스(memory interface; 95) 및 그래픽 프로세싱 유닛(Graphic Processing Unit(GPU); 100)을 포함할 수 있다.
CPU(60)는 데이터 처리 장치(50)의 전반적인 동작을 제어할 수 있다. 예컨대, CPU(60)는 각 구성요소(70, 80, 90, 95, 및 100)의 동작을 제어할 수 있다. 즉, CPU(60)는 버스(55)를 통하여 각 구성요소(70, 80, 90, 95, 및 100)와 통신할 수 있다.
또한, CPU(60)는 프로그램 명령들(program instructions)을 읽고 실행할 수 있다.
예컨대, 메모리(70, 80 또는 300)에 저장된 프로그램들 및/또는 데이터는 CPU(60)의 제어에 따라 CPU(60) 내부의 메모리, 예컨대 캐시 메모리(미도시)로 로드(load)될 수 있다.
실시 예에 따라, CPU(60)는 멀티-코어(multi-core)로 구현될 수 있다. 상기 멀티-코어는 두 개 또는 그 이상의 독립적인 코어들(cores)을 갖는 컴퓨팅 컴포넌트(computing component)일 수 있다.
ROM(70)은 프로그램들 및/또는 데이터를 영구적으로 저장할 수 있다.
실시 예에 따라, ROM(70)은 EPROM(erasable programmable read-only memory) 또는 EEPROM(electrically erasable programmable read-only memory)으로 구현될 수 있다.
RAM(80)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(70 또는 300)에 저장된 프로그램들 및/또는 데이터는 CPU(60)의 제어, GPU(100)의 제어, 또는 ROM(70)에 저장된 부팅 코드(booting code)에 따라 RAM(80)에 일시적으로 저장될 수 있다.
실시 예에 따라, RAM(80)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
GPU(100)는 CPU(60)의 부하를 감소시키기 위해 그래픽 처리와 관련된 동작을 수행할 수 있다.
디스플레이 컨트롤러(90)는 디스플레이(200)의 동작을 제어할 수 있다.
예컨대, 디스플레이 컨트롤러(90)는 메모리(300)로부터 출력된 이미지 데이터, 예컨대 스틸 이미지(still image) 데이터, 무빙 이미지(moving image) 데이터, 3차원 이미지(3D image), 또는 3차원 입체 이미지(stereoscopic 3D image) 데이터를 디스플레이(200)로 전송할 수 있다.
메모리 인터페이스(95)는 메모리(300)를 액세스할 수 있는 메모리 컨트롤러의 기능을 수행할 수 있다. 예컨대, 데이터 처리 장치(50)와 메모리(300)는 메모리 인터페이스(95)를 통하여 서로 통신할 수 있다. 즉, 데이터 처리 장치(50)와 메모리(300)는 메모리 인터페이스(95)를 통하여 서로 데이터를 주고받을 수 있다.
디스플레이(200)는 디스플레이 컨트롤러(90)로부터 출력된 상기 이미지 데이터에 대응되는 이미지를 디스플레이할 수 있다.
예컨대, 디스플레이(200)는 터치스크린, LCD(liquid crystal display), TFT-LCD(thin film transistor-liquid crystal display), LED(liquid emitting diode) 디스플레이, OLED(organic LED) 디스플레이, AMOLED (active matrix OLED) 디스플레이 또는 플렉시블(flexible) 디스플레이로 구현될 수 있다.
메모리(300)는 CPU(60) 및/또는 GPU(100)에 의하여 처리될 프로그램들 및/또는 데이터(또는 이미지 데이터)를 저장할 수 있다.
메모리(300)는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
상기 휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM (static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
상기 불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive bridging RAM(CBRAM), FeRAM (Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM: RRAM), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리 (holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
상기 불휘발성 메모리 장치는 플래시-기반(flash-based) 메모리 장치, 예컨대 SD(Secure Digital) 카드, MMC(multimedia card), eMMC(embedded-MMC), USB (Universal Serial Bus) 플래시 드라이브, 또는 UFS(Universal Flash Storage)로 구현될 수 있다.
또한, 상기 불휘발성 메모리 장치는 하드디스크 드라이브(hard disk drive(HDD)) 또는 솔리드 스테이트 드라이브(SSD)로 구현될 수 있다.
도 2는 도 1에 도시된 메모리의 개략적인 블록도를 나타낸다.
도 1 및 도 2를 참조하면, 메모리(300)는 인덱스 버퍼(index buffer; 310), 버텍스 버퍼(vertex buffer; 320), 유니폼 버퍼(uniform buffer; 330), 리스트 버퍼(list buffer; 340), 텍스처 버퍼(texture buffer; 360), 깊이/스텐실 버퍼(depth/stencil buffer; 370), 컬러 버퍼(color buffer; 380) 프레임 버퍼(frame buffer; 390), 및 비저빌리티 버퍼(visibility buffer; 395)를 포함할 수 있다.
인덱스 버퍼(310)는 각 버퍼(320 내지 395)에 저장된 데이터의 인덱스를 저장할 수 있다. 예컨대, 상기 인덱스는 상기 데이터의 이름, 및 크기 등의 속성 정보와 상기 데이터가 저장된 위치, 예컨대 버퍼(320, 330, 340, 360, 370, 380, 390 및 395)의 위치 정보 등을 포함할 수 있다.
버텍스 버퍼(320)는 버텍스(vertex)의 위치(position), 컬러(color), 법선 벡터(normal vector), 및 텍스처 좌표(texture coordinate)와 같은 속성(attribute)에 대한 버텍스 데이터를 저장할 수 있다.
버텍스 버퍼(320)는 GPU(100)의 테셀레이션 동작에 의해 생성된 테셀레이트된 버텍스의 위치, 컬러, 법선 벡터, 및 텍스처 좌표와 같은 속성에 대한 테셀레이트된 버텍스 데이터를 저장할 수 있다.
버텍스 버퍼(320)는 GPU(100)의 테셀레이션 동작에 필요한 패치에 포함된 각 컨트롤 포인트의 위치, 법선 벡터와 같은 속성에 대한 패치 데이터(또는 컨트롤 포인트 데이터)를 저장할 수 있다.
실시 예에 따라, 상기 버텍스 데이터는 프리미티브(primitive)에 포함된 각 버텍스의 위치, 컬러, 법선 벡터, 및 텍스처 좌표와 같은 속성에 대한 데이터를 포함할 수 있다. 예컨대, 상기 프리미티브는 버텍스, 라인, 및 다각형을 의미할 수 있다.
또 다른 실시 예에 따라, 상기 버텍스 데이터는 패치에 포함된 각 컨트롤 포인트의 위치, 법선 벡터와 같은 속성에 대한 패치 데이터(또는 컨트롤 포인트 데이터)를 포함할 수 있다. 예컨대, 상기 패치는 상기 각 컨트롤 포인트와 상기 매개변수 방정식에 의해서 정의될 수 있다.
유니폼 버퍼(330)는 패치, 예컨대 곡선 또는 표면을 정의하기 위한 매개변수 방정식(parametric equation)에 대한 상수 및/또는 쉐이딩 프로그램을 위한 상수를 저장할 수 있다.
리스트 버퍼(340)는 GPU(100)의 타일링 동작에 의해 생성된 각 타일과 상기 각 타일에 포함된 데이터(예컨대, 버텍스 데이터, 패치 데이터, 또는 테셀레이트된 버텍스 데이터)의 인덱스를 매칭한 리스트를 저장할 수 있다.
텍스쳐 버퍼(360)는 복수의 텍셀들(texels)을 타일 형식으로 저장할 수 있다.
깊이/스텐실 버퍼(370)는 GPU(100)에 의해 처리된, 예컨대 렌더링(rendering)된 이미지에 포함된 각 픽셀의 깊이에 대한 깊이 데이터 및 상기 각 픽셀의 스텐실에 대한 스텐실 데이터를 저장할 수 있다.
컬러 버퍼(380)는 GPU(100)에 수행될 블렌딩 동작을 위한 컬러에 대한 컬러 데이터를 저장할 수 있다.
프레임 버퍼(390)는 GPU(100)에 의해 최종적으로 처리된 픽셀에 대한 픽셀 데이터(또는 이미지 데이터)를 저장할 수 있다.
비저빌리티 버퍼(395)는 보이는 프리미티브로 판단된 프리미티브들 즉, 오클루더들(occluders) 각각의 포지션 정보와 트라이앵글 상관 정보(triangle correlation information)를 저장할 수 있다.
상기 포지션 정보는 프리미티브에 포함된 버텍스들 각각의 3차원 공간 좌표(X 좌표, Y 좌표 및 Z 좌표)를 의미할 수 있고, 상기 트라이앵글 상관 정보는 상기 버텍스들이 이루는 삼각형의 각 변에 대한 벡터를 의미할 수 있다.
상기 트라이앵글 상관 정보는 특정한 수식에 한정되는 것이 아니며, 상기 포지션 정보 이외에 프리미티브들 간의 상관 관계를 파악하기 위한 정보를 통칭하는 용어이다.
도 3은 도 1에 도시된 그래픽 프로세싱 유닛의 개략적인 블록도이다.
도 1 내지 도 3을 참조하면, GPU(100)는 CPU(60) 및/또는 메모리 인터페이스(95)를 통해 메모리(200)로부터 출력된 데이터를 수신하거나 GPU(100)에 의해 처리된 데이터를 메모리(200)로 전송하나, 설명의 편의를 위해 CPU(60)와 메모리 인터페이스(95)는 생략한다.
GPU(100A)는 버텍스 쉐이더(vertex shader; 120), 헐 쉐이더(hull shader; 130), 테셀레이터(tessellator; 140), 도메인 쉐이더(domain shader; 145), 지오메트리 쉐이더(geometry shader; 150), 프리미티브 어셈블러(primitive assembler; 155), 프리미티브 컬링 유닛(primitive culling unit; 160), 타일 비닝 유닛(tile binning unit; 170), 트라이앵글 셋업 유닛(triangle setup unit; 175), 래스터라이저(rasterizer; 180), 픽셀 쉐이더(pixel shader; 190), 및 출력 머저(output merger; 195)를 포함할 수 있다.
본 발명의 기술적 사상이 포함된 GPU(100)의 구성요소들(160)을 제외한 나머지 구성요소들(120, 130, 140, 145, 150, 155, 170, 175, 180, 190 및 195)의 기능과 동작은 마이크로 소프트 Direct3DTM 11의 그래픽스 파이프라인에 포함된 동일한 이름을 갖는 스테이지들의 기능과 동작과 실질적으로 동일할 수 있다.
버텍스 쉐이더(120)는 버텍스 버퍼(320)로부터 출력된 버텍스 데이터를 수신하여 처리할 수 있다. 예컨대, 버텍스 쉐이더(120)는 상기 버텍스 데이터를 변환(transformation), 모핑(morphing), 스키닝(skinning), 또는 라이팅(lighting) 등과 같은 동작을 통하여 처리할 수 있다.
헐 쉐이더(130)는 버텍스 쉐이더(120)로부터 출력된 상기 처리된 버텍스 데이터를 수신하고, 수신된 데이터에 상응하는 패치에 대한 테셀레이션 팩터(tessellation factor)를 결정할 수 있다.
예컨대, 상기 테셀레이션 팩터는 상기 수신된 데이터에 상응하는 상기 패치에 대한 세밀하게 표현하는 정도(level of detail)를 의미할 수 있다.
헐 쉐이더(130)는 상기 수신된 데이터에 포함된 버텍스들(또는 컨트롤 포인트들), 매개변수 방정식, 및 상기 테셀레이션 팩터를 테셀레이터(140)로 출력할 수 있다.
테셀레이터(140)는 헐 쉐이더(130)로부터 결정된 상기 테셀레이션 팩터에 기초하여 테셀레이션 도메인 좌표(tessellation damain coordinate)를 테셀레이트할 수 있다. 예컨대, 상기 테셀레이션 도메인 좌표는 (u, v) 또는 (u, v, w)에 의해 정의될 수 있다.
테셀레이터(140)는 테셀레이트된 도메인 좌표를 도메인 쉐이더(145)로 출력할 수 있다.
도메인 쉐이더(145)는 상기 테셀레이션 팩터 및 상기 매개변수 방정식에 기초하여 상기 테셀레이트된 도메인 좌표에 상응하는 상기 패치의 공간 좌표를 계산하여 테셀레이트된 버텍스를 생성할 수 있다. 예컨대, 상기 공간 좌표는 (x, y, z)에 의해 정의될 수 있다. 또한, 상기 테셀레이트된 버텍스들에 대한 버텍스 데이터는 테셀레이트된 버텍스 데이터로서 버텍스 버퍼(320)에 저장되고, 지오메트리 쉐이더(150)로 출력될 수 있다.
지오메트리 쉐이더(150)는 도메인 쉐이더(145)로부터 출력된 테셀레이트된 버텍스들에 인접한 버터시즈를 더하거나 또는 상기 테셀레이트된 버텍스들에 상기 인접한 버터시즈를 제거하여 새로운 테셀레이트된 버텍스들을 생성할 수 있다.
프리미티브 어셈블러(155)는 지오메트리 쉐이더(150)로부터 출력된 새로운 테셀레이트된 버텍스들에 기초하여 프리미티브들(점들, 라인들, 및 삼각형들)를 생성할 수 있다. 프리미티브 어셈블러(155)가 생성하는 상기 프리미티브에 대한 정보는 상기 프리미티브의 위치 속성에 대한 정보인 포지션 정보(예컨대, 3 차원의 공간 좌표)를 포함할 수 있다. 예컨대, 상기 공간 좌표는 (x, y, z)에 의해 정의될 수 있다.
프리미티브 어셈블러(155)는 프리미티브들 각각의 포지션 정보를 포함하는 프리미티브 데이터를 프리미티브 컬링 유닛(160)으로 출력할 수 있다.
프리미티브 컬링 유닛(160)은 프리미티브들 각각의 포지션 정보 및 비저빌리티 버퍼(395)에 저장된 오클루더(occluder)의 포지션 정보와 트라이앵글 상관 정보에 기초하여 보이지 않는 프리미티브를 제거할 수 있다. 또한, 프리미티브 컬링 유닛(160)은 프리미티브들 각각의 포지션 정보 및 오클루더(occluder)의 포지션 정보와 트라이앵글 상관 정보에 기초하여 보이는 프리미티브로 판단된 프리미티브를 비저빌리티 버퍼(395)에 업데이트할지 여부를 결정할 수 있다. 프리미티브 컬링 유닛(160)의 상세한 동작은 도 4 내지 도 9를 참조하여 후술하기로 한다.
프리미티브 컬링 유닛(160)은 보이지 않는 프리미티브를 제외한 프리미티브들의 프리미티브 데이터를 타일 비닝 유닛(170)으로 출력할 수 있다.
도 3에 도시된 프리미티브 컬링 유닛(160)의 위치는 예시적인 것이며, 프리미티브들 각각의 포지션이 확정된 이후라면 어디에도 위치할 수 있다.
타일 비닝 유닛(170)은 프리미티브 컬링 유닛(160)으로부터 출력된 프리미티브 데이터를 타일링하고, 타일링된 프리미티브 데이터를 트라이앵글 셋업 유닛(175)으로 출력할 수 있다.
예컨대, 타일 비닝 유닛(170)은 상기 프리미티브 데이터 각각에 대응하는 프리미티브들 각각을 디스플레이(200)에 상응하는 가상 공간 즉, 스크린 공간(screen space)에 프로젝트(project)하고, 상기 프리미티브들 각각에 할당된 바운딩 박스에 기초하여 상기 스크린 공간을 타일들로 비닝(binning)하고, 상기 타일들 각각과 상기 타일들 각각에 포함된 프리미티브들 각각의 인덱스를 매칭한 리스트를 작성할 수 있다. 타일 비닝 유닛(170)은 상기 리스트를 리스트 버퍼(340)에 저장할 수 있다.
다른 실시예에 따라, 타일 비닝 유닛(170)은 생략될 수 있다.
트라이앵글 셋업 유닛(175)은 타일링된 프리미티브 데이터를 기초로 래스터라이저(180) 또는 픽셀 쉐이더(190)의 동작에 필요한 트라이앵글 상관 정보 및/또는 인크리먼트(increments) 등의 정보들 즉, 트라이앵글 셋업 정보(triangle setup information)를 계산할 수 있다. 트라이앵글 셋업 유닛(175)은 상기 정보들을 포함하는 처리된 프리미티브 데이터를 래스터라이저(180)로 출력할 수 있다.
실시예에 따라 트라이앵글 셋업 유닛(175)은 도 4와 같이 프리미티브 컬링 유닛(160)이 초기 트라이앵글 셋업 유닛(163)을 포함하지 않을 경우, 오클루더들 각각의 트라이앵글 셋업 정보를 생성하고 상기 트라이앵글 셋업 정보에 포함된 트라이앵글 상관 정보를 업데이트 유닛(165)의 제어에 따라 비저빌리티 버퍼(395)에 저장할 수 있다. 다른 실시예에 따라 트라이앵글 셋업 유닛(175)은 상기 오클루더들 각각의 트라이앵글 상관 정보를 업데이트 유닛(165)으로 전송할 수 있다. 실시예에 따라 도 5와 같이 프리미티브 컬링 유닛(160)이 초기 트라이앵글 셋업 유닛(163)을 포함할 경우, 트라이앵글 셋업 유닛(175)은 오클루더들 각각의 트라이앵글 상관 정보를 계산하지 않고, 초기 트라이앵글 셋업 유닛(163)이 생성한 상기 오클루더들 각각의 상기 트라이앵글 상관 정보를 바이패스(bypass)할 수 있다. 그러나, 트라이앵글 셋업 유닛(175)은 오클루더들 각각의 트라이앵글 상관 정보를 계산하지 않을 뿐 인크리먼트(increments) 등의 정보를 생성하여 오클루더들 각각의 트라이앵글 셋업 정보를 생성할 수 있다.
래스터라이저(180)는 트라이앵글 셋업 유닛(175)으로부터 출력된 상기 처리된 프리미티브 데이터를 기초로 복수의 프리미티브들을 복수의 픽셀들로 변환할 수 있다.
픽셀 쉐이더(190)는 상기 복수의 픽셀들의 효과를 처리할 수 있다. 예컨대, 상기 효과는 상기 복수의 픽셀들의 컬러 또는 명암 등일 수 있다.
실시 예에 따라, 픽셀 쉐이더(190)는 상기 효과를 처리하기 위한 계산 연산들(computation operations)을 수행할 수 있다. 상기 계산 연산들은 텍스쳐 매핑(texture mapping)과 컬러 포멧 변환(color format conversion) 등을 포함할 수 있다.
상기 텍스쳐 매핑은 상기 복수의 픽셀들에 세부감(detail)을 더하기 위해 텍스쳐 버퍼(360)로부터 출력되는 복수의 텍셀들을 매핑하는 동작을 의미할 수 있다.
상기 컬러 포멧 변환은 상기 복수의 픽셀들을 RGB 포맷, YUV 포맷, 또는 YCoCg 포맷 등으로 변환하는 동작을 의미할 수 있다.
출력 머저(195)는 이전 픽셀들의 정보를 이용하여 처리된 복수의 픽셀들 중에서 디스플레이(200)에 디스플레이될 최종 픽셀들을 확정하고, 확정된 최종 픽셀들의 컬러를 생성할 수 있다. 예컨대, 상기 이전 픽셀들의 정보는 깊이 정보, 스텐실 정보, 및 컬러 정보 등 일 수 있다.
예컨대, 출력 머저(195)는 깊이/스텐셀 버퍼(370)로부터 출력된 깊이 데이터에 기초하여 상기 처리된 복수의 픽셀들을 깊이 테스트하고, 테스트결과에 따라 상기 최종 픽셀들을 확정할 수 있다.
출력 머저(195)는 깊이/스텐실 버퍼(370)로부터 출력된 스텐실 데이터에 기초하여 상기 처리된 복수의 픽셀들을 스텐셀 테스트하고, 테스트결과에 따라 상기 최종 픽셀들을 확정할 수 있다.
출력 머저(195)는 컬러 버퍼(380)로부터 출력된 컬러 데이터를 이용하여 상기 확정된 최종 픽셀들을 블렌딩할 수 있다.
출력 머저(195)는 상기 확정된 최종 픽셀들에 대한 픽셀 데이터(또는 이미지 데이터)를 프레임 버퍼(390)로 출력할 수 있다.
상기 픽셀 데이터는 프레임 버퍼(380)에 저장되고, 상기 픽셀 데이터는 디스플레이 컨트롤러(90)를 통하여 디스플레이(200)에서 디스플레이될 수 있다.
도 4는 도 3에 도시된 프리미티브 컬링 유닛의 일 실시예를 나타낸 블록도이다. 도 5는 도 3에 도시된 프리미티브 컬링 유닛의 다른 실시예를 나타낸 블록도이다. 도 6은 도 4와 도 5에 도시된 비저빌리티 테스터의 동작을 설명하기 위한 도면이다. 도 7은 도 4와 도 5에 도시된 업데이트 결정 유닛의 동작을 설명하기 위한 도면이다. 도 8은 도 4와 도 5에 도시된 업데이트 유닛의 동작의 일 실시예를 설명하기 위한 도면이다. 도 9는 도 4와 도 5에 도시된 업데이트 유닛의 동작의 다른 실시예를 설명하기 위한 도면이다.
도 1 내지 도 9를 참조하면, 도 4에 도시된 프리미티브 컬링 유닛(160-1)은 비저빌리티 테스터(visibility tester; 161), 업데이트 결정 유닛(update determination unit; 162), 캐쉬 메모리(Cache memory; 164), 및 업데이트 유닛(update unit; 165)를 포함할 수 있다.
비저빌리티 테스터(161)는 프리미티브 어셈블러(155)로부터 프리미티브 데이터를 수신하고, 상기 프리미티브 데이터에 해당하는 프리미티브의 포지션 정보와 캐쉬 메모리(164)에 업로드된 오클루더의 포지션 정보 및 트라이앵글 상관 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행할 수 있다.
설명의 편의상 비저빌리티 테스터(161)로 현재 입력되는 프리미티브 데이터에 해당하는 프리미티브를 제2 프리미티브라 정의하고, 상기 제2 프리미티브의 비저빌리티 테스트에 이용되는 오클루더를 제1 프리미티브라 정의한다.
상기 비저빌리티 테스트는 크게 검색단계, 포함 여부 판단 단계, 및 깊이 비교 단계를 포함할 수 있다.
상기 검색 단계에서, 비저빌리티 테스터(161)는 제2 프리미티브와 위치적으로 관련된 제1 프리미티브들을 비저빌리티 버퍼(395)에서 검색하여 상기 제1 프리미티브들 각각의 포지션 정보 및 트라이앵글 상관 정보를 캐쉬 메모리(164)에 업로드시킬 수 있다. 예컨대, 제2 프리미티브의 포지션 정보는 상기 제2 프리미티브에 포함된 버텍스들 각각의 X 좌표값과 Y 좌표값을 포함하므로 상기 제2 프리미티브와 2차원적인 위치가 겹칠 수 있는 제1 프리미티브들 각각의 포지션 정보 및 트라이앵글 상관 정보가 캐쉬 메모리(164)에 업로드될 수 있다. 상기 검색은 후술할 비저빌리티 버퍼(395)가 업데이트되는 방식을 이용하여 보다 효율적으로 이루어질 수 있다.
상기 포함 여부 판단 단계에서, 비저빌리티 테스터(161)는 상기 제2 프리미티브의 포지션 정보 및 상기 제1 프리미티브의 포지션 정보와 트라이앵글 상관 정보에 기초하여 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는지 여부를 판단할 수 있다.
도 6에서, 제1 프리미티브(O)는 3개의 버텍스들(OA, OB, OC)를 포함하고, 제2 프리미티브(P)는 3개의 버텍스들(VA, VB, VC)를 포함한다. '(제1 버텍스-제2 버텍스)'를 상기 제2 버텍스에서 상기 제1 버텍스를 잇는 벡터라 정의하고, '제1 벡터X제2 벡터'와 '제1 벡터·제2 벡터'를 각각 상기 제1 벡터와 상기 제2 벡터의 외적과 내적이라 정의한다. 또한, n을 노멀 벡터(normal vector)로 정의한다.
여기서, 제1 프리미티브(O)의 3개의 버텍스들(OA, OB, OC)과 제2 프리미티브(P)의 3개의 버텍스들(VA, VB, VC)이 다음의 수학식 1 내지 수학식 3을 만족할 경우 비저빌리티 테스터(161)는 제2 프리미티브(P)가 제1 프리미티브(O)에 포함된다고 판단할 수 있다. 반대로, 제1 프리미티브(O)의 3개의 버텍스들(OA, OB, OC)과 ··제2 프리미티브(P)의 3개의 버텍스들(VA, VB, VC)이 다음의 수학식 1 내지 수학식 3 중 어느 하나라도 만족하지 않을 경우 비저빌리티 테스터(161)는 제2 프리미티브(P)가 제1 프리미티브(O)에 포함되지 않는다고 판단할 수 있다.
Figure pat00001
Figure pat00002
Figure pat00003
수학식 1의 (OB-OA), 수학식 2의 (OC-OB), 및 수학식 3의 (OA-OC)은 제1 프리미티브(O)의 트라이앵글 상관 정보에 해당하고, 수학식 1의 (VA-OA), 수학식 2의 (VB-OB), 및 수학식 3의 (VC-OC)은 제1 프리미티브(O)의 포지션 정보와 제2 프리미티브(P)의 포지션 정보로부터 구해질 수 있다.
상기 깊이 비교 단계에서, 비저빌리티 테스터(161)는 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는 경우 상기 제1 프리미티브와 상기 제2 프리미티브에 포함된 버텍스들 각각의 상기 Z 좌표값을 비교할 수 있다.
예컨대, 도 6에서 제2 프리미티브(P)가 제1 프리미티브(O)에 포함되는 경우 비저빌리티 테스터(161)는 제1 프리미티브(O)의 3개의 버텍스들(OA, OB, OC) 각각의 Z 좌표값과 제2 프리미티브(P)의 3개의 버텍스들(VA, VB, VC) 각각의 Z 좌표값을 비교하여 제2 프리미티브(P)가 제1 프리미티브(O)에 의해 가려지는지 여부를 판단할 수 있다. 만일 Z 좌표값이 작을수록 가까운 거리를 의미한다고 가정하면, 제2 프리미티브(P)의 3개의 버텍스들(VA, VB, VC) 각각의 Z 좌표값이 제1 프리미티브(O)의 3개의 버텍스들(OA, OB, OC) 각각의 Z 좌표값보다 큰 경우 제2 프리미티브(P)가 제1 프리미티브(O)에 의해 가려진다고 판단될 수 있다.
상기 검색단계, 상기 포함 여부 판단 단계, 및 상기 깊이 비교 단계는 순차적으로 수행될 수 있으나, 병렬적으로도 수행될 수도 있다.
비저빌리티 테스터(161)는 제2 프리미티브가 제1 프리미티브에 의해 가려진다고(즉, 제2 프리미티브가 보이지 않는 프리미티브라고) 판단한 경우 상기 제2 프리미티브를 도 3에 도시된 일련의 그래픽스 파이프라인에서 제거할 수 있다. 반대로, 비저빌리티 테스터(161)는 제2 프리미티브가 제1 프리미티브에 의해 가려지지 않는다고(즉, 제2 프리미티브가 보이는 프리미티브라고) 판단한 경우 상기 제2 프리미티브를 업데이트 결정 유닛(162)으로 출력할 수 있다.
업데이트 결정 유닛(162)은 비저빌리티 테스트의 결과에 따라 제2 프리미티브의 포지션 정보를 비저빌리티 버퍼(395)에 저장할지 여부를 결정할 수 있다. 즉, 업데이트 결정 유닛(162)은 비저빌리티 테스트의 결과에 따라 제2 프리미티브를 오클루더로 활용할지를 결정하며, 상기 제2 프리미티브를 비저빌리티 버퍼(395)에 저장할 경우 저장된 상기 제2 프리미티브는 이후 입력되는 제2 프리미티브에 대해서 제1 프리미티브(오클루더)로 이용될 수 있다.
도 7에서, 업데이트 결정 유닛(162)은 제2 프리미티브(P)의 3개의 버텍스들(VA, VB, VC) 각각의 X 좌표값, Y 좌표값, 및 Z 좌표값으로부터 제2 프리미티브(P)의 면적(Area), X축 길이(Length1), 및 Y축 길이(Length2)를 계산할 수 있다.
제2 프리미티브(P)의 면적은 제2 프리미티브(P) 내부의 면적을 말하고, 제2 프리미티브(P)의 X축 길이(Length1)는 제2 프리미티브(P)에 포함된 버텍스들(VA, VB, VC)의 최대 X 좌표값과 최소 X 좌표값의 차이를 말하며, 제2 프리미티브(P)의 Y축 길이(Length2)는 제2 프리미티브(P)에 포함된 버텍스들(VA, VB, VC)의 최대 Y 좌표값과 최소 Y 좌표값의 차이를 말한다.
또한, 업데이트 결정 유닛(162)은 제2 프리미티브(P)의 면적(Area)을 임계 면적과 비교하고, 제2 프리미티브(P)의 X축 길이(Length1)를 임계 X축 길이와 비교하고, 제2 프리미티브(P)의 Y축 길이(Length2)를 임계 Y축 길이와 비교할 수 있다.
만일 제2 프리미티브(P)의 면적(Area), X축 길이(Length1), 및 Y축 길이(Length2) 각각이 임계 면적, 임계 X축 길이, 및 임계 Y축 길이보다 큰 경우, 업데이트 결정 유닛(162)은 제2 프리미티브(P)의 포지션 정보를 비저빌리티 버퍼(395)에 저장하고, 제2 프리미티브(P)를 오클루더로 활용하기로 결정할 수 있다.
이는 일정 크기 이상인 제2 프리미티브(P) 만을 오클루더로 활용하여야 비저빌리티 버퍼(395)의 용량과 비저빌리티 테스터(161)의 연산량을 고려할 때 효율적이기 때문이다.
업데이트 결정 유닛(162)은 제2 프리미티브를 오클루더로 활용하기로 결정한 경우 상기 제2 프리미티브를 업데이트 유닛(165)으로 출력할 수 있다. 반대로, 업데이트 결정 유닛(162)은 제2 프리미티브를 오클루더로 활용하지 않기로 결정한 경우 상기 제2 프리미티브를 타일 비닝 유닛(170)으로 출력할 수 있다.
업데이트 유닛(165)은 상기 결정 결과에 따라 수신되는 상기 제2 프리미티브에 대한 정보를 비저빌리티 버퍼(395)에 저장할 경우, 스크린 공간(screen space)를 여러 영역들로 나눌지 여부, 상기 제2 프리미티브와 상기 여러 영역들의 포함 관계 및 상기 여러 영역들의 계층 관계 중 적어도 하나에 따라 상기 제2 프리미티브에 대한 정보를 비저빌리티 버퍼(395)에 저장할 수 있다.
업데이트 유닛(165)은 도 4와 같이 프리미티브 컬링 유닛(160)이 초기 트라이앵글 셋업 유닛(163)을 포함하지 않을 경우 상기 제2 프리미티브에 대한 정보는 상기 제2 프리미티브의 포지션 정보이다. 업데이트 유닛(165)은 상기 제2 프리미티브의 포지션 정보를 비저빌리티 버퍼(395)에 저장하고, 트라이앵글 셋업 유닛(175)이 생성하는 상기 제2 프리미티브의 트라이앵글 상관 정보를 트라이앵글 셋업 유닛(175)이 비저빌리티 버퍼(395)에 저장하도록 제어할 수 있다. 상기와 같이 업데이트 유닛(165)이 트라이앵글 셋업 유닛(175)을 제어하는 방법은 오클루더로 결정된 상기 제2 프리미티브에 상기 제2 프리미티브가 오클루더임을 의미하는 정보를 삽입할 수 있으나, 본 발명의 범위는 이에 한정되지 않는다. 다른 실시예에 따라, 트라이앵글 셋업 유닛(175)이 생성하는 상기 제2 프리미티브의 트라이앵글 상관 정보를 업데이트 유닛(165)이 직접 트라이앵글 셋업 유닛(175)으로부터 수신(도 4의 165가 175로부터 수신하는 경로)하여 상기 제2 프리미티브의 포지션 정보와 함께 비저빌리티 버퍼(395)에 저장할 수 있다.
업데이트 유닛(165)은 도 5와 같이 프리미티브 컬링 유닛(160)이 초기 트라이앵글 셋업 유닛(163)을 포함할 경우 상기 제2 프리미티브에 대한 정보는 상기 제2 프리미티브의 포지션 정보와 트라이앵글 상관 정보이다. 업데이트 유닛(165)은 상기 제2 프리미티브의 포지션 정보와 트라이앵글 상관 정보를 비저빌리티 버퍼(395)에 저장할 수 있다.
업데이트 유닛(165)은 상기 제2 프리미티브에 대한 정보를 비저빌리티 버퍼(395)에 저장할 경우, 스크린 공간(screen space)를 여러 영역들로 나누지 않고 비저빌리티 버퍼(395)를 1개의 영역으로 보아 상기 제2 프리미티브에 대한 정보를 저장할 수 있다.
도 8에서와 같이 업데이트 유닛(165)은 상기 제2 프리미티브에 대한 정보를 비저빌리티 버퍼(395)에 저장할 경우, 스크린 공간(screen space)를 여러 영역들(예컨대, R1 내지 R16)로 나누고 비저빌리티 버퍼(395)를 여러 영역들(예컨대, R1 내지 R16)에 대응하는 영역들로 나누어 상기 제2 프리미티브에 대한 정보를 저장할 수 있다.
예컨대, 도 8에서와 같이 제2 프리미티브(P)가 위치한 경우 업데이트 유닛(165)은 R4, R6~R8, R10~R12 및 R14~R16에 대응하는 비저빌리티 버퍼(395)의 복수의 영역들에 제2 프리미티브(P)에 대한 정보가 저장될 수 있다.
또한, 업데이트 유닛(165)은 제2 프리미티브(P)와 여러 영역들(R1 내지 R16)의 포함 관계에 따라 제2 프리미티브(P)에 대한 정보를 저장할 수 있다.
예컨대, 업데이트 유닛(165)은 여러 영역들(R1 내지 R16) 중 제2 프리미티브(P)와 모든 부분이 겹치는 영역인 R11에 대응하는 비저빌리티 버퍼(395)의 영역에만 제2 프리미티브(P)에 대한 정보를 저장하고, 여러 영역들(R1 내지 R16) 중 제2 프리미티브(P)와 일부분이 겹치는 영역인 R4, R6~R8, R10, R12 및 R14~R16에 대응하는 비저빌리티 버퍼(395)의 영역에는 제2 프리미티브(P)에 대한 정보를 저장하지 않을 수 있다. 따라서, 비저빌리티 버퍼(395)의 용량 대비 효율이 높아질 수 있다.
실시예에 따라, 업데이트 유닛(165)은 여러 영역들(R1 내지 R16) 중 제2 프리미티브(P)와 일부분이 겹치는 영역의 면적에 따라 상기 일부분이 겹치는 영역에 대응하는 비저빌리티 버퍼(395)의 영역에 제2 프리미티브(P)에 대한 정보를 저장할지 결정할 수 있다.
도 9와 같이 업데이트 유닛(165)은 스크린 공간(screen space)을 m 개(예컨대, 16개)의 영역으로 나눈 제1 계층(first hierarcy; H1)과 스크린 공간(screen space)을 n 개(예컨대, 4개)의 영역으로 나눈 제2 계층(second hierarcy; H2)으로 나누어 비저빌리티 버퍼(395)를 제1 계층(H1)과 제2 계층(H2)의 각각의 영역들(예컨대, H1의 R1 또는 H2의 R1)에 대응하는 영역들로 나누어 상기 제2 프리미티브에 대한 정보를 저장할 수 있다. 여기서, m과 n은 1 이상의 정수이고, m>n이다. 실시예에 따라 2 개의 계층이 아닌 더 많은 계층으로 나뉠 수 있고, m 과 n의 갯수에는 제한이 없다.
업데이트 유닛(165)은 제2 프리미티브가 위치하는 H1의 복수의 영역들에 대응하는 비저빌리티 버퍼(395)의 영역들에 제2 프리미티브(P)에 대한 정보를 저장할 수도 있고, 업데이트 유닛(165)은 제2 프리미티브가 위치하는 H2의 복수의 영역들에 대응하는 비저빌리티 버퍼(395)의 영역들에 제2 프리미티브(P)에 대한 정보를 저장할 수도 있다.
예컨대, 도 9에서와 같이 제2 프리미티브(P)가 위치한 경우 업데이트 유닛(165)은 H1에 대응하는 비저빌리티 버퍼(395)의 영역들에 제2 프리미티브(P)에 대한 정보를 저장할 경우 H1의 R1, R2, R5 및 R6 4개에 대응하는 영역들에 저장하여야 하는 반면, H2에 대응하는 비저빌리티 버퍼(395)의 영역들에 제2 프리미티브(P)에 대한 정보를 저장할 경우 H2의 R1 1개에 대응하는 영역에만 저장할 수 있다.
따라서, 업데이트 유닛(165)이 제2 프리미티브(P)의 크기와 위치에 따라 계층화된 비저빌리티 버퍼(395)의 영역들에 제2 프리미티브(P)에 대한 정보를 저장함으로써 비저빌리티 테스터(161)의 필요한 오클루더에 대한 검색 속도가 향상되고 비저빌리티 버퍼(395)의 용량 대비 효율이 높아질 수 있다.
도 5에 도시된 프리미티브 컬링 유닛(160-2)은 도 4에 도시된 프리미티브 컬링 유닛(160-1)과 달리 초기 트라이앵글 셋업 유닛(163)을 더 포함할 수 있다.
초기 트라이앵글 셋업 유닛(163)은 업데이트 결정 유닛(162)이 오클루더로 활용하기로 결정한 제2 프리미티브의 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성할 수 있다. 초기 트라이앵글 셋업 유닛(163)이 생성한 상기 제2 프리미티브의 상기 트라이앵글 상관 정보는 업데이트 유닛(165)에 의해 비저빌리티 버퍼(395)의 해당 영역에 저장될 수 있다. 상기 제2 프리미티브의 상기 트라이앵글 상관 정보가 트라이앵글 셋업 유닛(175)으로 전달 또는 비저빌리티 버퍼(395)에 저장됨에 따라 트라이앵글 셋업 유닛(175)은 오클루더로 분류된 상기 제2 프리미티브의 상기 트라이앵글 상관 정보에 대한 연산을 생략할 수 있다.
따라서, 본 발명의 실시예에 따른 그래픽 프로세싱 유닛에 의하면, 프리미티브의 포지션이 정해진 후 미리 저장된 오클루더의 트라이앵글 상관 정보에 기초해 상기 프리미티브를 선택적으로 제거함으로써 불필요한 작업량 및/또는 불필요한 데이터를 감소시킬 수 있다. 이로 인해, GPU(100)의 전체적인 성능이 향상되고, GPU(100)의 전력이 감소되는 효과가 있다.
도 10은 본 발명의 일 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법을 나타낸 흐름도이다. 도 11은 본 발명의 다른 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법을 나타낸 흐름도이다. 도 12는 본 발명의 또 다른 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법을 나타낸 흐름도이다. 도 13은 도 10 내지 도 12에 도시된 비저빌리티 테스트를 수행하는 단계를 상세히 나타낸 흐름도이다. 도 14는 도 11과 도 12에 도시된 비저빌리티 버퍼에 저장할지 여부를 결정하는 단계를 상세히 나타낸 흐름도이다.
도 1 내지 도 14를 참조하면, 도 4의 경우 트라이앵글 셋업 유닛(175)은 오클루더인 제1 프리미티브의 포지션 정보로부터 상기 제1 프리미티브의 트라이앵글 상관 정보를 생성하여 비저빌리티 버퍼(395)에 저장할 수 있다. 도 5의 경우 초기 트라이앵글 셋업 유닛(163)은 오클루더인 제1 프리미티브의 포지션 정보로부터 상기 제1 프리미티브의 트라이앵글 상관 정보를 생성할 수 있다(S100).
비저블 테스터(161)는 현재 입력되는 제2 프리미티브의 포지션 정보와 상기 제1 프리미티브의 상기 트라이앵글 상관 정보에 기초하여 비저빌리티 테스트를 수행할 수 있다(S110).
비저블 테스터(161)는 상기 비저빌리티 테스트의 결과에 따라 보이지 않는 프리미티브로 결정된 상기 제2 프리미티브를 도 3에 도시된 일련의 그래픽스 파이프라인에서 제거할 수 있다(S120).
도 11에 도시된 본 발명의 다른 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법은 도 10에 도시된 단계들 이후에 S130 단계와 S140 단계를 더 포함할 수 있다.
업데이트 결정 유닛(162)은 상기 비저빌리티 테스트의 결과에 따라 보이는 프리미티브로 결정된 상기 제2 프리미티브의 상기 포지션 정보를 비저빌리티 버퍼(395)에 저장할지 여부를 결정할 수 있다(S130).
도 14에서 상기 S130 단계는 업데이트 결정 유닛(162)은 상기 제2 프리미티브의 면적을 임계 면적과 비교하는 단계(S32), 상기 제2 프리미티브의 X 축 길이를 임계 X 축 길이와 비교하는 단계(S34), 및 상기 제2 프리미티브의 Y 축 길이를 임계 Y 축 길이와 비교하는 단계(S36)를 포함할 수 있다.
상기 제2 프리미티브의 면적이 임계면적보다 크고(S32의 Yes branch), 상기 제2 프리미티브의 X 축 길이가 임계 X 축 길이보다 길고(S34의 Yes branch), 상기 제2 프리미티브의 Y 축 길이가 임계 Y 축 길이보다 긴 경우(S36의 Yes branch), 도 11의 S140 또는 도 12의 S240 단계가 수행될 수 있다.
상기 제2 프리미티브의 면적이 임계면적보다 작거나(S32의 No branch), 상기 제2 프리미티브의 X 축 길이가 임계 X 축 길이보다 짧거나(S34의 No branch), 상기 제2 프리미티브의 Y 축 길이가 임계 Y 축 길이보다 짧은 경우(S36의 No branch), 도 11의 S140 또는 도 12의 S240와 S250 단계가 수행되지 않을 수 있다.
업데이트 유닛(165)은 상기 결정 결과에 따라 오클루더로 분류된 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼(395)에 저장할 수 있다. 즉, 스크린 공간(screen space)를 여러 영역들로 나눌지 여부, 상기 제2 프리미티브와 상기 여러 영역들의 포함 관계 및 상기 여러 영역들의 계층 관계 중 적어도 하나에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼(395)에 저장할 수 있다(S140).
도 12에 도시된 본 발명의 또 다른 실시예에 따른 그래픽 프로세싱 유닛의 동작 방법이 포함하는 S200 내지 S230 및 S250 단계는 각각 도 11에 도시된 S100 내지 S140 단계와 실질적으로 동일하다.
초기 트라이앵글 셋업 유닛(163)은 상기 결정 결과에 따라 오클루더로 분류된 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성할 수 있다(S240). 이에 따라, S250 단계에서 저장되는 상기 제2 프리미티브에 대한 정보는 상기 제2 프리미티브의 상기 트라이앵글 상관 정보를 더 포함할 수 있다.
도 13에서, 비저빌리티 테스터(161)는 상기 제2 프리미티브의 상기 포지션 정보 및 상기 제1 프리미티브의 상기 포지션 정보와 상기 트라이앵글 상관 정보에 기초하여 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는지 여부를 판단할 수 있다(S112).
비저빌리티 테스터(161)는 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는 경우 상기 제1 프리미티브와 상기 제2 프리미티브에 포함된 버텍스들 각각의 상기 Z 좌표값을 비교할 수 있다(S114).
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면, 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
데이터 처리 시스템(10) 그래픽 프로세싱 유닛(100)
데이터 처리 장치(50) 프리미티브 컬링 유닛(160)
CPU(60) 디스플레이(200)
디스플레이 컨트롤러(90) 메모리(300)
메모리 인터페이스(95)

Claims (20)

  1. 제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler); 및
    상기 제1 프리미티브의 트라이앵글 상관 정보(triangle correlation information)와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester)를 포함하는 그래픽 프로세싱 유닛.
  2. 제1항에 있어서,
    상기 제1 프리미티브의 상기 포지션 정보는 상기 제1 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함하고,
    상기 제2 프리미티브의 상기 포지션 정보는 상기 제2 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함하는 그래픽 프로세싱 유닛.
  3. 제2항에 있어서,
    상기 비저빌리티 테스터는
    상기 제2 프리미티브의 상기 포지션 정보 및 상기 제1 프리미티브의 상기 포지션 정보와 상기 트라이앵글 상관 정보에 기초하여 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는지 여부를 판단하고,
    상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는 경우 상기 제1 프리미티브와 상기 제2 프리미티브에 포함된 버텍스들 각각의 상기 Z 좌표값을 비교하는 그래픽 프로세싱 유닛.
  4. 제1항에 있어서,
    상기 비저빌리티 테스트의 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보를 비저빌리티 버퍼(visibility buffer)에 저장할지 여부를 결정하는 업데이트 결정 유닛(update determination unit) 및
    상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 업데이트 유닛을 더 포함하는 그래픽 프로세싱 유닛.
  5. 제4항에 있어서,
    상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하여 상기 비저빌리티 버퍼 또는 상기 업데이트 유닛으로 전송하는 트라이앵글 셋업 유닛(triangle setup unit)을 더 포함하는 그래픽 프로세싱 유닛.
  6. 제4항에 있어서,
    상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하는 초기 트라이앵글 셋업 유닛(initial triangle setup unit)을 더 포함하는 그래픽 프로세싱 유닛.
  7. 제6항에 있어서,
    상기 제2 프리미티브의 상기 트라이앵글 상관 정보를 수신하여 상기 제2 프리미티브의 트라이앵글 셋업 정보(triangle setup information)를 생성하는 트라이앵글 셋업 유닛(triangle setup unit)을 더 포함하는 그래픽 프로세싱 유닛.
  8. 제4항에 있어서,
    상기 업데이트 결정 유닛은
    상기 제2 프리미티브의 면적을 임계 면적과 비교하고,
    상기 제2 프리미티브의 X 축 길이를 임계 X 축 길이와 비교하고,
    상기 제2 프리미티브의 Y 축 길이를 임계 Y 축 길이와 비교하는 그래픽 프로세싱 유닛.
  9. 제4항에 있어서,
    상기 업데이트 유닛(update unit)은
    상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장할 경우, 스크린 공간(screen space)를 여러 영역들로 나눌지 여부, 상기 제2 프리미티브와 상기 여러 영역들의 포함 관계 및 상기 여러 영역들의 계층 관계 중 적어도 하나에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 그래픽 프로세싱 유닛.
  10. 제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler);
    비저빌리티 버퍼(visibility buffer)에 저장된 상기 제1 프리미티브의 트라이앵글 상관 정보와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester);
    상기 비저빌리티 테스트의 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보를 상기 비저빌리티 버퍼에 저장할지 여부를 결정하는 업데이트 결정 유닛(update determination unit) 및
    상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 업데이트 유닛을 포함하는 그래픽 프로세싱 유닛.
  11. 제10항에 있어서,
    상기 제1 프리미티브의 상기 포지션 정보는 상기 제1 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함하고,
    상기 제2 프리미티브의 상기 포지션 정보는 상기 제2 프리미티브에 포함된 버텍스들 각각의 X 좌표값, Y 좌표값 및 Z 좌표값을 포함하는 그래픽 프로세싱 유닛.
  12. 제11항에 있어서,
    상기 비저빌리티 테스터는
    상기 제2 프리미티브의 상기 포지션 정보 및 상기 제1 프리미티브의 상기 포지션 정보와 상기 트라이앵글 상관 정보에 기초하여 상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는지 여부를 판단하고,
    상기 제2 프리미티브가 상기 제1 프리미티브에 포함되는 경우 상기 제1 프리미티브와 상기 제2 프리미티브에 포함된 버텍스들 각각의 상기 Z 좌표값을 비교하는 그래픽 프로세싱 유닛.
  13. 제10항에 있어서,
    상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하여 상기 비저빌리티 버퍼 또는 상기 업데이트 유닛로 전송하는 트라이앵글 셋업 유닛(triangle setup unit)을 더 포함하는 그래픽 프로세싱 유닛.
  14. 제10항에 있어서,
    상기 결정 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보로부터 상기 제2 프리미티브의 트라이앵글 상관 정보를 생성하는 초기 트라이앵글 셋업 유닛(initial triangle setup unit)을 더 포함하는 그래픽 프로세싱 유닛.
  15. 제14항에 있어서,
    상기 제2 프리미티브의 상기 트라이앵글 상관 정보를 수신하여 상기 제2 프리미티브의 트라이앵글 셋업 정보(triangle setup information)를 생성하는 트라이앵글 셋업 유닛(triangle setup unit)을 더 포함하는 그래픽 프로세싱 유닛.
  16. 제10항에 있어서,
    상기 업데이트 결정 유닛은
    상기 제2 프리미티브의 면적을 임계 면적과 비교하고,
    상기 제2 프리미티브의 X 축 길이를 임계 X 축 길이와 비교하고,
    상기 제2 프리미티브의 Y 축 길이를 임계 Y 축 길이와 비교하는 그래픽 프로세싱 유닛.
  17. 제10항에 있어서,
    상기 업데이트 유닛(update unit)은
    상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장할 경우, 스크린 공간(screen space)를 여러 영역들로 나눌지 여부, 상기 제2 프리미티브와 상기 여러 영역들의 포함 관계 및 상기 여러 영역들의 계층 관계 중 적어도 하나에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 그래픽 프로세싱 유닛.
  18. 보이는 프리미티브로 판단된 제1 프리미티브들 각각의 포지션 정보와 트라이앵글 상관 정보를 저장하는 비저빌리티 버퍼를 포함하는 메모리와 데이터를 송수신하는 메모리 인터페이스;
    상기 메모리 인터페이스로부터 수신된 데이터를 처리하고 처리된 데이터를 출력하는 그래픽 프로세싱 유닛; 및
    상기 처리된 데이터를 디스플레이로 전송하는 디스플레이 컨트롤러를 포함하며,
    상기 그래픽 프로세싱 유닛은
    제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler); 및
    상기 제1 프리미티브의 트라이앵글 상관 정보와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester)를 포함하는 SOC(System On Chip).
  19. 제18항에 있어서,
    상기 비저빌리티 테스트의 결과에 따라 상기 제2 프리미티브의 상기 포지션 정보를 비저빌리티 버퍼(visibility buffer)에 저장할지 여부를 결정하는 업데이트 결정 유닛(update determination unit) 및
    상기 결정 결과에 따라 상기 제2 프리미티브에 대한 정보를 상기 비저빌리티 버퍼에 저장하는 업데이트 유닛을 더 포함하는 SOC.
  20. 보이는 프리미티브로 판단된 제1 프리미티브들 각각의 포지션 정보와 트라이앵글 상관 정보를 저장하는 비저빌리티 버퍼를 포함하는 메모리;
    상기 메모리로부터 수신된 데이터를 처리하고 처리된 데이터를 출력하는 데이터 처리 장치; 및
    상기 처리된 데이터를 수신하여 상기 처리된 데이터에 대응되는 이미지를 디스플레이하는 디스플레이를 포함하며,
    상기 데이터 처리 장치는
    제1 프리미티브와 제2 프리미티브 각각의 포지션 정보를 생성하는 프리미티브 어셈블러(primitive assembler); 및
    상기 제1 프리미티브의 트라이앵글 상관 정보와 상기 제2 프리미티브의 상기 포지션 정보에 기초하여 비저빌리티 테스트(visibility test)를 수행하고, 상기 비저빌리티 테스트의 결과에 따라 래스터 라이저의 동작 이전에 상기 제2 프리미티브를 제거하는 비저빌리티 테스터(visibility tester)를 포함하는 그래픽 프로세싱 시스템.
KR1020130155734A 2013-12-13 2013-12-13 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템 KR20150069617A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020130155734A KR20150069617A (ko) 2013-12-13 2013-12-13 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템
US14/550,099 US20150170406A1 (en) 2013-12-13 2014-11-21 Graphic processing unit, system-on-chip including graphic processing unit, and graphic processing system including graphic processing unit
DE102014117055.5A DE102014117055A1 (de) 2013-12-13 2014-11-21 Grafikverarbeitungseinheit, Ein-Chip-System mit Grafikverarbeitungseinheit und Datenverarbeitungssystem mit Grafikverarbeitungseinheit
CN201410771945.3A CN104715443A (zh) 2013-12-13 2014-12-12 图形处理单元、系统芯片和数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130155734A KR20150069617A (ko) 2013-12-13 2013-12-13 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템

Publications (1)

Publication Number Publication Date
KR20150069617A true KR20150069617A (ko) 2015-06-24

Family

ID=53192758

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130155734A KR20150069617A (ko) 2013-12-13 2013-12-13 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템

Country Status (4)

Country Link
US (1) US20150170406A1 (ko)
KR (1) KR20150069617A (ko)
CN (1) CN104715443A (ko)
DE (1) DE102014117055A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170030064A (ko) * 2015-09-08 2017-03-16 이메지네이션 테크놀로지스 리미티드 서브-프리미티브를 처리하기 위한 그래픽 처리 방법 및 시스템
WO2021030454A1 (en) * 2019-08-12 2021-02-18 Photon-X, Inc. Data management system for spatial phase imaging
US12032278B2 (en) 2021-08-06 2024-07-09 Photon-X, Inc. Integrated spatial phase imaging

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107833268B (zh) 2012-11-02 2021-05-14 想象技术有限公司 用于图形渲染的几何图形处理方法和图形渲染系统
US20160322031A1 (en) * 2015-04-28 2016-11-03 Mediatek Singapore Pte. Ltd. Cost-Effective In-Bin Primitive Pre-Ordering In GPU
CN105511995B (zh) * 2015-12-11 2018-04-17 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器验证方法
CN105513003B (zh) * 2015-12-11 2018-10-26 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器统一染色器阵列体系结构
US9959590B2 (en) 2016-03-30 2018-05-01 Intel Corporation System and method of caching for pixel synchronization-based graphics techniques
CN109035378B (zh) * 2018-07-30 2023-05-09 南京军微半导体科技有限公司 3d图形处理的图元装配硬件加速器
US11227430B2 (en) * 2019-06-19 2022-01-18 Samsung Electronics Co., Ltd. Optimized pixel shader attribute management
CN112069278A (zh) * 2020-09-04 2020-12-11 北京工商大学 地理数据表达图元重叠问题的快速缓解方法
CN116385253A (zh) * 2023-01-06 2023-07-04 格兰菲智能科技有限公司 图元绘制方法、装置、计算机设备和存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6246415B1 (en) * 1998-04-30 2001-06-12 Silicon Graphics, Inc. Method and apparatus for culling polygons
US7268779B2 (en) * 2002-12-24 2007-09-11 Intel Corporation Z-buffering techniques for graphics rendering
US7468726B1 (en) * 2005-12-01 2008-12-23 Nvidia Corporation Culling in a vertex processing unit
US8963930B2 (en) * 2007-12-12 2015-02-24 Via Technologies, Inc. Triangle setup and attribute setup integration with programmable execution unit
US8436854B2 (en) * 2009-05-29 2013-05-07 Qualcomm Incorporated Graphics processing unit with deferred vertex shading
HUE026407T2 (en) * 2010-09-06 2016-06-28 Anteleon Imaging S A R L A method for selecting graphic elements and a method for detecting said selections in a graphical element
US8587585B2 (en) * 2010-09-28 2013-11-19 Intel Corporation Backface culling for motion blur and depth of field

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170030064A (ko) * 2015-09-08 2017-03-16 이메지네이션 테크놀로지스 리미티드 서브-프리미티브를 처리하기 위한 그래픽 처리 방법 및 시스템
WO2021030454A1 (en) * 2019-08-12 2021-02-18 Photon-X, Inc. Data management system for spatial phase imaging
US12032278B2 (en) 2021-08-06 2024-07-09 Photon-X, Inc. Integrated spatial phase imaging

Also Published As

Publication number Publication date
CN104715443A (zh) 2015-06-17
DE102014117055A1 (de) 2015-06-18
US20150170406A1 (en) 2015-06-18

Similar Documents

Publication Publication Date Title
KR20150069617A (ko) 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템
KR102066659B1 (ko) 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법
US9665980B2 (en) Graphics processing unit, method of operating the same, and devices including the same
KR102188543B1 (ko) 그래픽 처리 장치
JP5866457B2 (ja) オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替
US11527040B2 (en) Tessellating patches of surface data in tile based computer graphics rendering
US10140677B2 (en) Graphics processing unit and device employing tessellation decision
US20170178280A1 (en) Tile Based Computer Graphics
KR102651126B1 (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
US9552618B2 (en) Method for domain shading, and devices operating the same
US9905036B2 (en) Graphics processing unit for adjusting level-of-detail, method of operating the same, and devices including the same
KR102554419B1 (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
KR102474237B1 (ko) 압축된 자원에 셰이더의 기입
US20160071317A1 (en) Graphics processing unit (gpu) including subdivider and device including the gpu
JP2014529143A (ja) テクスチャ座標導関数を用いた高速化テクスチャ検索
KR102053351B1 (ko) 테셀레이션 데이터 생성 방법과 상기 방법을 수행할 수 있는 장치들
US9582935B2 (en) Tessellation device including cache, method thereof, and system including the tessellation device
JP2023537579A (ja) 選択的2レベルビニングを有するグラフィックス処理ユニット

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid