KR20220016776A - 메모리 시스템 효율적인 방식의 포스트-프로세싱 - Google Patents

메모리 시스템 효율적인 방식의 포스트-프로세싱 Download PDF

Info

Publication number
KR20220016776A
KR20220016776A KR1020210091470A KR20210091470A KR20220016776A KR 20220016776 A KR20220016776 A KR 20220016776A KR 1020210091470 A KR1020210091470 A KR 1020210091470A KR 20210091470 A KR20210091470 A KR 20210091470A KR 20220016776 A KR20220016776 A KR 20220016776A
Authority
KR
South Korea
Prior art keywords
post
processing
shader
controllers
tile
Prior art date
Application number
KR1020210091470A
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 KR20220016776A publication Critical patent/KR20220016776A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

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

Abstract

GPU는 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들 및 픽셀 셰이더 스테이지에 후속하는 포스트-프로세싱 셰이더 스테이지를 포함하는 3D 그래픽스 파이프라인을 포함한다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 포스트-프로세싱 셰이더 스테이지를 포함하는 하나 또는 그보다 많은 포스트-프로세싱 스테이지들의 실행을 동기화할 수 있다. 3D 파이프라인은 하나 또는 그보다 많은 픽셀 셰이더들, 하나 또는 그보다 많은 타일 버퍼들, 그리고 상기 포스트-프로세싱 셰이더 스테이지 및 상기 하나 또는 그보다 많은 타일 버퍼들 사이의 직접 통신 링크를 포함할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 및 상기 하나 또는 그보다 많은 타일 버퍼들 사이의 통신을 동기화할 수 있다.

Description

