KR20210128335A - 효율적이고 빠른 랜덤 액세스가 가능한 형상 속성 압축 메커니즘 - Google Patents

효율적이고 빠른 랜덤 액세스가 가능한 형상 속성 압축 메커니즘 Download PDF

Info

Publication number
KR20210128335A
KR20210128335A KR1020210033797A KR20210033797A KR20210128335A KR 20210128335 A KR20210128335 A KR 20210128335A KR 1020210033797 A KR1020210033797 A KR 1020210033797A KR 20210033797 A KR20210033797 A KR 20210033797A KR 20210128335 A KR20210128335 A KR 20210128335A
Authority
KR
South Korea
Prior art keywords
attribute
compressing
format
integer
compressed
Prior art date
Application number
KR1020210033797A
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 삼성전자주식회사
Publication of KR20210128335A publication Critical patent/KR20210128335A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Nonlinear Science (AREA)
  • Image Generation (AREA)

Abstract

그래픽스 처리 유닛의 그래픽스 파이프라인은 버텍스 쉐이더로부터 출력되는 버텍스의 하나 이상의 (위치 및 비위치) 속성을 받는 압축기를 구비한다. 상기 압축기는 상기 하나 이상의 속성의 포맷을 결정하고, 상기 속성의 포맷을 기반으로 각각의 속성을 부분들로 분리시킨다. 상기 압축기는 상기 부분의 타입을 기반으로 상기 속성의 각각의 부분을 압축한다. 상기 속성의 상기 압축된 부분들은 속성 저장 장치에 저장된다.

Description

효율적이고 빠른 랜덤 액세스가 가능한 형상 속성 압축 메커니즘{EFFICIENT FAST RANDOM ACCESS ENABLED GEOMETRY ATTRIBUTE COMPRESSION MECHANISM}
본원에 개시된 내용은 그래픽스 처리 유닛들(GPUs)에 관한 것이다. 더욱 상세하게는, 본원에 개시된 내용은 위치 및 비위치 속성 데이터를 압축하고 압축 해제하는 GPU의 프론트 엔드 파이프(압축)와 GPU의 백엔드 파이프(압축 해제)에 관한 것이다.
전통적인 컴퓨터 그래픽스는 메시들의 형상 관점에서 도안되어야 하는 내용을 정의한다. 메시들은 버텍스들을 이용하여 형성될 수 있으며, 각각의 버텍스는 렌더링되어야 하는 객체를 정의하는 몇몇 성질들 또는 속성들을 가질 수 있다. 예시 성질들은 위치, 색상, 텍스처, 노멀, 바이노멀, 탄젠트, 여러 조명 변수들 등을 포함할 수 있다. 컴퓨터 그래픽스에서, 이러한 성질들은 버텍스 속성들로서 언급될 수 있다.
본 개시의 목적은 위치 및 비위치 속성 데이터를 압축하고 압축 해제하는 방법 및 그래픽스 처리 유닛을 제공하는 것이다.
예시 실시예는, 버텍스 쉐이더로부터 출력된 버텍스의 하나 이상의 속성들의 포맷을 결정하는 단계로서, 상기 하나 이상의 속성들은 하나 이상의 위치 속성들과 하나 이상의 비위치 속성들을 포함할 수 있는 단계; 상기 속성의 포맷을 기반으로 상기 하나 이상의 속성들 각각을 부분들로 분리하는 단계; 상기 부분의 타입을 기반으로 상기 속성의 각각의 부분을 압축하는 단계; 및 상기 버텍스의 상기 속성의 상기 압축된 부분들을 메모리에 저장하는 단계를 포함할 수 있는 방법을 제공한다. 일 실시예에서, 제1 속성의 포맷은, 제1 부동 소수점 포맷을 포함할 수 있고, 상기 부동 소수점 포맷의 상기 제1 속성의 부분들은 부호 부분, 지수 부분, 및 가수 부분을 포함할 수 있고, 상기 부동 소수점 포맷의 첫번째의 각각의 부분을 압축하는 단계는: 런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계; 상기 지수 부분의 1차 미분을 결정하는 단계; 제로 런 인코딩과 골롬 라이스(Golomb-Rice) 코딩을 이용하여 상기 지수 부분을 압축하는 단계; 상기 가수 부분의 1차 미분을 결정하는 단계; 및 골롬 라이스 코딩을 이용하여 상기 가수 부분을 압축하여, 상기 부동 소수점 포맷의 제1 속성의 각각의 부분을 압축하는 단계를 포함할 수 있다. 다른 실시예에서, 제1 속성의 포맷은 고정 소수점 포맷을 포함할 수 있고, 상기 고정 소수점 포맷의 상기 제1 속성의 부분들은 부호 부분, 정수 부분, 및 분수 부분을 포함할 수 있고, 상기 고정 소수점 포맷의 제1 속성의 각각의 부분을 압축하는 단계는: 런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계, 골롬 라이스 코딩을 이용하여 상기 정수 부분을 압축하는 단계; 및 골롬 라이스 코딩을 이용하여 상기 분수 부분을 압축하여, 상기 고정 소수점 포맷의 상기 제1 속성의 각각의 부분들을 압축하는 단계를 포함한다. 다른 실시예에서, 제1 속성의 포맷은 정수 포맷을 포함하고, 상기 정수 포맷의 제1 속성의 부분들은 부호 부분과 정수 부분을 포함할 수 있고, 상기 정수 포맷의 제1 속성의 각각의 부분을 압축하는 단계는: 런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계; 및 골롬 라이스 코딩을 이용하여 상기 정수 부분을 압축하여, 상기 정수 포맷의 상기 속성의 각각의 부분을 압축하는 단계를 포함할 수 있다.
예시 실시예는, 버텍스의 속성의 압축된 부분을 메모리로부터 리딩하는 단계; 및
상기 속성의 상기 압축된 부분들을 압축 해제하는 단계로서, 상기 속성의 부호 부분을 포함하는 압축된 부분들을 기반으로 런 렝스 디코딩을 이용하고; 상기 속성의 지수 부분을 포함하는 압축된 부분을 기반으로 제로 런 디코딩과 골롬 라이스 디코딩을 이용하고; 및 상기 속성의 가수 부분, 정수 부분, 및 분수 부분 중의 하나를 포함하는 압축된 부분을 기반으로 골롬 라이스 디코딩을 이용하는 단계를 포함할 수 있는 방법을 제공한다.
예시 실시예는, 그래픽 처리 유닛의 그래픽스 파이프라인으로서, 상기 그래픽스 파이프 라인은 버텍스 쉐이더로부터 출력되는 버텍스의 하나 이상의 속성들을 받는 압축기로서, 상기 압축기는 각 속성의 포맷을 결정하고, 상기 속성의 포맷을 기반으로 각 속성을 부분들로 분리하고, 상기 부분의 타입을 기반으로 상기 속성의 각각의 부분을 압축하고, 상기 속성의 상기 압축된 부분들을 메모리에 저장하는 압축기를 포함할 수 있다.
본 발명 에 따르면, 위치 및 비위치 속성 데이터들이 압축되고 압축 해제될 수 있다.
하기에서는, 본원에 개시된 내용의 양태들이 도면에 도시된 예시적인 실시예를 참조하여 기술될 것이다, 여기에서:
도 1은 그래픽스 파이프라인의 예시 실시예의 하이 레벨 블록도를 도시한다;
도 2는 본원에 개시된 내용에 따라 비닝(binning) 동안에 속성 압축 플로우를 보여 주는 그래픽스 파이프라인의 예시 실시예의 하이 레벨 블록도를 도시한다;
도 3는 본원에 개시된 내용에 따라 비닝(binning) 단계 후의 속성 압축 해제 플로우를 보여 주는 그래픽스 파이프라인의 예시 실시예의 하이 레벨 블록도를 도시한다;
도 4는 본원에 개시된 내용에 따라 비닝 단계 전의 속성 압축의 예시 실시예의 보다 구체적인 순서도를 도시한다.
도 4는 본원에 개시된 내용에 따라 비닝 단계 후의 속성 압축 해재의 예시 실시예의 보다 구체적인 순서도를 도시한다.
도 5는 본원에 개시된 내용에 따라 위치 및 비위치 속성 데이터를 압축하는 속성 압축기를 구비하는 GPU를 구비하는 전자 장치를 도시한다.
하기의 상세한 설명에서, 본 개시의 완전한 이해를 제공하기 위해 수 많은 특정의 구체적인 사항이 설명된다. 그러나, 본 개시된 양태들은 이러한 특정의 구체적인 사항들이 없이도 실행될 수 있음은 당업자에 의해 이해될 것이다. 다른 경우에, 공지된 방법들, 절차들, 부품들, 및 회로들은 본원에 개시된 내용을 불명료하게 하지 않기 위해 상세히 기술되지 않는다.
본 명세서를 통하여, “하나의 실시예” 또는 “일 실시예”의 참조는 그 실시예와 연관되어 기술된 특별한 특징, 구조, 또는 특성이 본원에 개시된 적어도 하나의 실시예에 구비될 수 있음을 의미한다. 따라서, 본 명세서를 통하여 여러 곳에서 구문 “하나의 실시예에서” 또는 “일 실시예에서” 또는 “일 실시예에 따라” (또는 유사한 의미를 갖는 다른 구문들)가 나타나는 것은 반드시 모두가 동일한 실시예를 참조하지 않아도 된다. 또한, 특별한 특징들, 구조들, 또는 특성들이 하나 이상의 실시예에서 어떤 적절한 방식으로 조합될 수 있다. 이와 관련하여, 본원에서 사용되었듯이, 단어 “예시적인”은 “예시, 경우 또는 도시”를 위해 제공되는 것을 의미한다. 본원에서 “예시적인”으로 기술된 어떤 실시예는 다른 실시예들에 대해 반드시 더 선호하는 또는 장점을 갖는 것으로서 해석되지는 않는다. 또한, 특별한 특징들, 구조들, 또는 특성들이 하나 이상의 실시예에서 어떤 적절한 방식으로 조합될 수 있다. 또한, 본원에서의 논의의 문맥에 따라, 단수의 용어가 해당 단수 형태를 포함하는 해당 복수의 형태 또는 복수의 용어를 구비할 수 있다. 유사하게, 하이픈으로 연결된 용어(예: “차원의(two-dimensional)”“소정의(pre-determined)”“픽셀 특정의(pixel-specific), 등)가 해당하는 하이픈으로 연결되지 않은 버전(예: “차원의(two dimensional)의”, “소정의(predetermined)”“픽셀 특정의(pixel specific), 등)과 함께 때때로 서로 바꾸어 쓸 수 있도록 사용될 수 있으며, 대문자로 시작하는 단어(예: 카운터 클록(Counter Clock), “로우 설렉트(Row Select)”“”등)는 해당하는 대문자로 시작하지 않는 버전(예: 카운터 클록(counter clock), “로우 설렉트(row select)”“”등)과 함께 서로 바꾸어 쓸 수 있도록 사용될 수 있다. 이러한 때때로 서로 바꾸어 쓰는 것은 서로 불일치하는 것으로 간주되어서는 안된다.
또한, 본원에서의 논의의 문맥에 따라, 단수의 용어가 해당 단수 형태를 포함하는 해당 복수의 형태 또는 복수의 용어를 구비할 수 있다. 본원에서 도시되고 논의된 (부품도를 포함하는) 여러 도면은 단지 도시 목적이며, 크기대로 도시되지 않았음을 또한 유의해야 한다. 유사하게, 여러 파형들과 타이밍도들은 단지 도시 목적으로 도시되어 있다. 예를 들어, 구성요소의 몇몇의 크기는 명확성을 위해 다른 구성요소에 비해 상대적으로 과장될 수도 있다. 또한, 적절히 고려되면, 참조 부호들은 해당 및/또는 유사한 구성요소를 나타내기 위해 도면들 사이에서 반복되어 있다.
본원에서 사용되는 용어들은 단지 몇몇 예시 실시예들을 기술하는 것을 목적으로 하며, 청구되는 내용을 한정하는 것을 의도하지는 않는다. 본원에서 사용되는 바와 같이, 문맥이 명확히 다르게 지칭하지 않는 한, 단수 형태 “하나의(a, an)”및 “상기(the)”는 또한 복수 형태를 포함한다. 본 명세서에서 사용될 때, 용어들 “포함하다” 및/또는 “포함하는”은 언급된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 부품들의 존재를 규정하며, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 부품들, 및/또는 그룹들의 존재 또는 부가를 배제하지 않는다. 본원에서 사용된 용어들 “제1”“제2”등은 서로 선행하는 명사를 위한 표시로서 사용되며, 명확히 다르게 정의되지 않는 한 (예를 들어, 공간적인, 시간적인, 로직적인, 등의) 순서의 어떤 형태를 의미하지는 않는다. 또한, 동일한 참조 부호는 동일한 또는 유사한 기능을 갖는 부분들, 부품들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭하기 위해 2개 이상의 도면에 걸쳐 사용될 수 있다. 이러한 사용은 그러나 단지 논의의 도시의 간략화와 용이성을 위한 것이며, 이러한 부품들 또는 유닛들의 구조적 및 설계적 상세 항목들은 모든 실시예를 통해서 같다거나 이러한 공통적으로 참조되는 부분들/모듈들이 본원에 개시된 예시 실시예들의 몇몇을 수행하기 위한 유일한 방법이라는 것의 의미하지는 않는다.
요소 또는 층이 다른 요소 또는 층의 “위에 있다”, “연결된다”, 또는 “결합된다”라고 언급될 때, 이는 그 다른 요소 또는 층의 직접 위에 있거나, 연결되거나, 결합되거나, 또는 중간에 또 다른 요소나 층이 존재할 수 있음을 의미한다. 반대로, 요소가 다른 요소 또는 층의 “바로 위에 있다”, “직접 연결된다”, 또는 “직접 결합된다”라고 언급될 때, 그 중간에 다른 요소나 층이 존재하지 않는다. 유사한 참조부호는 본원을 통하여 유사한 요소를 지칭한다. 본원에서 사용되듯이, 용어 “및/또는”는 연관된 나열된 항목의 하나 이상의 어떤 및 모든 조합을 포함한다.
본원에서 사용된 용어들 “제1”“제2”등은 서로 선행하는 명사를 위한 표시로서 사용되며, 명확히 다르게 정의되지 않는 한 (예를 들어, 공간적인, 시간적인, 로직적인, 등의) 순서의 어떤 형태를 의미하지는 않는다. 또한, 동일한 참조 부호들은 동일한 또는 유사한 기능을 갖는 부분들, 부품들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭하기 위해 2개 이상의 도면에 걸쳐 사용될 수 있다. 이러한 사용은 그러나 단지 논의의 도시의 간략화와 용이성을 위한 것이며, 이러한 부품들 또는 유닛들의 구조적 및 설계적 상세 항목들은 모든 실시예를 통해서 같다거나 이러한 공통적으로 참조되는 부분들/모듈들이 본원에 개시된 예시 실시예들의 몇몇을 수행하기 위한 유일한 방법이라는 것의 의미하지는 않는다.
달리 정의되지 않으면, 본원에서 사용되는 (기술적 및 과학적 용어를 포함하는) 모든 용어들은 본 내용이 속하는 당업자에 의하여 통상적으로 이해되는 바와 같이 동일한 의미를 가진다. 통상적으로 이용되는 사전에서 정의된 것들과 같은 용어들은 관련 분야의 문맥에서의 그 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며 본원에서 그와 같이 표현적으로 정의되지 않는 한 이상화된 지나치게 형식적인 의미로 해석되지 않아야 함을 또한 이해하여야 한다.
본원에서 사용되었듯이, 용어 “모듈”은 모듈과 관련되어 본원에 기술된 기능을 제공하도록 구성된 소프트웨어, 펌웨어, 및/또는 하드웨어의 어떤 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어들로 구현될 수 있으며, 본원에서 기술된 어떤 구현예에서 사용된 용어 “하드웨어”는, 예를 들어, 단독으로 또는 어떤 조합으로, 하드와이어드 회로, 프로그래머블 회로, 스테이트 머신 회로, 및/또는 프로그래머블 회로에 의해 실행되는 명령어를 저장하는 펌웨어를 포함할 수 있다. 모듈들은, 일괄적으로 또는 개별적으로, 보다 큰 시스템의 부분, 예를 들어, 이에 한정됨이 없이, 집적 회로(IC), 시스템 온 칩(SoC) 등을 형성하는 회로로서 구현될 수 있다.
본원에 개시된 내용은 메모리 대역폭을 절약할 수 있고 그래픽스 프로세서 유닛(GPU) 성능을 개선할 수 있는 버텍스 속성 데이터(프리 버텍스 쉐이더 또는 포스트 버텍스 쉐이더)의 효과적인 압축 기술을 제공한다. 보다 상세하게는, (위치적 및 비위치적 모두의) 속성 데이터의 압축은 포스트 비닝 패스 결집 오프 칩 메모리 트래픽을 감소시킬 수 있다. 본원에 기술된 이 위치적/비위치적 속성 압축/압축 해제 기술은 멀티 패스 렌더링 설계에 있어서 다수의 버텍스 속성 페치의 메모리 대역폭을 상당히 감소시킬 수 있다. 더욱이, 속성 데이터의 압축에 의해 제공되는 오프 칩 및 온 칩의 감소로 인하여 압축되지 않은 속성 데이터와 연관된 메모리 트래픽과 비교하여 파워를 절약할 수 있다.
일 실시예에서, 본원에 개시된 내용은 위치 및 비위치 버택스 속성들의 압축을 제공한다. 이러한 속성들의 압축은 상황 인식 압축(context-aware compression] 및 상황 비인식 압축(context-unware compression)일 수 있다. 상황 인식 압축을 위해, 속성의 성분을 기반으로 속성은 보다 작은 블록들 또는 덩어리들로 분리될 수 있으며, 선택된 압축 기술은 각각의 서로 다른 속성 성분 블록에 적용될 수 있다. 예를 들어, 위치, 색상, 노멀 등의 속성 타입을 알게 됨으로써, 속성은 가변 크기의 성분들(예: 부호, 지수, 가수, 분수, 정수)로 분리될 수 있고, 성분 데이터에 맞게 된 압축 기술이 사용될 수 있다. 속성 성분의 분리는 또한 특별한 성분들로 압축될 수 있는 특별한 성분용의 데이터의 잠적적 범위에 관련된 추가적인 정보를 구비할 수 있다.
본원에 개시된 속성 압축 기술은 속성들의 압축된 리스트를 발생시키기 위해 프리 버텍스 쉐이더 및/또는 포스트 버텍스 쉐이더를 압축하는 압축 컴퓨트 쉐이더를 제공하기 위하여, 하드웨어, 소프트웨어, 및/또는 펌웨어적인 모듈로서 구현될 수 있다. 높은 스루풋과 낮은 레이턴시 속성 압축 및 압축 해제 기술을 제공할 수 있는 다단계이며, 병렬적이고, 빠른 랜덤 액세스의 인코딩 및 디코딩기술을 제공하기 위해, 그에 한정됨이 없이, 델타 압축, 런 렝스 인코딩, 제로 인코딩, 및 골롬 다이스 인코딩과 같은 단순하지만 효과적인 압축 기술이 사용될 수 있다. 추가적으로, 전통적인 런 렝스 인코딩보다 효과적으로 속성 데이터에서 제로를 효과적으로 압축하는 맞춤형 런 렝스 제로 인코딩 기술이 사용될 수 있다.
본원에 개시된 일 실시예는 블록내 순차적 액세스 및 크로스 블록 랜덤 액세스 능력과 낮은 평균 레이턴시를 갖는 포트스-버텍스 쉐이더 속성 타입 인식/비인식 압축 기법을 제공한다. 속성 데이터를 압축하기 위해서 사용될 수 잇는 압축 기법이 속성의 포맷에 따라서 변할 수 있다. 본원에 개시된 다른 실시예는 프리 버텍스 쉐이더 속성 타입 인식형/비인식형 압축 기술을 제공한다.
압축된 속성 데이터를 위한 헤더 정보와 이 압축된 속성 데이터는 계층적 메모리 액세스와 연관된 추가적인 오버헤드와 연관된 레이턴시를 피하기 위해 통일된 저장 장치에서 조합될 수 있다. 데이터 성분은 잦은 고정 크기 심볼 인코딩의 오버헤드가 없는 순차적인 불필요한 데이터에 최적화될 수 있는 전통적인 런 렝스 인코딩 기법과 연관된 오버헤드를 줄이는 제로 인코딩 기법과 함께 조정형 압축 기법들을 사용할 수 있다.
도 1은 쉐이더 코어 그래픽스 파이프라인(100)의 예시 실시예의 하이 레벨 블록도를 도시한다. 쉐이더 코어 그래픽스 파이프라인(100)은 프리 버텍스 쉐이더(VS) 스테이지들(101), 버텍스 쉐이더(VS)(102), 쉐이더 출력 디스패치(103), 프리미티브 어셈블리(104), 및 동적 랜덤 액세스 메모리(DRAM)와 같은 속성 저장 장치(105)를 구비할 수 있다. 그래픽스 파이프라인(100)의 스테이지들은 보통 도시된 순서를 따르며, 하나 이상의 스테이지가 애플리케이션의 요구에 따라 패스스루(path-through)로서 동작할 수 있다.
그래픽스 렌더링 과정의 첫번째 단계 동안에, 프리 버텍스 쉐이더 스테이지들(101)은 메모리(미도시)에서 프리미티브들을 페칭하고, 프리미티브 상에서 어떤 처리를 수행하고, 이후 프리미티브들을 VS(102)로 보낼 수 있다. 이 VS(102)는 3차원(3D) 형상(geometry)을 처리하기 위해 변환과 몇몇 맞춤형 처리 단계들을 수행할 수 있다. VS(102)는 또한 프리미티브들의 버틱스들과 연관된 속성들 상에서 프론트 엔드 처리를 수행할 수 있다. VS(102)에 더하여, 그래픽스 하드웨어 렌딩 파이프라인(100)은, 애플리케이션의 요구와 파이프라인(100)의 능력에 따라 헐 쉐이더(hull shader)(HS), 도메인 쉐이더(DS), 및 형상 쉐이더(GS)(모두 미도시)를 선택적으로 구비할 수 있다.
VS(102)의 출력은 쉐이더 출력 디스패치(103)로 보내어져, 거기서 위치 속성들은 프리미티브 어셈블리(104)로 보내지고, 비위치 속성들은 속성 저장 장치(105)로 보내질 수 있다. 프리미티브 어셈블리(104)의 출력은 또한 속성 저장 장치(105)로 보내질 수 있다. 버텍스 쉐이더 스테이지들(VS/HS/DS/GS)의 쉐이딩된 (위치 및 비위치) 속성들은 프래그먼트 처리 파이프라인(미도시) 상으로 통과될 수 있다.
위치/비위치 속성들은 애플리케이션 정의된 양일 수 있으며, 드라이버는 (그래픽스 애플리케이션 프로그래밍 인터페이스(API) 정의 방식으로) 애플리케이션의 요청에 따라 속성 저장 장치(105)에 속성들을 배열할 수 있다. 일반적으로, 속성 데이터는 압축되지 않으며, 불필요한 상당한 양을 포함할 수 있다.
전통적인 타일 기반의 디퍼드 렌더링(tile-based-deferred-rendering)(TBDR) 설계에서, 완전한 세트의 형상들 또는 부분적으로 큰 세트의 형상들이 버텍스 쉐이더 스테이지들에서 처리될 수 있고, 완전한 타일(per-tile) 중첩 형상이 확인될 수 있다. 프래그먼트 처리가 시작할 때까지, 완전한 세트의 데이터가 그 전체로서 또는 배치들로 그룹지어져서 (오프 칩 또는 온 칩) 저장 장치에서 보유될 수 있다. 저장 배열은 많은 양의 (온 칩 및/또는 오프 칩) 메모리 트래픽에 기여할 수 있다. 메모리 대역, 그래픽스 성능 및 파워 소모는 밀접하게 관련될 수 있다. 많은 그래픽스 애플리케이션들이 이미 원래부터 메모리 바운드(memory bound)이며, TBDR 처리를 기반으로, 애플리케이션은 전통적인 방식으로 저장된 버텍스 속성들을 기반으로 성능에 있어서 무시할 수 없는 손실을 경험할 수 있다.
버텍스 쉐이딩된 속성들은 위치 속성들과 비위치 속성들 모두를 포함할 수 있다. 위치 및 비위치 속성들 모두는 벡터당 많은 스칼라들을 포함할 수 있는 벡터들이다. 위치 속성의 예시는 4개의 스칼라(X,Y,Z,W)를 좌표들로서 사용할 수 있으며, 여기에서, 예를 들어, X는 이미지에서 수평 위치일 수 있으며, Y는 이미지에서 수직 위치일 수 있으며, Z는 이미지에서 눈으로부터의 깊이 또는 거리일 수 있으며, W는 원근 보간(perspective-correct interpolation)을 수행하기 위해 사용될 수 있는 동차 좌표계(homogeneous coordinate)일 수 있다. 위치 속성들을 위한 예시 포스트 버텍스 쉐이딩(VS/GS/HS/DS)은 32 비트 부동 소수점(F32), 16 비트 부동 소수점(F16), 기타 다른 맞춤형 부동 소수점 형식, 및 고정 소수점(부호.정수 비트.분수 비트)을 포함할 수 있다. 비위치 속성의 예시는 4개의 스칼라(R,G,B,A)를 또한 사용할 수 있는 색상이며, 여기에서, 예를 들어, R은 적색을 위한 세기값을 나타내며, G는 녹색을 위한 세기값을 나타내며, B는 청색을 위한 세기값을 나타내며, A는 0.0(완전히 투명)과 1.0(불투명) 사이의 수이다. 비위치 속성들의 예시 포맷은 F32와 16 비트 부동 소수점(F16)을 포함할 수 있다.
위치 속성들은 쉐이더 출력 디스패치(103)로부터 프리미티브 어셈블리(104)로 이어지고, 이어 비닝 전에 속성 저장 장치(105)로 이어질 수 있다. 위치 및 비위치 속성들 모두는 속성 저장 장치(105)에 저장될 수 있고, 특별한 속성들과 처리되는 특별한 속성들의 포맷에 따라 크기가 변할 수 있다. 비닝은 압축된 프리미티브 블록과 그 블록의 프리미티브로의 지점까지 빈(bin)당 하나의 블록과 프리미티브 인디케이터를 단지 사용할 수 있다.
프리 VS 스테이지들(101)과 VS(102)는 버텍스 버퍼 오브젝트(VBO)(미도시)로부터 속성들을 페칭할 수 있다. 배칭은 제한된 변하는 저장 장치 크기를 기반으로 제한될 수 있다. VS(102)에 의해 처리된 후에, 비위치 속성들은 칩 상에 저장될 수 있으며, 이 경우 오프 칩 트래픽(off-chip traffic)은 없을 것이다. 포스트 버텍스 쉐이더 속성들은, 그러나, 온 칩 및/또는 오프 칩 상에 저장될 수 있다.
도 2는 본원에 개시된 내용에 따라 비닝(binning) 전에 속성 압축 플로우를 보여 주는 그래픽스 하드웨어 파이프라인(200)의 예시 실시예의 하이 레벨 블록도를 도시한다. 그래픽스 하드웨어 파이프라인(200)은 버텍스 쉐이더(VS)(201), 쉐이더 출력 디스패치(202), 스테이징 버퍼(203), 프리미티브 어셈블리(204), 래스터라이저 프론트 엔드(rasterizer frontend)(205), 및 오프 칩 DRAM과 같은 속성 저장 장치(206)를 구비할 수 있다. 래스터라이저 프론트 엔드(205)는 비닝 엔진(211), 리맵 로직(212), 조정형 변수 압축기(APC)(213), 및 기타 래스터라이저 특정 로직을 구비할 수 있다. 프리 버텍스 쉐이더 스테이지들은 도 2에 도시되어 있지 않다. 도 2에 도시된 쉐이더 코어 그래픽스 파이프라인(200)의 일부는 고정 기능 하드웨어를 사용하는 모듈 및/또는 소프트웨어 및/또는 프로그래머블 로직으로서 수행될 수 있다.
VS(201)는, 예를 들어, 2차원 표면에 투사된 3차원(3D) 형상을 처리하기 위해 변환과 하나 이상의 맞춤형 처리를 수행하여, 프리미티브들의 버텍스들과 연관된 속성들 상의 프론트 엔드 처리를 수행할 수 있다. VS(201)는 속성들 상의 처리 단계를 적용하고 이어 쉐이딩된 속성들을 출력할 수 있다. VS(201)에 더하여, 쉐이더 코어 그래픽스 파이프라인(200)은, 응용의 요구에 따라 헐 쉐이더(hull shader)(HS), 도메인 쉐이더(DS), 및 형상 쉐이더(GS), 및 컴퓨트 쉐이더(CS)(모두 미도시)를 선택적으로 구비할 수 있다.
VS(201)의 출력은 쉐이더 출력 디스패치(202)로 보내질 수 있다. 쉐이더 출력 디스패치(202)는 위치 속성들을 프리미티브 어셈블리(203)로 보내고, 비위치 속성들을 스테이징 버퍼(204)로 보낼 수 있다. 스테이징 버퍼(204)는 프리미티브 어셈블리(203)와 연관된 어떤 레이턴시를 감추기 위해 임시 스테이징 영역을 제공할 수 있다. 스테이징 버퍼(204)는 또한 비위치 속성 데이터의 블록들이 리맵 로직(212)으로 보내지기 전에 축적될 수 있는 임시 저장 장치를 제공할 수 있다.
프리미티브 어셈블리(203)의 출력은 비닝 엔진(211)으로 보내 질 수 있다. 비닝 엔진(211)으로부터 출력된 위치 속성 데이터는 리맵 로직(212)으로 보내질 수 있다. 스테이징 버퍼(204)의 출력은 리맵 로직(212)으로 보내질 수 있다. 리맵 로직(212)은 변환된 비위치 속성 데이터와 변환된 위치 속성 데이터를 APC(213)로 출력한다. 비닝 엔진(211)은 위치 속성 데이터와 관련된 리맵 로직(212)으로부터 제어 정보를 받을 수 있다.
파이프라인(200)의 프론트 엔드 부분(즉, 프리 버텍스 스테이지들 및 VS(210))에서, 처리된 데이터는 버텍스 메이저 데이터 장치에 배열될 수 있고, 이는 또한 AoS(array-of-structure) 데이터 장치로서 지칭될 수 있다. 백 엔드 파이프(205)에서, 처리된 데이터는 속성 메이저 데이터 장치에 배열될 수 있으며, 이는 또한 SoA(sturcture-of-array)로서 지칭될 수 있다. 리맵 엔진(212)은 스테이징 버퍼(204)로부터 받은 비위치 속성 데이터와 비닝 엔진(211)으로부터 받은 위치 속성 데이터를 AoS 데이터 장치로부터 SoA 데이터 장치로 전달한다.
APC(213)는 도 4a와 관련하여 보다 상세히 기술되는 바와 같이, 비위치 속성 데이터와 위치 속성 데이터를 압축한다. 일 실시예에서, APC(213)는, 이에 한정됨이 없이, 골롬 라이스 인코딩, 델타 압축, 런 렝스 인코딩, 및 제로 인코딩과 같은 무손실 압축 기술을 사용할 수 있다. 다른 실시예에서, 손실이 있는 압축 기법이 렌더링된 이미지 화질이 감소되더라도 트래픽을 더 감소시키고자 사용될 수 있다. 백 엔드 파이프(205)의 출력이 즉시 되돌려 리딩되지 않을 수 있기 때문에 백 엔드 파이프(205)의 출력은 어떤 캐쉬 계층을 바이패싱하는(온 칩 또는 오프 칩) 저장 장치로 직접 보내질 수 있어서, 캐싱이 필요하지 않을 수 있다. 백 엔드 파이프(205)의 출력이 캐싱 계층을 통해 보내지기보다는 저장 장치(206)로 직접 보내지기 때문에 파워 소비가 또한 감소될 수 있다.
도 3는 본원에 개시된 내용에 따라 비닝(binning) 단계 후의 속성 압축 해제 플로우를 보여 주는 ?R이더 코어 그래픽스 파이프라인(200)의 예시 실시예의 하이 레벨 블록도를 도시한다. 속성 압축 해제 중에, 압축된 속성 데이터는 블록들에 의해 저장 장치(206)로부터 캐시 계층(207)으로 보내진다. 캐시 계층(207)으로부터, 압축된 속성 데이터는 속성 페처(attribute fetcher)(AF)(220) 내에서 조정형 변수 압축 해제기(APD)로 보내진다. APD(221)는, 압축된 속성 데이터와 연관된 헤더 정보에 의해 지시되듯이, 압축되는 방식을 기반으로 속성 데이터를 압축 해제한다. 압축 해제된 속성 데이터는 속성 버퍼(222)에 임시로 저장될 수 있다. 속성 버퍼(222)는 백 엔드 파이프 요청들(223)과 비위치 속성 데이터를 위한 워크 스케줄러(224)로부터 받은 요청들에 응답할 수 있다. 위치 속성 데이터는 픽셀 쉐이더 코어(226) 내의 온 칩 버퍼(225)로 보내질 수 있다. 도 3에 도시된 쉐이더 코어 그래픽스 파이프라인(200)의 일부는 고정 기능 하드웨어를 사용하는 모듈로서 및/또는 소프트웨어 및/또는 프로그래머블 로직으로서 구현될 수 있다.
도 4a는 본원에 개시된 내용에 따라 비닝 단계 전의 속성 압축(400)의 예시 실시예의 보다 구체적인 순서도를 도시한다. 속성 데이터는, 예를 들어, 401로 표시된 백 엔드 리유스 윈도우를 위한 속성 블록들에 배열될 수 있다. 402에서, 몇몇 웨이브들을 포함할 수 있는 속성 블록은 APC(213)(도 2)에 의해 수신된다. 웨이브는 버텍스들의 그룹일 수 있으며, 워프(warp)로서 또한 지칭될 수 있다. 일 실시예에서, 웨이브는 32개의 버텍스들일 수 있으며 완전히 패킹되지 않을 수도 있다. 다른 실시예에서, 웨이브는 32개 이상의 버텍스들일 수 있으며, 32개 미만의 버텍스들일 수도 있다. 블록은 하나 미만, 정확히 하나, 또는 하나보다 많은 웨이브들로부터 포스트 VS 속성들을 포함할 수 있다. 속성 블록들은, 이에 한정됨이 없이, 골롬 라이스(GR) 코딩 등을 위한 성분당 수단과 같은 추가적인 압축 관련 정보를 포함할 수 있다. 골롬 라이스 인코딩은 효과적인 압축을 위한 피봇(pivot)을 사용한다. 다른 실시예에서는, 다른 피봇이 선택될 수 있지만, 일 실시예에서, 성분당 수단은 피봇으로서 선택되었다. 403에서, 속성 타입 인식 성분 레벨 데이터가 추출될 수 있다. 예를 들어, 속성이 F32 또는 F16 포맷에 포매팅되면, 부호 데이터, 지수 데이터 및 가수 데이터가 추출된다. 속성이 고정 소수점 포맷에 포매팅되면, 부호 데이터, 정수 데이터, 및 분수 데이터가 추출된다. 속성이 정수 포맷이면, 부호 데이터와 정수 데이터가 추출된다. 404에서, 속성 데이터의 어떤 바이어스가 속성 데이터에서 선택적으로 차감될 수 있다. 어떤 바이어스 데이터가, 예를 들어, 속성 데이터와 연관된 헤더로부터 얻어질 수 있다.
405에서, 추출된 데이터가 부호 데이터이면, 부호 데이터는 런 렝스 인코딩 기법을 이용하여 압축된다.
406에서, 추출된 데이터가 지수 데이터를 포함하면, 예를 들어, XOR(exclusive OR)을 이용하여 지수 데이터 상에서 1차 미분 동작이 수행될 수 있다. 407에서, 지수 데이터는, 이에 한정됨이 없이, 제로 런 인코딩 기법, 골롬 라이스 인코딩, 델타 압축, 런 렝스 인코딩, 및 제로 인코딩을 이용하여 압축될 수 있다. 제로 런 인코딩은 반복되는 제로 값을 위한 런 렝스 값을 이용하여 지수 데이터에 있는 단지 반복되는 제로 값을 인코딩한다. 지수 데이터의 비제로 값은 인코딩되지 않는다.
408에서, 추출된 데이터가 가수, 정수 및/또는 분수 데이터를 포함하면, 예를 들어, XOR(exclusive OR)을 이용하여 속성 데이터 상에서 1차 미분 동작이 수행될 수 있다. 409에서, 가수, 정수 및/또는 분수 속성 데이터는, 그에 한정됨이 없이, 골롬 라이스 인코딩, 델타 압축, 런 렝스 인코딩, 및 제로 인코딩을 이용하여 압축될 수 있다. 일 실시에에서, 제로 런 인코딩은 겪는 데이터 타입에 따라 선택적으로 사용될 수 있다.
405, 407, 및 409로부터의 압축된 데이터는 410에서, 압축 헤더 데이터 및 인코딩된 데이터로서 출력될 수 있으며, 저장 장치(206)에 저장될 수 있다(도 2 및 도 3).
도 4b는 본원에 개시된 내용에 따라 비닝 단계 후의 속성 압축 해제(450)의 예시 실시예의 보다 구체적인 순서도를 도시한다. 일 실시예에서, 속성 압축 해제(450)는 도 4a의 압축(400)의 반대이다. 압축된 속성 데이터(410)가 저장 장치(206)로부터 액세스됨에 따라(도 2 및 도 3), 압축된 헤더 데이터는 압축된 속성 데이터를 부호, 지수, 및 가수/정수/분수 데이터로 분리하기 위해 사용될 수 있다. 압축된 부호 데이터는, 451에서, 예를 들어, 런 렝스 디코딩 기법을 이용하여 압축 해제될 수 있다. 압축된 지수 데이터는, 452에서, 이에 한정됨이 없이, 골롬 라이스 디코딩, 델타 압축 해제, 런 렝스 디코딩, 제로 디코딩, 및 제로 런 디코딩 기법을 이용하여 압축된다. 압축 해제된 지수 데이터의 1차 미분은 453에서 축적될 수 있다. 압축된 가수/정수/분수 데이터는, 454에서, 이에 한정됨이 없이, 골롬 라이스 디코딩, 델타 압축 해제, 런 렝스 디코딩, 및 제로 디코딩을 이용하여 압축 해제될 수 있다. 일 실시에에서, 제로 런 디코딩은 겪는 데이터 타입에 따라 선택적으로 사용될 수 있다. 1차 가수/정수/분수 데이터는 455에서 축적될 수 있다. 456에서, 압축 해제된 속성 데이터의 각각의 성분들은 합쳐질 수 있으며, 457에서, 속성 데이터는 도 4b의 401로 표시된 속성 블록들과 같은, 백 엔드 리유스 윈도우를 위한 속성 블록으로서 더 처리를 위해 유용하다. 속성 블록들은, 이에 한정됨이 없이, GR 등을 위한 성분당 수단과 같은, 추가적인 압축 관련 정보를 포함할 수 있다.
도 5는 본원에 개시된 내용에 따라 위치 및 비위치 속성 데이터를 압축하는 쉐이더 코어의 백 엔드 파이프를 구비하는 GPU를 구비하는 전자 장치(500)를 도시한다. 전자 장치(500)는, 이에 한정됨이 없이, 컴퓨팅 장치, PDA(personal digital assistant), 랩탑 컴퓨터, 모바일 컴퓨터, 웹 태블릿, 무선 폰, 셀 폰, 스마트폰, 디지털 뮤직 플레이어, 또는 유선 또는 무선 전자 장치에 사용될 수 있다. 전자 장치(500)는 컨트롤러(510), 이에 한정됨이 없이, 키패드, 키보드, 디스플레이, 터치스크린 디스플레이, 카메라, 및/또는 이미지 센서와 같은 입력/출력 장치(520), 메모리(530), 인터페이스(540), GPU(550), 버스(570)를 통해 서로 결합되는 이미징 처리 유닛(560)을 구비할 수 있다. 메모리(530)는 컨트롤러(510)에 의해 사용되는 명령 코드 또는 유저 데이터를 저장하도록 구성될 수 있다.
전자 장치(500)와 전자 장치(500)의 다양한 시스템 성분은 본원에 개시된 내용에 따라 위치 및 비위치 속성 데이터를 압축하는 쉐이더 코어의 프론트 엔드 및 백 엔드 파이프를 구비하는 GPU를 구비할 수 있다. 인터페이스(540)는 RF 신호를 이용하여 데이터를 무선 통신 네트워크로 또는 그로부터 송수신하도록 구성된 무선 인터페이스를 구비하도록 구성될 수 있다. 무선 인터페이스(540)는, 예를 들어, 안테나, 무선 트랜시버 등을 구비할 수 있다. 전자 시스템(500)은 또한, 이에 한정됨이 없이, CDMA(Code Division Multiple Access), GSM(Global System for Mobile Communications), NADC(North American Digital Communications), E-TDMA(Extended Time Division Multiple Access), WCDMA(Wideband CDMA), CDMA2000, Wi-Fi, Muni Wi-Fi(Municipal Wi-Fi), Bluetooth, DECT(Digital Enhanced Cordless Telecommunications), Wireless USB(Wireless Universal Serial Bus), Flash-OFDM(Fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing), IEEE 802.20, GPRS(General Packet Radio Service), iBurst, WiBro(Wireless Broadband), WiMAX, WiMAX-Advanced, UMTS-TDD(Universal Mobile Telecommunication Service - Time Division Duplex), HSPA(High Speed Packet Access), EVDO(Evolution Data Optimized), LTE-Advanced(Long Term Evolution - Advanced), MMDS(Multichannel Multipoint Distribution Service) 등과 같은 통신 시스템의 통신 인터페이스 프로토콜에서 사용될 수 있다.
본 명세서에서 기술된 내용과 동작들의 실시예들은 디지털 전자 회로에서, 또는 본 명세서에 개시된 구조들 및 그 구조적 균등물들을 비롯한, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어에서, 또는 그것들의 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 내용의 실시예들은 하나 이상의 컴퓨터 프로그램들, 즉 데이터 처리 장치에 의해 또는 그 동작을 제어하기 위해 실행을 위한 컴퓨터 저장 매체 상에서 인코딩되는 컴퓨터 프로그램 명령어들의 하나 이상의 모듈이 구현될 수 있다. 대체하여 또는 추가적으로, 데이터 처리 장치에 의한 실행을 위한 적절한 수신 장치로, 프로그램 명령어들은, 예를 들어, 전송을 위해 정보를 인코딩하기 위해 발생되는 기계에 의해 발생되는 전기, 광학, 또는 전자기 신호와 같은, 인공적으로 발생되는 전파 신호 상에서 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 장치, 컴퓨터 판독 가능 기판, 랜덤 또는 시리얼 액세스 메모리 어레이 또는 장치, 또는 그 조합이거나 그에 포함될 수 있다. 더욱이, 컴퓨터 저장 매체가 전파되지 않는 신호인 반면, 컴퓨터 저장 매체는 인공적으로 발생된 전파되는 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스이거나 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 분리된 물리적 성분들 또는 매체들(예: 다수의 CD, 디스크, 또는 다른 저장 장치들)이거나 그에 포함될 수 있다. 또한, 본 명세서에서 기술된 동작들은, 하나 이상의 컴퓨터 판독 가능 저장 장치에 저장된 또는 다른 소스들로부터 수신한 데이터 상에서 데이터 처리 장치에 의해 수행되는 동작들로서 구현될 수 있다.
본 명세서는 많은 특정 구현 상세사항들을 포함할 수 있지만, 이러한 구현 상세사항들은 청구되는 내용의 범위에 대한 한정으로 해석되어서는 안되고, 차라리 특별한 실시예들에 대해 특정적인 특징들의 기술로서 해석되어야 한다. 별개의 실시예들의 문맥에서 본 명세서에서 기술된 어떤 특징들은 또한 하나의 실시예에서의 조합으로 구현될 수 있다. 반대로, 하나의 실시예의 문맥에서 기술된 여러 특징들은 또한 별도로 또는 어떤 적절한 서브 조합으로 다수의 실시예에서 구현될 수 있다. 더욱이, 특징들이 어떤 조합으로 작용하는 것으로 또한 이와 같이 처음에 청구되는 것으로 상술될 수 있지만, 청구되는 조합으로부터의 하나 이상의 특징은 일부의 경우에 조합으로부터 제거될 수 있으며, 청구된 조합은 서브 조합 또는 서브 조합의 변형을 의도할 수 있다.
유사하게, 동작들이 특별한 순서로 도면에 도시되었지만, 원하는 결과들을 얻기 위해서, 이러한 동작들은 도시된 특별한 순서로 또는 순차적 순서로 수행되어야 하고, 또는 모든 도시된 동작들은 수행되어야 한다는 점을 이해하여야 한다. 어떤 경우에는, 멀티 태스킹과 병렬 처리가 유리하다. 더욱이, 상술한 실시예에서의 여러 시스템 성분의 분리는 모든 실시예에서의 이러한 분리를 요하는 것으로 이해해서는 아니되며, 기술한 프로그램 성분들 또는 시스템들은 일반적으로 하나의 소프트웨어 제품에서 같이 일체화되고 다수의 소프트웨어 제품들로 패키징되는 것으로 이해하여야 한다.
따라서, 내용의 특별한 실시예들이 본원에서 기술되었다. 다른 실시예들은 하기의 청구항들의 범위 내에 있다. 일부의 경우에, 청구항에서 설명된 동작들은 다른 순서로 수행될 수 있으며, 역시 바람직한 결과를 달성할 수 있다. 또한, 첨부된 도면에 도시된 프로세스들은, 바람직한 결과들을 얻기 위해서, 도시된 특별한 순서 또는 순차적 순서를 반드시 요하지 않는다. 어떤 구현예에서는, 멀티 태스킹과 병렬 처리가 유리하다.
당업자가 알 수 있듯이, 본원에서 기술된 혁신적인 컨셉은 넓은 범위의 응용에 걸쳐 수정되고 변할 수 있다. 따라서, 청구된 내용의 범위는 상기 논의된 특정한 예시적 교시로 한정되어서는 아니되며, 대신 하기의 청구항에 의해 정의되어야 한다.
101: 프리 VS 스테이지
102: 버텍스 쉐이더(VS)
103: 쉐이더 출력 디스패치
104: 프리미티브 어셈블리
105: 속성 저장 장치

