KR20240042090A - 샘플 공간들과 연관된 포비티드 비닝된 렌더링 - Google Patents

샘플 공간들과 연관된 포비티드 비닝된 렌더링 Download PDF

Info

Publication number
KR20240042090A
KR20240042090A KR1020247008202A KR20247008202A KR20240042090A KR 20240042090 A KR20240042090 A KR 20240042090A KR 1020247008202 A KR1020247008202 A KR 1020247008202A KR 20247008202 A KR20247008202 A KR 20247008202A KR 20240042090 A KR20240042090 A KR 20240042090A
Authority
KR
South Korea
Prior art keywords
primitives
sample space
rendering
graphics processing
downscaled
Prior art date
Application number
KR1020247008202A
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 KR20240042090A publication Critical patent/KR20240042090A/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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting

Landscapes

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

Abstract

본 명세서에 제시된 양태들은 장치, 예를 들어 GPU 를 포함하는 그래픽스 프로세싱을 위한 방법들 및 디바이스들에 관한 것이다. 장치는 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신할 수도 있고, 장면의 일부는 업스케일링된 샘플 공간 및/또는 다운스케일링된 샘플 공간과 연관된다. 장치는 또한 복수의 프리미티브들에 대한 비닝 패스를 수행할 수도 있고, 비닝 패스는 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 또한, 장치는 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행할 수도 있다. 장치는 또한 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화할 수도 있다.

Description

샘플 공간들과 연관된 포비티드 비닝된 렌더링
관련 출원에 대한 상호-참조
본 출원은 명칭이 "FOVEATED BINNED RENDERING ASSOCIATED WITH SAMPLE SPACES" 이고 2021 년 9 월 17 일 출원된 정규 미국 특허출원 제 17/478,694 호의 이익을 주장하며, 이 출원은 그 전부가 본 명세서에 참조로 명백히 포함된다.
기술분야
본 개시는 일반적으로 프로세싱 시스템들에 관한 것으로, 특히 그래픽스 프로세싱을 위한 하나 이상의 기법들에 관한 것이다.
컴퓨팅 디바이스는 종종 시각적 콘텐츠를 렌더링 및 디스플레이하기 위해 (예를 들어, 그래픽스 프로세싱 유닛 (graphics processing unit; GPU), 중앙 프로세싱 유닛 (central processing unit; CPU), 디스플레이 프로세서 등을 활용하여) 그래픽스 및/또는 디스플레이 프로세싱을 수행한다. 이러한 컴퓨팅 디바이스는 예를 들어, 컴퓨터 워크스테이션, 모바일 폰, 예컨대 스마트폰, 임베디드 시스템, 개인용 컴퓨터, 태블릿 컴퓨터 및 비디오 게임 콘솔을 포함할 수도 있다. GPU들은 함께 동작하여 그래픽스 프로세싱 커맨드들을 실행하고 프레임을 출력하는, 하나 이상의 프로세싱 스테이지들을 포함하는 그래픽스 프로세싱 파이프라인을 실행하도록 구성된다. 중앙 프로세싱 유닛 (CPU) 은 하나 이상의 그래픽스 프로세싱 커맨드들을 GPU 에 발행함으로써 GPU 의 동작을 제어할 수도 있다. 현대의 CPU들은 통상적으로 다중 애플리케이션들을 동시에 실행할 수 있으며, 그 각각은 실행 동안 GPU 를 활용해야 할 수도 있다. 디스플레이 프로세서는 CPU 로부터 수신된 디지털 정보를 아날로그 값들로 변환하도록 구성되고, 시각적 콘텐츠를 디스플레이하기 위해 디스플레이 패널에 커맨드들을 발행할 수도 있다. 디스플레이 상에 시각적 프리젠테이션을 위한 콘텐츠를 제공하는 디바이스는 GPU 및/또는 디스플레이 프로세서를 활용할 수도 있다.
디바이스의 GPU 는 그래픽스 프로세싱 파이프라인에서 프로세스들을 수행하도록 구성될 수도 있다. 또한, 디스플레이 프로세서 또는 디스플레이 프로세싱 유닛 (display processing unit; DPU) 은 디스플레이 프로세싱의 프로세스들을 수행하도록 구성될 수도 있다. 그러나, 무선 통신 및 더 작은 핸드헬드 디바이스들의 출현으로, 개선된 그래픽스 또는 디스플레이 프로세싱에 대한 증가된 필요성을 발전시켰다.
다음은 그러한 양태들의 기본적인 이해를 제공하기 위하여 하나 이상의 양태의 간략한 개요를 제시한다. 이 개요는 모든 고려되는 양태들의 광범위한 개관은 아니고, 모든 양태들의 핵심적인 또는 중요한 엘리먼트들을 특정하지도 임의의 또는 모든 양태들의 범위를 기술하지도 않도록 의도된다. 그 유일한 목적은 이후에 제시되는 보다 상세한 설명에 대한 도입부로서 간략화된 형태로 하나 이상의 양태의 일부 개념들을 제시하는 것이다.
본 개시의 일 양태에서, 방법, 컴퓨터 판독가능 매체, 및 장치가 제공된다. 장치는 그래픽스 프로세싱 유닛 (GPU) 또는 그래픽스 프로세싱을 수행할 수도 있는 임의의 장치일 수도 있다. 장치는 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신할 수도 있으며, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관된다. 장치는 또한 그래픽스 프로세싱 유닛 (GPU) 드라이버로부터, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신할 수도 있다. 부가적으로, 장치는 복수의 프리미티브들에 대한 비닝 패스를 수행할 수도 있으며, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 장치는 또한 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행할 수도 있으며, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함한다. 장치는 또한 복수의 프리미티브들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행한 후 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행할 수도 있다. 또한, 장치는 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화할 수도 있다. 장치는 또한 복수의 프리미티브들의 각각의 래스터화에 기초하여 복수의 프리미티브들의 각각을 렌더링할 수도 있다. 장치는 또한 복수의 프리미티브들의 각각을 렌더링한 후 렌더링된 복수의 프리미티브들을 송신할 수도 있다.
본 개시의 하나 이상의 예들의 상세들은 첨부 도면들 및 하기의 설명에서 기술된다. 다른 특징들, 목적들 및 이점들은 설명 및 도면들, 및 청구항들로부터 명확해질 것이다.
도 1 은 본 개시의 하나 이상의 기법에 따른 예시의 콘텐츠 생성 시스템을 도시하는 블록 다이어그램이다.
도 2 는 본 개시의 하나 이상의 기법에 따른 예시의 GPU 를 도시한다.
도 3 은 본 개시의 하나 이상의 기법들에 따른 예시의 이미지 또는 표면을 도시한다.
도 4 는 예시의 래스터화 프로세스를 도시하는 다이어그램이다.
도 5 는 예시의 빈 포비에이션(foveation) 프로세스를 도시하는 다이어그램이다.
도 6a 는 예시의 빈 포비에이션 프로세스를 도시하는 다이어그램이다.
도 6b 는 예시의 빈 포비에이션 프로세스를 도시하는 다이어그램이다.
도 7 은 예시의 렌더링 패스를 도시하는 다이어그램이다.
도 8 은 예시의 렌더링 패스를 도시하는 다이어그램이다.
도 9 는 GPU 파이프라인, GPU 컴포넌트, 및 디스플레이/버퍼 사이의 예시의 통신들을 도시하는 통신 플로우 다이어그램이다.
도 10 은 그래픽스 프로세싱의 예시의 방법의 플로우챠트이다.
도 11 은 그래픽스 프로세싱의 예시의 방법의 플로우챠트이다.
그래픽스 프로세싱의 일부 양태들은 가상 현실 (VR), 증강 현실 (AR), 또는 확장 현실 (XR) 을 렌더링하기 위해 장면들에서 채용된 다른 최적화 기법인, 포비티드 렌더링을 활용할 수도 있다. 또한, 그래픽스 프로세싱의 일부 양태들은 포비티드-비닝된 렌더링을 활용할 수도 있으며, 이는 또한 주로 VR/AR/XR 애플리케이션들을 위해 활용된다. 포비티드-비닝된 렌더링에서, 시야 (field-of-view; FoV) 의 중심에 있는 빈들은 풀 해상도로 렌더링될 수도 있는 한편, 메인 FoV 외부의 빈들 (예를 들어, 렌더링 패스에서의 빈들) 은 더 낮거나 다운스케일링된 해상도, 예를 들어, 1x:2y, 1x:4y, 2x:4y 등으로 렌더링될 수도 있다. 그래픽스 프로세싱의 일부 양태들은 또한 뷰포트 변환 프로세스 (예를 들어, Xform) 을 활용할 수도 있다. 뷰포트 변환 프로세스는 렌더 타겟의 해상도에 의존할 수도 있는 파라미터들 (즉, 스케일들 및 오프셋들) 을 사용한다. 포비티드-비닝된 렌더링은 다운스케일 렌더링 패스에서 상이한 빈 사이즈들을 활용한다. 예를 들어, 포비티드-비닝된 렌더링에서, 비닝 패스는 원래의 뷰포트 스케일들 및 뷰포트 오프셋들을 사용할 수도 있는 반면, 렌더링 패스는 동일하거나 더 낮은 해상도들을 달성하기 위해 각각의 빈에 대해 조정된 뷰포트 스케일들 및 오프셋들을 사용할 수도 있다. 뷰포트 스케일들이 비닝 패스와 렌더링 패스 사이에서 상이할 수도 있기 때문에, 동일한 프리미티브/삼각형은 비닝 패스와 렌더링 패스 사이에서 상이한 스크린 좌표들을 가질 수도 있다. 이에 기초하여, 프리미티브/삼각형은 비닝 패스에서 임의의 샘플들을 커버하지 않을 수도 있지만, (예를 들어, 유한 정밀도, 페이스(face) 플립핑 등으로 인해) 렌더링 패스에서 유효한 샘플들을 커버할 수도 있다. 이 프로세스는 장면에서 시각적 아티팩트들을 초래할 수도 있다. 본 명세서에 표시된 바와 같이, 일부 그래픽스 프로세싱 문제들은 상이한 스케일 팩터들을 포함하는 것과 같은, 비닝 패스와 렌더링 패스 사이에서 뷰포트 파라미터들의 결과가 상이할 수도 있다. 이러한 상이한 스케일 팩터들은 장면에서 시각적 아티팩트들을 초래할 수도 있다. 이러한 아티팩트들을 회피하기 위한 시도에서, GPU 에서의 소프트웨어는 다중 컬링 알고리즘들을 디스에이블할 수도 있고 프리미티브들이 비닝 패스에서 가시적이도록 강제할 수도 있다. 그러나, 이는 GPU 의 성능에 큰 영향을 미칠 수도 있다. 본 개시의 양태들은 비닝 패스와 렌더링 패스 사이에 유사한 뷰포트 파라미터들을 포함하는 그래픽스 프로세싱 기법들을 제공할 수도 있다. 예를 들어, 본 개시의 양태들은 비닝 패스와 렌더링 패스 사이의 스케일링 없이 뷰포트 변환을 포함할 수도 있다. 부가적으로, 본 개시의 양태들은 비닝 패스와 렌더링 패스 사이에 유사한 스케일 팩터들 또는 오프셋 파라미터들을 포함할 수도 있다. 예를 들어, 본 개시의 양태들은 다운스케일링된 공간에서 스케일링 또는 오프셋 파라미터들을 유지할 수도 있다.
이하, 시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 다양한 양태들이 첨부 도면들을 참조하여 더 충분히 설명된다. 하지만, 본 개시는 많은 상이한 형태들로 실시될 수도 있고 본 개시 전체에 걸쳐 제시된 임의의 특정 구조 또는 기능에 제한되는 것으로 해석되지 않아야 한다. 오히려, 이들 양태들은 본 개시가 철저하고 완전하게 되고, 본 개시의 범위를 당업자에게 충분히 전달하게 되도록 제공된다. 본 명세서에서의 교시들에 기초하여, 당업자는, 본 개시의 다른 양태들과 독립적으로 구현되든 또는 이와 결합되든, 본 명세서에 개시된 시스템들, 장치들, 컴퓨터 프로그램 제품들, 및 방법들의 임의의 양태를 커버하도록 의도됨을 알아야 한다. 예를 들어, 본 명세서에 제시된 임의의 수의 양태를 이용하여 장치가 구현될 수도 있거나 방법이 실시될 수도 있다. 또한, 본 개시의 범위는 본 명세서에 제시된 본 개시의 다양한 양태들 이외에 또는 이에 부가하여 다른 구조, 기능성, 또는 구조 및 기능성을 이용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 본 명세서에 개시된 임의의 양태는 청구항의 하나 이상의 엘리먼트에 의해 구체화될 수도 있다.
다양한 양태들이 본 명세서에서 설명되지만, 이들 양태들의 많은 변형들 및 치환들은 본 개시의 범위에 포함된다. 본 개시의 양태들의 일부 잠재적 이익들 및 이점들이 언급되지만, 본 개시의 범위는 특정 이익들, 사용들, 또는 목적들에 제한되도록 의도되지 않는다. 오히려, 본 개시의 양태들은 상이한 무선 기술들, 시스템 구성들, 네트워크들, 및 송신 프로토콜들에 광범위하게 적용가능한 것으로 의도되고, 이들 중 일부는 도면들 및 다음의 설명에서 예시에 의해 설명된다. 상세한 설명 및 도면들은 본 개시를 제한하는 것이 아니라 예시할 뿐이며, 본 개시의 범위는 첨부된 청구항들 및 그 등가물들에 의해 정의된다.
다양한 장치들 및 방법들을 참조하여 여러 양태들이 제시된다. 이들 장치들 및 방법들은 다양한 블록들, 컴포넌트들, 회로들, 프로세스들, 알고리즘들 등 ("엘리먼트들" 로서 총칭됨) 에 의해 다음의 상세한 설명에서 설명되고 첨부 도면들에서 예시된다. 이들 엘리먼트들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 임의의 조합을 이용하여 구현될 수도 있다. 그러한 엘리먼트들이 하드웨어 또는 소프트웨어로 구현될지 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 의존한다.
예시로, 엘리먼트, 또는 엘리먼트의 임의의 부분, 또는 엘리먼트들의 임의의 조합은 (프로세싱 유닛들로서 또한 지칭될 수 있는) 하나 이상의 프로세서를 포함하는 "프로세싱 시스템" 으로서 구현될 수도 있다. 프로세서들의 예는 마이크로프로세서, 마이크로제어기, 그래픽스 프로세싱 유닛 (GPU), 범용 GPU (GPGPU), 중앙 프로세싱 유닛 (CPU), 애플리케이션 프로세서, 디지털 신호 프로세서 (DSP), RISC (reduced instruction set computing) 프로세서, 시스템 온 칩 (System on Chip; SoC), 베이스대역 프로세서, 주문형 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 프로그램가능 로직 디바이스 (PLD), 상태 머신, 게이트형 로직, 이산 하드웨어 회로, 및 본 개시 전체에 걸쳐 설명된 다양한 기능성을 수행하도록 구성된 다른 적합한 하드웨어를 포함한다. 프로세싱 시스템에서 하나 이상의 프로세서는 소프트웨어를 실행할 수도 있다. 소프트웨어는 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 다른 것으로 지칭되든지 간에, 명령들, 명령 세트, 코드, 코드 세그먼트, 프로그램 코드, 프로그램, 서브프로그램, 소프트웨어 컴포넌트, 애플리케이션, 소프트웨어 애플리케이션, 소프트웨어 패키지, 루틴, 서브루틴, 오브젝트, 실행물(executable), 실행의 스레드, 프로시저, 함수(function) 등을 의미하는 것으로 폭넓게 해석될 수도 있다. 용어 애플리케이션은 소프트웨어를 지칭할 수도 있다. 본 명세서에 설명된 바와 같이, 하나 이상의 기법은 하나 이상의 기능을 수행하도록 구성되는 애플리케이션, 즉 소프트웨어를 지칭할 수도 있다. 이러한 예들에서, 애플리케이션은 메모리, 예를 들어 프로세서의 온-칩 메모리, 시스템 메모리, 또는 임의의 다른 메모리 상에 저장될 수도 있다. 프로세서와 같은 본 명세서에 설명된 하드웨어는 애플리케이션을 실행하도록 구성될 수도 있다. 예를 들어, 애플리케이션은 하드웨어에 의해 실행될 때, 하드웨어로 하여금 본 명세서에 설명된 하나 이상의 기법을 수행하게 하는 코드를 포함하는 것으로 설명될 수도 있다. 예로서, 하드웨어는 메모리로부터 코드에 액세스하고 메모리로부터 액세스된 코드를 실행하여 본 명세서에 설명된 하나 이상의 기법을 수행할 수도 있다. 일부 예들에서, 컴포넌트들은 본 개시에서 식별된다. 그러한 예들에서, 컴포넌트들은 하드웨어, 소프트웨어, 또는 이들의 조합일 수도 있다. 컴포넌트들은 별도의 컴포넌트들 또는 단일 컴포넌트의 서브-컴포넌트들일 수도 있다.
이에 따라, 본 명세서에 설명된 하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령 또는 코드로서 저장되거나 또는 인코딩될 수도 있다. 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수도 있는 임의의 가용 매체일 수도 있다. 한정이 아닌 예시로서, 이러한 컴퓨터 판독가능 매체는 랜덤 액세스 메모리 (random-access memory; RAM), 판독 전용 메모리 (read-only memory; ROM), 전기적 소거가능 프로그램가능 ROM (electrically erasable programmable ROM; EEPROM), 광학 디스크 저장, 자기 디스크 저장, 다른 자기 저장 디바이스들, 전술한 타입의 컴퓨터 판독가능 매체들의 조합들, 또는 컴퓨터에 의해 액세스될 수도 있는 명령들 또는 데이터 구조들 형태로 컴퓨터 실행가능 코드를 저장하는데 사용될 수도 있는 임의의 다른 매체를 포함할 수도 있다.
일반적으로, 본 개시는 단일 디바이스 또는 다중 디바이스들에서 그래픽스 프로세싱 파이프라인을 갖고, 그래픽 콘텐츠의 렌더링을 개선하며, 및/또는 프로세싱 유닛, 즉 GPU 와 같은, 본 명세서에 설명된 하나 이상의 기법을 수행하도록 구성된 임의의 프로세싱 유닛의 부하를 감소시키기 위한 기법들을 설명한다. 예를 들어, 본 개시는 그래픽스 프로세싱을 활용하는 임의의 디바이스에서 그래픽스 프로세싱을 위한 기법들을 설명한다. 다른 예시의 이익들이 본 개시 전체에 걸쳐 설명된다.
본 명세서에 사용된 바와 같이, 용어 "콘텐츠" 의 인스턴스들은 "그래픽 콘텐츠", "이미지" 를 지칭할 수도 있으며, 그 역 또한 마찬가지이다. 이것은 용어들이 형용사, 명사 또는 다른 품사들로서 사용되고 있는지에 관계없이 사실이다. 일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽스 프로세싱 파이프라인의 하나 이상의 프로세스에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽스 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "그래픽 콘텐츠" 는 그래픽스 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다.
일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "디스플레이 콘텐츠" 는 디스플레잉 프로세싱을 수행하도록 구성된 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 일부 예들에서, 본 명세서에 사용된 바와 같이, 용어 "디스플레이 콘텐츠" 는 디스플레이 프로세싱 유닛에 의해 생성된 콘텐츠를 지칭할 수도 있다. 그래픽 콘텐츠는 디스플레이 콘텐츠가 되도록 프로세싱될 수도 있다. 예를 들어, 그래픽스 프로세싱 유닛은 프레임과 같은 그래픽 콘텐츠를 버퍼 (프레임버퍼로서 지칭될 수도 있음) 에 출력할 수도 있다. 디스플레이 프로세싱 유닛은 버퍼로부터 하나 이상의 프레임과 같은 그래픽 콘텐츠를 판독하고, 그 상에서 하나 이상의 디스플레이 프로세싱 기법을 수행하여 디스플레이 콘텐츠를 생성할 수도 있다. 예를 들어, 디스플레이 프로세싱 유닛은 프레임을 생성하기 위해 하나 이상의 렌더링된 계층에 대해 합성을 수행하도록 구성될 수도 있다. 다른 예로서, 디스플레이 프로세싱 유닛은 2 이상의 계층을 단일 프레임으로 함께 구성, 블렌딩 또는 다르게는 조합하도록 구성될 수도 있다. 디스플레이 프로세싱 유닛은 프레임에 대한 스케일링, 예를 들어, 업스케일링 또는 다운스케일링을 수행하도록 구성될 수도 있다. 일부 예들에서, 프레임은 계층을 지칭할 수도 있다. 다른 예들에서, 프레임은 프레임을 형성하기 위해 이미 함께 블렌딩된 2 이상의 계층들을 지칭할 수도 있으며, 즉 프레임은 2 이상의 계층들을 포함하고, 2 이상의 계층들을 포함하는 프레임은 후속하여 블렌딩될 수도 있다.
도 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 디스플레이는 그 상의 제시를 위한 임의의 프레임들을 수신하지 않을 수도 있다. 대신, 프레임들 또는 그래픽스 프로세싱 결과들이 다른 디바이스로 전송될 수도 있다. 일부 양태들에서, 이는 스플릿-렌더링으로 지칭될 수도 있다.
프로세싱 유닛 (120) 은 내부 메모리 (121) 를 포함할 수도 있다. 프로세싱 유닛 (120) 은 그래픽스 프로세싱 파이프라인 (107) 에서와 같은, 그래픽스 프로세싱을 수행하도록 구성될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 내부 메모리 (123) 를 포함할 수도 있다. 일부 예들에서, 디바이스 (104) 는 디스플레이 프로세서 (127) 와 같은 디스플레이 프로세서를 포함하여, 하나 이상의 디스플레이 (131) 에 의한 제시 전에 프로세싱 유닛 (120) 에 의해 생성된 하나 이상의 프레임에 대해 하나 이상의 디스플레이 프로세싱 기법을 수행할 수도 있다. 디스플레이 프로세서 (127) 는 디스플레이 프로세싱을 수행하도록 구성될 수도 있다. 예를 들어, 디스플레이 프로세서 (127) 는 프로세싱 유닛 (120) 에 의해 생성된 하나 이상의 프레임에 대해 하나 이상의 디스플레이 프로세싱 기법을 수행하도록 구성될 수도 있다. 하나 이상의 디스플레이 (131) 는 디스플레이 프로세서 (127) 에 의해 프로세싱된 프레임들을 디스플레이하거나 그렇지 않으면 제시하도록 구성될 수도 있다. 일부 예들에서, 하나 이상의 디스플레이 (131) 는 다음 중 하나 이상을 포함할 수도 있다: 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 프로젝션 디스플레이 디바이스, 증강 현실 디스플레이 디바이스, 가상 현실 디스플레이 디바이스, 헤드-장착형 디스플레이 또는 임의의 다른 타입의 디스플레이 디바이스.
시스템 메모리 (124) 와 같은, 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 외부의 메모리는, 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 에 액세스가능할 수도 있다. 예를 들어, 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 는 시스템 메모리 (124) 와 같은, 외부 메모리로부터 판독 및/또는 외부 메모리에 기입하도록 구성될 수도 있다. 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 는 버스를 통해 시스템 메모리 (124) 에 통신 가능하게 커플링될 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 및 콘텐츠 인코더/디코더 (122) 는 버스 또는 상이한 연결을 통해 서로 통신가능하게 커플링될 수도 있다.
콘텐츠 인코더/디코더 (122) 는 시스템 메모리 (124) 및/또는 통신 인터페이스 (126) 와 같은, 임의의 소스로부터 그래픽 콘텐츠를 수신하도록 구성될 수도 있다. 시스템 메모리 (124) 는 수신된 인코딩 또는 디코딩된 그래픽 콘텐츠를 저장하도록 구성될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 예를 들어, 시스템 메모리 (124) 및/또는 통신 인터페이스 (126) 로부터, 인코딩된 픽셀 데이터의 형태로, 인코딩 또는 디코딩된 그래픽 콘텐츠를 수신하도록 구성될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 임의의 그래픽 콘텐츠를 인코딩 또는 디코딩하도록 구성될 수도 있다.
내부 메모리 (121) 또는 시스템 메모리 (124) 는 하나 이상의 휘발성 또는 비휘발성 메모리 또는 저장 디바이스를 포함할 수도 있다. 일부 예들에서, 내부 메모리 (121) 또는 시스템 메모리 (124) 는 RAM, SRAM, DRAM, 소거가능 프로그램가능 ROM (EPROM), 전기적 소거가능 프로그램가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들, 또는 임의의 다른 타입의 메모리를 포함할 수도 있다.
내부 메모리 (121) 또는 시스템 메모리 (124) 는 일부 예들에 따른 비일시적 저장 매체일 수도 있다. 용어 "비일시적" 은 저장 매체가 캐리어 파 또는 전파된 신호로 구현되지 않음을 나타낼 수도 있다. 그러나, 용어 "비일시적" 은 내부 메모리 (121) 또는 시스템 메모리 (124) 가 이동가능하지 않거나 그 콘텐츠가 정적임을 의미하는 것으로 해석되지 않아야 한다. 일 예로서, 시스템 메모리 (124) 는 디바이스 (104) 로부터 제거되고 다른 디바이스로 이동될 수도 있다. 다른 예로서, 시스템 메모리 (124) 는 디바이스 (104) 로부터 탈착가능하지 않을 수도 있다.
프로세싱 유닛 (120) 은 중앙 프로세싱 유닛 (CPU), 그래픽스 프로세싱 유닛 (GPU), 범용 GPU (GPGPU), 또는 그래픽스 프로세싱를 수행하도록 구성될 수도 있는 임의의 다른 프로세싱 유닛일 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 은 디바이스 (104) 의 마더보드에 통합될 수도 있다. 일부 예들에서, 프로세싱 유닛 (120) 은 디바이스 (104) 의 마더보드에서의 포트에 설치되는 그래픽스 카드 상에 존재할 수도 있거나 또는 다르게는 디바이스 (104) 와 상호동작하도록 구성된 주변 디바이스 내에 통합될 수도 있다. 프로세싱 유닛 (120) 은 하나 이상의 마이크로프로세서, GPU, 주문형 집적회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 산술 로직 유닛 (ALU), 디지털 신호 프로세서 (DSP), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 등가의 집적된 또는 이산 로직 회로부, 또는 이들의 임의의 조합들을 포함할 수도 있다. 기법들이 부분적으로 소프트웨어로 구현되는 경우, 프로세싱 유닛 (120) 은 적합한, 비일시적 컴퓨터 판독가능 저장 매체, 예를 들어 내부 메모리 (121) 에 소프트웨어를 위한 명령들을 저장할 수도 있고, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서를 사용하여 하드웨어에서 명령들을 실행할 수도 있다. 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함하여 전술한 것 중 임의의 것은 하나 이상의 프로세서로 간주될 수도 있다.
콘텐츠 인코더/디코더 (122) 는 콘텐츠 디코딩을 수행하도록 구성된 임의의 프로세싱 유닛일 수도 있다. 일부 예들에서, 콘텐츠 인코더/디코더 (122) 는 디바이스 (104) 의 마더보드에 통합될 수도 있다. 콘텐츠 인코더/디코더 (122) 는 하나 이상의 마이크로프로세서, GPU, 주문형 집적회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA), 산술 로직 유닛 (ALU), 디지털 신호 프로세서 (DSP), 비디오 프로세서, 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 등가의 집적된 또는 또는 이산 로직 회로부, 또는 이들의 임의의 조합들을 포함할 수도 있다. 기법들이 부분적으로 소프트웨어로 구현되는 경우, 콘텐츠 인코더/디코더 (122) 는 적합한, 비일시적 컴퓨터 판독가능 저장 매체, 예를 들어 내부 메모리 (123) 에 소프트웨어를 위한 명령들을 저장할 수도 있고, 본 개시의 기법들을 수행하기 위해 하나 이상의 프로세서를 사용하여 하드웨어에서 명령들을 실행할 수도 있다. 하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함하여 전술한 것 중 임의의 것은 하나 이상의 프로세서로 간주될 수도 있다.
일부 양태들에서, 콘텐츠 생성 시스템 (100) 은 선택적 통신 인터페이스 (126) 를 포함할 수도 있다. 통신 인터페이스 (126) 는 수신기 (128) 및 송신기 (130) 를 포함할 수도 있다. 수신기 (128) 는 디바이스 (104) 와 관련하여 본 명세서에 설명된 임의의 수신 기능을 수행하도록 구성될 수도 있다. 부가적으로, 수신기 (128) 는 다른 디바이스로부터, 정보, 예를 들어 눈 또는 헤드 포지션 정보, 렌더링 커맨드들, 또는 위치 정보를 수신하도록 구성될 수도 있다. 송신기 (130) 는 디바이스 (104) 와 관련하여 본 명세서에 설명된 임의의 송신 기능을 수행하도록 구성될 수도 있다. 예를 들어, 송신기 (130) 는 콘텐츠에 대한 요청을 포함할 수도 있는 정보를 다른 디바이스로 송신하도록 구성될 수도 있다. 수신기 (128) 및 송신기 (130) 는 트랜시버 (132) 내로 조합될 수도 있다. 이러한 예들에서, 트랜시버 (132) 는 디바이스 (104) 와 관련하여 본 명세서에 설명된 임의의 수신 기능 및/또는 송신 기능을 수행하도록 구성될 수도 있다.
도 1 을 다시 참조하면, 소정의 양태들에서, 프로세싱 유닛 (120) 은 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신하도록 구성된 결정 컴포넌트 (198) 를 포함할 수도 있으며, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관된다. 결정 컴포넌트 (198) 는 또한 그래픽스 프로세싱 유닛 (GPU) 드라이버로부터, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신하도록 구성될 수도 있다. 결정 컴포넌트 (198) 는 또한 복수의 프리미티브들에 대한 비닝 패스를 수행하도록 구성될 수도 있으며, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 결정 컴포넌트 (198) 는 또한 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행하도록 구성될 수도 있으며, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함한다. 결정 컴포넌트 (198) 는 또한 복수의 프리미티브들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행한 후 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행하도록 구성될 수도 있다. 결정 컴포넌트 (198) 는 또한 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화하도록 구성될 수도 있다. 결정 컴포넌트 (198) 는 또한 복수의 프리미티브들의 각각의 래스터화에 기초하여 복수의 프리미티브들의 각각을 렌더링하도록 구성될 수도 있다. 결정 컴포넌트 (198) 는 또한 복수의 프리미티브들의 각각을 렌더링한 후 렌더링된 복수의 프리미티브들을 송신하도록 구성될 수도 있다. 다음의 설명은 그래픽스 프로세싱에 초점을 맞출 수도 있지만, 본 명세서에 설명된 개념들은 다른 유사한 프로세싱 기법들에 적용가능할 수도 있다.
본 명세서에 설명된 바와 같이, 디바이스 (104) 와 같은 디바이스는 본 명세서에 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 디바이스, 장치 또는 시스템을 지칭할 수도 있다. 예를 들어, 디바이스는 서버, 기지국, 사용자 장비, 클라이언트 디바이스, 스테이션, 액세스 포인트, 컴퓨터, 예를 들어 개인용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 컴퓨터 워크스테이션 또는 메인프레임 컴퓨터, 엔드 제품, 장치, 폰, 스마트 폰, 서버, 비디오 게임 플랫폼 또는 콘솔, 핸드헬드 디바이스, 예를 들어 휴대용 비디오 게임 디바이스 또는 개인용 디지털 보조기 (PDA), 웨어러블 컴퓨팅 디바이스, 예를 들어 스마트 워치, 증강 현실 디바이스 또는 가상 현실 디바이스, 비-웨어러블 디바이스, 디스플레이 또는 디스플레이 디바이스, 텔레비전, 텔레비전 셋탑 박스, 중간 네트워크 디바이스 , 디지털 미디어 플레이어, 비디오 스트리밍 디바이스, 콘텐츠 스트리밍 디바이스, 차량내 컴퓨터, 임의의 모바일 디바이스, 그래픽 콘텐츠를 생성하도록 구성된 임의의 디바이스, 또는 본 명세서에 설명된 하나 이상의 기법들을 수행하도록 구성된 임의의 디바이스일 수도 있다. 본 명세서의 프로세스는 특정 컴포넌트 (예를 들어 GPU) 에 의해 수행되는 것으로 설명될 수도 있지만, 추가 실시형태들에서는, 개시된 실시형태들과 일치하는 다른 컴포넌트들 (예를 들어 CPU) 를 사용하여 수행될 수도 있다.
GPU들은 GPU 파이프라인에서 다중 타입들의 데이터 또는 데이터 패킷들을 프로세싱할 수도 있다. 예를 들어, 일부 양태들에서, GPU 는 두 가지 타입의 데이터 또는 데이터 패킷들, 예를 들어, 컨텍스트 레지스터 패킷들 및 드로우 콜 데이터를 프로세싱할 수도 있다. 컨텍스트 레지스터 패킷은 그래픽스 컨텍스트가 어떻게 프로세싱될지를 조절할 수도 있는, 글로벌 상태 정보의 세트, 예를 들어, 글로벌 레지스터, 셰이딩 프로그램, 또는 상수 데이터에 관한 정보일 수도 있다. 예를 들어, 컨텍스트 레지스터 패킷들은 컬러 포맷에 관한 정보를 포함할 수도 있다. 컨텍스트 레지스터 패킷들의 일부 양태들에서, 어느 워크로드가 컨텍스트 레지스터에 속하는지를 표시하는 비트가 있을 수도 있다. 또한, 동시에 및/또는 병렬로 실행되는 다중의 기능들 또는 프로그래밍이 있을 수도 있다. 예를 들어, 기능들 또는 프로그래밍은 소정의 동작, 예를 들어, 컬러 모드 또는 컬러 포맷을 설명할 수도 있다. 따라서, 컨텍스트 레지스터는 GPU 의 다중의 상태들을 정의할 수도 있다.
컨텍스트 상태들은 개별 프로세싱 유닛이 어떻게 기능하는지, 예를 들어, 버텍스 페처 (VFD), 버텍스 셰이더 (VS), 셰이더 프로세서, 또는 지오메트리 프로세서 , 및/또는 프로세싱 유닛이 어떤 모드에서 기능하는지를 결정하기 위해 활용될 수도 있다. 그렇게 하기 위해, GPU들은 컨텍스트 레지스터들 및 프로그래밍 데이터를 사용할 수도 있다. 일부 양태들에서, GPU 는 모드 또는 상태의 콘텍스트 레지스터 정의에 기초하여 파이프라인에서, 워크로드, 예를 들어, 버텍스 또는 픽셀 워크로드를 생성할 수도 있다. 소정의 프로세싱 유닛들, 예를 들어, VFD 는 이러한 상태들을 사용하여 소정의 기능들, 예를 들어, 버텍스가 어떻게 어셈블링되는지를 결정할 수도 있다. 이들 모드들 또는 상태들이 변경될 수도 있기 때문에, GPU들은 대응하는 콘텍스트를 변경할 필요가 있을 수도 있다. 또한, 모드 또는 상태에 대응하는 워크로드는 변화하는 모드 또는 상태를 따를 수도 있다.
도 2 는 본 개시의 하나 이상의 기법에 따른 예시의 GPU (200) 를 도시한다. 도 2 에 나타낸 바와 같이, GPU (200) 는 커맨드 프로세서 (CP)(210), 드로우 콜 패킷들 (212), VFD (220), VS (222), 버텍스 캐시 (VPC)(224), 삼각형 셋업 엔진 (TSE)(226), 래스터라이저 (RAS)(228), Z 프로세스 엔진 (ZPE)(230), 픽셀 보간기 (PI)(232), 프래그먼트 셰이더 (FS)(234), 렌더 백엔드 (RB)(236), 레벨 2 (L2) 캐시 (UCHE)(238), 및 시스템 메모리 (240) 를 포함한다. 도 2 는 GPU (200) 가 프로세싱 유닛들 (220-238) 을 포함하는 것을 디스플레이하지만, GPU (200) 는 다수의 부가 프로세싱 유닛들을 포함할 수도 있다.  부가적으로, 프로세싱 유닛들 (220-238) 은 단지 예시일 뿐이며, 프로세싱 유닛들의 임의의 조합 또는 순서가 본 개시에 따른 GPU들에 의해 사용될 수도 있다. GPU (200) 는 또한 커맨드 버퍼 (250), 컨텍스트 레지스터 패킷들 (260), 및 컨텍스트 상태들 (261) 을 포함한다.
도 2 에 나타낸 바와 같이, GPU 는 커맨드 버퍼를 컨텍스트 레지스터 패킷들, 예를 들어, 컨텍스트 레지스터 패킷들 (260), 및/또는 드로우 콜 데이터 패킷들, 예를 들어, 드로우 콜 패킷들 (212) 로 파싱하기 위해 CP, 예를 들어, CP (210), 또는 하드웨어 가속기를 활용할 수도 있다. 그 후 CP (210) 는 GPU 에서의 프로세싱 유닛들 또는 블록들에 대한 별도의 경로들을 통해 컨텍스트 레지스터 패킷들 (260) 또는 드로우 콜 데이터 패킷들 (212) 을 전송할 수도 있다. 또한, 커맨드 버퍼 (250) 는 컨텍스트 레지스터들 및 드로우 콜들의 상이한 상태들을 교번할 수도 있다. 예를 들어, 커맨드 버퍼는 다음의 방식으로 구조화될 수도 있다: 컨텍스트 N 의 컨텍스트 레지스터, 컨텍스트 N 의 드로우 콜(들), 컨텍스트 N+1 의 컨텍스트 레지스터, 및 컨텍스트 N+1 의 드로우 콜(들).
GPU 는 다양한 상이한 방식들로 이미지들을 렌더링할 수도 있다. 일부 경우들에서, GPU들은 렌더링 및/또는 타일 렌더링을 사용하여 이미지를 렌더링할 수도 있다. 타일 렌더링 GPU들에서, 이미지는 상이한 섹션들 또는 타일들로 분할되거나 분리될 수도 있다. 이미지의 분할 후에, 각각의 섹션 또는 타일은 별도로 렌더링될 수도 있다. 타일 렌더링 GPU들은 컴퓨터 그래픽스 이미지들을 그리드 포맷으로 분할할 수도 있어서, 그리드의 각각의 부분, 즉 타일이 별도로 렌더링된다. 일부 양태들에서, 비닝 패스 동안, 이미지는 상이한 빈들 또는 타일들로 분할될 수도 있다. 일부 양태들에서, 비닝 패스 동안, 가시적 프리미티브들 또는 드로우 콜들이 식별될 수 있는 가시성 스트림이 구축될 수도 있다. 타일 렌더링과는 대조적으로, 직접 렌더링은 프레임을 더 작은 빈 또는 타일로 분할하지 않는다. 오히려, 직접 렌더링에서는, 전체 프레임이 한 번에 렌더링된다. 부가적으로, 일부 타입들의 GPU들은 타일 렌더링 및 직접 렌더링 양자 모두를 허용할 수도 있다.
일부 양태들에서, GPU들은 상이한 빈들 또는 타일들에 드로잉 또는 렌더링 프로세스를 적용할 수도 있다. 예를 들어, GPU 는 하나의 빈으로 렌더링할 수 있고, 빈 내의 프리미티브들 또는 픽셀들에 대한 모든 드로우들을 수행할 수도 있다. 빈으로 렌더링하는 프로세스 동안, 렌더 타겟들은 GMEM 에 위치될 수도 있다.  일부 경우들에서, 하나의 빈으로 렌더링한 후에, 렌더 타겟들의 콘텐츠는 시스템 메모리로 이동될 수도 있고, GMEM 은 다음 빈을 렌더링하기 위해 해제될 수도 있다.  부가적으로, GPU 는 다른 빈으로 렌더링하고, 그 빈에서의 프리미티브들 또는 픽셀들에 대한 드로우들을 수행할 수도 있다. 따라서, 일부 양태들에서, 하나의 표면에서의 모든 드로우들을 커버하는 작은 수의 빈들, 예를 들어, 4개의 빈이 있을 수도 있다. 또한, GPU들은 하나의 빈에서의 모든 드로우들을 통해 순환할 수 있지만, 가시적인 드로우 콜들, 즉 가시적인 지오메트리를 포함하는 드로우 콜들에 대한 드로우들을 수행할 수도 있다. 일부 양태들에서, 가시성 스트림은 이미지 또는 장면에서 각각의 프리미티브의 가시성 정보를 결정하기 위해, 예를 들어, 비닝 패스(binning pass)에서 생성될 수도 있다. 예를 들어, 이러한 가시성 스트림은 소정의 프리미티브가 가시적인지 여부를 식별할 수도 있다. 일부 양태들에서, 이 정보는 예를 들어, 렌더링 패스에서, 가시적이지 않은 프리미티브들을 제거하는데 사용될 수도 있다. 또한, 가시적인 것으로 식별되는 프리미티브들 중 적어도 일부는 렌더링 패스에서 렌더링될 수도 있다.
타일 렌더링의 일부 양태들에서, 다중의 프로세싱 페이즈들 또는 패스들이 있을 수도 있다. 예를 들어, 렌더링은 2개의 패스, 예를 들어, 가시성 또는 빈-가시성 패스 및 렌더링 또는 빈-렌더링 패스로 수행될 수도 있다. 가시성 패스 동안, GPU 는 렌더링 워크로드를 입력하고, 프리미티브들 또는 삼각형들의 포지션들을 기록하고, 그 후 어느 프리미티브들 또는 삼각형들이 어느 빈 또는 영역에 속하는지를 결정할 수도 있다. 가시성 패스의 일부 양태들에서, GPU들은 또한 가시성 스트림에서 각각의 프리미티브 또는 삼각형의 가시성을 식별하거나 마킹할 수도 있다. 렌더링 패스 동안, GPU 는 가시성 스트림을 입력하고 한 번에 하나의 빈 또는 영역을 프로세싱할 수도 있다. 일부 양태들에서, 가시성 스트림은 어느 프리미티브들, 또는 프리미티브들의 버텍스들이 가시적인지 또는 가시적이지 않은지를 결정하기 위해 분석될 수도 있다. 이와 같이, 가시적인 프리미티브들, 또는 프리미티브들의 버텍스들이 프로세싱될 수도 있다. 그렇게 함으로써, GPU들은 가시적이지 않은 프리미티브들 또는 삼각형들을 프로세싱 또는 렌더링하는 불필요한 워크로드를 감소시킬 수도 있다.
일부 양태들에서, 가시성 패스 동안, 소정 타입들의 프리미티브 지오메트리, 예를 들어, 포지션-전용 지오메트리가 프로세싱될 수도 있다. 부가적으로, 프리미티브들 또는 삼각형들의 포지션 또는 위치에 의존하여, 프리미티브들은 상이한 빈들 또는 영역들로 소팅될 수도 있다. 일부 경우들에서, 프리미티브들 또는 삼각형들을 상이한 빈들로 소팅하는 것은 이들 프리미티브들 또는 삼각형들에 대한 가시성 정보를 결정함으로써 수행될 수도 있다. 예를 들어, GPU들은 각각의 빈 또는 영역에서, 예를 들어, 시스템 메모리에서 각각의 프리미티브의 가시성 정보를 결정 또는 기입할 수도 있다. 이러한 가시성 정보는 가시성 스트림을 결정하거나 생성하는데 사용될 수도 있다. 렌더링 패스에서, 각각의 빈에서의 프리미티브들은 별도로 렌더링될 수도 있다. 이러한 경우들에서, 가시성 스트림은 그 빈에 대해 가시적이지 않은 프리미티브들을 드롭하는데 사용되는 메모리로부터 페치될 수도 있다.
GPU들 또는 GPU 아키텍처들의 일부 양태들은 렌더링을 위한 다수의 상이한 옵션들, 예를 들어, 소프트웨어 렌더링 및 하드웨어 렌더링을 제공할 수도 있다. 소프트웨어 렌더링에서, 드라이버 또는 CPU 는 각각의 뷰를 한 번 프로세싱함으로써 전체 프레임 지오메트리를 복제할 수도 있다. 또한, 일부 상이한 상태들은 뷰에 의존하여 변경될 수도 있다. 이와 같이, 소프트웨어 렌더링에서, 소프트웨어는 이미지에서의 각각의 뷰포인트에 대해 렌더링하기 위해 활용될 수도 있는 일부 상태들을 변경함으로써 전체 워크로드를 복제할 수도 있다. 소정의 양태들에서, GPU들이 이미지에서 각각의 뷰포인트에 대해 동일한 워크로드를 여러 번 제출하고 있을 수도 있기 때문에, 증가된 양의 오버헤드가 있을 수도 있다. 하드웨어 렌더링에서, 하드웨어 또는 GPU 는 이미지에서의 각각의 뷰포인트에 대한 지오메트리를 복제하거나 프로세싱하는 것을 담당할 수도 있다. 따라서, 하드웨어는 이미지에서의 각각의 뷰포인트에 대한 프리미티브들 또는 삼각형들의 복제 또는 프로세싱을 관리할 수도 있다.
도 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) 에 있다. 이와 같이, 영역 (302) 을 포함하는 이미지 또는 표면 (300) 을 프로세싱 또는 렌더링하는 GPU 는 다중 뷰포인트들 또는 멀티-뷰 렌더링을 활용할 수도 있다.
본 명세서에 표시된 바와 같이, GPU들 또는 그래픽스 프로세서 유닛들은 전력 소비를 감소시키거나 메모리 대역폭을 절약하기 위해 타일 렌더링 아키텍처를 사용할 수도 있다. 위에서 추가로 언급된 바와 같이, 이러한 렌더링 방법은 장면을 다중 빈들로 분할할 수도 있을 뿐만 아니라, 각각의 빈에서 가시적인 삼각형들을 식별하는 가시성 패스를 포함할 수도 있다. 따라서, 타일 렌더링에서, 전체 스크린은 다중 빈들 또는 타일들로 분할될 수도 있다. 장면은 그 후 여러 번, 예를 들어, 각각의 빈에 대해 한 번 이상 렌더링될 수도 있다.
그래픽 렌더링의 양태들에서, 일부 그래픽스 애플리케이션들은 단일 타겟, 즉 렌더 타겟으로 한 번 이상 렌더링할 수도 있다. 예를 들어, 그래픽스 렌더링에서, 시스템 메모리 상의 프레임 버퍼는 여러 번 업데이트될 수도 있다. 프레임 버퍼는 GPU 에 대한 디스플레이 데이터를 저장하는 것을 돕기 위해, 예를 들어, 비트맵 또는 스토리지를 포함하는 메모리 또는 랜덤 액세스 메모리 (RAM) 의 부분일 수도 있다. 프레임 버퍼는 또한 데이터의 완전한 프레임을 포함하는 메모리 버퍼일 수도 있다. 또한, 프레임 버퍼는 논리 버퍼일 수도 있다. 일부 양태들에서, 프레임 버퍼를 업데이트하는 것은 빈 또는 타일 렌더링에서 수행될 수도 있으며, 여기서, 위에 논의된 바와 같이, 표면은 다중 빈들 또는 타일들로 분할되고, 그 후 각각의 빈 또는 타일이 개별적으로 렌더링될 수도 있다. 또한, 타일 렌더링에서, 프레임 버퍼는 다중 빈들 또는 타일들로 파티셔닝될 수도 있다.
본 명세서에 표시된 바와 같이, 그래픽스 프로세싱의 일부 양태들은 상이한 타입들의 렌더링, 예를 들어, 타일링된 또는 비닝된 렌더링을 활용할 수도 있다. 타일링된 렌더링 또는 비닝된 렌더링은 디스플레이 공간에서 직사각형 그리드로 컴퓨터 그래픽스 장면을 세분화하고 그리드의 각각의 섹션 (즉, 타일 또는 빈) 을 별도로 렌더링하는 프로세스이다. 타일링된 또는 비닝된 렌더링은 제한된 메모리 액세스 대역폭을 갖는 그래픽스 프로세싱 유닛들 (GPU들) 에 의해 활용될 수도 있다. 일부 경우들에서, 타일링된 렌더링은 비닝 패스 및 렌더링 패스와 같은 GPU 활용을 최대화하기 위해서, 소정 수의 패스들, 예를 들어, 2개의 패스들로 수행될 수도 있다.
타일링된 또는 비닝된 렌더링에서, 비닝 패스는 프레임을 분석하고 각각의 빈 또는 타일에 속하는 프리미티브들을 결정할 수도 있다. 이는 중간 데이터 구조에 저장될 수 있는, 프리미티브들-빈 맵을 초래할 수도 있다. 렌더링 패스는 각각의 빈 또는 타일을 별도로 렌더링할 수도 있다. 각각의 빈 또는 타일에 대해, 중간 맵이 쿼리될 수도 있고, 개개의 빈/타일에 속하는 프리미티브들은 온-칩 버퍼에 렌더링될 수도 있다. 각각의 빈의 렌더링 패스의 끝에서, 온-칩 버퍼는 시스템 메모리 또는 디스플레이 버퍼로 리졸브(resolve)될 수도 있다.
도 4 는 래스터화 프로세스의 일 예의 다이어그램 (400) 을 도시한다. 보다 구체적으로, 도 4 의 다이어그램 (400) 은 프리미티브 (410) 에 대한 래스터화 프로세스를 디스플레이한다. 도 4 에 나타낸 바와 같이, 래스터화는 프리미티브들, 예를 들어 프리미티브 (410) 에 대한 샘플 커버리지를 생성하는 GPU 에서의 프로세스이다. 통상적으로, 래스터라이저는 프리미티브/삼각형의 에지들에 대해 각각의 샘플을 체크하고, 샘플이 프리미티브/삼각형의 내부에 있는 경우 이를 커버된 것으로 마킹한다. 즉, 래스터라이저는 프리미티브/삼각형 에지들의 에지 방정식들에 대해 각각의 샘플을 테스트할 수도 있다. 도 4 에 나타낸 바와 같이, 샘플이 프리미티브/삼각형, 예를 들어, 프리미티브 (410) 의 내부에 있는 경우, 이는 커버된 것으로 마킹될 수도 있다.
부가적으로, 그래픽스 프로세싱의 일부 양태들은 가상 현실 (VR), 증강 현실 (AR), 또는 확장 현실 (XR) 을 렌더링하기 위해 장면들에서 채용된 다른 최적화 기법인, 포비티드 렌더링을 활용할 수도 있다. 포비티드 렌더링에서, 눈 추적기, 예를 들어, VR 헤드셋에 통합된 눈 추적기는, 렌더 타겟에서 메인 시야 (FoV) 를 식별하는데 사용될 수도 있다. 결과적인 FoV 정보는 상이한 해상도들을 갖는 장면에서 다양한 영역들을 렌더링하는데 사용될 수도 있다. 이는 렌더링된 이미지의 시각적 품질을 상당히 손상시키지 않으면서 렌더링 워크로드를 상당히 감소시킬 수도 있다. 또한, 그래픽스 프로세싱의 일부 양태들은 포비티드-비닝된 렌더링을 활용할 수도 있으며, 이는 또한 VR/AR/XR 애플리케이션들을 위해 활용된다. 포비티드-비닝된 렌더링에서, 시야 (field-of-view; FoV) 의 중심에 있는 빈들은 풀 해상도로 렌더링될 수도 있는 한편, 메인 FoV 외부의 빈들 (예를 들어, 렌더링 패스에서의 빈들) 은 더 낮거나 다운스케일링된 해상도, 예를 들어, 1x:2y, 1x:4y, 2x:4y 등으로 렌더링될 수도 있다.
그래픽스 프로세싱의 일부 양태들은 또한 뷰포트 변환 프로세스 (예를 들어, Xform) 를 활용할 수도 있다. 뷰포트 변환은 프리미티브들을 정규화된 디바이스 좌표 (NDC) 공간으로부터 최종 스크린 공간으로 변환하는 GPU 프로세싱에서의 수학적 단계이다. 뷰포트 변환 프로세스는 렌더 타겟의 해상도에 의존할 수도 있는 파라미터들 (즉, 스케일들 및 오프셋들) 을 사용한다. 이러한 뷰포트 변환 스케일들 및 오프셋들은 또한 프리미티브 지오메트리에 직접적으로 영향을 미칠 수도 있다.
포비티드-비닝된 렌더링은 다운스케일 렌더링 패스에서 상이한 빈 사이즈들을 활용한다. 예를 들어, 포비티드-비닝된 렌더링에서, 비닝 패스는 원래의 뷰포트 스케일들 및 뷰포트 오프셋들을 사용할 수도 있는 반면, 렌더링 패스는 동일하거나 더 낮은 해상도들을 달성하기 위해 각각의 빈에 대해 조정된 뷰포트 스케일들 및 오프셋들을 사용할 수도 있다. 예를 들어, 렌더링 패스는 각각의 빈에 대해 X 및/또는 Y 방향들에서 다양한 스케일들 (예를 들어, 1:1, 1:2, 또는 1:4 뷰포트 스케일) 을 활용할 수도 있다. 뷰포트 스케일들이 비닝 패스와 렌더링 패스 사이에서 상이할 수도 있기 때문에, 동일한 프리미티브/삼각형은 비닝 패스와 렌더링 패스 사이에서 상이한 스크린 좌표들을 가질 수도 있다. 예를 들어, 상이한 뷰포트 파라미터들은 버텍스들이 비닝 패스와 렌더링 패스 사이의 샘플 공간에서의 상이한 포지션들에 랜딩하게 할 수도 있다. 이에 기초하여, 프리미티브/삼각형은 비닝 패스에서 임의의 샘플들을 커버하지 않을 수도 있지만, (예를 들어, 유한 정밀도, 페이스 플립핑 등으로 인해) 렌더링 패스에서 유효한 샘플들을 커버할 수도 있다. 이 프로세스는 장면에서 시각적 아티팩트들을 초래할 수도 있다. 또한, 이것은 프레임 레벨뿐만 아니라 빈 레벨에서 발생할 수도 있으며, 이는 VR/AR/XR 세그먼트에서 더 큰 범위의 일반적인 문제일 수도 있다.
도 5 는 빈 포비에이션 프로세스의 일 예의 다이어그램 (500) 을 도시한다. 도 5 에 나타낸 바와 같이, 다이어그램 (500) 은 빈 (511), 빈 (512), 빈 (513), 빈 (514), 및 프리미티브 (520) 를 포함하는 예시의 빈 포비에이션 프로세스이다. 보다 구체적으로, 도 5 는 빈 포비에이션 프로세스에서 프리미티브 (520) 와의 가시성 문제를 디스플레이한다. 즉, 프리미티브 (520) 는 빈들 (511-514) 에 샘플 커버리지 문제를 포함한다. 도 5 에 나타낸 바와 같이, 빈들 (511-514) 의 각각에서의 도트들은 1x 스케일의 샘플들에 대응하는 한편, 빈들 (511-514) 의 중심에서의 'x' 는 2x 스케일의 샘플에 대응한다. 예를 들어, 프리미티브 (520) 는 1x 스케일의 임의의 샘플을 커버하지 않으므로, 비닝 프로세스 동안 제거될 수도 있다. 이는 장면에서 아티팩트들을 초래할 수도 있다.
도 6a 및 도 6b 는 빈 포비에이션 프로세스의 다른 예의 다이어그램들 (600 및 650) 을 각각 도시한다. 도 6a 및 도 6b 에 도시된 바와 같이, 다이어그램들 (600 및 650) 은 프리미티브들 (611, 612, 613 및 614) 을 포함하는 예시의 빈 포비에이션 프로세스이다. 보다 구체적으로, 도 6a 및 도 6b 는 도 6a 의 비닝 패스 및 도 6b 의 렌더링 패스에서 프리미티브 (614) 와의 가시성 문제를 디스플레이한다. 즉, 프리미티브 (614) 의 페이스는 도 6a 의 비닝 패스와 도 6b 의 렌더링 패스 사이에서 플립한다. 예를 들어, GPU 내부의 고정 소수점 연산들에서의 유한 정밀도로 인해, 프리미티브들/삼각형들은 상이한 뷰포트 스케일들 및 부동 소수점 스냅핑으로 인해 그들의 페이스를 플립할 수도 있다. 이러한 프리미티브/삼각형 페이스 플립핑 문제는 장면에서 아티팩트들을 초래할 수도 있다.
도 6a 에 나타낸 바와 같이, 프리미티브 (614) 는 비닝 패스에서 백-페이싱 삼각형이고, 모든 샘플들은 프리미티브들 (611/612/613) 에 의해 커버된다. 예를 들어, 프리미티브 (614) 는 백-페이스 컬링으로 인해 비닝에서 컬링된다. 그러나, 도 6b 에 나타낸 바와 같이, 렌더링 패스에서, 프리미티브 (614) 는 고정 포인트 스냅핑으로 인해 가시적이 되도록 플립한다. 또한, 몇몇 샘플들은 프리미티브 (614) 에 의해 커버될 수도 있다. 프리미티브 (614) 가 이미 비닝에서 컬링됨에 따라, 이는 다운스케일 렌더링 동안 그의 장소에서 메시에 홀을 생성할 수도 있다. 이는 또한 시각적 아티팩트들을 초래할 수도 있다. 부가적으로, 비닝 패스에서의 "제로 영역"에서 검출되는 프리미티브들은 결국 렌더링 패스에서 "제로가 아닌 영역"에 있을 수도 있다. 이는 시각적 아티팩트들에 대한 또 다른 잠재적인 원인이다.
도 7 은 렌더링 패스의 일 예의 다이어그램 (700) 을 도시한다. 도 7 에 나타낸 바와 같이, 다이어그램 (700) 은 단계들 (710, 720, 730, 및 740) 을 포함하는 예시의 렌더링 패스이다. 보다 구체적으로, 도 7 은 비닝 패스에 비교되는 스케일링으로 뷰포트 변환을 포함하는 렌더링 패스를 디스플레이한다. 즉, 도 7 의 렌더링 패스는 비닝 패스와 상이한 뷰포트 스케일링 및 오프셋 파라미터들을 포함한다. 도 7 에 도시된 바와 같이, 단계 (710) 에서, 입력 프리미티브/삼각형이 수신된다. 단계 (720) 에서, 뷰포트 변환은 스케일링으로 (즉, 비닝 패스와 비교됨) 수행된다. 단계 (730) 에서, 컬링 프로세스가 수행된다. 단계 (740) 에서, 래스터화 프로세스가 수행된다. 비닝과 렌더링 사이에 상이한 스케일 팩터들이 있기 때문에, 이는 장면에서 시각적 아티팩트들을 초래할 수도 있다.
위에 표시된 바와 같이, 일부 그래픽스 프로세싱 문제들은 상이한 스케일 팩터들을 포함하는 것과 같은, 비닝 패스와 렌더링 패스 사이에서 뷰포트 파라미터들의 결과가 상이할 수도 있다. 이러한 상이한 스케일 팩터들은 장면에서 시각적 아티팩트들을 초래할 수도 있다. 이러한 아티팩트들을 회피하기 위한 시도에서, GPU 에서의 소프트웨어는 다중 컬링 알고리즘들을 디스에이블할 수도 있고 프리미티브들이 비닝 패스에서 가시적이도록 강제할 수도 있다. 그러나, 이는 GPU 의 성능에 큰 영향을 미칠 수도 있다. 이와 같이, 비닝 패스와 렌더링 패스 사이에 유사한 뷰포트 파라미터들을 포함하는 것이 유리할 수도 있다. 예를 들어, 비닝 패스와 렌더링 패스 사이의 스케일링 없이 뷰포트 변환을 포함하는 것이 유리할 수도 있다. 또한, 비닝 패스와 렌더링 패스 사이에 유사한 스케일 팩터들 또는 오프셋 파라미터들을 포함하는 것이 유리할 수도 있다. 예를 들어, 다운스케일링된 공간에서 스케일링 또는 오프셋 파라미터들을 유지하는 것이 유리할 수도 있다.
본 개시의 양태들은 비닝 패스와 렌더링 패스 사이에 유사한 뷰포트 파라미터들을 포함하는 그래픽스 프로세싱 기법들을 제공할 수도 있다. 예를 들어, 본 개시의 양태들은 비닝 패스와 렌더링 패스 사이의 스케일링 없이 뷰포트 변환을 포함할 수도 있다. 부가적으로, 본 개시의 양태들은 비닝 패스와 렌더링 패스 사이에 유사한 스케일 팩터들 또는 오프셋 파라미터들을 포함할 수도 있다. 예를 들어, 본 개시의 양태들은 다운스케일링된 공간에서 스케일링 또는 오프셋 파라미터들을 유지할 수도 있다.
일부 경우들에서, 본 개시의 양태들은 대부분의 컬링 알고리즘들을 인에이블된 상태로 유지하면서 아티팩트가 없는 다운스케일 렌더링을 수행할 수도 있다. 예를 들어, 위에 언급된 시각적 아티팩트들에 대한 주요 이유는 비닝 및 다운스케일링된 렌더링에서 동일한 프리미티브에 대한 컬링 결과에서의 차이이다. 상술한 바와 같이, 이것은 비닝 패스 및 렌더링 패스에서의 상이한 뷰포트 파라미터들에 기인할 수도 있다. 따라서, 본 개시의 양태들은 다운스케일링된 렌더링에서 뷰포트 스케일링 및 오프셋 파라미터들을 비닝 패스의 것과 동일하게 유지하는 것을 제안할 수도 있다.
비닝 및 렌더링 패스들에서 뷰포트 스케일링 및/또는 오프셋 파라미터들을 유사하게 유지함으로써, 이는 비닝 및 렌더링에 걸친 프리미티브들의 동일한 컬링 결과를 보장할 수도 있다. 따라서, 이것은 비닝 및 렌더링 패스들 양자 모두에서 컬링 알고리즘들을 끊임없이(seamlessly) 인에이블하는데 도움이 될 수도 있다. 예를 들어, 다운스케일링된 렌더링 패스에서, 래스터라이저는 다운스케일 도메인에서 샘플 커버리지를 생성할 수도 있다. 이를 달성하기 위해, 본 개시의 양태들은 비닝 패스와 동일한 해상도를 갖는 프리미티브들에 대해 업스케일링된 샘플 공간의 가시성 테스트를 수행할 수도 있다. 일부 경우들에서, 이것은 다운스케일 도메인에서 커버리지를 결정/식별하는 것과 동일한 효과를 가질 수도 있다.
도 8 은 본 개시의 양태들에 따른 렌더링 패스의 일 예의 다이어그램 (800) 을 도시한다. 도 8 에 나타낸 바와 같이, 다이어그램 (800) 은 단계들 (810, 820, 830, 및 840) 을 포함하는 예시의 렌더링 패스이다. 보다 구체적으로, 도 8 은 비닝 패스에 비교되는 스케일링없이 뷰포트 변환을 포함하는 렌더링 패스를 디스플레이한다. 즉, 도 8 의 렌더링 패스는 비닝 패스와 유사한 뷰포트 스케일링 및 오프셋 파라미터들을 포함한다. 그렇게 함으로써, 도 8 에서의 렌더링 패스는 비닝 및 렌더링 패스들 양자 모두에 걸친 프리미티브들의 동일한 컬링 결과를 보장할 수도 있다.
도 8 에 도시된 바와 같이, 단계 (810) 에서, 본 개시의 양태들은 입력 프리미티브/삼각형을 수신할 수도 있다. 단계 (820) 에서, 본 개시의 양태들은 스케일링 (즉, 비닝 패스와 비교됨) 없이 뷰포트 변환을 수행할 수도 있다. 예를 들어, 본 개시의 양태들은 업스케일링된 샘플 공간에서의 커버리지를 계산할 수도 있다. 또한, 본 개시의 양태들은 다운스케일링된 공간에서 다른 파라미터들을 유지할 수도 있다. 단계 (830) 에서, 본 개시의 양태들은 컬링 프로세스를 수행할 수도 있다. 단계 (840) 에서, 본 개시의 양태들은 업스케일링된 샘플 공간으로 래스터화 프로세스를 수행할 수도 있다. 본 명세서에 언급된 바와 같이, 도 8 의 렌더링 패스에서 단계들 (810-840) 은 비닝 및 렌더링 패스들 양자 모두에서 컬링 알고리즘들을 끊임없이 인에이블하는데 도움이 될 수도 있다.
일부 양태들에서, 비닝 및 렌더링 패스들에서 뷰포트 스케일링 및/또는 오프셋 파라미터들을 유사하게 유지하기 위해서, 본 개시의 양태들은 다수의 상이한 에지 방정식들을 활용할 수도 있다. 보다 구체적으로, 본 개시의 양태들은 프리미티브들/삼각형들의 에지 방정식들을 상이한 스케일링 팩터들, 예를 들어, XY 스케일링 팩터들로 곱할 수도 있다. 예를 들어, 래스터라이저는 다음의 제 1 방정식을 활용할 수도 있다: R = EaXstep + EbYstep + Cref, 식중 Ea 는 프리미티브 A 의 에지 방정식이고, Eb 는 프리미티브 B 의 에지 방정식이고, Xstep 는 X 스텝 컴포넌트이고, Ystep 는 Y 스텝 컴포넌트이고, Cref 는 상수이다. 다운스케일링된 래스터화를 위해, Xstep 및 Ystep 은 X 스케일링 팩터 (Sx) 및 Y 스케일링 팩터 (Sy) 로 곱해질 수도 있다. 따라서, 제 1 방정식은 제 2 방정식 = Ea(Xstep*Sx) + Eb(Ystep*Sy) + Cref 으로 변환할 수도 있다. 제 2 방정식은 제 3 방정식 = (Ea*Sx)Xstep + (Eb*Sy)Ystep + Cref 이 되도록 재배열될 수도 있다. 또한, 제 3 방정식은 제 4 방정식 = Ea’’Xstep + Eb’’Ystep + Cref 으로 변환할 수도 있다. 제 4 방정식은 Ea (즉, Ea’’) 의 수정된 형태 및 Eb (즉, Eb’’) 의 수정된 형태를 활용하는 것을 제외하고, 제 1 방정식과 유사할 수도 있다. 위에 나타낸 바와 같이, 제 3 방정식으로부터, Ea 및 Eb 가 각각 ScaleX (Sx) 및 ScaleY (Sy) 팩터들로 곱해지며, 이는 샘플들을 업스케일링된 공간으로 이동시키는 결과를 초래할 수도 있다.
추가적으로, 본 개시의 양태들은 비닝 및 렌더링 패스들에서 뷰포트 스케일링 및/또는 오프셋 파라미터들을 유사하게 유지하기 위해서 에지 방정식들에 대해 상이한 단계들을 활용할 수도 있다. 예를 들어, 비닝 프로세스에 대한 래스터라이저 방정식 (R) 은 다음과 같을 수도 있다: R = Ea*X + Eb*Y + Cinit, 식중 Ea 는 프리미티브 A 에 대한 에지 방정식이고, Eb 는 프리미티브 B 에 대한 에지 방정식이고, , X 는 X 컴포넌트이고, Y 는 Y 컴포넌트이며, Cinit 는 초기 상수이다. 전방 페이싱 프리미티브에 대해, 테스트 포인트 (X, Y) 는: R > 0인 경우 소정 라인의 내부에, R < 0 인 경우 그 라인의 외부에, 그리고 R = 0 인 경우 그 라인 상에 있을 수도 있다. 부가적으로, X 방향 및 Y 방향으로, 각각 스케일링 팩터들 ScaleX 및 ScaleY 를 갖는 다운스케일링된 렌더링 (R') 에서의 제 2 래스터라이저 방정식은 다음과 같을 수도 있다: R’ = Ea’*X’ + Eb’*Y’ + Cinit’, 식중 Ea’ = Ea/ScaleY, Eb’ = Eb/ScaleX, 및, Cinit’ = Cinit/(ScaleX*ScaleY). 위의 방정식들에 기초하여, R’*ScaleX*ScaleY = (Ea*ScaleX)*X’ + (Eb*ScaleY)*Y’ + Cinit. 일부 경우들에서, ScaleX 및 ScaleY 가 포지티브인 경우, 상기 방정식의 부호는 에지 테스트를 수행하기에 충분할 수도 있다. 이와 같이, 다운스케일링된 렌더링 (R’’) 에서의 프리미티브들의 에지들에 대응하는 제 3 래스터라이저 방정식은 다음과 같을 수도 있다: R’’ = Ea”*X’ + Eb”*Y’ + Cinit, 식중 Ea” = Ea*ScaleX 이고 Eb” = Eb*ScaleY 이다.
본 개시의 양태들은 다운스케일링된 렌더링에서 프리미티브들의 에지들에 대한 샘플의 에지 테스팅에서, 위에 언급된 에지 방정식들, 예를 들어, 제 3 래스터라이저 방정식 (R") 을 활용할 수도 있다. 본 개시의 양태들의 위에 언급된 방정식들은 다수의 이익들 또는 이점들을 포함할 수도 있다. 예를 들어, 위에 언급된 에지 방정식들은 컬링 알고리즘들을 온전하게 유지함으로써 포비티드-비닝된 렌더링을 위한 빠르고 강력한 전략을 허용할 수도 있다. 보다 구체적으로, 이들 에지 방정식들은 컬링 알고리즘들을 인에이블되게 유지함으로써 GPU 성능을 방해하지 않을 수도 있는 강력한 포비에이션 전략을 허용할 수도 있다. 이들 에지 방정식들은 또한 아티팩트가 없고, 강력하고 빠른 비닝된 포비에이션 전략을 허용할 수도 있다. 또한, 이들 에지 방정식들은, 제안된 전략이 컬링 알고리즘을 인에이블되게 유지하는데 도움이 될 수도 있기 때문에, 본 개시의 양태들이 GPU 성능을 손상시키지 않도록 할 수도 있다.
도 9 는 본 개시의 하나 이상의 기법들에 따른 그래픽스 프로세싱의 통신 플로우 다이어그램 (900) 이다. 도 9 에 나타낸 바와 같이, 다이어그램 (900) 은 본 개시의 하나 이상의 기법들에 따른, GPU 파이프라인 (902)(예를 들어, GPU 파이프라인에서의 컴포넌트), GPU 컴포넌트 (904)(예를 들어, GPU 파이프라인에서의 다른 컴포넌트), 및 디스플레이 또는 버퍼 (906) 사이의 예시의 통신들을 포함한다.
910 에서, GPU 파이프라인 (902) 은 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들, 예를 들어 프리미티브들 (912) 을 수신할 수도 있으며, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관된다. 복수의 프리미티브들은 그래픽스 프로세싱 유닛 (GPU) 파이프라인 외부의 적어도 하나의 애플리케이션 또는 GPU 파이프라인 외부의 적어도 하나의 게임으로부터 수신될 수도 있다.
920 에서, GPU 파이프라인 (902) 은, 그래픽스 프로세싱 유닛 (GPU) 드라이버로부터, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신할 수도 있다. 일부 양태들에서, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나는 스케일링 팩터에 대응할 수도 있다.
930 에서, GPU 파이프라인 (902) 은 복수의 프리미티브들에 대한 비닝 패스를 수행할 수도 있으며, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 일부 경우들에서, 비닝 패스는 복수의 프리미티브들의 각각을, 각각의 프리미티브가 스케일링되지 않은 샘플 공간을 사용하여 나타나는 하나 이상의 빈들에 할당할 수도 있다.
940 에서, GPU 파이프라인 (902) 은 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행할 수도 있으며, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함한다. 하나 이상의 렌더링 패스는 포비티드 렌더링 프로세스와 연관될 수도 있다.
일부 양태들에서, 복수의 프리미티브들의 각각에 대한 뷰포트 변환은 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관될 수도 있다. 또한, 뷰포트 변환은 스케일링되지 않는 뷰포트 변환의 뷰포트 스케일 또는 적어도 하나의 오프셋 파라미터 중 적어도 하나와 연관될 수도 있다. 뷰포트 변환은 또한 스케일링되지 않은 샘플 공간에서의 복수의 프리미티브들 모두에 대한 다중 기하학적 파라미터들의 각각을 유지하는 것과 연관될 수도 있다.
950 에서, GPU 파이프라인 (902) 은 복수의 프리미티브들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행한 후 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행할 수도 있다.
960 에서, GPU 파이프라인 (902) 은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화할 수도 있다. 일부 경우들에서, GPU들은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산할 수도 있다. 예를 들어, 복수의 프리미티브들 각각을 래스터화하는 것은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산하는 것을 더 포함할 수도 있다. 또한, 본 명세서에서 GPU들은 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정할 수도 있다. 예를 들어, 복수의 프리미티브들 각각의 커버리지를 계산하는 것은 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정하는 것을 더 포함할 수도 있다.
970 에서, GPU 파이프라인 (902) 은 복수의 프리미티브들의 각각의 래스터화에 기초하여 복수의 프리미티브들의 각각을 렌더링할 수도 있다.
980 에서, GPU 파이프라인 (902) 은 복수의 프리미티브들의 각각을 렌더링한 후에, 렌더링된 복수의 프리미티브들, 예를 들어, 프리미티브들 (982) 을 송신할 수도 있다. 렌더링된 복수의 프리미티브들은 디스플레이 또는 메모리 버퍼 중 적어도 하나로 송신될 수도 있다.
도 10 은 본 개시의 하나 이상의 기법들에 따른 예시의 그래픽스 프로세싱의 방법의 플로우챠트 (1000) 이다. 방법은 GPU, 예컨대 그래픽스 프로세싱을 위한 장치, 다른 그래픽스 프로세서, GPU 파이프라인, 무선 통신 디바이스, 및/또는 도 1 내지 도 9 의 예들과 관련하여 사용된 바와 같은 그래픽스 프로세싱을 수행할 수 있는 임의의 장치에 의해 수행될 수도 있다.
1002 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신할 수도 있으며, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관된다. 예를 들어, 도 9 의 910 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신할 수도 있으며, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관된다. 또한, 단계 (1002) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 복수의 프리미티브들은 그래픽스 프로세싱 유닛 (GPU) 파이프라인 외부의 적어도 하나의 애플리케이션 또는 GPU 파이프라인 외부의 적어도 하나의 게임으로부터 수신될 수도 있다.
1006 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 복수의 프리미티브들에 대한 비닝 패스를 수행할 수도 있으며, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 예를 들어, 도 9 의 930 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 복수의 프리미티브들에 대한 비닝 패스를 수행할 수도 있으며, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 또한, 단계 (1006) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 일부 경우들에서, 비닝 패스는 복수의 프리미티브들의 각각을, 각각의 프리미티브가 스케일링되지 않은 샘플 공간을 사용하여 나타나는 하나 이상의 빈들에 할당할 수도 있다.
1008 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행할 수도 있으며, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함한다. 예를 들어, 도 9 의 940 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행할 수도 있으며, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함한다. 또한, 단계 (1008) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 하나 이상의 렌더링 패스는 포비티드 렌더링 프로세스와 연관될 수도 있다.
일부 양태들에서, 복수의 프리미티브들의 각각에 대한 뷰포트 변환은 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관될 수도 있다. 또한, 뷰포트 변환은 스케일링되지 않는 뷰포트 변환의 뷰포트 스케일 또는 적어도 하나의 오프셋 파라미터 중 적어도 하나와 연관될 수도 있다. 뷰포트 변환은 또한 스케일링되지 않은 샘플 공간에서의 복수의 프리미티브들 모두에 대한 다중 기하학적 파라미터들의 각각을 유지하는 것과 연관될 수도 있다.
1012 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화할 수도 있다. 예를 들어, 도 9 의 960 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화할 수도 있다. 또한, 단계 (1012) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 일부 경우들에서, GPU들은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산할 수도 있다. 예를 들어, 복수의 프리미티브들 각각을 래스터화하는 것은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산하는 것을 더 포함할 수도 있다. 또한, 본 명세서에서 GPU들은 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정할 수도 있다. 예를 들어, 복수의 프리미티브들 각각의 커버리지를 계산하는 것은 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정하는 것을 더 포함할 수도 있다.
도 11 는 본 개시의 하나 이상의 기법들에 따른 예시의 그래픽스 프로세싱의 방법의 플로우챠트 (1100) 이다. 방법은 GPU, 예컨대 그래픽스 프로세싱을 위한 장치, 다른 그래픽스 프로세서, GPU 파이프라인, 무선 통신 디바이스, 및/또는 도 1 내지 도 9 의 예들과 관련하여 사용된 바와 같은 그래픽스 프로세싱을 수행할 수 있는 임의의 장치에 의해 수행될 수도 있다.
1102 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신할 수도 있으며, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관된다. 예를 들어, 도 9 의 910 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신할 수도 있으며, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관된다. 또한, 단계 (1102) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 복수의 프리미티브들은 그래픽스 프로세싱 유닛 (GPU) 파이프라인 외부의 적어도 하나의 애플리케이션 또는 GPU 파이프라인 외부의 적어도 하나의 게임으로부터 수신될 수도 있다.
1104 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, GPU 드라이버로부터, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신할 수도 있다. 예를 들어, 도 9 의 920 에서 설명된 바와 같이, GPU 파이프라인 (902) 은, GPU 드라이버로부터, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신할 수도 있다. 또한, 단계 (1104) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 일부 양태들에서, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나는 스케일링 팩터에 대응할 수도 있다.
1106 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 복수의 프리미티브들에 대한 비닝 패스를 수행할 수도 있으며, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 예를 들어, 도 9 의 930 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 복수의 프리미티브들에 대한 비닝 패스를 수행할 수도 있으며, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅한다. 또한, 단계 (1106) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 일부 경우들에서, 비닝 패스는 복수의 프리미티브들의 각각을, 각각의 프리미티브가 스케일링되지 않은 샘플 공간을 사용하여 나타나는 하나 이상의 빈들에 할당할 수도 있다.
1108 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행할 수도 있으며, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함한다. 예를 들어, 도 9 의 940 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행할 수도 있으며, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함한다. 또한, 단계 (1108) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 하나 이상의 렌더링 패스는 포비티드 렌더링 프로세스와 연관될 수도 있다.
일부 양태들에서, 복수의 프리미티브들의 각각에 대한 뷰포트 변환은 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관될 수도 있다. 또한, 뷰포트 변환은 스케일링되지 않는 뷰포트 변환의 뷰포트 스케일 또는 적어도 하나의 오프셋 파라미터 중 적어도 하나와 연관될 수도 있다. 뷰포트 변환은 또한 스케일링되지 않은 샘플 공간에서의 복수의 프리미티브들 모두에 대한 다중 기하학적 파라미터들의 각각을 유지하는 것과 연관될 수도 있다.
1110 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 복수의 프리미티브들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행한 후 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행할 수도 있다. 예를 들어, 도 9 의 950 에서 설명된 바와 같이, GPU 파이프라인 (902) 은 복수의 프리미티브들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행한 후 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행할 수도 있다. 또한, 단계 (1110) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다.
1112 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화할 수도 있다. 예를 들어, 도 9 의 960 에서 설명딘 바와 같이, GPU 파이프라인 (902) 은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화할 수도 있다. 또한, 단계 (1112) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 일부 경우들에서, 1112a 에서, GPU 는 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산할 수도 있다. 예를 들어, 복수의 프리미티브들 각각을 래스터화하는 것은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산하는 것을 더 포함할 수도 있다. 또한, 1112b 에서, GPU 는 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정할 수도 있다. 예를 들어, 복수의 프리미티브들 각각의 커버리지를 계산하는 것은 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정하는 것을 더 포함할 수도 있다.
1114 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 복수의 프리미티브들의 각각의 래스터화에 기초하여 복수의 프리미티브들의 각각을 렌더링할 수도 있다. 예를 들어, 도 9 의 970 에 설명된 바와 같이, GPU 파이프라인 (902) 은 복수의 프리미티브들의 각각의 래스터화에 기초하여 복수의 프리미티브들의 각각을 렌더링할 수도 있다. 또한, 단계 (1114) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다.
1116 에서, GPU 는 도 1 내지 도 9 의 예들과 관련하여 설명된 바와 같이, 복수의 프리미티브들의 각각을 렌더링한 후 렌더링된 복수의 프리미티브들을 송신할 수도 있다. 예를 들어, 도 9 의 980 에 설명된 바와 같이, GPU 파이프라인 (902) 은 복수의 프리미티브들의 각각을 렌더링한 후 렌더링된 복수의 프리미티브들을 송신할 수도 있다. 또한, 단계 (1116) 는 도 1 의 프로세싱 유닛 (120) 에 의해 수행될 수도 있다. 렌더링된 복수의 프리미티브들은 디스플레이 또는 메모리 버퍼 중 적어도 하나로 송신될 수도 있다.
구성들에서, 그래픽스 프로세싱을 위한 방법 또는 장치가 제공된다. 장치는 GPU, 그래픽스 프로세서, 또는 그래픽스 프로세싱을 수행할 수도 있는 일부 다른 프로세서일 수도 있다. 양태들에서, 장치는 디바이스 (104) 내의 프로세싱 유닛 (120) 일 수도 있거나, 또는 디바이스 (104) 또는 다른 디바이스 내의 일부 다른 하드웨어일 수도 있다. 장치, 예를 들어, 프로세싱 유닛 (120) 은, 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신하는 수단으로서, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관되는, 상기 복수의 프리미티브들을 수신하는 수단; 복수의 프리미티브들에 대한 비닝 패스를 수행하는 수단으로서, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅하는, 상기 비닝 패스를 수행하는 수단; 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행하는 수단으로서, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함하는, 상기 하나 이상의 렌더링 패스들 중 하나를 수행하는 수단; 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화하는 수단; 복수의 프리미티브들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행한 후에 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행하는 수단; 그래픽스 프로세싱 유닛 (GPU) 드라이버로부터, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신하는 수단; 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산하는 수단; 복수의 프리미티브들 각각에 대한 하나 이상의 에지 계수들을 수정하는 수단; 복수의 프리미티브들의 각각의 래스터화에 기초하여 복수의 프리미티브들의 각각을 렌더링하는 수단; 및 복수의 프리미티브들의 각각을 렌더링한 후에 렌더링된 복수의 프리미티브들을 송신하는 수단을 포함한다.
본 명세서에 설명된 청구물은 하나 이상의 이익들 또는 이점들을 실현하도록 구현될 수도 있다. 예를 들어, 설명된 그래픽스 프로세싱 기법들은 GPU, 그래픽스 프로세서, 또는 본 명세서에 설명된 비닝 및 렌더링 기법들을 구현하기 위해 그래픽스 프로세싱을 수행할 수도 있는 일부 다른 프로세서에 의해 사용될 수도 있다. 이는 또한 다른 그래픽스 프로세싱 기법들과 비교하여 낮은 비용으로 달성될 수도 있다. 더욱이, 본 명세서의 그래픽스 프로세싱 기법들은 데이터 프로세싱 또는 실행을 개선하거나 속도를 높일 수도 있다. 또한, 본 명세서의 그래픽스 프로세싱 기법들은 리소스 또는 데이터 활용 및/또는 리소스 효율성을 개선할 수도 있다. 또한, 본 개시의 양태들은 메모리 대역폭 효율을 개선하고 및/또는 GPU에서의 프로세싱 속도를 증가시키기 위해서 스케일링되지 않은 비닝 및 렌더링 기법들을 활용할 수도 있다.
개시된 프로세스들/플로우차트들에서 블록들의 특정 순서 또는 계위는 예시의 접근법들의 예시임이 이해된다. 설계 선호도들에 기초하여, 프로세스들/플로우차트들에 있어서의 블록들의 특정 순서 또는 계위가 재배열될 수도 있음이 이해된다. 추가로, 일부 블록들은 결합되거나 생략될 수도 있다. 첨부한 방법 청구항들은 다양한 블록들의 엘리먼트들을 샘플 순서로 제시하며, 제시된 특정 순서 또는 계위로 한정되도록 의도되지 않는다.
상기 설명은 당업자로 하여금 본 명세서에서 설명된 다양한 양태들을 실시할 수 있게 하도록 제공된다. 이 양태들에 대한 다양한 수정들은 당해 분야의 당업자들에게 용이하게 명백할 것이고, 본원에서 정의된 일반적인 원리들은 다른 양태들에 적용될 수도 있다. 따라서, 청구항들은 본 명세서에서 설명된 양태들로 한정되도록 의도되지 않지만, 청구항들의 언어와 부합하는 충분한 범위를 부여받아야 하며, 여기서, 단수로의 엘리먼트들에 대한 언급은 구체적으로 그렇게 언급되지 않는한, "하나 및 단지 하나만" 을 의미하도록 의도되지 않고 오히려 "하나 이상" 을 의미하도록 의도된다. 단어 "예시적인" 은 본 명세서에서 "예, 실례, 또는 예시의 역할을 하는 것" 을 의미하도록 사용된다.  "예시적인" 것으로서 본 명세서에서 설명된 임의의 양태는 다른 양태들에 비해 반드시 선호되거나 유리한 것으로서 해석될 필요는 없다.
달리 구체적으로 언급되지 않는 한, 용어 "일부" 는 하나 이상을 지칭하고, 용어 "또는" 은 문맥이 달리 지시하지 않는 경우 "및/또는"으 로 해석될 수도 있다. "A, B, 또는 C 중 적어도 하나", "A, B, 또는 C 중 하나 이상", "A, B, 및 C 중 적어도 하나", "A, B, 및 C 중 하나 이상", 및 "A, B, C 또는 이들의 임의의 조합" 과 같은 조합들은 A, B, 및/또는 C 의 임의의 조합을 포함하고, A 의 배수들, B 의 배수들, 또는 C 의 배수들을 포함할 수도 있다. 구체적으로, "A, B, 또는 C 중 적어도 하나", "A, B, 또는 C 중 하나 이상", "A, B, 및 C 중 적어도 하나", "A, B, 및 C 중 하나 이상", 및 "A, B, C 또는 이들의 임의의 조합" 과 같은 조합들은 A만, B만, C만, A 및 B, A 및 C, B 및 C, 또는 A 와 B 와 C 일 수도 있으며 여기서, 임의의 그러한 조합들은 A, B, 또는 C 의 하나 이상의 멤버 또는 멤버들을 포함할 수도 있다. 당업자에게 알려지거나 나중에 알려지게 될 본 개시 전반에 걸쳐 설명된 다양한 양태들의 엘리먼트들에 대한 모든 구조적 및 기능적 균등물들은 본 명세서에 참조로 명백히 통합되며 청구항들에 의해 포괄되도록 의도된다. 또한, 본원에 개시된 어느 것도 그러한 개시가 명시적으로 청구항들에 인용되는지 여부에 관계없이 공중에 전용되는 것으로 의도되지 않는다. "모듈", "메커니즘", "엘리먼트", "디바이스"등의 단어는 "수단" 이라는 단어의 대체물이 아닐 수도 있다. 이와 같이, 어떠한 청구항 엘리먼트도, 그 엘리먼트가 문구 "~하기 위한 수단" 을 사용하여 명백하게 인용되지 않는 한 수단 플러스 기능으로서 해석되지 않아야 한다.
하나 이상의 예에서, 본 명세서에 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 예를 들어, 용어 "프로세싱 유닛"이 본 개시 전체에 걸쳐 사용되었지만, 그러한 프로세싱 유닛은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 본 명세서에 설명된 임의의 기능, 프로세싱 유닛, 본 명세서에 설명된 기법 또는 다른 모듈이 소프트웨어로 구현되는 경우, 기능, 프로세싱 유닛, 본 명세서에 설명된 기법 또는 다른 모듈은 컴퓨터 판독가능 매체 상에 하나 이상의 명령 또는 코드로서 저장되거나 이를 통해 전송될 수도 있다.
본 개시에 따라, 용어 "또는" 은 문맥이 달리 지시하지 않는 경우 "및/또는" 으로 해석될 수도 있다. 또한, "하나 이상" 또는 "적어도 하나" 등과 같은 구절들이 본 명세서에 개시된 일부 특징에 대해 사용되었을 수도 있지만, 이러한 언어가 사용되지 않은 특징들은 문맥이 달리 지시하지 않는 경우 암시되는 그러한 의미를 갖는 것으로 해석될 수도 있다.
하나 이상의 예에서, 본 명세서에 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 예를 들어, 용어 "프로세싱 유닛"이 본 개시 전체에 걸쳐 사용되었지만, 그러한 프로세싱 유닛은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 본 명세서에 설명된 임의의 기능, 프로세싱 유닛, 본 명세서에 설명된 기법 또는 다른 모듈이 소프트웨어로 구현되는 경우, 기능, 프로세싱 유닛, 본 명세서에 설명된 기법 또는 다른 모듈은 컴퓨터 판독가능 매체 상에 하나 이상의 명령 또는 코드로서 저장되거나 이를 통해 전송될 수도 있다. 컴퓨터 판독가능 매체들은 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 또는 컴퓨터 데이터 저장 매체들을 포함할 수도 있다.  이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시에서 설명된 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다.  제한이 아닌 예시로, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스들을 포함할 수도 있다.  여기에 사용된 바와 같이, 디스크 (disk) 및 디스크 (disc) 는 콤팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광 디스크 (optical disc), DVD (digital versatile disc), 플로피 디스크 (floppy disk) 및 블루레이 디스크 (Blu-ray disc) 를 포함하며, 여기서, 디스크 (disk) 는 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 는 레이저를 이용하여 광학적으로 데이터를 재생한다. 상기의 조합들이 또한, 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
코드는 하나 이상의 프로세서, 예컨대 하나 이상의 디지털 신호 프로세서 (DSP), 범용 마이크로프로세서, 주문형 집적 회로 (ASIC), 산술 로직 유닛 (ALU), 필드 프로그램가능 로직 어레이 (FPGA), 또는 다른 등가의 집적 또는 이산 로직 회로부에 의해 실행될 수도 있다. 따라서, 본 명세서에 사용된 용어 "프로세서" 는 전술한 구조 중 임의의 것 또는 본 명세서에 설명된 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 또한, 그 기법들은 하나 이상의 회로 또는 로직 엘리먼트에서 완전히 구현될 수 있다.
본 개시의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩 세트) 를 포함하여, 광범위하게 다양한 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들 또는 유닛들이, 개시된 기술들을 수행하도록 구성된 디바이스들의 기능적인 양태들을 강조하기 위하여 본 개시에 설명되었지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 오히려, 상술한 바와 같이, 다양한 유닛들이 임의의 하드웨어 유닛에 결합될 수도 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 상술한 하나 이상의 프로세서를 포함하는 상호동작 하드웨어 유닛들의 집합에 의해 제공될 수도 있다. 따라서, 본 명세서에 사용된 용어 "프로세서" 는 전술한 구조 중 임의의 것 또는 본 명세서에 설명된 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트에서 완전히 구현될 수도 있다.
다음의 양태들은 예시적일 뿐이며 본 명세서에 설명된 다른 양태들 또는 교시들과 제한 없이 조합될 수도 있다.
양태 1 은 그래픽스 프로세싱을 위한 장치이며, 장치는 메모리에 커플링된 적어도 하나의 프로세서를 포함하고, 적어도 하나의 프로세서는, 장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신하는 것으로서, 장면의 일부는 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관되는, 상기 복수의 프리미티브들을 수신하고; 복수의 프리미티브들에 대한 비닝 패스를 수행하는 것으로서, 비닝 패스는 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 비닝 패스는 복수의 프리미티브들의 각각을 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅하는, 상기 비닝 패스를 수행하고; 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행하는 것으로서, 하나 이상의 렌더링 패스들의 각각은 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 하나 이상의 렌더링 패스들의 각각은 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함하는, 상기 하나 이상의 렌더링 패스들 중 하나를 수행하고; 그리고 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 복수의 프리미티브들의 각각을 래스터화하도록 구성된다.
양태 2 는 양태 1 의 장치이며, 여기서 복수의 프리미티브들의 각각에 대한 뷰포트 변환은 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관된다.
양태 3 은 양태들 1 및 2 중 임의의 것의 장치이며, 여기서 뷰포트 변환은 스케일링되지 않는 뷰포트 변환의 적어도 하나의 오프셋 파라미터 또는 뷰포트 스케일 중 적어도 하나와 연관된다.
양태 4 는 양태들 1 내지 3 중 임의의 것의 장치이며, 여기서 뷰포트 변환은 스케일링되지 않은 샘플 공간에서의 복수의 프리미티브들 모두에 대한 다중 기하학적 파라미터들의 각각을 유지하는 것과 연관된다.
양태 5 는 양태들 1 내지 4 중 임의의 것의 장치이며, 여기서 비닝 패스는 복수의 프리미티브들의 각각을, 각각의 프리미티브가 스케일링되지 않은 샘플 공간을 사용하여 나타나는 하나 이상의 빈들에 할당한다.
양태 6 은 양태들 1 내지 5 중 임의의 것의 장치이며, 여기서 적어도 하나의 프로세서는 추가로, 복수의 프리미티브들의 각각에 대한 하나 이상의 렌더링 패스들 중 하나를 수행한 후 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행하도록 구성된다.
양태 7 은 양태들 1 내지 6 중 임의의 것의 장치이며, 여기서 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나는 스케일링 팩터에 대응한다.
양태 8 은 양태들 1 내지 7 중 임의의 것의 장치이며, 여기서 적어도 하나의 프로세서는 추가로, 그래픽스 프로세싱 유닛 (GPU) 드라이버로부터, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신하도록 구성된다.
양태 9 는 양태들 1 내지 8 중 임의의 것의 장치이며, 여기서 복수의 프리미티브들의 각각을 래스터화하기 위해, 적어도 하나의 프로세서는 추가로, 업스케일링된 샘플 공간 또는 다운스케일링된 샘플 공간 중 적어도 하나에서 복수의 프리미티브들의 각각의 커버리지를 계산하도록 구성된다.
양태 10 은 양태들 1 내지 9 중 임의의 것의 장치이며, 여기서 복수의 프리미티브들의 각각의 커버리지를 계산하기 위해, 적어도 하나의 프로세서는 추가로, 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정하도록 구성된다.
양태 11 은 양태들 1 내지 10 중 임의의 것의 장치이며, 여기서 적어도 하나의 프로세서는 추가로, 복수의 프리미티브들의 각각의 래스터화에 기초하여 복수의 프리미티브들의 각각을 렌더링하도록 구성된다.
양태 12 는 양태들 1 내지 11 중 임의의 것의 장치이며, 여기서 적어도 하나의 프로세서는 추가로, 복수의 프리미티브들의 각각을 렌더링한 후 렌더링된 복수의 프리미티브들을 송신하도록 구성된다.
양태 13 은 양태들 1 내지 12 중 임의의 것의 장치이며, 여기서 렌더링된 복수의 프리미티브들은 디스플레이 또는 메모리 버퍼 중 적어도 하나로 송신된다.
양태 14 는 양태들 1 내지 13 중 임의의 것의 장치이며, 여기서 하나 이상의 렌더링 패스들은 포비티드 렌더링 프로세스와 연관된다.
양태 15 는 양태들 1 내지 14 중 임의의 것의 장치이며, 여기서 복수의 프리미티브들은 그래픽스 프로세싱 유닛 (GPU) 파이프라인 외부의 적어도 하나의 애플리케이션 또는 GPU 파이프라인 외부의 적어도 하나의 게임으로부터 수신된다.
양태 16 은 양태들 1 내지 15 중 임의의 것의 장치이며, 이는 적어도 하나의 프로세서에 커플링된 안테나 또는 트랜시버 중 적어도 하나를 더 포함한다.
양태 17 은 양태들 1 내지 16 중 임의의 것을 구현하기 위한 그래픽스 프로세싱의 방법이다.
양태 18 은 양태들 1 내지 16 중 임의의 것을 구현하기 위한 수단을 포함하는 그래픽스 프로세싱을 위한 장치이다.
양태 19 는 컴퓨터 실행가능 코드를 저장하는 컴퓨터 판독가능 매체이며, 코드는 프로세서에 의해 실행될 때 적어도 하나의 프로세서로 하여금 양태들 1 내지 양태 16 중 임의의 것을 구현하게 한다.

Claims (32)

  1. 그래픽스 프로세싱을 위한 장치로서,
    메모리; 및
    상기 메모리에 커플링된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는,
    장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신하는 것으로서, 상기 장면의 일부는 상기 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 상기 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관되는, 상기 복수의 프리미티브들을 수신하고;
    상기 복수의 프리미티브들에 대한 비닝 패스를 수행하는 것으로서, 상기 비닝 패스는 상기 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 상기 비닝 패스는 상기 복수의 프리미티브들의 각각을 상기 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅하는, 상기 비닝 패스를 수행하고;
    상기 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행하는 것으로서, 상기 하나 이상의 렌더링 패스들의 각각은 상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 상기 하나 이상의 렌더링 패스들의 각각은 상기 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함하는, 상기 하나 이상의 렌더링 패스들 중 하나를 수행하고; 그리고
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 상기 복수의 프리미티브들의 각각을 래스터화하도록 구성되는, 그래픽스 프로세싱을 위한 장치.
  2. 제 1 항에 있어서,
    상기 복수의 프리미티브들의 각각에 대한 뷰포트 변환은 상기 복수의 프리미티브들에 대한 상기 스케일링되지 않은 샘플 공간과 연관되는, 그래픽스 프로세싱을 위한 장치.
  3. 제 2 항에 있어서,
    상기 뷰포트 변환은 스케일링되지 않는 상기 뷰포트 변환의 적어도 하나의 오프셋 파라미터 또는 뷰포트 스케일 중 적어도 하나와 연관되는, 그래픽스 프로세싱을 위한 장치.
  4. 제 2 항에 있어서,
    상기 뷰포트 변환은 상기 스케일링되지 않은 샘플 공간에서의 상기 복수의 프리미티브들 모두에 대한 다중 기하학적 파라미터들의 각각을 유지하는 것과 연관되는, 그래픽스 프로세싱을 위한 장치.
  5. 제 1 항에 있어서,
    상기 비닝 패스는 상기 복수의 프리미티브들의 각각을, 각각의 프리미티브가 상기 스케일링되지 않은 샘플 공간을 사용하여 나타나는 상기 하나 이상의 빈들에 할당하는, 그래픽스 프로세싱을 위한 장치.
  6. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는 추가로,
    상기 복수의 프리미티브들의 각각에 대해 상기 하나 이상의 렌더링 패스들 중 하나를 수행한 후 상기 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행하도록 구성되는, 그래픽스 프로세싱을 위한 장치.
  7. 제 1 항에 있어서,
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나는 스케일링 팩터에 대응하는, 그래픽스 프로세싱을 위한 장치.
  8. 제 7 항에 있어서,
    상기 적어도 하나의 프로세서는 추가로,
    그래픽스 프로세싱 유닛 (GPU) 드라이버로부터, 상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신하도록 구성되는, 그래픽스 프로세싱을 위한 장치.
  9. 제 1 항에 있어서,
    상기 복수의 프리미티브들의 각각을 래스터화하기 위해, 상기 적어도 하나의 프로세서는 추가로,
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에서 상기 복수의 프리미티브들의 각각의 커버리지를 계산하도록 구성되는, 그래픽스 프로세싱을 위한 장치.
  10. 제 9 항에 있어서,
    상기 복수의 프리미티브들의 각각의 커버리지를 계산하기 위해, 상기 적어도 하나의 프로세서는 추가로,
    상기 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정하도록 구성되는, 그래픽스 프로세싱을 위한 장치.
  11. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는 추가로,
    상기 복수의 프리미티브들의 각각의 래스터화에 기초하여 상기 복수의 프리미티브들의 각각을 렌더링하도록 구성되는, 그래픽스 프로세싱을 위한 장치.
  12. 제 11 항에 있어서,
    상기 적어도 하나의 프로세서는 추가로,
    상기 복수의 프리미티브들의 각각을 렌더링한 후 렌더링된 상기 복수의 프리미티브들을 송신하도록 구성되는, 그래픽스 프로세싱을 위한 장치.
  13. 제 12 항에 있어서,
    상기 렌더링된 복수의 프리미티브들은 디스플레이 또는 메모리 버퍼 중 적어도 하나로 송신되는, 그래픽스 프로세싱을 위한 장치.
  14. 제 1 항에 있어서,
    상기 하나 이상의 렌더링 패스들은 포비티드(foveated) 렌더링 프로세스와 연관되는, 그래픽스 프로세싱을 위한 장치.
  15. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서에 커플링된 안테나 또는 트랜시버 중 적어도 하나를 더 포함하고, 상기 복수의 프리미티브들은 그래픽스 프로세싱 유닛 (GPU) 파이프라인 외부의 적어도 하나의 애플리케이션 또는 상기 GPU 파이프라인 외부의 적어도 하나의 게임으로부터 수신되는, 그래픽스 프로세싱을 위한 장치.
  16. 그래픽스 프로세싱의 방법으로서,
    장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신하는 단계로서, 상기 장면의 일부는 상기 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 상기 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관되는, 상기 복수의 프리미티브들을 수신하는 단계;
    상기 복수의 프리미티브들에 대한 비닝 패스를 수행하는 단계로서, 상기 비닝 패스는 상기 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 상기 비닝 패스는 상기 복수의 프리미티브들의 각각을 상기 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅하는, 상기 비닝 패스를 수행하는 단계;
    상기 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행하는 단계로서, 상기 하나 이상의 렌더링 패스들의 각각은 상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 상기 하나 이상의 렌더링 패스들의 각각은 상기 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함하는, 상기 하나 이상의 렌더링 패스들 중 하나를 수행하는 단계; 및
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 상기 복수의 프리미티브들의 각각을 래스터화하는 단계를 포함하는, 그래픽스 프로세싱의 방법.
  17. 제 16 항에 있어서,
    상기 복수의 프리미티브들의 각각에 대한 뷰포트 변환은 상기 복수의 프리미티브들에 대한 상기 스케일링되지 않은 샘플 공간과 연관되는, 그래픽스 프로세싱의 방법.
  18. 제 17 항에 있어서,
    상기 뷰포트 변환은 스케일링되지 않는 상기 뷰포트 변환의 적어도 하나의 오프셋 파라미터 또는 뷰포트 스케일 중 적어도 하나와 연관되는, 그래픽스 프로세싱의 방법.
  19. 제 17 항에 있어서,
    상기 뷰포트 변환은 상기 스케일링되지 않은 샘플 공간에서의 상기 복수의 프리미티브들 모두에 대한 다중 기하학적 파라미터들의 각각을 유지하는 것과 연관되는, 그래픽스 프로세싱의 방법.
  20. 제 16 항에 있어서,
    상기 비닝 패스는 상기 복수의 프리미티브들의 각각을, 각각의 프리미티브가 상기 스케일링되지 않은 샘플 공간을 사용하여 나타나는 상기 하나 이상의 빈들에 할당하는, 그래픽스 프로세싱의 방법.
  21. 제 16 항에 있어서,
    상기 복수의 프리미티브들의 각각에 대해 상기 하나 이상의 렌더링 패스들 중 하나를 수행한 후 상기 복수의 프리미티브들의 각각에 대해 컬링 프로세스를 수행하는 단계를 더 포함하는, 그래픽스 프로세싱의 방법.
  22. 제 16 항에 있어서,
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나는 스케일링 팩터에 대응하는, 그래픽스 프로세싱의 방법.
  23. 제 22 항에 있어서,
    그래픽스 프로세싱 유닛 (GPU) 드라이버로부터, 상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에 대한 스케일링 팩터를 수신하는 단계를 더 포함하는, 그래픽스 프로세싱의 방법.
  24. 제 16 항에 있어서,
    상기 복수의 프리미티브들의 각각을 래스터화하는 단계는,
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에서 상기 복수의 프리미티브들의 각각의 커버리지를 계산하는 단계를 더 포함하는, 그래픽스 프로세싱의 방법.
  25. 제 24 항에 있어서,
    상기 복수의 프리미티브들의 각각의 커버리지를 계산하는 단계는,
    상기 복수의 프리미티브들의 각각에 대한 하나 이상의 에지 계수들을 수정하는 단계를 더 포함하는, 그래픽스 프로세싱의 방법.
  26. 제 16 항에 있어서,
    상기 복수의 프리미티브들의 각각의 래스터화에 기초하여 상기 복수의 프리미티브들의 각각을 렌더링하는 단계를 더 포함하는, 그래픽스 프로세싱의 방법.
  27. 제 26 항에 있어서,
    상기 복수의 프리미티브들의 각각을 렌더링한 후 렌더링된 상기 복수의 프리미티브들을 송신하는 단계를 더 포함하는, 그래픽스 프로세싱의 방법.
  28. 제 27 항에 있어서,
    상기 렌더링된 복수의 프리미티브들은 디스플레이 또는 메모리 버퍼 중 적어도 하나로 송신되는, 그래픽스 프로세싱의 방법.
  29. 제 16 항에 있어서,
    상기 하나 이상의 렌더링 패스들은 포비티드(foveated) 렌더링 프로세스와 연관되는, 그래픽스 프로세싱의 방법.
  30. 제 16 항에 있어서,
    상기 복수의 프리미티브들은 그래픽스 프로세싱 유닛 (GPU) 파이프라인 외부의 적어도 하나의 애플리케이션 또는 상기 GPU 파이프라인 외부의 적어도 하나의 게임으로부터 수신되는, 그래픽스 프로세싱의 방법.
  31. 그래픽스 프로세싱을 위한 장치로서,
    장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신하는 수단으로서, 상기 장면의 일부는 상기 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 상기 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관되는, 상기 복수의 프리미티브들을 수신하는 수단;
    상기 복수의 프리미티브들에 대한 비닝 패스를 수행하는 수단으로서, 상기 비닝 패스는 상기 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 상기 비닝 패스는 상기 복수의 프리미티브들의 각각을 상기 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅하는, 상기 비닝 패스를 수행하는 수단;
    상기 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행하는 수단으로서, 상기 하나 이상의 렌더링 패스들의 각각은 상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 상기 하나 이상의 렌더링 패스들의 각각은 상기 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함하는, 상기 하나 이상의 렌더링 패스들 중 하나를 수행하는 수단; 및
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 상기 복수의 프리미티브들의 각각을 래스터화하는 수단을 포함하는, 그래픽스 프로세싱을 위한 장치.
  32. 그래픽스 프로세싱을 위한 컴퓨터 실행가능 코드를 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 코드는 프로세서에 의해 실행될 때 상기 프로세서로 하여금:
    장면에서의 하나 이상의 프레임들과 연관된 복수의 프리미티브들을 수신하게 하는 것으로서, 상기 장면의 일부는 상기 복수의 프리미티브들에 대한 업스케일링된 샘플 공간 또는 상기 복수의 프리미티브들에 대한 다운스케일링된 샘플 공간 중 적어도 하나와 연관되는, 상기 복수의 프리미티브들을 수신하게 하고;
    상기 복수의 프리미티브들에 대한 비닝 패스를 수행하게 하는 것으로서, 상기 비닝 패스는 상기 복수의 프리미티브들에 대한 스케일링되지 않은 샘플 공간과 연관되고, 상기 비닝 패스는 상기 복수의 프리미티브들의 각각을 상기 하나 이상의 프레임들의 각각과 연관된 하나 이상의 빈들로 소팅하는, 상기 비닝 패스를 수행하게 하고;
    상기 하나 이상의 빈들의 각각에 대해 하나 이상의 렌더링 패스들 중 하나를 수행하게 하는 것으로서, 상기 하나 이상의 렌더링 패스들의 각각은 상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나와 연관되고, 상기 하나 이상의 렌더링 패스들의 각각은 상기 복수의 프리미티브들의 각각에 대한 뷰포트 변환을 포함하는, 상기 하나 이상의 렌더링 패스들 중 하나를 수행하게 하고; 그리고
    상기 업스케일링된 샘플 공간 또는 상기 다운스케일링된 샘플 공간 중 적어도 하나에 기초하여 상기 복수의 프리미티브들의 각각을 래스터화하게 하는, 컴퓨터 판독가능 저장 매체.
KR1020247008202A 2021-09-17 2022-08-19 샘플 공간들과 연관된 포비티드 비닝된 렌더링 KR20240042090A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/478,694 US11734787B2 (en) 2021-09-17 2021-09-17 Foveated binned rendering associated with sample spaces
US17/478,694 2021-09-17
PCT/US2022/040952 WO2023043573A1 (en) 2021-09-17 2022-08-19 Foveated binned rendering associated with sample spaces

Publications (1)

Publication Number Publication Date
KR20240042090A true KR20240042090A (ko) 2024-04-01

Family

ID=83228752

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247008202A KR20240042090A (ko) 2021-09-17 2022-08-19 샘플 공간들과 연관된 포비티드 비닝된 렌더링

Country Status (5)

Country Link
US (1) US11734787B2 (ko)
KR (1) KR20240042090A (ko)
CN (1) CN117980955A (ko)
TW (1) TW202316375A (ko)
WO (1) WO2023043573A1 (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0900700D0 (en) * 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
US9799088B2 (en) * 2014-08-21 2017-10-24 Qualcomm Incorporated Render target command reordering in graphics processing
GB2553744B (en) * 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
US10453241B2 (en) * 2017-04-01 2019-10-22 Intel Corporation Multi-resolution image plane rendering within an improved graphics processor microarchitecture
US10403032B2 (en) 2017-08-22 2019-09-03 Qualcomm Incorporated Rendering an image from computer graphics using two rendering computing devices
GB2573543B (en) * 2018-05-09 2021-10-27 Advanced Risc Mach Ltd Graphics Processing
US20200020067A1 (en) * 2018-07-13 2020-01-16 Qualcomm Incorporated Concurrent binning and rendering
EP3598391B1 (en) 2018-07-16 2023-09-06 Huawei Technologies Co., Ltd. Variable resolution rendering
US10867431B2 (en) * 2018-12-17 2020-12-15 Qualcomm Technologies, Inc. Methods and apparatus for improving subpixel visibility
US11792420B2 (en) 2019-11-04 2023-10-17 Qualcomm Incorporated Methods and apparatus for foveated compression

Also Published As

Publication number Publication date
CN117980955A (zh) 2024-05-03
US20230092394A1 (en) 2023-03-23
WO2023043573A1 (en) 2023-03-23
TW202316375A (zh) 2023-04-16
US11734787B2 (en) 2023-08-22

Similar Documents

Publication Publication Date Title
KR102614847B1 (ko) 그래픽스 프로세싱 유닛 하이브리드 렌더링을 위한 장치 및 방법
US11037358B1 (en) Methods and apparatus for reducing memory bandwidth in multi-pass tessellation
US11631212B2 (en) Methods and apparatus for efficient multi-view rasterization
KR102645239B1 (ko) Gpu 캐시를 활용한 다운스케일링을 위한 simo 접근 방식으로의 gpu 커널 최적화
KR20230168281A (ko) 포비티드 렌더링에서의 콘텐츠 시프팅
EP4242972A2 (en) Methods and apparatus for edge compression anti-aliasing
US11734787B2 (en) Foveated binned rendering associated with sample spaces
WO2024055221A1 (en) Fast msaa techniques for graphics processing
KR102634506B1 (ko) Gpu 하드웨어 기반 심도 버퍼 방향 추적
US11380047B2 (en) Methods and apparatus for order-independent occlusion computations
US11615537B2 (en) Methods and apparatus for motion estimation based on region discontinuity
US11373267B2 (en) Methods and apparatus for reducing the transfer of rendering information
KR20230088352A (ko) 확장된 비닝을 위한 구성가능한 에이프런 지원
KR20230160247A (ko) 세일리언시 기반 프레임 컬러 향상을 위한 방법들 및 장치
KR20230149319A (ko) 프리미티브들의 배치들의 지오메트리 프로세싱을 위한 스케일러블 프리미티브 레이트 아키텍처
KR20240044504A (ko) 동적 가변 레이트 셰이딩