KR101711775B1 - 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크 - Google Patents

그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크 Download PDF

Info

Publication number
KR101711775B1
KR101711775B1 KR1020157015645A KR20157015645A KR101711775B1 KR 101711775 B1 KR101711775 B1 KR 101711775B1 KR 1020157015645 A KR1020157015645 A KR 1020157015645A KR 20157015645 A KR20157015645 A KR 20157015645A KR 101711775 B1 KR101711775 B1 KR 101711775B1
Authority
KR
South Korea
Prior art keywords
mask
pixels
gmem
depth buffer
depth
Prior art date
Application number
KR1020157015645A
Other languages
English (en)
Other versions
KR20150090118A (ko
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 KR20150090118A publication Critical patent/KR20150090118A/ko
Application granted granted Critical
Publication of KR101711775B1 publication Critical patent/KR101711775B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • 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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor

Abstract

어느 픽셀 그룹들이 그래픽스 메모리 (GMEM) 로부터 로드될 필요가 없는지를 표시하는 마스크를 생성하는 것을 포함하는 시스템들 및 방법들이 설명된다. 마스크는 픽셀 그룹이 GMEM 으로부터 로드될 필요가 없다는 것을 표시한다. 시스템들 및 방법들은 스크린 상에 타일을 렌더링하는 것을 더 포함할 수도 있다. 이것은 마스크로부터의 표시에 기초하여 GMEM 에 로드하는 것 및 마스크로부터의 표시에 기초하여 GMEM 으로부터의 로드를 스킵하는 것을 포함할 수도 있다.

Description

그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크{GRAPHICS MEMORY LOAD MASK FOR GRAPHICS PROCESSING}
본 개시물은 그래픽스 프로세싱을 위한 기법들에 관한 것으로, 보다 구체적으로는 그래픽스 메모리에 액세스하기 위한 기법들에 관한 것이다.
그래픽스 프로세싱 유닛들은 통상 디스플레이를 위해 2 차원 (two-dimensional; 2D) 또는 3 차원 (three-dimensional; 3D) 콘텐츠를 렌더링하는데 이용된다. 일부 디바이스들, 예를 들어, 제한된 컴퓨팅 및 메모리 용량을 가질 수도 있는 모바일 디바이스들의 경우에는, 전체 디스플레이 스크린을 한꺼번에 렌더링하는 것이 가능하지 않을 수도 있고 또는 비효율적일 수도 있다. 이에 따라, 이러한 디바이스들은 한번에 디스플레이 스크린의 하나의 부분을 렌더링할 수도 있다. 이 프로세스는 "비닝 (binning)" 이라 불린다. 비닝을 이용하여, 빈 (bin) 이라 불리는 디스플레이의 각각의 부분이 예를 들어, 전체 디스플레이가 렌더링될 때까지 한번에 하나씩 프로세싱될 수도 있다.
비닝 동작을 이용하는 것들을 포함하는 그래픽스 프로세싱 유닛들은 사용자 인터페이스 (user interface; UI) 를 드로잉하는데 이용될 수도 있다. UI 의 동작은 예를 들어, UI 오브젝트들을 업데이트 및 렌더링 (예를 들어, 윈도우들을 이동) 할 때 스크린 주위의 데이터를 카피하는 것을 포함할 수도 있다. 이들 오브젝트들은 렌더링된 프레임 내의 상이한 위치들로 이동될 수도 있다. 이것이 완료되면, 데이터 판독 (read) 들 및 기록 (write) 들이 소중한 프로세싱 사이클들 또는 다른 디바이스 리소스들을 소비 (take up) 할 수도 있다. 그래픽스 메모리 (graphics memory; GMEM) 로부터 데이터를 판독하는 것 및 기록하는 것이 또한 소중한 프로세싱 사이클들 또는 다른 소중한 디바이스들 리소스들을 소비할 수도 있다.
일반적으로, 스크린에의 디스플레이를 위해 비디오 데이터를 프로세싱하는 것은, 메인 메모리로부터 GMEM 으로의 로드, GMEM 에서의 렌더링, 및 GMEM 으로부터 메인 메모리에의 되기록 (write back) 을 포함할 수도 있다. 본 개시물에 따른 일 예는 GMEM 으로의 불필요한 로드들을 회피할 수도 있다. 이에 따라, 메인 메모리로부터 GMEM 으로의 픽셀들의 로딩은, 예를 들어, 픽셀들이 그들이 렌더링되었던 마지막 시간으로부터 변경되지 않은 경우들의 적어도 일 부분에 대해 회피될 수도 있다. 이러한 픽셀들에 대한 데이터는 메인 메모리에 이미 저장될 수도 있고, 이들 단계들을 반복하는 것은 단지 미변경된 픽셀들에 대해 동일한 데이터를 메인 메모리에 되기록하는 것일 뿐이다.
본 개시물에 따른 일 예에서, 어느 픽셀 또는 픽셀들의 그룹들이 GMEM 으로 로드될 필요가 없는지를 표시하는 마스크가 생성될 수도 있다. 이것은, 픽셀들이 렌더링되었던 마지막 시간으로부터 변경되지 않은 그 픽셀들에 대해, 메인 메모리로부터 GMEM 으로의 로드, GMEM 에서의 렌더링, 및 메인 메모리에의 되기록이 회피 또는 스킵되는 것을 허용할 수도 있다. 어떠한 변경도 요구되지 않는다면, GMEM 로드는 그 픽셀 또는 픽셀들의 그룹에 대해 스킵될 수도 있다. 마스크는 스크린 이미지들에 대한 깊이를 프로세싱하는 것의 일부로서 깊이 버퍼를 이용하지 않는 애플리케이션들에 대해 깊이 버퍼에 저장될 수도 있다.
하나의 예에서, 본 개시물은 어느 픽셀 그룹들이 그래픽스 메모리 (Graphics Memory; GMEM) 로 로드될 필요가 없는지를 표시하는 마스크를 생성하는 단계를 포함하는 방법을 설명한다. 마스크는 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시한다. 방법은, 마스크로부터의 표시에 기초하여 GMEM 에 로드하는 단계 및 마스크로부터의 표시에 기초하여 GMEM 으로부터의 로드를 스킵하는 단계를 포함하는, 픽처의 타일 (tile) 을 렌더링하는 단계를 포함할 수도 있다.
다른 예에서, 본 개시물은 비디오 데이터를 디코딩하는 디바이스를 설명하며, 그 디바이스는 어느 픽셀 그룹들이 GMEM 으로 로드될 필요가 없는지를 표시하는 마스크를 생성하도록 구성된 비디오 디코더를 포함한다. 마스크는, 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시한다. 디바이스는, 스크린 상에 타일을 렌더링할 수도 있으며, 이는 마스크로부터의 표시에 기초하여 GMEM 에 로드하는 것 및 마스크로부터의 표시에 기초하여 GMEM 으로부터의 로드를 스킵하는 것을 포함한다.
다른 예에서, 본 개시물은 어느 픽셀 그룹들이 GMEM 으로 로드될 필요가 없는지를 표시하는 마스크를 생성하는 수단을 포함하는 디바이스를 설명한다. 마스크는, 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시한다. 디바이스는 또한, 마스크로부터의 표시에 기초하여 GMEM 에 로드하는 수단 및 마스크로부터의 표시에 기초하여 GMEM 으로부터의 로드를 스킵하는 수단을 포함하는, 스크린 상에 타일을 렌더링하는 수단을 포함한다.
다른 예에서, 본 개시물은 컴퓨터 프로그램 제품을 설명한다. 컴퓨터 프로그램 제품은, 실행될 때, 디바이스의 하나 이상의 프로세서들로 하여금, 어느 픽셀 그룹들이 GMEM 으로 로드될 필요가 없는지를 표시하는 마스크를 생성하게 하는 명령들을 저장한 컴퓨터 판독가능 저장 매체를 포함한다. 마스크는, 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시한다. 그 명령들은 또한, 프로세서로 하여금, 스크린 상에 타일을 렌더링하게 하며, 이는 마스크로부터의 표시에 기초하여 GMEM 에 로드하는 것 및 마스크로부터의 표시에 기초하여 GMEM 으로부터의 로드를 스킵하는 것을 포함한다.
하나 이상의 예들의 상세들은 첨부 도면들 및 이하의 설명에 기재되어 있다. 다른 특징들, 목적들, 및 이점들은 설명 및 도면들로부터, 및 청구항들로부터 명백할 것이다.
도 1 은 본 개시물의 그래픽스 메모리 로드 마스크를 구현하는데 이용될 수도 있는 일 예의 컴퓨팅 디바이스를 예시하는 블록 다이어그램이다.
도 2 는 본 개시물에 설명된 하나 이상의 예들에 따른 일 예의 GPU 및 메모리 구조를 예시하는 블록 다이어그램이다.
도 3 은 타일-기반 렌더링 ("비닝") 아키텍처에서의 프레임의 타일들을 예시하는 개념적 다이어그램이다.
도 4 는 본 개시물에 설명된 하나 이상의 예들에 따른 그래픽스 프로세싱 파이프라인의 일 예를 구현할 수도 있는 그래픽스 프로세싱 유닛 (GPU) 의 일 예를 예시하는 블록 다이어그램이다.
도 5 는 본 개시물에 설명된 하나 이상의 예들에 따른 일 예의 비닝 파이프라인을 예시하는 블록 다이어그램이다.
도 6 은 래스터화 (rasterisation) 의 일 예를 예시하는 다이어그램이다.
도 7 은 본 개시물에 설명된 하나 이상의 예들에 따른 일 예의 방법을 예시하는 플로우차트이다.
본 개시물은 일반적으로 그래픽스 프로세싱에 관한 것으로, 보다 구체적으로는 그래픽스 메모리 (graphics memory; GMEM) 로의 데이터의 로드들의 동작의 제어에 관한 것이다. GMEM 으로 데이터를 로드하는 것은 소중한 프로세싱 사이클들, 또는 다른 소중한 디바이스 리소스들을 소비 (take up) 할 수도 있기 때문에, 이러한 로드가 요구되지 않는다면 GMEM 으로 데이터를 로드하는 것을 스킵하는 것이 바람직할 수도 있다.
리소스, 이를 테면 GMEM 이 메모리의 영역을 클리어하기 위한 "Clear" 커맨드 또는 데이터의 블록들을 이동시키기 위한 Blt (block transfer) 커맨드를 통해 명시적으로 기록되지 않는 한, 드라이버 (예를 들어, 그래픽스 드라이버) 는 임의의 렌더링 커맨드들 (예를 들어, 드로우 커맨드들) 을 실행하기 전에 픽셀들 전부를 GMEM 으로 로드할 수도 있다. Clear 커맨드 및 Blt 커맨드는 렌더링된 구역 (region) 의 범위 (extents) 를 드라이버에게 부여하고, 그 드라이버에게, 로드될 필요가 없는 구역을 통지한다. 어떠한 다른 동작들도 디바이스 드라이버 인터페이스 (device driver interface; DDI) 를 통하여 드라이버에게 이러한 힌트를 부여하지 않는다. 실제로, 애플리케이션들은 매우 빈번하게 정상의 렌더링 커맨드들 (예를 들어, 드로우들) 을 통해 모든 픽셀을 기록할 것이다. Clear 커맨드 및 Blt 커맨드로, 애플리케이션은 "터치된" 디스플레이의 영역을 알고 있다. 픽셀들의 그룹은 기지의 동작이 픽셀들의 그룹에 대해 수행되었을 때 터치된다. 예를 들어, Blt 가 모든 픽셀이 청색이 되게 하기 위해 수행된다면, 모든 픽셀은 터치되고 시스템은 각각의 픽셀이 청색이라는 것을 알고 있다. 다른 예에서, 픽셀들의 그룹은 삼각형과 같은 프리미티브 (primitive) 를 형성할 수도 있으며, 이 픽셀들의 그룹은, 래스터화 (rasterisation) 동안, 삼각형에 대한 프리미티브가 픽셀들에 위치할 (fall on) 때 터치된다. 즉, 픽셀들은 프리미티브를 드로잉하는데 이용될 것이다.
애플리케이션이 Blt 또는 Clear 커맨드 후 모든 픽셀을 "터치 중" 이라는 것을 알고 있기 때문에, 기술적으로 그것은 낭비된 렌더링 동작이므로 리소스를 클리어하지 않을 것이고, 애플리케이션을 대부분의 플랫폼 상에서 더 느리게 실행시킬 것이다. 드라이버는 현재는, 애플리케이션이 모든 픽셀에 대해 렌더링했다는 것을 알기 위한 어떠한 방법도 없고, 따라서 픽셀들 전부를 GMEM 으로 로드해야 하는데, 이는 고가의 동작이다. 즉, 그것은 시스템 리소스들을 소비한다. 일부 UI 시나리오들에서, 렌더링 시간의 1/3 은 이들 픽셀들을 GMEM 으로 로드하는 것에 의해 낭비될 수도 있다.
하나의 예에서, 메인 메모리로부터 GMEM 으로의 로드, GMEM 에서의 렌더링, 및 메인 메모리에의 되기록 (write back) 은, 예를 들어, 픽셀들이 그들이 렌더링되었던 마지막 시간으로부터 변경되지 않은 경우들에 있어서 하나 이상의 픽셀들에 대해 회피될 수도 있다. 이것은, 이들 미변경된 픽셀들에 대한 데이터가 이미 메인 메모리에 저장되고, 일 시간으로부터 다음 시간까지 미변경될 것이기 때문이다. 데이터가 미변경되기 때문에, 메인 메모리로부터 GMEM 으로의 로드, GMEM 에서의 렌더링, 및 메인 메모리에의 되기록은, 이러한 프로세싱 후, 미변경된 픽셀들에 대한 메인 메모리에 저장된 데이터 자체가 미변경되므로 모두 스킵될 수도 있다. 예를 들어, 픽셀들의 상태가 알려지도록 기지의 동작이 픽셀 또는 픽셀들의 그룹에 대해 수행되었고 (예를 들어, 드로우), 및 따라서 픽셀들이 변경될 필요가 있는지가 결정될 수도 있을 때. 어떠한 변경도 요구되지 않는다면, GMEM 로드가 그 픽셀 또는 픽셀들의 그룹에 대해 스킵될 수도 있다. 이로써, 본 개시물의 하나의 예에 따르면, 어느 픽셀 또는 픽셀들이 GMEM 으로 로드될 필요가 없는지를 표시하는 그래픽스 메모리 로드 마스크가 생성될 수도 있다. 이것은, 픽셀들이 렌더링되었던 마지막 시간으로부터 변경되지 않은 그 픽셀들에 대해, 메인 메모리로부터 GMEM 으로의 로드, GMEM 에서의 렌더링, 및 메인 메모리에의 되기록이 회피 또는 스킵되는 것을 허용할 수도 있다.
도 1 은 본 명세서에 설명된 그래픽스 메모리 로드 마스크를 구현하는데 이용될 수도 있는 일 예의 컴퓨팅 디바이스 (2) 를 예시하는 블록 다이어그램이다. 컴퓨팅 디바이스 (2) 는 개인 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 컴퓨터 워크스테이션, 태블릿 컴퓨터, 비디오 게임 플랫폼 또는 콘솔, 무선 통신 디바이스 (이를 테면, 예를 들어, 모바일 전화기, 셀룰러 전화기, 위성 전화기, 및/또는 모바일 전화기 핸드셋), 랜드라인 전화기, 인터넷 전화기, 휴대용 비디오 게임 디바이스 또는 개인 휴대 정보 단말기 (PDA) 와 같은 핸드헬드 디바이스, 개인 뮤직 플레이어, 비디오 플레이어, 디스플레이 디바이스, 텔레비전, 텔레비전 셋톱 박스, 서버, 중간 네트워크 디바이스, 메인프레임 컴퓨터 또는 그래픽 데이터를 프로세싱 및/또는 디스플레이하는 임의의 다른 타입의 디바이스를 포함할 수도 있다.
도 1 의 예에 예시한 바와 같이, 컴퓨팅 디바이스 (2) 는, 사용자 입력 인터페이스 (4), CPU (6), 메모리 제어기 (8), 시스템 메모리 (10), 그래픽스 프로세싱 유닛 (GPU) (12), GMEM (14), 디스플레이 인터페이스 (16), 디스플레이 (18) 및 버스 (20) 를 포함한다. 사용자 입력 인터페이스 (4), CPU (6), 메모리 제어기 (8), GPU (12) 및 디스플레이 인터페이스 (16) 는 버스 (20) 를 이용하여 서로 통신할 수도 있다. 버스 (20) 는 다양한 버스 구조들, 이를 테면 제 3 세대 버스 (예를 들어, HyperTransport 버스 또는 InfiniBand 버스), 제 2 세대 버스 (예를 들어, 어드밴스드 그래픽스 포트 (Advanced Graphics Port) 버스, PCI (Peripheral Component Interconnect) 고속 버스 (Express bus), 또는 AXI (Advanced eXentisible Interface) 버스) 또는 다른 타입의 버스 또는 디바이스 인터커넥트 중 임의의 것일 수도 있다. 도 1 에 도시된 상이한 컴포넌트들 간의 특정 구성 (configuration) 의 버스들 및 통신 인터페이스들은 단지 예시일 뿐이며, 동일하거나 상이한 컴포넌트들을 가진 다른 구성들의 컴퓨팅 디바이스들 및/또는 다른 그래픽스 프로세싱 시스템들이 본 개시물의 기법들을 구현하는데 이용될 수도 있다는 것에 주목해야 한다.
CPU (6) 는 컴퓨팅 디바이스 (2) 의 동작을 제어하는 범용 또는 특수 목적 프로세서를 포함할 수도 있다. 사용자는 CPU (6) 로 하여금, 하나 이상의 소프트웨어 애플리케이션들을 실행하게 하도록 컴퓨팅 디바이스 (2) 에 입력을 제공할 수도 있다. CPU (6) 상에서 실행하는 소프트웨어 애플리케이션들은 오퍼레이팅 시스템, 워드 프로세서 애플리케이션, 이메일 애플리케이션, 스프레드시트 애플리케이션, 미디어 플레이어 애플리케이션, 비디오 게임 애플리케이션, 그래픽 사용자 인터페이스 애플리케이션 또는 다른 프로그램을 포함할 수도 있다. 사용자는 사용자 입력 인터페이스 (4) 를 통해 컴퓨팅 디바이스 (2) 에 커플링되는 키보드, 마우스, 마이크로폰, 터치 패드 또는 다른 입력 디바이스와 같은 하나 이상의 입력 디바이스들 (미도시) 을 통해 컴퓨팅 디바이스 (2) 에 입력을 제공할 수도 있다.
CPU (6) 상에서 실행하는 소프트웨어 애플리케이션들은 디스플레이 (18) 에의 그래픽스 데이터의 렌더링을 야기할 것을 CPU (6) 에 명령하는 하나 이상의 그래픽스 렌더링 명령들을 포함할 수도 있다. 예를 들어, 소프트웨어는 깊이 정보를 프로세싱하기 위해 깊이 버퍼를 이용할 것을 GPU (12) 에 요구하지 않는 UI 일 수도 있다. 이에 따라, 깊이 버퍼는 이하 더 상세히 논의될 바와 같이, 본 개시물의 기법들에 따라 그래픽스 메모리 로드 마스크를 구현하는데 이용될 수도 있다.
일부 예들에서, 소프트웨어 명령들은 그래픽스 애플리케이션 프로그래밍 인터페이스 (API), 이를 테면, 예를 들어, 오픈 그래픽스 라이브러리 (Open Graphics Library; OpenGL®) API, 오픈 그래픽스 라이브러리 임베디드 시스템들 (Open Graphics Library Embedded Systems; OpenGL ES) API, Direct3D API, X3D API, DirectX API, RenderMan API, WebGL API, 또는 임의의 다른 공공 또는 전용 표준 (public or proprietary standard) 그래픽스 API 에 따를 수도 있다. 그래픽스 렌더링 명령들을 프로세싱하기 위하여, CPU (6) 는 GPU (12) 로 하여금, 그래픽스 데이터의 렌더링의 일부 또는 전부를 수행하게 하도록 하나 이상의 그래픽스 렌더링 커맨드들을 GPU (12) 에 이슈할 수도 있다. 일부 예들에서, 렌더링될 그래픽스 데이터는 일 리스트의 그래픽스 프리미티브들, 예를 들어, 포인트들, 라인들, 삼각형들, 쿼드럴래터럴 (quadralateral) 들, 삼각형 스트립들 등을 포함할 수도 있다.
메모리 제어기 (8) 는 시스템 메모리 (10) 로 들어가고 이 시스템 메모리 (10) 밖으로 나오는 데이터의 전송을 용이하게 한다. 예를 들어, 메모리 제어기 (8) 는 메모리 판독 및 기록 커맨드들을 수신하고, 이러한 커맨드들을 시스템 메모리 (10) 에 대하여 서비스하여, 컴퓨팅 디바이스 (2) 내의 컴포넌트들에 대해 메모리 서비스들을 제공할 수도 있다. 메모리 제어기 (8) 는 시스템 메모리 (10) 에 통신적으로 커플링된다. 메모리 제어기 (8) 는 도 1 의 일 예의 컴퓨팅 디바이스 (2) 에서, CPU (6) 와 시스템 메모리 (10) 양자와는 별개인 프로세싱 모듈인 것으로서 예시되지만, 다른 예들에서는, 메모리 제어기 (8) 의 기능성의 일부 또는 전부가 CPU (6) 와 시스템 메모리 (10) 중 하나 또는 양자 상에서 구현될 수도 있다.
시스템 메모리 (10) 는 컴퓨팅 디바이스 (2) 의 다른 컴포넌트들에 의한 이용을 위한 및/또는 그 다른 컴포넌트들에 의해 생성된 정보를 추가적으로 저장할 수도 있다. 예를 들어, 시스템 메모리 (10) 는 GPU (12) 에 대한 디바이스 메모리의 역할을 할 수도 있고 GPU (12) 에 의해 수행된 동작들로부터 발생하는 데이터는 물론 GPU (12) 에 의해 동작되는 데이터를 저장할 수도 있다. 예를 들어, 시스템 메모리 (10) 는 텍스처 버퍼들, 깊이 버퍼들, 스텐실 버퍼들, 버텍스 버퍼들, 프레임 버퍼들 등의 임의의 조합을 저장할 수도 있다. 시스템 메모리 (10) 는, 예를 들어 랜덤 액세스 메모리 (RAM), 정적 RAM (SRAM), 동적 RAM (DRAM), 판독 전용 메모리 (ROM), 소거가능한 프로그램가능 ROM (EPROM), 전기적 소거가능한 프로그램가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들과 같은 하나 이상의 휘발성 또는 비휘발성 메모리들 또는 저장 디바이스들을 포함할 수도 있다.
GPU (12) 는 하나 이상의 그래픽스 프리미티브들을 디스플레이 (18) 에 렌더링하기 위해 그래픽스 동작들을 수행하도록 구성될 수도 있다. 따라서, CPU (6) 상에서 실행하는 소프트웨어 애플리케이션들 중 하나가 그래픽스 프로세싱을 요구할 때, CPU (6) 는 디스플레이 (18) 에의 렌더링을 위해 그래픽스 커맨드들 및 그래픽스 데이터를 GPU (12) 에 제공할 수도 있다. 그래픽스 데이터는, 예를 들어, 드로잉 커맨드들, 상태 정보, 프리미티브 정보, 텍스처 정보 등을 포함할 수도 있다. GPU (12) 에는, 일부 경우들에서, CPU (6) 보다, 복잡한 그래픽 관련 동작들의 보다 효율적인 프로세싱을 제공하는 고도 병렬 구조가 내장될 수도 있다. 예를 들어, GPU (12) 는 병렬 방식으로 다수의 버텍스들 또는 픽셀들에 대해 동작하도록 구성되는 복수의 프로세싱 엘리먼트들을 포함할 수도 있다. GPU (12)의 고도 병렬 성질은, 일부 경우들에서, GPU (12) 가 CPU (6) 를 이용하여 디스플레이 (18) 에 장면들을 직접 드로잉하는 것보다 더 빨리 디스플레이 (18) 상으로 그래픽스 이미지들 (예를 들어, GUI들 및 2 차원 (2D) 및/또는 3 차원 (3D) 그래픽스 장면들) 을 드로잉하는 것을 허용할 수도 있다.
GPU (12) 는, 일부 경우들에서, 컴퓨팅 디바이스 (2) 의 마더보드에 통합될 수도 있다. 다른 경우들에서, GPU (12) 는 컴퓨팅 디바이스 (2) 의 마더보드에서 일 포트에 설치되는 그래픽스 카드 상에 존재할 수도 있고, 또는 다르게는 컴퓨팅 디바이스 (2) 와 상호동작하도록 구성된 주변 디바이스 내에 통합될 수도 있다. GPU (12) 는 하나 이상의 프로세서들, 이를 테면, 하나 이상의 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 디지털 신호 프로세서들 (DSP들), 또는 다른 등가의 집적 또는 이산 로직 회로부 (circuitry) 를 포함할 수도 있다.
GPU (12) 는 GMEM (14) 에 직접 커플링될 수도 있다. 따라서, GPU (12) 는 반드시 버스 (20) 를 이용할 필요 없이 GMEM (14) 으로부터 데이터를 판독하고 그 GMEM (14) 에 데이터를 기록할 수도 있다. 즉, GPU (12) 는 넌-로컬 메모리 대신에, 로컬 스토리지를 이용하여 데이터를 로컬로 프로세싱할 수도 있다. 이것은 과중한 버스 트랙픽을 경험할 수도 있는, GPU (12) 가 버스 (20) 를 통해 데이터를 판독 및 기록할 필요성을 제거함으로써, GPU (12) 가 보다 효율적인 방식으로 동작하는 것을 허용한다. GMEM (14) 는, 예를 들어 랜덤 액세스 메모리 (RAM), 정적 RAM (SRAM), 동적 RAM (DRAM), 소거가능한 프로그램가능 ROM (EPROM), 전기적 소거가능한 프로그램가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들과 같은 하나 이상의 휘발성 또는 비휘발성 메모리들 또는 저장 디바이스들을 포함할 수도 있다.
CPU (6) 및/또는 GPU (12) 는 시스템 메모리 (10) 내에 할당되는 프레임 버퍼에 렌더링된 이미지 데이터를 저장할 수도 있다. 디스플레이 인터페이스 (16) 는 프레임 버퍼로부터 데이터를 취출하고 렌더링된 이미지 데이터에 의해 표현된 이미지를 디스플레이하도록 디스플레이 (18) 를 구성할 수도 있다. 일부 예들에서, 디스플레이 인터페이스 (16) 는 프레임 버퍼로부터 취출된 디지털 값들을 디스플레이 (18) 에 의해 소모가능한 아날로그 신호로 컨버팅하도록 구성되는 디지털-투-아날로그 컨버터 (DAC) 를 포함할 수도 있다. 다른 예들에서, 디스플레이 인터페이스 (16) 는 프로세싱을 위해 디지털 값들을 직접 디스플레이 (18) 에 패스할 수도 있다. 디스플레이 (18) 는 모니터, 텔레비전, 프로젝션 디바이스, 액정 디스플레이 (LCD), 플라즈마 디스플레이 패널, 발광 다이오드 (LED) 어레이, 음극선관 (CRT) 디스플레이, 전자 페이퍼, 표면 전도 전자 방출 디스플레이 (surface-conduction electron-emitted display; SED), 레이저 텔레비전 디스플레이, 나노결정 디스플레이 또는 다른 타입의 디스플레이 유닛을 포함할 수도 있다. 디스플레이 (18) 는 컴퓨팅 디바이스 (2) 내에 통합될 수도 있다. 예를 들어, 디스플레이 (18) 는 모바일 전화기 핸드셋의 스크린일 수도 있다. 대안으로, 디스플레이 (18) 는 유선 또는 무선 통신 링크를 통해 컴퓨터 디바이스 (2) 에 커플링된 스탠드-얼론 디바이스일 수도 있다. 예를 들어, 디스플레이 (18) 는 케이블 또는 무선 링크를 통해 개인 컴퓨터에 접속된 평판 디스플레이 또는 컴퓨터 모니터일 수도 있다.
도 2 는 본 개시물에 설명된 하나 이상의 예들에 따른 GPU (12), 깊이 버퍼 (22), GMEM (14), 및 시스템 메모리 (10) 를 포함하는 컴퓨팅 디바이스 (2) 의 일 예의 시스템 또는 서브-시스템 (136) 을 예시하는 블록 다이어그램이다. 도 2 는 GPU들 (12) 과 버텍스 버퍼들과 GMEM (14) 간에 또한 행해질 수도 있는 가능한 기능적 접속들과 관련된 더 많은 상세를 제공한다. 일 예에서, GPU (12) 는 어느 픽셀 그룹들이 GMEM (14) 으로부터 로드될 필요가 없는지를 표시하는 그래픽스 메모리 로드 마스크를 생성한다. 일부 예들에서는, 깊이 버퍼 (22) 는 GPU (12) 및/또는 다른 컴포넌트들과 함께 칩 상에 있을 수도 있다. 다른 예들에서는, 깊이 버퍼 (22) 는 별개의 버퍼일 수도 있다.
본 명세서에 설명한 바와 같이, 일 예에서, 그래픽스 메모리 로드 마스크는 비닝 패스 (binning pass) 동안 생성될 수도 있다. 그래픽스 메모리 로드 마스크는 GMEM (14) 로드들이 필요한 때 및 그 로드들이 스킵될 수도 있는 때를 표시한다. 즉, 픽셀 또는 픽셀들의 그룹이 GMEM (14) 로드를 요구하는 때 및 그들이 GMEM (14) 로드를 요구하지 않는 때. 일부 예들에서, 그래픽스 메모리 로드 마스크 (24) 는 깊이 버퍼 (22) 에 저장될 수도 있다. 이것은, 깊이 버퍼 (22) 가 다르게 이용되고 있지 않을 때 일어날 수도 있다. 예를 들어, 깊이 버퍼 (22) 가 3D 그래픽스를 위해 필요하지 않을 때, 그 깊이 버퍼는 본 명세서에 설명된 것들과 같은 다른 목적들을 위해 이용될 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는 픽셀 그룹이 터치될 때 그 픽셀 그룹이 GMEM (14) 으로부터 로드될 필요가 없다는 것을 표시한다. 픽셀들의 그룹은, 이하 도 6 에 대하여 설명한 바와 같이, 래스터화 동안, 프리미티브가 픽셀들의 그룹에 위치할 때 터치된다. 즉, 픽셀 또는 픽셀들의 그룹이 프리미티브를 드로잉하는데 이용될 때.
다양한 예들에서, 스크린에의 디스플레이를 위해 비디오 데이터를 프로세싱하는 것은, 시스템 메모리 (10) 로부터 GMEM (14) 으로의 로드, GMEM (14) 에서의 렌더링, 및 시스템 메모리 (10) 에의 되기록을 포함할 수도 있다. 본 개시물에 따른 일 예는 GMEM (14) 으로의 불필요한 로드들을 회피할 수도 있다. 이에 따라, 시스템 메모리 (10) 로부터 GMEM (14) 으로의 로드, GMEM (14) 에서의 렌더링, 및 시스템 메모리 (10) 에의 되기록은, 예를 들어, 픽셀들이 그들이 렌더링되었던 마지막 시간으로부터 변경되지 않은 경우들에 있어서 회피될 수도 있다.
일 예에서, 픽셀들이 렌더링되었던 마지막 시간으로부터 변경되지 않은 그 픽셀들에 대해, 시스템 메모리 (10) 로부터 GMEM (14) 으로의 로드, GMEM (14) 에서의 렌더링, 및 시스템 메모리 (10) 에의 되기록이 스킵될 수도 있도록 어느 픽셀 그룹들이 GMEM (14) 으로부터 로드될 필요가 없는지를 표시하는 그래픽스 메모리 로드 마스크 (24) 가 생성될 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는 스크린 이미지들에 대한 깊이를 프로세싱하는 것의 일부로서 깊이 버퍼 (22) 를 이용하지 않는 애플리케이션들에 대해, 도 4 에 예시한 바와 같이 깊이 버퍼 (22) 에 저장될 수도 있다. 깊이 정보를 위해 깊이 버퍼 (22) 를 이용하는 것들과 같은 다른 예들에서는, 다른 메모리가 그래픽스 메모리 로드 마스크 (24) 를 저장하는데 이용될 수도 있다.
본 개시물의 하나의 예에서, 컴퓨팅 디바이스 (2) 의 GPU (12) 는 타일-기반 렌더링을 수행하도록 구성될 수도 있다. 타일-기반 렌더링 (때로는 비닝으로 지칭) 은 장면의 하나의 프레임을, 그 프레임을 더 작은 부분들 (예를 들어, 직사각형 타일들 또는 "빈들") 로 쪼개고 이들 부분들 각각을 별도로 렌더링함으로써 렌더링한다. 타일-기반 렌더링은 모바일 애플리케이션들의 경우와 같이, 거의 전용이 아닌 (little dedicated) 그래픽스 메모리가 이용가능한 애플리케이션들에 대해 유용한다.
보다 구체적으로는, 다양한 예들에서, 타일-기반 렌더링은 표면, 예를 들어, 디스플레이를 "빈들" 로 스플리팅할 수도 있다. 전체 디스플레이를 한꺼번에 렌더링하기 보다는, 각각의 빈이 개별적으로 렌더링될 수도 있다. 일부 예들에서, 빈 사이즈는 포맷에 의해 결정되고 GMEM 의 총 양으로 분할된 타겟 해상도를 렌더링할 수도 있다. 즉, GMEM 의 사이즈는 특정 빈 내의 모든 픽셀들에 대한 정보가 동시에 GMEM 에 저장될 수도 있도록 빈들의 사이즈와 관련될 수도 있다. 각각의 빈에 대한 모든 픽셀들은 이 버퍼, 즉 GMEM 에 저장될 수도 있다. 추가적으로, GMEM 은 GPU 의 능력들에 매칭되는 높은 대역폭을 가질 수도 있다.
도 3 은 도 1 의 컴퓨팅 디바이스 (2) 와 함께 이용될 수도 있는 타일-기반 렌더링 아키텍처에서의 프레임의 타일들을 예시하는 개념적 다이어그램이다. 프레임 (32) 은 복수의 타일들, 이를 테면 타일 (34) 로 분할될 수도 있다. 그래픽스 프로세싱은 그 후 전체 프레임을 렌더링하기 위해 타일 단위 기준으로 (on a per-tile basis) 수행될 수도 있다.
본 개시물의 기법들에 따른 일 예에서, 어느 픽셀들이 변경되지 않았는지를 결정하는 것이 유익할 수도 있다. 예를 들어, 픽셀들의 상태가 알려지도록 기지의 동작이 픽셀 또는 픽셀들의 그룹에 대해 수행되었고, 및 따라서 픽셀들이 변경될 필요가 있는지가 결정될 수도 있을 때. 어떠한 변경도 요구되지 않는다면, GMEM 로드는 그 픽셀 또는 픽셀들의 그룹에 대해 스킵될 수도 있다. 또한, 타일 (34) 이 프로세싱됨에 따라 이 정보에 대해 계속 파악할 필요가 있을 수도 있다. 일 예에서, 픽셀들이 렌더링되었던 마지막 시간으로부터 변경되지 않은 그 픽셀들에 대해, 메인 메모리로부터 GMEM 으로의 로드, GMEM 에서의 렌더링, 및 메인 메모리에의 되기록이 스킵될 수도 있도록 어느 픽셀 그룹들이 GMEM 으로부터 로드될 필요가 없는지를 표시하는 그래픽스 메모리 로드 마스크 (24) 가 생성될 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는 스크린 이미지들에 대한 깊이를 프로세싱하는 것의 일부로서 깊이 버퍼 (22) 를 이용하지 않는 애플리케이션들에 대해 깊이 버퍼 (22) 에 저장될 수도 있다.
도 4 는 본 개시물에 설명된 하나 이상의 예들에 따른 그래픽스 프로세싱 파이프라인의 일 예를 구현할 수도 있는 그래픽스 프로세싱 유닛 (GPU) 의 일 예를 예시하는 블록 다이어그램이다. 예를 들어, GPU (12) 는 GMEM (14) 으로의 불필요한 데이터 카피들을 회피하기 위해 깊이 버퍼 (22) 를 그래픽스 메모리 로드 마스크 (24) 로서 이용하기 위한 기법들을 구현할 수도 있다. 일부 경우들에서는, 다른 메모리 위치들이 그래픽스 메모리 로드 마스크 (24) 로서 이용될 수도 있다.
도 4 는 그래픽스 프로세싱 파이프라인을 구현할 수도 있는 일 예의 GPU (12) 를 예시한다. 그래픽스 프로세싱 파이프라인은 GPU (12) 상에서 실행하는 소프트웨어 또는 펌웨어에 의해 정의한 바와 같은 기능들을 수행하는 것 및 매우 특정한 기능들을 수행하도록 하드와이어되는 고정-기능 유닛들에 의한 기능들을 수행하는 것을 포함한다. GPU (12) 상에서 실행하는 소프트웨어 또는 펌웨어는 셰이더 (shader) 들로 지칭될 수도 있고, 그 셰이더들은 GPU (12) 의 하나 이상의 셰이더 코어들 상에서 실행할 수도 있다. 셰이더들은 사용자가 임의의 가능한 방식으로 원하는 태스크들을 수행하도록 셰이더들을 설계할 수 있기 때문에 사용자들에게 기능적 가요성을 제공한다. 그러나, 고정-기능 유닛들은 그 고정-기능 유닛들이 태스크들을 수행하는 방식에 대해 하드와이어된다. 이에 따라, 그 고정-기능 유닛들은 많은 기능적 가요성을 제공하지 않을 수도 있다.
도 4 에 예시된 그래픽스 프로세싱 파이프라인은 Direct3D 11 에 의해 정의한 바와 같이 실질적으로 그래픽 프로세싱 파이프라인이다. 이 예에서, GPU (12) 는 입력 어셈블러 스테이지 (118), 버텍스 셰이더 스테이지 (120), 헐 (hull) 셰이더 스테이지 (122), 테셀레이션 스테이지 (124), 도메인 셰이더 스테이지 (126), 지오메트리 셰이더 스테이지 (128), 래스터라이저 스테이지 (130), 픽셀 셰이더 스테이지 (132), 및 출력 병합 스테이지 (134) 중 하나 이상을 실행할 수도 있다. GPU (12) 는 예시된 것들보다 더 많은 스테이지들을 포함할 수도 있으며, 일부 예들에서, GPU (12) 는 반드시 예시된 스테이지들 전부를 포함할 필요는 없을 수도 있다. 또한, 그 스테이지들의 특정 순서가 예시를 목적으로 제공되며, 제한하는 것으로 간주되어서는 안된다. 예를 들어, 이전의 DirectX 사양들에 따라 정의된 그래픽스 파이프라인들은 헐 셰이더 스테이지, 테셀레이션 스테이지, 및 도메인 셰이더 스테이지를 포함하지 않을 수도 있다. 지오메트리 셰이더 스테이지는 또한 옵션일 수도 있다.
일부 예들에서, CPU (6) 상에서의 애플리케이션들의 실행은 CPU (6) 로 하여금, 뷰잉가능한 콘텐츠를 형성하기 위해 함께 연결하는 복수의 프리미티브들을 생성하게 한다. 그 프리미티브들의 예들은 포인트들, 라인들, 삼각형들, 정사각형들, 또는 임의의 다른 타입의 다각형을 포함한다. CPU (6) 는 이들 프리미티브들을 그들 각각의 버텍스들에 의해 정의할 수도 있다. 예를 들어, CPU (6) 는 버텍스들에 대한 좌표들 및 컬러 값들을 정의할 수도 있다. 그 좌표 값들은 3D 좌표들 또는 2D 좌표들일 수도 있다.
그래픽스 동작들을 수행하기 위해, GPU (12) 는 그래픽스 프로세싱 파이프라인을 구현할 수도 있다. 그래픽스 프로세싱 파이프라인은 GPU (12) 상에서 실행하는 소프트웨어 또는 펌웨어에 의해 정의한 바와 같은 기능들을 수행하는 것 및 매우 특정한 기능들을 수행하도록 하드와이어되는 고정-기능 유닛들에 의한 기능들을 수행하는 것을 포함한다. GPU (12) 상에서 실행하는 소프트웨어 또는 펌웨어는 셰이더들로 지칭될 수도 있으며, 그 셰이더들은 GPU (12) 의 하나 이상의 셰이더 코어들 상에서 실행할 수도 있다. 셰이더들은 사용자가 임의의 가능한 방식으로 원하는 태스크들을 수행하도록 셰이더들을 설계할 수 있기 때문에 사용자들에게 기능적 가요성을 제공한다. 그러나, 고정-기능 유닛들은 그 고정-기능 유닛들이 태스크들을 수행하는 방식에 대해 하드와이어된다. 이에 따라, 고정-기능 유닛들은 많은 기능적 가요성을 제공하지 않을 수도 있다.
도 4 에 예시된 그래픽스 프로세싱 파이프라인은 Direct3D 11 에 의해 정의한 바와 같이 실질적으로 그래픽 프로세싱 파이프라인이다. 이 예에서, GPU (12) 는 입력 어셈블러 스테이지 (118), 버텍스 셰이더 스테이지 (120), 헐 셰이더 스테이지 (122), 테셀레이션 스테이지 (124), 도메인 셰이더 스테이지 (126), 지오메트리 셰이더 스테이지 (128), 래스터라이저 스테이지 (130), 픽셀 셰이더 스테이지 (132), 및 출력 병합 스테이지 (134) 중 하나 이상을 포함할 수도 있다. GPU (112) 는 예시된 것들보다 더 많은 스테이지들을 포함할 수도 있으며, 일부 예들에서, GPU (112) 는 반드시 예시된 스테이지들 전부를 포함할 필요는 없을 수도 있다. 또한, 스테이지들의 특정 순서가 예시를 목적으로 제공되며, 제한하는 것으로 간주되어서는 안된다. 예를 들어, 이전의 DirectX 사양들에 따라 정의된 그래픽스 파이프라인들은 헐 셰이더 스테이지, 테셀레이션 스테이지, 및 도메인 셰이더 스테이지를 포함하지 않을 수도 있다. 지오메트리 셰이더 스테이지는 또한 옵션일 수도 있다.
래스터라이저 스테이지 (130) 는 지오메트리 셰이더 스테이지 (128) 로부터 프리미티브들을 수신하고 그 프리미티브들을 디스플레이를 위해 픽셀들로 컨버팅한다. 예를 들어, 프리미티브들은 그 프리미티브들의 상호접속을 표시하는 벡터들로서 정의될 수도 있고, 이미지가 디스플레이될 디스플레이에 독립적인 좌표 공간에서 정의될 수도 있다. 래스터라이저 스테이지 (130) 는 이들 벡터들을 디스플레이 좌표들로 컨버팅하고, 가려지는 (occluded) 프리미티브들 내의 포인트들을 제거하는 것과 같은 임의의 추가적인 기능들을 수행한다.
픽셀 셰이더 스테이지 (132) 는 래스터라이저 스테이지 (130) 에 의해 출력한 바와 같은 픽셀들을 수신하고, 디스플레이될 그 픽셀들 각각에 컬러 값들을 할당하도록 포스트 프로세싱을 수행한다. 예를 들어, 픽셀 셰이더 스테이지 (132) 는 시스템 메모리 (10) 에 저장된 상수 값 (constant value) 들, 시스템 메모리 (10) 에 저장된 텍스처 데이터, 및 임의의 다른 데이터를 수신하여 컬러 값들과 같은 픽셀 당 (per-pixel) 출력들을 생성할 수도 있다. 픽셀 셰이더 스테이지 (132) 는 또한 픽셀들의 불투명성 (opaqueness) 을 표시하는 불투명도 값 (opacity value) 들을 출력할 수도 있다.
출력 병합 스테이지 (134) 는 임의의 최종 픽셀 프로세싱을 수행할 수도 있다. 예를 들어, 출력 병합 스테이지 (134) 는 픽셀들 중 임의의 픽셀들이 디스플레이되지 않게 제거되어야 하는지 여부를 추가 결정하기 위해 깊이 정보를 활용할 수도 있다. 출력 병합 스테이지 (134) 는 또한, 최종 픽셀 값들을 생성하기 위해 블렌딩 동작들을 수행할 수도 있다.
출력 병합 스테이지 (134) 는 일반적으로는 시스템 메모리 (10) 내에 위치하지만 GPU (12) 내에 위치될 수도 있는 프레임 버퍼에 최종 픽셀 값들을 출력할 수도 있다. 디스플레이 프로세서 (미도시) 는 프레임 버퍼로부터 픽셀 값들을 취출하고, 컴퓨팅 디바이스 (2) 의 디스플레이 (미도시) 의 픽셀들이 그에 따라 픽셀 값들에 조명하게 하여 디스플레이로 하여금 그 이미지를 디스플레이하게 할 수도 있다.
도 5 는 본 개시물에 설명된 하나 이상의 예들에 따른 일 예의 비닝 파이프라인을 예시하는 블록 다이어그램이다. GPU (12) 는 비닝 파이프라인을 실행할 수도 있다. 비닝 파이프라인은 도 4 에 도시된 풀 렌더링 파이프라인의 단순화된 버전이다. 테셀레이션 스테이지들 (즉, HS/TS/DS) 및 옵션의 지오메트리 셰이더를 포함하는 그래픽스 파이프라인들의 경우, 비닝 파이프라인 (160) 은 비닝 버텍스 셰이더 (162), 비닝 헐 셰이더 (164), 비닝 테셀레이터 (166), 비닝 도메인 셰이더 (168), 옵션의 비닝 지오메트리 셰이더 (170), 비닝 래스터라이저 (172), 및 비닝 깊이 테스트 (174) 를 포함할 수도 있다.
비닝 버텍스 셰이더 (162) 는 또한, 비닝 셰이더로 지칭될 수도 있다. 비닝 셰이더는 버텍스 셰이더의 변형된 버전일 수도 있으며, 여기서 유일한 출력은 버텍스 포지션이다. 버텍스 셰이더에 의해 통상 수행되는 모든 파라미터 엑스포트 (export) 들은 그들과 관련된 임의의 계산들도 물론 비닝 셰이더로부터 제거될 수 있다. 일 예에서, 버텍스 셰이더 (162) 는 그래픽스 메모리 로드 마스크 (24) 를 깊이 버퍼 (22) 에 기록할 수도 있다. 예를 들어, 비닝 파이프라인에서의 비닝 버텍스 셰이더는 본 개시물에 설명된 기법들을 이용하여 그래픽스 메모리 로드 마스크 (24) 를 생성하도록 구성될 수도 있다. 대안으로, 비닝 파이프라인에서의 비닝 버텍스 셰이더는 본 개시물에 설명된 기법들을 이용하여 깊이 버퍼 (22) 에서 그래픽스 메모리 로드 마스크 (24) 를 생성하기 위해 변형될 수도 있다. 예를 들어, 본 명세서에 설명한 바와 같이, 그래픽스 메모리 로드 마스크 (24) 는 비닝 패스 동안 생성될 수도 있다. 이 패스는 비닝 셰이더 (162) 에 의해 수행될 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는 GMEM (14) 로드들이 필요한 때 및 그들이 스킵될 수도 있는 때를 표시한다. 즉, 픽셀 또는 픽셀들의 그룹이 GMEM (14) 로드를 요구하는 때 및 그들이 GMEM (14) 로드를 요구하지 않는 때. 일부 예들에서, 비닝 버텍스 셰이더 (162) 는 그래픽스 메모리 로드 마스크 (24) 를 깊이 버퍼 (22) 에 저장할 수도 있다. 이것은 깊이 버퍼 (22) 가 다르게 이용되고 있지 않을 때 일어날 수도 있다. 예를 들어, 깊이 버퍼 (22) 가 3D 그래픽스를 위해 필요하지 않을 때, 그 깊이 버퍼는 본 명세서에 설명된 것들과 같은 다른 목적들을 위해 이용될 수도 있다.
비닝 버텍스 셰이더 (162) 에 의해 출력된 버텍스들로부터, 비닝 헐 셰이더 (64), 비닝 테셀레이터 (166), 및 비닝 도메인 셰이더는, 테셀레이션이 인에이블되는 상황들에서 도 4 의 테셀레이션 파이프라인과 동일한 방식으로 테셀레이트된 출력 프리미티브들을 생성한다. 비닝 헐 셰이더 (164) 및 비닝 테셀레이터 (166) 는 도 4 의 테셀레이션 파이프라인에서의 대응하는 스테이지들에 대해 최적화될 수도 있다. 특히, 비닝 헐 셰이더 (164) 및 비닝 테셀레이터 (166) 는 단지 포지션 관련 변수들만을 컴퓨팅하도록 최적화될 수도 있다.
지오메트리 셰이더가 풀 렌더링 파이프라인을 위해 인에이블된다면, 비닝 파이프라인 (160) 은 또한, 비닝 테셀레이터에 의해 생성된 테셀레이트된 출력 프리미티브들로부터 추가적인 출력 프리미티브들을 생성하는 비닝 지오메트리 셰이더 (170) 를 포함할 수도 있다.
비닝 래스터라이저 (172) 는 2D 공간들에서 출력 프리미티브들의 저해상도 (low-resolution) 표현 (즉, 픽셀들) 을 생성한다. 각각의 픽셀은 최종 이미지에서 픽셀 영역 (예를 들어, 4x4 픽셀 영역) 을 표현한다. 생성된 저해상도 픽셀들은 2 개의 값들을 가질 수 있다 : 부분 커버 (partially covered) 또는 완전 커버 (fully covered). 비닝 래스터라이저 (172) 는 정상의 래즈터화 스테이지와 동일한 컬링 룰 (culling rule) 들 (페이스니스 (faceness), 프러스텀 (frustum) 등) 을 이용하며, 따라서 장면에 실제로 보이는 그 삼각형들만을 생성한다.
비닝 패스에서의 최종 스테이지는 비닝 깊이 테스트 유닛 (174) (저해상도 Z 테스트라고도 불림) 이다. 일부 경우들에서, 비닝 깊이 테스트 유닛 (174) 은 출력 프리미티브들로부터 래스터화된 픽셀들이 최종 장면에서 보이는 것을 결정한다.
일부 3D 래스터화 파이프라인들은 새롭게 프로세싱된 픽셀이 이전에 렌더링된 픽셀에 의해 보기 어렵게 되거나 또는 이전에 랜더링된 픽셀 "아래에" 있는지 여부를 결정하기 위해 "깊이 테스트" 를 활용한다. 예를 들어, 도 4 에 예시된 파이프라인이 이러한 기능을 수행할 수도 있다. 깊이 테스트는 새롭게 프로세싱된 픽셀이 이전에 렌더링된 픽셀에 의해 보기 어렵게 되는지 여부를 결정하기 위해 픽셀 셰이더 스테이지 (132) 동안 깊이 값들이 저장 및 체크되는 깊이 버퍼 (22) 에 액세스하는 것을 수반할 수도 있다. 고정 원점 (예를 들어, 카메라 또는 뷰어 관점 (point-of-view)) 에서 본질적으로 임의의 보이는 픽셀의 거리는 깊이 버퍼 (22) 에 깊이 값으로서 저장된다. 후속하여, 다른 프로세싱된 픽셀은 스크린 상의 동일한 포지션을 점유하려고 시도할 수도 있다. 이전에 렌더링된 픽셀의 픽셀 값은 판독되어 새롭게 프로세싱된 픽셀의 값과 비교될 수도 있다. 그 비교가 새로운 픽셀이 원점에 더 가깝다는 것을 표시한다면, 그것은 보이는 것으로 간주되고, 깊이 버퍼 (22) 의 이전의 깊이 값에는 새로운 픽셀의 깊이 값이 겹쳐쓰인다. 새로운 픽셀은 파이프라인에 의해 추가 프로세싱되고, 결국 프레임 버퍼에서 렌더링된다. 한편, 그 비교 결과가 새로운 픽셀이 원점에서 더 멀리 있다는 것을 표시한다면, 그것은 보이지 않는 것으로 간주되고, 새로운 픽셀은 폐기되고 깊이 버퍼 (22) 의 이전의 깊이 값은 유지된다. 이 프로세스는 본 명세서에 은면 소거 (Hidden Surface Removal; HSR) 로 지칭된다. 3D 이미지들을 이용하지 않는 예들에서, 깊이 버퍼 (22) 는 다른 기능성을 제공하기 위해 이용가능할 수도 있다. 예를 들어, 본 개시물의 기법들에 따르면, 깊이 버퍼 (22) 는 그래픽스 메모리 로드 마스크 (24) 를 저장하는데 이용될 수도 있다.
본 개시물의 기법들에 따른 하나의 예에서, UI, 워드 프로세서들, 스프레드시트들, 파이낸셜 프로그램들, 및 2D 또는 3D 이미지들을 프로세싱하기 위해 깊이 버퍼 (22) 를 이용하지 않을 수도 있는 다른 프로그램들과 같은 애플리케이션들에 대해, 드라이버는 그래픽스 메모리 로드 마스크 (24) 를 위해 깊이 버퍼 (22) 에 공간을 할당할 수도 있다. 깊이 버퍼 (22) 에서의 공간은 이용가능한 가장 낮은 정밀도 포맷 (lowest precision format) 을 이용할 수도 있다. 즉, 그래픽스 메모리 로드 마스크 (24) 는 깊이 버퍼 (22) 의 특정 메모리 위치에서 비트들 각각을 필요로 하지 않을 수도 있다. 예를 들어, 1 비트가 GMEM 로드가 요구될 수도 있고 또는 요구되지 않을 수도 있다는 것을 표시하기 위해 각각의 픽셀 또는 픽셀들의 그룹에 대해 이용될 수도 있다. 일반적으로, 깊이 버퍼 (22) 는 저장 위치 당 1 비트보다 더 클 것이다. 일부 예들에서, 더 많은 비트들이 픽셀 또는 픽셀들의 그룹에 관한 추가적인 정보를 제공하는데 이용될 수도 있다. 예를 들어, 보조 정보가 추가적인 비트들을 이용하여 저장될 수도 있다. 다른 예에서, 추가적인 비트들은 GMEM 로드가 요구된다는 표시 또는 깊이 테스팅과 관련된 또는 미관련된 다른 목적들을 위해 이용될 수도 있다. 이것은, 일 목적을 위한 버퍼에의 기록이 다른 목적을 위해 이용된 임의의 비트들을 우연히 변경하지 않도록 버퍼 내의 비트들을 업데이트하기 위해 판독-변경-기록 스킴 (read-change-write scheme) 의 이용을 요구할 수도 있다.
비닝 패스 동안, 본 개시물의 기법들을 구현하는 GPU 및/또는 GPU 드라이버는, 버텍스가 프로세싱될 때 특정한 "깊이 값" 을 출력하도록, 비닝 버텍스 셰이더를 변형시키거나, 또는 GPU (12) 로 하여금, 변형된 비닝 버텍스 셰이더를 로드하게 할 수도 있다. 그러나, 그 "깊이 값" 은, 깊이 버퍼 (22) 에 저장되는 동안, GMEM 로드가 특정 픽셀 또는 픽셀들의 세트에 대해 요구되는지 여부와 실제로 관련된다. 그 값은, GMEM 로드 (예를 들어, 메인 메모리로부터 GMEM 으로의 로드) 가 필요한지 또는 필요하지 않은지를 표시하는 비트일 수도 있으며, 실제로는 전혀 깊이 값이 아니다. 이 값은 각각의 저장 위치에 대해 단일 비트를 이용하여 저장될 수도 있다.
일 예에서, 때로는 언-리졸브 패스 (un-resolve pass) 로도 지칭되는, 메인 메모리로부터 GMEM 으로의 로드 동안, 가능하게는 깊이 버퍼 (22) 에 저장된, 그래픽스 메모리 로드 마스크 (24) 에의 액세스가 인에이블될 수도 있으며, 넌-제로 깊이 값을 갖는 임의의 픽셀이 렌더링 패스를 실행 (예를 들어, 그래픽스 파이프라인을 실행) 하기 이전에 폐기될 수도 있다. 즉, 넌-제로 깊이 값은, 그 넌-제로 깊이 값이 필요한지를 결정하기 위해 전체 파이프라인을 통하여 넌-제로 깊이 값을 프로세싱하기 보다는, 추가 (further) 그래픽스 파이프라인 프로세싱으로부터 거부 또는 스킵될 수도 있다. 메인 메모리로부터 GMEM 으로의 로드 동안, 데이터는 시스템 메모리로부터 다시 GMEM 으로 카피될 필요가 있다. 메인 메모리로부터 GMEM 으로의 이들 로드들은 성능에 부정적으로 영향을 줄 수도 있고, 언-리졸브드 조건을 회피하는 것이 바람직할 수 있다.
디스플레이에 대한 렌더링은 메인 메모리로부터 GMEM 으로의 로드, GMEM 에서의 렌더링, 및 메인 메모리에의 되기록을 포함할 수도 있다. 일 예에서, 본 개시물의 기법들에 따르면, 이 로드/렌더/기록 시퀀스는 그래픽스 메모리 로드 마스크 (24) 로부터의 표시에 기초하여 스킵될 수도 있다. 예를 들어, 일부 시스템들, 디바이스들 및 방법들은 어느 픽셀 그룹들이 GMEM 으로부터 로드될 필요가 없는지를 표시하는 그래픽스 메모리 로드 마스크 (24) 를 생성할 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는, 픽셀 그룹이 그 픽셀 그룹이 터치될 때 GMEM 으로부터 로드될 필요가 없다는 것을 표시한다. 픽셀들의 그룹은 기지의 동작이 그 픽셀들의 그룹에 대해 수행되었을 때 터치된다. 예를 들어, Blt 가 모든 픽셀이 청색이 되게 하기 위해 수행된다면, 모든 픽셀이 터치되고, 시스템은 각각의 픽셀이 청색인 것을 알고 있다. 다른 예에서, 픽셀 그룹은 래스터화 동안, 프리미티브가 픽셀들의 그룹에 위치할 때 터치되는 것으로 간주될 수도 있다. 즉, 픽셀들의 그룹이 프리미티브를 스크린 상에서 드로잉하기 위해 활성화될 때. 이 개념은 도 6 에 대하여 상세히 논의된다.
일 예의 방법이 소프트웨어에서 구현될 수도 있다. 이러한 일 예에서, 그래픽스 메모리 로드 마스크 (24) 는 깊이 버퍼 (22) 에 저장될 수도 있다. 예를 들어, 깊이 버퍼 (22) 는, 3D 그래픽스를 프로세싱하지 않는 애플리케이션들, 또는 깊이 테스팅을 위해 깊이 버퍼 (22) 를 활용하지 않는 애플리케이션들이 실행될 때 그래픽스 메모리 로드 마스크 (24) 를 저장하는데 이용될 수도 있다. 일부 예들에서, 본 개시물의 기법들은 예를 들어, 사용자 인터페이스 (UI) 에 적용될 수도 있다. 이것은, UI 가 일반적으로 3D 그래픽스를 스크린에 렌더링하지 않기 때문이다. 이에 따라, 일반적으로 UI 는 깊이 버퍼 (22) 를 이용하지 않으며, 이는 드라이버가 그것을 그래픽스 메모리 로드 마스크 (24) 를 저장하기 위한 비종래의 방식으로 이용하는 것을 허용한다. 3D 그래픽스를 렌더링하지 않을 수도 있고 깊이 계산들을 프로세싱하기 위해 깊이 버퍼 (22) 를 이용하지 않을 수도 있는 다른 예의 애플리케이션들은 워드 프로세서들, 스프레드시트들, 브라우저들 및 다른 타입들의 프로그램들을 포함할 수도 있다. 그러나, 상이한 프로그램들이 일부 경우들에서는 3D 그래픽스를 렌더링할 수도 있고, 예를 들어, 브라우저가 일부 경우들에서 3D 이고 다른 경우들에서 2D 인 웹 페이지에 대한 그래픽스를 렌더링할 수도 있는 다른 경우들에서는 3D 그래픽스를 렌더링하지 않을 수도 있다는 것이 이해될 것이다. 다른 예에서, 전용 하드웨어는 그래픽스 메모리 로드 마스크 (24) 를 축적하는데 이용될 수도 있다. 일부 예들에서, 이들 기법들을 구현하는 디바이스는 1/2 픽셀의 증분 (increments) 을 포함하는 빈들을 프로세싱할 수도 있다.
상기 논의한 바와 같이, 깊이 버퍼 (22) 를 이용하지 않는 예들에서, 드라이버는 그래픽스 메모리 로드 마스크 (24) 를 위해 깊이 버퍼 (22) 에 공간을 할당하도록 구성되는, 변형된 버전의 비닝 버텍스 셰이더, 예를 들어 비닝 버텍스 셰이더 (162) 를 변형 또는 로드할 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는 이용가능한 가장 낮은 정밀도 포맷을 이용할 수도 있다. 이에 따라, 깊이 버퍼 (22) 에서 각각의 메모리 위치 내의 비트들의 총 수보다 더 적은 비트들이 이용될 수도 있다. 예를 들어, 1 비트가 GMEM (14) 로드가 요구될 수도 있고 또는 요구되지 않을 수도 있다는 것을 표시하기 위해 각각의 픽셀 또는 픽셀들의 그룹에 대해 이용될 수도 있다. 일 예에서, 깊이 버퍼 (22) 의 메모리 위치의 특정 비트에서의 바이너리 "0" 은, GMEM (14) 로드가 필요하지 않다는 것을 표시할 수도 있는 한편, 깊이 버퍼 (22) 의 메모리 위치의 특정 비트에서의 바이너리 "1" 은 GMEM (14) 로드가 필요하다는 것을 표시할 수도 있다. 깊이 버퍼 (22) 내의 메모리 위치들은 일반적으로 1 비트보다 더 크다는 것이 이해될 것이다. 예를 들어, 깊이 버퍼 (22) 는, 일부 시스템들이 극소수 (so few) 비트들에 의해 제공된 제한된 정밀도로 인해 8 비트들을 이용하지 않을 수도 있지만 8 비트들, 16 비트들, 24 비트들, 32 비트들, 64 비트들 등일 수도 있다. 그래픽스 메모리 로드 마스크 (24) 에 대해 깊이 버퍼 (22) 를 이용할 때, 8 비트들, 16 비트들, 32 비트들 등은 일반적으로 필요하지 않다. 오히려, 일반적으로는 GMEM (14) 로드가 필요하거나 GMEM (14) 로드가 필요하지 않거나 하는 2 개의 가능성들이 존재할 수도 있는데, 이는 단일 비트에서 저장될 수도 있다. 이에 따라, 많은 예들에서, 깊이 버퍼 (22) 의 각각의 메모리 위치에서의 단일 비트가 이용될 수도 있다. 다른 예들에서, 다수의 비트들은 추가적인 정보를 저장하는데 이용될 수도 있다. 예를 들어, 1 비트는 이들 기법들을 이용하여 3D 이미지들을 프로세싱하기 위해 더 낮은 정밀도 깊이 버퍼와 함께 이용될 수도 있다. 이것은, 일 목적을 위한 버퍼에의 기록이 다른 목적을 위해 이용된 임의의 비트들을 우연히 변경하지 않도록 버퍼 내의 비트들을 업데이트하기 위해 판독-변경-기록 스킴의 이용을 요구할 수도 있다.
일반적으로, UI, 또는 다른 2D 스크린들을 프로세싱할 때, 비닝 패스는, 디스플레이되어야 하는 이미지들이 일반적으로 3D 이미지들과 비교할 때 특별히 복잡하지 않기 때문에 스킵될 수도 있다. 그러나, 본 개시물의 기법들에 따르면, 비닝 패스는 그래픽스 메모리 로드 마스크 (24) 를 생성하는데 이용될 수도 있다. 예를 들어, 버텍스 셰이더 스테이지 (120) 는, 이러한 비닝 패스 동안, 버텍스가 프로세싱될 때 특정한 값을 출력하도록 구성될 수도 있다. 그 값은, GMEM (14) 로드가 요구되는지 또는 GMEM (14) 로드가 요구되지 않는지를 표시할 수도 있다. 이 값은 그 후 깊이 버퍼 (22) 에 저장될 수도 있다. 추가적으로, 이 비닝 패스는 디스플레이될 데이터를 통하여 제 1 패스를 제공하고, 임의의 픽셀들이 있다면, 변경되었는지 및 변경되지 않았는지를 결정하기 위해 이 데이터의 프리-프로세싱을 허용한다. 비닝 패스 동안, 일 예의 시스템은 어느 특정한 프리미티브, 예를 들어, 삼각형이 빈에서 보이는지 또는 빈에서 보이지 않는지를 결정할 수도 있다. 이에 따라, 보이지 않는 프리미티브들에 대한 정보는 스킵될 수도 있다.
그러나, 본 명세서에 설명된 예의 시스템들 및 방법들에서, 비닝 패스는 그래픽스 메모리 로드 마스크 (24) 를 생성하기 위해 UI 상에서 실행될 수도 있다. 변경 및 미변경된 픽셀들이 결정될 때 비닝 패스 동안, 시스템은 픽셀들 또는 픽셀 그룹들에 대한 GMEM (14) 로드의 필요성을 결정할 수도 있다. 픽셀 또는 픽셀들의 그룹이 미변경된다면, 어떠한 GMEM (14) 로드도 필요하지 않다. 픽셀 또는 픽셀들의 그룹들이 변경된다면, GMEM (14) 로드는 필요할 수도 있다.
비닝 패스 동안 생성된 특정 픽셀들 또는 픽셀들의 그룹들에 대한 GMEM (14) 로드들과 관련된 데이터는 그래픽스 메모리 로드 마스크 (24) 에 저장될 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는 깊이 버퍼 (22) 에 저장될 수도 있다. 이에 따라, 비닝 패스 후, 렌더링 패스 동안, 깊이 버퍼 (22) 는 GMEM (14) 로드들이 요구되는 때를 결정하기 위해 판독될 수도 있다. 따라서, 요구될 때 GMEM (14) 가 로드될 수도 있다. 그러나, 이러한 로드가 요구되지 않을 때에는, GMEM (14) 로드가 스킵될 수도 있다.
본 개시물의 기법들에 따르면, 메인 메모리로부터 GMEM 로의 로드 동안, 깊이 버퍼 (22) 에의 액세스가 인에이블될 수도 있다. 즉, 데이터는 깊이 버퍼 (22) 로부터 판독될 수도 있다. 본 개시물의 기법들에 따르면, 데이터는 진정한 (ture) 깊이 데이터가 아니라, 예를 들어, GMEM 로의 로드가 특정 픽셀에 대해 필요한지를 표시하는 각각의 메모리 위치에서의 개개의 비트일 수도 있다. 예를 들어, 바이너리 "0" 이 GMEM 로드가 필요하다는 것을 표시하는데 이용되고 바이너리 "1" 이 GMEM 로드가 필요하지 않다는 것을 표시하는데 이용된다면, 넌-제로 깊이 값을 갖는 임의의 픽셀은 픽셀 셰이더 스테이지 (132) 실행 이전에 폐기될 것이다. 즉, 넌-제로 깊이 값은, 그 넌-제로 깊이 값이 필요한지를 결정하기 위해 전체 파이프라인을 통하여 넌-제로 깊이 값을 프로세싱하기 보다는, 추가 그래픽스 파이프라인 프로세싱으로부터 거부 또는 스킵될 수도 있다.
도 6 은 래스터화의 일 예를 예시하는 개념적 다이어그램이다. 래스터화 (때로는 스펠드 래스터화 (spelled rasterization)) 는 벡터 그래픽스 포맷 (형상들) 으로 설명된 이미지를 취하고 그 이미지를 비디오 디스플레이 또는 프린터 상의 출력을 위해, 또는 비트맵 파일 포맷의 저장을 위해 래스터 이미지 (픽셀들 또는 도트들) 로 컨버팅하는 태스크이다.
이제 도 6 을 참조하면, 삼각형 (300) 이 픽셀들을 표현하는 일련의 정사각형 표현 픽셀들 (302) 상에 오버레이되는 것으로 예시된다. 삼각형 (300) 의 이미지는 벡터 그래픽스 포맷 (형상들) 으로 설명될 수도 있다. 도 6 에 예시한 바와 같이, 다양한 픽셀들 (304) 은, 예를 들어, 이미지가 출력을 위해 래스터 이미지 (픽셀들 또는 도트들) 로 컨버팅된 후, 비디오 디스플레이 또는 프린터 상에 삼각형의 이미지를 출력하는데 이용되거나, 또는 비트맵 파일 포맷의 저장을 위해 이용될 수도 있다. 삼각형 (300) 을 표현하는데 필요한 픽셀들 (304) 의 서브세트만이 근본적인 벡터 그래픽스 포맷 삼각형 (300) 이 보이도록 예시된다. 본 출원의 도면들은 래스터화 포맷으로 프린트 또는 렌더링될 수도 있다는 것이 이해될 것이다. 이것에도 불구하고, 삼각형 (300) 은 벡터 그래픽스 포맷을 표현하도록 의도된다.
본 명세서에 설명한 바와 같이, 일부 비디오 시스템들은 어느 픽셀 그룹들이 GMEM (14) 으로부터 로드될 필요가 없는지를 표시하는 그래픽스 메모리 로드 마스크 (24) 를 생성할 수도 있다. 이 그래픽스 메모리 로드 마스크 (24) 는, 픽셀들의 상태가 알려지도록 픽셀 그룹이 기지의 동작을 그들에 대해 수행했고, 및 따라서 픽셀들이 변경될 필요가 있는지가 결정될 수도 있을 때 픽셀 그룹이 GMEM (14) 으로부터 로드될 필요가 없다는 것을 표시할 수도 있다. 도 6 은 픽셀들의 상태가 알려지도록 기지의 동작을 수행했고, 및 따라서 픽셀들이 변경될 필요가 있는지가 결정될 수도 있는 픽셀들의 일 예를 예시한다. 픽셀들 (304) 은 드로잉된 픽셀들의 예들이다. 즉, 세계 좌표 (world coordinate) 들 (예를 들어, 벡터 형상) 로부터 픽셀들에 대한 다양한 변환 (transformation) 들 후, 특정 픽셀 (304) 은 래스터화되었고, 예를 들어, 이들 픽셀들 (304) 은 렌더링될 것이다. 픽셀들 (304) 의 그룹은 래스터화 동안, 프리미티브 (삼각형 (300)) 가 픽셀들 (304) 의 그룹에 위치하기 때문에 드로잉된다. 즉, 픽셀들 (304) 의 그룹은 삼각형을 스크린 상에서 드로잉하는데 이용될 픽셀들이다.
그러나, 일부 경우들에서, 비록 픽셀들이 터치되더라도, 그들은 GMEM (14) 으로부터 로드될 필요가 없을 수도 있다. 예를 들어, GMEM (14) 은 픽셀들의 그룹이 변경되지 않았기 때문에 로드될 필요가 없을 수도 있다.
도 6 의 삼각형 (302) 은 타일의 일부로서 스크린 상에 렌더링될 수도 있다. 이것은 그래픽스 메모리 로드 마스크 (24) 로부터의 표시에 기초하여 GMEM (14) 에 로드하는 것 및 그래픽스 메모리 로드 마스크 (24) 로부터의 표시에 기초하여 GMEM (14) 으로부터의 로드를 스킵하는 것을 포함할 수도 있다. 예를 들어, GMEM (14) 로드들은 미변경된 픽셀들에 대해 스킵될 수도 있다. 로드는 일반적으로 보이고 예를 들어, 픽셀들을 포함하는 특정 타일에 대한 마지막 그래픽스 프로세싱 동작 이래 변경된 픽셀들에 대해서는 스킵되지 않을 것이다.
다양한 예들에서, 그래픽스 메모리 로드 마스크 (24) 는 이들 GMEM (14) 로드들이 필요한 때 및 필요하지 않은 때를 표시하기 위해 생성될 수도 있다. GMEM 로드가 픽셀 (306) 에 대해 요구된다는 것을 표시하는 이 그래픽스 메모리 로드 마스크 (24) 는 예를 들어, 깊이를 이용하지 않는 UI 에 대해 깊이 버퍼 (22) 가 다르게 이용 중이지 않을 때 그 깊이 버퍼 (22) 에 저장될 수도 있다. 306 에서의 불투명 픽셀이 비닝 패스 동안 프로세싱될 때, 예를 들어, 픽셀이 프로세싱된 마지막 시간으로부터 변경되지 않았다면 GMEM (14) 로드가 요구되지 않는다는 것을 표시하는 비트가 깊이 버퍼 (22) 에 기록될 수도 있다. 변경된 픽셀이 비닝 패스 동안 프로세싱될 때, GMEM (14) 로드가 요구되는 것을 표시하는 비트가 깊이 버퍼 (22) 에 기록될 수도 있다.
도 7 은 GMEM (14) 에의 불필요한 데이터 카피들을 회피하기 위해 그래픽스 메모리 로드 마스크 (24) 로서 깊이 버퍼 (22) 를 이용하는 일 예의 방법을 예시하는 플로우차트이다. 일 예에서, GPU (12) 는 깊이 버퍼 (22) 가 이용되고 있는지를 결정할 수도 있다 (400). 이것은 그래픽스 메모리 로드 마스크 (24) 가 깊이 버퍼 (22) 에 저장될 수도 있는지를 결정하기 위해 행해질 수도 있다. 일부 예들에서, 이들 기법들은 깊이 버퍼가 이용 중이라면 이용되지 않을 수도 있다. 다른 예들에서, 그래픽스 메모리 로드 마스크 (24) 는 다른 메모리에 저장될 수도 있다. 일부 경우들에서, 이 단계는, 예를 들어, 깊이 버퍼가 그래픽스 메모리 로드 마스크 (24) 를 저장하는데 이용되지 않는다면 스킵될 수도 있다.
GPU (12) 는 변경/미변경된 정보에 기초하여 그래픽스 메모리 로드 마스크 (24) 를 생성할 수도 있다 (402). 이 예에서, GPU (12) 는 어느 픽셀 그룹들이 GMEM (14) 으로 로드될 필요가 없는지를 표시하는 그래픽스 메모리 로드 마스크 (24) 를 생성할 수도 있다. GPU 는 일부 예들에서 그래픽스 메모리 로드 마스크 (24) 를 깊이 버퍼 (22) 에 저장할 수도 있다 (404). 이것은 깊이 버퍼 (22) 가 다르게 이용되고 있지 않을 때 일어날 수도 있다. 예를 들어, 깊이 버퍼 (22) 가 3D 그래픽스를 위해 필요하지 않을 때, 그 깊이 버퍼는 본 명세서에 설명된 것들과 같은 다른 목적들을 위해 이용될 수도 있다. 다른 예들에서, 그래픽스 메모리 로드 마스크 (24) 는 다른 메모리 위치들에 저장될 수도 있다 (404). 이것은 깊이 버퍼가 예를 들어 3D 렌더링을 위해 애플리케이션에 의해 이용되고 있을 때 요구될 수도 있다.
그래픽스 메모리 로드 마스크 (24) 는 픽셀들의 상태가 알려지도록 픽셀 그룹이 기지의 동작을 그것에 대해 수행했고 픽셀들이 변경될 필요가 있는지가 결정될 수도 있을 때 픽셀 그룹이 GMEM (14) 으로 로드될 필요가 없다는 것을 표시할 수도 있다. 예를 들어, 래스터화 동안, 프리미티브가 픽셀들의 그룹에 위치할 때, 그 프리미티브는, GMEM (14) 으로의 로드를 일반적으로 필요로 하기 전에 드로잉되지 않았기 때문에 드로잉되어야 한다. 이에 따라, 깊이 버퍼 (22) 는 "마스크를 로드 또는 마스크를 로드하지 않음" 의 역할을 한다. 일 예에서, 픽셀이 비닝 패스에서 프로세싱되고 픽셀이 변경되지 않는다는 것이 결정될 때, GMEM (14) 로드가 요구되지 않는다는 것을 표시하는 비트가 깊이 버퍼 (22) 에 기록될 수도 있다. 변경된 픽셀이 비닝 패스에서 프로세싱될 때에는, GMEM (14) 로드가 요구된다는 것을 표시하는 비트가 깊이 버퍼 (22) 에 기록될 수도 있다. 이 정보는 초기 비닝 패스 동안 생성될 수도 있다. 예를 들어, 초기 비닝 패스는 어느 특정한 프리미티브, 예를 들어, 삼각형이 빈에서 보이는지 또는 빈에서 보이지 않는지를 결정하는데 이용될 수도 있다. 이에 따라, 보이지 않는 프리미티브들에 대한 정보가 스킵될 수도 있다. 일부 시스템들에서, UI 는 비닝 패스를 포함하지 않을 수도 있다. 이것은 UI 에서의 지오메트리가 단순할 수도 있기 때문이다. 이에 따라, 프로세싱은 더 단순할 수도 있다. 그러나, 본 명세서에 설명된 예의 시스템들 및 방법들에서, 비닝 패스는 그래픽스 메모리 로드 마스크 (24) 를 생성하기 위해 UI 상에서 실행될 수도 있다. 이에 따라, 비닝 패스 동안 변경 및 미변경된 픽셀들이 결정될 수도 있다. 픽셀 또는 픽셀들의 그룹이 미변경된다면, 어떠한 GMEM (14) 로드도 필요하지 않다. 픽셀 또는 픽셀들의 그룹이 변경된다면, GMEM (14) 로드가 필요하다. 이 경우에, 비닝 패스는 픽셀들의 상태가 알려지도록 어느 픽셀들에 기지의 동작이 수행되었는지를 결정하기 위한 일부 프로세싱을 포함할 수도 있다. 또한, 어느 픽셀들이 변경되는지가 결정될 수도 있다. 이에 따라, 비트는 픽셀이 터치 및 변경되고 GMEM (14) 로드를 요구할 것임을 표시하기 위해 깊이 버퍼 (22) 에 기록될 수도 있다. 이에 따라, 마스크는 깊이 버퍼에 한번에 하나의 비트씩 저장될 수도 있다 (404). 비닝 패스 후, 렌더링 패스 동안, 깊이 버퍼 (22) 는 GMEM (14) 로드들이 요구되는 때를 결정하기 위해 판독될 수도 있다 (406).
일 예에서, 그래픽스 프로세서는 또한 스크린 상에 타일을 렌더링할 수도 있다 (408). 이 렌더링은 그래픽스 메모리 로드 마스크 (24) 로부터의 표시에 기초하여 GMEM (14) 에 로드하는 것 및 그래픽스 메모리 로드 마스크 (24) 로부터의 표시에 기초하여 GMEM (14) 으로부터의 로드를 스킵하는 것 (402) 을 포함할 수도 있다.
일 예에서, 그래픽스 프로세서는 오퍼레이팅 시스템이 깊이 버퍼 (22) 를 이용 중인지를 결정할 수도 있다. 깊이 버퍼 (22) 가 오퍼레이팅 시스템에 의해 이용 중이지 않을 때, 그래픽스 프로세서는 그래픽스 메모리 로드 마스크 (24) 를 깊이 버퍼 (22) 에 저장할 수도 있다. 그래픽스 메모리 로드 마스크 (24) 는 GMEM (14) 로드가 요구되는지를 결정하기 위해 렌더 (render) 동안 그래픽스 프로세서에 의해 깊이 버퍼 (22) 로부터 판독될 수도 있다.
다양한 사이즈 픽셀 그룹들이 본 명세서에 설명된 시스템들 및 방법들을 이용하여 프로세싱 (예를 들어, 1 바이 1 픽셀 그룹, 2 바이 2 픽셀 그룹, 4 바이 4 픽셀 그룹, 16 바이 16 픽셀 그룹, 32 바이 32 픽셀 그룹, 64 바이 64 픽셀 그룹, 128 바이 128 픽셀 그룹, 256 바이 256 픽셀 그룹을 프로세싱, n 바이 n 픽셀 그룹 (여기서 n 은 1 과 256 사이의 정수이다) 을 프로세싱, 또는 m 바이 n 픽셀 그룹들 (여기서 m 및 n 은 1 과 256 사이의 정수들이고, m 은 n 과 동일하지 않다) 을 프로세싱) 될 수도 있다.
일부 경우들에서, 스크린 상의 일부 픽셀들은 불투명할 수도 있는 한편, 다른 픽셀들은 반투명할 수도 있다. 불투명한 픽셀들은 스크린 상의 그들 "보다 아래의" 임의의 오브젝트들을 블록킹한다. 반투명한 픽셀들은 그들보다 아래의 오브젝트들을 블록킹하지 않는다. 오히려, 어느 정도는 불투명한 픽셀들보다 아래의 오브젝트들이 여전히 보인다. 이에 따라, 불투명한 오브젝트의 픽셀들은 불투명한 픽셀들보다 아래의 픽셀들이 계속 보이도록 그것보다 아래의 픽셀들과 블렌딩될 수도 있다. 픽셀들의 블렌딩은 GMEM (14) 로드를 필요하게 만든다. 예를 들어, 스크린 상에 하나의 아이템에 대한 데이터가 있을 수도 있다. 반투명한 픽셀이 이 아이템의 위에 배치된다면, 반투명한 픽셀과 이전의 아이템 양자가 일반적으로 보이게 될 것이다. 반투명한 픽셀은 완전히 반투명하지 않을 수도 있으며, 따라서 그것보다 아래의 픽셀에 영향을 줄 수도 있다. 따라서, 픽셀들은 함께 블렌딩될 수도 있다. 이 블렌딩은 다수의 픽셀들 또는 다수의 세트들의 픽셀들로부터의 데이터가 요구되기 때문에 GMEM (14) 으로부터의 로드를 요구할 것이다. 이에 따라, 일부 예들에서, 본 개시물의 기법들은 블렌딩을 포함하는 타일들과 함께 이용되지 않을 수도 있다. 그러나, 다른 예들에서, 블렌딩은 프레임 내의 일부 픽셀들이 블렌딩될 때조차, 불필요한 GMEM 로드들이 블렌딩되지 않은 픽셀들에 대해 회피되는 것을 허용하도록 픽셀 단위 기준으로 (on a pixel-by-pixel basis) 그래픽스 메모리 로드 마스크 (24) 에서 추적될 수도 있다.
상기 예에 의존하여, 본 명세서에 설명된 기법들 중 임의의 기법들의 소정의 행동들 또는 이벤트들이 상이한 시퀀스로 수행될 수도 있고, 함께 추가, 병합, 또는 배제될 수도 있다 (예를 들어, 반드시 모든 설명된 행동들 또는 이벤트들이 기법들의 실시에 필요한 것은 아니다) 는 것이 인정될 것이다. 더욱이, 소정의 예들에서, 행동들 또는 이벤트들은 순차적이라기 보다는, 예를 들어, 멀티-스레디드 프로세싱, 인터럽트 프로세싱, 또는 다수의 프로세서들을 통하여 동시에 수행될 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨에서 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장 또는 송신되고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은 컴퓨터 판독가능 저장 매체들을 포함할 수도 있으며, 이는 데이터 저장 매체들과 같은 유형의 매체, 또는 예를 들어, 통신 프로토콜에 따라 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들에 대응한다. 이 방식에서, 컴퓨터 판독가능 매체들은 일반적으로 (1) 비일시적인 컴퓨터 판독가능 저장 매체들 또는 (2) 신호 또는 캐리어파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체들은 본 개시물에 설명된 기법들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수도 있다.
제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장, 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 적절히 컴퓨터 판독가능 매체라 불리게 된다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신된다면, 매체의 정의에는 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들이 포함된다. 그러나, 컴퓨터 판독가능 저장 매체들 및 데이터 저장 매체들은 접속들, 캐리어파들, 신호들, 또는 다른 일시적인 매체들을 포함하지 않고, 그 대신 비일시적인 저장 매체들과 관련된다는 것이 이해되어야 한다. 디스크 (disk) 및 디스크 (disc) 는, 본 명세서에 사용한 바와 같이, 콤팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생시키는 한편, 디스크 (disc) 들은 레이저로 데이터를 광학적으로 재생시킨다. 상기의 조합들이 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 다른 등가의 집적 또는 이산 로직 회로부와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다. 이에 따라, 용어 "프로세서" 는 본 명세서에 사용한 바와 같이, 본 명세서에 설명된 기법들의 구현에 적합한 임의의 다른 구조 또는 전술한 구조 중 임의의 것을 지칭할 수도 있다. 또한, 일부 양태들에서, 본 명세서에 설명된 기능성은 인코딩 및 디코딩을 위해 구성되거나, 또는 조합된 코덱에 통합된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 그 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들에서 완전히 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예를 들어, 칩 세트) 를 포함하는, 광범위의 디바이스들 또는 장치들에서 구현될 수도 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들은 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양태들을 강조하기 위해 본 개시물에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하는 것은 아니다. 오히려, 상기 설명한 바와 같이, 다양한 유닛들은 적합한 소프트웨어 및/또는 펌웨어와 함께, 상기 설명한 바와 같은 하나 이상의 프로세서들을 포함하는, 코덱 하드웨어 유닛에 조합 또는 상호동작적 하드웨어 유닛들의 콜렉션 (collection) 에 의해 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (47)

  1. 그래픽스 데이터를 프로세싱하는 방법으로서,
    픽셀 그룹들이 그래픽스 메모리 (Graphics Memory; GMEM) 로 로드되어야 하는지 여부를 표시하는 마스크를 생성하는 단계;
    상기 마스크를 깊이 버퍼에 저장하는 단계; 및
    상기 GMEM 으로 메인 메모리로부터의 픽셀 그룹들을 로드하는 단계로서, 로드하는 단계는 상기 깊이 버퍼에 저장된 상기 마스크를 테스팅하는 단계 및 상기 GMEM 으로 로드되어야 함을 상기 마스크가 표시하는 메인 메모리로부터의 픽셀 그룹들을 상기 GMEM 에 로드하는 단계를 포함하는, 상기 픽셀 그룹들을 로드하는 단계
    를 포함하고,
    상기 마스크를 테스팅하는 단계는 깊이 테스팅 기능을 인에이블하는 단계 및 상기 깊이 테스팅 기능을 이용하여 상기 깊이 버퍼로부터 판독된 상기 마스크를 깊이 테스팅하는 단계를 포함하고; 그리고
    마스크를 생성하는 단계는 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용했는지를 결정하는 단계 및 상기 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하고 있지 않은 경우에 상기 마스크를 단지 생성하는 단계를 포함하는, 그래픽스 데이터를 프로세싱하는 방법.
  2. 제 1 항에 있어서,
    상기 마스크는, 픽셀들의 상태가 알려지도록 기지의 동작이 상기 픽셀들의 그룹에 대해 수행되었고 픽셀 그룹이 이전의 동작으로부터 미변경될 때 상기 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시하는, 그래픽스 데이터를 프로세싱하는 방법.
  3. 제 1 항에 있어서,
    상기 애플리케이션은 2 차원 이미지들을 프로세싱하는, 그래픽스 데이터를 프로세싱하는 방법.
  4. 제 1 항에 있어서,
    상기 깊이 버퍼에 저장된 상기 마스크를 생성하기 위해 비닝 파이프라인 (binning pipeline) 에서의 비닝 버텍스 셰이더 (bining vertex shader) 를 변형시키는 단계를 더 포함하는, 그래픽스 데이터를 프로세싱하는 방법.
  5. 제 1 항에 있어서,
    상기 깊이 버퍼에 저장된 상기 마스크를 생성하기 위해 비닝 파이프라인에서의 비닝 버텍스 셰이더를 이용하는 단계를 더 포함하며,
    상기 비닝 버텍스 셰이더는, 픽셀들의 상태가 알려지도록 기지의 동작이 상기 픽셀들의 그룹에 대해 수행된 때를 결정하고, 상기 비닝 버텍스 셰이더는, 픽셀 그룹이 이전의 동작으로부터 미변경되는 것을 결정하는, 그래픽스 데이터를 프로세싱하는 방법.
  6. 제 1 항에 있어서,
    GMEM 로드가 요구되는지를 결정하기 위해 렌더 (render) 동안 상기 깊이 버퍼로부터 상기 마스크를 판독하는 단계를 더 포함하는, 그래픽스 데이터를 프로세싱하는 방법.
  7. 제 1 항에 있어서,
    1/2 픽셀의 증분 (increments) 을 포함하는 빈 (bin) 들을 프로세싱하는 단계를 더 포함하는, 그래픽스 데이터를 프로세싱하는 방법.
  8. 제 1 항에 있어서,
    상기 마스크는 픽셀 당 1 비트 마스크 (1-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 방법.
  9. 제 1 항에 있어서,
    상기 마스크는 픽셀 당 2 비트 마스크 (2-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 방법.
  10. 제 1 항에 있어서,
    픽셀 그룹은 단일 픽셀을 포함하는, 그래픽스 데이터를 프로세싱하는 방법.
  11. 제 1 항에 있어서,
    상기 깊이 버퍼에 저장된 상기 마스크에서의 넌제로 값들은 상기 GMEM 으로 로드되어서는 안되는 픽셀 그룹들을 표시하는, 그래픽스 데이터를 프로세싱하는 방법.
  12. 그래픽스 데이터를 프로세싱하는 디바이스로서,
    픽셀 그룹들을 저장하도록 구성된 그래픽스 메모리 (Graphics Memory; GMEM); 및
    상기 GMEM 과 통신하는 하나 이상의 프로세서들
    을 포함하고, 상기 하나 이상의 프로세서들은 :
    픽셀 그룹들이 상기 GMEM 으로 로드되어야 하는지 여부를 표시하는 마스크를 생성하고;
    상기 마스크를 깊이 버퍼에 저장하고; 그리고
    상기 GMEM 으로 메인 메모리로부터의 픽셀 그룹들을 로드하는 것으로서, 로드하는 것은 상기 깊이 버퍼에 저장된 상기 마스크를 테스팅하는 것 및 상기 GMEM 으로 로드되어야 함을 상기 마스크가 표시하는 메인 메모리로부터의 픽셀 그룹들을 상기 GMEM 에 로드하는 것을 포함하는, 상기 픽셀 그룹들을 로드하도록
    구성되고;
    상기 마스크를 테스팅하는 것은 깊이 테스팅 기능을 인에이블하는 것 및 상기 깊이 테스팅 기능을 이용하여 상기 깊이 버퍼로부터 판독된 상기 마스크를 깊이 테스팅하는 것을 포함하고; 그리고
    상기 프로세서들 중 마스크를 생성하도록 구성된 프로세서는 또한, 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하고 있는지를 결정하고 상기 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하고 있지 않은 경우에 상기 마스크를 단지 생성하도록 구성되는, 그래픽스 데이터를 프로세싱하는 디바이스.
  13. 제 12 항에 있어서,
    상기 마스크는, 픽셀들의 상태가 알려지도록 기지의 동작이 상기 픽셀들의 그룹에 대해 수행되었고 픽셀 그룹이 이전의 동작으로부터 미변경될 때 상기 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  14. 제 12 항에 있어서,
    상기 애플리케이션은 2 차원 이미지들을 프로세싱하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  15. 제 12 항에 있어서,
    상기 깊이 버퍼에 저장된 상기 마스크를 생성하기 위해 비닝 파이프라인 (binning pipeline) 에 비닝 버텍스 셰이더 (bining vertex shader) 를 더 포함하며,
    상기 비닝 버텍스 셰이더는, 픽셀들의 상태가 알려지도록 기지의 동작이 상기 픽셀들의 그룹에 대해 수행된 때를 결정하고, 상기 비닝 버텍스 셰이더는, 픽셀 그룹이 이전의 동작으로부터 미변경되는 것을 결정하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  16. 제 12 항에 있어서,
    또한, GMEM 로드가 요구되는지를 결정하기 위해 렌더 (render) 동안 상기 깊이 버퍼로부터 상기 마스크를 판독하도록 구성되는, 그래픽스 데이터를 프로세싱하는 디바이스.
  17. 제 12 항에 있어서,
    상기 그래픽스 데이터를 프로세싱하는 디바이스는 1/2 픽셀의 증분 (increments) 을 포함하는 빈 (bin) 들을 프로세싱하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  18. 제 12 항에 있어서,
    상기 마스크는 픽셀 당 1 비트 마스크 (1-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  19. 제 12 항에 있어서,
    상기 마스크는 픽셀 당 2 비트 마스크 (2-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  20. 제 12 항에 있어서,
    픽셀 그룹은 단일 픽셀을 포함하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  21. 제 12 항에 있어서,
    상기 깊이 버퍼에 저장된 상기 마스크에서의 넌제로 값들은 상기 GMEM 으로 로드되어서는 안되는 픽셀 그룹들을 표시하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  22. 그래픽스 데이터를 프로세싱하는 디바이스로서,
    픽셀 그룹들이 그래픽스 메모리 (Graphics Memory; GMEM) 로 로드되어야 하는지 여부를 표시하는 마스크를 생성하는 수단;
    상기 마스크를 깊이 버퍼에 저장하는 수단; 및
    상기 GMEM 으로 메인 메모리로부터의 픽셀 그룹들을 로드하는 수단으로서, 상기 로드하는 수단은 상기 깊이 버퍼에 저장된 상기 마스크를 테스팅하는 수단 및 상기 GMEM 으로 로드되어야 함을 상기 마스크가 표시하는 메인 메모리로부터의 픽셀 그룹들을 상기 GMEM 에 로드하는 수단을 포함하는, 상기 픽셀 그룹들을 로드하는 수단
    을 포함하고;
    상기 마스크를 테스팅하는 수단은 깊이 테스팅 기능을 포함하고 상기 깊이 테스팅 기능을 이용하여 상기 깊이 버퍼로부터 판독된 상기 마스크를 테스팅하고; 그리고
    상기 마스크를 생성하는 수단은 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하고 있는지를 결정하고 상기 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하고 있지 않은 경우에 상기 마스크를 생성하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  23. 제 22 항에 있어서,
    상기 마스크는, 픽셀들의 상태가 알려지도록 기지의 동작이 상기 픽셀들의 그룹에 대해 수행되었고 픽셀 그룹이 이전의 동작으로부터 미변경될 때 상기 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  24. 제 22 항에 있어서,
    상기 애플리케이션은 2 차원 이미지들을 프로세싱하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  25. 제 22 항에 있어서,
    상기 마스크를 생성하는 수단은 상기 깊이 버퍼에 저장된 마스크를 생성하는데 이용된 비닝 버텍스 셰이더 (bining vertex shader) 를 포함하고,
    상기 비닝 버텍스 셰이더는, 픽셀들의 상태가 알려지도록 기지의 동작이 상기 픽셀들의 그룹에 대해 수행된 때를 결정하고, 상기 비닝 버텍스 세이더는, 픽셀 그룹이 이전의 동작으로부터 미변경되는 것을 결정하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  26. 제 22 항에 있어서,
    상기 디바이스는 1/2 픽셀의 증분 (increments) 을 포함하는 빈 (bin) 들을 프로세싱하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  27. 제 22 항에 있어서,
    상기 마스크는 픽셀 당 1 비트 마스크 (1-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  28. 제 22 항에 있어서,
    상기 마스크는 픽셀 당 2 비트 마스크 (2-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  29. 제 22 항에 있어서,
    픽셀 그룹은 단일 픽셀을 포함하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  30. 제 22 항에 있어서,
    상기 깊이 버퍼에 저장된 상기 마스크에서의 넌제로 값들은 상기 GMEM 으로 로드되어서는 안되는 픽셀 그룹들을 표시하는, 그래픽스 데이터를 프로세싱하는 디바이스.
  31. 명령들을 저장한 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행될 때, 디바이스의 하나 이상의 프로세서들로 하여금 :
    픽셀 그룹들이 GMEM 으로 로드되어야 하는지 여부를 표시하는 마스크를 생성하게 하고;
    상기 마스크를 깊이 버퍼에 저장하게 하고; 그리고
    상기 GMEM 으로 메인 메모리로부터의 픽셀 그룹들을 로드하게 하는 것으로서, 로드하는 것은 상기 깊이 버퍼에 저장된 상기 마스크를 테스팅하는 것 및 상기 GMEM 으로 로드되어야 함을 상기 마스크가 표시하는 메인 메모리로부터의 픽셀 그룹들을 상기 GMEM 에 로드하는 것을 포함하는, 상기 픽셀 그룹들을 로드하게 하고;
    상기 마스크를 테스팅하는 것은 깊이 테스팅 기능을 인에이블하는 것 및 상기 깊이 테스팅 기능을 이용하여 상기 깊이 버퍼로부터 판독된 상기 마스크를 깊이 테스팅하는 것을 포함하고; 그리고
    상기 프로세서들 중 마스크를 생성하도록 구성된 프로세서는 또한, 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하고 있는지를 결정하고 상기 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하고 있지 않은 경우에 상기 마스크를 단지 생성하도록 구성되는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  32. 제 31 항에 있어서,
    상기 마스크는, 픽셀들의 상태가 알려지도록 기지의 동작이 상기 픽셀들의 그룹에 대해 수행되었고 픽셀 그룹이 이전의 동작으로부터 미변경될 때 상기 픽셀 그룹이 GMEM 으로 로드될 필요가 없다는 것을 표시하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  33. 제 31 항에 있어서,
    상기 명령들은, 실행될 때, 또한, 디바이스의 하나 이상의 프로세서들로 하여금, 깊이 버퍼에서의 상기 마스크를 생성하도록 구성된 비닝 파이프라인 (binning pipeline) 에서의 비닝 버텍스 셰이더 (bining vertex shader) 를 구현하게 하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  34. 제 31 항에 있어서,
    상기 명령들은, 실행될 때, 또한, 디바이스의 하나 이상의 프로세서들로 하여금, 깊이 버퍼에 저장된 상기 마스크를 생성하도록 구성된 비닝 파이프라인에서의 비닝 버텍스 셰이더를 제공하게 하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  35. 제 31 항에 있어서,
    상기 명령들은, 실행될 때, 또한, 디바이스의 하나 이상의 프로세서들로 하여금, GMEM 로드가 요구되는지를 결정하기 위해 렌더 (render) 동안 상기 깊이 버퍼로부터 상기 마스크를 판독하게 하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  36. 제 31 항에 있어서,
    상기 마스크는 픽셀 당 1 비트 마스크 (1-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  37. 제 31 항에 있어서,
    상기 마스크는 픽셀 당 2 비트 마스크 (2-bit per pixel mask) 를 포함하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  38. 제 31 항에 있어서,
    픽셀 그룹은 단일 픽셀을 포함하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  39. 제 31 항에 있어서,
    실행될 때, 디바이스의 하나 이상의 프로세서들로 하여금, 상기 마스크를 깊이 버퍼에 저장하게 하는 명령들은, 실행될 때, 디바이스의 하나 이상의 프로세서들로 하여금, 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하는지를 결정하게 하는 명령들 및 실행될 때, 디바이스의 하나 이상의 프로세서들로 하여금, 단지 상기 애플리케이션이 깊이 정보를 프로세싱하기 위해 상기 깊이 버퍼를 이용하지 않은 경우에만 상기 마스크를 상기 깊이 버퍼에 저장하게 하는 명령들을 더 포함하고, 그리고
    상기 깊이 버퍼에 저장된 상기 마스크에서의 넌제로 값들은 상기 GMEM 으로 로드되어서는 안되는 픽셀 그룹들을 표시하는, 그래픽스 데이터를 프로세싱하는 비일시적인 컴퓨터 판독가능 저장 매체.
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
KR1020157015645A 2012-11-29 2013-10-28 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크 KR101711775B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/688,748 US9280956B2 (en) 2012-11-29 2012-11-29 Graphics memory load mask for graphics processing
US13/688,748 2012-11-29
PCT/US2013/067113 WO2014085004A1 (en) 2012-11-29 2013-10-28 Graphics memory load mask for graphics processing

Publications (2)

Publication Number Publication Date
KR20150090118A KR20150090118A (ko) 2015-08-05
KR101711775B1 true KR101711775B1 (ko) 2017-03-02

Family

ID=49584781

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157015645A KR101711775B1 (ko) 2012-11-29 2013-10-28 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크

Country Status (5)

Country Link
US (1) US9280956B2 (ko)
EP (1) EP2926321A1 (ko)
KR (1) KR101711775B1 (ko)
CN (1) CN104823220B (ko)
WO (1) WO2014085004A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087410B2 (en) * 2013-01-17 2015-07-21 Qualcomm Incorporated Rendering graphics data using visibility information
US9760968B2 (en) 2014-05-09 2017-09-12 Samsung Electronics Co., Ltd. Reduction of graphical processing through coverage testing
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US9600926B2 (en) * 2014-12-15 2017-03-21 Intel Corporation Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering
KR102261962B1 (ko) 2015-07-21 2021-06-07 삼성전자주식회사 디스플레이 구동 장치, 이를 포함하는 디스플레이 장치 및 시스템
US10078883B2 (en) * 2015-12-03 2018-09-18 Qualcomm Incorporated Writing graphics data from local memory to system memory
US10825129B2 (en) 2016-06-12 2020-11-03 Apple Inc. Eliminating off screen passes using memoryless render target
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US20190073091A1 (en) * 2017-09-06 2019-03-07 Sap Se Dynamic display layout systems and methods

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0803797A1 (en) 1996-04-22 1997-10-29 International Business Machines Corporation System for use in a computerized imaging system to efficiently transfer graphic information to a graphics subsystem employing masked span
US6636212B1 (en) 2000-11-14 2003-10-21 Nvidia Corporation Method and apparatus for determining visibility of groups of pixels

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970071323A (ko) 1996-04-22 1997-11-07 포만 제프리 엘 그래픽 서브시스템
US7102646B1 (en) 1997-11-25 2006-09-05 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6828975B2 (en) 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US20030002729A1 (en) * 2001-06-14 2003-01-02 Wittenbrink Craig M. System for processing overlapping data
US9076265B2 (en) 2006-06-16 2015-07-07 Ati Technologies Ulc System and method for performing depth testing at top and bottom of graphics pipeline
US8379019B2 (en) 2007-12-26 2013-02-19 Advanced Micro Devices, Inc. Fast triangle reordering for vertex locality and reduced overdraw
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
GB0916924D0 (en) 2009-09-25 2009-11-11 Advanced Risc Mach Ltd Graphics processing systems
BR112012009893B1 (pt) * 2009-10-26 2021-02-02 Sony Computer Entertainment Inc. dispositivos e métodos de geração de arquivo de imagem e de processamento de imagem, mídia de gravação não transitória legível por computador, e, estrutura de dados de um arquivo de imagem
US20110134120A1 (en) * 2009-12-07 2011-06-09 Smart Technologies Ulc Method and computing device for capturing screen images and for identifying screen image changes using a gpu
KR101427444B1 (ko) * 2010-09-30 2014-08-11 현대중공업 주식회사 자유 낙하 방식 구명 보트 승정 플랫폼의 설계 방법
KR101681056B1 (ko) 2010-10-01 2016-12-01 삼성전자주식회사 정점 처리 방법 및 장치
KR101782044B1 (ko) * 2011-02-22 2017-09-26 삼성전자주식회사 그래픽 프로세서 및 조기 가시성 테스트 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0803797A1 (en) 1996-04-22 1997-10-29 International Business Machines Corporation System for use in a computerized imaging system to efficiently transfer graphic information to a graphics subsystem employing masked span
US6636212B1 (en) 2000-11-14 2003-10-21 Nvidia Corporation Method and apparatus for determining visibility of groups of pixels

Also Published As

Publication number Publication date
WO2014085004A1 (en) 2014-06-05
US20140146064A1 (en) 2014-05-29
EP2926321A1 (en) 2015-10-07
US9280956B2 (en) 2016-03-08
CN104823220B (zh) 2018-05-08
CN104823220A (zh) 2015-08-05
KR20150090118A (ko) 2015-08-05

Similar Documents

Publication Publication Date Title
KR101711775B1 (ko) 그래픽스 프로세싱을 위한 그래픽스 메모리 로드 마스크
CN107209923B (zh) 图形处理中的混合渲染
US10885607B2 (en) Storage for foveated rendering
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
US9836810B2 (en) Optimized multi-pass rendering on tiled base architectures
EP3180773B1 (en) Bandwidth reduction using texture lookup by adaptive shading
EP3005305B1 (en) Conditional execution of rendering commands based on per bin visibility information with added inline operations
CN108027955B (zh) 经带宽压缩的图形数据的存储技术
US9852539B2 (en) Single pass surface splatting
EP3427229B1 (en) Visibility information modification
KR20170038525A (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치의 동작 방법
CN107851330A (zh) 用于图形处理的零像素剔除
CN111179403A (zh) 并行生成纹理映射Mipmap图像的方法、装置及计算机存储介质

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant