KR20230107554A - 컴퓨트 작업로드들의 래스터화를 위한 방법들 및 장치 - Google Patents

컴퓨트 작업로드들의 래스터화를 위한 방법들 및 장치 Download PDF

Info

Publication number
KR20230107554A
KR20230107554A KR1020237014697A KR20237014697A KR20230107554A KR 20230107554 A KR20230107554 A KR 20230107554A KR 1020237014697 A KR1020237014697 A KR 1020237014697A KR 20237014697 A KR20237014697 A KR 20237014697A KR 20230107554 A KR20230107554 A KR 20230107554A
Authority
KR
South Korea
Prior art keywords
workgroups
pixels
tiles
pixel
pixel tiles
Prior art date
Application number
KR1020237014697A
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 KR20230107554A publication Critical patent/KR20230107554A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • 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
    • 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

Abstract

본 개시내용은 그래픽 프로세싱을 위한 방법들 및 장치, 예컨대 GPU에 관한 것이다. 장치는 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신할 수 있으며, 작업그룹들 및 픽셀 타일들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함한다. 장치는 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정할 수 있다. 장치는 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬될 때 하나 이상의 작업그룹들의 변환 순서를 결정할 수 있으며, 변환 순서는 하나 이상의 작업그룹들 중 하나의 작업그룹과 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응한다. 장치는 하나 이상의 작업그룹들의 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환할 수 있다.

Description

컴퓨트 작업로드들의 래스터화를 위한 방법들 및 장치
[0001] 본 개시내용은 일반적으로 프로세싱 시스템들에 관한 것으로, 더 상세하게는, 그래픽 프로세싱을 위한 하나 이상의 기법들에 관한 것이다.
[0002] 컴퓨팅 디바이스는 종종, 디스플레이를 위한 그래픽 데이터의 렌더링을 가속화하기 위해 GPU(graphics processing unit)를 이용한다. 그러한 컴퓨팅 디바이스들은, 예컨대 컴퓨터 워크스테이션들, 모바일 폰들, 이를테면 소위 스마트폰들, 임베디드 시스템들, 개인용 컴퓨터들, 태블릿 컴퓨터들, 및 비디오 게임 콘솔들을 포함할 수 있다. GPU들은, 그래픽 프로세싱 커맨드들을 실행하고 프레임을 출력하기 위해 함께 동작하는 하나 이상의 프로세싱 스테이지들을 포함하는 그래픽 프로세싱 파이프라인을 실행한다. CPU(central processing unit)는 하나 이상의 그래픽 프로세싱 커맨드들을 GPU에 발행함으로써 GPU의 동작을 제어할 수 있다. 현대의 CPU들은 통상적으로 다수의 애플리케이션들을 동시에 실행할 수 있으며, 애플리케이션들 각각은 실행 동안 GPU를 이용할 필요가 있을 수 있다. 디스플레이 상에서의 시각적 제시를 위한 콘텐츠를 제공하는 디바이스는 일반적으로 GPU를 포함한다.
[0003] 통상적으로, 디바이스의 GPU는 그래픽 프로세싱 파이프라인에서 프로세스들을 수행하도록 구성된다. 그러나, 무선 통신 및 더 작은 핸드헬드 디바이스들의 출현으로, 개선된 그래픽 프로세싱에 대한 증가된 필요성이 전개되었다.
[0004] 다음은, 하나 이상의 양상들의 기본적인 이해를 제공하기 위해 그러한 양상들의 간략화된 요약을 제시한다. 이러한 요약은 모든 고려된 양상들의 포괄적인 개관이 아니며, 모든 양상들의 핵심 엘리먼트들을 식별하거나 임의의 또는 모든 양상들의 범위를 서술하도록 의도되지 않는다. 이러한 요약의 유일한 목적은, 이후에 제시되는 더 상세한 설명에 대한 서론으로서 간략화된 형태로 하나 이상의 양상들의 일부 개념들을 제시하는 것이다.
[0005] 개시내용의 일 양상에서, 방법, 컴퓨터-판독가능 매체, 및 장치가 제공된다. 장치는 CPU(central processing unit), GPU(graphics processing unit), 또는 그래픽 프로세싱을 수행할 수 있는 임의의 장치일 수 있다. 장치는 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신할 수 있으며, 하나 이상의 작업그룹들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 하나 이상의 픽셀 타일들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함한다. 장치는 또한, 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정할 수 있다. 장치는 또한, 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬될 때 하나 이상의 작업그룹들의 변환 순서를 결정할 수 있으며, 변환 순서는 하나 이상의 작업그룹들 중 하나의 작업그룹과 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응한다. 장치는 또한, 하나 이상의 작업그룹들의 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환할 수 있다.
[0006] 본 개시내용의 하나 이상의 예들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기재된다. 본 개시내용의 다른 특징들, 목적들, 및 장점들은 설명 및 도면들, 그리고 청구항들로부터 명백할 것이다.
[0007] 도 1은 본 개시내용의 하나 이상의 기법들에 따른, 예시적인 콘텐츠 생성 시스템을 예시하는 블록 다이어그램이다.
[0008] 도 2는 본 개시내용의 하나 이상의 기법들에 따른 예시적인 GPU를 예시한다.
[0009] 도 3은 본 개시내용의 하나 이상의 기법들에 따른 예시적인 이미지 또는 표면을 예시한다.
[0010] 도 4는 본 개시내용의 하나 이상의 기법들에 따른, 캐시 저장 프로세스의 예시적인 다이어그램을 예시한다.
[0011] 도 5는 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 예시적인 다이어그램을 예시한다.
[0012] 도 6은 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 예시적인 다이어그램을 예시한다.
[0013] 도 7은 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 예시적인 다이어그램을 예시한다.
[0014] 도 8은 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 예시적인 다이어그램을 예시한다.
[0015] 도 9는 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 예시적인 다이어그램을 예시한다.
[0016] 도 10은 본 개시내용의 하나 이상의 기법들에 따른 예시적인 방법의 예시적인 흐름도를 예시한다.
[0017] 그래픽 프로세싱의 일부 양상들에서, 레벨 2(L2) 캐시의 제한된 사이즈로 인해, 특정한 캐시라인들이 시스템 메모리로 축출(evict)될 수 있다. L2 캐시가 먼저 DDR(double data rate) RAM으로부터 오리지널 콘텐츠를 판독하고, 이어서, 압축을 수행하며, 이어서, 압축된 데이터를 DDR RAM에 기입할 필요가 있을 수 있으므로, 부분적으로 채워진 캐시라인들의 그러한 축출은 느릴 수 있다. 일부 경우들에서, 부분적으로 채워진 캐시라인 축출은 큰 성능 저하를 초래할 수 있다. 그러한 큰 저하는 드라이버들이 컴퓨트 셰이더에 의해 사용되는 리소스들에 대한 UBWC(universal bandwidth compression) 압축을 인에이블링시키는 것을 방지할 수 있다. 그러한 압축은, 작업그룹 형상이 긴 캐시라인의 타일 사이즈와 정렬될 때, 통상적인 경우들에서 성능 및 전력에 도움을 줄 수 있다. 위에 표시된 바와 같이, 컴퓨트 작업로드에서 압축을 인에이블링시키기 위한 하나의 문제는 셰이더 프로세서(SP)로부터 L2 캐시로의 요청들의 합병이다. 일부 압축 알고리즘들은 선형 레이아웃 대신 타일 레이아웃을 갖도록 리소스들을 특정할 수 있지만, 타일 리소스들에 적용되는 특정한 패턴들, 예컨대 스위즐링 패턴(swizzling pattern)은 컴퓨트 작업그룹 내의 인접한 작업 항목들이 연속하는 어드레스들을 L2 캐시에 전송하는 것을 방지할 수 있다. 이들 비-연속 어드레스들은 SP 엔진에 의해 완전히 합병되지 않을 수 있으며, SP-L2 캐시 대역폭을 낭비하고, 동일한 어드레스 액세스들에 의해 야기되는 과도한 수의 요청들 및 뱅크 충돌들에 의해 L2 캐시를 느리게 할 수 있다. 컴퓨트 작업로드에서 선형 리소스 레이아웃이 압축된(타일링된) 리소스 레이아웃으로 스위칭되는 이러한 합병 문제에 의해 야기되는 성능 저하가 존재할 수 있다. 본 개시내용의 양상들은 부분적인 축출을 감소 또는 완화시키는 컴퓨트 작업로드들을 이용할 수 있다. 예컨대, 본 개시내용의 양상들은 부분적인 축출을 감소시키기 위해, 타일링된 작업그룹 래스터화를 이용할 수 있다. 이러한 타일링된 작업그룹 래스터화 프로세스가 본 명세서에 설명된다.
[0018] 시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 다양한 양상들은 첨부한 도면들을 참조하여 더 완전하게 아래에서 설명된다. 그러나, 본 개시내용은 많은 상이한 형태들로 구현될 수 있으며, 본 개시내용 전반에 걸쳐 제시되는 임의의 특정한 구조 또는 기능으로 제한되는 것으로서 해석되지 않아야 한다. 오히려, 이들 양상들은, 본 개시내용이 철저하고 완전해질 것이고 본 개시내용의 범위를 당업자들에게 완전히 전달하도록 제공된다. 본 명세서의 교시들에 기반하여, 당업자는, 본 개시내용의의 다른 양상들과 독립적으로 구현되는지, 또는 그 양상들과 결합되는지에 관계없이, 본 개시내용의 범위가 본 명세서에 개시된 시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 임의의 양상을 커버하도록 의도된다는 것을 인식해야 한다. 예컨대, 본 명세서에 기재된 임의의 수의 양상들을 사용하여 장치가 구현될 수 있거나 방법이 실시될 수 있다. 부가적으로, 본 개시내용의 범위는, 본 명세서에 기재된 본 개시내용의 다양한 양상들에 부가하여 또는 그 다양한 양상들 이외의 다른 구조, 기능, 또는 구조 및 기능을 사용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 임의의 양상은 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수 있다.
[0019] 다양한 양상들이 본 명세서에서 설명되지만, 이들 양상들의 많은 변경들 및 치환들은 본 개시내용의 범위 내에 있다. 본 개시내용의 양상들의 일부 잠재적인 이점들 및 장점들이 언급되지만, 본 개시내용의 범위는 특정한 이점들, 사용들, 또는 목적들로 제한되도록 의도되지 않는다. 오히려, 개시내용의 양상들은 상이한 무선 기술들, 시스템 구성들, 네트워크들, 및 송신 프로토콜들에 광범위하게 적용가능하도록 의도되며, 이들 중 일부는 다음의 설명 및 도면들에서 예로서 예시된다. 상세한 설명 및 도면들은 제한하기보다는 단지 본 개시내용을 예시할 뿐이며, 본 개시내용의 범위는 첨부된 청구항들 및 그들의 등가물들에 의해 정의된다.
[0020] 여러 개의 양상들이 다양한 장치 및 방법들을 참조하여 제시된다. 이들 장치 및 방법들은, 다양한 블록들, 컴포넌트들, 회로들, 프로세스들, 알고리즘들 등(총괄하여, "엘리먼트들"로 지칭됨)에 의해 다음의 상세한 설명에서 설명되고 첨부한 도면들에서 예시된다. 이들 엘리먼트들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다. 그러한 엘리먼트들이 하드웨어로서 구현될지 또는 소프트웨어로서 구현될지는 특정한 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 의존한다.
[0021] 예로서, 엘리먼트, 또는 엘리먼트의 임의의 부분, 또는 엘리먼트들의 임의의 조합은, 하나 이상의 프로세서들(또한, 프로세싱 유닛들로 지칭될 수 있음)을 포함하는 "프로세싱 시스템"으로서 구현될 수 있다. 프로세서들의 예들은, 마이크로프로세서들, 마이크로제어기들, GPU(graphics processing unit)들, GPGPU(general purpose GPU)들, CPU(central processing unit)들, 애플리케이션 프로세서들, DSP(digital signal processor)들, RISC(reduced instruction set computing) 프로세서들, SoC(systems-on-chip), 베이스밴드 프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable gate array)들, PLD(programmable logic device)들, 상태 머신들, 게이팅된 로직, 이산 하드웨어 회로들, 및 본 개시내용 전반에 걸쳐 설명된 다양한 기능을 수행하도록 구성된 다른 적절한 하드웨어를 포함한다. 프로세싱 시스템의 하나 이상의 프로세서들은 소프트웨어를 실행할 수 있다. 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션 언어, 또는 다른 용어로서 지칭되는지에 관계없이, 명령들, 명령 세트들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브프로그램들, 소프트웨어 컴포넌트들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행파일(executable)들, 실행 스레드들, 절차들, 함수들 등을 의미하도록 광범위하게 해석될 수 있다. 용어 애플리케이션은 소프트웨어를 지칭할 수 있다. 본 명세서에 설명된 바와 같이, 하나 이상의 기법들은 하나 이상의 기능들을 수행하도록 구성된 애플리케이션, 즉 소프트웨어를 지칭할 수 있다. 그러한 예들에서, 애플리케이션은 메모리, 예컨대 프로세서의 온-칩 메모리, 시스템 메모리, 또는 임의의 다른 메모리 상에 저장될 수 있다. 본 명세서에 설명된 하드웨어, 이를테면 프로세서는 애플리케이션을 실행하도록 구성될 수 있다. 예컨대, 애플리케이션은, 하드웨어에 의해 실행될 때, 하드웨어로 하여금 본 명세서에 설명된 하나 이상의 기법들을 수행하게 하는 코드를 포함하는 것으로 설명될 수 있다. 일 예로서, 하드웨어는 메모리로부터 코드에 액세스하고, 메모리로부터 액세스된 코드를 실행하여, 본 명세서에 설명된 하나 이상의 기법들을 수행할 수 있다. 일부 예들에서, 컴포넌트들이 본 개시내용에서 식별된다. 그러한 예들에서, 컴포넌트들은 하드웨어, 소프트웨어, 또는 이들의 조합일 수 있다. 컴포넌트들은 별개의 컴포넌트들이거나 또는 단일 컴포넌트의 서브-컴포넌트들일 수 있다.
[0022] 따라서, 본 명세서에 설명된 하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 이로서 인코딩될 수 있다. 컴퓨터 판독가능 매체들은 컴퓨터 저장 매체들을 포함한다. 저장 매체들은 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수 있다. 제한이 아닌 예로서, 그러한 컴퓨터-판독가능 매체들은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable ROM), 광학 디스크 저장소, 자기 디스크 저장소, 다른 자기 저장 디바이스들, 컴퓨터-판독가능 매체들의 전술된 타입들의 조합들, 또는 컴퓨터에 의해 액세스될 수 있는 명령들 또는 데이터 구조들의 형태로 컴퓨터 실행가능 코드를 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다.
[0023] 일반적으로, 본 개시내용은 단일 디바이스 또는 다수의 디바이스들에서 그래픽 프로세싱 파이프라인을 갖고, 그래픽 콘텐츠의 렌더링을 개선시키고, 그리고/또는 프로세싱 유닛, 즉 본 명세서에 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 프로세싱 유닛, 이를테면 GPU의 로드를 감소시키기 위한 기법들을 설명한다. 예컨대, 본 개시내용은 그래픽 프로세싱을 이용하는 임의의 디바이스에서의 그래픽 프로세싱을 위한 기법들을 설명한다. 다른 예시적인 이점들은 본 개시내용 전반에 걸쳐 설명된다.
[0024] 본 명세서에서 사용되는 바와 같이, 용어 "컨텐츠"의 인스턴스들은 "그래픽 콘텐츠", "이미지"를 지칭할 수 있고, 그 반대의 경우도 가능하다. 이는 용어들이 형용사, 명사, 또는 다른 품사들로서 사용되고 있는지에 관계없이 사실이다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "그래픽 콘텐츠"는 그래픽 프로세싱 파이프라인의 하나 이상의 프로세스들에 의해 생성된 콘텐츠를 지칭할 수 있다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "그래픽 콘텐츠"는 그래픽 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수 있다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "그래픽 콘텐츠"는 그래픽 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수 있다.
[0025] 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "디스플레이 콘텐츠"는 디스플레이 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수 있다. 일부 예들에서, 본 명세서에서 사용된 바와 같이, 용어 "디스플레이 콘텐츠"는 디스플레이 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수 있다. 그래픽 콘텐츠는 디스플레이 콘텐츠가 되도록 프로세싱될 수 있다. 예컨대, 그래픽 프로세싱 유닛은 프레임과 같은 그래픽 콘텐츠를 버퍼(이는 프레임버퍼로 지칭될 수 있음)에 출력할 수 있다. 디스플레이 프로세싱 유닛은 버퍼로부터 그래픽 콘텐츠, 이를테면 하나 이상의 프레임들을 판독하고, 그래픽 콘텐츠에 대해 하나 이상의 디스플레이 프로세싱 기법들을 수행하여, 디스플레이 콘텐츠를 생성할 수 있다. 예컨대, 디스플레이 프로세싱 유닛은 프레임을 생성하기 위해 하나 이상의 렌더링된 계층들에 대해 구성을 수행하도록 구성될 수 있다. 다른 예로서, 디스플레이 프로세싱 유닛은 2개 이상의 계층들을 단일 프레임으로 함께 구성, 블렌딩, 또는 다른 방식으로 조합하도록 구성될 수 있다. 디스플레이 프로세싱 유닛은 프레임에 대해 스케일링, 예컨대 업스케일링 또는 다운스케일링을 수행하도록 구성될 수 있다. 일부 예들에서, 프레임은 계층을 지칭할 수 있다. 다른 예들에서, 프레임은 프레임을 형성하기 위해 이미 함께 블렌딩된 2개 이상의 계층들을 지칭할 수 있으며, 즉 프레임은 2개 이상의 계층들을 포함하고, 2개 이상의 계층들을 포함하는 프레임은 후속하여 블렌딩될 수 있다.
[0026] 도 1은 본 개시내용의 하나 이상의 기법들을 구현하도록 구성된 예시적인 콘텐츠 생성 시스템(100)을 예시하는 블록 다이어그램이다. 콘텐츠 생성 시스템(100)은 디바이스(104)를 포함한다. 디바이스(104)는 본 명세서에 설명된 다양한 기능들을 수행하기 위한 하나 이상의 컴포넌트들 또는 회로들을 포함할 수 있다. 일부 예들에서, 디바이스(104)의 하나 이상의 컴포넌트들은 SOC의 컴포넌트들일 수 있다. 디바이스(104)는 본 개시내용의 하나 이상의 기법들을 수행하도록 구성된 하나 이상의 컴포넌트들을 포함할 수 있다. 도시된 예에서, 디바이스(104)는 프로세싱 유닛(120), 콘텐츠 인코더/디코더(122), 및 시스템 메모리(124)를 포함할 수 있다. 일부 양상들에서, 디바이스(104)는 다수의 선택적인 컴포넌트들, 예컨대, 통신 인터페이스(126), 트랜시버(132), 수신기(128), 송신기(130), 디스플레이 프로세서(127), 및 하나 이상의 디스플레이들(131)을 포함할 수 있다. 디스플레이(131)에 대한 언급은 하나 이상의 디스플레이들(131)을 지칭할 수 있다. 예컨대, 디스플레이(131)는 단일 디스플레이 또는 다수의 디스플레이들을 포함할 수 있다. 디스플레이(131)는 제1 디스플레이 및 제2 디스플레이를 포함할 수 있다. 제1 디스플레이는 좌안 디스플레이일 수 있고, 제2 디스플레이는 우안 디스플레이일 수 있다. 일부 예들에서, 제1 및 제2 디스플레이는 그 상에서의 제시를 위해 상이한 프레임들을 수신할 수 있다. 다른 예들에서, 제1 및 제2 디스플레이는 그 상에서의 제시를 위해 동일한 프레임들을 수신할 수 있다. 추가적인 예들에서, 그래픽 프로세싱의 결과들은 디바이스 상에서 디스플레이되지 않을 수 있으며, 예컨대, 제1 및 제2 디스플레이는 그 상에서의 제시를 위한 어떠한 프레임들도 수신하지 않을 수 있다. 대신에, 프레임들 또는 그래픽 프로세싱 결과들은 다른 디바이스에 전달될 수 있다. 일부 양상들에서, 이는 분할-렌더링으로 지칭될 수 있다.
[0027] 프로세싱 유닛(120)은 내부 메모리(121)를 포함할 수 있다. 프로세싱 유닛(120)은, 이를테면 그래픽 프로세싱 파이프라인(107)에서 그래픽 프로세싱을 수행하도록 구성될 수 있다. 콘텐츠 인코더/디코더(122)는 내부 메모리(123)를 포함할 수 있다. 일부 예들에서, 디바이스(104)는 하나 이상의 디스플레이들(131)에 의한 제시 전에 프로세싱 유닛(120)에 의해 생성된 하나 이상의 프레임들에 대해 하나 이상의 디스플레이 프로세싱 기법들을 수행하기 위한 디스플레이 프로세서, 이를테면 디스플레이 프로세서(127)를 포함할 수 있다. 디스플레이 프로세서(127)는 디스플레이 프로세싱을 수행하도록 구성될 수 있다. 예컨대, 디스플레이 프로세서(127)는 프로세싱 유닛(120)에 의해 생성된 하나 이상의 프레임들에 대해 하나 이상의 디스플레이 프로세싱 기법들을 수행하도록 구성될 수 있다. 하나 이상의 디스플레이들(131)은 디스플레이 프로세서(127)에 의해 프로세싱된 프레임들을 디스플레이하거나 다른 방식으로 제시하도록 구성될 수 있다. 일부 예들에서, 하나 이상의 디스플레이들(131)은, LCD(liquid crystal display), 플라즈마 디스플레이, OLED(organic light emitting diode) 디스플레이, 투사 디스플레이 디바이스, 증강 현실 디스플레이 디바이스, 가상 현실 디스플레이 디바이스, 머리-장착형 디스플레이, 또는 임의의 다른 타입의 디스플레이 디바이스 중 하나 이상을 포함할 수 있다.
[0028] 프로세싱 유닛(120) 및 콘텐츠 인코더/디코더(122) 외부의 메모리, 이를테면 시스템 메모리(124)는 프로세싱 유닛(120) 및 콘텐츠 인코더/디코더(122)가 액세스가능할 수 있다. 예컨대, 프로세싱 유닛(120) 및 콘텐츠 인코더/디코더(122)는 시스템 메모리(124)와 같은 외부 메모리로부터 판독하고 그리고/또는 외부 메모리에 기입하도록 구성될 수 있다. 프로세싱 유닛(120) 및 콘텐츠 인코더/디코더(122)는 버스를 통해 시스템 메모리(124)에 통신가능하게 커플링될 수 있다. 일부 예들에서, 프로세싱 유닛(120) 및 콘텐츠 인코더/디코더(122)는 버스 또는 상이한 연결을 통해 서로 통신가능하게 커플링될 수 있다.
[0029] 콘텐츠 인코더/디코더(122)는 임의의 소스, 이를테면 시스템 메모리(124) 및/또는 통신 인터페이스(126)로부터 그래픽 콘텐츠를 수신하도록 구성될 수 있다. 시스템 메모리(124)는 수신된 인코딩된 또는 디코딩된 그래픽 콘텐츠를 저장하도록 구성될 수 있다. 콘텐츠 인코더/디코더(122)는, 예컨대 시스템 메모리(124) 및/또는 통신 인터페이스(126)로부터 인코딩된 또는 디코딩된 그래픽 콘텐츠를 인코딩된 픽셀 데이터의 형태로 수신하도록 구성될 수 있다. 콘텐츠 인코더/디코더(122)는 임의의 그래픽 콘텐츠를 인코딩 또는 디코딩하도록 구성될 수 있다.
[0030] 내부 메모리(121) 또는 시스템 메모리(124)는 하나 이상의 휘발성 또는 비-휘발성 메모리들 또는 저장 디바이스들을 포함할 수 있다. 일부 예들에서, 내부 메모리(121) 또는 시스템 메모리(124)는 RAM, SRAM, DRAM, EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들, 또는 임의의 다른 타입의 메모리를 포함할 수 있다.
[0031] 일부 예들에 따르면, 내부 메모리(121) 또는 시스템 메모리(124)는 비-일시적 저장 매체일 수 있다. 용어 "비-일시적"은 저장 매체가 반송파 또는 전파된 신호에 구현되지 않는다는 것을 표시할 수 있다. 그러나, 용어 "비-일시적"은, 내부 메모리(121) 또는 시스템 메모리(124)가 비-이동가능하거나 그의 콘텐츠들이 정적이라는 것을 의미하는 것으로 해석되지 않아야 한다. 일 예로서, 시스템 메모리(124)는 디바이스(104)로부터 제거되고, 다른 디바이스로 이동될 수 있다. 다른 예로서, 시스템 메모리(124)는 디바이스(104)로부터 제거가능하지 않을 수 있다.
[0032] 프로세싱 유닛(120)은 CPU(central processing unit), GPU(graphics processing unit), GPGPU(general purpose GPU), 또는 그래픽 프로세싱을 수행하도록 구성될 수 있는 임의의 다른 프로세싱 유닛일 수 있다. 일부 예들에서, 프로세싱 유닛(120)은 디바이스(104)의 마더보드에 통합될 수 있다. 일부 예들에서, 프로세싱 유닛(120)은 디바이스(104)의 마더보드 내의 포트에 설치된 그래픽 카드 상에 존재할 수 있거나, 또는 그렇지 않으면 디바이스(104)와 상호동작하도록 구성된 주변기기 디바이스 내에 통합될 수 있다. 프로세싱 유닛(120)은 하나 이상의 프로세서들, 이를테면 하나 이상의 마이크로프로세서들, GPU들, ASIC(application specific integrated circuit)들, FPGA(field programmable gate array)들, ALU(arithmetic logic unit)들, DSP(digital signal processor)들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 등가의 집적 또는 이산 로직 회로부, 또는 이들의 임의의 조합들을 포함할 수 있다. 기법들이 부분적으로 소프트웨어로 구현되면, 프로세싱 유닛(120)은 소프트웨어에 대한 명령들을 적합한 비-일시적 컴퓨터-판독가능 저장 매체, 예컨대 내부 메모리(121)에 저장할 수 있고, 본 개시내용의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 하드웨어로 명령들을 실행할 수 있다. 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함하는 전술한 것 중 임의의 것은 하나 이상의 프로세서들인 것으로 고려될 수 있다.
[0033] 콘텐츠 인코더/디코더(122)는 콘텐츠 디코딩을 수행하도록 구성된 임의의 프로세싱 유닛일 수 있다. 일부 예들에서, 콘텐츠 인코더/디코더(122)는 디바이스(104)의 마더보드에 통합될 수 있다. 콘텐츠 인코더/디코더(122)는 하나 이상의 프로세서들, 이를테면 하나 이상의 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable gate array)들, ALU(arithmetic logic unit)들, DSP(digital signal processor)들, 비디오 프로세서들, 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 등가의 집적 또는 이산 로직 회로부, 또는 이들의 임의의 조합들을 포함할 수 있다. 기법들이 부분적으로 소프트웨어로 구현되면, 콘텐츠 인코더/디코더(122)는 소프트웨어에 대한 명령들을 적합한 비-일시적 컴퓨터-판독가능 저장 매체, 예컨대 내부 메모리(123)에 저장할 수 있고, 본 개시내용의 기법들을 수행하기 위해 하나 이상의 프로세서들을 사용하여 하드웨어로 명령들을 실행할 수 있다. 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함하는 전술한 것 중 임의의 것은 하나 이상의 프로세서들인 것으로 고려될 수 있다.
[0034] 일부 양상들에서, 콘텐츠 생성 시스템(100)은 선택적인 통신 인터페이스(126)를 포함할 수 있다. 통신 인터페이스(126)는 수신기(128) 및 송신기(130)를 포함할 수 있다. 수신기(128)는 디바이스(104)에 대해 본 명세서에 설명된 임의의 수신 기능을 수행하도록 구성될 수 있다. 부가적으로, 수신기(128)는 다른 디바이스로부터 정보, 예컨대, 눈 또는 머리 포지션 정보, 렌더링 커맨드들, 또는 로케이션 정보를 수신하도록 구성될 수 있다. 송신기(130)는 디바이스(104)에 대해 본 명세서에 설명된 임의의 송신 기능을 수행하도록 구성될 수 있다. 예컨대, 송신기(130)는 콘텐츠에 대한 요청을 포함할 수 있는 정보를 다른 디바이스에 송신하도록 구성될 수 있다. 수신기(128) 및 송신기(130)는 트랜시버(132)로 결합될 수 있다. 그러한 예들에서, 트랜시버(132)는 디바이스(104)에 대해 본 명세서에 설명된 임의의 수신 기능 및/또는 송신 기능을 수행하도록 구성될 수 있다.
[0035] 도 1을 다시 참조하면, 특정한 양상들에서, 그래픽 프로세싱 파이프라인(107)은 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신하도록 구성된 결정 컴포넌트(198)를 포함할 수 있으며, 하나 이상의 작업그룹들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 하나 이상의 픽셀 타일들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함한다. 결정 컴포넌트(198)는 또한, 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정하도록 구성될 수 있다. 결정 컴포넌트(198)는 또한, 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬될 때 하나 이상의 작업그룹들의 변환 순서를 결정하도록 구성될 수 있으며, 변환 순서는 하나 이상의 작업그룹들 중 하나의 작업그룹과 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응한다. 결정 컴포넌트(198)는 또한, 하나 이상의 작업그룹들의 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환하도록 구성될 수 있다.
[0036] 본 명세서에 설명된 바와 같이, 디바이스, 이를테면 디바이스(104)는 본 명세서에 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 디바이스, 장치, 또는 시스템을 지칭할 수 있다. 예컨대, 디바이스는 서버, 기지국, 사용자 장비, 클라이언트 디바이스, 스테이션, 액세스 포인트, 컴퓨터, 예컨대 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 컴퓨터 워크스테이션, 또는 메인프레임 컴퓨터, 최종 제품, 장치, 폰, 스마트 폰, 서버, 비디오 게임 플랫폼 또는 콘솔, 핸드헬드 디바이스, 예컨대 휴대용 비디오 게임 디바이스 또는 PDA(personal digital assistant), 웨어러블 컴퓨팅 디바이스, 예컨대 스마트 워치, 증강 현실 디바이스, 또는 가상 현실 디바이스, 비-웨어러블 디바이스, 디스플레이 또는 디스플레이 디바이스, 텔레비전, 텔레비전 셋톱 박스, 중간 네트워크 디바이스, 디지털 미디어 플레이어, 비디오 스트리밍 디바이스, 콘텐츠 스트리밍 디바이스, 차량내 컴퓨터, 임의의 모바일 디바이스, 그래픽 콘텐츠를 생성하도록 구성된 임의의 디바이스, 또는 본 명세서에 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 디바이스일 수 있다. 본 명세서의 프로세스들은 특정한 컴포넌트(예컨대, GPU)에 의해 수행되는 것으로 설명될 수 있지만, 추가적인 실시예들에서, 개시된 실시예들과 일치하는 다른 컴포넌트들(예컨대, CPU)을 사용하여 수행될 수 있다.
[0037] GPU들은 GPU 파이프라인에서 다수의 타입들의 데이터 또는 데이터 패킷들을 프로세싱할 수 있다. 예컨대, 일부 양상들에서, GPU는 2개의 타입들의 데이터 또는 데이터 패킷들, 예컨대 컨텍스트 레지스터 패킷들 및 드로우 콜 데이터(draw call data)를 프로세싱할 수 있다. 컨텍스트 레지스터 패킷은 글로벌 상태 정보의 세트, 예컨대 글로벌 레지스터, 셰이딩 프로그램, 또는 상수 데이터에 관한 정보일 수 있으며, 이는 그래픽 컨텍스트가 어떻게 프로세싱될지를 조절할 수 있다. 예컨대, 컨텍스트 레지스터 패킷들은 컬러 포맷에 관한 정보를 포함할 수 있다. 컨텍스트 레지스터 패킷들의 일부 양상들에서, 어느 작업로드가 컨텍스트 레지스터에 속하는지를 표시하는 비트가 존재할 수 있다. 또한, 동시에 그리고/또는 병렬로 실행되는 다수의 기능들 또는 프로그래밍이 존재할 수 있다. 예컨대, 기능들 또는 프로그래밍은 특정한 동작, 예컨대 컬러 모드 또는 컬러 포맷을 설명할 수 있다. 따라서, 컨텍스트 레지스터는 GPU의 다수의 상태들을 정의할 수 있다.
[0038] 컨텍스트 상태들은, 개별 프로세싱 유닛, 예컨대 버텍스 페처(vertex fetcher; VFD), 버텍스 셰이더(vertex shader; VS), 셰이더 프로세서, 또는 지오메트리 프로세서가 어떻게 기능하는지, 및/또는 프로세싱 유닛이 어떤 모드에서 기능하는지를 결정하는 데 이용될 수 있다. 그렇게 하기 위해, GPU들은 컨텍스트 레지스터들 및 프로그래밍 데이터를 사용할 수 있다. 일부 양상들에서, GPU는 모드 또는 상태의 컨텍스트 레지스터 정의에 기반하여 파이프라인에서 작업로드, 예컨대 버텍스 또는 픽셀 작업로드를 생성할 수 있다. 특정한 프로세싱 유닛들, 예컨대 VFD는 이러한 상태들을 사용하여, 특정한 기능들, 예컨대 버텍스가 어떻게 어셈블리되는지를 결정할 수 있다. 이들 모드들 또는 상태들이 변화될 수 있으므로, GPU들은 대응하는 컨텍스트를 변화시킬 필요가 있을 수 있다. 부가적으로, 모드 또는 상태에 대응하는 작업로드는 변화하는 모드 또는 상태를 따를 수 있다.
[0039] 도 2는 본 개시내용의 하나 이상의 기법들에 따른 예시적인 GPU(200)를 예시한다. 도 2에 도시된 바와 같이, GPU(200)는 커맨드 프로세서(command processor; CP)(210), 드로우 콜 패킷들(212), VFD(220), VS(222), 버텍스 캐시(vertex cache; VPC)(224), 트라이앵글 셋업 엔진(triangle setup engine; TSE)(226), 래스터화기(rasterizer; RAS)(228), Z 프로세스 엔진(Z process engine; ZPE)(230), 픽셀 보간기(pixel interpolator; PI)(232), 프래그먼트 셰이더(fragment shader; FS)(234), 렌더 백엔드(render backend; RB)(236), L2 캐시(UCHE)(238), 및 시스템 메모리(240)를 포함한다. 도 2는 GPU(200)가 프로세싱 유닛들(220 내지 238)을 포함하는 것을 디스플레이하지만, GPU(200)는 다수의 부가적인 프로세싱 유닛들을 포함할 수 있다. 부가적으로, 프로세싱 유닛들(220 내지 238)은 단지 일 예일 뿐이며, 본 개시내용에 따른 GPU들에 의해 프로세싱 유닛들의 임의의 조합 또는 순서가 사용될 수 있다. GPU(200)는 또한 커맨드 버퍼(250), 컨텍스트 레지스터 패킷들(260), 및 컨텍스트 상태들(261)을 포함한다.
[0040] 도 2에 도시된 바와 같이, GPU는 커맨드 버퍼를 컨텍스트 레지스터 패킷들, 예컨대 컨텍스트 레지스터 패킷들(260), 및/또는 드로우 콜 데이터 패킷들, 예컨대 드로우 콜 패킷들(212)로 파싱하기 위해 CP, 예컨대 CP(210), 또는 하드웨어 가속기를 이용할 수 있다. 이어서, CP(210)는 컨텍스트 레지스터 패킷들(260) 또는 드로우 콜 데이터 패킷들(212)을 별개의 경로들을 통해 GPU 내의 프로세싱 유닛들 또는 블록들에 전송할 수 있다. 추가로, 커맨드 버퍼(250)는 컨텍스트 레지스터들 및 드로우 콜들의 상이한 상태들을 교번할 수 있다. 예컨대, 커맨드 버퍼는 다음의 방식: 컨텍스트 N의 컨텍스트 레지스터, 컨텍스트 N의 드로우 콜(들), 컨텍스트 N+1의 컨텍스트 레지스터, 및 컨텍스트 N+1의 드로우 콜(들)의 방식으로 구조화될 수 있다.
[0041] GPU들은 다양한 상이한 방식들로 이미지들을 렌더링할 수 있다. 일부 예시들에서, GPU들은 렌더링 또는 타일링된 렌더링을 사용하여 이미지를 렌더링할 수 있다. 타일링된 렌더링 GPU들에서, 이미지는 상이한 섹션들 또는 타일들로 분할 또는 분리될 수 있다. 이미지의 분할 이후, 각각의 섹션 또는 타일은 별개로 렌더링될 수 있다. 타일링된 렌더링 GPU들은, 그리드의 각각의 부분, 즉 타일이 별개로 렌더링되도록 컴퓨터 그래픽 이미지들을 그리드 포맷으로 분할할 수 있다. 일부 양상들에서, 비닝 패스(binning pass) 동안, 이미지는 상이한 빈들 또는 타일들로 분할될 수 있다. 일부 양상들에서, 비닝 패스 동안, 가시적인 프리미티브(primitive)들 또는 드로우 콜들이 식별될 수 있는 가시성 스트림이 구성될 수 있다. 타일링된 렌더링과는 대조적으로, 직접 렌더링은 프레임을 더 작은 빈들 또는 타일들로 분할하지 않는다. 오히려, 직접 렌더링에서, 전체 프레임이 단일 시간에 렌더링된다. 부가적으로, 일부 타입들의 GPU들은 타일링된 렌더링 및 직접 렌더링을 둘 모두를 허용할 수 있다.
[0042] 일부 양상들에서, GPU들은 드로잉 또는 렌더링 프로세스를 상이한 빈들 또는 타일들에 적용할 수 있다. 예컨대, GPU는 하나의 빈으로 렌더링하고, 빈 내의 프리미티브들 또는 픽셀들에 대한 모든 드로우들을 수행할 수 있다. 빈으로 렌더링하는 프로세스 동안, 렌더 타깃들은 GMEM에 로케이팅될 수 있다. 일부 예시들에서, 하나의 빈으로 렌더링한 이후, 렌더 타깃들의 콘텐츠는 시스템 메모리로 이동될 수 있고, GMEM은 다음 빈을 렌더링하기 위해 비워질 수 있다. 부가적으로, GPU는 다른 빈으로 렌더링하고, 그 빈 내의 프리미티브들 또는 픽셀들에 대한 드로우들을 수행할 수 있다. 따라서, 일부 양상들에서, 하나의 표면에서 드로우들 모두를 커버하는 적은 수의 빈들, 예컨대 4개의 빈들이 존재할 수 있다. 추가로, GPU들은 하나의 빈에서 드로우들 모두를 순환시킬 수 있지만, 가시적인 드로우 콜들, 즉 가시적인 지오메트리를 포함하는 드로우 콜들에 대한 드로우들을 수행할 수 있다. 일부 양상들에서, 가시성 스트림은, 이미지 또는 장면에서 각각의 프리미티브의 가시성 정보를 결정하기 위해, 예컨대 비닝 패스에서 생성될 수 있다. 예컨대, 이러한 가시성 스트림은 특정한 프리미티브가 가시적인지 여부를 식별할 수 있다. 일부 양상들에서, 이러한 정보는, 예컨대 렌더링 패스에서 가시적이지 않은 프리미티브들을 제거하는 데 사용될 수 있다. 또한, 가시적인 것으로 식별되는 프리미티브들 중 적어도 일부는 렌더링 패스에서 렌더링될 수 있다.
[0043] 타일링된 렌더링의 일부 양상들에서, 다수의 프로세싱 페이즈들 또는 패스들이 존재할 수 있다. 예컨대, 렌더링은 2개의 패스들, 예컨대 가시성 또는 빈-가시성(bin-visibility) 패스 및 렌더링 또는 빈-렌더링 패스에서 수행될 수 있다. 가시성 패스 동안, GPU는 렌더링 작업로드를 입력하고, 프리미티브들 또는 트라이앵글들의 포지션들을 레코딩하고, 이어서, 어느 프리미티브들 또는 트라이앵글들이 어느 빈 또는 영역에 속하는지를 결정할 수 있다. 가시성 패스의 일부 양상들에서, GPU들은 또한 가시성 스트림에서 각각의 프리미티브 또는 트라이앵글의 가시성을 식별 또는 마킹할 수 있다. 렌더링 패스 동안, GPU는 가시성 스트림을 입력하고, 한번에 하나의 빈 또는 영역을 프로세싱할 수 있다. 일부 양상들에서, 가시성 스트림은, 어느 프리미티브들 또는 프리미티브들의 버텍스들이 가시적인지 또는 가시적이지 않은지를 결정하기 위해 분석될 수 있다. 그러므로, 가시적인 프리미티브들 또는 프리미티브들의 버텍스들이 프로세싱될 수 있다. 그렇게 함으로써, GPU들은 가시적이지 않은 프리미티브들 또는 트라이앵글들을 프로세싱 또는 렌더링하는 불필요한 작업로드를 감소시킬 수 있다.
[0044] 일부 양상들에서, 가시성 패스 동안, 특정한 타입들의 프리미티브 지오메트리, 예컨대 포지션-전용 지오메트리가 프로세싱될 수 있다. 부가적으로, 프리미티브들 또는 트라이앵글들의 포지션 또는 로케이션에 의존하여, 프리미티브들은 상이한 빈들 또는 영역들로 분류될 수 있다. 일부 예시들에서, 프리미티브들 또는 트라이앵글들을 상이한 빈들로 분류하는 것은 이들 프리미티브들 또는 트라이앵글들에 대한 가시성 정보를 결정함으로써 수행될 수 있다. 예컨대, GPU들은, 예컨대 시스템 메모리에서, 각각의 빈 또는 영역 내의 각각의 프리미티브들의 가시성 정보를 결정 또는 기입할 수 있다. 이러한 가시성 정보는 가시성 스트림을 결정 또는 생성하는 데 사용될 수 있다. 렌더링 패스에서, 각각의 빈 내의 프리미티브들은 별개로 렌더링될 수 있다. 이러한 예시들에서, 가시성 스트림은 그 빈에 대해 가시적이지 않은 프리미티브들을 드롭하는 데 사용되는 메모리로부터 페칭될 수 있다.
[0045] GPU들 또는 GPU 아키텍처들의 일부 양상들은 렌더링을 위한 다수의 상이한 옵션들, 예컨대 소프트웨어 렌더링 및 하드웨어 렌더링을 제공할 수 있다. 소프트웨어 렌더링에서, 드라이버 또는 CPU는 각각의 뷰를 한 번에 프로세싱함으로써 전체 프레임 지오메트리를 복제할 수 있다. 부가적으로, 일부 상이한 상태들은 뷰에 의존하여 변화될 수 있다. 그러므로, 소프트웨어 렌더링에서, 소프트웨어는 이미지에서의 각각의 시점에 대해 렌더링하는 데 이용될 수 있는 일부 상태들을 변화시킴으로써 전체 작업로드를 복제할 수 있다. 특정한 양상들에서, GPU들이 이미지에서의 각각의 시점에 대해 동일한 작업로드를 다수회 제출할 수 있으므로, 증가된 양의 오버헤드가 존재할 수 있다. 하드웨어 렌더링에서, 하드웨어 또는 GPU는 이미지에서의 각각의 시점에 대한 지오메트리를 복제 또는 프로세싱하는 것을 담당할 수 있다. 따라서, 하드웨어는 이미지에서의 각각의 시점에 대한 프리미티브들 또는 트라이앵글들의 복제 또는 프로세싱을 관리할 수 있다.
[0046] 도 3은 다수의 빈들로 분할된 다수의 프리미티브들을 포함하는 이미지 또는 표면(300)을 예시한다. 도 3에 도시된 바와 같이, 이미지 또는 표면(300)은 프리미티브들(321, 322, 323, 및 324)을 포함하는 영역(302)을 포함한다. 프리미티브들(321, 322, 323, 및 324)은 상이한 빈들, 예컨대 빈들(310, 311, 312, 313, 314, 및 315)로 분할되거나 그들에 배치된다. 도 3은 프리미티브들(321 내지 324)에 대한 다수의 시점들을 사용하는 타일링된 렌더링의 일 예를 예시한다. 예컨대, 프리미티브들(321 내지 324)은 제1 시점(350) 및 제2 시점(351)에 있다. 그러므로, GPU가 영역(302)을 포함하는 이미지 또는 표면(300)을 프로세싱 또는 렌더링하는 것은 다수의 시점들 또는 멀티-뷰 렌더링을 이용할 수 있다.
[0047] 본 명세서에서 표시된 바와 같이, GPU들 또는 그래픽 프로세서 유닛들은 전력 소비를 감소시키거나 메모리 대역폭을 절약하기 위해, 타일링된 렌더링 아키텍처를 사용할 수 있다. 위에서 추가로 언급된 바와 같이, 이러한 렌더링 방법은 장면을 다수의 빈들로 분할할 뿐만 아니라, 각각의 빈에서 가시적인 트라이앵글들을 식별하는 가시성 패스를 포함할 수 있다. 따라서, 타일링된 렌더링에서, 전체 스크린은 다수의 빈들 또는 타일들로 분할될 수 있다. 이어서, 장면은 각각의 빈에 대해 다수회, 예컨대, 1회 이상 렌더링될 수 있다.
[0048] 그래픽 렌더링의 양상들에서, 일부 그래픽 애플리케이션들은 단일 타깃, 즉 렌더 타깃에 1회 이상 렌더링할 수 있다. 예컨대, 그래픽 렌더링에서, 시스템 메모리 상의 프레임 버퍼는 다수회 업데이트될 수 있다. 프레임 버퍼는, GPU에 대한 디스플레이 데이터를 저장하는 것을 돕기 위해, 예컨대 비트맵 또는 저장소를 포함하는 메모리 또는 RAM(random access memory)의 일부일 수 있다. 프레임 버퍼는 또한, 데이터의 완전한 프레임을 포함하는 메모리 버퍼일 수 있다. 부가적으로, 프레임 버퍼는 로직 버퍼일 수 있다. 일부 양상들에서, 프레임 버퍼를 업데이트하는 것은 빈 또는 타일 렌더링에서 수행될 수 있으며, 여기서 위에서 논의된 바와 같이, 표면은 다수의 빈들 또는 타일들로 분할되고, 이어서 각각의 빈 또는 타일은 별개로 렌더링될 수 있다. 추가로, 타일링된 렌더링에서, 프레임 버퍼는 다수의 빈들 또는 타일들로 파티셔닝될 수 있다.
[0049] 본 명세서에서 표시된 바와 같이, 일부 양상들에서, 이를테면 빈 또는 타일링된 렌더링 아키텍처에서, 프레임 버퍼들은, 예컨대 상이한 타입들의 메모리로부터 렌더링할 때, 반복적으로 프레임 버퍼들에 저장되거나 기입된 데이터를 가질 수 있다. 이는 프레임 버퍼 또는 시스템 메모리를 리졸빙(resolve)하는 것 및 언리졸빙(unresolve)하는 것으로 지칭될 수 있다. 예컨대, 하나의 프레임 버퍼에 저장 또는 기입하고, 이어서 다른 프레임 버퍼로 스위칭할 때, 프레임 버퍼 상의 데이터 또는 정보는 GPU에서의 GMEM(GPU internal memory)으로부터 시스템 메모리, 즉 DDR(double data rate) RAM 또는 DRAM(dynamic RAM)의 메모리로 리졸빙될 수 있다.
[0050] 일부 양상들에서, 시스템 메모리는 또한, 예컨대 디바이스 또는 스마트 폰 상에 데이터 또는 정보를 저장하기 위한 SoC(system-on-chip) 메모리 또는 다른 칩-기반 메모리일 수 있다. 시스템 메모리는 또한, CPU 및/또는 GPU에 의해 공유되는 물리적 데이터 저장소일 수 있다. 일부 양상들에서, 시스템 메모리는, 예컨대 디바이스 또는 스마트 폰 상의 DRAM 칩일 수 있다. 따라서, SoC 메모리는 데이터를 저장하는 칩-기반 방식일 수 있다.
[0051] 일부 양상들에서, GMEM은 GPU에서의 온-칩 메모리일 수 있으며, 이는 SRAM(static RAM)에 의해 구현될 수 있다. 부가적으로, GMEM은 디바이스, 예컨대 스마트 폰 상에 저장될 수 있다. 본 명세서에서 표시된 바와 같이, 데이터 또는 정보는, 예컨대 디바이스에서, 시스템 메모리 또는 DRAM과 GMEM 사이에서 전달될 수 있다. 일부 양상들에서, 시스템 메모리 또는 DRAM은 CPU 또는 GPU에 있을 수 있다. 부가적으로, 데이터는 DDR 또는 DRAM에 저장될 수 있다. 일부 양상들에서, 이를테면 빈 또는 타일링된 렌더링에서, 메모리의 작은 부분이 GPU에, 예컨대 GMEM에 저장될 수 있다. 일부 예시들에서, GMEM에 데이터를 저장하는 것은 프레임 버퍼 또는 시스템 메모리에 데이터를 저장하는 것과 비교하여 더 큰 프로세싱 작업로드 및/또는 소비 전력을 이용할 수 있다.
[0052] 그래픽 프로세싱의 일부 양상들에서, 압축이 GPU들의 특정한 컴퓨트 작업로드들에 대해 인에이블링될 수 있다. 그러나, 성능 저하 없이 모든 컴퓨트 작업로드들에 대한 압축을 인에이블링시키는 것은 GPU 아키텍처에 대한 난제일 수 있다. 예컨대, 압축이 컴퓨트 작업로드들에 대해 인에이블링될 때, 레벨 2(L2) 캐시의 긴 캐시라인들의 부분적인 축출 및/또는 불량한 요청 합병 비율이 존재할 수 있다.
[0053] 일부 예시들에서, 압축이 GPU 리소스들에 대해 인에이블링될 때, 내부 L2 캐시라인들은 긴 캐시라인들로 구성될 수 있다. 그러한 긴 캐시라인들은, 그것이 완전히 기입되는 것이 아니라 시스템 메모리로 축출되어야 할 때, 성능 패널티들을 겪을 수 있다. 예컨대, L2 캐시는 시스템 메모리로부터 오리지널 콘텐츠를 페칭하고, 그것을 압축하며, 이어서 그것을 다시 시스템 메모리에 기입할 필요가 있을 수 있다. 이러한 긴 직렬화된 프로세스는 벤치마크들에 대한 성능 저하를 야기할 수 있다. 그러한 부분적으로 기입된 캐시라인들에 대한 이유는 일부 애플리케이션이 L2 긴 캐시라인의 형상과 정렬되지 않는 작업그룹 형상을 사용하기 때문일 수 있다. 그러므로, GPU가 작업그룹들을 선형으로 래스터화할 때, GPU는 충분한 양의 시간 내에 긴 캐시라인을 채우지 못할 수 있다. 일부 경우들에서, 애플리케이션이 특정한 작업그룹 사이즈, 예컨대 32x1 작업그룹 사이즈를 사용하는 반면, GPU의 긴 캐시라인이 8x4일 때, 이상적으로는 4개의 작업그룹들이 수직으로 래스터화되어 32x4 영역을 커버할 수 있고, 이어서, 래스터화가 수평으로 수행될 수 있다. 이들 경우들에서, 32x4 영역은 8x4 영역으로 정렬될 수 있으며, 긴 캐시라인을 신속하게 채울 수 있다.
[0054] 도 4는 캐시 저장 프로세스의 다이어그램(400)을 예시한다. 도 4에 도시된 바와 같이, 타일링된 압축이 이미지 리소스들에 대해 인에이블링될 때, GPU의 L2 캐시라인들은 도 4의 8x4 타일들과 같은 직사각형 영역을 커버할 수 있는 긴 캐시라인들로서 구성될 수 있다. 그러나, 컴퓨트 셰이더를 사용하는 애플리케이션이 이들 8x4 타일들과 정렬되지 않은 작업그룹 모양을 사용하도록 선택하면, 캐시라인이 축출되기 전에 긴 캐시라인이 완전히 기입되지 않을 수 있다.
[0055] 도 4에 도시된 바와 같이, 작업그룹 형상은, 예컨대 박스 윤곽들로 도시된 바와 같이 11x11 픽셀들일 수 있다. 제1 작업그룹은 캐시라인들 1 및 3을 완전히 커버하고, 캐시라인들 2, 4, 5, 및 6을 부분적으로 커버할 수 있다. 제2 작업그룹은 캐시라인들 2 및 4의 나머지 픽셀들을 채울 수 있지만, 캐시라인들 5 및 6은 완전히 커버되지 않을 수 있다. 일부 작업그룹 래스터화들은, 예컨대 1920x1080 해상도 컴퓨트 작업로드의 경우 선형일 수 있으며, 제176(1920/11) 작업그룹은 캐시라인 5를 커버할 수 있지만, 그것은 충분하지 않을 수 있다. L2 캐시의 제한된 사이즈로 인해, 캐시라인 5는 시스템 메모리로 축출될 수 있다. L2 캐시가 먼저 DDR로부터 오리지널 콘텐츠를 판독하고, 이어서, 압축을 수행하며, 이어서, 압축된 데이터를 DDR에 기입할 필요가 있을 수 있으므로, 부분적으로 채워진 캐시라인들의 그러한 축출은 느릴 수 있다.
[0056] 일부 경우들에서, 부분적으로 채워진 캐시라인 축출은 큰 성능 저하를 초래할 수 있다. 예컨대, 일부 벤치마크들은 32x1 작업그룹 사이즈를 사용할 수 있으며, 타일링된 압축이 이미지들에 대해 인에이블링되면, 특정한 성능 저하, 예컨대 60% 성능 저하가 존재할 수 있다. 그러한 큰 저하는 드라이버들이 컴퓨트 셰이더에 의해 사용되는 리소스들에 대한 UBWC(universal bandwidth compression) 압축을 인에이블링시키는 것을 방지할 수 있다. 그러한 압축은, 작업그룹 형상이 긴 캐시라인의 타일 사이즈와 정렬될 때, 통상적인 경우들에서 성능 및 전력에 도움을 줄 수 있다.
[0057] 도 5는 래스터화 프로세스의 다이어그램(500)을 예시한다. 도 5에서 표시된 바와 같이, 압축된 이미지 리소스들에 액세스하기 위한 다른 문제는 불량한 L2 캐시 요청 합병이다. 도 5에 도시된 바와 같이, 압축된 이미지에 대해, 픽셀 좌표로부터 이미지 어드레스 오프셋으로의 맵핑은 지그재그(zigzag) 또는 스위즐링(swizzling) 순서로 이루어질 수 있어서, 그러한 스위즐링 패턴에 대한 가장 작은 입도는 4x4이다. 그러한 스위즐링 패턴은 픽셀들의 행(row)에 대해, 오프셋들이 연속하지 않는다는 것을 의미할 수 있다. 작업 항목들이 작업그룹에서 선형 순서로 래스터화되면, 인접한 섬유(fiber)들이 인접하지 않은 오프셋들로 픽셀들에 액세스할 수 있으며, 이는 불량한 합병을 유발할 수 있다. 도 5에서, 각각의 섬유는 64-비트들의 데이터를 페칭하고, 인접한 4개의 섬유들은 2개의 256-비트 요청들을 L2 캐시에 전송하고 있을 수 있고, 각각의 요청은 128-비트들의 콘텐츠를 가질 수 있으며, 이는 L2 입력 대역폭을 낭비한다.
[0058] 위에 표시된 바와 같이, 컴퓨트 작업로드에서 압축을 인에이블링시키기 위한 하나의 문제는 셰이더 프로세서(SP)로부터 L2 캐시로의 요청들의 합병이다. 일부 압축 알고리즘들은 선형 레이아웃 대신 타일 레이아웃을 갖도록 리소스들을 특정할 수 있지만, 타일 리소스들에 적용되는 특정한 패턴들, 예컨대 스위즐링 패턴은 컴퓨트 작업그룹 내의 인접한 작업 항목들이 연속하는 어드레스들을 L2 캐시에 전송하는 것을 방지할 수 있다. 이들 비-연속 어드레스들은 SP 엔진에 의해 완전히 합병되지 않을 수 있으며, SP-L2 캐시 대역폭을 낭비하고, 동일한 어드레스 액세스들에 의해 야기되는 과도한 수의 요청들 및 뱅크 충돌들에 의해 L2 캐시를 느리게 할 수 있다. 컴퓨트 작업로드에서 선형 리소스 레이아웃이 압축된(타일링된) 리소스 레이아웃으로 스위칭되는 이러한 합병 문제에 의해 야기되는 성능 저하가 존재할 수 있다. 위의 내용에 기반하여, 부분 축출을 감소시키거나 완화시키는 컴퓨트 작업로드들을 이용하는 것이 유익할 수 있다.
[0059] 본 개시내용의 양상들은 부분적인 축출을 감소 또는 완화시키는 컴퓨트 작업로드들을 이용할 수 있다. 예컨대, 본 개시내용의 양상들은 부분적인 축출을 감소시키기 위해, 타일링된 작업그룹 래스터화를 이용할 수 있다. 이러한 타일링된 작업그룹 래스터화 프로세스가 본 명세서에 설명된다.
[0060] 도 6은 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 다이어그램(600)을 예시한다. 도 6에 도시된 바와 같이, 작업그룹들을 선형으로 래스터화(밝은 회색 화살표)하는 대신에, 본 개시내용의 양상들은 8x4 작업그룹들의 타일 내에서 작업그룹들을 래스터화하는 HLSQ를 이용할 수 있다(더 큰 직사각형 내부의 더 어두운 회색 화살표). 이어서, 본 개시내용은 이들 8x4-사이즈의 타일들(밝은 회색 직사각형들)을 선형으로 디스패칭할 수 있다.
[0061] 본 개시내용의 양상들은 타일링된 작업그룹 래스터화를 위한 스네이크 워킹(snake walking) 순서를 제안하며, 이는 L2 캐시라인의 부분적인 축출 문제를 해결한다. 예컨대, 본 개시내용의 양상들은 스네이크 패턴 또는 스네이크 워킹 래스터화 순서를 이용할 수 있다. 스네이크 워킹 래스터화 순서를 이용하여, 본 개시내용은 시간상 8x4 직사각형들을 채우고, 부분적인 축출을 회피할 수 있다. 본 개시내용의 양상들은 또한 타일링된 작업 항목 래스터화 순서를 제안하며, 이는 셰이더 웨이브의 인접한 섬유들이 연속하는 어드레스들에 액세스하고 있을 수 있다는 것을 보장하고, 이어서, 셰이더 엔진에서 합병 엔진을 완전히 이용하고, L2 캐시를 완전히 이용할 수 있다.
[0062] 도 7은 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 다이어그램(700)을 예시한다. 도 7에 도시된 바와 같이, 본 개시내용의 양상들은 작업그룹들의 타일 내부에서의 스네이크 워킹 래스터화를 제안한다. 도 7의 각각의 도트(dot)는 작업그룹이다. 스네이크 워킹 프로세스는 공간적 지역성(locality)에서 더 양호하고, 더 부분적으로 기입된 긴 캐시라인들을 감소시킬 수 있다.
[0063] 도 8은 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 다이어그램(800)을 예시한다. 도 8은 본 개시내용의 작업그룹들의 타일 내부에서의 스네이크 워킹 래스터화의 다른 양상을 도시한다. 본 명세서에서 제안되는 스네이크 워킹 알고리즘은 8x4 작업그룹들 내부에서 열 주요(column major) 또는 행 주요 순서를 허용한다. 본 개시내용은 또한 열 주요 또는 행 주요 순서로의 8x4 작업그룹 타일들의 래스터화를 허용한다. 그리고 본 개시내용은 단지 8x4 사이즈 대신에 임의의 형상들의 작업그룹 타일들을 허용한다. 드라이버들은 또한 어떤 형상이 액세스 패턴들에 더 적합한지를 선택할 수 있다.
[0064] 일부 양상들에서, 본 개시내용은 특정한 방향들을 먼저, 예컨대 z 방향을 먼저 래스터화하는 것을 지원한다. 예컨대, 글로벌 크기 (2, 2, 2), 로컬 (1, 1, 1)의 경우, z 방향이 먼저 래스터화되면, 출력 좌표들은 (0, 0, 0), (0, 0, 1), (1, 0, 0), (1, 0, 1), (0, 1, 0), (0, 1, 1), (1, 1, 0), (1, 1, 1)일 수 있다. 특정한 글로벌 ID들, 예컨대 global_id.z가 텍스처의 x 좌표의 오프셋으로서 이용될 때, 이러한 래스터화 순서는 압축이 인에이블링될 때 더 일찍 긴 캐시라인들을 완전히 채울 수 있다.
[0065] 도 9는 본 개시내용의 하나 이상의 기법들에 따른 래스터화 프로세스의 다이어그램(900)을 예시한다. 도 9에 도시된 바와 같이, 위에서 언급한 합병 문제를 해결하기 위해, 본 개시내용은 타일링된 작업 항목 래스터화를 제안한다. 도 9에 도시된 바와 같이, 타일링된 작업 항목 래스터화들은 4x4 지그재그 패턴을 포함할 수 있다. 작업 항목들을 선형으로 래스터화하는 대신, 셰이더 프로세서들은 4x4 작업 항목들의 타일 내에서 작업 항목들을 래스터화하고, 이어서, 이들 4x4-사이즈 타일들을 선형으로 디스패칭할 수 있다. 4x4 지그재그 패턴은 또한 특정한 타입들의 합병, 예컨대 8-섬유 또는 16-섬유 합병에 친화적이다. 일부 양상들에서, 드라이버는 타일링된 작업그룹 또는 타일링된 작업 항목 래스터화가 언제 인에이블링되는지에 대해 동적 의사 결정을 행할 필요가 있을 수 있다. 컴퓨트 셰이더에 결부된 임의의 리소스가 압축되면, 본 개시내용은 긴 L2 캐시라인들의 부분적인 축출을 감소시키고 더 양호한 L2 요청 합병을 달성하기 위해 리소스를 인에이블링시킬 수 있다.
[0066] 일부 예시들에서, 본 개시내용의 양상들은 실험 설계들을 이용하여 벤치마크들에 대해 성능 향상, 예컨대 4.1%의 성능 향상을 초래할 수 있다. 본 개시내용의 양상들은 또한, 특정 애플리케이션들이 더 빠르게 실행되게 할 수 있다. 본 개시내용의 양상들의 특징들은 다른 핵심 벤치마크들에 대한 어떠한 성능 저하도 갖지 않을 수 있다.
[0067] 이들 전술된 아키텍처 해결책을 적용함으로써, GPU 드라이버들은 컴퓨트 작업로드들에 대한 압축을 인에이블링시킬 수 있다. 예컨대, 타일링된 작업그룹 및 작업 항목 래스터화를 사용한 이후 벤치마크들에 대해 어떠한 성능 저하도 존재하지 않을 수 있어서, 드라이버들은 컴퓨트 작업로드들의 모든 리소스들에 대해 UBWC 압축을 인에이블링시킬 수 있다. 컴퓨트 작업로드들에서 압축을 인에이블링시킴으로써, 본 개시내용의 양상들은 특정한 성능 향상, 예컨대 특정한 구현들에 대해 12.4%의 성능 향상 더하기 30%의 DDR 트래픽 감소를 초래할 수 있다. 본 개시내용은 또한 일부 구현들에 대해 53.4%의 성능 향상 더하기 42%의 DDR 트래픽 감소, 및 다른 구현들에 대해 5.4%의 성능 향상 더하기 25%의 DDR 트래픽 감소를 달성할 수 있다. DDR 트래픽의 감소는 전력 소비를 크게 감소시킬 수 있다. 또한, 특정한 벤치마크들에 대해, 타일링된 작업 항목 래스터화를 인에이블링시킴으로써, 셰이더 엔진들로부터 L2 캐시로의 특정한 양의 요청들, 예컨대 요청들의 32%가 감소될 수 있다.
[0068] 도 10은 본 개시내용의 하나 이상의 기법들에 따른 예시적인 방법의 흐름도(1000)를 예시한다. 방법은 GPU, GPU 드라이버, CPU, 또는 그래픽 프로세싱을 위한 장치와 같은 장치에 의해 수행될 수 있다.
[0069] 1002에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신할 수 있으며, 하나 이상의 작업그룹들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 하나 이상의 픽셀 타일들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함한다. 일부 양상들에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 하나 이상의 픽셀 타일들은 복수의 픽셀들의 압축 입도에 기초하여 결정될 수 있다.
[0070] 1004에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정할 수 있다.
[0071] 1006에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬될 때 하나 이상의 작업그룹들의 변환 순서를 결정할 수 있으며, 변환 순서는 하나 이상의 작업그룹들 중 하나의 작업그룹과 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응한다. 일부 양상들에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 변환 순서는 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들의 스네이크 패턴에 대응할 수 있다. 부가적으로, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 변환 순서는 래스터화 알고리즘에 의해 결정될 수 있으며, 변환 순서는 래스터화 순서에 대응한다.
[0072] 1008에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 하나 이상의 작업그룹들의 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환할 수 있다. 일부 예시들에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환하는 것은 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 래스터화하는 것을 포함할 수 있다. 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 하나 이상의 작업그룹들 각각 내의 하나 이상의 픽셀들 각각은 작업그룹 변환 순서에 기반하여 변환될 수 있다. 또한, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 작업그룹 변환 순서는 하나 이상의 작업그룹들 각각 내의 하나 이상의 픽셀들의 지그재그 패턴에 대응할 수 있다.
[0073] 1010에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 하나 이상의 작업그룹들 각각의 하나 이상의 작업 항목들에 대해 적어도 하나의 컴퓨팅 프로그램을 실행할 수 있으며, 하나 이상의 작업 항목들 각각은 하나 이상의 픽셀들을 포함하고, 여기서 적어도 하나의 컴퓨팅 프로그램은 변환 순서에 기반하여 실행된다. 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 적어도 하나의 컴퓨팅 프로그램은 GPU(graphics processing unit)의 셰이더 프로세서에 의해 실행될 수 있다.
[0074] 1012에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 하나 이상의 작업그룹들 각각의 작업 항목들 각각을 캐시에 저장할 수 있다. 일부 예시들에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 캐시는 레벨 2(L2) 캐시일 수 있다.
[0075] 1014에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 캐시가 저장 임계치에 도달할 때 캐시로부터 적어도 하나의 픽셀 타일을 제거할 수 있다.
[0076] 1016에서, 도 4 내지 도 9의 예들과 관련하여 설명된 바와 같이, 장치는 제거된 적어도 하나의 픽셀 타일을 시스템 메모리에 저장할 수 있다.
[0077] 일 구성에서, 그래픽 프로세싱을 위한 방법 또는 장치가 제공된다. 장치는 GPU, GPU 드라이버, CPU, 또는 그래픽 프로세싱을 수행할 수 있는 일부 다른 프로세서일 수 있다. 일 양상에서, 장치는 디바이스(104) 내의 프로세싱 유닛(120)일 수 있거나, 또는 디바이스(104) 또는 다른 디바이스 내의 일부 다른 하드웨어일 수 있다. 장치는 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신하기 위한 수단을 포함할 수 있으며, 하나 이상의 작업그룹들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 하나 이상의 픽셀 타일들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함한다. 장치는 또한, 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정하기 위한 수단을 포함할 수 있다. 장치는 또한, 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬될 때 하나 이상의 작업그룹들의 변환 순서를 결정하기 위한 수단을 포함할 수 있으며, 변환 순서는 하나 이상의 작업그룹들 중 하나의 작업그룹과 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응한다. 장치는 또한, 하나 이상의 작업그룹들의 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환하기 위한 수단을 포함할 수 있다. 장치는 또한, 하나 이상의 작업그룹들 각각의 하나 이상의 작업 항목들에 대해 적어도 하나의 컴퓨팅 프로그램을 실행하기 위한 수단을 포함할 수 있으며, 하나 이상의 작업 항목들 각각은 하나 이상의 픽셀들을 포함하고, 여기서 적어도 하나의 컴퓨팅 프로그램은 변환 순서에 기반하여 실행된다. 장치는 또한, 하나 이상의 작업그룹들 각각의 작업 항목들 각각을 캐시에 저장하기 위한 수단을 포함할 수 있다. 장치는 또한, 캐시가 저장 임계치에 도달할 때 캐시로부터 적어도 하나의 픽셀 타일을 제거하기 위한 수단을 포함할 수 있다. 장치는 또한, 제거된 적어도 하나의 픽셀 타일을 시스템 메모리에 저장하기 위한 수단을 포함할 수 있다.
[0078] 본 명세서에 설명된 청구 대상은 하나 이상의 이점들 또는 장점들을 실현하기 위해 구현될 수 있다. 예컨대, 설명된 그래픽 프로세싱 기법들은 GPU, GPU 드라이버, CPU, 또는 본 명세서에 설명된 래스터화 기법들을 구현하기 위해 그래픽 프로세싱을 수행할 수 있는 일부 다른 프로세서에 의해 사용될 수 있다. 이것은 또한 다른 그래픽 프로세싱 기법들과 비교하여 낮은 비용으로 달성될 수 있다. 게다가, 본 명세서의 그래픽 프로세싱 기법들은 데이터 프로세싱 또는 실행을 개선시키거나 가속화할 수 있다. 추가로, 본 명세서의 그래픽 프로세싱 기법들은 리소스 또는 데이터 이용 및/또는 리소스 효율을 개선시킬 수 있다. 부가적으로, 본 개시내용의 양상들은 캐시 조건들을 개선시키고 그리고/또는 성능 오버헤드를 감소시키기 위해 래스터화 기법들을 이용할 수 있다.
[0079] 본 개시내용에 따르면, 용어 "또는"은 문맥상 달리 지시하지 않는 경우 "및/또는"으로 해석될 수 있다. 부가적으로, "하나 이상" 또는 "적어도 하나" 등과 같은 문구들이 본 명세서에 개시된 다른 특징들이 아니라 일부 특징들에 대해 사용되었을 수 있지만, 그러한 언어가 사용되지 않았던 특징들은 문맥상 달리 지시하지 않는 경우 그러한 의미가 암시되는 것으로 해석될 수 있다.
[0080] 하나 이상의 예들에서, 본 명세서에 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 예컨대, 용어 "프로세싱 유닛"이 본 개시내용 전반에 걸쳐 사용되었지만, 그러한 프로세싱 유닛들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 본 명세서에 설명된 임의의 기능, 프로세싱 유닛, 기법, 또는 다른 모듈이 소프트웨어로 구현되면, 본 명세서에 설명된 기능, 프로세싱 유닛, 기법, 또는 기타 모듈은 컴퓨터-판독가능 매체 상의 하나 이상의 명령들 또는 코드로서 저장되거나 송신될 수 있다. 컴퓨터 판독가능 매체들은, 일 장소에서 다른 장소로의 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체들을 포함한 통신 매체들 또는 컴퓨터 데이터 저장 매체들을 포함할 수도 있다. 이러한 방식으로, 컴퓨터-판독가능 매체들은 일반적으로 (1) 비일시적인 유형의 컴퓨터-판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체들은, 본 발명에 설명된 기법들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 리트리브(retrieve)하기 위하여 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 이용가능한 매체들일 수 있다. 제한이 아닌 예로서, 그러한 컴퓨터-판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들을 포함할 수 있다. 본 명세서에서 사용된 디스크(disk) 및 디스크(disc)는 CD(compact disc), 레이저 디스크(disc), 광학 디스크(disc), DVD(digital versatile disc), 플로피 디스크(disk) 및 블루-레이 디스크(disc)를 포함하며, 여기서 디스크(disk)들은 일반적으로 데이터를 자기적으로 재생하지만, 디스크(disc)들은 레이저를 이용하여 광학적으로 데이터를 재생한다. 위의 조합들이 또한 컴퓨터-판독가능 매체들의 범위 내에 포함되어야 한다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수 있다.
[0081] 코드는, 하나 이상의 DSP(digital signal processor)들, 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, ALU(arithmetic logic unit)들, FPGA(field programmable logic array)들, 또는 다른 동등한 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용된 바와 같이, 용어 "프로세서"는, 본 명세서에 설명된 기법들의 구현에 적합한 전술한 구조 또는 임의의 다른 구조 중 임의의 구조를 지칭할 수도 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 엘리먼트로 완전히 구현될 수 있다.
[0082] 본 개시내용의 기법들은, 무선 핸드셋, IC(integrated circuit) 또는 IC들의 세트, 예컨대 칩셋을 포함하는 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수 있다. 다양한 엘리먼트들, 모듈들 또는 유닛들은, 개시된 기법들을 수행하도록 구성된 디바이스들의 기능 양상들을 강조하기 위해 본 개시내용에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은, 임의의 하드웨어 유닛으로 결합될 수 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는 상호동작하는 하드웨어 유닛들의 집합에 의해 제공될 수 있다.
[0083] 다양한 예들이 설명된다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 존재한다.
[0084] 다음의 양상들은 예시일 뿐이며, 제한 없이 본 명세서에 설명된 다른 양상들 또는 교시들과 조합될 수 있다.
[0085] 양상 1은 그래픽 프로세싱 방법이다. 방법은, 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신하는 단계 - 하나 이상의 작업그룹들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 하나 이상의 픽셀 타일들 각각은 복수의 픽셀들 중 하나 이상의 픽셀들을 포함함 -; 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정하는 단계; 하나 이상의 작업그룹들이 하나 이상의 픽셀 타일들과 오정렬될 때 하나 이상의 작업그룹들의 변환 순서를 결정하는 단계 - 변환 순서는 하나 이상의 작업그룹들 중 하나의 작업그룹과 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응함 -; 및 하나 이상의 작업그룹들의 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환하는 단계를 포함한다.
[0086] 양상 2는 양상 1의 방법이며, 여기서 변환 순서는 하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들의 스네이크 패턴에 대응한다.
[0087] 양상 3은 양상 1 및 양상 2의 방법이며, 여기서 하나 이상의 작업그룹들 각각 내의 하나 이상의 픽셀들 각각은 작업그룹 변환 순서에 기반하여 변환된다.
[0088] 양상 4는 양상 1 내지 양상 3 중 어느 하나의 양상의 방법이며, 여기서 작업그룹 변환 순서는 하나 이상의 작업그룹들 각각 내의 하나 이상의 픽셀들의 지그재그 패턴에 대응한다.
[0089] 양상 5는 양상 1 내지 양상 4 중 어느 하나의 양상의 방법이며, 하나 이상의 작업그룹들 각각의 하나 이상의 작업 항목들에 대해 적어도 하나의 컴퓨팅 프로그램을 실행하는 단계를 더 포함하고, 하나 이상의 작업 항목들 각각은 하나 이상의 픽셀들을 포함하고, 적어도 하나의 컴퓨팅 프로그램은 변환 순서에 기반하여 실행된다.
[0090] 양상 6은 양상 1 내지 양상 5 중 어느 하나의 양상의 방법이며, 여기서 적어도 하나의 컴퓨팅 프로그램은 GPU(graphics processing unit)의 셰이더 프로세서에 의해 실행된다.
[0091] 양상 7은 양상 1 내지 양상 6 중 어느 하나의 양상의 방법이며, 하나 이상의 작업그룹들 각각의 작업 항목들 각각을 캐시에 저장하는 단계를 더 포함한다.
[0092] 양상 8은 양상 1 내지 양상 7 중 어느 하나의 양상의 방법이며, 캐시가 저장 임계치에 도달할 때 캐시로부터 적어도 하나의 픽셀 타일을 제거하는 단계; 및 제거된 적어도 하나의 픽셀 타일을 시스템 메모리에 저장하는 단계를 더 포함한다.
[0093] 양상 9는 양상 1 내지 양상 8 중 어느 하나의 양상의 방법이며, 여기서 캐시는 레벨 2(L2) 캐시이다.
[0094] 양상 10은 양상 1 내지 양상 9 중 어느 하나의 양상의 방법이며, 여기서 하나 이상의 픽셀 타일들은 복수의 픽셀들의 압축 입도에 기반하여 결정된다.
[0095] 양상 11은 양상 1 내지 양상 10 중 어느 하나의 양상의 방법이며, 여기서 변환 순서는 래스터화 알고리즘에 의해 결정되고, 변환 순서는 래스터화 순서에 대응한다.
[0096] 양상 12는 양상 1 내지 양상 11 중 어느 하나의 양상의 방법이며, 여기서 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 변환하는 단계는 변환 순서에 기반하여 하나 이상의 작업그룹들 각각을 래스터화하는 단계를 포함한다.
[0097] 양상 13은, 양상 1 내지 양상 12 중 어느 하나의 양상에서와 같은 방법을 구현하기 위한 수단을 포함하는, 그래픽 프로세싱을 위한 장치이다.
[0098] 양상 14는, 메모리에 커플링된 적어도 하나의 프로세서를 포함하는, 그래픽 프로세싱을 위한 장치이며, 적어도 하나의 프로세서는 양상 1 내지 양상 12 중 어느 하나의 양상에서와 같은 방법을 구현하도록 구성된다.
[0099] 양상 15는 컴퓨터 실행가능 코드를 저장하는 컴퓨터-판독가능 매체이며, 여기서 코드는, 프로세서에 의해 실행될 때, 프로세서로 하여금 양상 1 내지 양상 12 중 어느 하나의 양상에서와 같은 방법을 구현하게 한다.