메모리 시스템 효율적인 방식의 포스트-프로세싱{POST-PROCESSING IN A MEMORY-SYSTEM EFFICIENT MANNER}
본 기재는 그래픽 프로세싱 유닛들(GPU들)에 관한 것으로, 더 상세하게는 GPU 내에서 메모리-시스템 효율적인 방식의 포스트-프로세싱에 관한 것이다.
타일 기반 지연 렌더링(TBDR)(Tile Based Deferred Rendering) GPU 구조들에서, 실질적인 대역폭 및 전력 절감은 온-칩 캐시에 완전히 들어맞는 작고 고정된 사이즈의 타일들에서 장면(scene)을 렌더링 함으로써 달성될 수 있다. 타일의 완료에서, 타일 버퍼의 콘텐츠는 다음 타일을 시작하기 위한 준비를 위해 메인 메모리에 기입될 수 있다. 또한, 일부 TBDR 구조들은 타일 버퍼 주변에 '가드-밴드(guard-band)'를 유지하며, 가드-밴드는 이웃 타일들로부터의 일부 행들 그리고/또는 열들의 조각들을 포함할 수 있으며, 이들은 때때로 '패딩(padding)'이라 불린다. 가드-밴드는 타일을 둘러싸는 추가적인 픽셀들의 하나 또는 그보다 많은 행들 그리고/또는 열들의 집합일 수 있으며, 과잉으로(redundantly) 계산될 수 있고, 따라서 타일들을 서로 독립적으로 처리하면서 콘볼루션과 같은 이웃 필터링 동작들이 타일의 경계에서 수행될 수 있게 한다. 여기에서 사용되는 '가드-밴드'의 용어는 클리핑(clipping)과 다를 수 있다.
즉시 모드 렌더링(IMR)(Immediate Mode Rendering) GPU 구조는 지오메트리(geometry)가 파이프라인에 제시(submit)되는 순서로 장면을 렌더링하며, 스루풋(throughput) 목표들에 도달하는데 타일 버퍼에 의존할 필요가 없다. IMR들은 성능을 향상시키고 그리고 에너지 소비를 줄이기 위해 시간적(temporal) 메모리 국부성(locality)으로부터 이득을 가질 수 있는 표준 계층 캐시 구조를 가질 수 있다. IMR과 반대로, TBDR 구조들은 대역폭 및 전력에서 큰 절감을 가질 수 있다. 그러나 TBDR 구조들에서, 실시간 3D 렌더링에서 사용될 수 있는 포스트-프로세싱(post-processing) 알고리즘은 종종 생략되거나 또는 감소된 품질로 실행될 수 있다. 타일들이 하드웨어에 의해 자동으로 메모리로 플러시 될 수 있으므로, 통상적인 3D 렌더링 파이프라인을 이용하는 타일 버퍼의 콘텐츠를 이용하는 동안, 포스트-프로세싱 효과를 수행하는 것은 불가능할 수 있다. 임의의 시도는 온-칩 타일 버퍼 캐시로부터 메모리로, 이후에 픽셀 셰이더에게 액세스 가능한 별도의 캐시로 되돌아가는 필요한 데이터의 왕복 여행을 유발할 수 있다. 이는 입력/출력(I/O) 동작들의 수를 증가시켜, GPU를 포함하는 모바일 장치의 배터리 수명을 줄일 수 있다.
하드웨어는 GPU의 캐시들 내에 데이터 상주를 유지할 수 없으므로, 포스트-프로세싱 효과들은 단순한 조각(fragment) 셰이더들 또는 컴퓨트(compute) 셰이더들을 사용하여, 감소된 효율을 갖는 포스트-프로세싱 알고리즘들을 실행할 수 있다. 일부 그래픽 API들은 서브패스들(subpasses)이라 불리는 구조(construct)를 갖는다. 서브패스들에서, 조각 위치는 이전 패스(pass)로부터 동일한 위치에 대해서만 데이터를 다시 읽을 수 있고, 이는 이웃 조각들을 사용하는 임의의 종류의 이미지 프로세싱 알고리즘과 같은 일부 알고리즘에 대해 덜 적절할 수 있다.
대안적인 수단들이 포스트-프로세싱과 유사한 효과들의 일부 정도를 달성하는데 사용될 수 있다. 예를 들어, 적용될 앰비언트 오클루전 텍스처 맵으로서, 앰비언트 오클루전(ambient occlusion)이 미리 계산될 수 있다. 그러나 이 시도의 이슈(issue)는 텍스처 맵이 지오메트리의 실시간 변화들을 반영하지 못할 수 있다는 것이다. 예를 들어, 게임 엔진(언리얼 엔진® 또는 다른 것들과 같은)은 빠른 근사 안티-앨리어싱(FXAA)(fast approximate anti-aliasing) 유닛으로 활성화될 수 있음에도, 모바일 빌드들(mobile builds) (랩톱 또는 더 큰 개인용 컴퓨터 GPU와 비교하여)에 대해 안티-앨리어싱을 생략할 수 있다. 포스트-프로세싱에 대한 이러한 대안들은 다양한 품질 제한들을 겪는다.
본 기재의 목적은 픽셀 셰이더 스테이지에 후속하는 포스트-프로세싱 셰이더 스테이지를 제공함으로써, 향상된 성능 및 감소된 에너지 소비를 갖는 그래픽스 프로세싱 유닛을 제공하는 데에 있다.
본 기재의 다양한 실시 예들은 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들을 포함하는 GPU를 포함한다. GPU는 픽셀 셰이더 스테이지에 후속하는 포스트-프로세싱 셰이더 스테이지를 포함하는 3D 그래픽스 파이프라인을 포함할 수 있으며, 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 포스트-프로세싱 셰이더 스테이지를 포함하는 하나 또는 그보다 많은 포스트-프로세싱 스테이지들의 실행을 동기화하도록 구성된다. GPU는 하나 또는 그보다 많은 포스트-프로세싱 셰이더들, 하나 또는 그보다 많은 타일 버퍼들, 그리고 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 및 하나 또는 그보다 많은 타일 버퍼들 사이의 직접 통신 링크를 포함할 수 있다. 일부 실시 예들에서, GPU는 IMR 구현에서 0개의 타일 버퍼들을 구비할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 및 하나 또는 그보다 많은 타일 버퍼들 사이의 통신을 동기화하도록 구성된다.
여기에 기재된 일부 실시 예들은 메모리-시스템 효율적인 방식으로 GPU에서 포스트-프로세싱을 수행하기 위한 방법을 포함한다. 방법은 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들이 픽셀 셰이더 스테이지에 후속하는 포스트-프로세싱 셰이더 스테이지를 포함하는 3차원(3D) 그래픽스 파이프라인에서 하나 또는 그보다 많은 포스트-프로세싱 스테이지들의 실행을 동기화하는 것을 포함할 수 있다. 방법은 직접 통신 링크가 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 및 하나 또는 그보다 많은 타일 버퍼들 사이에서 통신하는 것을 포함할 수 있다. 방법은 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들이 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 및 하나 또는 그보다 많은 타일 버퍼들 사이의 통신을 동기화하는 것을 포함할 수 있다.
본 기재의 실시 예들에 따르면, 픽셀 셰이더 스테이지에 후속하는 포스트-프로세싱 셰이더 스테이지를 구비한 3D 파이프라인을 포함하는 GPU가 제공된다. 포스트 프로세싱 스테이지들의 실행은 동기화된다. 따라서, 향상된 성능 및 감소된 에너지 소비를 갖는 그래픽스 프로세싱 유닛이 제공된다.
본 기재의 다음의 그리고 추가적은 특색들 및 장점들이 첨부의 도면들을 참조하여, 다음의 상세한 설명으로부터 더 명백해질 것이다.
도 1a는 일부 실시 예들에 따른 포스트-프로세싱 셰이더 스테이지를 구비한 3-차원(3D) 파이프라인을 포함하는 GPU의 블록도를 보여준다.
도 1b는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지를 구비한 3D 파이프라인을 포함하는 GPU를 보여준다.
도 1c는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지를 구비한 3D 파이프라인을 포함하는 GPU를 포함하는 모바일 개인용 컴퓨터를 보여준다.
도 1d는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지를 구비한 3D 파이프라인을 포함하는 GPU를 포함하는 태블릿 컴퓨터를 보여준다.
도 1e는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지를 구비한 3D 파이프라인을 포함하는 GPU를 포함하는 스마트폰을 보여준다.
도 2는 일부 실시 예들에 따른 GPU 내의 포스트-프로세싱과 연관된 방향성 비순환 그래프(DAG)를 보여주는 블록도이다.
도 3은 일부 실시 예들에 따른 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들을 포함하는 GPU의 다양한 구성 요소들을 보여주는 블록도이다.
도 4는 일부 실시 예들에 따른 메모리-시스템 효율적인 방식의 포스트-프로세싱을 제공하기 위한 기술을 보여주는 흐름도이다.
여기에 기재된 실시 예들에 대한 상와 그것의 예들이 첨부의 도면들에 도시된다. 다음의 상세한 설명에서, 다양한 구체적인 상세들이 제공되어, 본 기재의 철저한 이해를 가능하게 한다. 그러나, 이 분야에 통상의 기술을 가진 자들은 본 기재를 이러한 구체적인 상세들 없이도 실시할 수 있음이 이해되어야 한다. 다른 사례들에서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 양상들을 불필요하게 모호하게 하지 않도록 상세히 기술되지 않는다.
제1, 제2 등의 용어들이 여기에서 다양한 요소들을 기술하는데 사용되지만, 이러한 요소들은 이러한 용어들에 의해 한정되지 않음이 이해될 것이다. 이러한 용어들은 하나의 요소를 다른 하나의 요소로부터 구분하기 위해서만 사용된다. 예를 들어, 본 기재의 사상으로부터 멀어지지 않으면서, 제1 장치는 제2 장치로 명명될 수 있고, 유사하게 제2 장치는 제1 장치로 명명될 수 있다.
여기에서 본 기재의 설명에서 사용되는 용어들은 특정한 실시 예들만을 기술하는 목적을 위한 것이며, 본 기재의 한정을 의도하지 않는다. 본 기재의 상세한 설명 및 첨부의 청구항들에서 사용되는 바와 같이, 맥락상 명백히 다르게 지시되지 않으면, 단수 형태들은 복수 형태들 또한 포함함을 의도한다. 여기에서 사용되는 '그리고/또는'의 용어는 연관되어 나열된 항목들 중 하나 또는 그보다 많은 것들의 임의의 그리고 모든 가능한 조합들을 참조하고 포함한다. 이 명세서에서 사용될 때, '포함한다' 그리고/또는 '포함하는'의 용어들은 언급된 특색들, 정수들, 단계들, 동작들, 요소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특색들, 정수들, 단계들, 동작들, 요소들, 구성 요소들, 그리고/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특색들은 비율대로 그려질 필요는 없다.
여기에 기재된 일부 실시 예들은 포스트-프로세싱 셰이더 스테이지를 구비한 3D 파이프라인을 포함하는 GPU를 포함할 수 있다. 또한, 하드웨어 스케줄링 로직은 캐시 미스들을 줄이는 효율적인 데이터 액세스들을 보장할 수 있다. 따라서, 성능이 향상되고, 에너지 소비가 감소되며, 따라서 모바일 장치 내의 배터리의 수명이 확장된다.
도 1a는 일부 실시 예들에 따른 포스트-프로세싱 셰이더 스테이지를 구비한 3-차원(3D) 파이프라인(105)을 포함하는 GPU(100)의 블록도를 보여준다. GPU(100)는 메모리(160)를 포함할 수 있다. 도 1b는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지(140)를 구비한 3D 파이프라인(105)을 포함하는 GPU(100)를 보여준다. 도 1c는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지(140)를 구비한 3D 파이프라인(105)을 포함하는 GPU(100)를 포함하는 모바일 개인용 컴퓨터(180a)를 보여준다. 도 1d는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지(140)를 구비한 3D 파이프라인(105)을 포함하는 GPU(100)를 포함하는 태블릿 컴퓨터(180b)를 보여준다. 도 1e는 일부 실시 예들에 따른 도 1a의 포스트-프로세싱 셰이더 스테이지(140)를 구비한 3D 파이프라인(105)을 포함하는 GPU(100)를 포함하는 스마트 폰 (180c)을 보여준다. 이제 도 1a 내지 도 1e가 참조된다.
메모리(160)는 동적 랜덤 액세스 메모리(DRAM) 또는 이와 유사한 것과 같은 휘발성 메모리를 포함할 수 있다. 메모리(160)는 플래시 메모리, 솔리드 스테이트 드라이브(SSD), 또는 이와 유사한 것과 같은 불휘발성 메모리를 포함할 수 있다. 3D 파이프라인(105)은 입력 어셈블러 스테이지(110), 정점 셰이더 스테이지 컨트롤러(115), 프리머티브 어셈블리 스테이지(120), 래스터화 스테이지(125), 초기-Z 스테이지(130), 픽셀 셰이더 스테이지 컨트롤러(135), 후기-Z 스테이지(145), 그리고/또는 블렌드 스테이지(150), 또는 이와 유사한 것들을 포함할 수 있다. 3D 파이프라인(105)은 실시간 3D 렌더링 파이프라인일 수 있고, 그리고 3D 파이프라인(105)의 다른 스테이지들에 후속하여 본 기재의 실시 예들에 따른 포스트-프로세싱 셰이더 스테이지(140)를 포함할 수 있다.
여기에 기재된 실시 예들은 실시간 3D 렌더링 파이프라인을 포스트-프로세싱 셰이더 스테이지(140)를 포함하도록 늘리는 메커니즘을 포함할 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 타일(155)의 렌더링이 완료된 후에, 그렇지만 타일(155)의 콘텐츠가 메모리(160)로 플러시 되기 전에 자동적으로 발동되어, 하나 또는 그보다 많은 포스트-프로세싱 효과들이 효율적으로 그리고 최소의 전력 사용으로 수행되게 한다. 여기에 기재된 실시 예들은 전용의 온-칩 타일 버퍼를 갖는 TBDR 구조들에서 가장 유용하지만, IMR들과 같은 다른 구조들 또한 캐시 계층의 사용을 통해 이득을 볼 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 프레임의 렌더링되고 블렌딩된 최종 조각 값들(예를 들어, 색, 깊이, 그리고 스텐실)에서 동작할 수 있다. 포스트-프로세싱 알고리즘들은 지연 렌더링 임 엔진들에서 주요(key) 구성 요소일 수 있고, 그리고 또한 다른 것들 중에서도 필드의 깊이, 색 보정, 스크린 공간 앰비언트 오클루전과 같은 시각적 개선을 수행하는데 사용될 수 있다.
포스트-프로세싱 셰이더 스테이지(140)는 메모리 트래픽 그리고/또는 소요 에너지를 줄일 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 하나 또는 그보다 많은 하드웨어 스케줄러들(165)에 의존하여, 메모리 국부성을 개선할 수 있다. 아래에서 더 기술되는 바와 같이, 워크그룹 프로세서(178)에서 실행될 수 있는 포스트-프로세싱 셰이더 스테이지(140)의 발동에 따라, 하나 또는 그보다 많은 하드웨어 스케줄러들(165)은 색, 깊이, 스텐실, 그리고/또는 마스크 데이터를 자동적으로 직접 제공할 수 있다. 하나 또는 그보다 많은 하드웨어 스케줄러들(165)과 조합될 때, 큰 성능 절약들이 포스트0프로세싱 알고리즘들에 대해 달성될 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 다음의 데이터를 응용 개발자에게 노출할 수 있다: i) 온-칩 타일 버퍼의 존재, ii) 온-칩 타일 버퍼의 주재, 그리고/또는 iii) 타일 버퍼 주변의 임의의 가드-밴드의 사이즈. 포스트-프로세싱 셰이더 스테이지(140)는, 아래에서 더 기술되는 바와 같이, 타일 버퍼(170) 및 포스트-프로세싱 셰이더(175) 사이에 직접적이고 효율적인 물리적(예를 들어, 하드웨어) 연결(180)을 제공할 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 타일 버퍼(170)에 대한 직접적이고 효율적인 하드웨어 인터페이스(180)의 이득을 가질 수 있다. IMR 구조들에 대해, 포스트-프로세싱 셰이더 스테이지(140)는 렌더 목표들에 대해 사용되는 캐시와 포스트-프로세싱 셰이더(175) 사이에 직접적이고 효율적인 물리적(예를 들어, 하드웨어) 연결을 제공할 수 있다. 포스트-프로세싱 셰이더(175)는 워크그룹 프로세서(178)에 의해 실행되는 프로세스일 수 있다. 워크그룹 프로세서(178)는, 예를 들어, 셰이더 코어 어레이일 수 있다.
포스트-프로세싱 셰이더(175)는 워프 스케줄링(warp scheduling)(예를 들어, 중재(arbitration), 그래픽스 프로세싱, 그리고/또는 포스트-프로세싱 워프들에 하나 또는 그보다 많은 추가적인 입력들을 제공할 수 있다. 포스트 프로세싱 셰이더 스테이지(140)는 하나 또는 그보다 많은 하드웨어 스케줄러들(165)과 연관된 그리고/또는 하나 또는 그보다 많은 하드웨어 스케줄러들(165)에 의해 읽혀질 수 있는 포스트-프로세싱 셰이더 스테이지들에 대한 의존성들의 설명을 제공할 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 하드웨어로 직접 액세스 가능한 하나 또는 그보다 많은 포맷들을 생성할 수 있다.
도 2는 일부 실시 예들에 따른 GPU(예를 들어, 도 1의 100) 내의 포스트-프로세싱과 연관된 방향성 비순환 그래프(DAG)(Directed Acyclic Graph)를 보여주는 블록도이다. DAG(200)는 다양한 포스트-프로세싱 구성 요소들, 양상들, 그리고/또는 스테이지들을 포함할 수 있다. DAG(200)는 게임 렌더러(205)를 포함할 수 있다. DAG(200)는 3D 렌더링 엔진 및 연관된 라이브러리들(295)을 포함할 수 있다. DAG(200)는 사용자 인터페이스(235)(UI)를 포함할 수 있다. DAG(200)는 월드 렌더러(210), 지형(220), 입자들9245), 반사들(265), 메쉬들(270), 그림자들(285), 그리고/또는 물리적으로 기반한 렌더링(290)(PBR)(physically based rendering)과 같은 다양한 구성 요소들, 양상들, 그리고/또는 스테이지들을 포함할 수 있다. DAG(200)는 포스트-프로세싱(215), 하늘(250), 데칼들(decals), 그리고/또는 셰이딩 시스템(280)을 포함할 수 있다.
다양한 그래픽스 표준들에 의해 기술되는 그래픽스 프로세싱 파이프라인들은 지나치게 단순할 수 있고, 그리고 현대 게임 엔진들에 의해 채용되는 프로세싱의 멀티-패스 환경의 복잡성을 포착할 수 없다. 현대 게임 엔진들은 도 2에 도시된 바와 같이 몇몇 포스트-프로세싱 단계들을 사용할 수 있다. 그래픽스 구조들은 렌더 패스들에 대한 일부 인식을 갖는 표준들에 의해 설명되는 지나치게 단순한 파이프라인들에 최적화될 수 있다. 그러나 복잡도 의존성 체인들은 고려되지 않을 수 있고, 대신 파이프라인들은 더 오래된 그래픽스 흐름에 대한 성능, 전력, 또는 면적에 최적화될 수 있다. 본 기재는 렌더 패스들의 패스 의존성-의식 스케줄링(pass dependence-aware scheduling)을 통해 이러한 그리고 다른 제한들을 다룰 수 있다.
일반적으로, 그래픽스 렌더링은 일부 다른 타입들의 프로세싱을 갖는다. 지오메트리 프로세싱 및 픽셀 셰이딩 패스들은 다수의 드로우 콜들(draw calls) 및 많은 연관된 지오메트리를 포함할 수 있다. 이 종류의 패스의 예는 기초 지오메트리(base geometry)가 중간 버퍼로 렌더링되는 G-버퍼 패스이다. 조명(lighting) 패스들은 매우 적은 수의 삼각형들을 가질 수 있고, 그리고 초기(early) G-버퍼 패스 동안과 같은 이전에 생성된 픽셀 값들을 수정할 수 있다. 픽셀 프로세싱 패스들은 그들과 연관된 지오메트리를 갖지 않을 수 있고, 그리고 이전에 생성된 픽셀들을 수정하는데 사용될 수 있다. 픽셀 프로세싱 패스의 예들은 모션 블러(motion blur), 블룸(bloom), 또는 이와 유사한 것들을 포함한다.
조명 패스들 및 픽셀 프로세싱 패스들 모두는 포스트-프로세싱 스테이지들로 참조될 수 있다. 여기에 기술된 실시 예들은 이러한 종류의 패스들 모두를 적용할 수 있다. 포스트-프로세싱 스테이지들에 제공되는 다양한 I/O들, 그리고 작업의 전체적인 스케줄링은 게임 엔진 및 응용 프로세싱의 동작에 의존할 수 있다. 다수의 포스트-프로세싱 효과들은 함께 연계되어 파이프라인을 형성할 수 있다. 이러한 다양한 스테이지들은 단순한 파이프라인(위에서 기술된 3D 파이프라인(105)과 다른), 또는 더 일반적으로는 도 2에 도시된 DAG(200)를 형성할 수 있다. 게임 엔진들은 특정한 프레임을 세우기 위해 통상적으로 전체 DAG(200)를 렌더-그래프로 처리할 수 있다. 렌더-그래프는 모든 패스들 및 그들의 자원들을 기록할 수 있다. 그리고 스케줄링, 동기화, 그리고 자원 전환들(resource transitions)은 전체 패스에 대해 최적화되어, 지연들(stalls)을 최소화하고 그리고 중간 연산 결과들을 공유할 수 있다. 여기에 기재된 실시 예들은 렌더-그래프 실행의 추가적인 최적화를 포함한다.
DAG(200)의 다양한 스테이지들은 피사계 심도(depth-of-filed) 효과에 대한 필터링과 같은 데이터 감소 또는 변환을 포함할 수 있다. 가우시안 블러(Gaussian blur)와 같은 일부 이미지 프로세싱 효과들은 더 적은 커널들을 사용하려 할 수 있고, 따라서 더 적은 가드-밴드를 사용하려 할 수 있지만, 스크린 공간 앰비언트 오클루전 또는 스크린 공간 반사들과 같은 다른 것들은 현재 픽셀을 둘러싸는 더 넓은 이웃을 사용할 수 있고, 그리고 픽셀의 연산 당 수십의 읽기들을 수행할 수 있다. 소스 조각(source fragment) 및 결과 조각들 사이의 의존성들은 알려져 있다. 이 정보는 i) 다수의 셰이더들을 통합하기 위한 소프트웨어 최적화들, 그리고/또는 ii) 메모리 트래픽을 최소화하기 위한 스케줄링 최적화들을 수행하는데 사용될 수 있다.
포스트-프로세싱 픽셀 의존성은 다양한 스테이지들 사이에서 1:1일 수 있다. 의존성들이 1:1이고 그리고 의존적인 픽셀들 사이의 거리가 0일 때, 이러한 포스트-프로세싱 셰이더 스테이지들을 단일 커널로 병합할 수 있는 컴파일러-유사(compiler-like) 소프트웨어를 생성하는 것이 가능하다. 그러나, 의존성들은 이러한 특성들을 가지지 않을 수 있고, 즉 i) 결과 픽셀은 하나의 다른 픽셀보다 많은 것들에 의존하거나, ii) 이러한 픽셀들의 적어도 하나의 거리가 -이 아닐 수 있다. 결과 픽셀(x, y)은 다른 하나의 픽셀(p, q)에 의존할 수 있고, x는 p와 다르고 그리고/또는 y는 q와 다를 수 있다. 일부 실시 예들에서, 셰이더 스테이지들은 병합될 필요가 없거나, 또는 편리하게 병합될 수 없고, 그리고 그들은 순차적으로 스케줄될 수 있다.
포스트-프로세싱 스테이지에서 인터리빙 및 캐싱 메커니즘들의 사용은 이러한 효과들을 계산하는 것의 효율에서 이득을 가질 수 있다. 타일-기반 렌더링 콘텍스트(tiled-based rendering context)에서, 인터리빙은 렌더-그래프 DAG(200)을 따라 독립적으로 타일들이 이동하는 가능성으로 더 실현 가능하게 될 수 있고, 공유된 가드-밴드 사용에 의해 규율될 수 있다. 톤-매핑과 같은 가드-밴드의 필요가 없는 효과들은 타일들을 완전히 독립적으로 처리할 수 있다.
일부 이미지 프로세싱 효과들에 대해, 셰이더들은 각 패스에서 이미지의 사이즈를 줄이는 패스들을 포함할 수 있다. 이러한 시나리오들을 수용하기 위해, 여기에 기재된 실시 예들은 입력으로서 소스 이미지(들)에서 액세스된 조각들에 대한 각 패스에 대한 의존성 정보를 사용할 수 있다. 따라서, 최소화 또는 최대화 알고리즘들은 여기에 기재된 실시 예들로부터 이득을 가질 수 있다. 그러나, 스테이지의 셰이더(들) 출력이 입력 이미지에 비해 다른 사이즈의 이미지일 때(예를 들어, 최소화 또는 최대화가 존재), 구현은 파이프라인에서 셰이더들의 인터리빙을 중지하고 그리고 셰이더를 완료까지 실행(예를 들어, 파이프라인 스테이지를 연산)하거나, 또는 타일을 파이프라인의 후속 셰이더에서 실행하기 전에 파이프라인 스테이지에서 다수의 타일들을 완료까지 실행하는 것을 선택할 수 있다. 이러한 상황이 발생할 때, 기능적 올바름은 유지될 수 있지만, 효율은 여기에 기재된 실시 예들에 의해 달성될 수 있는 것보다 감소할 수 있다.
다음은 지연 렌더링을 위한 렌더링 엔진에서, 주어진 프레임 렌더링에서 서로 다른 종류의 패스들이다.
● 입자 버퍼로의 렌더(예를 들어, 입자 파라미터들을 이후에 처리될 버퍼로 렌더)
● 깊이 Z-프리-패스(Z-pre-pass)를 렌더(예를 들어, 불투명한 지오메트리들을 계층적 Z(HiZ) 및 그림자들을 위해 사용되는 깊이 버퍼로 렌더)
● 광 그리드를 계산(예를 들어, 3D 그리드를 수립하여 최적의 조명을 위한 광들을 분리)
● 오클루전 테스트들을 시작
● 계층적 Z를 수립
● 그림자 깊이들을 렌더(예를 들어, 그림자 캐스팅 조명들로부터 그림자 맵을 수립)
● 체적 안개(volumetric fog)를 계산(예를 들어, 3D 안개 텍스처)
● 데칼들을 렌더(예를 들어, 데칼 버퍼들을 수립)
● G버퍼를 렌더(예를 들어, 지오메트리 및 물질 특성들을 G버퍼로 렌더)
● 스크린 공간 앰비언트 오클루전
● 조명(lighting)
● 스크린 공간 반사(SSR) + 시간적(temporal) 안티 앨리어싱(TAA)(예를 들어, 스크린 공간 반사 및 그들의 안티-앨리어싱을 계산)
● 환경 반사 + 스카이박스(skybox)
● 지수 높이 안개(Exponential height fog)
● 입자들을 렌더
● 반투명(translucency)을 렌더
추가적으로, 다음과 같은 다양한 포스트-프로세싱 효과들이 수행될 수 있다.
● 디스토션(distortion)을 렌더
● 포스트-프로세싱(예를 들어, 풀 프레임)
a. 피사계 심도(depth of field)
b. 모션 블러
c. 눈 적응(Eye adaptation)
d. 다운샘플
e. 블룸(bloom)
f. 톤맵(tonemap)
g. 빠른 근사 안티-앨리어싱(FXAA)(예를 들어, 포스트-프로세싱 안티-앨리어싱)
h. 포스트-프로세싱 안티-앨리어싱(예를 들어, FXAA)
기술적으로, 모든 스크린 공간 효과들은 포스트-프로세싱 효과들일 수 있다. 추가적인 포스트-프로세싱 효과들은 썬레이들(sunrays)(예를 들어, 갓레이들(godrays)), 색 그레이딩, 열파들(heat waves), 열 신호(heat signature), 야시(night vision), 첨예화(sharpen), 에지 검출(edge detection), 분할(segmentation), 그리고/또는 양방향 필터링(bilateral filtering), 또는 이와 유사한 것들을 포함할 수 있다.
도 3은 일부 실시 예들에 따른 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)을 포함하는 GPU(예를 들어, 도 1의 100)의 다양한 구성 요소들을 보여주는 블록도이다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은 포스트-프로세싱 셰이더 스테이지(예를 들어, 도 1의 140)를 실행할 수 있다. 이제 도 1 및 도 3이 참조된다.
여기에 기재된 실시 예들은 메모리-시스템 효율적인 방식으로 GPU(100)에서 포스트-프로세싱을 수행하는 것을 포함한다. 여기에 기재된 실시 예들은, 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)에 의해, 픽셀 셰이더 스테이지 컨트롤러(135)에 후속하는 포스트-프로세싱 셰이더 스테이지(140)를 포함하는 3D 그래픽스 파이프라인(105)에서 하나 또는 그보다 많은 포스트-프로세싱 스테이지들(140)의 실행을 동기화하는 것을 포함할 수 있다.
여기에 기재된 실시 예들은 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175) 및 하나 또는 그보다 많은 버퍼들(170) 사이의 인터페이스(180)(예를 들어, 버스)를 포함할 수 있다. IMR 구조들에 대해, 메모리 캐시 또는 다른 적절한 메모리 인터페이스가 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175) 및 메모리(160) 사이의 통신을 가능하게 하는데 사용될 수 있다. 추가적으로, 새로운 컨트롤 구조(320)가 제공되어, 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175) 및 하나 또는 그보다 많은 타일 버퍼들(170) 사이의 중재(arbitration) 그리고/또는 연계(interlock)를 수행할 수 있다.
여기에 기재된 실시 예들은 3D 파이프라인(105)에 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)을 포함할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은 차례로 종속적인 포스트-프로세싱 셰이더들(175)을 스케줄할 수 있다. 포스트-프로세싱 셰이더 스테이지(140)(예를 들어, 도 1의)는 다음의 특성들을 포함할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은 타일(예를 들어, 도 1의 155) 또는 타일 및 가드-밴드 디멘션들(dimensions)과 동등한 2D 디스패치(dispatch) 사이즈를 갖는 '컴퓨트 셰이더'와 유사하게 실행할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)은 타일(예를 들어, 도 1의 155) 내에 포함된 임의의 조각으로부터 데이터를 페치할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)은 하나 또는 그보다 많은 워크그룹 프로세서들(178) 및 하나 또는 그보다 많은 타일 버퍼들(170) 사이에 데이터 링크(180)(예를 들어, 버스)를 사용할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은 셰이더 내보내기(365) 그리고/또는 하나 또는 그보다 많은 렌더 백엔드들(370)을 거쳐 데이터 링크(325)를 사용할 수 있다. 데이터 링크(180)는 워크그룹 프로세서(178)에서 실행되는 포스트-프로세싱 셰이더들(175)이 타일 버퍼(170)에서 원하는 픽셀 그리고/또는 조각을 직접 액세스할 수 있게 하므로, 장점을 가질 수 있다.
IMR에서, 타일 버퍼(170) 대신에, 메모리(160)의 부분이 후기-Z 스테이지(145) 및 블렌드 스테이지(150)에 단단히 결합되고, 또한 포스트-프로세싱 셰이더 스테이지(140)에 단단히 결합되며, 따라서 하드웨어의 측면에서, 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)과 단단히 결합된 고성능 캐시일 수 있다.
응용(350)은 포스트-프로세싱 셰이더 스테이지(140)의 하나 또는 그보다 많은 특성들을 질의할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은 응용(350)과 인터페이스로 접속할 수 있다. 응용(350)은 타일 사이즈(즉, 픽셀들의 측면에서 디멘션들)을 질의하고, 그리고 GPU(100)로부터 타일 사이즈를 수신할 수 있다. 응용(350)은 타일(예를 들어, 도 1의 155)의 상단, 좌측, 하단, 그리고 우측 에지들의 '가드-밴드'의 사이즈를 질의하고, 그리고 GPU(100)로부터 '가드-밴드'의 사이즈를 수신할 수 있다. 응용(350)은 워크그룹 프로세서(178)의 포스트-프로세싱 셰이더(175)로서 셰이더 프로그램의 실행을 제공할 수 있다. 셰이더 프로그램은 타일의 4개의 코너들 중 임의의 것에 의해 나타내어지는 타일(도 1의 155)의 프로보킹(provoking) 조각 좌표를 질의하고, 그리고 GPU(100)로부터 프로보킹 조각 좌표를 수신할 수 있다. 셰이더 동작 동안, 셰이더 프로그램은 다양한 프로보킹 픽셀 정보를 질의할 수 있다. 드라이버는 가드-밴드의 양과 같은 더 정적인 정보를 질의할 수 있고, 이러한 질의 응답들을 포스트-프로세싱 셰이더(들)(175)에서 사용하기 위한 적절한 셰이더 프로그램 코드를 판단하는데 사용할 수 있다.
응용(350)은 동적 조각 마스크(AFM(Active Fragment Mask)를 포스트-프로세싱 셰이더 스테이지(140)에 제공할 수 있다. 응용(350)은 하나 또는 그보다 많은 제어 신호들(368)을 제공하여, 하드웨어가 시작 시에 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)에 제공될 수 있는 하나 또는 그보다 많은 값들(예를 들어, 색, 깊이, 스텐실, 정상 벡터들(normal vectors), AFM, 또는 임의의 다른 보간된 속성(interpolated attribute))을 생성하게 할 수 있다. 응용(350)은 가드-밴드의 어느 쪽들(상단, 좌측, 하단, 그리고/또는 우측 에지들)이 사용될 것인지에 대해 하나 또는 그보다 많은 힌트들(370)을 제공할 수 있다.
하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은 하나 또는 그보다 많은 입력들 및 출력들을 가질 수 있다. 포스트-프로세싱 셰이더 스테이지(140)가 시작될 때, 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은, 시작 시에 자동적으로, 조각의 색을 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)에 제공할 수 있다. 추가적으로, 조각의 위치의 좌표(예를 들어, X, Y), 조각의 깊이 값, 그리고 조각의 스텐실 값들 또한 자동적으로 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)에 제공될 수 있다. 현재 작업 타일(155)의 경계들을 판단하기 위해 그리고 이웃 조각들을 액세스하는 것을 가능하게 하기 위해, 프로보킹 조각 좌표 또한 자동적으로 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)에 제공될 수 있다.
포스트-프로세싱 셰이더 스테이지(140) 동안, 호출(invocation)은 렌더링된 이미지들에서 포스트-프로세싱 알고리즘들을 수행할 의도로, 타일(155) 및 가드-밴드 내의 임의의 다른 조각의 색, 깊이, 그리고 스텐실 값을 페치할 수 있다. 하나 또는 그보다 많은 타일 버퍼들(170)의 데이터의 일관성을 유지하기 위해, 구현은 하나 또는 그보다 많은 타일 버퍼들(170)에 라이트-백(writes-back)의 하드웨어 스케줄링을 사용하고, 그리고/또는 전통적인 뮤텍스(mutex)(예를 들어, 구성을 보존하는 상호 배제(mutual exclusion preserving construct)), 세마포어(semaphore), 그리고/또는 배리어(barrier) 기술들을 통해 동기화를 수행하는 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)에 의존하는 것을 선택할 수 있다.
활성 조각 마스크(360)는 포스트-프로세싱 셰이더의 호출에서 액세스 가능한 이웃 조각들을 포스트-프로세싱 셰이더 파이프라인에 알릴 수 있다. 이는 포스트-프로세싱을 필요로 하지 않는 것으로 알려질 수 있는 조각들을 배제하도록 설계될 수 있다. 추가적으로, 3D 파이프라인(105)의 전통적인 조각 셰이딩 스테이지는 동적으로 포스트-프로세싱 활성 조각 마스크를 연산할 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 조각 스테이지가 완료된 후에 그렇지만 포스트-프로세싱 셰이더 스테이지(140)가 실행되기 전에, 자동적으로 활성 조각 마스크(360)를 반전할 수 있다.
하나 또는 그보다 많은 타일 버퍼들(170)로부터 또는 하나 또는 그보다 많은 타일 버퍼들(170)로 픽셀 페치 데이터의 적절한 동기화를 제공하거나 반환하는 것에 대해, 활성 조각 마스크(360)는 하나 또는 그보다 많은 타일 버퍼들(170) 내의 각 픽셀에 대한 멀티0비트 '상태'를 제공하도록 확장될 수 있고, '상태'는 '잠김' 또는 '갱신됨'과 같은 정보를 담을 수 있고, '상태'의 정확한 의미는 응용(350)의 재량권(discretion)으로 남겨질 수 있다. 실시 예는 이러한 상태 비트들이 스케줄러(들)에 가용하도록 하여, 일부 픽셀들이 잠길 수 있는 워프(warp)를 스케줄하는 것을 회피할 수 있다. 대안은 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175) 내에 스핀 루프(spin loop)를 구비하는 것을 포함할 수 있지만, 이는 에너지 및 성능 모두에서 비효율적일 수 있다. 이러한 상태 비트들은 첫 번째 포스트-프로세싱 셰이더 스테이지(140)를 개시함에 따라, 알려진 값으로 리셋될 수 있다.
3D 파이프라인(105)의 일부로서 명시적인 포스트-프로세싱 셰이더 스테이지(140)를 구비하는 것의 가치는 하드웨어 스케줄러들(165)에 조각 셰이더를 완료하는 것과 TBDR 렌더링 구조를 위한 타일(155)에서 포스트-프로세싱 셰이더 스테이지(140)를 뒤따르게 하는 것을 인터리브하는 기능을 제공하여, 성능을 향상시키고 그리고 에너지 소비를 줄이는 것을 포함할 수 있다. 유사하게, IMR 구조들을 포함하는 다른 구조들에서, 캐시 사이즈들이 균형잡힌 때에 인터리빙은 여전히 유익할 수 있다. 추가적으로, 가드-밴드 조각들이 포스트-프로세싱 셰이더 스테이지(140)에 의해 요청될 수 있을 때, TBDR 렌더러는 렌더링된 타일들의 순서를 재정렬하여 타일 버퍼 내에 필요한 조각들을 자연스럽게 유지할 수 있다. 예를 들어, 우측 및 하단 에지 가드-밴드 조각들을 요청할 때, 스케줄러(165)는 캐스캐이딩 패턴(cascading pattern)에서 좌상단으로부터 우하단으로 렌더 타일들(155)을 선택하여, 이러한 조각들을 타일 버퍼(170)로부터 획득하는 대신 메모리(160)로부터 가능한 한 많은 가드-밴드 조각들을 페치하는 것의 필요를 줄일 수 있다. 포스트-프로세싱 셰이더 스테이지(140)는 활성화 또는 비활성화 될 수 있으므로, 이 스테이지가 파이프라인에 의해 필요하지 않을 때에는 성능 손실이 없을 수 있다.
여기에 기재된 실시 예들은 포스트-프로세싱 셰이더 스테이지(140)를 픽셀 셰이더 및 블렌딩 연산들의 완료 이후에 즉시 실행하게 하는 3D 그래픽스 파이프라인(105)에 대한 확장을 포함할 수 있다. 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305)은 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)을 하나 또는 그보다 많은 타일 버퍼들(170)에 연결하는 새로운 버스들 그리고/또는 인터페이스들(예를 들어, 180)을 포함하며, 픽셀들의 어레이 내의 모든 데이터(예를 들어, 정보의 가치 있는 타일들 또는 타일들 및 가드-밴드)를 액세스할 수 있다. 실시 예들은 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175) 내의 포스트-프로세서 워프들의 실행을 스케줄하는 동기화 메커니즘을 포함할 수 있다. 여기에 기재된 실시 예들은 하나 또는 그보다 많은 픽셀 셰이더 컨트롤러들(135)에 응답하여 픽셀 셰이더들에 의해 기입되고, 선택적인 후기-Z(145) 및 선택적인 블렌드(150)에 의해 처리되고 그리고 이후에 하나 또는 그보다 많은 포스트-프로세싱 셰이더 스테이지들(140)에 의해 소비되는 데이터에 대한 캐시 국부성을 최대화하도록 조정될 수 있다.
하나 또는 그보다 많은 픽셀 셰이더 컨트롤러들(135)에 응답하여 픽셀 셰이더들에 의해 생산되고 그리고/또는 기입된 데이터는 이후에 포스트-프로세싱 컨트롤러들(305)에 응답하여 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)에 의해 소비될 수 있다. 따라서, 픽셀 셰이더 컨트롤러들(135)에 응답한 픽셀 셰이더들의 완료 및 포스트-프로세싱 셰이더들(175)에 의한 이러한 데이터의 소비를 위한 포스트-프로세싱 컨트롤러들(305)의 설정의 시작의 사이에, 하나 또는 그보다 많은 타일 버퍼들(170) 내의 제자리에 가능한 한 만은 데이터가 남아있을 수 있다.
원본 데이터가 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들(305) 내에서 다른 픽셀들에 의해 가용하고 그리고 소비되기 전에 하나의 픽셀의 포스트-프로세싱이 데이터를 갱신하는 것을 금지하는 동기화 메커니즘들이 사용될 수 있다. 포스트-프로세싱 컨트롤러(305)의 동작들은 마스크(360)에 의해 제어될 수 있다.
여기에 기재된 실시 예들은 또한 컴퓨트 셰이더들(375)에 적용될 수 있고, 또한 워크그룹 프로세서(178)에서 실행될 수 있다. 컴퓨트 셰이더들(375)은 워크 디비젼들(work divisions)의 계층으로 구성될 수 있다. 예를 들어, 수행할 전체 N-차원 그리드(N-dimensional grid)의 N-차원 범위(N-dimensional range)(예를 들어, NDRange)는 이러한 계층의 일부일 수 있다. 워크그룹들은 또한 N-차원 그리드들일 수 있지만, 더 큰 NDRange 그리드의 일부분일 수 있다.
각 조각을 컴퓨트 셰이더(375) 내의 쓰레드에 할당함으로써, 전력 및 성능에서 더 적은 이득들이 달성될 수 있다. 활성 쓰레드 마스크(360)는 포스트-프로세싱 셰이더 파이프라인에 이웃 조각들이 포스트-프로세싱 셰이더의 발동으로부터 액세스 가능함을 알릴 수 있다. 마스크(360)에 의해 마스크된 바와 같이, 활성 워크그룹은 워크그룹의 고유한 글로벌 ID 내의 임의의 쓰레드의 범위 밖의 워크그룹 내의 쓰레드에 의한 데이터 액세스들을 포함할 수 있다. 마스크(360)는 타일 버퍼(170)를 통해 데이터를 공유하는 워크그룹 내의 쓰레드를 포함할 수 있고, 데이터는 메모리(160)를 통해 서로 다른 워크그룹들에 걸쳐 공유될 수 있다. 이 사용 패턴은 서로 다른 NDRanges로부터의 워크그룹들이 워크그룹 단위(granularity)에서 인터리빙 되게 할 수 있다. 데이터 공유/교환이 워크그룹 내에서이고 그리고 버퍼(170) 크기 내일 때, 데이터는 타일 버퍼(170) 내에서 더 국부적으로 교환될 수 있다. 그러나, 데이터가 현재 워크그룹 ID 밖의 쓰레드와 교환될 때, 메모리(160)(즉, 더 먼, 따라서 더 에너지 집약적인 메커니즘)가 사용될 수 있다.
마찬가지로, 일부 GPU 프로그래밍 모델들은 서브그룹들을 노출할 수 있다. 서브그룹은 컴퓨트 코어에서 동시에 실행되는 쓰레드들의 그룹을 포함할 수 있다. 예를 들어, 서브그룹들은 8, 16, 32 또는 64 쓰레드들을 포함할 수 있다. 활성 서브그룹 마스크는 워크그룹의 고유한 글로벌 ID 내의 임의의 쓰레드의 범위 밖의 워크그룹 내의 쓰레드에 의한 데이터 액세스들을 포함할 수 있다.
여기에 기재된 실시 예들의 장점들 중 일부는 성능의 향상, 그리고 3D 렌더링된 그래픽스 포스트-프로세싱 효과들의 에러지 소비를 줄이는 것을 포함한다. 개선점들은 피사계 심도, 색 보정, 톤 매핑, 그리고/또는 지연 렌더링에 적용될 수 있다. 하나 또는 그보다 많은 타일 버퍼들(170)에 대한 읽기 및 쓰기 액세스 모두에 하나 또는 그보다 많은 포스트-프로세싱 셰이더들(175)을 적용함으로써, 하나 또는 그보다 많은 타일 버퍼들(170)의 특색들 그리고/또는 기능의 모두가 포스트-프로세싱에 가용할 수 있다. 하나 또는 그보다 많은 압축 기술들이 하나 또는 그보다 많은 타일 버퍼들(170)을 메모리(160)에 플러싱하는데 적용될 수 있다. 여기에 기재된 실시 예들은 더 높은 대역폭을 제공할 수 있고, 하나 또는 그보다 많은 타일 버퍼들(170)은 멀티-뱅크로 되어 I/O 포트들의 높은 다수성을 허용할 수 있다. 포스트-프로세싱과 연관된 데이터는 블록 선형(block linear) 또는 행 선형(row linear)과 같은 다양한 포맷들로 메모리(160)에 기입될 수 있다. 하나 또는 그보다 많은 타일 버퍼들(170) 및 메모리 시스템(160)은 블록 액세스들로 최적화된 읽기 그리고/또는 쓰기 동작들을 수행할 수 있고, 그리고 비교 가능한 수의 바이트들의 가치의 컴퓨트-셰이더 스타일 로드들(loads) 및 저장들에 비해 저-에너지 경로를 제공한다.
도 4는 일부 실시 예들에 따른 메모리-시스템 효율적인 방식의 포스트-프로세싱을 제공하기 위한 기술을 보여주는 흐름도(400)이다. 402에서, 픽셀 셰이더는 타일 버퍼에 값들의 초기 세트를 수립(establish)할 수 있다. 405에서, 타일 버퍼 및 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 사이에 직접(direct) 링크가 제공될 수 있다. 최근에 완료된 픽셀 셰이더의 콘텐츠가 유지된다. 즉, 콘텐츠가 메모리로 플러시되지 않는다. 410에서, 포스트-프로세싱 셰이더 스테이지에 의해 사용되기 위해, 그리고/또는 예를 들어 블러링(blurring)과 같은 콘볼루션 연산들을 지원하기 위해, 0개 또는 그보다 많은 픽셀들이 가드 밴드에 유지될 수 있다. 420a에서, 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 포스트-프로세싱 스테이지들의 실행을 동기화할 수 있다. 415에서, 다음 렌더 패스를 위한 샘플들을 생성하기 위해, 포스트-프로세싱 셰이더(들)은 이전 렌더 패스에 의해 생성된 타일 버퍼 내의 하나 또는 그보다 많은 픽셀들을 액세스하도록 허용될 수 있다. 420b에서, 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 포스트-프로세싱 스테이지들의 실행을 동기화할 수 있다. 흐름은 420b로부터 415로 돌아가고, 그리고 415 및 420b의 단계들을 반복하여 하나보다 많은 포스트-프로세싱 단계를 수행할 수 있다. 도 4의 단계들은 도 4의 단계들은 도시된 순서대로 수행될 필요는 없으며, 끼어드는 단계들이 존재할 수 있음이 이해될 것이다.
여기에 기재된 실시 예들와 연계되어 기술된 방법 또는 알고리즘 및 기능들의 블록들 또는 단계들은 하드웨어에 직접, 프로세서에 의해 실행되는 소프트웨어 모듈에, 또는 이들의 조합으로 실장될 수 있다. 모듈들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함할 수 있다. 소프트웨어로 구현되면, 기능들은 실재하는(tangible), 비일시적인(non-transitory) 컴퓨터로 독출 가능한 매체에 하나 또는 그보다 많은 명령들 또는 코드로서 저장되거나 전송될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 리드 온리 메모리(ROM), 전기적으로 프로그램 가능한 ROM(EPROM), 전기적으로 소거 가능하고 프로그램 가능한 ROM(EEPROM), 레지스터들, 하드 디스크, 제거 가능한 디스크, CD ROM, 또는 이 분야에 알려진 임의의 다른 형태의 저장 매체에 존재할 수 있다.
다음의 논의는 본 기재의 특정한 양상들이 구현될 수 있는 적절한 기계 또는 기계들의 간결하고 일반적인 설명을 제공하는 것을 의도한다. 통상적으로, 기계 또는 기계들은 프로세서들, 메모리(예를 들어, RAM, ROM, 또는 다른 상태 보존 매체), 스토리지 장치들, 비디오 인터페이스, 그리고 입력/출력 인터페이스 포트들에 부착되는 시스템 버스를 포함한다. 기계 또는 기계들은 다른 기계, 가상 현실(VR) 환경과의 상호 작용, 바이오메트릭 피드백, 또는 다른 입력 신호로부터 수신되는 지시들에 의해서뿐만 아니라, 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 적어도 일부분 제어될 수 있다. 여기에서 사용되는 바와 같이, '기계'의 용어는 단일 기계, 가상 기계, 또는 통신 가능하게 결합된 기계들, 가상 기계들, 또는 함께 동작하는 장치들의 시스템을 광범위하게 포함하는 것을 의도한다. 예시적인 기계들은 개인용 또는 공공 운송 장치(예를 들어, 자동차들, 기차들, 택시들 등)와 같은 운송 장치뿐 아니라, 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함한다.
기계 또는 기계들은 프로그램 가능한 또는 프로그램 불가능한 논리 장치들 또는 어레이들, ASIC 들, 임베디드 컴퓨터들, 카드들, 그리고 이와 유사한 것들과 같은 임베디드 컨트롤러들을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 가능한 결합과 같은 하나 또는 그보다 많은 원격 기계들로의 하나 또는 그보다 많은 연결들을 활용할 수 있다. 기계들은 인트라넷, 인터넷, 로컬 영역 네트워크들, 광역 네트워크들 등과 같은 물리적 그리고/또는 논리적 네트워크를 거쳐 서로 연결될 수 있다. 이 분야에 숙련된 자는 네트워크 통신이 무선 주파수(RF), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 545.11, 블루투스®, 광학, 적외선, 케이블, 레이저 등을 포함하는 유선 그리고/또는 무선 단거리 또는 장거리 캐리어들 및 프로토콜들을 활용할 수 있음을 이해할 것이다.
본 기재의 실시 예들은 기계에 의해 액세스된 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 타입들 또는 저레벨 하드웨어 콘텍스트들을 정의하게 하는 기능들, 절차들, 데이터 구조들, 응용 프로그램들 등을 참조하여 또는 연계하여 기술될 수 있다. 예를 들어, 연관된 데이터는 다른 스토리지 장치들 및 그들과 연관된 저장 매체(휘발성 그리고/또는 불휘발성 메모리(예를 들어, RAM, ROM 등)에 또는 하드-드라이브들, 플로피-디스크들, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는)에 저장될 수 있다. 연관된 데이터는 전송 환경들(물리적 그리고/또는 논리적 네트워크를 포함하는)을 거쳐 패킷들, 직렬 데이터, 병렬 데이터, 전송 신호들 등의 형태로 전달될 수 있으며, 압축된 또는 암호화된 형태로 사용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스에 대해 국부적으로 그리고/또는 원격으로 저장될 수 있다.
서술된 실시 예들을 참조하여 본 기재의 원리들이 기술 및 설명되었지만, 기술된 실시 예들은 이러한 원리들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고, 그리고 임의의 필요한 방식으로 조합될 수 있다. 앞선 논의는 특정한 실시 예들에 집중하였지만, 다른 구성들이 고려될 수 있다. 구체적으로, '본 기재의 실시 예에 따른'과 같은 설명들 또는 이와 유사한 설명들이 여기에서 사용되지만, 이러한 문구는 실시 예 가능성들에 대한 일반적인 참조를 의미하고, 본 기개를 구체적인 실시 예 구성들로 한정함을 의도하지 않는다. 여기에서 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들과 조합 가능한 동일한 또는 다른 실시 예들을 참조할 수 있다.
본 기재의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능하며, 여기에 기술된 본 기재의 요소들을 수행하는 명령들을 포함하는 비일시적인 기계로 독출 가능한 매체를 포함할 수 있다.
앞선 예시적인 실시 예들은 본 기재를 해당 실시 예들로 한정하는 것으로 여겨지지 않는다. 일부 실시 예들만이 기술되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 가르침들 및 장점들로부터 실질적으로 멀어지지 않으면서 많은 수정들이 이러한 실시 예들에 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의된 바와 같이 본 기재의 범위 내에 포함되는 것으로 여겨진다.
105: 3D 파이프라인
110: 입력 어셈블러
115: 정점 셰이더 컨트롤러
120: 프리머티브 어셈블리
125: 래스터화
130: 초기-Z
135: 픽셀 셰이더 컨트롤러
140: 포스트-프로세싱 셰이더 스테이지
145: 후기-Z
150: 블렌드
155: 타일
160: 메모리
165: 하드웨어 스케줄러(들)
170: 타일 버퍼
175: 포스트-프로세싱 셰이더
178: 워크그룹 프로세서
205: 게임 렌더러
210: 월드 렌더러
215: 포스트-프로세싱
220: 지형

Claims (19)

  1. 그래픽스 프로세싱 유닛(GPU)에 있어서:
    하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들; 그리고
    픽셀 셰이더 스테이지에 후속하는 포스트-프로세싱 셰이더 스테이지를 포함하는 3차원(3D) 그래픽스 파이프라인을 포함하고,
    상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 상기 포스트-프로세싱 셰이더 스테이지를 포함하는 하나 또는 그보다 많은 포스트-프로세싱 스테이지들의 실행을 동기화하도록 구성되는 그래픽스 프로세싱 유닛.
  2. 제1항에 있어서,
    하나 또는 그보다 많은 포스트-프로세싱 셰이더들;
    하나 또는 그보다 많은 타일 버퍼들; 그리고
    상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 및 상기 하나 또는 그보다 많은 타일 버퍼들의 사이의 직접 통신 링크를 더 포함하는 그래픽스 프로세싱 유닛.
  3. 제2항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더들 및 상기 하나 또는 그보다 많은 타일 버퍼들 사이의 통신을 동기화하도록 구성되는 그래픽스 프로세싱 유닛.
  4. 제2항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더들은 상기 하나 또는 그보다 많은 타일 버퍼들로부터의 하나 또는 그보다 많은 픽셀들에 대한 액세스를 갖는 그래픽스 프로세싱 유닛.
  5. 제4항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더들에 의해 액세스되는 상기 하나 또는 그보다 많은 픽셀들은 다음 렌더 패스를 위한 샘플들을 생성하기 위해 이전 렌더 패스에 의해 생성되는 그래픽스 프로세싱 유닛.
  6. 제4항에 있어서,
    상기 하나 또는 그보다 많은 픽셀들은 상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들에 응답하여 상기 하나 또는 그보다 많은 타일 버퍼들에 존재하는 가드 밴드에 유지되도록 구성되는 그래픽스 프로세싱 유닛.
  7. 제6항에 있어서,
    상기 유지된 하나 또는 그보다 많은 픽셀들은 하나 또는 그보다 많은 콘볼루션 연산들을 지원하도록 구성되는 그래픽스 프로세싱 유닛.
  8. 제4항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들은 가드 밴드에 0개의 픽셀들을 유지하도록 구성되는 그래픽스 프로세싱 유닛.
  9. 메모리 시스템 효율적인 방식으로 그래픽스 프로세싱 유닛(GPU)에서 포스트-프로세싱을 수행하는 방법에 있어서:
    하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들이 픽셀 셰이더 스테이지에 후속하는 포스트-프로세싱 셰이더 스테이지를 포함하는 3차원(3D) 그래픽스 파이프라인에서 하나 또는 그보다 많은 포스트-프로세싱 스테이지들을 동기화하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    직접 통신 링크가 상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더 스테이지들 및 하나 또는 그보다 많은 타일 버퍼들 사이에서 통신하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들이 상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더 스테이지들 및 상기 하나 또는 그보다 많은 타일 버퍼들 사이의 통신을 동기화하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더 스테이지들에 상기 하나 또는 그보다 많은 타일 버퍼들로부터의 하나 또는 그보다 많은 픽셀들에 대한 액세스를 제공하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더 스테이지들에 의해 액세스되는 상기 하나 또는 그보다 많은 픽셀들은 다음 렌더 패스를 위한 샘플들을 생성하기 위해 이전 렌더 패스에 의해 생성되는 방법.
  14. 제12항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들이 상기 하나 또는 그보다 많은 픽셀들을 가드 밴드에 유지하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 유지된 하나 또는 그보다 많은 픽셀들을 이용하여, 하나 또는 그보다 많은 콘볼루션 연산들을 지원하는 단계를 더 포함하는 방법.
  16. 제12항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들이 가드 밴드에 0개의 픽셀들을 유지하는 단계를 더 포함하는 방법.
  17. 제9항에 있어서,
    응용이 상기 하나 또는 그보다 많은 포스트-프로세싱 셰이더 스테이지들의 하나 또는 그보다 많은 속성들을 질의하는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    상기 응용이 타일 사이즈를 질의하는 단계; 그리고
    상기 응용이 상기 타일 사이즈를 수신하는 단계를 더 포함하는 방법.
  19. 제17항에 있어서,
    상기 하나 또는 그보다 많은 포스트-프로세싱 컨트롤러들이 상기 응용과 상호 작용하는 단계를 더 포함하는 방법.
