KR20070058548A - 그래픽 데이터의 캐시-효율적인 래스터화 - Google Patents

그래픽 데이터의 캐시-효율적인 래스터화 Download PDF

Info

Publication number
KR20070058548A
KR20070058548A KR1020077007143A KR20077007143A KR20070058548A KR 20070058548 A KR20070058548 A KR 20070058548A KR 1020077007143 A KR1020077007143 A KR 1020077007143A KR 20077007143 A KR20077007143 A KR 20077007143A KR 20070058548 A KR20070058548 A KR 20070058548A
Authority
KR
South Korea
Prior art keywords
subblock
size
cache
tile
graphical image
Prior art date
Application number
KR1020077007143A
Other languages
English (en)
Other versions
KR100894231B1 (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 KR20070058548A publication Critical patent/KR20070058548A/ko
Application granted granted Critical
Publication of KR100894231B1 publication Critical patent/KR100894231B1/ko

Links

Images

Classifications

    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

캐시는 그래픽 데이터를 래스터화하는 경우에 사용하기 위한 데이터를 저장한다. 캐시의 사이즈는 선택된 타일 사이즈와 동일하다. 프로세서는 그래픽 이미지를 복수의 서브블록으로 서브분할함으로써 그래픽 이미지의 래스터화를 수행한다. 서브블록은 블록 프로세싱 순서에 기초하여, 그래픽 이미지 데이터를 갖는 서브블록에 관한 타일로 서브블록을 서브분할함으로써 프로세싱된다. 타일은 선택된 타일 사이즈와 동일한 사이즈를 갖는다. 타일과 연관되는 데이터는 캐시로 로딩되고, 캐시 데이터는 그래픽 이미지의 연관되는 타일에 관한 픽셀을 생성하는데 사용된다.
래스터화, 서브분할, 타일, 캐시

Description

그래픽 데이터의 캐시-효율적인 래스터화{CACHE EFFICIENT RASTERIZATION OF GRAPHICS DATA}
배경
기술분야
본 발명은 그래픽 데이터의 캐시-효율적인 래스터화를 위한 방법 및 장치에 관한 것이다.
배경
디스플레이 또는 프린팅 (printing) 을 위한 그래픽을 준비하기 위해, 그래픽 데이터는 래스터화되어, 그 그래픽을 디스플레이하고 프린트하기 위해 사용되는 픽셀 (비트맵) 어레이로 그래픽 데이터를 변환한다. 도 1 은 래스터화가 수행되는 환경 (100) 의 개념도를 도시한 것이다. 환경 (100) 은 마이크로-프로세싱 유닛 (MPU; 105), 저장 디바이스 (110), 캐시 (115), 프레임 버퍼 (120), 및 출력 디바이스 (125) 를 포함한다.
MPU (105) 는 호스트 컴퓨터 (예를 들어, 데스크탑 또는 랩탑 컴퓨터, 서버, 게임용 콘솔, 셀룰러 전화 등) 의 중앙 프로세싱 유닛 (CPU) 을 포함하거나, 특히 그래픽 생성을 위한 전용 그래픽 디바이스 (예를 들어, 그래픽 가속기) 또는 디지털 신호 프로세싱 알로리즘을 수행하도록 설정된 디지털 신호 프로세싱 유닛 (DSP) 의 일부일 수도 있다. 저장 디바이스 (110) 는 영구 저장 디바이스, 대용량 저 장 디바이스, 착탈형 저장 디바이스, 랜덤 액세스 메모리 (RAM) 와 같은 휘발성 판독/기록 메모리와 같이 다양한 형태의 메모리 자원을 포함할 수도 있다.
MPU (105) 는 그래픽 데이터 (132) 의 스트림을 생성하기 위해, 애플리케이션 (130) 의 프로그램 명령어를 로딩하여 실행한다. 그래픽 애플리케이션 (130) 의 프로그램 명령어 및 생성된 그래픽 데이터 (132) 는 저장 디바이스 (110) 에 저장되어 판독된다. 생성된 그래픽 데이터는 디스플레이될 그래픽 (텍스트 또는 이미지) 을 기술하고, 수학식, 벡터 좌표계, 벡터 드로잉 (drawing) 등과 같이 다양한 형태일 수 있다. 그래픽 데이터는 색채, 질감, 색심도 (z) 데이터와 같은 그래픽을 기술하는 임의의 몇몇 타입의 데이터를 포함할 수도 있다.
그래픽 데이터 (132) 가 생성된 후, MPU (105) 는 비트맵 (135) 을 생성하도록 그 그래픽 데이터를 래스터화함으로써, 디스플레이용 그래픽 데이터를 준비한다. 래스터화 프로세스 동안에, MPU (105) 는 그래픽 데이터를 로딩하여 분석하여, 비트맵 (135) 를 생성한다. 예를 들어, MPU (105) 는 색심도 (z) 데이터를 분석하여, 그래픽의 어느 구성요소가 가시적이며, 그래픽의 어느 구성요소가 폐색되었는지 (그래픽의 다른 구성요소에 의한 관찰로부터 차단되는지) 를 결정할 수도 있다. 또한, MPU (105) 는 색채 및 질감 데이터를 분석하여, 그래픽의 색채 및 질감의 컴포넌트를 결정할 수도 있다. MPU (105) 에 의한 이런 분석 결정은 생성된 비트맵 (135) 에 반영된다.
생성된 비트맵 (135) 은 프레임 버퍼 (120) 에 저장되고, 출력 디바이스 (125; 예를 들어, 디스플레이 모니터 또는 프린터) 에 이미지를 디스플레이 또는 프린트하기 위해 사용된다. 통상적으로, 프레임 버퍼 (120) 는 그래픽이 출력 디바이스 (125) 에서 디스플레이 또는 프린트되는 동안에, 비트매핑된 그래픽을 저장하기 위해 사용되는 (저장 디바이스 (110) 와 같은) 메모리 자원의 메모리 영역이다.
상술한 래스터화 프로세스 동안에, MPU (105) 는 래스터화될 그래픽 데이터를 저장 디바이스 (110) 로부터, 통상적으로 저장 디바이스 (110) 에 액세스할 수 있는 시간보다 극히 더 짧은 시간 내에 액세스할 수 있는 캐시 (115) 로 이동시킨다. 그 후, MPU (105) 는 캐시 (115) 로부터 그래픽 데이터를 로딩하고, 그래픽 데이터를 레스터화하여, 비트맵 (135) 을 생성한다. 캐시 (115) 에 대한 액세스 시간이 저장 디바이스 (110) 에 대한 액세스 시간보다 더 짧기 때문에, 래스터화 프로세스 동안에, MPU 가 특정한 그래픽 데이터를 나중에 요청하면, 우선 MPU 는 특정한 그래픽 데이터가 캐시 (115) 에 저장되어 있는지 여부를 결정한다. "캐시 히트 (cache hit)" 는 특정한 그래픽 데이터가 캐시에 존재하는 경우에 발생하며, 이에 의해, 특정한 그래픽 데이터는 캐시로부터 취출된다. "캐시 미스 (cache miss)" 는 특정한 그래픽 데이터가 캐시에 존재하지 않는 경우에 발생하고, 이에 의해, 특정한 그래픽 데이터는 저장 디바이스 (110) 로부터 캐시 (115) 로 이동되어야만 하는데, 이는 캐시 (115) 로부터의 직접적인 취출과 비교했을 때 더 많은 시간과 에너지를 소비한다. 이와 같이, 요구되는 시간과 에너지의 양을 감소시키기 때문에 그래픽 데이터는 래스터화 프로세스 동안에 가능한 많이 캐시 (115) 로부터 직접 취출되는 것이 바람직하다. 이는, 배터리의 전력이 가장 중 요시되는 (랩탑 컴퓨터, 셀룰러 전화기 등과 같은) 휴대용 디바이스에서 래스터화가 수행되는 경우에 특히 참이다.
그러나, 통상적으로, 래스터화 프로세스는, 대용량의 그래픽 데이터가 저장 디바이스로부터 캐시로의 이동이 필요한 비효율적인 방식으로 수행된다. 이는 종래의 래스터화 방법이 캐시로의 그래픽 데이터의 이동을 최대화하지 않으며, 이 방법에서, 더 많은 그래픽 데이터가 저장 디바이스로부터 요청되기 전에 캐시로 이동된 그래픽 데이터의 대부분 또는 전부가 래스터화되는 사실에 기인한다. 그 후, 통상적으로, 캐시로 로딩된 그래픽 데이터의 상당 부분은 프로세싱되지 않고 폐기되며, 그 때 저장 디바이스로부터 로딩된 다른 그래픽 데이터로 대체된다.
이와 같이, 저장 디바이스로부터 캐시로의 그래픽 데이터의 이동이 최적화되어, 더 소수의 그래픽 데이터 이동이 요청되는 효율적인 방법으로 그래픽 데이터를 래스터화하는 기법이 필요하다. 이는 래스터화 프로세스를 수행하기 위해 필요한 시간과 에너지를 감소시킨다.
요약
이미지를 기술하는 그래픽 데이터는 래스터화를 위해 프로세싱된다. 그래픽 데이터의 블록 (픽셀 어레이) 은, 이진 탐색 서브분할 (binary search subdivision) 프로세스에 기초하여, "Z" 패턴 순서로 분석되어, 이미지의 서브블록 (서브픽셀 어레이) 에 관한 래스터화 순서를 결정한다. 몇몇 실시형태에 있어서, 블록 및 서브블록의 변은 (픽셀 단위로) 2의 거듭제곱인 길이를 갖는다. 이 기법은, 서브블록이 소정의 타일 사이즈에 매칭될 때까지 서브블록을 추가의 서 브블록으로 반복적으로 분할하는 반복 프로세스 (이진 탐색 서브분할 프로세스) 를 사용하여, 이미지의 서브블록에 관한 분석의 순서를 결정한다. 각각의 결과적인 서브블록의 변은 (픽셀 단위로) 2의 거듭제곱인 길이를 갖는다. 그 후, 몇몇 조건에서, 이 기법은 래스터화를 위해 (타일 사이즈와 동일한 사이즈를 갖는) 서브블록과 연관되는 그래픽 데이터를 캐시로 로딩한다. 몇몇 실시형태에 있어서, 블록의 픽셀은 또한 이진 탐색 서브분할 프로세스에 기초하는 "Z" 패턴 스캐닝 순서로 래스터화된다.
타일 사이즈는 캐시의 사이즈에 기초하여 결정된다. 몇몇 실시형태에 있어서, 타일은 (픽셀 단위로) 2의 거듭제곱인 길이의 변을 갖는 정사각형이다. 몇몇 조건에서, 이 기법은 래스터화를 위해 소정의 타일 사이즈를 갖는 타일 (서브블록) 에 관한 그래픽 데이터를 캐시로 로딩한다. 몇몇 실시형태에 있어서, 캐시 사이즈는, 타일과 연관되는 모든 그래픽 데이터가 동시에 캐시에 저장될 수 있도록 타일 사이즈를 지원한다. 몇몇 실시형태에 있어서, 타일은 다른 그래픽 데이터가 캐시로 로딩되기 전에 캐시로부터 래스터화된다.
본 발명의 방법은 그래픽 데이터를 캐시로 로딩하여, 캐시로부터 그래픽 데이터를 래스터화하는 효율적인 방법을 제공한다. 타일 사이즈는 캐시 사이즈에 기초하기 때문에, 캐시로 동시에 저장된 그래픽 데이터의 대부분 또는 전부는 추가의 그래픽 데이터가 저장 디바이스로부터 캐시로 로딩되기 전에 래스터화된다. 이와 같이, 캐시로의 데이터 이동은 최적화되고, 캐시로 이동하는 그래픽 데이터의 수는 감소한다. 또한, 이미지의 서브블록의 프로세싱 순서는, 서브블록의 분석 및 래스터화의 효율적인 순서를 제공하는 이진 탐색 서브분할 프로세스에 기초하는 " Z " 패턴 순서에 의해 결정된다.
또한, 이 기법은 (픽셀 단위로) 2의 거듭제곱인 사이즈를 갖는 서브블록 및 타일의 사용을 통해 그래픽 데이터의 효율적인 프로세싱을 위해 제공한다. 이와 같이, 그래픽 데이터의 프로세싱에 요구되는 계산은, 복소 이진 분할 연산이 감소하고, 간단하고 신속한 시프트 (shift) 연산에 의해 대부분 대체된다는 점에서 간략화된다. 예를 들어, 간략화된 시프트 연산은, 서브블록을 더 많은 서브블록으로 반복적으로 분할하는 반복 프로세스 (이진 탐색 서브분할 프로세스) 에 사용되거나 또는 특정한 서브블록이 이미지를 오버래핑하는지 여부를 결정하는 경우에 사용될 수도 있다.
도면의 간단한 설명
본 발명의 신규한 특성은 부가된 특허청구범위에 개시되어 있다. 그러나, 자세한 설명을 위해, 본 발명의 몇몇 실시예들이 다음의 도면에 개시되어 있다.
도 1 은 래스터화가 수행되는 환경의 개념도이다.
도 2 는 래스터화를 위해 그래픽 데이터 스트림을 프로세싱하는 흐름도이다.
도 3a 및 3b 는 프로세싱되고 있는 경우의 예시적인 이미지의 개념도를 도시한 것이다.
도 4 는 디스플레이되는 이미지를 둘러싸는 바운딩 박스 (bounding box) 의 사이즈 및 위치를 결정하는 프로세스의 흐름도이다.
도 5 는 효율적인 "Z" 패턴 순서로 그래픽 데이터의 블록을 분석하고 래스터화하는 반복 프로세스의 흐름도이다.
도 6a 내지 6b 는 도 5 의 반복 프로세싱 기법에 의해 프로세싱되고 있는 경우의 예시적인 이미지의 개념도를 도시한 것이다.
도 7 은 래스터화될 블록의 픽셀에 관한 스캐닝 순서를 분석하고 특정하는 반복 연관 프로세스의 흐름도이다.
도 8a 내지 8c 는 2 × 2, 4 × 4, 및 8 × 8 블록의 "Z" 패턴 스캐닝 순서를 도시한 것이다.
도 9 는 본 발명의 몇몇 실시예가 구현된 컴퓨터 시스템 (900) 을 나타낸다.
발명의 상세한 설명
다음의 설명에서, 자세한 설명을 위해 다수의 세부사항들이 개시된다. 그러나, 당업자는 본 발명이 특정한 세부사항을 사용하지 않고 실시될 수도 있다는 것을 알게 될 것이다. 또 다른 예시에서, 널리 공지된 구조물 및 디바이스는 불필요한 세부사항으로 본 발명의 설명을 불명확하게 하지 않도록 블록다이어그램 형태로 도시하였다.
이미지를 기술하는 그래픽 데이터는 래스터화를 위해 프로세싱된다. 이 기법은 이진 탐색 서브분할 프로세스에 기초하여 "Z" 패턴 스캐닝 순서로 그래픽 데이터의 블록 (픽셀 어레이) 을 분석하여, 이미지의 서브블록 (서브픽셀 어레이) 에 관한 래스터화 순서를 결정한다. 몇몇 실시형태에 있어서, 블록 및 서브블록의 변은 (픽셀 단위로) 2의 거듭제곱인 길이를 갖는다. 이 기법은, 서브블록 이 소정의 타일 사이즈와 매칭할 때까지 서브블록을 추가의 서브블록으로 반복적으로 분할하는 반복 프로세싱 기법 (이진 탐색 서브분할 프로세스) 을 사용하여, 이미지의 서브블록에 관해 분석 순서를 결정한다. 또한, 각각의 결과적인 서브블록의 변은 (픽셀 단위로) 2의 거듭제곱의 길이를 갖는다. 그 후, 몇몇 조건에서, 이 기법은 래스터화를 위해 (타일 사이즈와 동일한 사이즈를 갖는) 서브블록과 연관되는 그래픽 데이터를 캐시로 로딩한다. 그 후, 몇몇 실시형태에 있어서, 블록과 연관되는 픽셀은 이진 탐색 서브분할 프로세스에 기초한 "Z" 패턴 스캐닝 순서로 래스터화된다.
타일 사이즈는 캐시의 사이즈에 기초하여 결정된다. 몇몇 실시형태에 있어서, 타일은 (픽셀 단위로) 2의 거듭제곱인 길이의 변을 갖는 정사각형이다. 몇몇 조건에서, 이 기법은 래스터화를 위해 소정의 타일 사이즈를 갖는 타일 (서브블록) 에 관한 그래픽 데이터를 캐시로 로딩한다. 몇몇 실시형태에 있어서, 캐시 사이즈는, 타일과 연관되는 모든 그래픽 데이터가 동시에 캐시로 저장될 수 있도록 타일 사이즈를 지원한다. 몇몇 실시형태에 있어서, 타일은 또 다른 그래픽 데이터가 캐시로 로딩되기 전에 캐시 데이터를 사용하여 래스터화된다.
여기에 개시된 이 기법은 그래픽 데이터를 캐시로 로딩하고 캐시로부터 그래픽 데이터를 래스터화하는 효율적인 방법을 제공한다. 타일의 사이즈는 캐시의 사이즈에 기초하기 때문에, 캐시로 동시에 저장된 그래픽 데이터의 대부분 또는 전부는, 추가의 그래픽 데이터가 저장 디바이스로부터 캐시로 로딩되기 전에 래스터화된다. 이와 같이, 캐시로의 데이터 이동은 최적화되고, 캐시로 이동하는 그 래픽 데이터의 수는 감소한다. 또한, 이미지의 서브블록의 프로세싱 순서는, 서브블록의 분석 및 래스터화의 효율적인 순서를 제공하는 이진 탐색 서브분할 프로세스에 기초한 "Z" 패턴 순서에 의해 결정된다.
또한 이 기법은, (픽셀 단위로) 2의 거듭제곱인 사이즈를 갖는 서브블록 및 타일의 사용을 통해 그래픽 데이터의 효율적인 프로세싱을 위해 제공한다. 이와 같이, 그래픽 데이터의 프로세싱에 필요한 계산은 복소 이진 분할 연산이 감소하고, 간단하고 신속한 시프트 연산에 의해 대부분 대체된다는 점에서 간략화된다. 예를 들어, 간략화된 시프트 연산은 서브블록을 추가의 서브블록으로 반복적으로 분할하는 반복 프로세싱 (이진 탐색 서브분할 프로세스) 에 사용되거나 특정한 서브블록이 이미지를 오버래핑하는지 여부를 결정하는 경우에 사용될 수도 있다.
이하 본 발명의 설명은, 섹션 Ⅰ 에서 설명되는 바와 같이, 래스터화를 위해 그래픽 데이터를 프로세싱하는 일반적인 기법을 포함한다. 또한 본 발명의 설명은, 섹션 Ⅱ 에서 설명되는 바와 같이, 이진 탐색 서브분할 프로세스에 기초한 "Z" 패턴 순서에 따라 이미지의 서브블록을 프로세싱하는 반복 프로세싱을 포함한다. 또한, 본 발명의 설명은, 섹션 Ⅲ 에서 설명되는 바와 같이, 이진 탐색 서브분할 프로세스에 기초한 "Z" 패턴 순서에 따라 블록의 픽셀에 관한 스캐닝 순서를 특정하는 반복 연관 기법을 포함한다.
섹션 Ⅰ: 래스터화를 위한 그래픽 데이터 프로세싱
도 2 는 래스터화를 위해 그래픽 데이터 스트림을 프로세싱하는 일반적인 기법 (200) 의 흐름도이다. 일반적인 기법 (200) 은 "Z" 패턴 순서로 (그래픽 데 이터에 의해 기술되는 바와 같은) 이미지를 분석하여, 이미지의 서브블록에 관한 래스터화 순서를 결정한다. 일반적인 기법 (200) 은, 그래픽 데이터 스트림을 생성하는 애플리케이션, 생성된 그래픽 데이터를 저장하는 저장 디바이스, 및 래스터화를 위해 그래픽 데이터의 일부를 일시적으로 저장하는 캐시와 함께 사용된다. 일반적인 기법 (200) 은 도 3a 및 3b 와 관련해 설명된다. 도 3a 및 3b 는 일반적인 기법 (200) 에 의해 프로세싱되는 경우에, 예시적인 이미지의 개념도를 도시한 것이다.
프로세스는, 일반적인 기법 (200) 에 의해 그래픽 데이터를 프로세싱하는 동안에, 그래픽 데이터를 일시적으로 저장하기 위해 사용되는 캐시의 사이즈에 기초하여 타일 사이즈 (픽셀 어레이 사이즈) 를 (205 에서) 결정함으로써 시작한다. 타일 사이즈는 캐시 사이즈와 상관되어 있으며, 캐시 사이즈가 타일 사이즈를 지원할 수 있도록 (즉, 캐시 사이즈가 단일 타일과 관련된 모든 데이터를 동시에 저장할 수 있도록) 결정된다. 타일 사이즈는 (색채의 품질, 질감 또는 색심도의 존재 등에 따라 변하는) 타일의 각각의 픽셀에 대해 필요한 데이터의 양에 의해 결정된다.
또한, 타일 사이즈는 그래픽 데이터를 생성하는 애플리케이션, 및 이미지를 생성하기 위해 애플리케이션에 의해 사용되는 삼각형 이미지의 사이즈에 의해 조정/영향 받을 수도 있다. 통상적으로, 애플리케이션은 다수의 삼각형 이미지의 합성체로 이미지를 기술하는 그래픽 데이터를 생성한다. 이미지를 구성하는데 사용되는 삼각형 이미지의 사이즈는 애플리케이션에 따라 변한다. 몇몇 실시형 태에 있어서, 결정된 타일 사이즈는 상대적으로 작은 삼각형 이미지를 사용하는 애플리케이션에 대해 감소하고, 상대적으로 큰 삼각형 이미지를 사용하는 애플리케이션에 대해 증가한다.
몇몇 실시형태에 있어서, 타일은 (픽셀에 의해 측정된 바와 같이) 2의 거듭제곱 (2t ) 인 길이의 변을 갖는 정사각형이며, 2t × 2t 픽셀 어레이를 포함한다. 여기에 사용된 바와 같이, 타일은 소정의 사이즈의 픽셀 어레이로 지칭된다. 그러나, 또한 여기에 사용된 바와 같이, 타일은 타일의 소정의 사이즈에 매칭하는 (픽셀 단위의) 사이즈를 갖는 이미지의 서브블록으로 지칭될 수도 있다.
그 후, 일반적인 프로세스 (200) 는 (그래픽 데이터 스트림으로부터) 소정의 사이즈를 갖는 a × a 픽셀 어레이에 관한 그래픽 데이터를 (210 에서) 수신한다. 도 3a 는 수신된 픽셀 어레이 (305) 의 예시적인 이미지 (310) 의 개념도를 도시한 것이다. 도 3a 의 실시예에서, 수신된 픽셀 어레이 (305) 는 디스플레이되는 삼각형 이미지 (310) 를 포함하는 32 × 32 어레이이다.
그 후, 프로세스 (200) 는 이미지를 둘러싸는 바운딩 박스의 사이즈 및 위치를 (220 에서) 결정한다. 몇몇 실시형태에 있어서, 바운딩 박스는 (픽셀 단위로 측정되는 바와 같이) 2의 거듭제곱인 길이의 변을 갖는 정사각형이다. 도 3b 는 이미지 (310) 를 둘러싸는 예시 바운딩 박스 (315) 의 개념도를 도시한 것이다. 도 3B 의 실시예에서, 바운딩 박스 (315) 는 (k = 4 일 때, 2k 픽셀의 변을 갖는) 16 × 16 픽셀 어레이를 포함한다. 바운딩 박스 (315) 의 사이즈 및 위 치를 결정하는 프로세스 (400) 는 도 4 와 관련해 후술된다.
그 후, 프로세스 (200) 는 바운딩 박스의 (픽셀 단위의) 사이즈가 (단계 205 에서 결정된) 타일 사이즈와 동일한지 여부를 (225 에서) 결정한다. 만약 동일하다면, 프로세스 (200) 는, 바운딩 박스와 연관되고 바운딩 박스 내의 이미지를 기술하는 그래픽 데이터를 저장 디바이스로부터 캐시로 (230 에서) 로딩한다. 그 후, 프로세스는 (캐시로 로딩되는, 연관된 그래픽 데이터에 의해 설명되는 바와 같이) 바운딩 박스 내에 포함된 이미지를 (235 에서) 래스터화한다. 바운딩 박스의 이미지는, 캐시 사이즈가 바운딩 박스의 사이즈를 지원하기 때문에 저장부로부터 캐시로 추가의 데이터가 로딩하지 않고 래스터화될 수 있다. 이는, 캐시 사이즈가 타일 사이즈를 지원하고, 바운딩 박스의 사이즈가 타일 사이즈와 동일하다고 결정 (225 에서 - "예") 되었기 때문에, 캐시 사이즈가 또한 바운딩 박스의 사이즈를 지원하는 사실에 기인한다. 몇몇 실시형태에 있어서, 바운딩 박스의 전체 이미지는 더 많은 그래픽 데이터가 캐시로 로딩되기 전에 래스터화된다.
그 후, 프로세스는 그래픽 데이터 스트림에 프로세싱될 그래픽 데이터가 더 있는지 여부를 (237 에서) 결정한다. 만약 더 있다면, 프로세스는 다음 a × a 픽셀 어레이에 관한 그래픽 데이터를 수신하는 단계 210 에서 계속된다. 만약 더 없다면, 프로세스는 종료한다.
바운딩 박스의 사이즈가 타일 사이즈와 동일하지 않다고 결정 (225 에서 - "아니오") 된다면, 프로세스는 현재의 블록을 바운딩 박스로 (240 에서) 설정한다. 그 후, 프로세스는 (도 5 와 관련해 후술되는 바와 같이) 반복 프로세싱 기법을 (245 에서) 호출하고, 그래픽 데이터의 현재의 블록 (바운딩 박스) 을 반복 프로세싱 기법으로 통과시킨다. 반복 프로세싱 기법은 효율적인 순서로 현재의 블록의 서브블록을 분석하고 래스터화한다. 몇몇 실시형태에 있어서, 반복 프로세싱 기법은, 이진 탐색 서브분할 프로세스에 기초한 "Z" 프로세싱 패턴에 따라, 현재의 블록의 서브블록을 프로세싱한다. 프로세스는 그래픽 데이터 스트림에 프로세싱될 그래픽 데이터가 더 있는지 여부를 (237 에서) 결정한다. 만약 더 있다면, 프로세스는 다음 a × a 픽셀 어레이에 관한 그래픽 데이터를 수신하는 단계 210 에서 계속된다. 만약 더 없다면, 프로세스는 종료한다.
도 4 는 디스플레이되는 이미지를 둘러싸는 바운딩 박스의 사이즈 및 위치를 결정하는 프로세스 (400) 의 흐름도이다. 프로세스 (400) 는 일반적인 프로세스 (200) 의 단계 220 을 포함한다. 프로세스 (400) 는 도 3a 및 3b 와 관련해 설명된다. 프로세스 (400) 는 삼각형인 이미지와 관련 있다고 하더라도, 당업자는 프로세스 (400) 가 다른 형상 또는 형태의 이미지를 둘러싸는 바운딩 박스를 결정하도록 쉽게 적응될 수 있다는 것을 분명히 알 것이다. 또한, 프로세스 (400) 는 삼각형 이미지가 삼각형의 정점의 수평 및 수직 좌표 ((x1, y1),(x2,y2),(x3,y3)) 에 의해 특정된다고 가정한다. 그러나, 당업자는 삼각형 이미지가 다른 방법으로 특정될 수도 있다는 것을 알게 될 것이다.
몇몇 실시형태에 있어서, 바운딩 박스는 이미지를 둘러쌀 수 있는 가장 작은 사이즈를 갖는 정사각형이지만, 또한, (픽셀 단위로) 2의 거듭제곱인 길이의 변을 갖는다 (즉, 이미지를 둘러싸는 2의 거듭제곱인 변을 갖는 가장 작은 정사각형이다). 바운딩 박스의 변의 길이는, 바운딩 박스가 2k × 2k 픽셀 어레이를 포함하도록, 2k 로 표현된다.
프로세스 (400) 는 삼각형 이미지의 정점의 수평 및 수직 좌표 ((x1, y1),(x2,y2),(x3,y3)) 를 (405 에서) 식별함으로써 시작된다. 몇몇 실시형태에 있어서, 수평 및 수직 좌표는 삼각형 이미지를 포함하는 픽셀 어레이의 픽셀 좌표와 관련 있다. 이 단계의 실시예는 도 3a 에 도시되어 있다.
그 후, 프로세스는 식별된 정점의 수평 및 수직 좌표의 최대, 최소값을 (410 에서) 결정한다. 수학식 형태로, 프로세스는 xmin = min (x1,x2,x3), xmax = max (x1,x2,x3), ymin = min (y1, y2, y3) 및 ymax = max (y1, y2, y3) 를 결정한다.
예를 들어, 도 3a 에 도시된 이미지 (310) 에 관해, 프로세스는 xmin = x1, xmax = x3, ymin = y3, ymax = y2 라고 결정할 수도 있다.
그 후, 프로세스는 이미지의 범위 (s) 를 (415 에서) 결정한다. 범위는 이미지의 수평 길이 (픽셀 단위로 측정) 또는 수직 길이 (픽셀 단위로 측정) 보다 더 길다. 수학식 형태로, 범위 (s) 는 s = max (xmax - xmin , ymax - ymin) 로 표현된다. 예를 들어, 도 3a 에 도시된 이미지 (310) 에 관해, 프로세스는 s = max (x3 - x1 , y2 - y3) = (x3 - x1) 라고 결정한다. 이와 같이, 도 3a 의 실시 예에서, 이미지의 수평 길이는 이미지의 수직 길이보다 길기 때문에 수평 길이가 범위를 결정한다.
그 후, 프로세스는 2k-1 < s ≤ 2k 가 되도록 k의 값을 (420 에서) 결정한다. k 의 값은 바운딩 박스가 2k × 2k 픽셀 어레이를 포함하고, 길이가 2k 인 변을 갖는 바운딩 박스의 사이즈를 결정한다. 예를 들어, 도 3b 에 도시된 바와 같이, k 의 값은, 바운딩 박스 (315) 의 변의 길이가 16 픽셀이 되도록 4 로 결정된다 (바운딩 박스 (315) 가 16 × 16 픽셀 어레이를 포함함).
그 후, 프로세스는 바운딩 박스의 위치를 (425 에서) 결정한다. 몇몇 실시형태에 있어서, 프로세스는, x0 = 2t n, x0 ≤ xmin, 및 2t (n + 1) > xmin 이도록, x0 의 값을 결정함으로써 바운딩 박스의 위치를 결정한다.
또한, 프로세스는, y0 = 2t m, y0 ≤ ymin, 및 2t (m + 1) > ymin 이도록 y0 의 값을 결정한다.
그 후, 프로세스는 (x0, y0), (x0 + 2k, y0), (x0, y0 + 2k), 및 (x0 + 2k, y0 + 2k) 인 좌표로서 바운딩 박스의 4 개의 정점을 식별한다.
바운딩 박스의 정점 및 위치는 (도 3b 의 실시예에 도시된 바와 같이) 전체 삼각형 이미지를 둘러싸도록 결정된다. 그 후, 프로세스는 종료한다.
섹션 Ⅱ : 이미지의 서브블록을 분석하고, 래스터화하는 반복 프로세싱
도 5 는 효율적인 "Z" 패턴 순서로 그래픽 데이터의 블록을 분석하고, 래스터화하는 반복 프로세싱 기법 (500) 의 흐름도이다. 몇몇 실시형태에 있어서, 반복 프로세싱 기법은, 이진 탐색 서브분할 프로세스를 사용하여, 특정한 순서로 분석하고 래스터화하기 위해 그래픽 데이터의 서브블록을 선택한다. 반복 프로세싱 기법 (500) 은 그래픽 데이터를 생성하는 애플리케이션, 생성된 그래픽 데이터를 저장하는 저장 디바이스, 및 래스터화를 위해 사용되는 데이터를 일시적으로 저장하는 캐시와 함께 사용된다. 도 5 는 도 6a 내지 6e 에 관해 설명되어 있다. 도 5 는, 반복 프로세싱 기법 (500) 에 의해 프로세싱되는 경우에, (그래픽 데이터의 블록에 의해 기술되는 바와 같이) 예시적인 이미지의 개념도를 도시한 것이다.
반복 프로세싱 기법은 도 2 의 일반적인 프로세스 (200) 에 의해 단계 245 에서 호출되고, 일반적인 프로세스 (200) 로부터의 (현재의 블록과 연관되는 그래픽 데이터에 의해 기술되는 바와 같은) 이미지를 갖는 현재의 블록 (바운딩 박스) 을 수신한다. 도 6a 는 도 3b 로부터 바운딩 박스 (315) 를 포함하는 현재의 블록 (605) 의 개념도를 도시한 것이다. 도 6a 의 실시예에 도시된 바와 같이, 현재의 블록 (605) 은 래스터화 및 디스플레이를 위해 삼각형 이미지 (610) 를 갖는 16 × 16 픽셀 어레이를 포함한다.
반복 프로세싱 기법 (600) 은 서브블록을 생성하기 위해 현재의 블록을 (505 에서) 분할함으로써 (즉, 서브픽셀 어레이를 생성하기 위해 현재의 블록의 픽셀 어레이를 분할함으로써) 시작한다. 몇몇 실시형태에 있어서, 현재의 블록은 중앙 에서 수평 및 수직적으로 분할하여, 4개의 동일한 사이즈의 서브블록을 생성한다. 도 2 와 관련해 상술했던 바와 같이, 현재 블록은 (픽셀 단위로) 2의 거듭제곱인 길이의 변을 갖는 정사각형이다. 이와 같이, 각각의 서브블록 또한 2의 거듭제곱인 길이의 변을 갖는 정사각형이다. 도 6b 에 도시된 실시예에서, 현재의 블록은, 각각의 생성된 서브블록이 8 × 8 픽셀 어레이가 되도록 16 × 16 픽셀 어레이이다.
그 후, 반복 프로세싱 기법은 (도 6b 에 도시된 바와 같이) "Z" 패턴에 따라 프로세싱 순서를 각각의 생성된 서브블록과 (507 에서) 연관시킨다. 즉, 현재의 블록의 좌측 상단 코너에 있는 서브블록 (서브블록 1) 은 프로세싱 순서에서 연관된 제 1 위치를 갖으며, 현재의 블록의 우측 상단 코너에 있는 서브블록 (서브블록 2) 은 프로세싱 순서에서 연관된 제 2 위치를 갖으며, 현재의 블록의 좌측 하단 코너에 있는 서브블록 (서브블록 3) 은 프로세싱 순서에서 연관된 제 3 위치를 갖으며, 현재의 블록의 우측 하단 코너에 있는 서브블록 (서브블록 4) 은 프로세싱 순서에서 연관된 제 4 (마지막의) 위치를 갖는다. 통계적으로, 이런 프로세싱 순서는 효율적인 캐시의 사용을 위해 임의의 순서로 분석하고 래스터화하게 한다.
그 후, 반복 프로세싱 기법 (500) 은 연관된 프로세싱 순서에 따라 현재의 서브블록을 (510 에서) 선택한다. 이와 같이, 반복 프로세싱 기법 (500) 의 다수의 반복을 통해, 서브블록 1 은 처음으로 선택되어 프로세싱되고, 서브블록 2 는 두번째로 선택되어 프로세싱되고, 서브블록 3 는 세번째로 선택되어 프로세싱되며, 서브블록 4 는 마지막으로 선택되어 프로세싱된다.
그 후, 반복 프로세싱 기법 (500) 은 현재의 서브블록이 현재의 블록에서 이미지를 오버래핑하는지 여부를 (515 에서) 결정한다. 몇몇 실시형태에 있어서, 이 기법은, 현재의 서브블록이 완전히 이미지 내에 있거나 이미지와 교차하는지 여부를 결정함으로써 오버래핑 여부를 결정한다 (즉, 이미지가 부분적으로 서브블록 내에 있고, 이미지의 변이 서브블록의 변과 교차한다). 몇몇 실시형태에 있어서, 이 기법은, 다음의 단계들을 수행함으로써 현재의 서브블록이 완전히 이미지 내에 있거나 현재의 서브블록이 이미지와 교차하는지 여부 (즉, 현재의 서브블록이 이미지와 0 이외의 교차를 하는지 여부) 를 결정한다. 우선, 이 기법은 e1, e2, 및 e3 가 삼각형의 모서리/변에 관한 수학식이고, b1, b2, b3, 및 b4 는 현재의 서브블록의 모서리/변에 관한 수학식이라고 가정한다. 그 후, 이 기법은, ei 의 모서리 수학식으로 입력되는 경우에, 음이 아닌 값을 제공하는 bj 가 속한 정점의 수로 Ei , j 의 값을 정의한다. 그 후, 이 기법은 다음의 수학식, 즉, E1 ,1 + E1 ,3 + E2,1 + E2 ,3 + E3 ,1 + E3 ,3 = 12 가 참인지 여부를 결정한다. 만약 참이라면, 현재의 서브블록은 완전히 이미지 내에 포함된다. 만약 거짓이라면, 현재의 서브블록은 이미지 내에 완전히 포함되는 것은 아니다. 그 후, 이 기법은 일부 j 에 관해 다음의 수학식, E1 ,j > 0, E2 ,j > 0, E3 ,j > 0 이 참인지 여부 및 bj 가 속하는 하나 이상의 정점이, [xmin,xmax] × [ymin, ymax] 에 의해 정의되는 바운딩 박스 내에 존재하는지 여부를 결정한다. 만약 참이라면, 현재의 서브블록은 이미지와 교 차한다 (즉 이미지와 0 이외의 교차를 갖는다). 만약 거짓이라면, 현재의 블록은 이미지와 교차하지 않는다.
현재의 서브블록이 이미지를 오버래핑하지 않는다면, 현재의 서브블록은 무시되고, 그 후, 이 기법은 프로세싱될 현재의 블록의 서브블록이 더 있는지 여부를 (520 에서) 결정한다. 만약 더 있다면, 이 기법은, 다음의 현재의 서브블록이 연관된 프로세싱 순서에 따라 선택되는 단계 510 에서 계속된다. 만약 더 없다면, 이 기법은 호출 절차로 리턴한다. 반복 프로세싱 기법 (500) 의 제 1 반복 시에는 호출 절차가 일반적인 기법 (200) 이지만, 이 후의 반복 시에 호출 절차는 반복 프로세싱 기법 (500) 자체이다.
반복 프로세싱 기법 (500) 이, 현재의 서브블록이 이미지를 오버래핑한다고 결정 (515 에서 - "예") 한다면, 이 기법은 단계 527 로 진행한다. 도 6b 에 도시된 실시예에서 서브블록 1 은 이미지 (610) 를 오버래핑하고 있다. 단계 527 에서, 이 기법은 현재 서브블록의 사이즈가 (일반적인 기법 (200) 의 단계 205 에서 결정된) 타일의 사이즈와 동일한지 여부를 결정한다. 만약 동일하다면, 반복 프로세싱 기법 (500) 은 현재의 서브블록과 연관되는 그래픽 데이터를 (530 에서) 저장 디바이스로부터 캐시로 로딩한다 (즉, 현재의 서브블록을 오버래핑하는 이미지의 일부를 기술하는 그래픽 데이터를 로딩한다).
그 후, 이 기법은 (캐시로 로딩되는 연관된 그래픽 데이터에 의해 기술되는) 이미지의 현재의 서브블록을 (535 에서) 래스터화한다. 현재의 서브블록은, 캐시 사이즈가 현재의 서브블록 사이즈를 지원하기 때문에 추가의 데이터가 저장부로 부터 캐시로 로딩되지 않고 래스터화될 수 있다. 이는, 캐시 사이즈가 타일 사이즈를 지원하고, 현재의 서브블록의 사이즈가 타일 사이즈와 동일하다고 결정 (527 에서 - "예") 되었기 때문에, 캐시 사이즈가 현재의 서브블록 사이즈도 지원한다는 사실에 기인한다. 몇몇 실시형태에서, 현재의 서브블록 전체는, 더 많은 그래픽 데이터가 캐시로 로딩되기 전에 래스터화된다.
이 기법이, 현재의 서브블록의 사이즈가 타일 사이즈와 동일하지 않다고 결정 (525 에서 - "아니오") 한다면, (호출 절차인) 반복 프로세싱 기법 (500) 은 현재의 서브블록에 관해 반복한다. 이 기법은, 현재의 블록을 현재의 서브블록으로 (540 에서) 설정하고, 현재의 블록을 위해 (545 에서) 자신을 호출하며, 그래픽 데이터의 현재의 블록을 호출 반복된 절차에 통과시킴으로써, 반복할 수 있다. 현재의 서브블록에 관해 반복 프로세싱 기법 (500) 을 반복함으로써, 이 기법은, 타일의 사이즈가 매칭될 때까지 서브블록을 추가의 서브블록으로 (505 에서) 계속해서 분할한다. 타일의 사이즈가 서브블록에 의해 매칭되는 경우에, 서브블록과 연관되는 그래픽 데이터는 캐시로 (530 에서) 로딩되고, 서브블록은 (535 에서) 래스터화된다. 프로세싱될 현재의 블록의 서브블록이 더 없는 경우, 이 기법은 (일반적인 기법 (200) 또는 반복 프로세싱 기법 (500) 인) 호출 절차로 (525 에서) 리턴한다.
도 6b 에 도시된 실시예에 관해, 타일 사이즈가 서브블록 사이즈 (8 × 8 픽셀 어레이) 와 매칭하지 않도록 2 × 2 픽셀 어레이라고 가정한다. 이와 같이, 도 6b 에 도시된 실시예에서, 반복 프로세싱 기법 (500) 이 제 1 반복되는 동안에, 이 기법은 서브블록 1 에 관해 반복한다. 도 6c 의 실시예에 도시된 바와 같이, 서브블록 1 은 4 개의 4 × 4 서브블록으로 분할되고, 그 서브블록들은 연관된 "Z" 패턴 프로세싱 순서를 갖는다. 서브블록 1 은 반복 프로세싱 기법 (500) 에 의한 분석을 위해 선택되는 제 1 서브블록이다. 서브블록 1 은 이미지 (610) 를 오버래핑하지 않기 때문에, 서브블록 1 은 무시되고, 서브블록 2가 분석을 위해 (510 에서) 선택된다. 서브블록 2 는 이미지 (610) 를 오버래핑하나, 타일 사이즈와 동일한 사이즈를 갖지 않기 때문에 (서브블록 사이즈는 4 × 4 이고 타일 사이즈는 2 × 2 이기 때문에), 반복 프로세싱 기법 (500) 은 서브블록 2 에 관해 다시 (545 에서) 반복된다.
도 6d 의 실시예에 도시된 바와 같이, 서브블록 2 는 4 개의 2 × 2 로 (505 에서) 분할되고, 그 서브블록들은 연관된 "Z" 패턴 프로세싱 순서를 갖는다. 서브블록 1 은 반복 프로세싱 기법 (500) 에 의해 프로세싱되는 제 1 서브블록이다. 서브블록 1 은 이미지 (610) 를 오버래핑하고 타일 사이즈와 동일한 사이즈를 갖기 때문에 (서브블록 사이즈가 2 × 2 이고, 타일 사이즈도 2 × 2 이기 때문에), 반복 프로세싱 기법 (500) 은 서브블록 1 과 연관되는 그래픽 데이터를 캐시로 (530 에서) 로딩하여, 서브블록을 (535 에서) 래스터화한다. 그 후, 이 기법은 서브블록 2 를 분석하고, 서브블록 2 와 연관되는 그래픽 데이터를 로딩하고 래스터화한다. 이 기법은 서브블록 3 및 서브블록 4 에 대해서 동일하게 적용된다.
서브블록 4 를 프로세싱한 후에, 이 기법은 현재의 블록 (도 6c 의 서브블록 2) 의 서브블록이 더 없는지를 (520 에서) 결정한다. 이와 같이, 이 기법은, 도 6c 의 서브블록 2 를 프로세싱하는 것을 (545 에서) 종료시켰던 호출 절차 (반복 프로세싱 기법 (500)) 로 (525 에서) 리턴한다. 그 후, 이 기법은 프로세싱될 현재의 블록 (도 6b 의 서브블록 1) 의 서브블록 (도 6c 의 서브블록 3 및 서브블록 4) 이 더 있는지를 (520 에서) 결정한다. 그 후, 이 기법은 분석을 위해 도 6c 의 서브블록 3 을 (510 에서) 선택한다.
반복 프로세싱 기법 (500) 은, 도 6b 의 각각의 서브블록이 프로세싱될 때까지 이런 방식으로 계속된다. 서브블록을 프로세싱하는 동안에, 추가의 서브블록은, 일부 서브블록이 캐시로 로딩되고, 래스터화되는 반면에 일부 서브블록은 무시되는 영역에서 반복적으로 생성된다. 도 6e 는 반복 프로세싱 기법 (500) 에 의해 생성된 이미지 (610) 의 서브블록의 예시적인 래스터화 순서를 도시한 것이다. 서브블록의 숫자는 다른 서브블록에 관한 서브블록의 래스터화 순서를 나타낸다. 실선 및 점선은 서브블록을 추가의 서브블록으로 분할하는 것을 나타내며, 여기서 점선은 타일의 사이즈와 동일한 사이즈를 갖는 서브블록을 나타낸다.
섹션 Ⅲ : "Z" 패턴 스캐닝 순서
몇몇 실시형태에 있어서, 본 발명의 기법은, 블록을 래스터화하는 동안에, 블록의 픽셀 (픽셀 어레이) 을 스캐닝하는 "Z" 패턴 순서를 구현한다. 예를 들어, "Z" 패턴 래스터화 순서는 바운딩 박스 내의 이미지를 (도 2 의 단계 235 에서) 스캐닝하거나 이미지의 서브블록을 (도 5 의 단계 535 에서) 스캐닝하기 위해 사용될 수도 있다.
도 7 은 래스터화될 블록의 픽셀에 관한 스캐닝 순서를 분석하고 특정하는 반복 연관 기법 (700) 의 흐름도이다. 반복 연관 기법 (700) 은 2 × 2 보다 더 큰 사이즈를 갖는 블록에 적용될 수 있다. 2 × 2 블록의 픽셀은 (도 8a 에 도시된 바와 같이) 간단히 "Z" 스캐닝 순서로 특정된다. 반복 연관 기법 (700) 은, 서브블록의 사이즈가 2 × 2 가 될 때까지 블록의 서브블록을 추가의 서브블록으로 반복적으로 분할하는 이진 탐색 서브분할 프로세스를 사용하여, 블록의 픽셀에 관한 스캐닝 순서를 특정한다. 그 후, 이 기법은 (도 8a 에 도시된 바와 같이) 2 × 2 서브블록의 픽셀에 관한 "Z" 스캐닝 순서를 특정한다. 반복 연관 기법 (700) 은 도 5 의 반복 프로세싱 기법 (500) 과 유사하며, 여기서 타일 사이즈는 2 × 2 픽셀 어레이와 동일하다. 단지 반복 프로세싱 기법 (500) 과 상이한 단계들만 여기에서 상세히 설명한다.
반복 연관 기법 (700) 은 래스터화될 현재의 블록 (픽셀 어레이) 을 (702 에서) 수신함으로써 시작된다. 몇몇 실시형태에 있어서, 블록은 (픽셀 단위로 측정되는) 2의 거듭제곱인 길이의 변을 갖는 정사각형이다. 블록은 2t × 2t 픽셀 어레이를 포함한다. 이 기법은 현재의 블록을 (705 에서) 분할하여, 4 개의 동일한 사이즈의 서브블록을 생성하고, 각각의 서브블록은 (픽셀 단위로 측정되는) 2의 거듭제곱인 길이의 변을 갖는다. 그 후, 이 기법은 프로세싱 순서를 각각의 생성된 서브블록과 (도 6b 에 나타낸 바와 같이) "Z" 패턴에 따라 (707 에서) 연관시킨다. 이런 프로세싱 순서는 픽셀에 관해 특정된 스캐닝 순서와 동일하지 않 으며, 즉, 프로세싱 순서는 스캐닝 순서를 결정하기 위해 반복 연관 기법 (700) 이 따르는 분석 순서를 제공하는 반면에, 픽셀에 관해 특정된 스캐닝 순서는 픽셀이 래스터화 동안에 스캐닝될 순서를 제공한다.
그 후 반복 연관 기법 (700) 은 연관된 프로세싱 순서에 따라 현재의 서브블록을 (710 에서) 선택한다. 이 기법은 (715 에서) 현재의 서브블록의 사이즈가 2 × 2 인지 여부를 결정한다. 만약 2 × 2 라면, 반복 연관 기법 (700) 은 현재의 서브블록의 픽셀에 관한 "Z" 패턴 스캐닝 순서를 (717 에서) 특정한다. 즉, 현재의 서브블록의 좌측 상단 코너 에 있는 픽셀은 스캐닝 순서에서 연관된 제 1 위치를 갖고, 현재의 서브블록의 우측 상단 코너에 있는 픽셀은 스캐닝 순서에서 연관된 제 2 위치를 가지며, 현재의 서브블록의 좌측 하단 코너에 있는 픽셀은 스캐닝 순서에서 연관된 제 3 위치를 갖고, 현재의 서브블록의 우측 하단 코너에 있는 픽셀은 스캐닝 순서에서 연관된 제 4 위치를 갖는다.
그 후, 이 기법은 프로세싱될 현재의 블록의 서브블록이 더 있는지 여부를 (720 에서) 결정한다. 만약 더 있다면, 이 기법은 연관된 프로세싱 순서에 따라 다음의 현재의 서브블록이 선택되는 단계 710 에서 계속된다. 만약 더 없다면, 이 기법은 호출 절차로 리턴한다.
이 기법이 현재의 서브블록의 사이즈가 2 × 2 가 아니라고 결정 (715 에서 - "아니오") 한다면, 반복 연관 기법 (700; 호출 절차) 은 현재의 서브블록에 관해 반복된다. 이 기법은 현재의 블록을 현재의 서브블록으로 (740 에서) 설정하고, 현재의 블록에 대해 (745 에서) 자신을 호출하며, 현재의 블록을 호출 반복된 절차로 (745 에서) 통과시킴으로써 반복된다. 반복 연관 기법 (700) 을 현재의 서브블록에 관해 반복함으로써, 이 기법은, 2 × 2 서브블록이 될 때까지 서브블록을 추가의 서브블록으로 (750 에서) 계속해서 분할한다. 2 × 2 서브블록이 되는 경우에, 서브블록의 픽셀에 관한 "Z" 패턴 스캐닝 순서는 (717 에서) 특정된다. 프로세싱될 현재의 블록의 서브블록이 더 이상 없는 경우에, 이 기법은 호출 절차로 (725 에서) 리턴한다.
도 8a 는 2 × 2 픽셀 어레이에 관한 "Z" 패턴 스캐닝 순서를 도시한 것이다. 도 8b 및 8c 는 반복 연관 기법 (700) 에 의해 생성되는 스캐닝 순서의 실시예를 도시한 것이다. 도 8b 는 4 × 4 블록에 관한 결과적인 스캐닝 순서를 도시한 것이고, 도 8c 는 16 × 16 블록에 관한 결과적인 스캐닝 순서를 도시한 것이다. 픽셀 어레이를 스캐닝하는 것에 관한 "Z" 패턴 스캐닝 순서는 통계적으로 질감 매핑 캐시 히트 레이트를 개선한다.
도 9 는 본 발명의 몇몇 실시예가 구현된 컴퓨터 시스템 (900) 을 나타낸다. 몇몇 실시형태에 있어서, 본 발명의 기법은 특별히 그래픽 생성에 관해 전용된 하드웨어 디바이스로 하드-코딩되고/되거나, 컴퓨터 판독 매체에 저장된 컴퓨터 실행 가능 명령어 (소프트웨어) 로 구현된다.
컴퓨터 시스템 (900) 은 버스 (905), 프로세서 (910), 시스템 메모리 (915), 판독 전용 메모리 (920), 영구 저장 디바이스 (925), 입력 디바이스 (930), 출력 디바이스 (935) 및 대체 프로세서 (940) 를 포함한다.
버스 (905) 는 컴퓨터 시스템 (900) 의 다수의 내부 디바이스을 통신적으로 연결하는 모든 시스템, 주변 장치 및 칩셋 버스를 집합적으로 나타낸다. 예를 들어, 버스 (905) 는 프로세서 (910)을 판독 전용 메모리 (920), 시스템 메모리 (915), 및 영구 저장 디바이스 (925) 와 통신적으로 연결한다.
판독 전용 메모리 (ROM; 920) 는 프로세서 (910) 및 컴퓨터 시스템의 다른 모듈에 의해 요청되는 정적 (static) 데이터 및 명령어를 저장한다. 한편, 영구 저장 디바이스 (925) 는 판독/기록 메모리 디바이스이다. 이 디바이스는, 컴퓨터 시스템 (900) 이 오프 (off) 인 경우에도, 명령어 및 데이터를 저장하는 비휘발성 메모리 유닛이다. 본 발명의 몇몇 실시형태에 있어서는, (자기 또는 광학 디스크 및 그 대응하는 디스크 드라이브와 같은) 대용량 저장 디바이스를 영구 저장 디바이스 (925) 로 사용한다. 또 다른 실시형태는 (플로피 디스크 또는 집 (ZIP®) 디스크 및 그 대응하는 디스크 드라이브와 같은) 착탈형 저장 디바이스를 영구 저장 디바이스로써 사용한다.
영구 저장 디바이스 (925) 와 같이, 시스템 메모리 (915) 는 판독/기록 메모리 디바이스이다. 그러나, 저장 디바이스 (925) 와 달리, 시스템 메모리는 랜덤 액세스 메모리 (RAM) 와 같은 휘발성 판독/기록 메모리이다. 시스템 메모리는 프로세서가 동작 중에 요청하는 명령어 및 데이터의 일부를 저장한다.
몇몇 실시형태에 있어서, 본 발명의 방법을 수행하기 위해 요청되는 명령어 및/또는 데이터는 시스템 메모리 (915), 영구 저장 디바이스 (925), 판독 전용 메모리 (920) 또는 이들의 조합물에 저장된다. 예를 들어, 다양한 메모리 유닛은 애플리케이션의 명령어 및/또는 애플리케이션에 의해 생성된 그래픽 데이터를 포함 할 수도 있다. 몇몇 실시형태에 있어서, 시스템 메모리 (915) 및/또는 영구 저장 디바이스 (925) 는 캐시 및/또는 버퍼를 포함한다.
프로세서 (910) 는 이들 다양한 메모리 유닛으로부터 본 발명의 프로세스를 수행하기 위해, 실행할 명령어 및 프로세싱할 데이터를 검색한다. 몇몇 실시형태에 있어서, 프로세서 (910) 는 프로세서 (910) 에 의해 최근 액세스되거나 생성된 데이터를 저장하는 온-칩 캐시 (912) 를 사용한다. 몇몇 실시형태에 있어서는, 대체 프로세서 (940) 가 명령어를 실행하고, 데이터를 프로세싱하여, 본 발명의 프로세스를 수행한다.
또한, 버스 (905) 는 입력 디바이스 (930) 및 출력 디바이스 (935) 에 연결된다. 입력 디바이스 (930) 는 사용자가 정보를 통신하고 컴퓨터 시스템 (900) 에 대한 명령어를 선택하게 할 수 있다. 입력 디바이스 (930) 는 알파뉴메릭 (alphanumeric) 키보드 및 커서-제어기 (cursor-controller) 를 포함한다. 출력 디바이스 (935) 는 컴퓨터 시스템 (900) 에 의해 생성되는 이미지를 프린트하거나 디스플레이한다. 출력 디바이스는 캐소드 레이 튜브 (CRT) 또는 액정 디스플레이 (LCD) 와 같은 디스플레이 디바이스 및 프린터를 포함한다.
마지막으로, 도 9 에 도시된 바와 같이, 예를 들어 버스 (905) 는 네트워크 어댑터 (미도시) 를 통해 컴퓨터 시스템 (900) 을 네트워크 (965) 와도 연결한다. 이 방법에서 컴퓨터 시스템 (900) 은 (로컬 영역 네트워크 ("LAN"), 광역 네트워크 ("WAN"), 또는 인트라넷과 같은) 컴퓨터 네트워크의 일부이거나 (인터넷과 같은) 네트워크의 네트워크의 일부일 수도 있다. 컴퓨터 시스템 (900) 의 임의의 또는 모든 컴포넌트는 본 발명과 함께 사용될 수도 있다. 그러나, 당업자는 임의의 다른 시스템 구성이 본 발명과 함께 사용될 수도 있다는 것을 인식할 것이다.
본 발명이 수많은 특정 세부사항에 관해 설명되는 동안에, 당업자는, 본 발명이 본 발명의 취지에 벗어나지 않고 다른 특정 형태에서 실시될 수도 있다는 것을 알게 될 것이다. 그러므로 당업자는 본 발명이 앞서 예시한 세부사항에 의해 제한될 수 없으며, 오히려 부가된 청구항에 의해 정의될 수 있다는 것을 이해할 것이다.
여기에 개시된 실시형태와 관련해, 다양하게 예시한 로직컬 블록, 모듈, 및 회로는, 여기에 설명된 기능을 수행하도록 설계된 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램 가능 게이트 어레이 (FPGA) 또는 다른 프로그램 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트 또는 이들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다른 방법으로, 프로세서는 임의의 기존의 프로세서, 제어기, 마이크로제어기, 또는 상태 장치일 수도 있다. 또한 프로세서는, 예를 들어, DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서, DPS 코어와 결합한 하나 이상의 마이크로 프로세서, 또는 임의의 다른 구성과 같은 연산 디바이스의 조합으로 구현될 수도 있다.
여기에 개시된 실시형태와 관련하여 설명되는 방법 또는 알고리즘의 단계는 하드웨어에 직접적으로 실시되거나, 프로세서에 의해 실행되는 소프트웨어 모듈에 의해 실시되거나, 또는 이 둘의 조합에 의해 실시될 수도 있다. 소프트웨어 모 듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EPPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM, 또는 당업계에 공지된 임의의 다른 형태의 저장 매체에 상주할 수도 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결된다. 다른 방법으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 저장 매체는 ASIC 내에 상주할 수도 있다. ASIC 은 사용자 단말기에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기에 이산 구성요소로서 상주할 수도 있다.
개시된 실시형태에 대한 상기 설명은 임의의 당업자가 본 발명을 제조 또는 사용할 수 있도록 제공된다. 이들 실시형태에 대한 다양한 변형 실시는 당업자에게는 쉽고 명백할 것이고, 여기에서 정의된 일반적인 원리는 본 발명의 사상 또는 범위를 벗어나지 않고 다른 실시형태에 적용될 수도 있다. 따라서, 본 발명은 여기에서 설명된 실시형태들로 제한하려는 것이 아니라, 여기에서 개시된 원리 및 신규한 특징과 부합하는 최광의 범위를 부여하려는 것이다.

Claims (24)

  1. 캐시 사이즈가 타일 사이즈와 동일한 사이즈를 포함하는 데이터 저장용 캐시; 및
    상기 캐시와 연결되는 프로세서로서,
    그래픽 이미지를 복수의 서브블록으로 서브분할하고,
    그래픽 이미지 데이터를 포함하는 상기 서브블록에 관한, 상기 타일 사이즈와 동일한 사이즈를 포함하는 복수의 타일로 상기 서브블록을 서브분할하는 것을 포함하여, 블록 프로세싱 순서에 기초하여, 상기 서브블록을 프로세싱하고,
    상기 타일과 연관되는 데이터를 상기 캐시로 로딩하며,
    상기 그래픽 이미지의 상기 연관된 타일에 관한 픽셀을 생성하기 위해 상기 캐시 내의 상기 데이터를 사용하는, 상기 프로세서를 포함하는, 디바이스.
  2. 제 1 항에 있어서,
    상기 프로세서는,
    a) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하는지 여부를 결정하고,
    b) 상기 서브블록이 상기 그래픽 이미지를 오버래핑한다면, 서브블록 사이즈가 상기 타일 사이즈와 동일한지 여부를 결정하고,
    c) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하고 상기 서브블록 사이즈가 상기 타일 사이즈와 동일하다면, 상기 서브블록을 추가적인 서브블록으로 서 브분할하고,
    d) 상기 블록 프로세싱 순서에 기초하여 상기 추가적인 서브블록 중 하나를 선택하며, 그리고
    상기 서브블록 사이즈가 상기 타일 사이즈와 동일하게 될 때까지 상기 a), b), c), 및 d) 를 반복하는 소프트웨어를 더 포함하는, 디바이스.
  3. 제 1 항에 있어서,
    상기 프로세서는,
    상기 그래픽 이미지를 둘러싸는 바운딩 박스를 결정하고, 상기 서브블록을 생성하기 위해 상기 바운딩 박스를 서브분할하기 위한 소프트웨어를 더 포함하는, 디바이스.
  4. 제 3 항에 있어서,
    상기 프로세서는,
    상기 바운딩 박스의 사이즈 2k × 2k 를 결정하기 위한 소프트웨어를 더 포함하며, K 는 정수 값을 포함하는, 디바이스.
  5. 제 1 항에 있어서,
    상기 타일 사이즈가 2k × 2k 를 포함하며, K 는 정수 값을 포함하는, 디바이 스.
  6. 제 1 항에 있어서,
    상기 프로세서는,
    상기 픽셀을 생성하기 위해 픽셀 프로세싱 순서를 할당하기 위한 소프트웨어를 더 포함하는, 디바이스.
  7. 캐시-효율적인 그래픽 래스터화 장치로서,
    타일 사이즈를 선택하는 수단;
    그래픽 이미지를 복수의 서브블록으로 서브분할하는 수단;
    그래픽 이미지 데이터를 포함하는 서브블록에 관한, 상기 타일 사이즈와 동일한 사이즈를 포함하는 복수의 타일로 상기 서브블록을 서브분할하는 것을 포함하여, 블록 프로세싱 순서에 기초하여, 상기 서브블록을 프로세싱하는 수단;
    상기 타일과 연관되는 데이터를 캐시로 로딩하는 수단; 및
    상기 그래픽 이미지의 연관된 상기 타일에 관한 픽셀을 생성하기 위해 상기 캐시 내의 상기 데이터를 사용하는 수단을 포함하는, 그래픽 래스터화 장치.
  8. 제 7 항에 있어서,
    상기 서브블록을 프로세싱하는 상기 수단은,
    a) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하는지 여부를 결정하는 수단;
    b) 상기 서브블록이 상기 그래픽 이미지를 오버래핑한다면, 서브블록 사이즈가 상기 타일 사이즈와 동일한지 여부를 결정하는 수단;
    c) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하고, 상기 서브블록 사이즈가 상기 타일 사이즈와 동일하다면, 상기 서브블록을 추가적인 서브블록으로 서브분할하는 수단;
    d) 상기 블록 프로세싱 순서에 기초하여 상기 추가적인 서브블록 중 하나를 선택하는 수단; 및
    상기 서브블록 사이즈가 상기 타일 사이즈와 동일하게 될 때까지, 상기 a), b), c), d) 를 반복하는 수단을 포함하는, 그래픽 래스터화 장치.
  9. 제 7 항에 있어서,
    상기 그래픽 이미지를 둘러싸는 바운딩 박스를 결정하는 수단; 및
    상기 서브블록을 생성하기 위해 상기 바운딩 박스를 서브분할하는 수단을 더 포함하는, 그래픽 래스터화 장치.
  10. 제 9 항에 있어서,
    상기 그래픽 이미지를 둘러싸는 바운딩 박스를 결정하는 상기 수단은, 상기 바운딩 박스의 사이즈 2k × 2k 를 결정하는 수단을 포함하며, K 는 정수 값을 포함 하는, 그래픽 래스터화 장치.
  11. 제 7 항에 있어서,
    상기 타일 사이즈는 2k × 2k 를 포함하며, K 는 정수 값을 포함하는, 그래픽 래스터화 장치.
  12. 제 7 항에 있어서,
    상기 서브블록에 관한 픽셀을 생성하기 위해, 상기 캐시 내의 상기 데이터를 사용하는 수단은 상기 픽셀을 생성하기 위해 픽셀 프로세싱 순서를 할당하는 것을 포함하는, 그래픽 래스터화 장치.
  13. 캐시-효율적인 그래픽 래스터화 방법으로서,
    그래픽 이미지를 수신하는 단계;
    타일 사이즈를 선택하는 단계;
    상기 그래픽 이미지를 복수의 서브블록으로 서브분할하는 단계;
    그래픽 이미지 데이터를 포함하는 서브블록에 관한, 상기 타일 사이즈를 포함하는 복수의 타일로 상기 서브블록을 서브분할하는 단계를 포함하여, 블록 프로세싱 순서에 기초하여, 상기 서브블록을 프로세싱하는 단계;
    상기 타일과 연관되는 데이터를 캐시로 로딩하는 단계; 및
    상기 그래픽 이미지의 상기 연관된 타일에 관한 픽셀을 생성하기 위해, 상기 캐시 내의 상기 데이터를 사용하는 단계를 포함하는, 그래픽 래스터화 방법.
  14. 제 13 항에 있어서,
    서브블록을 프로세싱하는 상기 단계는,
    a) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하는지 여부를 결정하는 단계;
    b) 상기 서브블록이 상기 그래픽 이미지를 오버래핑한다면, 서브블록 사이즈가 상기 타일 사이즈와 동일한지 여부를 결정하는 단계;
    c) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하고, 상기 서브블록 사이즈가 상기 타일 사이즈와 동일하다면, 상기 서브블록을 추가적인 서브블록으로 서브분할하는 단계;
    d) 상기 블록 프로세싱 순서에 기초하여, 상기 추가적인 서브블록 중 하나를 선택하는 단계; 및
    상기 서브블록이 상기 타일 사이즈와 동일하게 될 때까지, 단계 a), 단계 b), 단계 c), 단계 d) 를 반복하는 단계를 포함하는, 그래픽 래스터화 방법.
  15. 제 13 항에 있어서,
    그래픽 이미지를 둘러싸는 바운딩 박스를 결정하는 단계; 및
    상기 서브블록을 생성하기 위해 상기 바운딩 박스를 서브분할하는 단계를 더 포함하는, 그래픽 래스터화 방법.
  16. 제 15 항에 있어서,
    그래픽 이미지를 둘러싸는 바운딩 박스를 결정하는 상기 단계는 바운딩 박스의 사이즈 2k × 2k 를 결정하는 단계를 포함하고, K 는 정수 값을 포함하는, 그래픽 래스터화 방법.
  17. 제 13 항에 있어서,
    상기 타일 사이즈는 2k × 2k 를 포함하고, K 는 정수 값을 포함하는, 그래픽 래스터화 방법.
  18. 제 13 항에 있어서,
    상기 서브블록에 관한 픽셀을 생성하기 위해 상기 캐시 내의 상기 데이터를 사용하는 상기 단계는 상기 픽셀을 생성하기 위해 픽셀 프로세싱 순서를 할당하는 단계를 포함하는, 그래픽 래스터화 방법.
  19. 캐시-효율적인 그래픽 래스터화 방법을 수록한 컴퓨터 판독 가능 매체로서,
    상기 방법은,
    그래픽 이미지를 수신하는 단계;
    타일 사이즈를 선택하는 단계;
    상기 그래픽 이미지를 복수의 서브블록으로 서브분할하는 단계;
    그래픽 이미지 데이터를 포함하는 서브블록에 관한, 상기 타일 사이즈를 포함하는 복수의 타일로 상기 서브블록을 서브분할하는 단계를 포함하여, 블록 프로세싱 순서에 기초하여, 상기 서브블록을 프로세싱하는 단계;
    상기 타일과 연관되는 데이터를 캐시로 로딩하는 단계; 및
    상기 그래픽 이미지의 상기 연관된 타일에 관한 픽셀을 생성하기 위해 상기 캐시 내의 상기 데이터를 사용하는 단계를 포함하는, 컴퓨터 판독 가능 매체.
  20. 제 19 항에 있어서,
    상기 서브블록을 프로세싱하는 상기 단계는,
    a) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하는지 여부를 결정하는 단계;
    b) 상기 서브블록이 상기 그래픽 이미지를 오버래핑한다면, 서브블록 사이즈가 상기 타일 사이즈와 동일한지 여부를 결정하는 단계;
    c) 상기 서브블록이 상기 그래픽 이미지를 오버래핑하고, 상기 서브블록 사이즈가 상기 타일 사이즈와 동일하다면, 상기 서브블록을 추가적인 서브블록으로 서브분할하는 단계;
    d) 상기 블록 프로세싱 순서에 기초하여, 상기 추가적인 서브블록 중 하나를 선택하는 단계; 및
    상기 서브블록 사이즈가 상기 타일 사이즈와 동일하게 될 때까지, 단계 a), 단계 b), 단계 c), 단계 d) 를 반복하는 단계를 포함하는, 컴퓨터 판독 가능 매체.
  21. 제 19 항에 있어서,
    그래픽 이미지를 둘러싸는 바운딩 박스를 결정하는 단계; 및
    상기 서브블록을 생성하기 위해, 상기 바운딩 박스를 서브분할하는 단계를 더 포함하는, 컴퓨터 판독 가능 매체.
  22. 제 21 항에 있어서,
    그래픽 이미지를 둘러싸는 바운딩 박스를 결정하는 상기 단계는 바운딩 박스의 사이즈 2k × 2k 를 결정하는 단계를 포함하며, K 는 정수 값을 포함하는, 컴퓨터 판독 가능 매체.
  23. 제 19 항에 있어서,
    상기 타일 사이즈는 2k × 2k 를 포함하며, K 는 정수 값을 포함하는, 컴퓨터 판독 가능 매체.
  24. 제 20 항에 있어서,
    상기 서브블록에 관한 픽셀을 생성하기 위해 상기 캐시 내의 상기 데이터를 사용하는 상기 단계는, 상기 픽셀을 생성하기 위해 픽셀 프로세싱 순서를 할당하는 단계를 포함하는, 컴퓨터 판독 가능 매체.