Claims (10)

  1. 방법에 있어서,
    버텍스 쉐이더(vertex shader)로부터 출력된 버텍스의 하나 이상의 속성들의 포맷을 결정하는 단계로서, 상기 하나 이상의 속성들은 하나 이상의 위치 속성들과 하나 이상의 비위치 속성들을 포함하는 단계;
    상기 속성의 포맷을 기반으로 상기 하나 이상의 속성들 각각을 부분들로 분리하는 단계;
    상기 부분의 타입을 기반으로 상기 속성의 각각의 부분을 압축하는 단계; 및
    상기 버텍스의 상기 속성의 상기 압축된 부분들을 메모리에 저장하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    제1 속성의 포맷은 부동 소수점 포맷을 포함하고,
    상기 부동 소수점 포맷의 상기 제1 속성의 부분들은 부호 부분, 지수 부분, 및 가수 부분을 포함하고,
    상기 부동 소수점 포맷의 제1 속성의 각각의 부분을 압축하는 단계는:
    런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계;
    상기 지수 부분의 1차 미분을 결정하는 단계;
    제로 런 인코딩과 골롬 라이스(Golomb-Rice) 코딩을 이용하여 상기 지수 부분을 압축하는 단계;
    상기 가수 부분의 1차 미분을 결정하는 단계; 및
    골롬 라이스 코딩을 이용하여 상기 가수 부분을 압축하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    제2 속성의 포맷은 고정 소수점 포맷을 포함하고,
    상기 고정 소수점 포맷의 상기 제2 속성의 부분들은 부호 부분, 정수 부분, 및 분수 부분을 포함하고,
    상기 고정 소수점 포맷의 두번째의 각각의 부분을 압축하는 단계는:
    런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계;
    상기 정수 부분의 1차 미분을 결정하는 단계;
    골롬 라이스 코딩을 이용하여 상기 정수 부분을 압축하는 단계;
    상기 분수 부분의 1차 미분을 결정하는 단계; 및
    골롬 라이스 코딩을 이용하여 상기 분수 부분을 압축하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    제3 속성의 포맷은 정수 포맷을 포함하고,
    상기 정수 포맷의 제3 속성의 부분들은 부호 부분과 정수 부분을 포함하고,
    상기 정수 포맷의 제3 속성의 각각의 부분을 압축하는 단계는:
    런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계;
    상기 정수 부분의 1차 미분을 결정하는 단계; 및
    골롬 라이스 코딩을 이용하여 상기 정수 부분을 압축하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    제1 속성의 포맷은 고정 소수점 포맷을 포함하고,
    상기 고정 소수점 포맷의 상기 제1 속성의 부분들은 부호 부분, 정수 부분, 및 분수 부분을 포함하고,
    상기 고정 소수점 포맷의 제1 속성의 각각의 부분을 압축하는 단계는:
    런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계;
    골롬 라이스 코딩을 이용하여 상기 정수 부분을 압축하는 단계; 및
    골롬 라이스 코딩을 이용하여 상기 분수 부분을 압축하는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    제1 속성의 포맷은 정수 포맷을 포함하고,
    상기 정수 포맷의 제1 속성의 부분들은 부호 부분과 정수 부분을 포함하고,
    상기 정수 포맷의 제1 속성의 각각의 부분을 압축하는 단계는:
    런 렝스 인코딩을 이용하여 상기 부호 부분을 압축하는 단계; 및
    골롬 라이스 코딩을 이용하여 상기 정수 부분을 압축하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 버텍스 쉐이더의 상기 하나 이상의 속성들을 구조 배열의 어레이로부터 어레이 배열의 구조로 리매핑하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서,
    상기 버텍스의 제1 속성의 압축된 부분들을 메모리로부터 리딩하는 단계; 및
    상기 제1 속성의 상기 압축된 부분들을 압축 해제하는 단계로서, 상기 단계는:,
    상기 제1 속성의 부호 부분을 포함하는 압축된 부분을 기반으로 런 렝스 디코딩을 이용하고;
    상기 제1 속성의 지수 부분을 포함하는 압축된 부분을 기반으로 제로 런 인코딩과 골롬 라이스 디코딩을 이용하고; 및
    제1 속성의 가수 부분, 정수 부분, 및 분수 부분 중의 하나를 포함하는 압축된 부분을 기반으로 골롬 라이스 디코딩을 이용하는 단계를 더 포함하는 방법.
  9. 방법에 있어서,
    버텍스의 속성의 압축된 부분을 메모리로부터 리딩하는 단계; 및
    상기 속성의 상기 압축된 부분들을 압축 해제하는 단계로서,
    상기 속성의 부호 부분을 포함하는 압축된 부분들을 기반으로 런 렝스 디코딩을 이용하고;
    상기 속성의 지수 부분을 포함하는 압축된 부분을 기반으로 제로 런 디코딩과 골롬 라이스 디코딩을 이용하고; 및
    상기 속성의 가수 부분, 정수 부분, 및 분수 부분 중의 하나를 포함하는 압축된 부분을 기반으로 골롬 라이스 디코딩을 이용하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 버텍스의 상기 속성들의 부분들을 압축하는 단계를 더 포함하며, 상기 압축하는 단계는:
    상기 버텍스의 속성의 포맷을 결정하는 단계;
    상기 속성의 포맷을 기반으로 상기 속성을 부분들로 분리하는 단계;
    상기 부분의 타입을 기반으로 상기 속성의 각각의 부분을 압축하는 단계; 및
    상기 버텍스의 상기 속성의 상기 압축된 부분들을 상기 메모리에 저장하는 단계에 의하여 이루어지는 방법.
KR1020210033797A 2020-04-16 2021-03-16 효율적이고 빠른 랜덤 액세스가 가능한 형상 속성 압축 메커니즘 KR20210128335A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063011283P 2020-04-16 2020-04-16
US63/011,283 2020-04-16
US16/896,193 US11748839B2 (en) 2020-04-16 2020-06-08 Efficient fast random access enabled geometry attribute compression mechanism
US16/896,193 2020-06-08

Publications (1)

Publication Number Publication Date
KR20210128335A true KR20210128335A (ko) 2021-10-26

Family

ID=78081920

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210033797A KR20210128335A (ko) 2020-04-16 2021-03-16 효율적이고 빠른 랜덤 액세스가 가능한 형상 속성 압축 메커니즘

Country Status (2)

Country Link
US (1) US11748839B2 (ko)
KR (1) KR20210128335A (ko)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2387094B (en) * 2002-03-26 2005-12-07 Imagination Tech Ltd 3-D Computer graphics rendering system
US8355028B2 (en) 2007-07-30 2013-01-15 Qualcomm Incorporated Scheme for varying packing and linking in graphics systems
US8254701B1 (en) 2007-12-13 2012-08-28 Nvidia Corporation Data compression using a geometry shading unit
JP4979655B2 (ja) * 2008-08-07 2012-07-18 キヤノン株式会社 画像符号化装置及びその制御方法
US8619085B2 (en) 2010-03-08 2013-12-31 Broadcom Corporation Method and system for compressing tile lists used for 3D rendering
US9330475B2 (en) 2012-05-01 2016-05-03 Qualcomm Incorporated Color buffer and depth buffer compression
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US9628107B2 (en) * 2014-04-07 2017-04-18 International Business Machines Corporation Compression of floating-point data by identifying a previous loss of precision
US9947071B2 (en) 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. Texture pipeline with online variable rate dictionary compression
US20150379682A1 (en) * 2014-06-27 2015-12-31 Samsung Electronics Co., Ltd. Vertex attribute data compression with random access using hardware
GB2527822B (en) * 2014-07-03 2020-10-07 Advanced Risc Mach Ltd Graphics processing
US9589315B2 (en) 2015-05-06 2017-03-07 Mediatek Inc. Vertex data compression method and apparatus for compressing vertex data through analyzing channel properties and related vertex data decompression method and apparatus

Also Published As

Publication number Publication date
US11748839B2 (en) 2023-09-05
US20210327017A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
CN109640101B (zh) 压缩数据值的方法和装置、解压缩数据值的方法和装置
US10051285B2 (en) Data compression using spatial decorrelation
US9626730B2 (en) Method of and apparatus for encoding and decoding data
US9159114B2 (en) Texture decompression for graphics processors
US20160087647A1 (en) Data Compression Using Entropy Encoding
US8270736B2 (en) Depth buffer compression
CN105229695B (zh) 图形数据的基于子集的压缩和解压缩
KR20160001652A (ko) 데이터 프로세싱 방법 및 디바이스
JP6182225B2 (ja) カラーバッファ圧縮
KR101713041B1 (ko) 일반화된 플레인 인코딩을 이용한 확률적 깊이 버퍼 압축
EP4009636A2 (en) Data compression and packing
US9569882B2 (en) Four corner high performance depth test
US20140347380A1 (en) Universal codec
KR20210128335A (ko) 효율적이고 빠른 랜덤 액세스가 가능한 형상 속성 압축 메커니즘
CN114584777A (zh) 数据压缩和打包
EP3896656A1 (en) Image data compression
KR20210090088A (ko) 근사 삼중선형 필터링
US20230298251A1 (en) Methods and apparatus for processing graphics data
US20230252725A1 (en) Bounding volume hierarchy leaf node compression
KR20230142474A (ko) Gpu 데이터의 무손실 압축을 위한 방법 및 장치