KR1020210091470A 2020-08-03 2021-07-13 메모리 시스템 효율적인 방식의 포스트-프로세싱 KR20220016776A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063060657P 2020-08-03 2020-08-03
US63/060,657 2020-08-03
US17/187,729 2021-02-26
US17/187,729 US20220036632A1 (en) 2020-08-03 2021-02-26 Post-processing in a memory-system efficient manner

Publications (1)

Publication Number Publication Date
KR20220016776A true KR20220016776A (ko) 2022-02-10

Family

ID=80004475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210091470A KR20220016776A (ko) 2020-08-03 2021-07-13 메모리 시스템 효율적인 방식의 포스트-프로세싱

Country Status (4)

Country Link
US (1) US20220036632A1 (ko)
KR (1) KR20220016776A (ko)
CN (1) CN114092308A (ko)
TW (1) TW202207029A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11880924B2 (en) * 2021-03-26 2024-01-23 Advanced Micro Devices, Inc. Synchronization free cross pass binning through subpass interleaving
CN116263981B (zh) * 2022-04-20 2023-11-17 象帝先计算技术(重庆)有限公司 图形处理器、系统、装置、设备及方法
US20240104685A1 (en) * 2022-09-28 2024-03-28 Advanced Micro Devices, Inc. Device and method of implementing subpass interleaving of tiled image rendering

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6707458B1 (en) * 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US7969444B1 (en) * 2006-12-12 2011-06-28 Nvidia Corporation Distributed rendering of texture data
US8499305B2 (en) * 2010-10-15 2013-07-30 Via Technologies, Inc. Systems and methods for performing multi-program general purpose shader kickoff
KR101926570B1 (ko) * 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
KR101701790B1 (ko) * 2013-01-18 2017-02-02 인텔 코포레이션 디포커스 블러에 대한 분산 추정 광 필드 재구성
US10089775B2 (en) * 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
US10448012B2 (en) * 2016-11-22 2019-10-15 Pixvana, Inc. System and method for data reduction based on scene content
US10235735B2 (en) * 2017-04-10 2019-03-19 Intel Corporation Graphics processor with tiled compute kernels

Also Published As

Publication number Publication date
TW202207029A (zh) 2022-02-16
CN114092308A (zh) 2022-02-25
US20220036632A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
US10475228B2 (en) Allocation of tiles to processing engines in a graphics processing system
US11941757B2 (en) Rendering views of a scene in a graphics processing unit
US20220036632A1 (en) Post-processing in a memory-system efficient manner
US10008034B2 (en) System, method, and computer program product for computing indirect lighting in a cloud network
US8982136B2 (en) Rendering mode selection in graphics processing units
US9177413B2 (en) Unique primitive identifier generation
US8692848B2 (en) Method and system for tile mode renderer with coordinate shader
US20140118361A1 (en) Distributed tiled caching
US9589388B1 (en) Mechanism for minimal computation and power consumption for rendering synthetic 3D images, containing pixel overdraw and dynamically generated intermediate images
US20170011543A1 (en) Sparse Rasterization
US20160203635A1 (en) Frustum tests for sub-pixel shadows
US9396515B2 (en) Rendering using multiple render target sample masks
CN110728616A (zh) 图形处理单元内处理核心的图块分配
US20150317763A1 (en) Graphics processing systems
CN112001993A (zh) 一种面向大场景的多gpu城市仿真系统
CN111080505B (zh) 一种提高图元装配效率的方法、装置及计算机存储介质
CN117501312A (zh) 图形渲染的方法及装置
US20190206018A1 (en) Multi-gpu frame rendering
US10212406B2 (en) Image generation of a three-dimensional scene using multiple focal lengths
US7385604B1 (en) Fragment scattering
CN112581575A (zh) 一种外视频做纹理系统
US10192525B2 (en) System, method and computer program product for generating one or more values for a signal patch using neighboring patches collected based on a distance dynamically computed from a noise distribution of the signal patch
US20240037835A1 (en) Complex rendering using tile buffers
US20240169465A1 (en) Graphics processing systems
US20240070961A1 (en) Vertex index routing for two level primitive batch binning