Claims (18)

  1. 그래픽 프로세싱 방법으로서,
    하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신하는 단계 - 상기 하나 이상의 작업그룹들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 상기 하나 이상의 픽셀 타일들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함함 -;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정하는 단계;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬될 때 상기 하나 이상의 작업그룹들의 변환 순서를 결정하는 단계 - 상기 변환 순서는 상기 하나 이상의 작업그룹들 중 하나의 작업그룹과 상기 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응함 -; 및
    상기 하나 이상의 작업그룹들의 변환 순서에 기반하여 상기 하나 이상의 작업그룹들 각각을 변환하는 단계를 포함하는, 그래픽 프로세싱 방법.
  2. 제1항에 있어서,
    상기 변환 순서는 상기 하나 이상의 작업그룹들 및 상기 하나 이상의 픽셀 타일들의 스네이크 패턴(snake pattern)에 대응하는, 그래픽 프로세싱 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 작업그룹들 각각 내의 상기 하나 이상의 픽셀들 각각은 작업그룹 변환 순서에 기반하여 변환되는, 그래픽 프로세싱 방법.
  4. 제3항에 있어서,
    상기 작업그룹 변환 순서는 상기 하나 이상의 작업그룹들 각각 내의 상기 하나 이상의 픽셀들의 지그재그 패턴에 대응하는, 그래픽 프로세싱 방법.
  5. 제1항에 있어서,
    상기 하나 이상의 작업그룹들 각각의 하나 이상의 작업 항목들에 대해 적어도 하나의 컴퓨팅 프로그램을 실행하는 단계를 더 포함하며,
    상기 하나 이상의 작업 항목들 각각은 하나 이상의 픽셀들을 포함하고, 상기 적어도 하나의 컴퓨팅 프로그램은 상기 변환 순서에 기반하여 실행되는, 그래픽 프로세싱 방법.
  6. 제5항에 있어서,
    상기 적어도 하나의 컴퓨팅 프로그램은 GPU(graphics processing unit)의 셰이더(shader) 프로세서에 의해 실행되는, 그래픽 프로세싱 방법.
  7. 제5항에 있어서,
    상기 하나 이상의 작업그룹들 각각의 상기 작업 항목들 각각을 캐시에 저장하는 단계를 더 포함하는, 그래픽 프로세싱 방법.
  8. 제7항에 있어서,
    상기 캐시가 저장 임계치에 도달할 때 상기 캐시로부터 적어도 하나의 픽셀 타일을 제거하는 단계; 및
    상기 제거된 적어도 하나의 픽셀 타일을 시스템 메모리에 저장하는 단계를 더 포함하는, 그래픽 프로세싱 방법.
  9. 제7항에 있어서,
    상기 캐시는 레벨 2(L2) 캐시인, 그래픽 프로세싱 방법.
  10. 제1항에 있어서,
    상기 하나 이상의 픽셀 타일들은 상기 복수의 픽셀들의 압축 입도에 기반하여 결정되는, 그래픽 프로세싱 방법.
  11. 제1항에 있어서,
    상기 변환 순서는 래스터화 알고리즘에 의해 결정되고, 상기 변환 순서는 래스터화 순서에 대응하는, 그래픽 프로세싱 방법.
  12. 제1항에 있어서,
    상기 변환 순서에 기반하여 상기 하나 이상의 작업그룹들 각각을 변환하는 단계는 상기 변환 순서에 기반하여 상기 하나 이상의 작업그룹들 각각을 래스터화하는 단계를 포함하는, 그래픽 프로세싱 방법.
  13. 그래픽 프로세싱을 위한 장치로서,
    메모리; 및
    상기 메모리에 커플링된 적어도 하나의 프로세서를 포함하며,
    상기 적어도 하나의 프로세서는,
    하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신하고 - 상기 하나 이상의 작업그룹들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 상기 하나 이상의 픽셀 타일들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함함 -;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정하고;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬될 때 상기 하나 이상의 작업그룹들의 변환 순서를 결정하고 - 상기 변환 순서는 상기 하나 이상의 작업그룹들 중 하나의 작업그룹과 상기 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응함 -; 그리고
    상기 하나 이상의 작업그룹들의 변환 순서에 기반하여 상기 하나 이상의 작업그룹들 각각을 변환하도록
    구성되는, 그래픽 프로세싱을 위한 장치.
  14. 제13항에 있어서,
    상기 적어도 하나의 프로세서는, 제2항 내지 제12항 중 어느 한 항의 방법을 수행하도록 구성되는, 그래픽 프로세싱을 위한 장치.
  15. 그래픽 프로세싱을 위한 장치로서,
    하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신하기 위한 수단 - 상기 하나 이상의 작업그룹들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 상기 하나 이상의 픽셀 타일들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함함 -;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정하기 위한 수단;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬될 때 상기 하나 이상의 작업그룹들의 변환 순서를 결정하기 위한 수단 - 상기 변환 순서는 상기 하나 이상의 작업그룹들 중 하나의 작업그룹과 상기 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응함 -; 및
    상기 하나 이상의 작업그룹들의 변환 순서에 기반하여 상기 하나 이상의 작업그룹들 각각을 변환하기 위한 수단을 포함하는, 그래픽 프로세싱을 위한 장치.
  16. 제15항에 있어서,
    제2항 내지 제12항 중 어느 한 항의 방법을 수행하기 위한 수단을 더 포함하는, 그래픽 프로세싱을 위한 장치.
  17. 그래픽 프로세싱을 위한 컴퓨터 실행가능 코드를 저장하는 컴퓨터-판독가능 저장 매체로서,
    상기 코드는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    하나 이상의 작업그룹들 및 하나 이상의 픽셀 타일들과 연관된 복수의 픽셀들을 포함하는 이미지를 수신하게 하고 - 상기 하나 이상의 작업그룹들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함하고, 상기 하나 이상의 픽셀 타일들 각각은 상기 복수의 픽셀들 중 하나 이상의 픽셀들을 포함함 -;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬되는지 여부를 결정하게 하고;
    상기 하나 이상의 작업그룹들이 상기 하나 이상의 픽셀 타일들과 오정렬될 때 상기 하나 이상의 작업그룹들의 변환 순서를 결정하게 하고 - 상기 변환 순서는 상기 하나 이상의 작업그룹들 중 하나의 작업그룹과 상기 하나 이상의 픽셀 타일들 중 하나의 픽셀 타일의 공배수에 대응함 -; 그리고
    상기 하나 이상의 작업그룹들의 변환 순서에 기반하여 상기 하나 이상의 작업그룹들 각각을 변환하게 하는, 컴퓨터-판독가능 저장 매체.
  18. 제17항에 있어서,
    상기 코드는, 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 제2항 내지 제12항 중 어느 한 항의 방법을 수행하게 하는, 컴퓨터-판독가능 저장 매체.
KR1020237014697A 2020-11-09 2020-11-09 컴퓨트 작업로드들의 래스터화를 위한 방법들 및 장치 KR20230107554A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/127436 WO2022095010A1 (en) 2020-11-09 2020-11-09 Methods and apparatus for rasterization of compute workloads

Publications (1)

Publication Number Publication Date
KR20230107554A true KR20230107554A (ko) 2023-07-17

Family

ID=81456873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237014697A KR20230107554A (ko) 2020-11-09 2020-11-09 컴퓨트 작업로드들의 래스터화를 위한 방법들 및 장치

Country Status (7)

Country Link
US (1) US20230394738A1 (ko)
EP (1) EP4241230A1 (ko)
JP (1) JP2023547433A (ko)
KR (1) KR20230107554A (ko)
CN (1) CN116762091A (ko)
TW (1) TW202236205A (ko)
WO (1) WO2022095010A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115063509B (zh) * 2022-08-18 2022-11-22 深圳中微电科技有限公司 一种基于daa直线表示的光栅化方法、装置及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140092087A1 (en) * 2012-09-28 2014-04-03 Takayuki Kazama Adaptive load balancing in software emulation of gpu hardware
CN104572755B (zh) * 2013-10-24 2018-01-30 高德软件有限公司 一种建立数据索引的方法、数据查询方法及相关装置
US9569883B2 (en) * 2013-12-12 2017-02-14 Intel Corporation Decoupled shading pipeline
CN103984720B (zh) * 2014-05-13 2018-01-26 Tcl集团股份有限公司 基于OpenGL的瓦片地图创建方法及装置
CN106683036A (zh) * 2016-12-12 2017-05-17 中国航空工业集团公司西安航空计算技术研究所 一种面向gpu高效绘制的帧缓冲区存储编码方法

Also Published As

Publication number Publication date
CN116762091A (zh) 2023-09-15
WO2022095010A1 (en) 2022-05-12
US20230394738A1 (en) 2023-12-07
JP2023547433A (ja) 2023-11-10
TW202236205A (zh) 2022-09-16
EP4241230A1 (en) 2023-09-13

Similar Documents

Publication Publication Date Title
CN109196550B (zh) 用于针对虚拟现实和多视图系统进行交织光栅化和像素着色的架构
US11037358B1 (en) Methods and apparatus for reducing memory bandwidth in multi-pass tessellation
US11631212B2 (en) Methods and apparatus for efficient multi-view rasterization
WO2022095010A1 (en) Methods and apparatus for rasterization of compute workloads
KR102645239B1 (ko) Gpu 캐시를 활용한 다운스케일링을 위한 simo 접근 방식으로의 gpu 커널 최적화
US11080928B2 (en) Methods and apparatus for visibility stream management
US11087431B2 (en) Methods and apparatus for reducing draw command information
US11373267B2 (en) Methods and apparatus for reducing the transfer of rendering information
KR102634506B1 (ko) Gpu 하드웨어 기반 심도 버퍼 방향 추적
US11893654B2 (en) Optimization of depth and shadow pass rendering in tile based architectures
US20220357983A1 (en) Methods and apparatus for wave slot retirement procedures
US20220172695A1 (en) Methods and apparatus for plane planning for overlay composition
WO2022081293A1 (en) Configurable apron support for expanded-binning
KR20230130157A (ko) 인트라-웨이브 텍스처 루핑
KR20230149319A (ko) 프리미티브들의 배치들의 지오메트리 프로세싱을 위한 스케일러블 프리미티브 레이트 아키텍처