KR1020077007143A 2004-08-30 2005-08-30 그래픽 데이터의 캐시-효율적인 래스터화를 위한 방법, 장치 및 명령을 포함하는 컴퓨터 판독 가능 매체 KR100894231B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/930,408 US7505043B2 (en) 2004-08-30 2004-08-30 Cache efficient rasterization of graphics data
US10/930,408 2004-08-30

Publications (2)

Publication Number Publication Date
KR20070058548A true KR20070058548A (ko) 2007-06-08
KR100894231B1 KR100894231B1 (ko) 2009-04-20

Family

ID=35942417

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077007143A KR100894231B1 (ko) 2004-08-30 2005-08-30 그래픽 데이터의 캐시-효율적인 래스터화를 위한 방법, 장치 및 명령을 포함하는 컴퓨터 판독 가능 매체

Country Status (6)

Country Link
US (1) US7505043B2 (ko)
EP (1) EP1787260B1 (ko)
JP (1) JP4824687B2 (ko)
KR (1) KR100894231B1 (ko)
CN (1) CN101044508B (ko)
WO (1) WO2006026647A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9741155B2 (en) 2014-02-12 2017-08-22 Samsung Electronics Co., Ltd. Apparatus and method for tile-based graphic data rendering

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775997B2 (en) * 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8872833B2 (en) 2003-09-15 2014-10-28 Nvidia Corporation Integrated circuit configuration system and method
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US9123173B2 (en) * 2005-12-15 2015-09-01 Nvidia Corporation Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
JP4921202B2 (ja) * 2006-03-15 2012-04-25 キヤノン株式会社 ジョブ履歴管理システム、その制御方法、プログラム及び記憶媒体
US7965297B2 (en) * 2006-04-17 2011-06-21 Microsoft Corporation Perfect hashing of variably-sized data
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US8085264B1 (en) 2006-07-26 2011-12-27 Nvidia Corporation Tile output using multiple queue output buffering in a raster stage
US9070213B2 (en) * 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US7843468B2 (en) * 2006-07-26 2010-11-30 Nvidia Corporation Accellerated start tile search
US20080055286A1 (en) * 2006-09-06 2008-03-06 Mayank Garg Method And Apparatus For Displaying Bitmap Images
US8427487B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US8139058B2 (en) * 2006-11-03 2012-03-20 Vivante Corporation Hierarchical tile-based rasterization algorithm
US7872648B2 (en) * 2007-06-14 2011-01-18 Microsoft Corporation Random-access vector graphics
JP4370438B2 (ja) * 2007-06-27 2009-11-25 Necシステムテクノロジー株式会社 ベクター画像描画装置、ベクター画像描画方法およびプログラム
US20090086254A1 (en) * 2007-09-28 2009-04-02 Mike Hy Duong Systems and Methods for Dynamic Printer Configuration
US20090086255A1 (en) * 2007-09-28 2009-04-02 Mike Hy Duong Systems and Methods for Print Accounting
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
JP4568750B2 (ja) * 2007-11-30 2010-10-27 富士通株式会社 描画装置、描画プログラムおよび描画方法
US9064333B2 (en) * 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
KR20090097689A (ko) * 2008-03-12 2009-09-16 삼성전자주식회사 영상의 인트라 예측 부호화/복호화 방법 및 장치
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US20110063304A1 (en) 2009-09-16 2011-03-17 Nvidia Corporation Co-processing synchronizing techniques on heterogeneous graphics processing units
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
HUE051391T2 (hu) 2010-04-13 2021-03-01 Ge Video Compression Llc Szignifikancia térképek és transzformációs együttható blokkok kódolása
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
CN102567945B (zh) 2010-12-21 2014-12-10 北大方正集团有限公司 页面数字图像的光栅化处理方法和装置
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US10397577B2 (en) 2011-03-08 2019-08-27 Velos Media, Llc Inverse scan order for significance map coding of transform coefficients in video coding
US9491469B2 (en) 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
KR102080851B1 (ko) * 2012-09-17 2020-02-24 삼성전자주식회사 레이 추적의 스케쥴링을 위한 장치 및 방법
US20140325152A1 (en) * 2013-04-26 2014-10-30 Samsung Electronics Company, Ltd. Quadtree based data management for memory
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
JP6361267B2 (ja) * 2014-04-28 2018-07-25 ヤマハ株式会社 画像処理装置
CN104184963B (zh) * 2014-09-05 2017-10-13 无锡英斯特微电子有限公司 光电导航系统中高效资源利用的方法
US10163180B2 (en) * 2015-04-29 2018-12-25 Qualcomm Incorporated Adaptive memory address scanning based on surface format for graphics processing
US10037621B2 (en) * 2015-06-18 2018-07-31 Intel Corporation Hierarchical quadrant based coverage testing for rasterization
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
GB2548852B (en) * 2016-03-30 2020-10-28 Advanced Risc Mach Ltd Method of operating a graphics processing pipeline by compressing a block of sampling positions having the same data value
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
CN110741415B (zh) * 2017-11-24 2024-03-22 谷歌有限责任公司 用于基于法线的纹理混合的来自深度图的平滑法线

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05127663A (ja) * 1991-11-01 1993-05-25 Mitsubishi Electric Corp 表示方法
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US5864342A (en) * 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
JPH10261095A (ja) * 1997-03-19 1998-09-29 Sega Enterp Ltd 画像処理装置及び画像処理方法
US6215507B1 (en) * 1998-06-01 2001-04-10 Texas Instruments Incorporated Display system with interleaved pixel address
US6611272B1 (en) * 1998-07-02 2003-08-26 Microsoft Corporation Method and apparatus for rasterizing in a hierarchical tile order
GB2343603B (en) * 1998-11-06 2003-04-02 Videologic Ltd Shading 3-dimensional computer generated images
US6359623B1 (en) * 1998-11-12 2002-03-19 Hewlett-Packard Company Method and apparatus for performing scan conversion in a computer graphics display system
JP3889195B2 (ja) * 1999-02-03 2007-03-07 株式会社東芝 画像処理装置、画像処理システムおよび画像処理方法
US6421053B1 (en) * 1999-05-24 2002-07-16 International Business Machines Corporation Block rendering method for a graphics subsystem
US6674443B1 (en) * 1999-12-30 2004-01-06 Stmicroelectronics, Inc. Memory system for accelerating graphics operations within an electronic device
US20020039100A1 (en) * 2000-06-08 2002-04-04 Stephen Morphet Memory management for systems for generating 3-dimensional computer images

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9741155B2 (en) 2014-02-12 2017-08-22 Samsung Electronics Co., Ltd. Apparatus and method for tile-based graphic data rendering

