KR102659643B1 - 레지던시 맵 디스크립터 - Google Patents

레지던시 맵 디스크립터 Download PDF

Info

Publication number
KR102659643B1
KR102659643B1 KR1020217020466A KR20217020466A KR102659643B1 KR 102659643 B1 KR102659643 B1 KR 102659643B1 KR 1020217020466 A KR1020217020466 A KR 1020217020466A KR 20217020466 A KR20217020466 A KR 20217020466A KR 102659643 B1 KR102659643 B1 KR 102659643B1
Authority
KR
South Korea
Prior art keywords
levels
level
texture
dimensions
coordinates
Prior art date
Application number
KR1020217020466A
Other languages
English (en)
Other versions
KR20210110812A (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 KR20210110812A publication Critical patent/KR20210110812A/ko
Application granted granted Critical
Publication of KR102659643B1 publication Critical patent/KR102659643B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Landscapes

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

Abstract

프로세서는 부분적으로 존재하는 텍스처(partially resident texture; PRT) 리소스의 하나 이상의 레벨에 액세스하기 위한 요청을 수신한다. 레벨들은 텍스처를 상이한 세밀도(LOD)들로 나타내고, 요청은 텍스처에서의 위치를 나타내는 정규화된 좌표들을 포함한다. 프로세서는 레벨들 중 제1 레벨의 치수들 및 PRT 리소스에 존재하는 텍셀들을 나타내는 하나 이상의 존재 맵과 연관되는 하나 이상의 제2 레벨과 기준 레벨 사이의 하나 이상의 오프셋을 포함하는 텍스처 디스크립터에 액세스한다. 프로세서는 오프셋에 기초하여 정규화된 좌표들을 하나 이상의 레지던시 맵에서의 텍셀 좌표들로 변환하고, 요청에 응답하여, 정규화된 좌표들에 의해 나타내어지는 텍스처 데이터가 PRT 리소스에 존재하는지 여부를 결정하기 위해 텍셀 좌표들에 기초하여 하나 이상의 레지던스 맵에 액세스한다.

Description

레지던시 맵 디스크립터
그래픽 처리 장치(graphics processing unit; GPU)는 일련의 프로그래밍 가능한 셰이더들 및 고정 기능 하드웨어 블록들로 형성된 그래픽 파이프라인을 사용하여 3차원(3-D) 그래픽을 처리한다. 예를 들어, 프레임에서 보이는 객체의 3-D 모델은 사용자에게 디스플레이하기 위한 픽셀들의 값들을 생성하도록 그래픽 파이프라인에서 처리되는 삼각형들, 다른 다각형들, 또는 패치들(patches)의 세트에 의해 나타내어질 수 있다. 삼각형들, 다른 다각형들, 또는 패치들은 프리미티브들(primitives)이라고 총칭된다. 프로세스는 프리미티브들의 해상도보다 더 높은 해상도를 갖는 시각적 디테일들을 통합하기 위해 프리미티브들에 텍스처들을 매핑하는 것을 포함한다. GPU는 텍스처 값들이 그래픽 파이프라인에서 처리되고 있는 프리미티브들로의 맵핑에 이용 가능하도록 텍스처 값들을 저장하는 데 사용되는 전용 메모리를 포함한다. 텍스처들은 디스크에 저장되거나 그래픽 파이프라인에 의해 필요할 때 절차적으로 생성될 수 있다. 전용 GPU 메모리에 저장되는 텍스처 데이터는 디스크로부터 텍스처를 로딩하거나 데이터를 절차적으로 생성함으로써 파퓰레이팅된다. 전용 GPU 메모리는 통상적으로 비교적 작은 메모리이며, 이는 전용 GPU 메모리에 저장될 수 있는 텍스처 데이터의 양을 제한한다. 또한, 텍스처 데이터를 파퓰레이팅하기 위해 요구되는 오버헤드는 특히 최종 스크린 이미지를 렌더링하는 데 텍스처 데이터의 작은 서브 세트만 사용되는 경우에 상당할 수 있다
본 개시는 첨부 도면들을 참조하여 당해 기술분야의 통상의 기술자들에게 이해가 더 잘 되고, 이의 많은 피처들 및 이점들이 명백해질 수 있다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시 예들에 따른 디스플레이에 출력을 위해 의도되는 시각적 이미지들을 생성하기 위한 그래픽 처리 장치(GPU)를 포함하는 처리 시스템의 블록도이다.
도 2는 일부 실시 예들에 따른 미리 결정된 해상도로 3차원(3D) 장면들의 래스터화된 이미지들을 생성하도록 고차 지오메트리 프리미티브들을 처리 가능한 그래픽 파이프라인을 도시한다.
도 3은 일부 실시 예들에 따른 상이한 레벨들의 부분적으로 존재하는 텍스처(partially resident texture; PRT) 리소스와 정규화된 좌표 공간 간 변환들의 블록도이다.
도 4는 일부 실시 예들에 따른 텍셀 공간에서의 레지던시 맵과 정규화된 좌표 공간 간 변환의 블록도이다.
도 5는 일부 실시 예들에 따른 텍스처 디스크립터의 블록도이다.
도 6은 일부 실시 예들에 따른 PRT 리소스의 레벨들과 레지던시 맵 간 관계들의 블록도이다.
도 7은 일부 실시 예들에 따른 텍스처 디스크립터들을 생성하고 저장하는 방법의 흐름도이다.
도 8은 일부 실시 예들에 따른 텍스처 디스크립터들을 생성하고 저장하는 방법의 흐름도이다.
일부 경우들에서, 텍스처 정보는 GPU에 텍스처의 계층적 밉맵 표현을 사용하여 부분적으로 존재하는 텍스처(partially resident texture; PRT) 리소스로 저장된다. 밉맵에서의 각 레벨은 텍스처를 일정 세밀도(level of detail; LOD)로 나타낸다. 표준 관례는 밉맵의 레벨이 높을수록 LOD를 감소시키는 것이지만, 레벨에 번호를 반대로 매길 수도 있다. (텍셀 공간에서의) PRT 리소스의 치수들은 연속해서 레벨이 높아질 때마다 두 배씩 감소된다. 셰이더 또는 애플리케이션은 밉맵의 레벨들의 PRT 리소스에 액세스하기 위해 정규화된 텍스처 좌표들을 사용한다. 정규화된 (u, v) 텍스처 좌표들은 자신들의 실제 치수들(예를 들어, 0..dim-1의 범위)로부터 0.0 내지 1.0의 정규화된 범위로 정규화된다.
전용 GPU 메모리 내의 공간은 밉맵 계층에 텍셀들의 서브 세트를 파퓰레이팅함으로써 보존되며, 따라서 텍스처 정보가 반드시 PRT 리소스의 모든 밉맵 레벨들에서 모든 텍셀들에 존재하는 것은 아니다. PRT 리소스에 텍스처 정보를 저장하는 것의 하나의 결점은 애플리케이션이 전용 GPU 메모리에 존재하지 않는 텍셀을 샘플링하는 갓에 응답하여 텍스처 하드웨어가 블랙 색상을 리턴한다는 것이다. 이러한 결점은 PRT 리소스에 파퓰레이팅되는 가장 미세한 LOD(또는 가장 낮은 밉맵 레벨)를 나타내는 레지던시 맵을 생성함으로써 극복된다. 예를 들어, 레지던시 맵에서의 텍셀은 PRT 리소스에서의 대응하는 텍셀들이 밉맵의 레벨 3(및 모든 더 높은 레벨들/더 낮은 LOD들)에 존재함을 나타낼 수 있다. 레지던시 맵은 레지던시 맵의 치수들에 따라 정규화된 텍스처 좌표 공간을 균일하게 분할한다. 예를 들어, 2 x 2 레지던시 맵은 정규화된 (u, v) 텍스처 좌표 공간을 (u, v) 범위들 (0.0..0.5, 0.0..0.5), (0.5..1.0, 0.0..0.5), (0.0..0.5, 0.5..1.0), 및 (0.5..1.0, 0.5..1.0)를 각각 커버하는 네 개의 텍셀들로 균일하게 분할한다. 이에 따라, 레지던시 맵의 하나의 텍셀은 샘플링된 밉맵의 레벨에서의 PRT 리소스의 치수들에 따라, PRT 리소스의 상이한 밉맵 레벨들에서의 상이한 수의 텍셀을 포함하는 타일들을 카브 아웃(carve out)한다.
셰이더(또는 대응하는 애플리케이션)는 정규화된 (u, v) 텍스처 좌표 공간의 샘플링 위치를 나타내는 정규화된 (u, v) 좌표들을 포함하는 샘플링 동작을 사용하여 PRT 리소스를 샘플링한다. 정규화된 좌표들은 하나 이상의 밉맵 레벨에서의 PRT 리소스의 치수들을 사용하여 텍셀 좌표들로 변환된다. 예를 들어, 요청된 밉맵 레벨이 8 x 8 텍셀들의 치수들을 갖는 경우, 정규화된 u-좌표는 (8-1)=7을 곱함으로써 텍셀 좌표로 변환되고, 정규화된 v-좌표는 (8-1)=7을 곱함으로써 텍셀의 좌표로 변환된다. 그 다음, 텍셀 좌표들은 텍셀 데이터 내의 어드레스들로 변환되고, 어드레스들은 텍셀 데이터를 페칭하는 데 사용된다. 그러나, 상술한 바와 같이, 모든 텍셀들이 반드시 PRT 리소스의 모든 레벨들에 존재하는 것은 아니다. 텍스처 하드웨어가 비-존재 텍셀에 액세스하기 위한 요청에 응답하여 블랙 텍셀을 리턴하는 것을 방지하기 위해, 레지던시 맵은 PRT 리소스의 가장 미세한 파퓰레이팅된 밉맵 레벨을 식별하도록 샘플링된다. PRT 리소스의 후속 샘플링은, 애플리케이션이 밉맵의 더 낮은 레벨/더 높은 LOD의 비-상주 텍셀에 액세스하려고 시도할 때, 덜 세밀하지만 존재하는 텍셀 값이 블랙 대신에 리턴되도록 이 LOD에 클램핑(clamping)된다. 일부 경우들에서, 좌표 변환은 후속해서 텍셀 공간에서의 텍셀 위치들로 변환되는 정규화된 텍스처 좌표 공간에서의 추가적인 위치들을 생성하는 단계를 포함한다. 이방성 텍스처 필터링과 같은 특정 경우들에서, 추가적인 위치들 및 대응하는 텍셀 위치들을 생성하는 것은 텍셀 공간에서의 PRT 리소스 치수들에 대한 지식을 필요로 한다.
정규화된 (u, v) 좌표들의 텍셀 좌표들로의 변환은 PRT 리소스 및 레지던시 맵에 대해 일관되게 수행되어야 한다. 부정확한 좌표 변환으로 인한 레지던시 맵에서의 텍셀들의 부정확한 식별은 샘플 위치에 존재하는 잘못 계산된 가장 낮은 밉맵 레벨/가장 높은 LOD로 인해 PRT 미스를 초래할 수 있다. 그 다음, 셰이더는 더 낮은 밉맵 레벨/더 높은 LOD의 비-존재 텍셀에 액세스하려고 시도할 수 있으며, 이는 샘플링 동작에 의해 리턴되는 블랙 컬러로 인해 원치 않는 시각적 아티팩트를 초래할 수 있다. 레지던시 맵에서의 텍셀 좌표들과 정규화된 (u, v) 좌표들 간 사이의 좌표 변환은 레지던시 맵의 치수들에 기초하여 수행된다. PRT 리소스에 대한 텍셀 좌표들과 정규화된 좌표들 사이의 좌표 변환은 PRT 리소스의 액세스된 밉맵 레벨의 치수들에 기초하여 수행된다. 이에 따라, 텍스처 하드웨어는 레지던시 맵에서의 샘플링된 텍셀들이 PRT 리소스 샘플링 동작 동안 액세스될 텍셀들에 정확하게 맵핑됨을 보장하기 위해 레지던시 맵 및 PRT 리소스 둘 모두의 치수들을 알아야 한다. 결과적으로, PRT 리소스의 치수들 및 레지던시 맵의 치수들이 텍스처 하드웨어에 전달될 필요가 있으며, 이에 따라 레지던시 맵을 샘플링하는 프로세스가 원래의 PRT 리소스를 샘플링하는 프로세스를 재현함을 보장한다.
정보를 제한된 비트들의 세트로 인코딩함으로써 텍스처 하드웨어에 치수들 및 다른 속성들을 전달하기 위해 텍스처 디스크립터들이 사용된다. 텍스처 디스크립터들로 전달되는 속성들의 예들은 텍스처에 대한 포인터, PRT 리소스의 치수, 데이터 인코딩 포맷, 텍셀당 바이트 수, 압축비, 압축 유형 등을 포함한다. 텍스처 디스크립터의 크기는 통상적으로 머신의 워드 크기에 맞춰 조절되는데, 예를 들어, 텍스처 디스크립터는 머신의 유형에 따라 32 비트 워드 또는 64 비트 워드에 맞춰 조절되는 256 비트를 포함할 수 있다. 레지던시 맵의 치수들에 더하여 PRT 리소스의 명시적 치수들을 전달하기 위해 텍스처 디스크립터를 수정하는 것은 텍스처 디스크립터의 크기의 상당한 증가를 필요로 할 것이며, 이는 셰이더로부터 텍스처 하드웨어 및 텍스처 디스크립터을 수신하는 임의의 다른 하드웨어로의 요청 경로에 대한 수정들을 포함하여 텍스처 파이프라인에서의 상당한 변화들을 필요로 할 것이다. 예를 들어, 종래의 텍스처 디스크립터는 레지던시 맵의 하나의 치수를 16 비트를 사용하여 나타내고, 텍스처는 통상적으로 총 48 비트에 대해, 세 개의 치수들을 포함한다. 이에 따라, 텍스처 디스크립터의 크기를 증가시키는 것은 레지던시 맵의 치수들을 텍스처 하드웨어에 전달하기 위한 실용적인 방법이 아니다.
도 1 내지 도 8은 부분적으로 존재하는 텍스처(PRT) 리소스의 계층적 표현의 레벨의 치수들에 대응하도록 레지던시 맵 치수들을 제약함으로써 레지던시 맵 치수들을 나타내기 위해 텍스처 디스크립터에 통합되는 정보의 양을 감소시키는 기술들의 실시 예들을 개시한다. 일부 경우들에서, 계층적 표현은 밉맵이다. 레지던시 맵 치수들은 레지던시 맵의 레벨과 기준 레벨(이를테면 PRT 리소스의 가장 높은 레벨) 사이의 밉맵 공간에서의 거리(또는 오프셋)에 기초하여 결정된다. 텍스처 디스크립터는 PRT 리소스의 치수들, 레지던시 맵의 레벨과 기준 레벨 사이의 오프셋, 및 레지던시 맵을 가리키는 어드레스를 나타내는 정보를 포함한다. 오프셋은 레지던시 맵의 레벨과 기준 레벨 사이의 레벨들의 수를 나타낸다. 레지던시 맵 레벨과 기준 레벨 사이의 레벨들의 수는 레지던시 맵 레벨과 기준 레벨의 치수들의 비를 나타낸다. 일부 실시 예들에서, 계층적 표현에서의 레벨의 (u, v) 치수들 각각은 계층적 표현의 인접한 레벨들에서의 대응하는 치수들과 두 배만큼 상이하다. 이에 따라, 레지던시 맵 레벨과 기준 레벨 사이의 두 개의 레벨의 오프셋은 레지던시 맵 레벨과 기준 레벨의 (u, v) 치수들이 네 배만큼 상이하다는 것을 나타낼 것이다. 이에 따라, 레지던시 맵의 치수들은 기준 레벨의 치수들 및 기준 레벨의 치수들의 비 및 오프셋에 의해 나타내어지는 레지던시 맵의 레벨을 사용하여 결정된다.
PRT 리소스를 샘플링하기 위한 요청을 수신하는 것에 응답하여, 레지던시 맵에서의 샘플링 위치는 오프셋으로부터 결정된 레지던시 맵의 치수들을 사용하여 요청에서의 정규화된 좌표들을 레지던시 맵에서의 텍셀 좌표들로 변환함으로써 결정된다. 이에 따라, PRT 리소스 치수들 및 레지던시 맵 치수들 양자는 치수들의 돌 모두의 세트들에 대한 지식을 필요로 하는 경우들에서, PRT 리소스 치수들 및 레지던시 맵의 오프셋을 아는 것으로부터 알맞게 유도될 수 있다. 샘플링 위치의 텍셀 좌표들은 텍셀에 액세스하는 데 사용되고, 텍셀의 값은 PRT 리소스의 하나 이상의 대응하는 텍셀에 존재하는 가장 낮은 밉맵 레벨/가장 높은 세밀도(LOD)를 나타낸다. PRT 리소스에서의 샘플링 위치는 텍스처 디스크립터에 나타내어지는 PRT 리소스의 밉맵 레벨의 치수들에 기초하여 정규화된 좌표를 PRT 리소스에서의 텍셀 좌표들에 맵핑함으로써 결정된다. PRT 리소스에서의 텍셀 좌표들은 PRT 리소스의 밉맵 레벨에서의 텍셀에 액세스하는 데 사용된다. PRT 리소스의 텍셀에 대한 액세스들은 레지던시 맵의 대응하는 텍셀에서의 값에 의해 나타내어지는 LOD에 클램핑된다. 일부 실시 예들에서, 오프셋 정보는 텍스처 디스크립터의 이전에 사용되지 않은 비트들에 통합되어, 텍스처 디스크립터의 크기는 동일하게 유지된다.
도 1은 일부 실시 예들에 따른 디스플레이(110)에 출력을 위해 의도되는 시각적 이미지들을 생성하기 위한 그래픽 처리 장치(GPU)(105)를 포함하는 처리 시스템(100)의 블록도이다. 처리 시스템(100)은 메모리(115)를 포함한다. 메모리(115)의 일부 실시 예들은 동적 랜덤 액세스 메모리(DRAM)로서 구현된다. 그러나, 메모리(115)는 또한 정적 랜덤 액세스 메모리(SRAM), 비휘발성 RAM 등을 포함하여 다른 유형들의 메모리를 사용하여 구현될 수도 있다. 도시된 실시 예에서, GPU(105)는 버스(120)를 통해 메모리(115)와 통신한다. 그러나, GPU(105)의 일부 실시 예들은 직접 연결을 통해 또는 다른 버스들, 브리지들, 스위치들, 라우터들 등을 통해 메모리(115)와 통신한다. GPU(105)는 메모리(115)에 저장된 명령어들을 실행할 수 있고 GPU(105)는 실행된 명령어들의 결과들과 같은 정보를 메모리(115)에 저장할 수 있다. 예를 들어, 메모리(115)는 GPU(105)에 의해 실행될 프로그램 코드로부터의 명령어들의 카피(125)를 저장할 수 있다. GPU(105)의 일부 실시 예들은 명령어들을 동시에 또는 병행하여 독립적으로 실행할 수 있는 다수의 프로세서 코어들(명료성을 위해 도시되지 않음)을 포함한다.
처리 시스템(100)은 명령어들을 실행하기 위한 중앙 처리 장치(CPU)(130)를 포함한다. CPU(130)의 일부 실시 예들은 명령어들을 동시에 또는 병행하여 독립적으로 실행할 수 있는 다수의 프로세서 코어들(명료성을 위해 도시되지 않음)을 포함한다. CPU(130)는 또한 버스(120)에 연결되고 이에 따라 버스(120)를 통해 GPU(105) 및 메모리(115)와 통신할 수 있다. CPU(130)는 메모리(115)에 저장된 프로그램 코드(135)와 같은 명령어들을 실행할 수 있고 CPU(130)는 실행된 명령어들의 결과들과 같은 정보를 메모리(115)에 저장할 수 있다. CPU(130)는 또한 GPU(105)에 대한 드로우 콜들(draw calls)을 발행함으로써 그래픽 처리를 개시할 수도 있다. 드로우 콜은 CPU(130)에 의해 생성되고 GPU(105)에 객체(또는 객체의 일부분)를 프레임에 렌더링할 것을 지시하기 위해 GPU(105)로 송신되는 커맨드이다. 드로우 콜의 일부 실시 예들은 객체 또는 이의 부분을 렌더링하기 위해 GPU(105)에 의해 사용되는 텍스처들, 상태들, 셰이더들, 렌더링 객체들, 버퍼들 등을 정의하는 정보를 포함한다. GPU(105)는 디스플레이(110) - 이는 픽셀 값들을 사용하여 렌더링된 객체를 나타내는 이미지를 디스플레이한다 - 에 제공되는 픽셀들의 값들을 생성하도록 객체를 렌더링할 수 있다.
입력/출력(I/O) 엔진(140)은 디스플레이(110)와 연관된 입력 또는 출력 동작들, 뿐만 아니라 키보드들, 마우스들, 프린터들, 외부 디스크들 등과 같은 처리 시스템(100)의 다른 요소들도 핸들링한다. I/O 엔진(140)은 I/O 엔진(140)이 GPU(105), 메모리(115), 또는 CPU(130)와 통신할 수 있도록 버스(120)에 커플링된다. 도시된 실시 예에서, I/O 엔진(140)은 CD(compact disk), DVD(digital video disc) 등과 같은, 외부 저장 매체(145) 상에 저장된 정보를 판독하도록 구성된다.
외부 저장 매체(145)는 비디오 게임과 같은 애플리케이션을 구현하는 데 사용되는 프로그램 코드를 나타내는 정보를 저장한다. 외부 저장 매체(145) 상의 프로그램 코드는 GPU(105) 또는 CPU(130)에 의해 실행될 명령어들의 카피(125)를 형성하기 위해 메모리(115)에 기입될 수 있다. 외부 저장 매체(145)는 또한 디스플레이(110) 상에 제시할 이미지들을 렌더링하는 데 사용되는 텍스처들을 나타내는 정보를 저장한다. 외부 저장 매체(145) 상에 저장된 텍스처들의 부분들은 메모리(115)에 기입되며, 이 메모리는 이 정보를 텍스처 정보(150)로서 저장한다. 외부 저장 매체(145)는 도 1에서 디스크인 것으로서 도시되지만, 외부 저장 매체(145)의 일부 실시 예들은 예를 들어, 처리 시스템(100)으로의 유선 또는 무선 통신 링크를 통해, 처리 시스템(100)에 정보를 다운로드하거나 스트리밍하는 서버(또는 서버 클라우드)로서도 구현된다.
GPU(105)는 드로우 콜에 응답하여 상이한 프리미티브들 또는 빈들(bins)의 동시 처리를 위해 구성된 다수의 스테이지들을 포함하는 그래픽 파이프라인(명료성을 위해 도 1 에 도시되지 않음)을 구현한다. GPU(105)에서의 그래픽 파이프라인의 스테이지들은 비디오 게임과 같은 애플리케이션에 의해 생성되는 상이한 프리미티브들을 동시에 처리할 수 있다. 프리미티브들의 처리는 예를 들어, 추가적인 디테일을 제공하기 위해, 프리미티브들에 텍스처들을 맵핑하는 것을 포함한다. GPU(105)는 GPU(105)와 연관된 로컬 메모리(155)로부터 또는 메모리(115)에 저장된 텍스처 정보(150)로부터의 텍스처 데이터에 액세스한다. 텍스처 데이터는 메모리(115) 또는 로컬 메모리(155)에 위치된 부분적으로 존재하는 텍스처(PRT) 리소스에 저장된다. PRT 리소스는 텍스처의 밉맵 표현과 같은 텍스처의 계층적 표현의 상이한 레벨들에서 상이한 세밀도들(LOD)로 나타내어지는 텍스처 데이터를 포함한다. GPU(105)가 텍스처 데이터에 대한 액세스를 요청하기 전에 텍스처 데이터는 반드시 PRT 리소스의 레벨들에서 모든 텍셀들에 파퓰레이트되는 것은 아니다. 예를 들어, 외부 저장 매체(145)로부터의 텍스처 데이터는 메모리(115) 또는 로컬 메모리(155)에 기입되지 않았을 수 있다. 다른 예를 들어, CPU(130)는 프로그램 코드(135)의 명령어들에 따라 텍스처 데이터를 절차적으로 생성하지 않았을 수 있다.
GPU(105)(또는 GPU(105) 상에서 실행되는 셰이더 또는 애플리케이션)는 PRT 리소스로부터의 텍스처 데이터에 액세스하기 위한 요청 이전에, 이와 동시에, 또는 이의 일부로서 레지던시 맵에 액세스한다. 레지던시 맵에서의 정보는 요청된 텍스처 데이터가 PRT 리소스에 존재하는지 여부를 결정하는 데 사용된다. 본 명세서에서 논의되는 바와 같이, PRT 리소스는 텍스처를 상이한 LOD로 나타내는 레벨들의 계층적 세트로서, 예를 들어, 밉맵으로서 텍스처 데이터를 나타낸다. 이에 따라, PRT 리소스의 상이한 레벨은 텍셀 공간에서 상이한 치수를 갖는다. 레지던시 맵의 일부 실시 예들은 PRT 리소스의 레벨들 중 하나에 대응하는 치수들을 갖도록 제약된다. 예를 들어, 레지던시 맵은 텍스처를 싱대적으로 낮은 LOD로 나타내는 2 x 2 어레이의 텍셀들을 또한 포함하는 PRT 리소스의 레벨에 대응하는 2 x 2 어레이의 텍셀들로서 나타내어질 수 있다. 레지던시 맵에서의 텍셀들은 레지던시 맵의 대응하는 텍셀에 의해 망라되는 존재하는 텍셀을 포함하는 PRT 리소스의 가장 낮은 레벨(및 가장 높은 LOD)을 나타내는 정보를 포함한다.
PRT 리소스에 액세스하기 위한 GPU(105)로부터의 요청은 텍스처에서의 위치를 나타내는 정규화된 좌표들을 포함한다(또는 연관된다). 정규화된 좌표는 (u, v) 좌표들로서 지칭된다. GPU(105)는 레지던시 맵의 치수들을 사용하여 요청에서의 정규화된 좌표들을 레지던시 맵에서의 텍셀 좌표들로 변환한다. 정규화된 좌표들은 PRT 리소스의 레벨들의 치수들에 기초하여 PRT 리소스의 레벨들의 텍셀 좌표들로 변환된다. 변환은 레지던시 맵에서의 텍셀 좌표들에 의해 나타내어지는 텍스처 위치가 PRT 리소스의 하나 이상의 레벨의 텍셀 좌표들에 의해 나타내어지는 위치와 동일하도록 수행된다. 이에 따라, GPU(105)는 레지던시 맵 및 PRT 리소스의 레벨들 둘 모두의 치수들을 나타내는(또는 유도하는 데 사용될 수 있는) 정보에 액세스할 수 있다.
텍스처 디스크립터는 PRT 리소스의 레벨들 중 하나의 치수들 및 레지던시 맵과 연관된 레벨과 PRT 리소스에서의 기준 레벨 사이의 오프셋을 포함한다. 텍스처 디스크립터의 일부 실시 예들은 텍스처의 가장 높은 LOD 표현을 갖는 레벨과 같은, PRT 리소스의 레벨들 중 하나의 치수들을 포함한다. 그 다음, PRT 리소스의 다른 레벨들의 치수들이 레벨들의 치수들 사이의 알려진 관계에 기초하여 결정된다. 예를 들어, PRT 리소스가 밉맵으로 표현되는 경우, PRT 리소스의 연속적인 레벨들의 치수들은 두 배씩 증가하거나 감소한다. 텍스처 디스크립터는 또한 레지던시 맵의 치수과 매칭되는 PRT 리소스의 레벨과 기준 레벨 사이의 오프셋을 포함한다. 일부 실시 예들에서, 기준 레벨은 텍스처 디스크립터 및 PRT 리소스의 치수들을 결정하는 레벨, 예를 들어, 텍스처의 가장 높은 LOD 표현을 갖는 레벨과 동일하다. 텍스처 디스크립터의 일부 실시 예들은 레지던시 맵에서의 상이한 치수들과 기준 레벨 사이의 다수의 오프셋들을 포함한다. 예를 들어, 텍스처 디스크립터는 레지던시 맵의 세 개의 개별적인 치수들에 대응하는 세 개의 상이한 오프셋들을 포함할 수 있다.
GPU(105)는 텍스처 디스크립터에서의 정보를 사용하여 요청의 정규화된 좌표들을 PRT 리소스 레벨의 치수들을 사용하여 PRT 리소스의 레벨에서의 텍셀 좌표들로 변환하고, 텍스처 디스크립터에 포함된 오프셋을 사용하여 정규화된 좌표들을 레지던시 맵에서의 텍셀 좌표들로 변환한다. 오프셋은 기준 레벨의 알려진 치수들을 사용하여 레지던시 맵의 치수들을 결정하는 데 사용된다. 일부 실시 예들에서, 오프셋은 레지던시 맵의 레벨과 기준 레벨 사이의 레벨들의 수를 나타낸다. 그 다음, 레지던시 맵의 치수들은 기준 레벨의 알려진 치수들, 및 기준 레벨과 레지던시 맵의 레벨 사이의 레벨들의 수에 의해 결정되는 치수들의 비에 기초하여 결정된다. 프로세서는 오프셋에 기초하여 정규화된 좌표들을 레지던시 맵에서의 텍셀 좌표들로 변환하고, 요청에 응답하여, 정규화된 좌표들에 의해 나타내어지는 텍스처 데이터가 PRT 리소스에 존재하는지 여부를 결정하기 위해 텍셀 좌표들에 기초하여 레지던스 맵에 액세스한다.
GPU(105)는 PRT 리소스에서의 요청된 액세스 위치에 대응하는 레지던시 맵에서의 텍셀을 식별하기 위해 레지던시 맵에서의 텍셀 좌표들을 사용한다. 레지던시 맵에서의 텍셀의 값은 존재하는 텍셀들에 의해 파퓰레이팅되는 PRT 리소스의 밉맵 표현에서 가장 낮은 레벨/가장 높은 LOD를 나타낸다. PRT 리소스에 대한 액세스 요청은 레지던시 맵에서의 텍셀의 값에 의해 나타내어지는 레벨에 클램핑된다. 예를 들어, 요청에서 나타내어지는 가장 낮은 레벨/가장 높은 LOD는 레지던시 맵의 텍셀에서 나타내어지는 가장 낮은 레벨/가장 높은 LOD와 동일하거나 더 높은 레벨(동일하거나 더 낮은 LOD)이도록 제한된다. 이러한 방식으로 액세스 요청을 클램핑하는 것은 액세스 요청에 응답하여 리턴되는 정보가 텍스처의 표현이고 PRT 리소스에서의 비-존재 텍셀에 액세스하려는 시도들에 응답하여 리턴되는 디폴트 블랙 텍셀이 아님을 보장한다.
도 2는 일부 실시 예들에 따른 미리 결정된 해상도로 3차원(3D) 장면들의 래스터화된 이미지들을 생성하도록 고차 지오메트리 프리미티브들을 처리 가능한 그래픽 파이프라인(200)을 도시한다. 그래픽 파이프라인(200)의 도시된 실시 예는 DX11 사양에 따라 구현된다. 그래픽 파이프라인(200)의 다른 실시 예들은 Vulkan, Metal, DX12 등과 같은 다른 애플리케이션 프로그래밍 인터페이스(application programming interface; API)들에 따라 구현된다. 그래픽 파이프라인(200)은 도 1에 도시된 GPU(105)의 일부 실시 예들에서 구현된다. 그래픽 파이프라인(200)은 버퍼들을 구현하고 버텍스 데이터, 텍스처 데이터 등을 저장하는 데 사용되는 하나 이상의 메모리 또는 캐시의 계층과 같은 저장 리소스들(201)에 액세스할 수 있다. 저장 리소스들(201)은 도 1에 도시된 메모리(115)의 일부 실시 예들을 사용하여 구현될 수 있다.
입력 조립기(202)는 장면의 모델의 부분들을 나타내는 객체들을 정의하는 데 사용되는 저장 리소스들(201)로부터의 정보에 액세스하도록 구성된다. 소프트웨어로 구현될 수 있는 버텍스 셰이더(203)는 논리적으로 입력으로서 프리미티브의 하나의 버텍스를 수신하고 하나의 버텍스를 출력한다. 버텍스 셰이더(203)와 같은 셰이더들의 일부 실시 예들은 다수의 버텍스들이 동시에 처리될 수 있도록 대량의 단일 명령어 단일 데이터(single-instruction-multiple-data; SIMD) 처리를 구현한다. 도 2에 도시된 그래픽 파이프라인(200)은 그래픽 파이프라인(200)에 포함된 모든 셰이더들이 공유되는 대량의 SIMD 컴퓨터 장치들 상에서 동일한 실행 플랫폼을 갖도록 통합 셰이더 모델을 구현한다. 이에 따라, 버텍스 셰이더(203)를 포함한 셰이더들은 본 명세서에서 통합 셰이터 풀(204)로서 지칭되는 리소스들의 공통 세트를 사용하여 구현된다. 통합 셰이더 풀(204)의 일부 실시 예들은 도 1에 도시된 GPU(105) 에서의 프로세서들을 사용하여 구현된다.
헐 셰이더(205)는 입력 패치들을 정의하는 데 사용되는 입력 고차 패치들 또는 제어 지점들을 조작한다. 헐 셰이더(205)는 테셀레이션 팩터들 및 다른 패치 데이터를 출력한다. 헐 셰이더(205)에 의해 생성되는 프리미티브들은 선택적으로 테셀레이터(206)에 제공될 수 있다. 테셀레이터(206)는 헐 셰이더(205)로부터 객체들(패치들과 같은)을 수신하고 예를 들어, 헐 셰이더(205)에 의해 테셀레이터(106)에 제공되는 테셀레이션 팩터들에 기초하여 입력 객체들을 테셀레이팅함으로써, 입력 객체에 대응하는 프리미티브들을 식별하는 정보를 생성한다. 테셀레이션은 패치들과 같은 입력 고차 프리미티브들을 예를 들어, 테셀레이션 프로세스에 의해 생성되는 프리미티브들의 정밀도를 지정하는 테셀레이션 팩터들에 의해 나타내어지는 바에 따라, 보다 미세한 세밀도들을 나타내는 저차 출력 프리미티브들의 세트로 세분한다. 이에 따라, 장면의 모델은( 메모리 또는 대역폭을 절감하기 위해) 더 적은 수의 고차 프리미티브에 의해 표현될 수 있고, 고차 프리미티브를 테셀레이팅함으로써 추가적인 디테일들이 추가될 수 있다.
도메인 셰이더(207)는 도메인 위치 및 (선택적으로) 다른 패치 데이터를 입력한다. 도메인 셰이더(207)는 제공되는 정보를 조작하고 입력 도메인 위치 및 다른 정보에 기초하여 출력할 하나의 버텍스를 생성한다. 지오메트리 셰이더(208)는 입력 프리미티브를 수신하고 입력 프리미티브에 기초하여 지오메트리 셰이더(208)에 의해 생성되는 네 개 이하의 프리미티브들을 출력한다. 프리미티브의 하나의 스트림은 래스터라이저(209)에 제공되고, 프리미티브들의 최대 네 개의 스트림은 저장 리소스들(201)에서의 버퍼들에 연쇄될 수 있다. 래스터라이저(209)는 셰이딩 동작들 및 클립핑(clipping), 원근 분할(perspective dividing), 시저링(scissoring) 및 뷰포트 선택(viewport selection) 등과 같은 다른 동작들을 수행한다. 픽셀 셰이더(210)는 픽셀 흐름을 입력하고 입력 픽셀 흐름에 응답하여 제로 또는 또 다른 픽셀 흐름을 출력한다. 출력 병합기 블록(211)은 픽셀 셰이더(210)로부터 수신되는 픽셀들에 관한 블렌딩, 깊이, 스텐실(stencil), 또는 다른 동작들을 수행한다.
그래픽 파이프라인(200)에서의 셰이더들 중 일부 또는 전부는 저장 리소스들(201)에 저장되는 텍스처 데이터를 사용하여 텍스처 맵핑을 수행할 수 있다. 예를 들어, 픽셀 셰이더(210)는 저장 리소스(201)로부터 텍스처 데이터를 판독하고 텍스처 데이터를 사용하여 하나 이상의 픽셀을 셰이딩할 수 있다. 그 다음, 셰이딩된 픽셀들은 사용자에게 제시하기 위해 (도 1에 도시된 디스플레이(110)와 같은) 디스플레이에 제공된다. 도시된 실시 예에서, 텍스처 데이터는 텍스처 데이터를 상이한 LOD로 나타내는 레벨들의 계층에 텍스처 데이터를 저장하는 PRT 리소스(215)에 저장된다. 예를 들어, PRT 리소스(215)는 각 치수에 대해 레벨마다 두 배씩 증가하는 치수들을 갖는 레벨들을 포함하는 밉맵으로서 텍스처 데이터를 저장할 수 있다. 그러나, 다른 실시 예들에서 레벨들 사이의 치수들의 다른 비들을 갖는 다른 레벨 구조들이 사용된다. PRT 리소스(215)의 모든 레벨들에서의 모든 텍셀들이 존재(즉, 텍스처를 나타내는 유효 데이터를 포함)하는 것은 아니다. 이에 따라, PRT 리소스(215)에 존재하는 텍셀들이 레지던시 맵(residency map; RM)(220)에 나타내어진다. 본 명세서에서 논의되는 바와 같이, 버텍스 셰이더(203), 헐 셰이더(205), 도메인 셰이더(207), 지오메트리 셰이더(208), 및 픽셀 셰이더(210)와 같은 셰이더들에 의해 제공되는 정규화된 좌표들은 PRT 리소스(215) 또는 레지던시 맵(220)에서의 텍셀 좌표들로 변환된다. 변환은 텍스처 디스크립터(texture descriptor; TD)(225)에서의 정보를 사용하여 수행된다. 텍스처 디스크립터(225)에서의 정보는 PRT 리소스(215)의 레벨의 치수들, 레지던시 맵(220)의 레벨과 기준 레벨 사이의 오프셋, 저장 리소스들(201)에서의 레지던시 맵(220)의 어드레스 등을 포함한다.
도 3은 일부 실시 예들에 따른 상이한 레벨들의 PRT 리소스와 정규화된 좌표 공간 간 변환들(300, 301)의 블록도이다. 변환들은 도 1에 도시된 처리 시스템(100) 및 도 2에 도시된 그래픽 파이프라인(200)의 일부 실시 예들에 의해 수행된다. PRT 리소스는 텍스처를 상이한 LOD로 나타내는 레벨들의 계층을 포함한다. PRT 리소스의 제1 레벨(305)은 제1 치수(310) 및 제2 치수(315)을 가지며, 이들은 제1 레벨(305)에서의 텍셀들의 수에 의해 결정된다. 예를 들어, 텍셀 공간의 치수들(310, 315)은 각각, 64 픽셀 및 64 픽셀일 수 있다. PRT 리소스의 제2 레벨(318)은 제1 치수(320) 및 제2 치수(325)을 가지며, 이들은 제2 레벨(318)에서의 텍셀들의 수에 의해 결정된다. 예를 들어, 치수들(320, 325)은 각각, 32 픽셀 및 32 픽셀일 수 있다.
셰이더들, 또는 셰이더들 상에서 실행되는 애플리케이션들은, 통상적으로 (u, v) 좌표들로서 지칭되는 정규화된 좌표들을 사용하여 PRT 리소스에 액세스하기 위한 요청들을 제공한다. 정규화된 좌표들은 범위들 u=0.0..1.0 및 v=0.0..1.0 내에 있다. 텍셀 좌표들에서의 제1 레벨(305)과 정규화된 좌표들에서의 제1 레벨(335) 사이의 변환(330)은 치수들(310, 315)에 기초하여, 예를 들면, 다음 변환을 사용하여 수행된다:
U_텍셀 = U_정규 * (폭-1)
V_텍셀 = V_정규 * (높이-1)
여기서, 폭은 텍셀들에서 측정된 치수(310)이고, 높이는 텍셀들에서 측정된 치수(315)이다. 텍셀 좌표들에서의 제2 레벨(318)과 정규화된 좌표들에서의 제2 레벨(345) 사이의 변환(340)은 치수들(320, 325)에 기초하여, 예를 들어, 상기한 식들에서 폭을 치수(320)으로 대체하고 높이를 치수(325)으로 대체하여 수행된다.
도 4는 일부 실시 예들에 따른 텍셀 공간에서의 레지던시 맵(405)과 정규화된 좌표 공간 간 변환(400)의 블록도이다. 변환은 도 1에 도시된 처리 시스템(100) 및 도 2에 도시된 그래픽 파이프라인(200)의 일부 실시 예들에 의해 수행된다. 레지던시 맵(405)은 제1 치수(410) 및 제2 치수(415)을 가지며, 이들은 레지던시 맵(405)에서의 텍셀들의 수에 의해 결정된다. 예를 들어, 텍셀 공간의 치수들(410, 415)은 각각, 2 픽셀 및 2 픽셀일 수 있다. 본 명세서에서 논의된 바와 같이, 레지던시 맵(405)과 연관된 PRT 리소스에 액세스하기 위한 요청들은 정규화된 좌표들을 포함하며, 이들은 범위들 u=0.0..1.0 및 v=0.0..1.0 내에 있다. 텍셀 좌표들에서의 레지던시 맵(405)과 정규화된 좌표들에서의 레지던시 맵(425) 사이의 변환(420)은 치수들(410, 415)에 기초하여, 예를 들면, 다음 변환을 사용하여 수행된다:
U_텍셀 = U_정규 * (폭-1)
V_텍셀 = V_정규 * (높이-1)
여기서, 폭은 텍셀들에서 측정된 치수(410)이고, 높이는 텍셀들에서 측정된 치수(415)이다. (도 2에 도시된 그래픽 파이프라인(200)에 구현되는 프로세서들과 같은) 텍스처 하드웨어는 레지던시 맵(405) 및 상이한 레벨들(예를 들어, 도 3에 도시된 레벨들(305, 318))에서의 PRT 리소스의 치수들을 사용하여 PRT 리소스에 대한 액세스 요청에서 제공되는 정규화된 좌표들이 레지던시 맵(405) 및 상이한 레벨들(예를 들어, 도 3에 도시된 레벨들(305, 318))에서의 PRT 리소스에서 동일한 위치들을 지칭함을 보장한다. 본 명세서에서 논의된 바와 같이, 이 정보는 텍스처 디스크립터에 제공된다.
도 5는 일부 실시 예들에 따른 텍스처 디스크립터(500)의 블록도이다. 텍스처 디스크립터(500)는 도 2에 도시된 텍스처 디스크립터(225)의 일부 실시 예들을 나타낸다. 텍스처 디스크립터(500)는 도 1에 도시된 GPU(105) 및 도 2에 도시된 그래픽 파이프라인(200)과 같이 텍스처 디스크립터를 사용하는 머신의 워드 크기에 맞춰 조절된다. 예를 들어, 텍스처 디스크립터(500)는 머신의 유형에 따라 32 비트 워드 또는 64 비트 워드에 맞춰 조절되는 256 비트를 포함할 수 있다.
텍스처 디스크립터(500)는 PRT 리소스의 레벨의 치수들을 나타내는 정보(505)를 포함한다. 정보(505)의 일부 실시 예들은 PRT 리소스의 레벨의 하나의 치수를 16 비트를 사용하여 나타낸다. 텍스처가 세 개의 치수들을 포함하는 경우, 정보(505)는 PRT 리소스의 레벨의 치수들을 나타내기 위해 총 48 비트를 사용한다. 일부 실시 예들에서, 정보(505)는 텍스처의 가장 낮은 레벨/가장 높은 LOD 표현의 치수들을 나타낸다.
텍스처 디스크립터(500)는 PRT 리소스와 연관된 레지던시 맵의 어드레스를 나타내는 정보(510)를 포함한다. 예를 들어, 정보(510)는 도 2에 도시된 저장 리소스들(201)에 저장된 레지던시 맵(220)의 어드레스를 나타낼 수 있다.
텍스처 디스크립터(500)는 도 2에 도시된 레지던시 맵(220)과 같은 레지던시 맵의 치수들을 유도하는 데 사용되는 오프셋을 나타내는 정보(515)를 포함한다. 오프셋은 PRT 리소스의 가장 낮은 레벨(가장 높은 LOD를 가짐)과 같은 기준 레벨의 치수들에 기초하여 레지던시 맵의 치수들을 유도하는 데 사용된다. 일부 실시 예들에서, 오프셋은 레지던시 맵의 레벨과 기준 레벨 사이의 레벨들의 수를 나타낸다. 레지던시 맵 레벨과 기준 레벨 사이의 레벨들의 수는 레지던시 맵 레벨과 기준 레벨의 치수들의 비를 나타낸다. 이에 따라, 레지던시 맵의 치수들은 기준 레벨의 치수들에 오프셋에 의해 나타내어지는 비를 스케일링 또는 곱함으로써 결정된다. 오프셋을 사용하여 레지던시 맵의 레벨을 나타내는 것은 텍스처 디스크립터(500)의 크기를 감소시킨다. 예를 들어, PRT 리소스가 여덟 개의 레벨들을 갖는 밉맵으로서 저장되는 경우, 오프셋은 단지 3 비트를 사용하여 나타내어진다.
도 6은 일부 실시 예들에 따른 PRT 리소스의 레벨들과 레지던시 맵(605) 간 관계들(600)의 블록도이다. 레지던시 맵(605)은 2 텍셀 x 2 텍셀의 치수들을 가진다. 레지던시 맵(605)의 텍셀들에서의 값들은 레지던시 맵(605)에서의 대응하는 텍셀에 맵핑되는 레지던트 텍셀들의 타일을 포함하는 PRT 리소스의 가장 낮은 레벨(가장 높은 LOD에 대응함)을 나타낸다. 도 6에 도시된 PRT 리소스의 부분은 레벨 참조 번호 0이 주어진 제1 레벨(610), 레벨 참조 부호 1이 주어진 제2 레벨(615), 레벨 참조 번호 2가 주어진 제3 레벨(620), 및 레벨 참조 번호 3이 주어진 제4 레벨(625)을 포함한다. 레벨들(610, 615, 620, 625)은 PRT 리소스의 밉맵 표현에서의 레벨들이고, 레벨들(610, 615, 620, 625)의 치수들은 후속 레벨들에서 두 배씩 증가하거나 감소한다. 예를 들어, 레벨(610)은 8 텍셀 x 8 텍셀의 치수들을 갖고, 다음 후속 레벨(615)은 4 텍셀 x 4 텍셀의 치수들을 가진다.
본 명세서에서 논의된 바와 같이 텍스처 디스크립터에 저장된 정보에 기초하여 레지던시 맵(605)의 치수들을 변환하는 것은 레지던시 맵(605)에서의 텍셀들의 경계들이 레벨들(610, 615, 620, 625)에서의 대응하는 영역들에 정확하게 맵핑됨을 보장한다. 도시된 실시 예에서, 레지던시 맵(605)은 PRT 리소스의 레벨(620)과 동일한 치수들, 예를 들어, 2 텍셀 x 2 텍셀을 가진다. 이에 따라, 레벨(620)에서의 PRT 리소스에 액세스하기 위한 요청에서의 정규화된 좌표들은 레벨(620) 및 레지던시 맵(605)에서의 동일한 위치들을 지칭한다. 본 명세서에서 논의된 바와 같이 치수들을 변환하는 것은 또한 정규화된 좌표들이 또한 다른 레벨들(610, 615, 625)에서의 동일한 위치들을 지칭함을 보장한다. 예를 들어, 레지던시 맵(605)의 변환된 버전(630)에서의 텍셀들은 레벨(610)에서의 텍셀들의 정확한 타일들에 대응하고, 레지던시 맵(605)의 변환된 버전(635)에서의 텍셀들은 레벨(615)에서의 텍셀들의 정확한 타일들에 대응하며, 레지던시 맵(605)의 변환된 버전(640)에서의 텍셀들은 레벨(625)에서의 텍셀들의 정확한 타일들에 대응한다.
레벨(610, 615, 620, 625)에서의 크로스해치된 텍셀들(crosshatched texels)이 PRT 리소스에 존재한다. 도시된 실시 예에서, 레지던시 맵(605)의 상부 좌측에 대응하는 PRT 리소스에서의 텍셀들(예를 들어, 텍셀 좌표들 0, 0)은 PRT 리소스의 레벨(625)에만 존재한다. 이에 따라, 텍셀 (0, 0)의 값은 레벨 참조 번호 3과 동일하다. 레지던시 맵(605)의 상부 우측에 대응하는 PRT 리소스에서의 텍셀(예를 들어, 텍셀 좌표들 0, 1)은 PRT 리소스의 레벨(610) 및 더 높은 레벨들/더 낮은 LOD에 존재한다. 이에 따라, 텍셀 (0, 1)의 값은 레벨 참조 번호 0과 동일하다. 레지던시 맵(605)의 하부 좌측에 대응하는 PRT 리소스에서의 텍셀(예를 들어, 텍셀 좌표들 1, 0)은 PRT 리소스의 레벨(615) 및 더 높은 레벨들/더 낮은 LOD에 존재한다. 이에 따라, 텍셀 (1, 0)의 값은 레벨 참조 번호 1과 동일하다. 레지던시 맵(605)의 하부 우측에 대응하는 PRT 리소스에서의 텍셀(예를 들어, 텍셀 좌표들 1, 1)은 PRT 리소스의 레벨(615) 및 더 높은 레벨들/더 낮은 LOD에 존재한다. 이에 따라, 텍셀 (1, 1)의 값은 레벨 참조 번호 1과 동일하다.
도 7은 일부 실시 예들에 따른 텍스처 디스크립터들을 생성하고 저장하는 방법(700)의 흐름도이다. 방법(700)은 도 1에 도시된 GPU(105) 및 도 2에 도시된 그래픽 파이프라인(200)의 일부 실시 예들에서 구현된다. 예를 들어, GPU(105)에서 구현되는 드라이버가 텍스처 디스크립터를 생성하기 위해 사용될 수 있다. 방법(700)은 도 5에 도시된 텍스처 디스크립터(500)의 일부 실시 예들을 구현하는 데 사용된다. 텍스처 디스크립터는 텍스처를 상이한 LOD로 나타내는 PRT 리소스의 레벨들의 계층에서의 레벨의 치수들을 정의하는 정보를 포함한다. 텍스처 디스크립터는 또한 PRT 리소스에 대한 레지던시 맵과 연관된다.
블록(705)에서, 드라이버는 레지던시 맵의 레벨에 대한 오프셋을 결정하는 데 사용되는 기준 레벨을 결정하며, 이는 PRT 리소스의 레벨들 중 하나에 대응하는 텍셀 치수들을 갖도록 제약된다. 일부 실시 예들에서, 기준 레벨은 PRT 리소스의 레벨들의 계층에서의 가장 낮은 레벨/가장 높은 LOD이다. 기준 레벨은 예를 들어, 기준 레벨을 나타내는 값을 하나 이상의 레지스터, 메모리 위치, 버퍼 등에 저장함으로써, 드라이버가 이용 가능하다.
블록(710)에서, 드라이버는 레지던시 맵의 레벨을 결정한다. 레지던시 맵의 레벨을 나타내는 정보는 예를 들어, 하나 이상의 레지스터, 메모리 위치, 버퍼 등에 저장된 값으로서, 드라이버가 이용 가능하다.
블록(715)에서, 드라이버는 레지던시 맵의 레벨과 기준 레벨 사이의 오프셋을 결정한다. 오프셋의 일부 실시 예들은 레지던시 맵의 레벨과 기준 레벨 사이의 레벨들의 수를 나타낸다. 예를 들어, 기준 레벨이 텍스처의 밉맵 표현의 레벨 0이고 레지던시 맵의 레벨이 텍스처의 밉맵 표현의 레벨 3에 대응하는 경우, 오프셋의 값은 3이다.
블록(720)에서, 드라이버는 PRT 리소스의 레벨의 치수들, 및 기준 레벨에 대한 레지던시 맵의 레벨의 치수들을 나타내는 오프셋을 포함하는 텍스처 디스크립터를 생성한다. 오프셋을 나타내는 데 필요한 비트 수는 레지던시 맵의 레벨의 치수들을 직접 나타내는 데 필요한 비트 수보다 훨씬 더 작다. 예를 들어, 레지던시 맵의 레벨의 하나의 치수가 16 비트로 나타내어지고 텍스처가 세 개의 치수들을 포함하는 경우, 레지던시 맵의 레벨의 치수들을 나타내는 데 총 48비트가 필요하다. 대조적으로, PRT 리소스의 계층적 표현에서의 레벨들의 수가 8인 경우, 레지던시 맵의 레벨의 가능한 오프셋들을 표현하는 데에는 단지 3 비트만이 필요하다. 일부 실시 예들에서, 드라이버는 텍스처 디스크립터에 대한 레지던시 맵의 어드레스를 나타내는 정보뿐만 아니라, 텍스처에 대한 포인터들, PRT 리소스의 치수들, 데이터 인코딩 포맷들, 텍셀당 바이트 수들, 압축비들, 압축 유형 등을 포함하는 추가적인 정보도 포함한다.
블록(725)에서, 드라이버는 PRT 리소스 및 레지던시 맵에 액세스하는 셰이더들 또는 애플리케이션들이 액세스 가능한 메모리 위치에 텍스처 디스크립터를 저장한다. 예를 들어, 텍스처 디스크립터는 도 1에 도시된 메모리(115) 또는 도 2에 도시된 저장 리소스들(201)에 저장될 수 있다.
도 8은 일부 실시 예들에 따른 텍스처 디스크립터들을 생성하고 저장하는 방법(800)의 흐름도이다. 방법(800)은 도 1에 도시된 GPU(105) 및 도 2에 도시된 그래픽 파이프라인(200)의 일부 실시 예들에서 회로부와 같은 텍스처 하드웨어에 의해 구현된다.
블록(805)에서, 텍스처 하드웨어는 PRT 리소스의 하나 이상의 레벨에 액세스하기 위한 요청을 수신한다. 요청은 PRT 리소스의 하나 이상의 레벨에 의해 나타내어지는 텍스처에서의 위치를 나타내는 정규화된 좌표들을 포함한다(또는 연관된다).
블록(810)에서, 텍스처 하드웨어는 PRT 리소스 및 대응하는 레지던시 맵과 연관된 텍스처 디스크립터에 액세스한다. 텍스처 디스크립터는 PRT 리소스의 레벨들의 치수들 및 레지던시 맵의 레벨을 결정하는 데 사용되는 오프셋을 정의하는 정보를 포함한다.
블록(815)에서, 텍스처 하드웨어는 오프셋에 기초하여 레지던시 맵의 치수들을 결정한다. 일부 실시 예들에서, 오프셋은 레지던시 맵의 레벨과 기준 레벨 사이의 레벨들의 수를 나타낸다. 레벨들의 수는 기준 레벨의 치수들에 대한 레지던시 맵의 치수들의 비를 나타낸다. 이에 따라, 텍스처 하드웨어는 기준 레벨의 치수들에 오프셋에 의해 나타내어지는 비를 스케일링(또는 곱)함으로써 레지던시 맵의 치수들을 결정한다. 일부 실시 예들에서, 다수의 상이한 레지던시 맵 치수들에 대해 개별적인 오프셋들(예를 들어, 세 개의 오프셋들)이 존재하고, 텍스처 하드웨어는 별개의 개별적인 오프셋들을 기준 레벨에 적용함으로써 레지던시 맵의 치수들을 결정한다.
블록(820)에서, 텍스처 하드웨어는 레지던시 맵의 치수들을 사용하여 요청으로부터의 정규화된 좌표들을 레지던시 맵에서의 텍셀 좌표들로 변환한다. 일부 실시 예들에서, 변환은 도 4에 도시된 바와 같이 수행된다.
블록(825)에서, 텍스처 하드웨어는 텍셀 좌표들을 사용하여 레지던시 맵에 액세스한다. 예를 들어, 텍스처 하드웨어는 요청에서의 정규화된 좌표들로부터 변환되는 텍셀 좌표들에 기초하여 레지던시 맵에서의 텍셀을 식별한다. 텍셀은 텍스처를 나타내는 존재하는 텍셀들을 포함하는 PRT 리소스에서의 가장 낮은 레벨/가장 높은 LOD를 나타내는 정보를 포함한다. 일부 실시 예들에서, 텍셀에서의 정보는 레지던시 맵에서의 텍셀의 경계들에 의해 망라되는 PRT 리소스에서의 텍스처의 부분에 대한 존재하는 텍셀들을 포함하는 밉맵의 가장 낮은 레벨을 나타낸다.
블록(830)에서, 액세스 요청은 레지던시 맵의 텍셀에서 나타내어지는 PRT 리소스 레벨로 클램핑된다. 일부 실시 예들에서, 액세스 요청은 레지던시 맵의 텍셀에서 나타내어지는 레벨과 동일하거나 더 높은(더 낮은 LOD의) PRT 리소스의 액세스 레벨들만으로 액세스 요청을 제약함으로써 레벨에 클램핑된다. 그 다음, 요청은 PRT 리소스에 제출된다. 요청을 클램핑하는 것은 PRT 리소스가 비-존재 텍셀에 대해 디폴트 블랙 값을 리턴하는 대신에 요청된 위치에서의 텍스처를 나타내는 정보를 리턴하도록, 요청이 존재하는 PRT 리소스의 일부분에 액세스함을 보장한다.
본 명세서에서 설명된 바와 같이, 일부 실시 예들에서, 방법은: 프로세서에서, 복수의 레벨들의 부분적으로 존재하는 텍스처(partially resident texture; PRT) 리소스 중 적어도 하나에 액세스하기 위한 요청을 수신하는 단계로서, 복수의 레벨들은 텍스처를 상이한 세밀도들(levels of detail; LOD)로 나타내고, 요청은 텍스처에서의 위치를 나타내는 정규화된 좌표들을 포함하는 것인, 요청을 수신하는 단계; 프로세서에서, 복수의 레벨들 중 제1 레벨의 치수들, 및 PRT 리소스에 존재하는 텍셀들을 나타내는 적어도 하나의 레지던시 맵(residency map)과 연관되는 복수의 레벨들 중의 적어도 하나의 제2 레벨과 기준 레벨 사이의 적어도 하나의 오프셋을 나타내는 정보를 포함하는 텍스처 디스크립터(texture descriptor)에 액세스하는 단계; 적어도 하나의 오프셋에 기초하여 정규화된 좌표들을 적어도 하나의 레지던시 맵에서의 텍셀 좌표들로 변환하는 단계; 및 요청에 응답하여 프로세서에서, 정규화된 좌표들에 의해 나타내어지는 텍스처 데이터가 PRT 리소스에 존재하는지 여부를 결정하기 위해 텍셀 좌표들에 기초하여 적어도 하나의 존재 맵에 액세스하는 단계를 포함한다. 일 양태에서, 제1 레벨은 복수의 레벨들 중에서 가장 높은 LOD를 갖는 복수의 레벨들 중의 하나에 대응하고, 기준 레벨은 제1 레벨에 대응한다. 다른 양태에서, 텍스처 디스크립터는 복수의 레지던시 맵들과 연관된 복수의 제2 레벨들과 기준 레벨 사이의 복수의 오프셋들을 나타내는 정보를 포함한다.
일 양태에서, 적어도 하나의 오프셋은 적어도 하나의 제2 레벨과 기준 레벨 사이의 레벨들의 수를 나타낸다. 다른 양태에서, 정규화된 좌표들을 텍셀 좌표들로 변환하는 단계는 적어도 하나의 제2 레벨과 기준 레벨 사이의 레벨들의 수에 기초하여 기준 레벨의 치수들에 대한 적어도 하나의 레지던시 맵의 치수들의 비에 기초하여 적어도 하나의 레지던시 맵의 치수들을 결정하는 단계를 포함한다. 또 다른 양태에서, 정규화된 좌표들을 텍셀 좌표들로 변환하는 단계는 적어도 하나의 레지던시 맵의 치수들에 기초하여 정규화된 좌표들을 텍셀 좌표들로 변환하는 단계를 포함한다. 또 다른 양태에서, 본 방법은: 복수의 레벨들 중 제1 레벨의 치수들에 기초하여 정규화된 좌표들을 PRT 리소스의 복수의 레벨들 중 적어도 하나에서의 텍셀 좌표들로 변환하는 단계를 더 포함하며, 적어도 하나의 레지던시 맵에서의 텍셀 좌표들은 PRT 리소스의 복수의 레벨들 중 적어도 하나에서의 텍셀 좌표들과 동일한 위치를 나타낸다.
일 양태에서, 본 방법은: 적어도 하나의 레지던시 맵에서의 텍셀 좌표들에 기초하여 적어도 하나의 레지던스 맵에서의 텍셀을 식별하는 단계; 및 적어도 하나의 레지던시 맵에서의 텍셀에 대응하는 PRT의 타일(tile)에 존재하는 가장 높은 LOD를 나타내는 정보에 액세스하는 단계를 더 포함한다. 다른 양태에서, 본 방법은 요청에 응답하여, 타일에 존재하는 가장 높은 LOD 이하의 LOD를 갖는 텍스처 데이터를 수신하는 단계를 포함한다.
일부 실시 예들에서, 장치는: 적어도 하나의 레지던시 맵 및 텍스처 디스크립터를 저장하도록 구성된 메모리로서, 적어도 하나의 레지던시 맵은 텍스처를 나타내는 부분적으로 존재하는 텍스처(PRT) 리소스에서의 텍셀들이 PRT 리소스에 존재하는지 여부를 나타내고, 텍스처 디스크립터는 복수의 레벨들 중 제1 레벨의 치수들, 및 적어도 하나의 레지던시 맵과 연관되는 복수의 레벨들 중의 적어도 하나의 제2 레벨과 기준 레벨 사이의 적어도 하나의 오프셋을 나타내는 정보를 포함하는 것인, 메모리; 및 PRT 리소스의 복수의 레벨들 중 적어도 하나에 액세스하기 위한 요청을 수신하도록 구성된 프로세서로서, 요청은 텍스처에서의 위치를 나타내는 정규화된 좌표들을 포함하고, 프로세서는 적어도 하나의 오프셋에 기초하여 정규화된 좌표들을 적어도 하나의 레지던시 맵에서의 텍셀 좌표들로 변환하고 정규화된 좌표들에 의해 나타내어지는 텍스처 데이터가 PRT 리소스에 존재하는지 여부를 결정하기 위해 텍셀 좌표들에 기초하여 적어도 하나의 레지던스 맵에 액세스하도록 구성되는 것인, 프로세서를 포함한다. 일 양태에서, 제1 레벨은 복수의 레벨들 중에서 가장 높은 LOD를 갖는 복수의 레벨들 중의 하나에 대응하고, 기준 레벨은 제1 레벨에 대응한다. 다른 양태에서, 텍스처 디스크립터는 복수의 레지던시 맵들과 연관된 복수의 제2 레벨들과 기준 레벨 사이의 복수의 오프셋들을 나타내는 정보를 포함한다.
일 양태에서, 적어도 하나의 오프셋은 적어도 하나의 제2 레벨과 기준 레벨 사이의 레벨들의 수를 나타낸다. 다른 양태에서, 프로세서는 적어도 하나의 제2 레벨과 기준 레벨 사이의 레벨들의 수에 기초하여 기준 레벨의 치수들에 대한 적어도 하나의 레지던시 맵의 치수들의 비에 기초하여 적어도 하나의 레지던시 맵의 치수들을 결정하도록 구성된다. 다른 양태에서, 프로세서는 적어도 하나의 레지던시 맵의 치수들에 기초하여 정규화된 좌표들을 텍셀 좌표들로 변환하도록 구성된다. 또 다른 양태에서, 프로세서는 복수의 레벨들 중 제1 레벨의 치수들에 기초하여 정규화된 좌표들을 PRT 리소스의 복수의 레벨들 중 적어도 하나에서의 텍셀 좌표들로 변환하도록 구성되며, 적어도 하나의 레지던시 맵에서의 텍셀 좌표들은 PRT 리소스의 복수의 레벨들 중 적어도 하나에서의 텍셀 좌표들과 동일한 위치를 나타낸다.
또 다른 양태에서, 프로세서는 적어도 하나의 레지던시 맵에서의 텍셀 좌표들에 기초하여 적어도 하나의 레지던스 맵에서의 텍셀을 식별하고 적어도 하나의 레지던시 맵에서의 텍셀에 대응하는 PRT의 타일(tile)에 존재하는 가장 높은 LOD를 나타내는 정보에 액세스하도록 구성된다. 다른 양태에서, 프로세서는 요청에 응답하여, 타일에 존재하는 가장 높은 LOD 이하의 LOD를 갖는 텍스처 데이터를 수신하도록 구성된다.
일부 실시 예들에서, 방법은: 프로세서에서, 부분적으로 존재하는 텍스처(PRT) 리소스의 복수의 레벨들에서의 제1 레벨들을 나타내는 값들을 포함하는 복수의 제1 텍셀들을 포함하는 적어도 하나의 레지던시 맵을 생성하는 단계로서, 복수의 레벨들은 텍스처를 상이한 세밀도들(LOD)로 나타내고, 제1 레벨들은 PRT 리소스의 복수의 레벨들 중 어느 레벨이 프로세서와 연관된 메모리에 존재하는지를 나타내며, 적어도 하나의 레지던시 맵의 치수들은 복수의 레벨들 중 적어도 하나의 제2 레벨의 치수들에 대응하는 것인, 레지던시 맵을 생성하는 단계; 프로세서에서, 적어도 하나의 제2 레벨과 복수의 레벨들의 기준 레벨 사이의 오프셋을 결정하는 단계; 및 복수의 레벨들 중 제3 레벨의 치수들 및 적어도 하나의 오프셋을 나타내는 정보를 포함하는 텍스처 디스크립터를 프로세서로부터 메모리에 저장하는 단계를 포함한다. 일 양태에서, 텍스처 디스크립터는 복수의 레지던시 맵들과 연관된 복수의 제2 레벨들과 기준 레벨 사이의 복수의 오프셋들을 나타내는 정보를 포함하고, 적어도 하나의 오프셋은 적어도 하나의 제2 레벨과 기준 레벨 사이의 레벨들의 수를 나타내고, 제3 레벨은 복수의 레벨들 중에서 가장 높은 LOD를 갖는 복수의 레벨들 중의 하나에 대응하며, 기준 레벨은 제3 레벨에 대응한다.
컴퓨터 판독 가능한 저장 매체는 컴퓨터 시스템에 명령어들 및/또는 데이터를 제공하기 위해 사용 중 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체, 또는 비일시적 저장 매체들의 조합을 포함할 수 있다. 이러한 저장 매체들은 광학 매체들(예를 들어, 컴팩트 디스크(compact disc; CD), 디지털 다목적 디스크(digital versatile disc; DVD), 블루-레이 디스크), 자기 매체들(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(random access memory; RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(read-only memory; ROM) 또는 플래시 메모리), 또는 미세 전자 기계 시스템들(microelectromechanical systems; MEMS) 기반 저장 매체들을 포함할 수 있으나, 이에 제한되는 것은 아니다. 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 시스템에 내장되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 착탈 가능하게 부착되거나(예를 들어, 광학 디스크 또는 범용 직렬 버스(Universal Serial Bus; USB) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 결합될 수 있다(예를 들어, 네트워크 액세스 가능한 스토리지(network accessible storage; NAS)).
일부 실시 예들에서, 상술된 기술들의 특정 양태들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비일시적인 컴퓨터 판독 가능한 저장 매체 상에 저장되거나 그 외 유형적으로 구현되는 실행 가능한 명령어들의 하나 이상의 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 조작하여 상술된 기술들의 하나 이상의 양태를 수행하는 명령어들 및 특정 데이터를 포함할 수 있다. 비일시적인 컴퓨터 판독 가능한 저장 매체는 예를 들어, 자기 또는 광학 디스크 저장 디바이스, 고체 상태 저장 디바이스들 이를테면 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비일시적인 컴퓨터 판독 가능한 저장 매체 상에 저장된 실행 가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서에 의해 해석되거나 그 외 실행 가능한 다른 명령어 포맷으로 있을 수 있다.
일반적인 설명으로 상술된 모든 동작들 또는 요소들이 요구되지는 않을 수 있다는 것, 특정 동작 또는 디바이스의 일부가 요구되지 않을 수 있다는 것, 그리고 설명된 동작들 또는 요소들에 더하여, 하나 이상의 추가 동작이 수행되거나 요소들이 포함될 수 있다는 것에 유념한다. 더 나아가, 동작들이 나열된 순서는 반드시 이것들이 수행되는 순서는 아니다. 또한, 개념들은 구체적인 실시 예들을 참조하여 설명되었다. 그러나, 해당 기술분야의 통상의 기술자는 아래 청구항들에 제시된 바에 따라 본 개시의 범위로부터 벗어나지 않고 다양하게 수정 및 변경될 수 있다는 것을 이해한다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아닌 예시적인 의미로 여겨져야 하고, 상기한 모든 수정이 본 개시의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들 및 문제들에 대한 솔루션들이 구체적인 실시 예들과 관련하여 상술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들 및 임의의 혜택, 이점, 또는 솔루션을 발생시키거나 더 확연히 드러낼 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항들의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지 않아야 한다. 또한, 위에서 개시된 특정 실시 예들은 개시된 주제가 본 명세서에서의 교시 내용의 혜택을 받는 해당 기술분야의 통상의 기술자들에게 명백한 상이하지만 균등한 방식들로 수정 및 실시될 수 있음에 따라 단지 예시적인 것일 뿐이다. 아래 청구항들에서 설명되는 것 이외에, 제시되는 본 명세서에서의 구성 또는 설계의 세부 사항들로 제한되도록 의도되지 않는다. 이에 따라 위에서 개시된 특정 실시 예들이 대체 또는 수정될 수 있고 모든 그러한 변형 예들은 개시된 주제의 범위 내인 것으로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래 청구항들에 제시되는 바에 따른다.

Claims (20)

  1. 방법으로서, 상기 방법은,
    처리 시스템의 프로세서에 의해, 텍스처(texture)를 상이한 세밀도들(Levels Of Detail, LOD)로 나타내는 복수의 레벨(level)들을 포함하는 부분적으로 존재하는 텍스처(Partially Resident Texture, PRT) 리소스(resource)에 액세스(access)하기 위한 요청의 정규화된 좌표(normalized coordinate)들을, 상기 PRT 리소스에 존재하는 텍셀(texel)들을 나타내는 레지던시 맵(residency map) 및 텍스처 디스크립터(texture descriptor)에 기초하여, 상기 PRT 리소스에서의 텍셀 좌표(texel coordinate)들로 변환하는 단계와, 여기서
    상기 텍스처 디스크립터는,
    상기 복수의 레벨들 중 제1 레벨의 치수(dimension)들을 나타내는 정보, 및
    상기 레지던시 맵과 연관된 상기 복수의 레벨들 중 제2 레벨과 상기 제1 레벨 사이의 레벨들의 수를 나타내는 오프셋(offset)을 나타내는 정보를 포함하고,
    상기 레지던시 맵의 치수들은 상기 텍스처 디스크립터에 포함된 상기 정보에 기초하여 결정되며; 그리고
    상기 프로세서에 의해, 상기 텍셀 좌표들 및 상기 레지던시 맵에 기초하여 상기 PRT 리소스에 액세스하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 제1 레벨은 상기 복수의 레벨들 중에서 가장 높은 LOD를 갖는 상기 복수의 레벨들 중의 하나에 대응하는 것을 특징으로 하는 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 방법은 또한, 상기 프로세서에 의해, 상기 오프셋에 기초하여 상기 정규화된 좌표들을 상기 레지던시 맵에서의 텍셀 좌표들로 변환하는 단계를 포함하고, 여기서 상기 프로세서에 의해, 상기 정규화된 좌표들을 상기 텍셀 좌표들로 변환하는 것은, 상기 프로세서에 의해, 상기 제2 레벨과 상기 제1 레벨 사이의 상기 레벨들의 수에 기초하는 상기 제1 레벨의 치수들에 대한 상기 레지던시 맵의 치수들의 비(ratio)에 기초하여 상기 레지던시 맵의 치수들을 결정하는 것을 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 프로세서에 의해, 상기 정규화된 좌표들을 상기 텍셀 좌표들로 변환하는 것은, 상기 프로세서에 의해, 상기 레지던시 맵의 치수들에 기초하여 상기 정규화된 좌표들을 상기 텍셀 좌표들로 변환하는 것을 포함하는 것을 특징으로 하는 방법.
  6. 제4항에 있어서,
    상기 방법은 또한, 상기 프로세서에 의해, 상기 복수의 레벨들 중 상기 제1 레벨의 치수들에 기초하여 상기 정규화된 좌표들을 상기 PRT 리소스의 상기 복수의 레벨들 중 상기 적어도 하나에서의 텍셀 좌표들로 변환하는 단계를 포함하고, 여기서 상기 레지던시 맵에서의 상기 텍셀 좌표들은 상기 PRT 리소스의 상기 복수의 레벨들 중 상기 적어도 하나에서의 상기 텍셀 좌표들과 동일한 위치를 나타내는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 텍스처 디스크립터는 복수의 레지던시 맵들과 연관된 복수의 제2 레벨들과 상기 제1 레벨 사이의 복수의 오프셋들을 나타내는 정보를 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 방법은 또한,
    상기 프로세서에 의해, 상기 레지던시 맵에서의 텍셀을 상기 레지던시 맵에서의 상기 텍셀의 좌표들에 기초하여 식별하는 단계와; 그리고
    상기 프로세서에 의해, 상기 레지던시 맵에서의 상기 텍셀에 대응하는 상기 PRT 리소스의 타일(tile)에 존재하는 가장 높은 LOD를 나타내는 정보에 액세스하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 방법은 또한, 상기 프로세서에 의해, 상기 요청에 응답하여, 상기 타일에 존재하는 상기 가장 높은 LOD 이하인 LOD를 갖는 텍스처 데이터를 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 장치로서,
    상기 장치는 메모리에 결합된 프로세서를 포함하고,
    상기 메모리는,
    복수의 레벨들을 포함하는 부분적으로 존재하는 텍스처(PRT) 리소스에 텍셀이 존재하는지 여부를 나타내는 레지던시 맵을 저장하고, 여기서 상기 복수의 레벨들은 텍스처를 상이한 세밀도들(LOD)로 나타내며; 그리고
    텍스처 디스크립터를 저장하고, 여기서
    상기 텍스처 디스크립터는,
    상기 복수의 레벨들 중 제1 레벨의 치수들을 나타내는 정보, 및
    상기 레지던시 맵과 연관된 상기 복수의 레벨들 중 제2 레벨과 상기 제1 레벨 사이의 레벨들의 수를 나타내는 오프셋을 나타내는 정보를 포함하고,
    상기 프로세서는,
    상기 PRT 리소스의 상기 복수의 레벨들 중 적어도 하나에 액세스하기 위한 요청을 수신하도록 구성되고, 여기서 상기 요청은 상기 텍스처에서의 위치를 나타내는 정규화된 좌표들을 포함하며; 그리고
    상기 텍스처 디스크립터에 기초하여 상기 요청을 상기 PRT 리소스의 존재하는 텍셀로 변환하도록 구성되고,
    상기 요청을 변환하는 것은 상기 오프셋에 기초하여 상기 레지던시 맵의 치수들을 결정하는 것을 포함하는 것을 특징으로 하는 장치.
  11. 제10항에 있어서,
    상기 제1 레벨은 상기 복수의 레벨들 중에서 가장 높은 LOD를 갖는 상기 복수의 레벨들 중의 하나에 대응하는 것을 특징으로 하는 장치.
  12. 제11항에 있어서,
    상기 텍스처 디스크립터는 복수의 레지던시 맵들과 연관된 복수의 제2 레벨들과 상기 제1 레벨 사이의 복수의 오프셋들을 나타내는 정보를 포함하는 것을 특징으로 하는 장치.
  13. 삭제
  14. 제11항에 있어서,
    상기 프로세서는, 상기 제2 레벨과 상기 제1 레벨 사이의 상기 레벨들의 수에 기초하는 상기 제1 레벨의 치수들에 대한 상기 레지던시 맵의 치수들의 비에 기초하여 상기 레지던시 맵의 치수들을 결정하도록 구성되는 것을 특징으로 하는 장치.
  15. 제14항에 있어서,
    상기 프로세서는, 상기 레지던시 맵의 치수들 및 상기 오프셋에 기초하여 상기 정규화된 좌표들을 상기 텍셀의 좌표들로 변환하도록 구성되는 것을 특징으로 하는 장치.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020217020466A 2019-01-31 2020-01-17 레지던시 맵 디스크립터 KR102659643B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16/263,986 2019-01-31
US16/263,986 US10540802B1 (en) 2019-01-31 2019-01-31 Residency map descriptors
US16/723,232 2019-12-20
US16/723,232 US10991146B2 (en) 2019-01-31 2019-12-20 Residency map descriptors
PCT/US2020/014060 WO2020159722A1 (en) 2019-01-31 2020-01-17 Residency map descriptors

Publications (2)

Publication Number Publication Date
KR20210110812A KR20210110812A (ko) 2021-09-09
KR102659643B1 true KR102659643B1 (ko) 2024-04-22

Family

ID=69167211

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217020466A KR102659643B1 (ko) 2019-01-31 2020-01-17 레지던시 맵 디스크립터

Country Status (6)

Country Link
US (3) US10540802B1 (ko)
EP (1) EP3918566A4 (ko)
JP (1) JP7476207B2 (ko)
KR (1) KR102659643B1 (ko)
CN (1) CN113287145A (ko)
WO (1) WO2020159722A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11094103B2 (en) * 2019-03-26 2021-08-17 Qualcomm Incorporated General purpose register and wave slot allocation in graphics processing
US12106418B2 (en) * 2020-03-25 2024-10-01 Advanced Micro Devices, Inc. Sampling for partially resident textures
CN111951156B (zh) * 2020-08-24 2021-08-03 杭州小影创新科技股份有限公司 一种绘制图形光电特效的方法
US12045937B2 (en) 2022-05-31 2024-07-23 Microsoft Technology Licensing, Llc Graphics processing systems and methods with geometry level of detail processing
CN116048531B (zh) * 2023-03-30 2023-08-08 南京砺算科技有限公司 指令编译方法及图形处理装置、存储介质、终端设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012079338A (ja) 2005-10-03 2012-04-19 Shinsedai Kk テクスチャマッピング装置
US20120281006A1 (en) 2011-05-05 2012-11-08 Jorn Nystad Method Of And Apparatus For Encoding And Decoding Data
US20180232940A1 (en) * 2017-02-16 2018-08-16 Microsoft Technology Licensing, Llc Texture residency hardware enhancements for graphics processors

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5760783A (en) * 1995-11-06 1998-06-02 Silicon Graphics, Inc. Method and system for providing texture using a selected portion of a texture map
US6791561B1 (en) * 2000-08-22 2004-09-14 Sony Corporation Method and apparatus for rendering video data
US7948500B2 (en) * 2007-06-07 2011-05-24 Nvidia Corporation Extrapolation of nonresident mipmap data using resident mipmap data
JP2009099098A (ja) * 2007-10-19 2009-05-07 Toshiba Corp コンピュータグラフィックス描画装置及び描画方法
US8860743B2 (en) 2009-12-31 2014-10-14 Nvidia Corporation Sparse texture systems and methods
US8412971B2 (en) 2010-05-11 2013-04-02 Advanced Micro Devices, Inc. Method and apparatus for cache control
US8587602B2 (en) * 2010-08-16 2013-11-19 Microsoft Corporation GPU texture tile detail control
US8907969B2 (en) 2010-12-13 2014-12-09 Advanced Micro Devices, Inc. Partially resident textures
US8624911B1 (en) * 2011-01-05 2014-01-07 Google Inc. Texture-based polygon antialiasing
US9489313B2 (en) 2013-09-24 2016-11-08 Qualcomm Incorporated Conditional page fault control for page residency
US9652882B2 (en) * 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US10242493B2 (en) * 2014-06-30 2019-03-26 Intel Corporation Method and apparatus for filtered coarse pixel shading
US10593095B2 (en) * 2015-06-12 2020-03-17 Intel Corporation Facilitating increased precision in mip-mapped stitched textures for graphics computing devices
GB2550150B (en) * 2016-05-10 2020-01-22 Advanced Risc Mach Ltd Data processing systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012079338A (ja) 2005-10-03 2012-04-19 Shinsedai Kk テクスチャマッピング装置
US20120281006A1 (en) 2011-05-05 2012-11-08 Jorn Nystad Method Of And Apparatus For Encoding And Decoding Data
US20180232940A1 (en) * 2017-02-16 2018-08-16 Microsoft Technology Licensing, Llc Texture residency hardware enhancements for graphics processors

Also Published As

Publication number Publication date
CN113287145A (zh) 2021-08-20
JP2022519163A (ja) 2022-03-22
US20210343066A1 (en) 2021-11-04
EP3918566A4 (en) 2022-11-02
US20200250877A1 (en) 2020-08-06
EP3918566A1 (en) 2021-12-08
JP7476207B2 (ja) 2024-04-30
WO2020159722A1 (en) 2020-08-06
US11521342B2 (en) 2022-12-06
US10540802B1 (en) 2020-01-21
KR20210110812A (ko) 2021-09-09
US10991146B2 (en) 2021-04-27

Similar Documents

Publication Publication Date Title
KR102659643B1 (ko) 레지던시 맵 디스크립터
US8704830B2 (en) System and method for path rendering with multiple stencil samples per color sample
US8189007B2 (en) Graphics engine and method of distributing pixel data
US8325177B2 (en) Leveraging graphics processors to optimize rendering 2-D objects
US8547382B2 (en) Video graphics system and method of pixel data compression
CN111052172B (zh) 使用压缩元数据的纹理驻留检查
US9530241B2 (en) Clipping of graphics primitives
KR20190078086A (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
KR20180023856A (ko) 그래픽 처리 시스템 및 그래픽 프로세서
US20230048839A1 (en) Compressing texture data on a per-channel basis
KR20170127312A (ko) 그래픽스 프로세싱 장치 및, 그래픽스 프로세싱 장치에서 캐시 바이패스를 제어하는 방법
CN115934590A (zh) 电路和方法

Legal Events

Date Code Title Description
AMND Amendment
AMND Amendment
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant