KR20230073239A - 채널별 기반 텍스처 데이터의 압축 - Google Patents

채널별 기반 텍스처 데이터의 압축 Download PDF

Info

Publication number
KR20230073239A
KR20230073239A KR1020237012228A KR20237012228A KR20230073239A KR 20230073239 A KR20230073239 A KR 20230073239A KR 1020237012228 A KR1020237012228 A KR 1020237012228A KR 20237012228 A KR20237012228 A KR 20237012228A KR 20230073239 A KR20230073239 A KR 20230073239A
Authority
KR
South Korea
Prior art keywords
channels
channel
texture data
pixels
values
Prior art date
Application number
KR1020237012228A
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 KR20230073239A publication Critical patent/KR20230073239A/ko

Links

Images

Classifications

    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

샘플링 회로부는 픽셀들의 세트를 나타내는 텍스처 데이터의 채널들에 독립적으로 액세스한다. 하나 이상의 처리 유닛은 텍스처 데이터의 채널들을 개별적으로 압축하고, 픽셀들의 세트에 대한 텍스처 데이터의 채널들을 나타내는 압축된 데이터를 저장한다. 채널들은 픽셀들의 세트의 색상 값들을 나타내는 적색 채널, 청색 채널, 및 녹색 채널, 및 픽셀들의 세트의 투명도를 나타내는 알파 채널을 포함할 수 있다. 압축된 데이터를 저장하는 것은 압축 데이터를 캐시의 부분들에 기록하는 것을 포함할 수 있다. 처리 유닛들은 복수의 채널들 중 제1 채널의 값을 공유하는 픽셀들의 세트의 서브세트를 식별하고, 값, 제1 채널, 및 서브세트의 경계들을 나타내는 정보를 사용하여 픽셀들의 세트의 서브세트에 대한 제1 채널의 값을 나타낼 수 있다.

Description

채널별 기반 텍스처 데이터의 압축
본 발명은 그래픽 처리 유닛(graphics processing unit, GPU)에 관한 발명이다.
그래픽 처리 유닛(graphics processing unit, GPU)은 전형적으로 일련의 프로그램가능한 셰이더들 및 고정 함수 하드웨어 블록들로 형성된 그래픽 파이프라인을 사용하여 3차원(3D) 그래픽을 처리한다. 예를 들어, 프레임에서 보이는 객체의 3-D 모델은 사용자에게 디스플레이하기 위한 픽셀들의 값들을 생성하도록 그래픽 파이프라인에서 처리되는 삼각형들, 다른 다각형들, 또는 패치들(patches)의 세트에 의해 나타내어질 수 있다. 삼각형들, 다른 다각형들, 또는 패치들은 프리미티브들(primitives)이라고 총칭된다. 프로세스는 프리미티브들의 해상도보다 더 높은 해상도를 갖는 시각적 디테일들을 통합하기 위해 프리미티브들에 텍스처들을 매핑하는 것을 포함한다. GPU는 텍스처 값들이 그래픽 파이프라인에서 처리되고 있는 프리미티브들로의 맵핑에 이용가능하도록 텍스처 값들을 저장하는 데 사용되는 전용 메모리를 포함한다. 텍스처들은 디스크에 저장되거나 그래픽 파이프라인에 의해 필요할 때 절차적으로 생성될 수 있다. 전용 GPU 메모리에 저장되는 텍스처 데이터는 디스크로부터 텍스처를 로딩하거나 데이터를 절차적으로 생성함으로써 파퓰레이팅된다. 전용 GPU 메모리는 통상적으로 비교적 작은 메모리이며, 이는 전용 GPU 메모리에 저장될 수 있는 텍스처 데이터의 양을 제한한다. 텍스처 데이터를 파퓰레이팅하기 위해 요구되는 오버헤드는 특히 최종 스크린 이미지를 렌더링하는 데 텍스처 데이터의 작은 서브 세트만 사용되는 경우에 상당할 수 있다. 예를 들어, 텍스처들은 페이지에서의 데이터의 작은 부분만이 이미지를 렌더링하기 위해 사용되는 경우에도 페이지 기반으로 디스크로부터의 로딩된다. 오버헤드 문제는 프레임을 렌더링하면서 많은 수의 중간 텍스처들을 생성하는 애플리케이션들에서 악화되고, 이들 텍스처들은 프레임에 임베딩된 상이한 패스들에 의해 메모리로부터의 반복적으로 풀링된다(pulled). 따라서, 텍스처들의 생성 및 메모리로부터의 로딩은 둘 다, 적어도 부분적으로, GPU의 계산 스루풋과 이용가능한 메모리 대역폭 간의 증가하는 갭 때문에, GPU들에 대한 성능 이슈 및 전력 이슈이다.
첨부 도면을 참조함으로써 본 개시가 보다 잘 이해되고, 그의 많은 특징 및 이점이 당업자에게 명백해진다. 상이한 도면에서의 동일한 도면 부호의 사용은 유사하거나 동일한 아이템을 나타낸다.
도 1은 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 압축하는 처리 시스템의 블록도이다.
도 2는 일부 실시예들에 따른 미리 결정된 해상도로 3차원(3D) 장면들의 래스터화된 이미지들을 생성하도록 고차 지오메트리 프리미티브들을 처리하는 것과 채널별 기반으로 텍스처 데이터를 압축하는 것이 가능한 그래픽 파이프라인을 도시한다.
도 3은 일부 실시예들에 따른 다수의 채널들로 파티셔닝되는 텍스처 데이터의 블록도이다.
도 4는 일부 실시예들에 따른 텍스처 데이터의 픽셀들에 대한 메모리 레이아웃의 블록도이다.
도 5는 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 파티셔닝하는 메모리 레이아웃의 블록도이다.
도 6은 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 샘플링하는 처리 유닛의 부분의 블록도이다.
도 7은 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 캐싱하는 처리 시스템의 부분의 블록도이다.
도 8은 일부 실시예들에 따라 텍스처 데이터의 채널들에 독립적으로 액세스하고 텍스처 데이터의 채널들을 개별적으로 압축하는 방법의 흐름도이다.
도 9는 일부 실시예들에 따른 픽셀들의 세트에 대한 채널의 값들의 이미지이다.
도 10은 일부 실시예들에 따른 텍스처 데이터의 채널들에 독립적으로 액세스하고 텍스처 데이터의 채널들의 트리비얼(trivial) 값들을 개별적으로 압축하는 방법의 흐름도이다.
종래의 GPU들은 다음의 세 가지 접근법들을 사용하여 계산 스루풋과 메모리 대역폭 간의 갭에 의해 야기되는 이슈들을 완화시킨다: (1) 큰 최종 레벨 캐시, (2) 스크린 이미지의 직사각형 부분들을 나타내는 타일들을 비닝(binning) 및 렌더링 하는 것, 및 (3) 생성 시간에 텍스처들을 압축하는 것. 보다 큰 캐시들은 텍스처 픽셀들의 활성 작업 세트가 캐시의 용량보다 작을 때 스루풋과 대역폭 간의 불일치를 밸런싱하거나 극복한다. 그러나, 보다 높은 해상도는 보다 큰 활성 작업 세트 및 증가된 캐시 스래싱을 생성하기 때문에, 큰 캐시는 (많은 게임들에서 사용되는 4K 해상도와 같은) 보다 높은 해상도에서 이점을 덜 제공한다. 타일들의 크기를 감소시키는 것은 3D 장면에 존재하는 오버랩들을 억제할 수 있고, 한 번에 하나의 타일을 렌더링하는 것은 텍스처 생성 시에 대역폭을 절감한다. 그러나, 이러한 접근법은 장면을 렌더링하는 데 필요한 텍스처들을 판독하는 데 요구되는 대역폭에 최소의 영향을 미친다. 또한, 타일 렌더링은 컴퓨트 셰이더에 의해 렌더링되는 스크린 공간 조명 패스들 또는 패스들의 수를 변경하지 않는다. 텍스처들을 압축하는 것은 3D 패스들 및 컴퓨트 셰이더 패스들에 대한 대역폭을 절감할 수 있을 뿐만 아니라, 텍스처 생성 및 소비 시 대역폭을 보존할 수 있다. 그러나, 텍스처 압축의 효율은 텍스처 데이터의 로컬리티(locality) 특성에 의존하고, 높은 압축비들은 이미지를 렌더링하기 위해 사용되는 모든 픽셀들에 대해 달성하기 어렵다.
텍스처 데이터는 1차 차분 식들을 사용하여 압축된다. 타일은 하나의 픽셀을 기준 픽셀로서 선택하고, 기준 픽셀의 베이스 값과 다른 픽셀들의 값들 간의 차분들(본원에서 델타 값들로 지칭됨)을 계산함으로써 압축된다. 가장 큰 델타 값(예를 들어, 최악의 경우의 잔차 비트들)을 인코딩하는 데 요구되는 비트들의 수가 계산되고, 메모리에서 델타 값들을 어떻게 표현하는지를 결정하기 위해 사용된다. 픽셀들은 픽셀의 색상을 나타내기 위해 조합되는 적색, 청색 및 녹색 채널들과, 불투명/흑색으로부터의 투명/백색으로의 투명도를 표현하는 알파 채널과 같은 다수의 채널들로 세분된다. 델타 값들은 전형적으로 채널별 기반으로 계산된다. 예를 들어, 채널들에 대한 델타 값들은 기준 픽셀에서의 각 채널의 값들을 다른 픽셀들에서의 대응하는 채널들의 값들과 비교함으로써 계산된다. 채널들은 상이한 로컬리티 특성들을 갖고(또는 다소의 고주파수 데이터를 포함하고), 이에 따라 델타 값들 및 최악의 경우의 잔차 비트들은 채널들 간에 달라진다. 더욱이, 텍스처를 나타내는 픽셀들은 전형적으로, 하나의 픽셀의 채널들의 값들에 뒤이어 그 다음 픽셀에 대한 채널들의 값들 등이 이어지도록 이들의 공간 분포에 따라 메모리에 저장된다.이에 따라, 텍스처 데이터에 대한 압축비들은 가장 높은 엔트로피를 갖는 채널들, 예를 들어, 가장 낮은 정도의 로컬리티 및 가장 대량의 고주파수 데이터를 갖는 픽셀들에 의해 좌우된다. 예를 들어, 픽셀의 적색 및 청색 채널들이 높은 엔트로피 데이터를 포함하고 픽셀의 녹색 및 알파 채널들이 낮은 엔트로피 데이터, 예를 들어, 매우 높은 압축비들을 잠재적으로 생성할 수 있는 높은 정도의 로컬리티를 갖는 데이터를 갖는다면, 픽셀에 대한 전체 압축비는 적색 및 청색 채널들에서 달성가능한 (비교적 낮은) 압축비로 제한된다.
도 1 내지 도 10은 텍스처 데이터의 픽셀들의 채널들을 개별적으로 압축함으로써 텍스처 데이터 압축의 효율을 증가시키는 기법들의 실시예를 개시한다. 텍스처 데이터의 픽셀은 픽셀의 대응하는 색상 값들을 나타내는 적색 채널, 청색 채널, 및 녹색 채널과 같은 복수의 채널들, 및 픽셀의 투명도를 나타내는 알파 채널에 의해 표현된다. 일부 실시예들에서, (타일과 같은) 픽셀들의 세트를 나타내는 채널들은 메모리의 별개의 파티션들에 저장된다. 예를 들어, 픽셀들의 세트의 적색 채널의 값들은 제1 파티션에 저장되고, 청색 채널의 값들은 제2 파티션에 저장되고, 녹색 채널의 값들은 제3 파티션에서 저장되며, 알파 채널의 값들은 제4 파티션에 저장된다. 압축 알고리즘은 픽셀의 상이한 채널들의 값들에 개별적으로 적용된다. 일부 실시예들에서, 메모리 파티션들에 저장된 상이한 채널들에 대한 데이터는 개별적으로 판독되고 압축된다. 이에 따라, 상이한 메모리 파티션들에 저장된 데이터에 대한 압축비들은 대응하는 파티션들에 저장된 채널들의 값들의 엔트로피, 로컬리티, 또는 고주파수 데이터의 양에 의해 결정된다. 예를 들어, 높은 엔트로피 채널은 상대적으로 낮은 압축비를 갖고, 낮은 엔트로피 채널은 상대적으로 높은 압축비를 갖는다. 높은 엔트로피 채널을 낮은 엔트로피 채널과 별개로 압축하는 것은 조합된 높은 엔트로피 채널과 낮은 엔트로피 채널을 압축함으로써 달성되는 것보다 전체 압축비를 높인다.
일부 실시예들에서, 압축 알고리즘은 타일의 부분 전체에 걸쳐 채널의 동일한 값을 갖는 픽셀들을 포함하는 부분을 식별한다. 예를 들어, 압축 알고리즘은 타일에서의 픽셀들의 채널의 모든 값들이 흑색을 나타내기 위한 255의 값 또는 백색을 나타내기 위한 0의 값과 같은 동일한 값을 갖는 타일의 4 킬로바이트(kB), 8kB, 또는 16kB 섹션을 식별할 수 있다. 압축 알고리즘은 트리비얼 값, 채널, 및 타일의 부분의 경계들을 나타내는 정보를 사용하여 타일의 식별된 부분에서의 트리비컬 값들을 나타내며, 이는 2:1, 4:1, 또는 8:1의 표준 압축 값들보다 큰 크기의 차수들일 수 있는 압축비들을 유도한다. 일부 실시예들에서, 텍스처 룩업 프로세스는 텍스처 캐시에 인접하여 구현되는 랜덤 액세스 메모리(RAM)에 트리비얼 값들을 저장한다. 단일 명령어 다중 데이터(single-instruction-multiple-data, SIMD) 명령어의 파가 트리비얼 값 RAM에서의 엔트리를 히트한다면, 단일 레인이 샘플링되고, 결과적인 샘플링된 값이 모든 레인들에 브로드캐스팅된다. 일부 실시예들에서, 전체 대역폭을 감소시키고 일부 동작들에 대해 보다 양호한 캐시 이용률을 제공하기 위해 상이한 채널들에서의 텍스처 데이터가 대응하는 메모리 파티션들로부터 다른 메모리 파티션들과 별개로 페칭된다.
도 1은 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 압축하는 처리 시스템(100)의 블록도이다. 처리 시스템(100)은 동적 랜덤-액세스 메모리(DRAM: dynamic random-access memory)와 같은 비일시적 컴퓨터 판독가능 매체를 사용하여 구현되는 메모리(105) 또는 다른 저장 구성요소를 포함하거나 이에 액세스할 수 있다. 그러나, 일부 경우에, 메모리(105)는 정적 랜덤-액세스 메모리(SRAM: static random-access memory), 비휘발성 RAM 등을 포함하는 다른 유형의 메모리를 사용하여 구현된다. 메모리(105)는 외부 메모리로 지칭되는데, 이는 처리 시스템(100)에서 구현되는 처리 유닛의 외부에서 구현되기 때문이다. 또한, 처리 시스템(100)은 메모리(105)와 같은 처리 시스템(100)에서 구현되는 엔티티 간의 통신을 지원하기 위한 버스(110)를 포함한다. 처리 시스템(100)의 일부 실시예는 명확성을 위해 도 1에 도시되지 않은 다른 버스, 브릿지, 스위치, 라우터 등을 포함한다.
처리 시스템(100)은 또한 하나 이상의 병렬 프로세서(예를 들어, 벡터 프로세서, 그래픽 처리 유닛(GPU), 범용 GPU(general-purpose GPU. GPGPU), 비스칼라 프로세서, 고도의 병렬 프로세서, 인공 지능(AI) 프로세서, 추론 엔진, 머신 러닝 프로세서, 다른 멀티스레드 처리 유닛 등을 포함한다. 처리 시스템(100)의 일부 실시예들에서, 병렬 프로세서는 디스플레이(120) 상에 제시하기 위한 이미지들을 렌더링하는 그래픽 처리 유닛(GPU)(115)으로서 구현된다. 예를 들어, GPU(115)는 객체를 렌더링하여 디스플레이(120)에 제공되는 픽셀의 값을 생성하며, 이때 픽셀 값을 사용하여 렌더링된 객체를 나타내는 이미지를 디스플레이 한다. GPU(115)는 명령어들을 동시에 또는 병렬로 실행하는 복수의 프로세서 코어들(121, 122, 123)(본원에서 집합적으로 "프로세서 코어들(121-123)"로 지칭됨)을 구현한다. GPU(115)에서 구현되는 프로세서 코어들(121-123)의 수는 설계 선택의 문제이고, GPU(115)의 일부 실시예들은 도 1에 도시된 것보다 더 많거나 더 적은 프로세서 코어를 포함한다. GPU(115)의 일부 실시예는 범용 컴퓨팅에 사용된다. GPU(115)는 메모리(105)에 저장된 프로그램 코드(125)와 같은 명령어들을 실행하고, GPU(115)는 실행된 명령어들의 결과들과 같은 정보를 메모리(105)에 저장한다.
또한, 처리 시스템(100)은 버스(110)에 연결되고 따라서 버스(110)를 통해 GPU(115) 및 메모리(105)와 통신하는 중앙 처리 장치(CPU)(130)를 포함한다. CPU(130)는 명령어를 동시에 또는 병렬로 실행하는 복수의 프로세서 코어(131, 132, 133)(본 명세서에서는 "프로세서 코어(131 내지 133)"로 총칭됨)를 구현한다. CPU(130)에서 구현된 프로세서 코어(131 내지 133)의 수는 설계 선택의 문제이고, 일부 실시예는 도 1에 예시된 것보다 더 많거나 더 적은 프로세서 코어를 포함한다. 프로세서 코어(131 내지 133)는 메모리(105)에 저장된 프로그램 코드(135)와 같은 명령어를 실행하고, CPU(130)는 실행된 명령어의 결과와 같은 정보를 메모리(105)에 저장한다. 또한, CPU(130)는 GPU(115)에 드로우 콜을 발행함으로써 그래픽 처리를 개시할 수 있다. CPU(130)의 일부 실시예는 동시에 또는 병렬로 명령어를 실행하는 다수의 프로세서 코어(명확성을 위해 도 1에 도시되지 않음)를 구현한다.
입력/출력(I/O) 엔진(145)은 디스플레이(120) 뿐만 아니라 키보드, 마우스, 프린터, 외부 디스크 등과 같은 처리 시스템(100)의 다른 요소와 연관된 입력 또는 출력 작동을 처리한다. I/O 엔진(145)은 버스(110)와 결합되어 I/O 엔진(145)이 메모리(105), GPU(115), 또는 CPU(130)와 통신한다. 예시된 실시예에서, I/O 엔진(145)은 컴팩트 디스크(CD), 디지털 비디오 디스크(DVD) 등과 같은 비일시적 컴퓨터 판독가능 매체를 사용하여 구현되는 외부 저장 구성요소(150)에 저장된 정보를 판독한다. 또한, I/O 엔진(145)은 GPU(115) 또는 CPU(130)에 의한 처리 결과와 같은 정보를 외부 저장 구성요소(150)에 기록할 수 있다.
GPU(115)에서의 코어들(121-123)은 메모리(105)에 저장된 텍스처 데이터(155)를 사용하여 동작들을 수행한다. 텍스처 데이터(155)는 (타일과 같은) 픽셀들의 세트를 나타내는 정보를 포함한다. 일부 실시예들에서, 코어들(121-123) 또는 GPU(115)는 코어들(121-123) 중 하나 이상에 의해 빈번하게 사용되는 텍스처 데이터(155)의 부분들을 캐싱하기 위한 캐시들을 구현한다. 샘플링 회로부(160)는 텍스처 데이터(155)의 채널들에 독립적으로 액세스한다. 일부 실시예들에서, 코어들(121, 123)(또는 다른 압축 회로부) 중 하나 이상은 텍스처 데이터(155)의 채널들을 개별적으로 압축하고, 픽셀들의 세트에 대한 텍스처 데이터(155)의 채널들을 나타내는 압축된 데이터를 예를 들어, 메모리(105) 또는 연관된 캐시들에, 저장한다. 채널들은 픽셀들의 세트의 색상 값들을 나타내는 적색 채널, 청색 채널, 및 녹색 채널, 및 픽셀들의 세트의 투명도를 나타내는 알파 채널을 포함할 수 있다. 압축된 데이터를 저장하는 것은 압축 데이터를 캐시 또는 다른 저장 구성요소의 부분들에 기록하는 것을 포함할 수 있다. 코어들(121-123)의 일부 실시예들은 복수의 채널들 중 제1 채널의 값을 공유하는 픽셀들의 세트의 서브세트를 식별하고, 값, 제1 채널, 및 서브세트의 경계들을 나타내는 정보를 사용하여 픽셀들의 세트의 서브세트에 대한 제1 채널의 값을 나타낼 수 있다.
도 2는 일부 실시예들에 따른 미리 결정된 해상도로 3차원(3D) 장면들의 래스터화된 이미지들을 생성하도록 고차 지오메트리 프리미티브들을 처리하는 것과 채널별 기반으로 텍스처 데이터를 압축하는 것이 가능한 그래픽 파이프라인(200)을 도시한다.그래픽 파이프라인(200)은 도 1에 도시된 GPU(115)의 일부 실시예들에서 구현된다.그래픽 파이프라인(200)의 예시된 실시예는 DX11 사양에 따라 구현된다. 그래픽 파이프라인(200)의 다른 실시예는 Vulkan, Metal, DX12 등과 같은 다른 애플리케이션 프로그래밍 인터페이스(API)에 따라 구현된다. 그래픽 파이프라인(200)은 래스터화 이전에 그래픽 파이프라인(200)의 부분들을 포함하는 지오메트리 처리부(201) 및 래스터화 이후에 그래픽 파이프라인(200)의 부분들을 포함하는 픽셀 처리부(202)로 세분된다.
그래픽 파이프라인(200)은 버퍼들을 구현하고 버텍스 데이터, 텍스처 데이터 등을 저장하기 위해 사용되는 하나 이상의 메모리 또는 캐시의 계층구조와 같은 저장 자원들(205)(본원에서 저장 구성요소들로도 지칭됨)에 액세스한다. 저장 자원(205)은 도 1에 도시된 시스템 메모리(105)의 일부 실시예를 사용하여 구현된다. 저장 자원들(205)의 일부 실시예들은 하나 이상의 캐시(206) 및 하나 이상의 RAM(207)을 포함한다(또는 이에 대한 액세스 권한을 갖는다). 그래픽 파이프라인(200)의 부분들은 3D 장면들의 래스터화된 이미지들을 생성하기 위해 저장 자원들(205)에 저장된 텍스처 데이터를 이용한다. 일부 실시예들에서, 그래픽 파이프라인(200)은 렌더링 프로세스 동안 8 MB 내지 64 MB의 메모리 풋프린트들을 갖는 텍스처들과 같은, 하나 이상의 중간 텍스처를 생성한다. 텍스처 데이터 및 중간 텍스처들은 저장 자원들(205)로부터의 반복적으로 판독되고, 다시 저장 자원들(205)에 기록된다. 이에 따라, 그래픽 파이프라인(200)의 부분들은 본원에서 논의되는 바와 같이, 채널별 기반으로 텍스처 데이터를 압축 및 압축해제하도록 구성된다.
입력 어셈블러(210)는 장면의 모델의 부분들을 나타내는 객체들을 정의하기 위해 사용되는 저장 자원들(205)로부터의 정보에 액세스한다. 일부 실시예들에서, 저장 자원들(205)로부터의 정보에 액세스하는 것은 저장 자원들(205)에 저장되는 압축된 텍스처 데이터를 압축해제하는 것, 예를 들어, 캐시(206)의 하나 이상의 라인에 캐싱된 텍스처 데이터를 압축 해제하는 것을 포함한다. 프리미티브의 예는 도 2에 삼각형(211)으로 도시되어 있지만, 그래픽 파이프라인(200)의 일부 실시예에서 다른 유형들의 프리미티브가 처리된다. 삼각형(211)은 하나 이상의 에지(214)에 의해 연결되는 하나 이상의 버텍스(212)를 포함한다(명료화를 위해 도 2에는 각각 하나만 도시됨). 정점(212)은 그래픽 파이프라인(200)의 기하학 처리 부분(201)에서 음영 처리된다.
예시된 실시예에서 소프트웨어로 구현되는 정점 셰이더(215)는 논리적으로 프리미티브의 단일 정점(212)을 입력으로 수신하고 단일 정점을 출력한다. 정점 셰이더(215)와 같은 셰이더의 일부 실시예는 대규모 단일-명령어-다중-데이터(SIMD) 처리를 구현하여 다수의 정점이 동시에 처리되도록 한다. 도 2에 도시된 그래픽 파이프라인(200)은 그래픽 파이프라인(200)에 포함된 모든 셰이더들이 공유되는 대량의 SIMD 컴퓨터 장치들 상에서 동일한 실행 플랫폼을 갖도록 통합 셰이더 모델을 구현한다. 따라서, 정점 셰이더(215)를 포함하여, 셰이더는 본 명세서에서 통합된 셰이더 풀(216)로 지칭되는 공통 자원 세트를 사용하여 구현된다.
헐 셰이더(218)는 입력 패치를 정의하는 데 사용되는 입력 고차 패치 또는 제어 지점에서 작동한다. 헐 셰이더(218)는 테셀레이션 인자 및 다른 패치 데이터를 출력한다. 일부 실시예에서, 헐 셰이더(218)에 의해 생성된 프리미티브는 테셀레이터(220)에 제공된다. 테셀레이터(220)는 헐 셰이더(218)로부터 객체(예를 들어 패치)를 수신하고, 예를 들어, 헐 셰이더(218)에 의해 테셀레이터(220)에 제공된 테셀레이션 인자에 기초하여 입력 객체를 테셀레이션함으로써, 입력 객체에 대응하는 프리미티브를 식별하는 정보를 생성한다. 테셀레이션은 패치와 같은 입력 고차 프리미티브를, 예를 들어, 테셀레이션 프로세스에 의해 생성된 프리미티브의 세분성을 특정하는 테셀레이션 인자에 의해 표시되는 것과 같이, 더 미세한 세부 수준을 나타내는 저차 출력 프리미티브 세트로 세분한다. 따라서, 장면의 모델은 (메모리 또는 대역폭을 절약하기 위해) 더 적은 수의 고차 프리미티브에 의해 표현되고, 고차 프리미티브를 테셀레이션함으로써 추가 세부사항이 추가된다. 도시된 실시예에서, 테셀레이터(220)는 삼각형(211)을 테셀레이팅함으로써 프리미티브들(222)을 생성한다.
도메인 셰이더(224)는 도메인 위치 및 (선택적으로) 다른 패치 데이터를 입력한다. 도메인 셰이더(224)는 제공된 정보에 대해 작동하고, 입력 도메인 위치 및 다른 정보에 기초하여 출력에 대한 단일 정점을 생성한다. 기하학 셰이더(226)는 입력 프리미티브를 수신하고 입력 프리미티브에 기초하여 기하학 셰이더(226)에 의해 생성되는 최대 4개의 프리미티브를 출력한다. 예시된 실시예에서, 기하학 셰이더(226)는 테셀레이션된 프리미티브(222)에 기초하여 출력 프리미티브(228)를 생성한다.
프리미티브의 하나의 스트림은 래스터라이저(230)에 제공되고, 일부 실시예들에서, 프리미티브들의 최대 네 개의 스트림들이 저장 자원들(205)에서의 버퍼들에 연쇄될 수 있다. 래스터라이저(230)는 셰이딩 동작들 및 클립핑(clipping), 원근 분할(perspective dividing), 시저링(scissoring) 및 뷰포트 선택(viewport selection) 등과 같은 다른 동작들을 수행한다. 래스터라이저(230)는 그래픽 파이프라인(200)의 픽셀 처리부(202)에서 후속하여 처리되는 픽셀들의 세트(232)를 생성한다. 일부 실시예들에서, 픽셀들의 세트(232)는 하나 이상의 타일을 포함한다.
예시된 실시예에서, 픽셀 셰이더(234)는 픽셀 흐름(예를 들어, 픽셀의 세트(232)를 포함)을 입력하고 입력 픽셀 흐름에 응답하여 제로 또는 다른 픽셀 흐름을 출력한다. 출력 병합기 블록(236)은 픽셀 셰이더(234)로부터 수신된 픽셀에 대한 블렌드, 깊이, 스텐실(stencil), 또는 다른 작동을 수행한다.
그래픽 파이프라인(200)의 일부 또는 모든 셰이더는 저장 자원(205)에 저장된 텍스처 데이터를 사용하여 텍스처 맵핑을 수행한다. 예를 들어, 픽셀 셰이더(234)는 저장 자원(205)으로부터 텍스처 데이터를 판독하고 텍스처 데이터를 사용하여 하나 이상의 픽셀을 셰이딩할 수 있다. 이어서, 셰이딩된 픽셀은 사용자에게 보여주기 위해 디스플레이에 제공된다.
도 3은 일부 실시예들에 따른 다수의 채널들로 파티셔닝되는 텍스처 데이터(300)의 블록도이다. 도시된 실시예에서, 텍스처 데이터(300)는 적색 채널(301), 청색 채널(302), 녹색 채널(303), 및 텍스처 데이터(300)에서의 픽셀들의 투명도를 나타내는 알파 채널(304)을 포함한다. 일부 실시예들에서, 텍스처 데이터(300)는 도 2에 도시된 그래픽 파이프라인(200)과 같은 그래픽 파이프라인에 의해 렌더링되는 3D 장면의 이미지에서의 타일을 나타낸다. 채널들(301-304)은 각 채널들(301-304)에서의 정보의 압축 효율에 영향을 미치는 상이한 특성들을 갖는다. 예를 들어, 적색 채널(301)에서의 벽들(305) 및 캐릭터의 몸통(310)의 표현은 노이즈가 있는 값들을 포함하고, 이에 따라 압축비들을 작게 하거나 데이터를 전혀 압축할 수 없게 된다. 다른 예를 들어, 녹색 채널(303)에서의 바닥(315)의 표현은 노이즈가 있고, 이에 따라 효율적으로 압축하기가 어렵다. 이에 반해, 청색 채널(302) 및 알파 채널(304)에서의 픽셀들의 값들은 높은 정도의 로컬리티를 나타내고(또는 고주파수 데이터를 덜 포함하고), 청색 채널(302) 및 알파 채널(304)에 적용되는 압축 알고리즘들은 보다 높은 압축비들을 갖는 압축 데이터를 생성한다. 이에 따라, 채널들(301-304)에 독립적으로 액세스하고 채널들(301-304)을 개별적으로 압축하는 것은 보다 높은 전체 압축 효율 및 채널(301-340)에서의 조합된 정보의 압축을 초래한다.
도 4는 일부 실시예들에 따른 텍스처 데이터의 픽셀들에 대한 메모리 레이아웃(400)의 블록도이다. 메모리 레이아웃(400)은 픽셀들(410) 각각에 대한 채널들의 값들(405, 406, 407, 408)(명료화를 위해 하나의 픽셀에 대한 채널 값들만이 참조 번호로 표시됨)을 포함한다. 도시된 실시예에서, 값(405)은 대응하는 픽셀(410)의 적색 채널의 값을 나타내고, 값(406)은 대응하는 픽셀(410)의 청색 채널의 값을 나타내고, 값(407)은 대응하는 픽셀(410)의 녹색 채널의 값을 나타내며, 값(408)은 대응하는 픽셀(410)의 알파 채널의 값을 나타낸다. 픽셀들 및 대응하는 값들은 메모리 레이아웃(400)에 순차적으로 저장된다. 결과적으로, 상이한 채널들에 대한 값들이 메모리 레이아웃(400) 전체에 걸쳐 분산된다. 예를 들어, 픽셀들에 대한 적색 채널의 값들은 메모리 레이아웃(400)의 열들(415, 420, 425)에 저장되고, 픽셀들에 대한 청색 채널의 값들은 메모리 레이아웃(400)의 열들(416, 421)에 저장되고, 픽셀들에 대한 녹색 채널의 값들은 메모리 레이아웃(400)의 열들(417, 422)에 저장되며, 픽셀들에 대한 알파 채널의 값들은 메모리 레이아웃(400)의 열들(418, 423)에 저장된다. 이러한 방식으로 메모리 레이아웃(400) 사방에 상이한 채널들에 대한 값들을 분배하는 것은 개별적으로 채널을 페칭하기 위해 사용되는 전체 대역폭을 증가시키고, 외부 채널들을 페칭하는 것으로 인한 캐시 이용률을 감소시킨다.
도 5는 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 파티셔닝하는 메모리 레이아웃(500)의 블록도이다. 메모리 레이아웃(500)은 픽셀에 대한 채널들의 값들(505, 506, 507, 508)(명료화를 위해 하나의 픽셀에 대한 채널 값들만이 참조 번호로 표시됨)을 포함한다. 도시된 실시예에서, 값(505)은 대응하는 픽셀의 적색 채널의 값을 나타내고, 값(506)은 대응하는 픽셀의 청색 채널의 값을 나타내고, 값(507)은 대응하는 픽셀의 녹색 채널의 값을 나타내며, 값(508)은 대응하는 픽셀의 알파 채널의 값을 나타낸다. 상이한 픽셀들에 대한 상이한 채널들의 값들은 상이한 파티션들로 분리된다. 도시된 실시예에서, 파티션(510)은 픽셀들의 적색 채널의 값들을 포함하고, 파티션(515)은 픽셀들의 청색 채널의 값들을 포함하고, 파티션(520)은 픽셀들의 녹색 채널의 값들을 포함하며, 파티션(525)은 픽셀들의 알파 채널의 값들을 포함한다. 이러한 방식으로 상이한 채널들에 대한 값들을 파티셔닝하는 것은 데이터 로컬리티를 개선하고, 채널들을 페칭하기 위해 사용되는 전체 대역폭을 감소시킨다. 파티셔닝은 또한, 본원에서 논의되는 바와 같이, 캐시의 상이한 부분들을 파티션들(510, 515, 520, 525)과 연관시키는 실시예들에서 캐시 이용률을 개선한다.
도 6은 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 샘플링하는 처리 유닛의 부분(600)의 블록도이다. 처리 유닛의 부분(600)은 예를 들어, 메모리 또는 캐시와 같은 저장 구성요소로부터의 텍스처 데이터의 상이한 채널들을 독립적으로 샘플링하는 채널별 샘플링 회로부(605)를 포함한다. 채널별 샘플링 회로부(605)는 도 1에 도시된 샘플링 회로부(160)의 일부 실시예들 및 도 2에 도시된 그래픽 파이프라인(200)의 일부 실시예들을 구현하기 위해 사용된다.
채널별 샘플링 회로부(605)는 컴퓨트 메시지(610)를 수신하는 것에 응답하여 텍스처 데이터의 하나 이상의 채널을 샘플링한다. 일부 실시예들에서, 컴퓨트 메시지(610)는 도 1에 도시된 CPU(130)와 같은 CPU로부터 또는 도 1에 도시된 GPU(115)와 같은 GPU 내의 엔티티들로부터 수신된다. 컴퓨트 메시지(610)를 수신하는 것에 응답하여, 채널별 샘플링 회로부(605)는 텍스처 데이터를 독립적으로 판독하고, 텍스처 데이터를 하나 이상의 프로세서 코어(예를 들어, 도 1에 도시된 코어들(121-123)) 또는 도 2에 도시된 그래픽 파이프라인(200)과 같은 그래픽 파이프라인에서의 엔티티들에 제공한다. 채널별 샘플링 회로부(605)의 일부 실시예들은 텍스처 데이터의 대응하는 채널을 저장하기 위해 전용되는 메모리 또는 캐시와 같은 저장 구성요소의 파티션들로부터 텍스처 데이터를 판독한다. 예를 들어, 채널별 샘플링 회로부(605)는 도 5에 도시된 파티션(510)으로부터 적색 채널 텍스처 데이터를, 도 5에서 도시된 파티션(515)으로부터 청색 채널 텍스처 데이터를, 도 5에 도시된 파티션(520)으로부터 녹색 채널 텍스처 데이터를, 그리고 도 5에 도시된 파티션(525)으로부터 알파 채널 텍스처 데이터를 판독할 수 있다.
채널별 샘플링 회로부(605)는 또한 압축된 텍스처 데이터를 채널별 기반으로 메모리 또는 캐시에 다시 기록한다. 압축된 텍스처 데이터는 (도 1에 도시된 코어들(121-123)과 같은) 하나 이상의 프로세서 코어, 도 2에 도시된 그래픽 파이프라인(200)과 같은 그래픽 파이프라인에서의 엔티티들, 또는 이들 엔티티들과 연관된 압축 회로부로부터 수신된다. 채널별 샘플링 회로부(605)의 일부 실시예들은 텍스처 데이터의 대응하는 채널을 저장하기 위해 전용되는 메모리 또는 캐시의 파티션들에 압축된 텍스처 데이터를 기록한다. 예를 들어, 채널별 샘플링 회로부(605)는 도 5에 도시된 파티션(510)에 적색 채널 텍스처 데이터(615)를, 도 5에서 도시된 파티션(515)에 청색 채널 텍스처 데이터(620)를, 도 5에 도시된 파티션(520)에 녹색 채널 텍스처 데이터(625)를, 그리고 도 5에 도시된 파티션(525)에 알파 채널 텍스처 데이터(630)를 기록할 수 있다.
도 7은 일부 실시예들에 따른 채널별 기반으로 텍스처 데이터를 캐싱하는 처리 시스템의 부분(700)의 블록도이다. 처리 시스템의 부분(700)은 캐시(705)의 상이한 영역들, 부분들, 또는 파티션들에 텍스처 데이터의 상이한 채널들을 저장하도록 파티셔닝된 캐시(705)를 포함한다. 캐시(705)는 도 2에 도시된 그래픽 파이프라인(200)에 의해 사용되는 캐시(206)의 일부 실시예들을 구현하기 위해 사용된다. 도시된 실시예에서, 캐시(705)는 텍스처 데이터의 대응하는 채널들의 빈번하게 사용되는 값들을 캐싱하기 위해 사용되는 적색 섹션(710), 청색 섹션(715), 녹색 섹션(720), 및 알파 섹션(725)으로 파티셔닝된다. 섹션들(710, 715, 720, 725)은 섹션(710)에 저장된 적색 채널 텍스처 데이터에 대한 판독/기록 요청들(730), 섹션(715)에 저장된 청색 채널 텍스처 데이터에 대한 판독/기록 요청들(735), 섹션(720)에 저장된 녹색 채널 텍스처 데이터에 대한 판독/기록 요청들(740), 및 섹션(725)에 저장된 청색 채널 텍스처 데이터에 대한 판독/기록 요청들(745)을 포함하는 대응하는 메모리 액세스 요청들을 수신했다.
도 8은 일부 실시예들에 따라 텍스처 데이터의 채널들에 독립적으로 액세스하고 텍스처 데이터의 채널들을 개별적으로 압축하는 방법(800)의 흐름도이다. 방법(800)은 도 1에 도시된 처리 시스템(100)의 그리고 도 2에 도시된 그래픽 파이프라인(200)에서의 일부 실시예들에서 구현된다.
방법(800)은 블록(801)으로 시작한다. 블록(805)에서, (타일과 같은) 픽셀들의 세트를 나타내는 텍스처 데이터의 채널이 메모리 또는 캐시로부터 판독된다. 일부 실시예들에서, 도 6에 도시된 채널별 샘플링 회로부(605)와 같은 채널별 샘플 회로부가 텍스처 데이터의 채널을 샘플링하기 위해 사용된다.
블록(810)에서, 픽셀들의 세트를 나타내는 텍스처 데이터의 채널의 샘플링된 값들이 압축된다. 일부 실시예들에서, 샘플링된 값들은 1차 차분 식들을 사용하여 압축된다. 하나의 픽셀이 채널에 대한 기준 픽셀로서 선택되고, 기준 픽셀의 채널의 기본 값과 다른 픽셀들에서의 채널의 값들 간의 차분들(본원에서 델타 값들로 지칭됨)이 계산된다. 가장 큰 델타 값(예를 들어, 최악의 경우의 잔차 비트들)을 인코딩하는 데 요구되는 비트들의 수가 계산되고, 메모리에서 델타 값들을 어떻게 표현하는지를 결정하기 위해 사용된다. 압축된 데이터는 기준 픽셀의 채널의 값, 델타 값들, 및 델타 값들을 인코딩하기 위해 사용되는 비트들의 수를 나타내는 정보를 포함한다. 본원에서 논의될 때, 픽셀들의 블록들 또는 그룹들에 공통인 채널의 트리비얼 값들은 다른 압축 기법들을 사용해 보다 높은 압축비로 압축된다.
블록(815)에서, 채널에 대한 압축된 텍스처 데이터가 예를 들어, 압축된 텍스처 데이터를 메모리 또는 캐시에 다시 기록함으로써, 저장된다.
결정 블록(820)에서, 샘플링 회로부는 아직 압축되지 않은 픽셀들의 세트의 추가적인 채널들이 존재하는지 여부를 결정한다. 만약 그렇다면, 방법(800)은 블록(805)으로 되돌아간다. 픽셀들의 세트에 대한 추가적인 채널이 존재하지 않는다면, 방법(800)은 결정 블록(825)으로 진행한다.
결정 블록(825)에서, 샘플링 회로부는 압축될 픽셀들의 추가적인 세트들이 존재하는지 여부를 결정한다. 만약 그렇다면, 방법(800)은 블록(805)으로 되돌아가고, 추가적인 픽셀들의 세트에 대한 채널들을 독립적으로 샘플링하기 시작한다. 압축될 픽셀들의 추가적인 세트가 존재하지 않는다면, 방법(800)은 블록(830)으로 진행하고, 방법(800)이 종료된다.
도 9는 일부 실시예들에 따른 픽셀들의 세트에 대한 채널의 값들의 이미지(900)이다. 예를 들어, 이미지(900)는 픽셀들의 세트의 적색 채널의 값들을 나타낼 수 있다. 이미지(900)는 상당량의 고주파수 텍스처 데이터를 포함하는 영역들(905, 910)을 포함한다. 이에 따라, 영역들(905, 910)은 2:1, 4:1, 8:1 등의 압축비들을 생성하는 종래의 압축 알고리즘들을 사용하여 압축된다. 이미지(900)는 또한 영역(915)에서의 픽셀들 모두에 공유되거나 공통인 단일, 또는 트리비얼 값, 예를 들어, 흑색에 대응하는 0의 값에 의해 나타내어지는 영역(915)을 포함한다. (예를 들어, 8:1보다 훨씬 큰) 매우 높은 정도의 압축은 공통의 트리비얼 값을 갖는 영역(915)에서의 픽셀들의 채널의 값들을 별도로 압축함으로써 얻어진다. 일부 실시예들에서, 영역(915)에서의 픽셀들의 채널들의 값들은 트리비얼 값 및 영역(915)의 경계들(920, 925)을 나타내는 정보에 의해 나타내어진다.
도 10은 일부 실시예들에 따른 텍스처 데이터의 채널들에 독립적으로 액세스하고 텍스처 데이터의 채널들의 트리비얼 값들을 개별적으로 압축하는 방법(1000)의 흐름도이다. 방법(1000)은 도 1에 도시된 처리 시스템(100)의 그리고 도 2에 도시된 그래픽 파이프라인(200)에서의 일부 실시예들에서 구현된다.
방법(1000)은 블록(1001)으로 시작한다. 블록(1005)에서, 처리 유닛 또는 전용 압축 회로부가 종래의 압축 알고리즘을 사용하여 픽셀들의 세트의 채널의 값들을 나타내는 텍스처 데이터를 포함하는 캐시 라인을 압축하려고 시도한다. 캐시 라인에서의 정보에 기초하여, 처리 유닛(또는 압축 회로부)은 (결정 블록(1010)에서) 캐시 라인에서의 정보가 압축가능한지 여부를 결정한다. 그렇지 않다면, 방법(1000)은 블록(1015)으로 진행하고, 방법(1000)이 종료된다. 캐시 라인에서의 값들이 압축가능하다면, 방법(1000)은 결정 블록(1020)으로 진행한다.
결정 블록(1020)에서, 처리 유닛(또는 압축 회로부)은 캐시 라인에서의 값들이 동일한지, 예를 들어, 공통 값이 캐시 라인에서의 텍스처 데이터의 채널의 값들에 의해 공유되는지 여부를 결정한다. 일부 실시예들에서, 캐시 라인에서의 값들이 모두 동일한지 여부를 결정하기 위해 캐시 라인으로부터의 판독되는 더블 워드(DWord)에 대해 배타적 논리합(exclusive-OR) 비교가 수행된다. 그렇지 않다면, 방법(1000)은 블록(1015)으로 진행하고, 방법(1000)이 종료된다. 캐시 라인에서의 값들이 동일하다면, 방법(1000)은 블록(1025)으로 진행한다.
블록(1025)에서, 처리 유닛(또는 압축 회로부)은 텍스처 데이터의 채널의 값들과 연관된 페이지 구조를 업데이트한다. 일부 실시예들에서, NxM 픽셀들의 페이지에 대한 부기 구조(예를 들어, 버퍼)가 업데이트된다.
결정 블록(1030)에서, 처리 유닛(또는 압축 회로부)은 페이지에서의 라인들 모두가 동일한 값, 예를 들어, 캐시 라인에서의 엔트리들에 의해 공유되는 공통 값을 갖는지 여부를 결정한다. 그렇지 않다면, 방법(1000)은 블록(1015)으로 진행하고, 방법(1000)이 종료된다. 페이지에서의 값들이 동일하다면, 방법(1000)은 블록(1035)으로 진행한다.
블록(1035)에서, 처리 유닛은 페이지에서의 값들이 동일하다는 것을 표시하기 위해 제어면을 업데이트한다. 일부 실시예들에서, 제어 서비스들은 NxM 픽셀들의 페이지가 페이지와 연관된 채널에 대해 동일한 값들을 갖는다는 것을 표시하도록 업데이트된다. 이어서, 방법(1000)은 블록(1015)으로 진행하고, 방법(1000)이 종료된다.
컴퓨터 판독 가능 저장 매체는 명령어들 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체, 또는 비일시적 저장 매체들의 조합을 포함한다. 이러한 저장 매체는 광학 매체(예를 들어, 컴팩트 디스크(CD), 디지털 다기능 디스크(DVD), 블루레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로 전자 기계 시스템(MEMS)-기반 저장 매체를 포함할 수 있지만, 이에 제한되지 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템에 내장되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 제거 가능하게 부착되거나(예를 들어, 광 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리), 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 결합된다(예를 들어, 네트워크 액세스 가능 저장소(NAS)).
일부 실시예에서, 전술된 기술의 특정한 양태는 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서에 의해 구현된다. 소프트웨어는 비일시적 컴퓨터 판독 가능 저장 매체에 저장되거나 달리 유형적으로 구현된 실행 가능 명령어의 하나 이상의 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 전술된 기술의 하나 이상의 양태를 수행하도록 하나 이상의 프로세서를 조작하는 명령어 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체는, 예를 들어, 자기 또는 광 디스크 저장 장치, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 장치 또는 장치들 등과 같은 솔리드 스테이트 저장 장치를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령어들은 하나 이상의 프로세서에 의해 해석되거나 달리 실행 가능한 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 다른 명령어 포맷으로 되어 있다.
일반적인 설명에서 전술된 모든 활동 또는 요소가 요구되는 것은 아니고, 특정 활동 또는 장치의 일부는 요구되지 않을 수 있고, 기술된 것에 더하여, 하나 이상의 추가 활동이 수행되거나 하나 이상의 추가 요소가 포함될 수 있다는 점에 유의한다. 또한 추가적으로, 활동이 열거된 순서는 반드시 그들이 수행되는 순서는 아니다. 또한, 특정 실시예들을 참조하여 개념이 설명되었다. 그러나, 당업자는 아래의 청구범위에 기재된 것과 같은 본 개시의 범위로부터 벗어나지 않으면서 다양한 수정 및 변경이 이루어질 수 있음을 이해한다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 하며, 모든 그러한 수정은 본 개시의 범위 내에 포함되도록 의도된다.
이익, 다른 이점, 및 문제에 대한 해결책이 특정 실시예와 관련하여 전술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들 및 임의의 혜택, 이점, 또는 솔루션을 발생시키거나 더 확연히 드러낼 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항들의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지 않아야 한다. 더욱이, 상기에 개시된 특정 실시예들은 단지 예시적인 것인데, 왜냐하면 개시된 주제는 본 명세서에서의 교시 내용의 이익을 갖는 당업자에게 명백한, 상이하지만 동등한 방식들로 수정 및 실시될 수 있기 때문이다. 아래의 청구범위에 기술된 것 이외에, 본 명세서에서 도시된 구성 또는 설계의 상세 사항에 대한 제한이 의도되지 않는다. 따라서 위에서 개시된 특정 실시예들은 변경되거나 수정될 수 있고 모든 그러한 변형은 개시된 주제의 범위 내에 있는 것으로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래의 청구범위에 기재된 것과 같다.

Claims (20)

  1. 프로세서로 이미지들을 압축하기 위한 방법으로서,
    상기 프로세서에 결합된 제1 저장 구성요소로부터 픽셀들의 세트를 나타내는 텍스처 데이터의 복수의 채널들에 독립적으로 액세스하는 단계;
    상기 텍스처 데이터의 상기 복수의 채널들을 개별적으로 압축하는 단계; 및
    상기 프로세서에 결합된 제2 저장 구성요소에 압축된 데이터를 저장하는 단계 ― 상기 압축된 데이터는 상기 픽셀들의 세트에 대한 상기 텍스처 데이터의 상기 복수의 채널들을 나타냄 ― 를 포함하는, 방법.
  2. 제1항에 있어서, 상기 텍스처 데이터의 상기 복수의 채널들에 독립적으로 액세스하는 단계는 적어도, 상기 픽셀들의 세트의 색상 값들을 나타내는 적색 채널, 청색 채널, 및 녹색 채널, 및 상기 픽셀들의 세트의 투명도를 나타내는 알파 채널에 독립적으로 액세스하는 단계를 포함하는 것인, 방법.
  3. 제1항에 있어서,
    상기 제1 저장 구성요소는 메모리를 포함하며; 그리고
    상기 텍스처 데이터의 상기 복수의 채널들에 독립적으로 액세스하는 단계는 상기 메모리의 메모리 파티션들로부터의 상기 텍스처 데이터의 상기 복수의 채널들에 액세스하는 단계를 포함하며, 상기 메모리 파티션들은 상기 복수의 채널들과 연관되는 것인, 방법.
  4. 제3항에 있어서,
    상기 제1 저장 구성요소는 캐시를 포함하며; 그리고
    상기 텍스처 데이터의 상기 복수의 채널들에 독립적으로 액세스하는 단계는 상기 캐시의 부분들로부터의 상기 텍스처 데이터의 상기 복수의 채널들에 액세스하는 단계를 포함하고, 상기 캐시의 상기 부분들은 상기 메모리 파티션들과 연관되는 것인, 방법.
  5. 제4항에 있어서,
    상기 제2 저장 구성요소는 상기 캐시를 포함하며; 그리고
    상기 압축된 데이터를 저장하는 단계는 상기 복수의 채널들을 나타내는 상기 압축된 데이터를 상기 복수의 채널들과 연관된 상기 캐시의 상기 부분들에 기록하는 단계를 포함하는 것인, 방법.
  6. 제1항에 있어서, 상기 텍스처 데이터의 상기 복수의 채널들을 개별적으로 압축하는 단계는 상기 텍스처 데이터의 상기 복수의 채널들에서의 엔트로피, 상기 텍스처 데이터의 상기 복수의 채널들에서의 로컬리티(locality), 또는 상기 복수의 채널들에서의 고주파수 텍스처 데이터의 양 중 적어도 하나에 의해 결정되는 상이한 압축비들로 상기 텍스처 데이터의 상기 복수의 채널들을 압축하는 단계를 포함하는 것인, 방법.
  7. 제1항에 있어서,
    상기 복수의 채널들 중 제1 채널의 값을 공유하는 상기 픽셀들의 세트의 서브세트를 식별하는 단계를 더 포함하는, 방법.
  8. 제7항에 있어서,
    상기 값, 상기 제1 채널, 및 상기 서브세트의 경계들을 나타내는 정보에 기초하여 상기 픽셀들의 세트의 상기 서브세트에 대한 상기 제1 채널의 상기 값을 나타내는 단계를 더 포함하는, 방법.
  9. 장치로서,
    픽셀들의 세트를 나타내는 텍스처 데이터의 복수의 채널들에 독립적으로 액세스하도록 구성된 샘플링 회로부; 및
    상기 텍스처 데이터의 상기 복수의 채널들을 개별적으로 압축하고, 상기 픽셀들의 세트에 대한 상기 텍스처 데이터의 상기 복수의 채널들을 나타내는 압축된 데이터를 저장하도록 구성된 적어도 하나의 처리 유닛을 포함하는, 장치.
  10. 제9항에 있어서, 상기 샘플링 회로부는 상기 픽셀들의 세트의 색상 값들을 나타내는 적색 채널, 청색 채널, 및 녹색 채널, 및 상기 픽셀들의 세트의 투명도를 나타내는 알파 채널에 독립적으로 액세스하도록 구성된 것인, 장치.
  11. 제9항에 있어서, 상기 샘플링 회로부는 상기 복수의 채널들과 연관된 메모리 파티션들로부터의 상기 텍스처 데이터의 상기 복수의 채널들에 액세스하도록 구성된 것인, 장치.
  12. 제11항에 있어서,
    상기 메모리 파티션들과 연관된 부분들로 파티셔닝된 캐시를 더 포함하며, 상기 샘플링 회로부는 상기 부분들로부터의 상기 텍스처 데이터의 상기 복수의 채널들에 액세스하도록 구성된 것인, 장치.
  13. 제12항에 있어서, 상기 적어도 하나의 처리 유닛은 상기 복수의 채널들을 나타내는 상기 압축된 데이터를 상기 복수의 채널들과 연관된 상기 캐시의 상기 부분들에 기록하도록 구성된 것인, 장치.
  14. 제9항에 있어서, 상기 적어도 하나의 처리 유닛은 상기 텍스처 데이터의 상기 복수의 채널들에서의 엔트로피, 상기 텍스처 데이터의 상기 복수의 채널들에서의 로컬리티, 또는 상기 복수의 채널들에서의 고주파수 텍스처 데이터의 양 중 적어도 하나에 의해 결정되는 상이한 압축비들로 상기 텍스처 데이터의 상기 복수의 채널들을 압축하도록 구성된 것인, 장치.
  15. 제9항에 있어서, 상기 적어도 하나의 처리 유닛은 상기 복수의 채널들 중 제1 채널의 값을 공유하는 상기 픽셀들의 세트의 서브세트를 식별하도록 구성된 것인, 장치.
  16. 제15항에 있어서, 상기 적어도 하나의 처리 유닛은 상기 값, 상기 제1 채널, 및 상기 서브세트의 경계들을 나타내는 정보를 사용하여 상기 픽셀들의 세트의 상기 서브세트에 대한 상기 제1 채널의 상기 값을 나타내도록 구성된 것인, 장치.
  17. 방법으로서,
    픽셀들의 세트를 나타내는 텍스처 데이터의 복수의 채널들 중 제1 채널의 제1 값들을 샘플링하는 단계;
    상기 제1 샘플링된 값들을 압축하는 단계;
    상기 제1 값들을 샘플링하는 것과 독립적으로 상기 복수의 채널들 중 제2 채널의 제2 값들을 샘플링하는 단계;
    상기 제1 샘플링된 값들을 압축하는 것과 별도로 상기 제2 샘플링된 값들을 압축하는 단계; 및
    상기 압축된 제1 샘플링된 값들 및 제2 샘플링된 값들을 저장하는 단계를 포함하는, 방법.
  18. 제17항에 있어서, 상기 제1 채널의 상기 제1 값들을 샘플링하는 단계는 메모리의 제1 파티션으로부터의 상기 제1 값들을 샘플링하는 단계를 포함하고, 상기 제2 채널의 상기 제2 값들을 샘플링 하는 단계는 상기 메모리의 제2 파티션으로부터의 상기 제2 값들을 샘플링하는 단계를 포함하는 것인, 방법.
  19. 제18항에 있어서,
    캐시의 제1 부분 및 제2 부분으로부터 각각 상기 제1 값들 및 제2 값들을 판독하는 단계; 및
    상기 압축된 제1 샘플링된 값들 및 제2 샘플링된 값들을 상기 캐시의 상기 제1 부분 및 제2 부분에 각각 기록하는 단계를 더 포함하는, 방법.
  20. 제17항에 있어서,
    서로 동일한 상기 제1 값들의 서브세트를 식별하는 단계; 및
    상기 제1 값, 상기 제1 채널, 및 상기 서브세트의 경계들을 나타내는 정보에 기초하여 상기 제1 값들의 상기 서브세트를 나타내는 단계를 더 포함하는, 방법.
KR1020237012228A 2020-09-23 2021-09-23 채널별 기반 텍스처 데이터의 압축 KR20230073239A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/030,048 US11308648B2 (en) 2020-09-23 2020-09-23 Compressing texture data on a per-channel basis
US17/030,048 2020-09-23
PCT/US2021/051747 WO2022066902A1 (en) 2020-09-23 2021-09-23 Compressing texture data on a per-channel basis

Publications (1)

Publication Number Publication Date
KR20230073239A true KR20230073239A (ko) 2023-05-25

Family

ID=80740651

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237012228A KR20230073239A (ko) 2020-09-23 2021-09-23 채널별 기반 텍스처 데이터의 압축

Country Status (6)

Country Link
US (2) US11308648B2 (ko)
EP (1) EP4217969A1 (ko)
JP (1) JP2023542883A (ko)
KR (1) KR20230073239A (ko)
CN (1) CN116261740A (ko)
WO (1) WO2022066902A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
KR101110639B1 (ko) 2011-06-22 2012-06-12 팅크웨어(주) 세이프 서비스 시스템 및 그 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418450B2 (en) 2006-08-31 2016-08-16 Ati Technologies Ulc Texture compression techniques
US10255021B2 (en) * 2015-05-28 2019-04-09 Qualcomm Incorporated Low latency screen mirroring
KR102512521B1 (ko) 2015-10-12 2023-03-21 삼성전자주식회사 텍스쳐 처리 방법 및 장치
KR20180037837A (ko) * 2016-10-05 2018-04-13 삼성전자주식회사 채널의 변화량에 기초하여 채널에 할당되는 비트들의 수를 결정하는 방법 및 장치.
US10769818B2 (en) * 2017-04-09 2020-09-08 Intel Corporation Smart compression/decompression schemes for efficiency and superior results
US10783694B2 (en) * 2017-08-25 2020-09-22 Advanced Micro Devices, Inc. Texture residency checks using compression metadata
GB2567427B (en) * 2017-10-06 2020-10-07 Imagination Tech Ltd Data compression

Also Published As

Publication number Publication date
WO2022066902A1 (en) 2022-03-31
JP2023542883A (ja) 2023-10-12
US11308648B2 (en) 2022-04-19
US20220092826A1 (en) 2022-03-24
EP4217969A1 (en) 2023-08-02
US20230048839A1 (en) 2023-02-16
US11694367B2 (en) 2023-07-04
CN116261740A (zh) 2023-06-13

Similar Documents

Publication Publication Date Title
KR101994986B1 (ko) 셰이더 프로세서를 사용한 실시간 온-칩 텍스처 압축 해제
US9478002B2 (en) Vertex parameter data compression
US11694367B2 (en) Compressing texture data on a per-channel basis
CN111279384B (zh) 图形流水线中的索引的压缩和解压缩
WO2013101150A1 (en) A sort-based tiled deferred shading architecture for decoupled sampling
US11521342B2 (en) Residency map descriptors
US11720499B2 (en) Selective generation of miss requests for cache lines
JP2020531994A (ja) 圧縮メタデータを用いたテクスチャ常駐チェック
KR20220100877A (ko) 대역폭 테셀레이션 팩터 감소
KR20060116916A (ko) 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법
US11978234B2 (en) Method and apparatus of data compression
US11620788B2 (en) Graphics texture footprint discovery
US20230206380A1 (en) Optimizing partial writes to compressed blocks
US20230186523A1 (en) Method and system for integrating compression