Also Published As

Publication number Publication date
JP4824687B2 (ja) 2011-11-30
JP2008511930A (ja) 2008-04-17
WO2006026647A2 (en) 2006-03-09
US7505043B2 (en) 2009-03-17
CN101044508B (zh) 2011-09-14
EP1787260A2 (en) 2007-05-23
WO2006026647A3 (en) 2006-08-17
US20060044317A1 (en) 2006-03-02
EP1787260B1 (en) 2019-08-14
CN101044508A (zh) 2007-09-26
KR100894231B1 (ko) 2009-04-20

Similar Documents

Publication Publication Date Title
KR100894231B1 (ko) 그래픽 데이터의 캐시-효율적인 래스터화를 위한 방법, 장치 및 명령을 포함하는 컴퓨터 판독 가능 매체
US11222462B2 (en) Method, apparatus, and computer program product for improved graphics performance
US6636212B1 (en) Method and apparatus for determining visibility of groups of pixels
US7167171B2 (en) Methods and apparatuses for a polygon binning process for rendering
US8269788B2 (en) Vector graphics anti-aliasing
US20050259100A1 (en) Graphic processing apparatus, graphic processing system, graphic processing method and graphic processing program
JPH06223201A (ja) 並列画像生成装置
US5966136A (en) Efficient method for clipping numerous objects against an arbitrary clipping path
US6940515B1 (en) User programmable primitive engine
US6900810B1 (en) User programmable geometry engine
US20030122829A1 (en) Efficient movement of fragment stamp
US8264503B1 (en) Batch early engagement rules graphics processing
JP3086426B2 (ja) オブジェクトのラスタ化方法及び装置
US8705118B2 (en) Threshold-based load balancing printing system
US7388591B2 (en) Size-based font smoothing
US8736871B2 (en) Image processing apparatus and image processing method
US20220366621A1 (en) Systems for Generating Anti-Aliased Vector Objects
JP6590606B2 (ja) 画像処理装置、画像処理方法、プログラム
US11348287B2 (en) Rendering of graphic objects with pattern paint using a graphics processing unit
CN106815800B (zh) 用于在计算机系统中控制空间分辨率的方法和装置
JP3688765B2 (ja) 描画方法およびグラフィックス装置
JP2013091222A (ja) 画像形成処理装置及び画像処理方法
Xue et al. An improved midpoint rasterization algorithm implemented in FPGA
JP2006031160A (ja) グラフィックオブジェクト処理方法
JP2013068985A (ja) ベクトル描画装置、ベクトル描画方法及びプログラム

Legal Events

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

Payment date: 20160330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee