KR101267120B1 - 성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑 - Google Patents

성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑 Download PDF

Info

Publication number
KR101267120B1
KR101267120B1 KR1020117004378A KR20117004378A KR101267120B1 KR 101267120 B1 KR101267120 B1 KR 101267120B1 KR 1020117004378 A KR1020117004378 A KR 1020117004378A KR 20117004378 A KR20117004378 A KR 20117004378A KR 101267120 B1 KR101267120 B1 KR 101267120B1
Authority
KR
South Korea
Prior art keywords
graphics
information
data
external device
primitive
Prior art date
Application number
KR1020117004378A
Other languages
English (en)
Other versions
KR20110033306A (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 KR20110033306A publication Critical patent/KR20110033306A/ko
Application granted granted Critical
Publication of KR101267120B1 publication Critical patent/KR101267120B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Abstract

일반적으로, 본 개시물은, 어느 그래픽스 명령 및 관련된 그래픽스 데이터 (예를 들어, 폴리곤 데이터, 텍스처 데이터) 가 식별된 성능 이슈와 관련될 수도 있는지 애플리케이션 개발자 및/또는 그래픽스 아티스트가 식별할 수 있게 함으로써, 3차원 (3D) 장면과 같은 그래픽스 장면을 최적화하는 기술에 관한 것이다. 하나의 예시적인 방법은, 그래픽스 명령의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터에 그래픽스 명령을 매핑하기 위한 정보를 포함하는 매핑 정보를 외부 디바이스로부터 수신하는 단계, 및 그래픽스 명령들내의 적어도 하나의 그래픽스 명령의 실행과 관련된 성능 이슈를 식별하는 단계를 포함한다. 이 방법은, 적어도 하나의 그래픽스 명령의 실행에 기초하여 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 매핑 정보를 사용하는 단계를 더 포함한다.

Description

성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑{MAPPING GRAPHICS INSTRUCTIONS TO ASSOCIATED GRAPHICS DATA DURING PERFORMANCE ANALYSIS}
35 U.S.C.§119 하의 우선권 주장
본 특허 출원은 2008년 7월 25일 출원되고, 본 출원의 양수인에게 양도되고 참조로 여기에 명백하게 포함되는 MAPPING GRAPHICS INSTURCTIONS TO ASSOCIATED GRAPHICS DATA DURING PERFORMANCE ANALYSIS 라는 명칭의 가출원 제 61/083,665 호에 대한 우선권을 주장한다.
공동 계류중인 특허 출원에 대한 참조
본 특허 출원은,
본 출원과 동시에 출원되고, 본 출원의 양수인에게 양도되고, 참조로 여기에 명백하게 포함되는, 대리인 사건 번호 080967P1 을 갖는 2008년 7월 25일 출원된 공동 계류중인 미국 특허 출원 61/083,656 호; 및
본 출원과 동시에 출원되고, 본 출원의 양수인에게 양도되고, 참조로 여기에 명백하게 포함되는, 대리인 사건 번호 080969P1 을 갖는 2008년 7월 25일 출원된 공동 계류중인 미국 특허 출원 61/083,659 호에 관한 것이다.
본 개시물은 그래픽스 이미지의 디스플레이에 관한 것이다.
그래픽스 프로세서는, 비디오 게임, 그래픽스 프로그램, 컴퓨터-보조 디자인 (CAD) 애플리케이션, 시뮬레이션 및 시각화 툴, 및 이미징과 같은 다양한 애플리케이션에 대해 2차원 (2D) 및 3차원 (3D) 이미지를 렌더링하기 위해 널리 사용된다. 디스플레이 프로세서는 디스플레이 디바이스를 통한 사용자에 대한 프리젠테이션을 위해 그래픽스 프로세서의 렌더링된 출력을 디스플레이하기 위해 사용될 수도 있다.
OpenGL® (개방형 그래픽스 라이브러리) 은 2D 및 3D 그래픽스를 생성하는 애플리케이션을 기록할 때 사용될 수도 있는 API (애플리케이션 프로그래밍 인터페이스) 를 정의하는 표준 사양이다. 자바와 같은 다른 언어들이 그들 자체의 프로세스를 통한 OpenGL API 에 대한 바인딩을 정의할 수도 있다. 인터페이스는 단순한 프리미티브 (primitive) 로부터 장면 (scene) 을 드로잉하기 위해 사용될 수 있는 다중의 함수 콜, 또는 명령을 포함한다. 그 후, 그래픽스 프로세서, 멀티-미디어 프로세서, 및 심지어 범용 CPU 는 OpenGL 함수 콜을 사용하여 기록되는 애플리케이션을 실행할 수 있다. OpenGL ES (임베디드 시스템) 는 모바일 무선 전화, 디지털 멀티미디어 플레이어, 개인 휴대 정보 단말기 (PDA), 또는 비디오 게임 콘솔과 같은 임베디드 디바이스를 위해 설계되는 OpenGL 의 변형이다.
3D 그래픽스 애플리케이션과 같은 그래픽스 애플리케이션은, 이미지를 생성하기 위해 그래픽스 디바이스에서의 하나 이상의 프로세서와 같은 기반 그래픽스 하드웨어를 차례로 사용하는 API 또는 명령을 인보크함으로써 장면의 컨텐츠를 설명하거나 정의할 수도 있다. 그래픽스 하드웨어는 이들 API 를 통해 수행되는 일련의 상태 전환을 경험할 수도 있다. 드로우 콜 (draw call) 과 같은 각 API 콜에 대한 상태의 풀 세트는, 이미지가 하드웨어에 의해 하나 이상의 삼각형과 같은 하나 이상의 그래픽스 프리미티브로부터 렌더링되는 프로세스를 설명할 수도 있다.
그래픽스 아티스트는 종종, 다양한 그래픽스 프리미티브를 생성함으로써 장면의 하나 이상의 부분을 정의할 수도 있다. 예를 들어, 그래픽스 아티스트는 장면의 구성 부분을 포함하는 3차원 (3D) 프리미티브 다각형 및/또는 텍스처 데이터를 생성하기 위해 디지털 컨텐츠 생성 (DCC) 툴을 사용할 수도 있다. 그 후, 이러한 데이터는 사용자에게 디스플레이될 최종 그래픽스 이미지를 생성하거나 렌더링하기 위해 그래픽스 애플리케이션으로 통합되고 하드웨어 그래픽스 디바이스의 컨텐츠-프로세싱 파이프라인내에서 프로세싱될 수도 있다. 다수의 상황에서, 상이한 아티스트가 단일 그래픽스 애플리케이션으로 결합될 필요가 있을 수도 있는 장면의 상이한 부분을 정의할 수도 있고, 이들 아티스트는 또한 서로 독립적으로 작업할 수도 있다. 또한, 아티스트는 종종, 프리미티브 다각형 및/또는 텍스처 데이터에 대한 변경을 행할 때 그래픽스 애플리케이션의 개발자와 통신하고 작업할 수도 있다.
일반적으로, 이러한 개시물은, 어느 그래픽스 명령들 및 관련된 그래픽스 데이터 (예를 들어, 다각형 데이터, 텍스처 데이터) 가 식별된 성능 이슈들과 관련될 수도 있는지를 애플리케이션 개발자 및/또는 그래픽스 아티스트가 식별하게 함으로써, 3차원 (3D) 장면과 같은 그래픽스 장면을 최적화하는 기술에 관한 것이다. 그 결과, 애플리케이션 개발자는 성능 이슈를 야기하는 애플리케이션내의 장면의 일부를 결정하거나, 이러한 이슈를 해결하기 위해 이러한 정보를 하나 이상의 아티스트에게 수동으로 통신하기 위해 타겟 디바이스 (예를 들어, 모바일 디바이스, 그래픽스 디바이스) 상에서 시행착오 프로세스를 사용할 필요가 없을 수도 있다. 대신에, 개발자는 성능 이슈를 식별하기 위해 시뮬레이션 환경을 사용할 수 있고, 이 시뮬레이션 환경은 이들 이슈를 야기했을 수도 있는 관련된 그래픽스 데이터를 자동으로 식별할 수 있다. 식별된 성능 이슈 및/또는 관련된 그래픽스 데이터는 해결을 위해 개발자 및/또는 대응하는 아티스트(들)에게 통신될 수도 있다. 아티스트는 또한, 통신된 정보를 그들의 원격 컴퓨팅 디바이스상에서 직접 볼 수도 있다.
일 양태에서, 방법은, 그래픽스 명령들의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스에 그래픽스 명령들을 매핑하기 위한 정보를 포함하는 매핑 정보를 외부 디바이스로부터 수신하는 단계, 및 그래픽스 명령들 내의 적어도 하나의 그래픽스 명령들과 관련된 성능 이슈를 식별하는 단계를 포함한다. 이 방법은, 적어도 하나의 그래픽스 명령들의 실행에 기초하여 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 매핑 정보를 사용하는 단계를 더 포함한다.
일 양태에서, 컴퓨터 판독가능한 매체는, 하나 이상의 프로세서로 하여금, 외부 디바이스로부터 그래픽스 명령들을 수신하게 하고, 그래픽스 명령들의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터에 그래픽스 명령들을 매핑하기 위한 정보를 포함하는 매핑 정보를 외부 디바이스로부터 수신하게 하고, 그래픽스 명령들내의 적어도 하나의 그래픽스 명령들의 실행과 관련된 성능 이슈를 식별하게 하며, 적어도 하나의 그래픽스 명령들의 실행에 기초하여 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 매핑 정보를 사용하게 하는 컴퓨터 실행가능한 명령을 포함한다.
일 양태에서, 디바이스가 디스플레이 디바이스 및 하나 이상의 프로세서를 포함한다. 하나 이상의 프로세서는, 외부 디바이스로부터 그래픽스 명령들을 수신하고, 그래픽스 명령들의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터에 그래픽스 명령들을 매핑하기 위한 정보를 포함하는 매핑 정보를 외부 디바이스로부터 수신하고, 그래픽스 명령들내의 적어도 하나의 그래픽스 명령들의 실행과 관련된 성능 이슈를 식별하며, 적어도 하나의 그래픽스 명령들의 실행에 기초하여 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 매핑 정보를 사용하도록 구성된다.
본 개시물에 설명된 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현되면, 소프트웨어는 마이크로프로세서, 응용 주문형 집적 회로 (ASIC), 필드 프로그램가능한 게이트 어레이 (FPGA), 또는 디지털 신호 프로세서 (DSP), 또는 다른 등가의 집적 또는 개별 로직 회로와 같은 하나 이상의 프로세서라 칭할 수도 있는 프로세서에서 실행될 수도 있다. 이 기술들을 실행하기 위한 명령을 포함하는 소프트웨어는 처음에, 컴퓨터 판독가능한 매체에 저장될 수도 있고, 프로세서에 의해 로딩 및 실행될 수도 있다.
따라서, 본 개시물은 또한, 프로세서로 하여금 본 개시물에 설명된 바와 같은 임의의 다양한 기술들을 수행하게 하기 위한 명령을 포함하는 컴퓨터 판독가능한 매체를 예상한다. 몇몇 경우에서, 컴퓨터 판독가능한 매체는 제조자에게 판매될 수도 있고/있거나 디바이스에서 사용될 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능한 매체를 포함할 수도 있고, 몇몇 경우에서는 패키징 머터리얼을 또한 포함할 수도 있다.
하나 이상의 양태의 상세가 아래의 상세한 설명 및 첨부한 도면에 설명된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면, 및 청구범위로부터 명백할 것이다.
도 1 은, 본 개시물의 일 양태에 따른, 매핑 및/또는 파티셔닝 정보에 따라 그래픽스 명령들, 상태 및/또는 성능 정보를 애플리케이션 컴퓨팅 디바이스에 제공할 수도 있는 그래픽스 디바이스를 예시하는 블록도이다.
도 2 는, 본 개시물의 일 양태에 따른, 도 1 에 도시된 그래픽스 프로세싱 시스템 및 애플리케이션 컴퓨팅 디바이스의 특정한 상세를 예시하는 블록도이다.
도 3 은, 본 개시물의 일 양태에 따른, 도 2 에 도시된 그래픽스 드라이버의 추가의 상세를 예시하는 블록도이다.
도 4a 는, 본 개시물의 일 양태에 따른, 하나 이상의 추가의 애플리케이션 컴퓨팅 디바이스에 커플링된 도 1 에 도시된 그래픽스 디바이스 및 애플리케이션 컴퓨팅 디바이스를 예시하는 블록도이다.
도 4b 는, 본 개시물의 일 양태에 따른, 도 4a 에 도시된 추가의 애플리케이션 컴퓨팅 디바이스 중 하나의 추가의 상세를 예시하는 블록도이다.
도 5 는, 본 개시물의 일 양태에 따른, 개별 그래픽스 명령들과 그래픽스 데이터 사이의 예시적인 매핑을 예시하는 개념도이다.
도 6 은, 본 개시물의 일 양태에 따른, 도 1 에 도시된 애플리케이션 컴퓨팅 디바이스 또는 도 4a 에 도시된 애플리케이션 컴퓨팅 디바이스 중 어느 하나에 의해 수행될 수도 있는 제 1 방법의 흐름도이다.
도 7 은, 본 개시물의 일 양태에 따른, 도 1 에 도시된 애플리케이션 컴퓨팅 디바이스 또는 도 4a 에 도시된 애플리케이션 컴퓨팅 디바이스 중 어느 하나에 의해 수행될 수도 있는 제 2 방법의 흐름도이다.
도 8 은, 본 개시물의 일 양태에 따른, 그래픽 윈도우에서 정보를 디스플레이하기 위해 디스플레이 디바이스에 커플링되는 그래픽스 디바이스의 예를 예시하는 개념도이다.
도 9 는, 본 개시물의 일 양태에 따른, 그래픽 윈도우 내에 정보를 디스플레이하는 디스플레이 디바이스에 커플링된 그래픽스 디바이스의 다른 예를 예시하는 개념도이다.
도 10 은, 본 개시물의 일 양태에 따른, 디스플레이 디바이스에 의해 제공된 스크린 영역의 4개의 파티션에 걸쳐 스팬할 수도 있는 그래픽스 데이터의 예를 예시하는 개념도이다.
도 11 은 본 개시물의 일 양태에 따른, 디스플레이 디바이스에 의해 제공될 수도 있는 스크린 영역 (270) 내의 텍스처 정보를 예시하는 개념도이다.
도 1 은, 본 개시물의 일 양태에 따른, 그래픽스 명령들 (30), 상태 및/또는 성능 정보 (32), 및 매핑/파티셔닝 정보 (33) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 제공할 수도 있는 그래픽스 디바이스 (2) 를 예시하는 블록도이다. 그래픽스 디바이스 (2) 는 자립형 디바이스일 수도 있거나 대형 시스템의 일부일 수도 있다. 예를 들어, 그래픽스 디바이스 (2) 는 (무선 모바일 핸드셋과 같은) 무선 통신 디바이스의 일부일 수도 있거나, 디지털 카메라, 비디오 카메라, 디지털 멀티미디어 플레이어, 개인 휴대 정보 단말기 (PDA), 비디오 게임 콘솔, 다른 비디오 디바이스, 또는 (텔레비전과 같은) 전용 시청 스테이션의 일부일 수도 있다. 그래픽스 디바이스 (2) 는 또한, 개인 컴퓨터 또는 랩탑 디바이스를 포함할 수도 있다. 그래픽스 디바이스 (2) 는 또한, 상술한 디바이스 중 일부 또는 전부에서 사용될 수도 있는 하나 이상의 집적 회로, 칩, 또는 칩세트에 포함될 수도 있다.
몇몇 경우에서, 그래픽스 디바이스 (2) 는 그래픽스 애플리케이션, 비디오 애플리케이션, 오디오 애플리케이션, 및/또는 다른 멀티미디어 애플리케이션과 같은 다양한 애플리케이션을 실행할 수도 있다. 예를 들어, 그래픽스 디바이스 (2) 는 그래픽스 애플리케이션, 비디오 게임 애플리케이션, 비디오 플레이백 애플리케이션, 디지털 카메라 애플리케이션, 인스턴트 메시징 애플리케이션, 비디오 화상회의 애플리케이션, 모바일 애플리케이션, 또는 비디오 스트리밍 애플리케이션에 사용될 수도 있다.
그래픽스 디바이스 (2) 는 다양한 상이한 데이터 타입 및 포맷을 프로세싱할 수도 있다. 예를 들어, 그래픽스 디바이스 (2) 는 더욱 상세히 후술하는 바와 같이, 정지 화상 데이터, 동화상 (비디오) 데이터, 또는 다른 멀티-미디어 데이터를 프로세싱할 수도 있다. 이미지 데이터는 컴퓨터 생성된 그래픽스 데이터를 포함할 수도 있다. 도 1 의 예에서, 그래픽스 디바이스 (2) 는 그래픽스 프로세싱 시스템 (4), (메모리를 포함할 수도 있는) 저장 매체 (8) 및, 디스플레이 디바이스 (6) 를 포함한다.
프로그램가능한 프로세서 (10, 12, 14 및 16) 는 그래픽스 프로세싱 시스템 (4) 내에 포함될 수도 있다. 프로그램가능한 프로세서 (10) 는 제어, 또는 범용 프로세서이다. 프로그램가능한 프로세서 (12) 는 그래픽스 프로세서이고, 프로그램가능한 프로세서 (14) 는 정점 (vertex) 프로세서이며, 프로그램가능한 프로세서 (16) 는 디스플레이 프로세서이다. 제어 프로세서 (10) 는 그래픽스 프로세서 (12), 정점 프로세서 (14), 및/또는 디스플레이 프로세서 (16) 를 제어할 수도 있다. 일 양태에서, 그래픽스 프로세싱 시스템 (4) 은 다른 형태의 멀티-미디어 프로세서를 포함할 수도 있다.
그래픽스 디바이스 (2) 에서, 그래픽스 프로세싱 시스템 (4) 은 저장 매체 (8) 및 디스플레이 디바이스 (6) 모두에 커플링된다. 저장 매체 (8) 는, 예를 들어, 동기 동적 랜덤 액세스 메모리 (SDRAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 임베디드 동적 랜덤 액세스 메모리 (eDRAM), 정적 랜덤 액세스 메모리 (SRAM), 또는 플래시 메모리와 같은 명령 및/또는 데이터를 저장할 수 있는 임의의 영구 또는 휘발성 메모리를 포함할 수도 있다. 디스플레이 디바이스 (6) 는 LCD (액정 디스플레이), 플라즈마 디스플레이 디바이스, 또는 다른 텔레비전 (TV) 디스플레이 디바이스와 같은 디스플레이를 위해 이미지 데이터를 디스플레이할 수 있는 임의의 디바이스일 수도 있다.
정점 프로세서 (14) 는 정점 정보를 관리하고 정점 변환을 프로세싱할 수 있다. 일 양태에서, 정점 프로세서 (14) 는 디지털 신호 프로세서 (DSP) 를 포함할 수도 있다. 그래픽스 프로세서 (12) 는 컴퓨터화된 그래픽스를 렌더링하고, 조작하며, 디스플레이하기 위해 활용된 전용 그래픽스 렌더링 디바이스일 수도 있다. 그래픽스 프로세서 (12) 는 다양한 복합 그래픽스 관련 알고리즘을 구현할 수도 있다. 예를 들어, 복합 알고리즘은 2차원 또는 3차원 컴퓨터화된 그래픽스의 표현에 대응할 수도 있다. 그래픽스 프로세서 (12) 는 디스플레이 디바이스 (6) 와 같은 디스플레이상에 복합 3차원 이미지를 생성하기 위해, 점, 선, 및 삼각형, 또는 다른 폴리곤 표면을 형성하는 것과 같은 다수의 소위 "프리미티브" 그래픽스 동작을 구현할 수도 있다.
그래픽스 프로세서 (12) 는 저장 매체 (8) 에 저장되는 명령을 수행할 수도 있다. 저장 매체 (8) 는 하나 이상의 그래픽스 드라이버 (18) 뿐만 아니라, (그래픽스 또는 비디오 애플리케이션과 같은) 애플리케이션에 대한 애플리케이션 명령 (21) 을 저장할 수 있다. 애플리케이션 명령 (21) 은 실행을 위해 저장 매체 (8) 로부터 그래픽스 프로세싱 시스템 (4) 으로 로딩될 수도 있다. 예를 들어, 제어 프로세서 (10), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상은 명령을 실행할 수도 있다. 일 양태에서, 애플리케이션 명령 (21) 은 공중을 통해 저장 매체 (8) 로 동적으로 다운로드가능한 하나 이상의 다운로드가능한 모듈을 포함할 수도 있다. 일 양태에서, 애플리케이션 명령 (21) 은 애플리케이션 개발자에 의해 생성된 애플리케이션 프로그래밍 인터페이스 (API) 명령으로부터 생성되거나 컴파일되는 2진 명령의 콜 스트림을 포함할 수도 있다.
그래픽스 드라이버 (18) 는 또한, 실행을 위해 저장 매체 (8) 로부터 그래픽스 프로세싱 시스템 (4) 으로 로딩될 수도 있다. 예를 들어, 제어 프로세서 (10), 그래픽스 프로세서 (12) 및 디스플레이 프로세서 (16) 중 하나 이상은 그래픽스 드라이버 (18) 로부터의 특정한 명령을 실행할 수도 있다. 하나의 예시적인 양태에서, 그래픽스 드라이버 (18) 는 그래픽스 프로세서 (12) 에 의해 로딩되고 실행된다. 이하, 그래픽스 드라이버 (18) 를 더 상세히 설명할 것이다.
저장 매체 (8) 는 또한, 그래픽스 데이터 매핑 정보 (23) 를 포함한다. 그래픽스 데이터 매핑 정보 (23) 는 애플리케이션 명령 (21) 중 하나 이상을 애플리케이션 명령 (21) 의 실행 동안 렌더링될 수도 있는 프리미티브 그래픽스 데이터에 매핑하기 위한 정보를 포함한다. 저장 매체 (8) 및/또는 버퍼 (15) 에 저장될 수도 있는 그래픽스 데이터는 하나 이상의 프리미티브 (예를 들어, 폴리곤) 를 포함할 수도 있고, 텍스처 데이터를 또한 포함할 수도 있다. 그래픽스 데이터 매핑 정보 (23) 는 애플리케이션 명령 (21) 내의 개별 명령에 렌더링될 개별 프리미티브의 매핑을 유지할 수도 있다. 프리미티브가 이들 개별 명령의 실행 동안 렌더링된 이후에, 매핑 정보 (23) 는 이들 정보로부터, 그래픽스 디바이스 (6) 상에 결국 디스플레이되는 하나 이상의 이미지를 렌더링하기 위해 사용되는 원래의 그래픽스 데이터로 역으로 매핑을 제공한다. 이하, 그래픽스 데이터 매핑 정보를 더 상세히 설명할 것이다.
도 1 에 또한 도시되어 있는 바와 같이, 그래픽스 프로세싱 시스템 (4) 은 하나 이상의 버퍼 (15) 를 포함한다. 제어 프로세서 (10), 그래픽스 프로세서(12), 정점 프로세서 (14) 및/또는 디스플레이 프로세서 (16) 는 각각 버퍼 (15) 에 액세스하고, 버퍼 (15) 에 데이터를 저장할 수도 있거나 버퍼 (15) 로부터 데이터를 검색할 수도 있다. 버퍼 (15) 는 캐시 메모리를 포함할 수도 있고, 데이터 및 명령 양자를 저장할 수도 있다. 예를 들어, 버퍼 (15) 는 저장 매체 (8) 로부터 그래픽스 프로세싱 시스템 (4) 으로 로딩된 그래픽스 드라이버 (18) 로부터 애플리케이션 명령 (21) 또는 하나 이상의 명령 중 하나 이상을 포함할 수도 있다. 버퍼 (15) 및/또는 저장 매체 (8) 는 또한, 명령 실행 동안 사용된 그래픽스 데이터를 포함할 수도 있다.
특정한 경우에서, 애플리케이션 명령 (21) 은 3D 그래픽스 애플리케이션과 같은 그래픽스 애플리케이션에 대한 명령을 포함할 수도 있다. 애플리케이션 명령 (21) 은 하나 이상의 그래픽스 이미지를 포함하는 그래픽스 장면의 컨텐츠를 설명하거나 정의하는 명령을 포함할 수도 있다. 애플리케이션 명령 (21) 이 그래픽스 프로세싱 시스템 (4) 으로 로딩되고 그래픽스 프로세싱 시스템 (4) 에 의해 실행될 때, 그래픽스 프로세싱 시스템 (4) 은 일련의 상태 천이를 경험할 수도 있다. 그래픽스 드라이버 (18) 내의 하나 이상의 명령은 또한, 애플리케이션 명령 (21) 의 실행 동안 디스플레이 디바이스 (6) 상에 그래픽스 이미지를 렌더링하거나 디스플레이하기 위해 실행될 수도 있다.
일 양태에서, 그래픽스 데이터 매핑 정보 (23) 는 애플리케이션 명령 (21) 의 실행 동안 획득될 수도 있고, 그 후, 저장 매체 (8) 내에 저장될 수도 있다. 애플리케이션 명령 (21) 은 그래픽스 오브젝트에 대한 하나 이상의 바인딩을 포함할 수도 있다. 각 바인딩은, 프리미티브 그래픽스 데이터 (예를 들어, 폴리곤 데이터, 텍스처 데이터) 를 나타내는 개별 그래픽스 오브젝트와 애플리케이션 명령 (21) 중 하나 이상 사이에 링크를 생성한다. 명령의 세트에 바인딩되는 프리미티브 그래픽스 데이터는, 이러한 명령의 세트의 실행 동안 그래픽스 이미지 데이터를 렌더링하기 위해 사용된다. 명령의 세트와 관련된 그래픽스 데이터 사이의 바인딩은 식별되고, 추출되며, 그래픽스 데이터 매핑 정보 (23) 내에 포함될 수도 있어서, 이러한 명령의 세트와 관련된 그래픽스 데이터 사이에 매핑을 생성한다.
드로우 콜과 같은 명령에 대한 상태의 풀 세트가, 이미지가 그래픽스 프로세싱 시스템 (4) 에 의해 렌더링되는 프로세스를 설명할 수도 있다. 그러나, 애플리케이션 명령 (21) 을 기록한 애플리케이션 개발자는 종종, 정의된 장면에서 이미지를 설명하거나 렌더링하는 대안의 방법으로 디버깅하거나 실험하기 위해 이들 상태를 대화형으로 보거나 변경하기 위한 제한된 능력을 가질 수도 있다. 또한, 상이한 하드웨어 플랫폼이 이들 상태 및/또는 천이의 상이한 하드웨어 설계 및 구현을 가질 수도 있다.
또한, 프로세서 (10, 12, 14, 및 16) 중 하나 이상과 같은 바인딩 기반 그래픽스 하드웨어는 종종, 렌더링을 위해 예정된 개별 프리미티브가 디스플레이 디바이스 (6) 의 장면상에 디스플레이된 이미지의 장면을 분할하기 위해 직사각형 형상의 비닝 (binning) 파티션, 또는 빈 (bin) 으로 클러스터되는 프로세스를 사용하여 구현될 수도 있다. 하드웨어는, 디스플레이 디바이스 (6) 의 스크린 사이즈 또는 해상도 제약에 기초하거나, 렌더링 동작과 관련된 저장 매체 (8) 의 메모리 제한에 기초하여 이것을 행할 수도 있다. 다중의 비닝 파티션에 걸쳐 스팬할 수도 있는 프리미티브는, 프리미티브 프래그먼트가 렌더링되기 이전에 파티션의 에지를 따라 프로세서 (10, 12, 14, 또는 16) 중 하나 이상에 의해 다중의 프래그먼트로 분할될 수도 있다. 그 후, 각 파티션에서의 프리미티브 프래그먼트는 개별적으로 렌더링될 수도 있다. 일반적으로, 비닝 파티션은, 하드웨어 아키텍처에 따라 수가 변화될 수도 있고, 다양한 사이즈 및 형상을 가질 수도 있다. 예를 들어, 비닝 파티션은 다중의 (예를 들어, 4개, 8개) 직사각형 형상 파티션을 포함할 수도 있다.
따라서, 예를 들어, 2개의 비닝 파티션에 걸쳐 스팬할 수도 있는 개별 프리미티브는 2개의 프래그먼트로 분할될 수도 있으며, 그 후, 이들 2개의 프래그먼트 각각은 독립적으로 렌더링될 수도 있다. 그러나, 이들 프래그먼트 각각에 의해 생성된 그래픽스 이미지는 그 후에, 디스플레이 디바이스 (6) 의 장면상에 디스플레이되기 이전에 이미지 데이터의 프레임내에서 재결합될 필요가 있을 수도 있다. 따라서, 다중의 비닝 파티션에 걸쳐 스팬하는 개별 프리미티브를 분할하는 것은, 잠재적인 프로세싱 오버헤드를 가질 수 있으며, 전체적인 성능을 초래할 수 있다.
일 양태에서, 애플리케이션 개발자는 장면에서 이미지를 설명하거나 렌더링하기 위한 대안의 방법으로 디버깅하고 실험하는 프로세싱을 보조하기 위해 도 1 에 도시된 애플리케이션 컴퓨팅 디바이스 (20) 를 사용할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는 하나 이상의 프로세서 (22), 디스플레이 디바이스 (24), 및 메모리를 포함할 수도 있는 저장 매체 (26) 를 포함한다. 프로세서 (22) 는 일 양태에 따라 제어 프로세서, 그래픽스 프로세서, 정점 프로세서, 및 디스플레이 프로세서 중 하나 이상을 포함할 수도 있다. 저장 매체 (26) 는 예를 들어, 동기 동적 랜덤 액세스 메모리 (SDRAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 정적 랜덤 액세스 메모리 (SRAM), 또는 플래시 메모리와 같은 명령 및/또는 데이터를 저장할 수 있는 임의의 영구 또는 휘발성 메모리를 포함할 수도 있다. 디스플레이 디바이스 (24) 는 LCD (액정 디스플레이), 플라즈마 디스플레이 디바이스, 또는 다른 텔레비전 (TV) 디스플레이 디바이스와 같은 디스플레이를 위해 이미지 데이터를 디스플레이할 수 있는 임의의 디바이스일 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽스 디바이스 (2) 로부터 전송되는 상태 및/또는 성능 정보 (32) 에 따라, 그래픽스 명령들 (30) 을 캡처하고 분석할 수 있다. 일 양태에서, 그래픽스 드라이버 (18) 는 그래픽스 명령들 (30) 및 상태/성능 정보 (32) 를 애플리케이션 컴퓨팅 디바이스 (20) 로 전송하도록 구성된다. 그래픽스 명령들 (30) 은 애플리케이션 명령 (21) 중 하나 이상을 포함할 수도 있으며, 상태/성능 정보 (32) 는 그래픽스 프로세싱 시스템 (4) 내에서 그래픽스 명령들 (30) 의 실행 동안 생성되거나 캡처될 수도 있다.
상태/성능 정보 (32) 는 명령 실행 동안 그래픽스 프로세싱 시스템 (4) 의 상태 및/또는 성능에 관한 정보를 포함하며, 이하 더욱 상세히 설명될 것이다. 상태/성능 정보 (32) 는 사용될 수도 있거나, 그렇지 않으면, 그래픽스 명령들 (30) 과 관련되는 그래픽스 데이터 (예를 들어, 프리미티브 및/또는 래스터화된 그래픽스 데이터) 를 포함할 수도 있다. 그래픽스 프로세싱 시스템 (4) 은 디스플레이 디바이스 (6) 상에 이미지 또는 이미지의 장면을 디스플레이하기 위해 그래픽스 명령들 (30) 을 실행할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 의 디스플레이 디바이스 (6) 상에 또한 나타나는 그래픽스 이미지 또는 장면을 재생성하기 위해 상태/성능 정보 (32) 에 따라 그래픽스 명령들 (30) 을 사용할 수 있다.
그래픽스 디바이스 (2) 는 또한, 매핑 및/또는 파티셔닝 정보 (33) 를 애플리케이션 컴퓨팅 디바이스 (20) 로 전송할 수도 있다. 일 양태에서, 그래픽스 드라이버 (18) 는 매핑/파티셔닝 정보 (33) 를 애플리케이션 컴퓨팅 디바이스 (20) 로 전송하도록 구성된다. 매핑/파티셔닝 정보 (33) 는 그래픽스 데이터를 그래픽스 명령들 (30) 내의 개별 명령에 매핑하기 위한 정보를 포함하는 그래픽스 데이터 매핑 정보 (23) 중 하나 이상을 포함할 수도 있다. 예를 들어, 매핑/파티셔닝 정보 (33) 는 하나 이상의 프리미티브 (예를 들어, 폴리곤) 또는 텍스처 데이터를 그래픽스 명령들 (30) 내의 개별 명령에 매핑하기 위한 정보를 포함할 수도 있다.
매핑/파티셔닝 정보 (33) 는 또한, 그래픽스 디바이스 (2) 에 의해 생성되고 제공되는 파티셔닝 정보를 포함할 수도 있다. 몇몇 경우에서, 이러한 파티셔닝 정보는 제어 프로세서 (10) 와 같은 프로세서 (10, 12, 14, 및 16) 중 하나 이상에 의해 생성되고 제공될 수도 있다. 파티셔닝 정보는 그래픽스 데이터를 하나 이상의 그래픽스 이미지로 렌더링하고, 이러한 이미지를 디스플레이 디바이스 (6) 상에 디스플레이하기 위해 그래픽스 프로세싱 시스템 (4) 내에서 사용될 수도 있는 비닝 파티션, 또는 빈의 개수, 타입, 사이즈, 및/또는 형상을 식별하는 정보를 포함할 수도 있다. 상술한 바와 같이, 그래픽스 디바이스 (2) 는 예를 들어, 렌더링 동작 동안 버퍼 (15) 및/또는 저장 매체 (8) 의 메모리 사이즈 제한에 기초하여, 스크린 공간, 또는 사이즈, 또는 디스플레이 디바이스 (6) 를 파티션으로 파티션할 수도 있다. 파티셔닝 정보는 생성되고 사용되는 파티션에 관한 정보를 제공한다.
시뮬레이션 애플리케이션 (28) 이 그래픽스 명령들 (30) 및 상태/성능 정보 (32) 의 수신시에 그래픽스 이미지 또는 장면을 재생성하고, 이미지, 또는 이미지의 장면을 디스플레이 디바이스 (24) 상에 디스플레이하기 위해 애플리케이션 컴퓨팅 디바이스 (20) 의 프로세서 (22) 에 의해 실행될 수도 있다. 시뮬레이션 애플리케이션 (28) 은 다수의 애플리케이션 명령을 포함하는 소프트웨어 모듈을 포함할 수도 있다. 시뮬레이션 애플리케이션 (28) 은 저장 매체 (26) 에 저장되며, 프로세서 (22) 에 의해 로딩되고 실행될 수도 있다. 시뮬레이션 애플리케이션 (28) 은 저장 매체 (26) 에 사전 로딩될 수도 있으며, 그래픽스 디바이스 (2) 와 동작하기 위해 커스터마이징될 수도 있다. 일 양태에서, 시뮬레이션 애플리케이션 (28) 은 그래픽스 디바이스 (2) 의 하드웨어 동작을 시뮬레이션한다. 상이한 버전의 시뮬레이션 애플리케이션 (28) 이 저장 매체 (26) 에 저장될 수도 있고, 상이한 하드웨어 설계를 갖는 상이한 그래픽스 디바이스에 대해 프로세서 (22) 에 의해 실행될 수도 있다. 몇몇 경우에서, 소프트웨어 라이브러리가 또한 시뮬레이션 애플리케이션 (28) 과 함께 사용되는 저장 매체 (26) 내에 저장될 수도 있다. 일 양태에서, 시뮬레이션 애플리케이션 (28) 은 일반 애플리케이션일 수도 있으며, 특정 하드웨어 또는 그래픽스 디바이스 시뮬레이션 기능이 실행 동안 시뮬레이션 애플리케이션 (28) 과 링크될 수도 있는 각 개별 라이브러리내에 포함될 수도 있다.
일 양태에서, 상태/성능 정보 (32) 의 시각 표현이 디스플레이 디바이스 (24) 상에서 애플리케이션 개발자에게 디스플레이될 수도 있다. 또한, 그래픽스 명령들 (30) 의 시각 표현이 또한 디스플레이될 수도 있다. 다수의 경우에서, 그래픽스 명령들 (30) 이 2진 명령을 포함하기 때문에, 애플리케이션 컴퓨팅 디바이스 (20) 는 디스플레이 디바이스 (24) 상에 그래픽스 명령들 (30) 의 시각 표현을 생성하기 위해 명령 매핑 정보 (31) 를 사용할 수도 있다. 명령 매핑 정보 (31) 는 저장 매체 (26) 내에 저장되고, 그래픽스 명령들 (30) 의 시각 표현을 디스플레이하기 위해 프로세서 (22) 로 로딩될 수도 있다.
일 양태에서, 명령 매핑 정보 (31) 는 그래픽스 명령들 (30) 을 생성할 때 이전에 컴파일되었을 수도 있는 대응하는 API 명령에 그래픽스 명령들 (30) 을 매핑하기 위해 룩업 테이블내에서와 같은 매핑 정보를 포함할 수도 있다. 애플리케이션 개발자는 API 명령을 사용하는 프로그램을 기록할 수도 있지만, 이들 API 명령은 통상적으로, 그래픽스 디바이스 (2) 상에서 실행을 위해 (애플리케이션 명령 (21) 내에 포함되는) 그래픽스 명령들 (30) 과 같은 2진 명령으로 컴파일된다. 그래픽스 명령들 (30) 내의 하나 이상의 명령은 개별 API 명령으로 매핑될 수도 있다. 그 후, 매핑된 API 명령은 디스플레이 디바이스 (24) 상에서 애플리케이션 개발자에게 디스플레이될 수도 있어서, 실제로 실행되는 그래픽스 명령들 (30) 의 시각 표현을 제공한다.
일 양태에서, 애플리케이션 개발자와 같은 사용자는 예를 들어, 성능에 대한 변경의 효과를 결정하기 위해 그래픽스 명령들 (30) 중 하나 이상을 변경하기를 원할 수도 있다. 이러한 양태에서, 사용자는 그래픽스 명령들 (30) 의 시각 표현을 변경할 수도 있다. 그 후, 이하 더욱 상세히 설명하는 바와 같이, 매핑 정보 (31) 가, 그래픽스 명령들 (30) 의 시각 표현내의 이들 변경을 요청된 변경 (34) 내에 있는 그래픽스 디바이스 (2) 로 역으로 제공될 수 있는 2진 정보에 매핑하기 위해 사용될 수도 있다.
상술한 바와 같이, 애플리케이션 컴퓨팅 디바이스 (20) 의 디스플레이 디바이스 (24) 상에 디스플레이되는 그래픽스 이미지는 그래픽스 디바이스 (2) 상에 디스플레이되는 이미지의 표현일 수도 있다. 시뮬레이션 애플리케이션 (28) 이 그래픽스 디바이스 (2) 상에 제공될 때 정확하게 이미지 또는 장면을 재생성하기 위해 그래픽스 명령들 (30) 및 상태/성능 정보 (32) 를 사용할 수도 있기 때문에, 애플리케이션 컴퓨팅 디바이스 (20) 를 사용하는 애플리케이션 개발자는 그래픽스 애플리케이션 (30) 의 실행 동안의 잠재적 성능 이슈 또는 장애, 및 심지어 원형 변경을 신속하게 식별하여, 그래픽스 애플리케이션 (30) 의 전체 성능을 개선시킬 수도 있다.
저장 매체 (26) 는 또한, 그래픽스 데이터 매핑 모듈 (25) 을 포함한다. 그래픽스 데이터 매핑 모듈 (25) 은 프로세서 (22) 에 의해 실행될 수도 있다. 그래픽스 데이터 매핑 모듈 (25) 은 그래픽스 명령들 (30) 내의 개별 명령을 폴리곤 또는 텍스처 데이터와 같은 특정 프리미티브 그래픽스 데이터에 매핑하기 위해 매핑/파티셔닝 정보 (33) 를 수신하고 프로세싱한다. 이러한 그래픽스 데이터는 상태/성능 정보 (32) 내에 포함될 수도 있다. 그래픽스 명령들 (30) 의 실행 동안, 시뮬레이션 애플리케이션 (28) 은, 명령의 특정 세트가 성능 이슈 또는 장애를 야기할 수도 있다는 것을 결정할 수도 있다. 이들 이슈 또는 장애는 예를 들어, 과도하게 높은 프로세서 사용 또는 활용에 기초할 수도 있다. 그 후, 그래픽스 데이터 매핑 모듈 (25) 은 이들 명령의 실행 동안 이미지 데이터를 렌더링하기 위해 사용될 수도 있는 그래픽스 데이터의 부분에 이러한 명령의 특정한 세트를 매핑하기 위해 매핑/파티셔닝 정보 (33) 를 사용할 수도 있다. 이러한 그래픽스 데이터의 부분은 식별된 성능 이슈와 관련될 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는 예를 들어, 이러한 정보를 디스플레이 디바이스 (24) 상에 디스플레이함으로써, 명령의 특정한 세트 및/또는 그래픽스 데이터의 부분을 식별하거나 디스플레이할 수도 있다. 이러한 방식에서, 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽스 명령들 (30) 의 실행 동안 하나 이상의 성능 이슈에 대한 원인일 수도 있는 프리미티브 그래픽스 데이터의 선택된 부분을 자동으로 식별하고 디스플레이할 수 있다. 그 후, 애플리케이션 개발자는 이들 이슈를 더욱 용이하고 효율적으로 다루거나 해결할 수도 있다. 또한, 애플리케이션 컴퓨팅 디바이스 (20) 는 이하 더욱 상세히 설명하는 바와 같이, 그래픽스 아티스트에 의해 사용된 하나 이상의 외부 디바이스로 성능 및/또는 매핑 정보를 자동으로 전송할 수 있어서, 이들 아티스트는 그들이 성능 이슈를 해결하기 위해 사용할 수도 있는 성능 및 그래픽스 데이터 정보에 용이하게 액세스할 수도 있다.
그렇지 않고, 매핑 정보를 사용하지 않으면, 그래픽스 데이터가 그래픽스 명령들의 실행시에 출력 이미지 데이터로 렌더링된 이후에 문제가 더욱 통상적으로 식별될 수도 있기 때문에, 실행 동안 특정한 문제와 관련되는 특정한 그래픽스 명령들에 관하여 그래픽스 아티스트에 의해 생성된 데이터와 같은 원래의 프리미티브 그래픽스 데이터의 부분을 식별하는 것이 어려울 수도 있다. 매핑 정보는 명령의 실행시에 임의의 이러한 나중에 식별된 문제에 대한 원인일 수도 있는 원래의 그래픽스 데이터로 매핑을 역으로 제공한다. 이들 문제는 예를 들어, 너무 많은 텍스처, 너무 많은 폴리곤 등에 의해 야기된 특정한 성능 이슈와 관련될 수도 있다. 애플리케이션 개발자 또는 아티스트는 원래의 그래픽스 데이터에 의해 야기된 잠재적 문제의 학습시에 원래의 그래픽스 데이터에서 텍스처 또는 폴리곤에 대한 특정한 변경 (예를 들어, 폴리곤을 이동시키고, 텍스처를 추가 또는 제거하고, 폴리곤을 재배열하는 것) 을 행하는 것을 선택할 수도 있다.
애플리케이션 개발자는, 애플리케이션 컴퓨팅 디바이스 (20) 상의 시뮬레이션 애플리케이션 (28) 의 실행 및 디스플레이 디바이스 (24) 상의 재생성된 이미지의 디스플레이 동안 그래픽스 명령들 (30) 및/또는 상태/성능 정보 (32) 에 대한 하나 이상의 요청된 변경 (34) 을 행하는 것을 선택할 수도 있다. 임의의 이러한 요청된 변경 (34) 은 그래픽스 명령들 (30) 의 실행 또는 상태/성능 정보 (32) 의 분석 동안, 관측된 성능 이슈, 또는 장애에 기초할 수도 있다. 그 후, 이들 요청된 변경 (34) 은 애플리케이션 컴퓨팅 디바이스 (20) 로부터 그래픽스 디바이스 (2) 로 전송될 수도 있으며, 여기서, 이들은 그래픽스 프로세싱 시스템 (4) 에 의해 프로세싱된다. 일 양태에서, 그래픽스 드라이버 (18) 중 하나 이상이 요청된 변경 (34) 을 프로세싱하기 위해 그래픽스 프로세싱 시스템 (4) 내에서 실행된다. 몇몇 경우에서, 요청된 변경 (34) 은 변경된 명령을 포함할 수도 있다. 몇몇 경우에서, 요청된 변경은 변경된 상태 및/또는 성능 정보를 포함할 수도 있다.
요청된 변경 (34) 의 프로세싱시에, 업데이트된 명령 및/또는 정보 (35) 가 예를 들어, 그래픽스 드라이버 (18) 중 하나 이상에 의해 애플리케이션 컴퓨팅 디바이스 (20) 로 되전송된다. 업데이트된 명령/정보 (35) 는 그래픽스 디바이스 (2) 에 의해 프로세싱되는 요청된 변경 (34) 에 기초한 실행을 위한 업데이트된 그래픽스 명령들을 포함할 수도 있다. 업데이트된 명령/정보 (35) 는 또한, 그래픽스 디바이스 (2) 에 의해 프로세싱되는 요청된 변경 (34) 에 기초한 업데이트된 상태 및/또는 성능 정보를 또한 포함할 수도 있다. 몇몇 경우에서, 업데이트된 명령/정보 (35) 는 그래픽스 데이터 매핑 정보 (23) 로부터의 업데이트된 매핑 정보를 또한 포함할 수도 있다.
업데이트된 명령 정보 (35) 는 디스플레이 디바이스 (24) 상의 재생성된 이미지 정보의 디스플레이를 업데이트하고, 업데이트된 명령/정보 (35) 의 시각 표현을 (명령 매핑 정보 (31) 를 다시 사용하는 것을 포함할 수도 있는) 애플리케이션 개발자에게 제공하기 위해 시뮬레이션 애플리케이션 (28) 에 의해 프로세싱된다. 그 후, 애플리케이션 개발자는, 성능 이슈가 해결되거나 완화되었는지를 결정하기 위해, 업데이트된 명령/정보 (35) 의 시각 표현 뿐만 아니라 디스플레이 디바이스 (24) 상의 업데이트된 이미지 정보를 볼 수도 있다. 애플리케이션 개발자는 그래픽스 명령들 (30) 또는 원형 변경을 디버그하여 전체 성능 그래픽스 애플리케이션 (30) 을 개선하기 위해 반복 프로세스를 사용할 수도 있다.
일 양태에서, 애플리케이션 컴퓨팅 디바이스 (20) 는 디스플레이 디바이스 (24) 상에 디스플레이된 그래픽스 이미지를 오버레이하는 파티션의 시각 그래픽 표현을 디스플레이하기 위해 매핑/파티셔닝 정보 (23) 를 사용한다. 이들 파티션은 이들 이미지를 포함하는 장면을 디스플레이 디바이스 (24) 상에서 분할한다. 예를 들어, 시뮬레이션 애플리케이션 (28) 은 매핑/파티션 정보 (33) 를 프로세싱하여 디스플레이 디바이스 (24) 의 장면상에 이들 파티션 (예를 들어, 다중의 직사각형 형상의 파티션) 의 그래픽 표현을 생성하기 위해 파티셔닝 모듈 (27) 을 사용할 수도 있다. 파티셔닝 모듈 (27) 은 저장 매체 (26) 로부터 로딩될 수도 있고 프로세서 (22) 에 의해 실행될 수도 있다. 실행될 때, 파티셔닝 모듈 (27) 은 또한, 그래픽스 데이터의 어느 부분들이 파티션들 중 다중의 파티션들과 관련되는지를 결정하기 위해 하나 이상의 그래픽스 이미지에 대해 상태/성능 정보 (32) 내에 포함될 수도 있는 그래픽스 데이터를 분석할 수도 있다. 예를 들어, 파티셔닝 모듈 (27) 은 이하 더욱 상세히 설명하는 바와 같이, 디스플레이 디바이스 (24) 상에 디스플레이하기 위해 그래픽스 이미지를 생성하는데 사용되는 하나 이상의 폴리곤을 분석할 수도 있으며, 이들 폴리곤들 중 어느 폴리곤들이 다중의 파티션들에 걸쳐 스팬할 수도 있는지를 결정할 수도 있다.
저장 매체 (26) 는 프로세서 (22) 에 의해 또한 실행될 수도 있는 네비게이션 모듈 (29) 을 더 포함한다. 시뮬레이션 애플리케이션 (28) 은, 실행 동안, 디스플레이 디바이스상에 네비게이션 제어기를 디스플레이하기 위해 네비게이션 모듈 (29) 을 사용할 수도 있다. 애플리케이션 개발자와 같은 사용자는 디스플레이 디바이스 (24) 상에 디스플레이되는 장면내의 그래픽스 이미지의 변경된 투시도를 보기 위해 이러한 네비게이션 제어기와 상호작용할 수도 있다. 그 후, 파티셔닝 모듈 (27) 은 변경된 장면을 그래픽적으로 분할하기 위해 그래픽스 이미지의 변경된 투시도를 오버레이하는 파티션의 그래픽 표현을 디스플레이할 수도 있다. 그 후, 파티셔닝 모듈 (27) 은 변경된 투시도에서 그래픽스 이미지를 생성하여 폴리곤들 중 어느 폴리곤들이 다중 파티션에 걸쳐 스팬할 수도 있는지를 결정하기 위해 하나 이상의 폴리곤을 분석할 수도 있다.
도 2 는 일 양태에 따른 도 1 에 도시된 그래픽스 프로세싱 시스템 (4) 및 애플리케이션 컴퓨팅 디바이스 (20) 의 특정한 상세를 예시하는 블록도이다. 도 2 에서, 애플리케이션 컴퓨팅 디바이스 (20) 가 디바이스 (2) 의 그래픽스 프로세싱 시스템 (4) 에 커플링된다는 것이 가정된다. 그러나, 이것은 예시 목적으로만 도시된다. 다른 시나리오에서, 애플리케이션 컴퓨팅 디바이스 (20) 는 다수의 다른 형태의 그래픽스 프로세싱 시스템 및 디바이스에 커플링될 수도 있다.
도 2 에 도시되어 있는 바와 같이, 그래픽스 프로세싱 시스템 (4) 은 도 1 에 또한 도시되어 있는 4개의 프로그램가능한 프로세서 : 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 를 포함한다. 제어 프로세서 (10) 는 정점 프로세서 (14), 그래픽스 프로세서 (12) 또는 디스플레이 프로세서 (16) 중 임의의 프로세서를 제어할 수도 있다. 다수의 경우에서, 이들 프로세서 (10, 12, 14, 및 16) 는 시스템 (4) 내의 그래픽스 프로세싱 파이프라인의 일부일 수도 있다.
제어 프로세서 (10) 는 이 파이프라인을 통해 데이터 명령 실행의 흐름의 하나 이상의 양태를 제어할 수도 있으며, 또한, 그래픽스 이미지에 대한 지오메트리 정보를 정점 프로세서 (14) 에 제공할 수도 있다. 정점 프로세서 (14) 는 프리미티브 지오메트리 형태에서 다중 정점에 따라 설명되거나 정의될 수도 있는 그래픽스 이미지의 정점 변환 또는 지오메트리 프로세싱을 관리할 수도 있다. 정점 프로세서 (14) 는 그래픽스 이미지에 대한 렌더링 또는 래스터화 동작을 수행할 수도 있는 그래픽스 프로세서 (12) 에 출력을 제공할 수도 있다. 그래픽스 프로세서 (12) 는 디스플레이를 위해 픽셀 형태로 그래픽스 이미지를 준비하는 디스플레이 프로세서 (16) 에 출력을 제공할 수도 있다. 그래픽스 프로세서 (12) 는 또한 셰이딩 또는 스케일링과 같은 픽셀 데이터에 대한 다양한 동작을 수행할 수도 있다.
종종, 그래픽스 이미지 데이터는 애플리케이션 명령 (21) (도 1) 의 일부일 수도 있는 그래픽스 명령들 (30) 의 실행 동안 이러한 프로세싱 파이프라인에서 프로세싱될 수도 있다. 그 결과, 그래픽스 명령들 (30) 은 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 의해 실행될 수도 있다. 통상적으로, 애플리케이션 개발자는, 그래픽스 프로세싱 시스템 (4) 내의 어느 특정한 프로세서가 그래픽스 명령들 (30) 중 어느 명령을 실행하는지의 많은 지식 또는 제어를 갖지 않을 수도 있다. 일부 경우에서, 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상은 그래픽스 명령들 (30) 의 실행 동안, 성능 이슈를 가질 수도 있거나, 프로세싱 파이프라인내에서 잠재적 장애로서 작용할 수도 있다. 이들 경우에서, 그래픽스 프로세싱 시스템 (4) 내의 전체 성능은 열화될 수도 있고, 애플리케이션 개발자는 성능을 개선하기 위해 그래픽스 명령들 (30) 을 변경하기를 원할 수도 있다. 그러나, 개발자는 프로세서들 (10, 12, 14, 또는 16) 중 어느 프로세서들이 성능 이슈를 갖는 프로세서들일 수도 있다는 것을 반드시 아는 것을 아닐 수도 있다.
특히, 프리미티브 그래픽스 데이터가 렌더링 이전에 다중의 비닝 파티션에 걸쳐 분할되는 비닝 기반 동작은 종종, 특정한 성능 이슈를 생성할 수도 있다. 예를 들어, (도 10 의 예에 도시된 삼각형 (266) 과 같은) 폴리곤이 2개의 상이한 파티션 (예를 들어, 도 10 에 도시된 파티션들 (256 및 258)) 에 걸쳐 스팬하는 경우에, 이 폴리곤은 각 폴리곤에 대해 하나씩 2개의 구성 프래그먼트로 분할될 수도 있고, 그 후, 이들 2개의 구성 프래그먼트는 픽셀 데이터를 포함하는 개별 그래픽스 이미지로 독립적으로 렌더링될 수도 있다. 그 후, 이들 2개의 개별 그래픽스 이미지는 삼각형 (266) 의 시각적 표현을 생성하기 위해 디스플레이하기 이전에 결합될 수도 있다. 2개의 관련 이미지에 대한 결합 동작을 따른, 삼각형 (266) 의 2개의 프래그먼트에 대한 독립적 렌더링 동작은 성능 오버헤드를 야기할 수 있다.
성능 장애 및 잠재적 솔루션을 식별하는 문제를 지원하기 위해, 그래픽스 디바이스 (2) 의 그래픽스 드라이버 (18A) 는 도 2 에 도시된 바와 같이, 그래픽스 프로세싱 시스템 (4) 으로부터 그래픽스 명령들 (30) 을 캡처하거나 수집할 수도 있고, 이들을 애플리케이션 컴퓨팅 디바이스 (20) 로 라우팅할 수도 있다. 그래픽스 드라이버 (18A) 는 도 1 에 도시된 그래픽스 드라이버 (18) 의 일부이다. 그래픽스 드라이버 (18A) 는 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 의해 로딩되고 실행될 수도 있다. 또한, 그래픽스 드라이버 (18A) 는 또한, 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상으로부터 상태 및/또는 성능 정보 (32) 를 수집할 수도 있고, 이러한 정보 (32) 를 애플리케이션 디바이스 (20) 로 또한 라우팅할 수도 있다. 일 양태에서, 그래픽스 드라이버 (18A) 는, 그래픽스 명령들 (30) 이 OpenGL ES API 명령으로부터 생성되거나 컴파일될 수도 있는 2진 명령을 포함할 때 OpenGL ES 드라이버를 포함할 수도 있다.
다양한 형태의 상태 데이터가 상태/성능 정보 (32) 내에 포함될 수도 있다. 예를 들어, 상태 정보는 그래픽스 명령들 (30) 의 실행 동안 사용되거나, 그렇지 않으면, 그래픽스 명령들 (30) 과 관련된 그래픽스 데이터를 포함할 수도 있다. 상태 데이터는 위치, 컬러, 좌표, 사이즈, 또는 가중치 데이터와 같은 정점 어레이에 관련될 수도 있다. 상태 데이터는 텍스처 상태 데이터, 포인트 상태 데이터, 라인 상태 데이터, 폴리곤 상태 데이터, 컬링 (culling) 상태 데이터, 알파 테스트 상태 데이터, 블렌딩 상태 데이터, 깊이 상태 데이터, 스텐실 상태 데이터, 또는 컬러 상태 데이터를 더 포함할 수도 있다. 상술한 바와 같이, 상태 데이터는 상태 정보 및 실제 데이터를 모두 포함할 수도 있다. 일부 경우에서, 상태 데이터는 하나 이상의 OpenGL 토큰과 관련된 데이터를 포함할 수도 있다.
다양한 형태의 성능 데이터가 또한 상태/성능 정보 (32) 내에 포함될 수도 있다. 일반적으로, 이러한 성능 데이터는 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상으로부터의 메트릭 또는 하드웨어 카운터 데이터를 포함할 수도 있다. 이 성능 데이터는 프레임 레이트 또는 사이클 데이터를 포함할 수도 있다. 이 사이클 데이터는 프로파일링, 커맨드 어레이, 정점 및 인덱스 데이터, 또는 다른 동작을 위해 사용된 사이클에 대한 데이터를 포함할 수도 있다. 다양한 양태에서, 다양한 형태의 상태 및 성능 데이터는 그래픽스 드라이버 (18A) 에 의해 그래픽스 프로세싱 시스템 (4) 으로부터 수집되는 상태/성능 정보 (32) 내에 포함될 수도 있다.
이전에 설명한 바와 같이, 애플리케이션 컴퓨팅 디바이스 (20) 는 수신된 그래픽스 명령들 (30) 및 상태/성능 정보 (32) 에 따라 그래픽스 이미지의 표현을 디스플레이할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는 또한, 상태/성능 정보 (32) 의 시각 표현을 디스플레이할 수도 있다. 상태/성능 정보 (32) 의 재생성된 그래픽스 이미지 및/또는 시각 표현을 뷰잉하고 이와 상호작용함으로써, 애플리케이션 개발자는 그래픽스 명령들 (30) 의 실행 동안 그래픽스 디바이스 (2) 의 그래픽스 프로세싱 시스템 (4) 내의 성능 이슈를 신속하게 식별하고 해결할 수도 있다. 예를 들어, 애플리케이션 개발자는 프로세서들 (10, 12, 14) 중 어느 특정한 프로세서들이 성능 이슈를 가질 수도 있는지를 식별할 수도 있다.
또한, 그래픽스 드라이버 (18A) 는 매핑 및/또는 파티셔닝 정보 (33) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 또한 제공한다. 도 1 을 참조하여 이전에 설명한 바와 같이, 파티셔닝 모듈 (27) 은 장면을 그래픽적으로 분할하기 위해 장면에서 그래픽스 이미지를 오버레이하는 디스플레이 디바이스 (24) 상에 파티션의 그래픽적 표현을 디스플레이하도록 수신된 매핑/파티셔닝 정보 (33) 를 프로세싱할 수도 있다. 파티셔닝 모듈 (27) 은 또한, 상태/성능 정보 (32) 내에 포함될 수도 있는 그래픽스 데이터를 분석하여, 데이터의 어느 부분들이 파티션들 중 다중의 파티션과 관련되는지를 결정하기 위해 매핑/파티셔닝 정보 (33) 를 사용할 수도 있다.
또한, 매핑/파티셔닝 정보 (33) 는 하나 이상의 그래픽스 이미지를 생성하기 위해 사용될 수도 있는 그래픽스 데이터를 그래픽스 명령들 (30) 내의 식별된 명령에 매핑하는 매핑 정보를 포함할 수도 있다. 예를 들어, 매핑/파티셔닝 정보 (33) 는 그래픽스 명령들 (30) 중 하나 이상을 폴리곤 또는 텍스처 데이터와 같은 프리미티브 그래픽스 데이터의 부분에 매핑하기 위한 정보를 포함할 수도 있다. 식별된 성능 이슈가 이들 하나 이상의 명령과 관련되는 것으로 결정되면, 매핑 정보는 하나 이상의 명령의 실행 동안 이러한 성능 이슈와 또한 관련될 수도 있는 그래픽스 데이터의 부분을 결정하기 위해 사용될 수도 있다. 통상적으로, 실행시에, 이들 하나 이상의 명령은 그래픽스 데이터의 부분을 이미지 데이터로 렌더링한다. 따라서, 렌더링이 완료되고 이미지 데이터가 디스플레이된 이후에, 이러한 매핑 정보를 사용하지 않고 이슈와 관련된 원래의 그래픽스 데이터를 식별하는 것을 어려울 수도 있다.
임의의 식별된 이슈에 대한 차선책 (workaround) 또는 해결방안을 식별하기 위한 시도에서, 개발자는 애플리케이션 컴퓨팅 디바이스 (20) 상에서 하나 이상의 요청된 변경 (34) 을 개시할 수도 있다. 예를 들어, 개발자는 요청된 변경 (34) 을 생성하기 위해 상태/성능 정보 (32) 의 재생성된 이미지 또는 표현과 상호작용할 수도 있다. 일부 경우에서, 개발자는 요청된 변경 (34) 을 생성하기 위해, 더욱 상세히 후술하는 바와 같이, 상태/성능 정보 (34) 를 심지어 직접 변경할 수도 있다. 특정한 경우에서, 요청된 변경 (34) 은 그래픽스 디바이스 (2) 의 그래픽스 프로세싱 시스템 (4) 에서 그래픽스 명령들 (30) 중 하나 이상의 실행을 디스에이블하기 위한 하나 이상의 요청을 포함할 수도 있거나, 그래픽스 명령들 (30) 중 하나 이상을 변경하기 위한 요청을 포함할 수도 있다.
일부 경우에서, 사용자는 그래픽스 장면의 변경된 투시도가 디스플레이되는 것을 요청하기 위해 디스플레이 디바이스 (24) 상에 디스플레이된 네비게이션 제어기와 상호작용할 수도 있다. 네비게이션 모듈 (29) 은 이러한 네비게이션 제어기의 디스플레이 및 이러한 네비게이션 제어기와의 상호작용을 관리할 수도 있다. 사용자 인터페이스를 통해 사용자에 의해 입력된 임의의 요청은 요청된 변경 (34) 에 포함될 수도 있다.
요청된 변경 (34) 은 애플리케이션 컴퓨팅 디바이스 (20) 로부터, 동작 동안 그래픽스 디바이스 (2) 에 대한 요청을 처리하는 그래픽스 드라이버 (18A) 로 전송된다. 다수의 경우에서, 요청된 변경 (34) 은 그래픽스 명령들 (30) 의 실행 동안 그래픽스 프로세싱 시스템 (4) 내의 프로세서들 (10, 12, 14 또는 16) 중 하나 이상내에서, 데이터를 포함할 수도 있는 상태 정보를 변경하기 위한 요청을 포함할 수도 있다. 그 후, 그래픽스 드라이버 (18A) 는 요청된 변경 (34) 내에 포함되는 그래픽스 프로세싱 시스템 (4) 내의 변경을 구현할 수도 있다. 이들 변경은 그래픽스 명령들 (30) 의 실행을 위해 프로세서들 (10, 12, 14 및/또는 16) 중에서 실행의 흐름을 변경할 수도 있다. 특정한 경우에서, 그래픽스 명령들 (30) 중 하나 이상은 요청된 변경 (34) 에 따라 그래픽스 프로세싱 시스템 (4) 에서의 실행 동안 디스에이블될 수도 있다.
그래픽스 드라이버 (18A) 는 요청된 변경 (34) 의 프로세싱에 응답하여 업데이트된 명령 및/또는 정보 (35) 를 애플리케이션 컴퓨팅 디바이스 (20) 로 전송할 수 있다. 업데이트된 명령/정보 (35) 는 그래픽스 드라이버 (18A) 에 의해 그래픽스 프로세싱 시스템 (4) 으로부터 수집되고, 성능 정보를 포함하는 업데이트된 상태 정보를 포함할 수도 있다. 업데이트된 명령/정보 (35) 는 업데이트된 그래픽스 명령들 및/또는 그래픽스 데이터를 포함할 수도 있다. 일부 경우에서, 업데이트된 명령/정보 (35) 는 또한, 업데이트된 명령을 원래의 (프리미티브) 그래픽스 데이터에 매핑하기 위해 그래픽스 데이터 매핑 정보 (23) 로부터의 업데이트된 매핑 정보를 포함할 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는 업데이트된 명령/정보 (35) 의 시각 표현 뿐만 아니라 그래픽스 이미지의 업데이트된 표현을 디스플레이하기 위해 업데이트된 명령/정보 (35) 를 사용할 수도 있다. 그 후, 애플리케이션 개발자는 이전에 식별된 성능 이슈가 해결되었는지 또는 그렇지 않으면 다루어지고 있는지를 확인할 수도 있다. 예를 들어, 애플리케이션 개발자는 특정한 텍스처, 폴리곤, 또는 다른 특징들이 최적화되었는지, 또는 다른 성능 파라미터들이 개선되었는지를 결정하기 위해 업데이트된 명령/정보 (35) 의 시각 표현 뿐만 아니라 업데이트된 이미지를 분석할 수도 있다.
업데이트된 명령/정보 (35) 는 또한, 그 명령/정보 (35) 내에 또한 포함되는 명령에 대한 그래픽스 데이터의 업데이트된 매핑과 같은, 업데이트된 매핑 및/또는 포지셔닝 정보를 포함할 수도 있다. 장면의 업데이트된 투시도가 업데이트된 명령/정보 (35) 의 결과로서 디스플레이 디바이스 (24) 상에 디스플레이되는 경우에, 파티셔닝 모듈 (27) 은 변경된 투시도를 오버레이하고, 변경된 장면을 그래픽적으로 분할하는 파티션의 그래픽 표현을 디스플레이할 수도 있다. 파티셔닝 모듈 (27) 은 또한, 그래픽스 데이터 중 어느 부분이 파티션들 중 다중의 파티션들과 관련되는지를 결정하기 위해 (업데이트된 명령/정보 (35) 내에 또한 포함될 수도 있는) 변경된 투시도에 대한 그래픽스 데이터를 분석할 수도 있다.
이러한 방식으로, 애플리케이션 개발자는 그래픽스 디바이스 (2) 상의 그래픽스 프로세싱 시스템 (4) 의 동작을 시뮬레이션하는 애플리케이션 컴퓨팅 디바이스 (20) 에 대한 환경내에서 그래픽스 명령들 (30) 의 실행을 신속하게 그리고 효율적으로 디버그 또는 분석할 수도 있다. 개발자는 장면 또는 다중의 이미지 프레임에서 다중의 그래픽스 이미지를 분석하여 그래픽스 명령들 (30) 의 실행 성능을 최대화하기 위해 애플리케이션 컴퓨팅 디바이스 (20) 상의 디스플레이된 이미지 및 상태/성능 정보와 반복적으로 상호작용할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 상의 디스플레이된 정보 및 이러한 상호작용의 예들이 이하 더욱 상세히 제공될 것이다.
도 3 은 일 양태에 따른, 도 2 에 도시된 그래픽스 드라이버 (18A) 의 추가의 상세를 예시하는 블록도이다. 상술한 바와 같이, 그래픽스 드라이버 (18A) 는 (예를 들어, 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 의한 것과 같이) 그래픽스 프로세싱 시스템 (4) 내에서 실행될 수 있는 명령을 포함할 수도 있고, 그래픽스 드라이버 (18) 의 일부일 수도 있다. 그래픽스 드라이버 (18A) 의 실행은 그래픽스 프로세싱 시스템 (4) 이 애플리케이션 컴퓨팅 디바이스 (20) 와 통신할 수 있게 한다. 일 양태에서, 그래픽스 드라이버 (18A) 는 그래픽스 프로세싱 시스템 (4) 내에서 실행될 수 있는 명령을 포함할 수도 있고, 그래픽스 드라이버 (18) 의 일부일 수도 있다.
실행될 때, 그래픽스 드라이버 (18A) 는 전송 인터페이스 모듈 (110), 프로세서 사용 모듈 (112), 하드웨어 카운터 모듈 (114), 다른 상태 및/또는 성능 데이터를 관리할 수 있는 상태/성능 데이터 모듈 (116), API 트레이스 모듈 (118), 및 오버라이드 모듈 (120) 로서 도 3 에 도시된 다양한 기능 블록을 포함한다. 그래픽스 드라이버 (18A) 는 애플리케이션 컴퓨팅 디바이스 (20) 와 통신하기 위해 전송 인터페이스 모듈 (110) 을 사용한다.
프로세서 사용 모듈 (112) 은 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 대한 프로세서 사용 정보를 수집하여 유지한다. 프로세서 사용 정보는 프로세싱 사이클 및/또는 성능 정보를 포함할 수도 있다. 사이클 데이터는 프로파일링, 커맨드 어레이, 정점 및 인덱스 데이터, 또는 다른 동작을 위해 사용된 사이클에 대한 데이터를 포함할 수도 있다. 그 후, 프로세서 사용 모듈 (112) 은 전송 인터페이스 모듈 (110) 을 통해 이러한 프로세서 사용 정보를 애플리케이션 컴퓨팅 디바이스 (20) 에 제공할 수도 있다. 일부 경우에서, 프로세서 사용 모듈 (112) 은 비동기 방식으로 정보를 수신할 때 이러한 정보를 디바이스 (20) 에 제공한다. 다른 경우에서, 프로세서 사용 모듈 (112) 은 디바이스 (20) 로부터 요청의 수신시에 정보를 제공할 수도 있다.
하드웨어 카운터 모듈 (114) 은 제어 프로세서 (10), 정점 프로세서 (14), 그래픽스 프로세서 (12), 또는 디스플레이 프로세서 (16) 중 하나 이상에 의한 명령의 실행 동안 다양한 하드웨어 카운터를 수집하고 유지한다. 이 카운터는 그래픽스 프로세싱 시스템 (4) 내의 명령 실행에 관한 다양한 상태 표시자 및/또는 메트릭에 대해 계속 트랙할 수도 있다. 하드웨어 카운터 모듈 (114) 은 비동기적으로 또는 요청시에 정보를 디바이스 (20) 에 제공할 수도 있다.
상태/성능 데이터 모듈 (116) 은 그래픽스 프로세싱 시스템 (4) 에서의 제어 프로세서 (10), 그래픽스 프로세서 (12), 정점 프로세서 (14), 및 디스플레이 프로세서 (16) 중 하나 이상에 대한 다른 상태 및/또는 성능 데이터를 수집하여 유지한다. 예를 들어, 상태 데이터는 일부 경우에서, 그래픽스 데이터를 포함할 수도 있다. 상태 데이터는 포지션, 컬러, 좌표, 사이즈, 또는 가중치 데이터와 같은 정점 어레이에 관한 데이터를 포함할 수도 있다. 상태 데이터는 텍스처 상태 데이터, 포인트 상태 데이터, 라인 상태 데이터, 폴리곤 상태 데이터, 컬링 상태 데이터, 알파 테스트 상태 데이터, 블렌딩 상태 데이터, 깊이 상태 데이터, 스텐실 상태 데이터, 또는 컬러 상태 데이터를 더 포함할 수도 있다. 성능 데이터는 다양한 다른 메트릭 또는 사이클 데이터를 포함할 수도 있다. 상태/성능 데이터 모듈 (116) 은 비동기적으로 또는 요청시에 정보를 디바이스 (20) 에 제공할 수도 있다.
매핑/파티셔닝 모듈 (117) 은 제어 프로세서 (10), 그래픽스 프로세서 (12), 정점 프로세서 (14), 및 디스플레이 프로세서 (16) 중 하나 이상으로부터 매핑 및/또는 파티셔닝 정보 (33) 를 수집하고, 그래픽스 데이터 매핑 정보 (23) (도 1) 로부터 정보를 또한 수집할 수도 있다. 매핑 정보는 디스플레이용 그래픽스 이미지를 생성하기 위해 렌더링되는 그래픽스 데이터의 식별된 부분을 그래픽스 명령들 (30) 중 하나 이상에 매핑하기 위한 정보를 포함할 수도 있다. 이러한 매핑 정보는 출력 이미지를 렌더링하기 위해 사용된 원래의 그래픽스 데이터로 역으로 개별 명령을 매핑하는데 유용할 수도 있다. 파티셔닝 정보는 렌더링 이전에 그래픽스 데이터를 구성 프래그먼트로 스플릿할 때 그래픽스 프로세싱 시스템 (4) 내에서 생성되고 사용되는 파티션의 수, 타입, 사이즈, 형상 등을 식별하는 정보를 포함할 수도 있다. 매핑/파티셔닝 모듈 (117) 은 매핑/파티셔닝 정보 (33) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 제공할 수도 있다.
API 트레이스 모듈 (118) 은 그래픽스 프로세싱 시스템 (4) 에 의해 실행되고, 전송 인터페이스 모듈 (110) 을 통해 애플리케이션 컴퓨팅 디바이스 (20) 로 전송되는 그래픽스 명령들의 흐름 및/또는 트레이스를 관리한다. 상술한 바와 같이, 그래픽스 디바이스 (2) 는, 그래픽스 디바이스의 프로세싱 파이프라인에서 그래픽스 프로세싱 시스템 (4) 에 의해 실행되는 그래픽스 명령들 (30) 의 카피를 디바이스 (20) 에 제공한다. API 트레이스 모듈 (118) 은 이들 그래픽스 명령들 (30) 의 캡처 및 전송을 관리한다. API 트레이스 모듈 (118) 은 또한, 그래픽스 명령들 (30) 을 생성하기 위해 사용될 수도 있는 API 명령과 같은 그래픽스 명령들 (30) 의 시각적 표현에 그래픽스 명령들 (30) 을 매핑하기 위해 명령 매핑 정보 (31) 와 사용된 특정한 정보를 제공할 수도 있다.
오버라이드 모듈 (120) 은 그래픽스 드라이버 (18A) 가 그래픽스 프로세싱 시스템 (4) 내에서 특정 명령의 실행을 변경하거나 오버라이드하는 것을 허용한다. 상술한 바와 같이, 애플리케이션 컴퓨팅 디바이스 (20) 는 변경 (34) 과 같은 하나 이상의 요청된 변경을 그래픽스 디바이스 (2) 로 전송할 수도 있다. 특정한 경우에서, 요청된 변경 (34) 은 그래픽스 프로세싱 시스템 (4) 에서 그래픽스 명령들 (30) 중 하나 이상의 실행을 디스에이블하기 위한 하나 이상의 요청, 또는 그래픽스 명령들 (30) 중 하나 이상을 변경하기 위한 요청을 포함할 수도 있다. 일부 경우에서, 요청된 변경 (34) 은 상태/성능 정보 (32) 를 변경하기 위한 요청을 포함할 수도 있다.
오버라이드 모듈 (120) 은 요청된 변경 (34) 을 수용하고 프로세싱할 수도 있다. 예를 들어, 오버라이드 모듈 (120) 은 상태/성능 정보 (32) 를 변경하기 위한 임의의 요청과 함께 그래픽스 명령들 (30) 중 하나 이상을 변경하기 위한 임의의 요청을 디바이스 (20) 로부터 수신할 수도 있고, 이러한 요청을 그래픽스 프로세싱 시스템 (4) 으로 전송할 수도 있다. 그 후, 제어 프로세서 (10), 그래픽스 프로세서 (12), 정점 프로세서 (14), 및 디스플레이 프로세서 (16) 중 하나 이상은, 이들 요청을 프로세싱할 수도 있고, 업데이트된 명령/정보 (35) 를 생성할 수도 있다. 그 후, 오버라이드 모듈 (120) 은 상술한 바와 같이, 업데이트된 명령/정보 (35) 를 프로세싱을 위해 애플리케이션 컴퓨팅 디바이스 (20) 로 전송할 수도 있다.
이러한 방식으로, 그래픽스 드라이버 (18A) 는 그래픽스 디바이스 (2) 와 애플리케이션 컴퓨팅 디바이스 (20) 사이에 인터페이스를 제공한다. 그래픽스 드라이버 (18A) 는 그래픽스 명령들 및 상태/성능 정보 (32) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 제공할 수 있으며, 또한, 요청된 변경 (34) 을 애플리케이션 컴퓨팅 디바이스 (20) 로부터 수신할 수 있다. 이러한 요청된 변경 (34) 을 프로세싱한 이후에, 그래픽스 드라이버 (18A) 는 실질적으로, 업데이트된 명령/정보 (35) 를 애플리케이션 컴퓨팅 디바이스 (20) 로 역으로 제공할 수 있다.
도 4a 는 일 양태에 따른, 하나 이상의 추가의 애플리케이션 컴퓨팅 디바이스 (40A-40N) 에 커플링된 도 1 에 도시된 그래픽스 디바이스 (2) 와 애플리케이션 컴퓨팅 디바이스 (20) 를 예시하는 블록도이다. 이러한 양태에서, 그래픽스 디바이스 (2) 는 도 1 에 도시된 바와 같이 애플리케이션 컴퓨팅 디바이스 (20) 에 커플링되고, 애플리케이션 컴퓨팅 디바이스 (20) 는 애플리케이션 개발자로서 사용될 수도 있다. 상술한 바와 같이, 그래픽스 디바이스 (2) 는 애플리케이션 컴퓨팅 디바이스 (20) 에 그래픽스 명령들, 상태/성능 정보, 및 매핑/파티셔닝 정보를 전송할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 에 하나 이상의 요청된 변경을 전송할 수도 있다.
또한, 애플리케이션 컴퓨팅 디바이스 (20) 는 하나 이상의 추가 애플리케이션 컴퓨팅 디바이스 (40A-40N) 에 커플링된다. 애플리케이션 컴퓨팅 디바이스 (40A-40N) 는 그래픽스 애플리케이션에 대한 그래픽스 명령들의 실행 동안 출력 그래픽스 이미지 데이터를 렌더링하기 위해 사용될 수도 있는 프리미티브 그래픽스 데이터를 생성하는 그래픽스 아티스트에 의해 사용될 수도 있다. 각 아티스트는 다른 아티스트와는 독립적으로 작업할 수도 있으며, 따라서, 애플리케이션 컴퓨팅 디바이스 (40A-40N) 는 개별 위치에 위치된 독립 디바이스를 포함할 수도 있다.
예를 들어, 애플리케이션 컴퓨팅 디바이스 (40A) 는 캐나다에 위치된 아티스트에 의해 사용될 수도 있다. 애플리케이션 컴퓨팅 디바이스 (40N) 는 미국 (예를 들어, 시카고) 에 위치된 아티스트에 의해 사용될 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는 이러한 예에서, 무선 또는 네트워크 접속 (예를 들어, 인터넷 접속) 을 경유에서와 같이, 애플리케이션 컴퓨팅 디바이스 (40A 및 40N) 중 어느 하나 또는 모두와 통신할 수도 있다. 다수의 경우에서, 애플리케이션 컴퓨팅 디바이스 (20) 및 애플리케이션 컴퓨팅 디바이스 (40A-40N) 는 개인 컴퓨팅 디바이스를 포함할 수도 있고, 이들 디바이스는 보안 네트워크 접속과 같은 네트워크 접속을 통해 통신할 수도 있다. 특정한 경우에서, 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 와 공동 위치될 수도 있지만, 애플리케이션 컴퓨팅 디바이스 (40A-40N) 로부터 원격 위치될 수도 있다. 예를 들어, 애플리케이션 컴퓨팅 디바이스 (40A) 가 캐나다에 위치되고, 애플리케이션 컴퓨팅 디바이스 (40N) 가 시카고에 위치되면, 애플리케이션 컴퓨팅 디바이스 (20) 및 그래픽스 디바이스 (2) 는 캘리포니아에 위치될 수도 있다.
컴퓨팅 디바이스 (20) 를 사용하는 애플리케이션 개발자가 컴퓨팅 디바이스 (40A-40N) 를 사용하는 아티스트와 공동 위치되지 않을 수도 있기 때문에, 애플리케이션 개발자가 이들 아티스트와 상호작용하거나 통신하는 것이 항상 용이하지 않을 수도 있다. 특히, 컴퓨팅 디바이스 (20) 를 사용하는 애플리케이션 개발자가 그래픽스 명령들의 실행 동안 하나 이상의 성능 이슈를 식별하면, 개발자가 이들 이슈를 아티스트에게 통신하거나, 성능 이슈를 야기할 수 있는 이들 아티스트에 의해 생성된 그래픽스 데이터의 부분에 관한 특정 정보를 아티스트에게 제공하는 것이 항상 용이하지 않을 수도 있다. 본 개시물의 다양한 양태에 따르면, 컴퓨팅 디바이스 (20) 는 이러한 정보를 컴퓨팅 디바이스 (40A-40N) 에게 자동으로 제공할 수 있어서, 아티스트는 성능 정보를 리뷰할 수 있으며, 또한, 성능 문제의 원인일 수도 있는, 아티스트가 생성한 그래픽스 데이터의 부분을 신속하게 식별할 수 있다. 이들 아티스트는 또한, 그래픽스 데이터에 대한 변경을 수행할 수도 있으며, 이들 변경이 성능에 얼마나 영향을 미칠 수도 있는지 또는 어떤 성능 이슈를 해결할 수도 있는지를 결정할 수도 있다.
도 4a 에 도시되어 있는 바와 같이, 컴퓨팅 디바이스 (20) 는 그래픽스 정보, 상태/성능 정보, 및 매핑/파티셔닝 정보를 컴퓨팅 디바이스 (40A-40N) 각각으로 전송할 수도 있다. 예를 들어, 컴퓨팅 디바이스 (20) 는 그래픽스 명령들 (30) (도 1), 상태/성능 정보 (32), 및 매핑/파티셔닝 정보 (33) 를 (그래픽스 디바이스 (2) 로부터 이전에 수신한) 컴퓨팅 디바이스 (40A-40N) 로 전송할 수도 있다. 각 컴퓨팅 디바이스 (40A-40N) 는 렌더링된 이미지 데이터의 시각적 표현을 생성하기 위해 수신된 명령 및 정보를 사용할 수도 있고, 상태 및 성능 정보를 또한 디스플레이할 수도 있다. 일부 경우에서, 각 컴퓨팅 디바이스 (40A-40N) 는 그래픽적 장면에 오버레이하는 그래픽적 파티션의 표현을 디스플레이할 수도 있어서, 아티스트는 파티션의 디스플레이, 및 이러한 파티션이 장면을 어떻게 분할하는지를 볼 수 있다. 또한, 각 컴퓨팅 디바이스 (40A-40N) 는 임의의 식별된 성능 이슈와 관련되는 그래픽스 명령들을, 대응하는 아티스트에 의해 생성된 원래의 프리미티브 그래픽스 데이터의 특정한 부분에 매핑하기 위해 수신된 정보를 또한 분석할 수도 있다. 이러한 방식으로, 아티스트는 명령 실행에 기초하여 성능 정보를 리뷰할 수 있으며, 아티스트에 의해 생성된 그래픽스 데이터의 어느 부분이 특정한 성능 이슈와 관련되거나, 그 특정한 성능 이슈의 원인일 수도 있는지를 신속하게 식별할 수 있다. 성능 이슈는 특정한 텍스처의 사이즈, 특정한 폴리곤의 사이즈, 블렌딩의 양 등에 관련될 수도 있다.
임의의 개별 아티스트는 그래픽스 데이터의 이들 식별된 부분에 대해 하나 이상의 변경을 수행하기를 원할 수도 있다. 예를 들어, 식별된 성능 이슈가 텍스처의 사이즈와 관련되면, 아티스트는 텍스처의 조절을 원할 수도 있다. 다른 식별된 성능 이슈가 특정한 폴리곤의 사이즈와 관련되면, 아티스트는 성능 이슈를 어드레싱하고, 해결하거나 그렇지 않으면 완화해보려는 노력으로, 폴리곤을 스플릿하고, 폴리곤을 삭제하거나, 폴리곤을 이동시키는 것을 선택할 수도 있다. 임의의 변경이, (상술한 바와 같이) 프로세싱을 위해 그래픽스 디바이스 (2) 에 되전송되는 요청된 변경 (34) 내에 이러한 변경을 포함할 수도 있는 애플리케이션 컴퓨팅 디바이스 (20) 로 되전송될 수도 있다.
그래픽스 디바이스 (2) 로부터의 업데이트된 명령/정보 (35) 의 수신시에, 컴퓨팅 디바이스 (20) 는 이러한 정보를 분석할 수도 있으며, 요청된 변경이 전송되는 원격 컴퓨팅 디바이스 (예를 들어, 디바이스 (40A)) 에 업데이트된 명령/정보를 또한 제공할 수도 있다. 업데이트된 명령/정보는 업데이트된 매핑 정보를 포함할 수도 있다. 이러한 예에서, 컴퓨팅 디바이스 (20A 및/또는 40A) 는 성능 이슈가 해결되었거나 그렇지 않으면 완화되었는지를 결정하기 위해 업데이트된 명령/정보를 사용하거나 분석할 수도 있다. 일부 경우에서, 컴퓨팅 디바이스 (20) 는 성능 이슈가 해결되었는지에 관한 표시를 컴퓨팅 디바이스 (40A) 에 전송할 수도 있다. 이러한 방식으로, 아티스트는 원래의 그래픽스 데이터에 대한 임의의 요청된 변경이 컴퓨팅 디바이스 (20) 및 그래픽스 디바이스 (2) 로부터 데이터를 자동으로 수신함으로써 효율적인 방식으로 성능 이슈를 해결할 수도 있는지를 결정할 수도 있다. 성능 이슈가 완화되지 않거나 완전하게 해결되지 않았으면, 업데이트된 명령/정보는 해결되지 않은 문제와 관련되는 그래픽스 데이터의 특정한 부분들을 식별하기 위해 사용될 수도 있는 업데이트된 매핑 정보를 포함할 수도 있어서, 아티스트는 이 문제를 해결하기 위한 반복적인 방식으로 그래픽스 데이터에 대한 변경의 수행을 계속 시도할 수도 있다.
도 4b 는 일 양태에 따른, 도 4a 에 도시된 추가의 애플리케이션 컴퓨팅 디바이스 (40A) 중 하나의 추가의 상세를 예시하는 블록도이다. 일부 경우에서, 도 4a 에 도시된 컴퓨팅 디바이스 (40A-40N) 각각은 도 4b 에 도시된 것과 유사한 설계를 가질 수도 있다.
도 4b 의 예에서, 그래픽스 아티스트에 의해 사용될 수도 있는 애플리케이션 컴퓨팅 디바이스 (40A) 는 도 1 에 도시된 애플리케이션 컴퓨팅 디바이스 (20) 와 유사한 설계를 갖는다. 일부 경우에서, 컴퓨팅 디바이스 (40A) 는 랩탑 또는 데스크탑 컴퓨터와 같은 개인 컴퓨팅 디바이스를 포함할 수도 있다. 아티스트는 그래픽스 애플리케이션에서 그래픽스 장면 (예를 들어, 3D) 으로 통합될 수도 있는 폴리곤 및/또는 텍스처 데이터와 같은 원래의 프리미티브 그래픽스 데이터를 생성하기 위해 컴퓨팅 디바이스 (40A) 를 사용할 수도 있다.
도 4b 에 도시되어 있는 바와 같이, 컴퓨팅 디바이스 (40A) 는 하나 이상의 프로세서 (122) 및 디스플레이 디바이스 (124) 를 포함한다. 디스플레이 디바이스 (124) 는 LCD (액정 디스플레이), 플라즈마 디스플레이, 또는 다른 텔레비전 (TV) 디스플레이 디바이스와 같은 디스플레이를 위해 이미지를 데이터를 디스플레이할 수 있는 임의의 디바이스일 수도 있다. 컴퓨팅 디바이스 (40A) 는 또한, 메모리를 포함할 수도 있는 저장 매체 (126) 를 포함한다. 저장 매체 (126) 는 예를 들어, 동기 동적 랜덤 액세스 메모리 (SDRAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 임베디드 동적 랜덤 액세스 메모리 (eDRAM), 정적 랜덤 액세스 메모리 (SRAM), 또는 플래시 메모리와 같은, 명령 및/또는 데이터를 저장할 수 있는 임의의 영구 또는 휘발성 메모리를 포함할 수도 있다.
저장 매체 (126) 는, 프로세서 (122) 에 의해 실행될 때, 아티스트가 디스플레이 디바이스 (124) 상에 디스플레이되는 그래픽스를 생성하게 하는 DCC (디지털 컨텐츠 생성) 애플리케이션 (127) 을 포함한다. 저장 매체 (126) 는 또한, 시뮬레이션 애플리케이션 (128), 파티셔닝 애플리케이션 (130), 그래픽스 데이터 매핑 모듈 (132), 네비게이션 모듈 (134), 및 명령 매핑 정보 (136) 를 포함한다. 이들 모듈 및 데이터 저장부는 시뮬레이션 애플리케이션 (28) (도 1), 파티셔닝 모듈 (27), 그래픽스 데이터 매핑 모듈 (25), 네비게이션 모듈 (29), 및 명령 매핑 정보 (31) 와 유사하다. 따라서, 컴퓨팅 디바이스 (40A) 는 그래픽스 명령들, 상태/성능 정보, 및 매핑/파티셔닝 정보를 프로세싱할 때, 및 또한 요청된 변경을 생성할 때, 컴퓨팅 디바이스 (20) 와 유사한 방식으로 기능할 수도 있다. 컴퓨팅 디바이스 (40A) 에서, 이들 기능은 또한 DCC 애플리케이션 (127) 과 통합될 수도 있어서, 아티스트는 그래픽스 데이터를 생성 및 변경하기 위해 사용되는 DCC 툴의 사용과 함께 요청된 변경을 수행할 수도 있을 뿐만 아니라 그래픽스 및 성능 정보를 볼 수 있을 수도 있다. 따라서, 아티스트가 DCC 툴 내에서 그래픽스 데이터에 대한 임의의 변경을 수행하면, 이들 변경은 컴퓨팅 디바이스 (20) 로 되전송되는 요청된 변경으로서 프로세싱될 수 있다.
도 5 는 일 양태에 따른, 개별 그래픽스 명령들과 그래픽스 데이터 사이의 예시적인 매핑을 예시하는 개념도이다. 도 5 의 예에서, 그래픽스 명령들 (30A-30N) 이 도 1 에 도시된 그래픽스 명령들 (30) 의 일부이다는 것이 가정된다. 도 5 에 도시된 예시적인 매핑은 일 양태에서, 그래픽스 디바이스 (2) 의 그래픽스 데이터 매핑 정보 (23) 내의 매핑 정보로서 캡처될 수도 있다.
도 5 에 도시되어 있는 바와 같이, 개별 그래픽스 명령들 (30A-30G) 은 그래픽스 데이터 (140) 와 관련될 수도 있고 이에 의해 그래픽스 데이터 (140) 에 매핑될 수도 있다. 예를 들어, 그래픽스 명령들 (30A-30G) 은 그래픽스 애플리케이션내의 그래픽스 데이터 (140) 에 한정될 수도 있고, 실행시에 그래픽스 데이터 (140) 를 이미지 데이터로 렌더링하는 드로우 (draw) 명령을 포함할 수도 있다. 일부 경우에서, 그래픽스 데이터 매핑 정보 (23) 는 그래픽스 명령들 (30A-30G) 을 그래픽스 데이터 (140) 에 매핑하는 정보를 포함할 수도 있다. 도 5 의 예에서, 그래픽스 데이터 (140) 는 폴리곤 (예를 들어, 삼각형) 데이터 (142) 및 텍스처 데이터 (144) 를 포함하는 프리미티브 그래픽스 데이터를 포함한다. 텍스처 데이터 (144) 는 폴리곤 데이터 (142) 내에서 정의되는 폴리곤에 대한 텍스처를 포함할 수도 있다. 폴리곤 데이터 (142) 및 텍스처 데이터 (144) 는 3D 그래픽스 장면과 같은 그래픽스 장면내에 포함되는 그래픽스 데이터 (140) 의 구성 부분을 포함할 수도 있다.
도 5 에 도시된 개념도로부터 명백한 바와 같이, 애플리케이션 컴퓨팅 디바이스 (20) 및/또는 애플리케이션 컴퓨팅 디바이스 (40A-40N) 는 그래픽스 명령들 (30A-30G) 을 그래픽스 데이터 (140) 에 매핑하기 위해 매핑 정보를 사용할 수도 있다. 따라서, 예를 들어, 그래픽스 명령들 (30A-30G) 이 이미지 데이터를 렌더링하기 위한 명령 실행 동안 특정한 성능 이슈와 관련되면, 매핑 정보는 성능 이슈와 또한 관련될 수도 있거나 성능 이슈의 원인일 수도 있는 원래의 프리미티브 그래픽스 데이터로서 그래픽스 데이터 (140) 를 식별한다. 예를 들어, 성능 이슈가 텍스처링 또는 오버사이즈드 (over-sized) 폴리곤의 초과와 관련되면, 그래픽스 데이터 (140) 는 (예를 들어, 텍스처 데이터 (144) 내의) 과도한 텍스처링 또는 (예를 들어, 폴리곤 데이터 (142) 내의) 오버사이즈드 폴리곤의 원인일 수도 있다. 그래픽스 데이터 (140) 를 생성하거나 발생시키는 아티스트는, 폴리곤 데이터 (142) 내에서 하나 이상의 폴리곤의 사이즈를 변경하거나 텍스처 데이터 (144) 를 조정하는 것과 같이, 이슈를 해결하기 위해 식별된 그래픽스 데이터 (140) 뿐만 아니라 성능 이슈를 리뷰할 수도 있다.
도 5 는 또한, 그래픽스 명령들 (30H-30N) 이 그래픽스 데이터 (140) 와는 별개인 그래픽스 데이터 (146) 에 매핑된다는 것을 도시한다. 따라서, 그래픽스 명령들 (30H-30N) 은 그래픽스 데이터 (146) 내에 포함된 폴리곤 데이터 (148) 및 텍스처 데이터 (150) 와 관련된다.
도 6 은 일 양태에 따른, 애플리케이션 컴퓨팅 디바이스 (20) (도 1) 또는 애플리케이션 컴퓨팅 디바이스 (40A-40N) (도 4a) 중 어느 하나에 의해 수행될 수도 있는 제 1 방법의 흐름도이다. 단지 예시를 위해, 이 방법은 애플리케이션 컴퓨팅 디바이스 (20) 에 의해 수행된다는 것이 가정된다.
애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 와 같은 외부 디바이스로부터 그래픽스 명령들 (30) 을 수신할 수도 있다 (170). 그래픽스 명령들 (30) 은 프리미티브 그래픽스 데이터로부터의 이미지 데이터를 렌더링하고, 디스플레이 디바이스 (6) 상에 3차원 (3D) 그래픽스 이미지와 같은 하나 이상의 그래픽스 이미지를 디스플레이하기 위해 그래픽스 디바이스 (2) 에 의해 실행된다. 일 양태에서, 그래픽스 명령들 (30) 은 실행될 때, 그래픽스 이미지를 렌더링하는 콜 스트림을 포함한다. 일 양태에서, 콜 스트림은 애플리케이션 프로그래밍 인터페이스 (API) 명령으로부터 생성된 2진 명령을 포함한다.
컴퓨팅 디바이스 (20) 는 또한, 그래픽스 명령들 (30) 의 실행 동안 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터에 그래픽스 명령들 (30) 을 매핑하기 위한 정보를 포함하는 매핑/파티셔닝 정보 (33) 를 그래픽스 디바이스 (2) 로부터 수신할 수도 있다 (172). 프리미티브 그래픽스 데이터는 그래픽 장면의 구성 세그먼트를 포함하는 폴리곤 데이터 및 텍스처 데이터 중 적어도 하나를 포함할 수도 있다.
매핑 정보는 그래픽스 명령들 (40) 내의 적어도 하나의 그래픽스 명령들을, 적어도 하나의 그래픽스 명령들의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터의 부분에 매핑하는 정보를 포함할 수도 있다. 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 로부터 상태/성능 정보 (32) 를 수신할 수도 있다 (174). 상태/성능 정보 (32) 는 그래픽스 디바이스 (2) 상에서 그래픽스 명령들 (30) 의 실행과 관련된다. 상태/성능 정보 (32) 는 그래픽스 명령들 (30) 중 적어도 하나 및 프리미티브 그래픽스 데이터의 부분의 실행과 관련되는 성능 정보를 포함할 수도 있다.
상태/성능 정보 (32) 는 또한, 그래픽스 이미지를 렌더링할 때, 그래픽스 디바이스 (2) 의 하나 이상의 상태를 나타내는 상태 정보를 포함할 수도 있다. 상태 정보는 그래픽스 명령들 (30) 을 실행하는 그래픽스 디바이스 (2) 의 하나 이상의 프로세서, 예를 들어, 제어 프로세서 (10), 그래픽스 프로세서 (12), 정점 프로세서 (14), 및/또는 디스플레이 프로세서 (16) 로부터의 상태 정보를 포함한다. 일부 경우에서, 상태 정보는 그래픽스 이미지 데이터를 렌더링하기 위해 그래픽스 디바이스 (2) 에서 그래픽스 프로세서 (12) 에 의해 사용되는 프리미티브 폴리곤 데이터와 같은 프리미티브 폴리곤 데이터를 포함할 수도 있다.
컴퓨팅 디바이스 (20) 는 그래픽 장면에서의 그래픽스 명령들 (30) 및 상태/성능 정보 (32) 에 기초하여 하나 이상의 그래픽스 이미지의 표현을 디스플레이할 수도 있다. 이러한 방식으로, 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 를 시뮬레이션하는 시뮬레이션된 환경내에서 이들 그래픽스 이미지의 표현을 디스플레이할 수 있다. 시뮬레이션된 환경은 컴퓨팅 디바이스 (20) 의 프로세서 (22) 상에서 시뮬레이션 애플리케이션 (28) 의 실행을 통해 제공될 수도 있다.
컴퓨팅 디바이스 (20) 는 그래픽스 명령들 (30) 중 적어도 하나의 실행과 관련된 성능 이슈를 식별할 수도 있다 (176). 성능 이슈는 예를 들어, 과도하게 큰 폴리곤, 과도한 텍스처링, 과도한 블렌딩 등에 의해 야기되는 증가된 프로세서 활용과 관련될 수도 있다. 일부 경우에서, 프리미티브 그래픽스 데이터의 부분이 하나 이상의 폴리곤을 포함할 때, 컴퓨팅 디바이스 (20) 는 매핑 정보에 의해 식별될 때 관련된 그래픽스 명령들 (30) 중 하나 이상의 실행에 기초하여 성능 이슈와 관련되는 하나 이상의 폴리곤을 식별하기 위해 수신된 매핑 정보를 사용할 수도 있다. 컴퓨팅 디바이스 (20) 는 일부 경우에서, 프리미티브 그래픽스 데이터의 부분과 관련된 성능 이슈를 식별하기 위해 그래픽스 디바이스 (2) 로부터의 임의의 수신된 성능 정보를 분석할 수도 있다.
그 후, 컴퓨팅 디바이스 (20) 는 적어도 하나의 그래픽스 명령들의 실행에 기초하여 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 매핑 정보를 사용할 수도 있다 (178). 또한, 컴퓨팅 디바이스 (20) 는 명령 (30) 내의 적어도 하나의 그래픽스 명령들 및 임의의 수신된 상태 정보에 기초하여 성능 이슈와 관련되는 그래픽스의 부분의 표현을 디스플레이 디바이스 (24) 상에 디스플레이할 수도 있다 (180).
일 양태에서, 컴퓨팅 디바이스 (20) 는 디스플레이 디바이스 (24) 상에 네비게이션 제어기를 디스플레이하기 위해 네비게이션 모듈 (29) (도 1) 을 사용할 수도 있다. 사용자는 온-스크린 그래픽 사용자 인터페이스를 통해 디스플레이되는 네비게이션 제어기와 상호작용할 수도 있다. 이러한 그래픽 사용자 인터페이스는 네비게이션 제어기와 상호작용하기 위한 사용자 입력을 수신할 수도 있다. 컴퓨팅 디바이스 (20) 는 사용자 입력에 기초하여 프리미티브 그래픽스 데이터의 부분의 표현의 변경된 투시도를 디스플레이 디바이스 (24) 상에 디스플레이할 수도 있다.
그래픽스 명령들을 수신하는 것 (170), 매핑 정보를 수신하는 것 (172), 성능 정보를 수신하는 것 (174), 성능 이슈를 식별하는 것 (176), 그래픽스 데이터의 부분을 식별하는 것 (178), 및 디스플레이하는 것 (180) 은 다중의 이미지 또는 프레임에 대해 반복될 수도 있다 (182). 그래픽스 이미지가 변경되거나, 이미지의 대안의 투시도가 다중 프레임에 도시되기 때문에, 사용자 (예를 들어, 애플리케이션 개발자) 는 명령 실행 동안, 이미지와 관련된 그래픽스 데이터와 임의의 식별된 성능 이슈 사이의 관계를 지속적으로 확인할 수 있다. 그 후, 사용자는 이들 이슈를 완화하거나 해결하기 위한 시도로 적절한 액션을 취할 수도 있다.
도 7 은 일 양태에 따른, 애플리케이션 컴퓨팅 디바이스 (20) (도 1) 또는 애플리케이션 컴퓨팅 디바이스 (40A-40N) (도 4a) 중 어느 하나에 의해 수행될 수도 있는 제 2 방법의 흐름도이다. 단지 예시를 위해, 도 7 에 도시된 방법은 애플리케이션 컴퓨팅 디바이스 (40A) 에 의해 수행된다는 것이 가정된다.
도 7 에 도시되어 있는 바와 같이, 애플리케이션 컴퓨팅 디바이스 (40A) 는 애플리케이션 컴퓨팅 디바이스 (20) 와 같은 외부 디바이스로부터 그래픽스 명령들을 수신할 수도 있다 (184). 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 로부터 수신하는 그래픽스 명령들 (30) 에 기초하여 컴퓨팅 디바이스 (40A) 에 이들 명령을 전송할 수도 있다.
컴퓨팅 디바이스 (40A) 는 또한, 컴퓨팅 디바이스 (20) 로부터 수신된 명령을 폴리곤 데이터 또는 텍스처 데이터와 같은 그래픽스 데이터에 매핑하기 위해 컴퓨팅 디바이스 (20) 로부터 매핑 정보를 수신할 수도 있다 (186). 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 로부터 수신하는 매핑/파티셔닝 정보 (33) 에 기초하여 이러한 매핑 정보를 컴퓨팅 디바이스 (40A) 로 전송할 수도 있다.
그래픽스 명령들 및 매핑 정보의 수신시에, 컴퓨팅 디바이스 (40A) 는 성능 이슈와 관련되는 그래픽스 데이터의 부분을 식별하기 위해 수신된 매핑 정보를 사용할 수도 있다 (188). 컴퓨팅 디바이스 (40A) 는 상태/성능 정보 또는 파티셔닝 정보와 같은 컴퓨팅 디바이스 (20) 로부터 수신되는 다른 정보 및/또는 수신된 그래픽스 명령들에 기초하여 성능 이슈를 식별할 수도 있다. 일 양태에서, 컴퓨팅 디바이스 (20) 가 그래픽스 명령들 (30), 상태/성능 명령 (32), 및/또는 매핑/파티셔닝 정보 (33) 에 기초하여 성능 이슈를 식별할 수도 있을 때, 컴퓨팅 디바이스 (20) 는 프리미티브 그래픽스 데이터의 부분과 관련된 성능 이슈의 표시를 컴퓨팅 디바이스 (40A) 에 전송할 수도 있다.
컴퓨팅 디바이스 (40A) 는 프리미티브 그래픽스 데이터의 부분에 대한 요청된 변경을 특정하는 사용자 입력을 예를 들어, 컴퓨팅 디바이스 (40A) 를 사용하는 아티스트로부터 수신할 수도 있다 (190). 컴퓨팅 디바이스 (40A) 는 요청된 변경을 프로세싱을 위해 컴퓨팅 디바이스 (20) 로 전송할 수도 있다 (192). 요청된 변경의 수신시에, 컴퓨팅 디바이스 (20) 는 그래픽스 디바이스 (2) 로 전송하는 요청된 변경 (34) 내에 요청된 변경을 포함할 수도 있다. 컴퓨팅 디바이스 (20) 가 요청된 변경과 관련되는 업데이트된 성능 정보를 포함할 수도 있는 업데이트된 명령/정보 (35) 를 그래픽스 디바이스 (2) 로부터 수신한 이후에, 컴퓨팅 디바이스 (20) 는 업데이트된 명령/정보를 컴퓨팅 디바이스 (40A) 에 제공할 수도 있다.
컴퓨팅 디바이스 (40A) 는, 성능 이슈가 해결되었는지를 결정하기 위해, 업데이트된 성능 정보를 포함할 수도 있는 업데이트된 명령/정보를 수신할 수도 있다 (194). 업데이트된 성능 정보는 컴퓨팅 디바이스 (20) 에 컴퓨팅 디바이스 (40A) 에 의해 이전에 전송되는 요청된 변경과 관련된다. 컴퓨팅 디바이스 (20) 및 컴퓨팅 디바이스 (40A) 중 어느 하나 또는 모두는 성능 이슈가 해결되었거나 해결되지 않았는지를 결정하기 위해, 업데이트된 성능 정보를 분석할 수도 있다. 일부 경우에서, 컴퓨팅 디바이스 (20) 는 이슈가 해결되었는지 여부를 나타내는 표시를 컴퓨팅 디바이스 (40A) 로 전송할 수도 있다.
컴퓨팅 디바이스 (20) 에 의해 전송되고 컴퓨팅 디바이스 (40A) 에 의해 수신되는 업데이트된 명령/정보는 요청된 변경과 관련되는 하나 이상의 업데이트된 그래픽스 명령들을 포함할 수도 있다. 또한, 업데이트된 명령/정보는 적어도 하나의 업데이트된 그래픽스 명령들의 실행과 관련되는 프리미티브 그래픽스의 제 2 부분에, 적어도 하나의 업데이트된 그래픽스 명령들을 매핑하기 위해 업데이트된 정보를 포함하는 업데이트된 매핑 정보를 또한 포함할 수도 있다. 이러한 방식으로, 아티스트는 제 1 부분과는 상이할 수도 있는 중요한 프리미티브 그래픽스 데이터의 제 2 부분을 식별할 수도 있다. 일부 경우에서, 프리미티브 그래픽스 데이터의 제 2 부분은 아티스트에 의해 다루어질 동일하거나 상이한 성능 이슈와 관련될 수도 있다.
일 양태에서, 컴퓨팅 디바이스 (40A) 는 적어도 하나의 그래픽스 명령들에 기초하여 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 부분의 표현을 디스플레이 디바이스 (124) 상에 디스플레이할 수도 있고, 프리미티브 그래픽스 데이터의 부분을 오버레이하는 부분의 표현을 또한 디스플레이할 수도 있다. 일부 경우에서, 컴퓨팅 디바이스 (40A) 는 파티션의 표현을 디스플레이하기 위해 컴퓨팅 디바이스 (20) 로부터 수신하는 부분 정보를 사용할 수도 있다. 컴퓨팅 디바이스 (40A) 는 프리미티브 그래픽스 데이터의 부분이 파티션들 중 다중의 파티션들과 관련되는지를 결정하기 위해 프리미티브 그래픽스 데이터의 부분을 분석할 수도 있다.
일부 경우에서, 프리미티브 그래픽스 데이터의 부분은 복수의 삼각형을 포함할 수도 있고, 컴퓨팅 디바이스 (40A) 는 삼각형들 중 어느 삼각형들이 파티션들 중 다중의 파티션들에 걸쳐 스팬하는지를 결정할 수도 있다. 컴퓨팅 디바이스 (40A) 는 파티션들 중 다중의 파티션들에 걸쳐 스팬하는 삼각형들의 그래픽 표현을 디스플레이 디바이스 (124) 상에 디스플레이할 수도 있다.
그래픽스 명령들을 수신하는 것 (184), 매핑 정보를 수신하는 것 (186), 그래픽스 데이터의 부분을 식별하는 것 (188), 사용자 입력을 수신하는 것 (190), 요청된 변경을 전송하는 것 (192), 및 업데이트된 정보를 수신하는 것 (194) 은 다중의 이미지 또는 이미지 프레임에 대해 반복될 수도 있다 (196). 그래픽스 이미지가 변경되거나, 이미지의 대안의 투시도가 다중 프레임에 도시되기 때문에, 사용자 (예를 들어, 아티스트) 는 명령 실행 동안, 이미지와 관련된 그래픽스 데이터와 임의의 식별된 성능 이슈 사이의 관계를 지속적으로 확인할 수 있다. 그 후, 사용자는 이들 이슈를 완화하거나 해결하기 위한 시도로 적절한 액션을 취할 수도 있다.
도 8 은 일 양태에 따른, 그래픽 윈도우 (203) 에서 정보를 디스플레이하는 디스플레이 디바이스 (201) 에 커플링되는 그래픽스 디바이스 (200) 의 예를 예시하는 개념도이다. 예를 들어, 그래픽스 디바이스 (200) 가 그래픽스 디바이스 (2) (도 1) 의 일부이면, 디스플레이 디바이스 (201) 는 애플리케이션 컴퓨팅 디바이스 (20) 에서의 그래픽스 디바이스 (24) 의 일부일 수도 있다. 그래픽스 디바이스 (200) 는 3D 그래픽스 이미지 (202) 를 디스플레이할 수 있다. 디스플레이 디바이스 (201) 는 그래픽스 디바이스 (200) 로부터 전송되는 상태/성능 정보 및/또는 그래픽스 정보에 기초하여, 그래픽스 이미지 (202) 의 재생성인 3D 그래픽스 이미지 (210) 를 윈도우 (203) 내에 디스플레이할 수 있다. 디스플레이 디바이스 (201) 는 또한, 이들 명령 및 상태/성능 정보의 시각적 표현을 디스플레이할 수 있어서, 개발자는 그래픽스 이미지 (210) 또는 그래픽스 이미지 (210) 를 포함하는 전체 장면을 변경하기 위해 이들 명령 및 정보를 변경할 수도 있다. 디스플레이 디바이스 (201) 는 그래픽스 디바이스 (200) 에 커플링되고, 그래픽스 디바이스 (200) 로부터 이러한 명령 및 상태/성능 정보를 수신할 수 있는 임의의 타입의 컴퓨팅 디바이스 (미도시) 내에 포함될 수도 있다. (간략화를 위해, 디스플레이 디바이스 (201) 를 포함하는 컴퓨팅 디바이스가 도 9 에 도시된 개념도로부터 생략되었다.)
상술한 바와 같이, 그래픽스 디바이스 (200) 는 (도 8 의 예에서는 정육면체인) 3D 그래픽스 이미지 (202) 를 디스플레이할 수 있다. 그래픽스 디바이스 (200) 는 또한 키패드 (204) 를 갖는다. 사용자는 그래픽스 디바이스 (200) 를 조작하기 위해 키패드 (204) 와 상호작용할 수도 있다. 키패드 (204) 는 다수의 키 및/또는 버튼을 포함할 수도 있다. 그래픽스 디바이스 (200) 는 디스플레이 디바이스 (201) 를 포함하는 디바이스 (예를 들어, 애플리케이션 컴퓨팅 디바이스 (20)) 에 커넥터 (206) 를 통해 그래픽스 명령들 및 상태/성능 정보를 전송할 수 있다. 일 양태에서, 커넥터 (206) 는 유니버설 시리얼 버스 (USB) 커넥터를 포함한다. 다른 양태에서, 상이한 형태의 커넥터가 사용될 수도 있다. 일부 양태에서, 무선 통신이 커넥터 (206) 를 대신할 수도 있다.
도 8 의 예에 도시되어 있는 바와 같이, 디스플레이 디바이스 (201) 는 그래픽 사용자 인터페이스내에 다양한 형태의 정보를 디스플레이할 수도 있다. 이러한 예에서, 디스플레이 디바이스 (201) 는 그래픽 사용자 인터페이스내에 그래픽 윈도우 (203) 를 디스플레이한다. 윈도우 (203) 는 디스플레이 영역 (211), 그래픽스 명령들 영역 (208), 및 상태/성능 정보 영역 (214) 을 포함한다. 디스플레이 영역 (211) 은 상술한 바와 같이, 3D 그래픽스 이미지 (202) 의 재생성인 3D 그래픽스 이미지 (210) 를 포함한다. 이러한 예에서, 3D 그래픽스 이미지는 정육면체를 포함한다. 디스플레이 디바이스 (201) 상에 디스플레이된 정보는 일 양태에 따른, 디버깅 및 테스팅을 위해 그래픽스 디바이스 (202) 상에 디스플레이된 정보의 표현, 또는 시뮬레이션을 포함한다.
그래픽스 명령들 영역 (208) 은 그래픽스 디바이스 (200) 로부터 수신된 하나 이상의 그래픽스 명령들의 시각적 표현을 포함한다. 상술한 바와 같이, 이러한 명령의 시각적 표현은 이러한 명령의 표현을 포함할 수도 있다. 예를 들어, 그래픽스 디바이스 (200) 가 2진 그래픽스 명령들을 전송하면, 디스플레이 디바이스 (201) 는 상위 레벨 애플리케이션 프로그래밍 인터페이스 (API) 명령 (예를 들어, OpenGL 명령) 과 같은 다른 형태에서 이러한 2진 명령의 표현을 디스플레이할 수도 있다. (도 1에 도시된 매핑 정보 (31) 와 같은) 매핑 정보가 수신된 2진 명령을 그래픽스 명령들 영역 (208) 내에 디스플레이될 수도 있는 다른 포맷으로 매핑하기 위해 사용될 수도 있다.
상태/성능 정보 영역 (214) 은 그래픽스 디바이스 (200) 로부터 수신된 상태 및/또는 성능 정보의 시각적 표현을 포함한다. 수신된 그래픽스 명령들 및 상태/성능 정보는 디스플레이 영역내에 3D 그래픽스 이미지 (210) 를 디스플레이하기 위해 사용될 수도 있다. 일 양태에서, 그래픽스 디바이스 (200) 는 다양한 상태 및/또는 성능 데이터를 제공하기 위해 (도 3 에 도시된 상태/성능 데이터 모듈 (116) 과 같은) 상태/성능 데이터 모듈을 구현하는 그래픽스 드라이버를 활용할 수도 있다. 수신된 상태/성능 정보는 그래픽스 데이터 (예를 들어, 프리미티브 데이터 및/또는 래스터화된 데이터) 를 포함할 수도 있다.
윈도우 (203) 는 또한, 하나 이상의 셀렉터 (212A-212N) 를 포함한다. 사용자는 이들 선택기 (212A-212N) 중 어느 하나를 선택할 수도 있다. 각 선택기 (212A-212N) 는 이하 더욱 상세히 설명하는 바와 같은, 통계 및 네비게이션 기능과 같은 상이한 기능과 관련될 수도 있다. 윈도우 (203) 는 각각이 사용자에 의해 선택될 수도 있는 선택기 (216A-216N 및 218A-218N) 를 더 포함한다. 각 선택기 (216A-216N 및 218A-218N) 는 또한, 도 9 를 참조하여 이하 더욱 상세히 설명하는 바와 같은, 메트릭 기능, 오버라이드 기능, 및/또는 텍스처 기능과 같은 상이한 기능과 관련될 수도 있다.
애플리케이션 개발자와 같은 사용자가 윈도우 (203) 내에 디스플레이된 정보를 변경할 수도 있다. 예를 들어, 사용자는 그래픽스 명령들 영역 (208) 내에 디스플레이된 명령 중 하나 이상, 또는 상태/성능 정보 영역 (214) 내의 상태/성능 정보 중 어느 하나를 변경할 수도 있다.
그 후, 윈도우 (203) 내에서 사용자에 의해 개시된 임의의 변경이 요청된 변경으로서 그래픽스 디바이스 (200) 로 되전송될 수도 있다. 그 후, 그래픽스 디바이스 (200) 는 이들 변경을 프로세싱할 수도 있으며, 그래픽스 명령들 영역 (208) 및/또는 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있는 업데이트된 명령 및/또는 정보를 제공할 수도 있다. 업데이트된 명령 및/또는 정보는 또한, 3D 그래픽스 이미지 (210) 의 변경된 버전을 디스플레이 영역 (211) 내에 디스플레이하기 위해 사용될 수도 있다.
일 양태에서, 영역 (214) 내에 디스플레이될 수도 있는 상태 및/또는 성능 정보는 그래픽스 디바이스 (200) 상에서 그래픽스 명령들의 실행 동안 잠재적 장애를 식별하기 위해 (도 1 에 도시된 애플리케이션 컴퓨팅 디바이스 (20) 와 같은) 디스플레이 디바이스 (201) 를 포함하는 컴퓨팅 디바이스에 의해 분석될 수도 있다. 궁극적으로, 애플리케이션 개발자와 같은 사용자는 그래픽스 디바이스 (200) 상에서 그래픽스 명령들의 실행을 최적화하기 위해 디버깅 프로세스 동안 윈도우 (203) 에 제공된 정보를 보기를 원할 수도 있다. 상술한 바와 같이, 장애는 그래픽스 디바이스 (200) 에서의 그래픽스 프로세싱 파이프라인내의 어디서나 도입될 수도 있으며, 애플리케이션 개발자가 성능 최적화를 위해 이러한 장애를 분리하는 것은 어려울 수도 있다. 상태 및/또는 성능 정보의 분석을 통해, 잠재적 장애 및 가능한 차선책이 윈도우 (203) 의 영역 (214) 이내, 또는 하나 이상의 서브-윈도우 또는 팝-업 윈도우 이내와 같은 윈도우 (203) 에서 디스플레이될 수 있다.
일 양태에서, 윈도우 (203) 는 그래픽스 디바이스 (200) 로부터 수신된 그래픽스 명령들의 콜 스트림에서 인카운터된 장애에 대한 리포트를 디스플레이할 수도 있고, 가능한 차선책을 또한 디스플레이할 수도 있다. 일부 경우에서, 이들 가능한 차선책은 "가정 (what-if)" 의 시나리오로서 사용자에게 제공될 수도 있다. 예를 들어, 콜 스트림에서 비최적화된 삼각형 리스트를 렌더링하는 것이, 하나의 가능한 시나리오로서 제공될 수도 있지만, 삼각형 스트립 최적화 프레임워크를 통해 이 리스트를 사전 프로세싱하는 것이 제 2 가능한 시나리오로서 제공될 수도 있다. 사용자는 이들 가능한 차선책 시나리오 중 어느 하나를 요청된 변경으로서 선택할 수도 있으며, 그 후, 요청된 변경은 성능이 측정될 수도 있는 그래픽스 디바이스 (200) 로 되송신된다. 그 후, 그래픽스 디바이스 (200) 는 그래픽스 명령들 영역 (208) 및/또는 상태/성능 정보 영역 (214) 내에 제공될 수도 있는 업데이트된 명령/정보를 전송한다. 그 후, 사용자는 그 결과를 볼 수 있으며, 최적의 솔루션을 식별하기 위해 상이한 잠재적 차선책에 대한 결과를 비교할 수 있다. 사용자는 그들의 애플리케이션으로부터 장애를 제거하기 위해 취해질 수 있는 일련의 단계를 신속하게 식별하기 위해 이러한 프로세스를 사용할 수 있다.
일 양태에서, 윈도우 (203) 는 성능 이슈와 관련되는 그래픽스 데이터에 대한 정보를 디스플레이할 수도 있다. 예를 들어, 디스플레이 디바이스 (201) 를 포함하는 컴퓨팅 디바이스 (예를 들어, 애플리케이션 컴퓨팅 디바이스 (20)) 는 명령의 실행 동안 그래픽스 이미지 (210) 를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터에 그래픽스 명령들을 매핑하기 위한 정보를 포함하는 매핑 정보를 그래픽스 디바이스 (200) 로부터 수신할 수도 있다. 컴퓨팅 디바이스는 그래픽스 명령들 중 적어도 하나의 실행과 관련된 성능 이슈를 식별할 수도 있고, 이 성능 이슈와 관련되는 그래픽스 데이터의 부분을 식별하기 위해 매핑 정보를 사용할 수도 있다. 일부 경우에서, 성능 이슈는 특정한 텍스처의 사이즈, 특정한 폴리곤의 사이즈, 블렌딩의 양 등에 관한 것일 수도 있다. 그래픽스 데이터의 부분은 성능 이슈의 원인과 관련될 수도 있는 폴리곤 또는 텍스처 데이터를 포함할 수도 있다. 디스플레이 디바이스 (201) 는 어느 부분이 식별된 성능 이슈와 관련되는지를 하이라이트하기 위해 윈도우 (203) 내에 그래픽스 데이터의 부분의 표현을 디스플레이할 수도 있다. 예를 들어, 그래픽스 데이터의 부분이 그래픽스 이미지 (210) 를 렌더링하기 위해 사용되는 부분이면, 디스플레이 디바이스 (201) 는 일 양태에서, 이미지 (210) 의 소스인 그래픽스 데이터가 식별된 성능 이슈와 관련된다는 것을 나타내기 위해 디스플레이 영역 (211) 내에 그래픽스 이미지 (210) 를 디스플레이할 수도 있다.
애플리케이션 개발자는 성능 이슈를 완화하거나 해결하기 위한 시도로 그래픽스 데이터 또는 관련된 이미지 (210) 의 부분에 대한 변경을 수행하는 것을 선택할 수도 있다. 예를 들어, 개발자는 명령 영역 (208) 에 도시된 명령, 상태/성능 명령 영역 (214) 에 도시된 명령, 또는 이미지 (210) 의 투시도 중 하나 이상을 변경할 수도 있다. 일부 경우에서, 개발자는 이미지 (210) 와 관련된 텍스처를 변경할 수도 있거나, 이미지 (210) 와 관련된 폴리곤 데이터를 변경할 수도 있다. 이들 요청된 변경은 그 요청된 변경을 프로세싱하고, 업데이트된 매핑 및/또는 성능 정보를 포함하는 업데이트된 명령/정보를 되전송하는 그래픽스 디바이스 (200) 로 전송된다. 그 후, 디스플레이 디바이스 (201) 는 이미지 (210) 와 관련된 그래픽스 데이터에 관한 업데이트된 정보를 디스플레이할 수도 있고, 성능 이슈가 해결되었는지에 관한 표시를 제공하기 위해 디스플레이 영역 (211) 내에 이미지 (210) 의 업데이트된 뷰를 디스플레이할 수도 있다.
사용자는 실험, 또는 시행착오 디버깅을 위해 윈도우 (203) 내에서 조정을 반복적으로 계속 수행할 수도 있다. 사용자는 디스플레이 영역 (211) 내에 디스플레이되는 이미지 또는 장면에서의 변경을 식별하기 위해 그래픽스 명령들 및 상태/성능 정보의 상이한 형태 또는 조합으로 실험할 수도 있다. 사용자는 콜 스트림의 일부일 수도 있는 그래픽스 명령들을 반복적으로 보고 변경하기 위해 윈도우 (203) 의 컨텐츠에 의해 제공된 시뮬레이션 환경, 및 임의의 소스 코드를 재컴파일하지 않고 컴파일된 코드를 그래픽스 디바이스 (200) 상에서 재실행하지 않고 그래픽스 디바이스 (200) 에 의해 제공된 상태를 사용할 수 있다.
일부 경우에서, 사용자는 그래픽스 카메라와 같은 그래픽 네비게이션 제어기를 조작하여 그래픽스 이미지 (210) 의 투시도를 변경하기 위한 버튼 (212A-212N) 중 하나 이상을 조작할 수도 있다. 이러한 조작은 그래픽스 디바이스 (200) 로 되전송되는 요청된 변경으로서 캡처될 수도 있다. 그 후, 그래픽스 디바이스 (200) 에 의해 제공되는 업데이트된 명령/정보는 그래픽스 이미지 (210) 의 투시도를 변경하기 위해 사용된다.
일부 경우에서, 다양한 텍스처 및/또는 상태 정보가 변경가능한 엔터티로서 윈도우 (203) 의 영역 (214) 에 제공될 수도 있다. 또한, 사용자는 예를 들어, 디스플레이 영역 (211) 내의 그래픽스 이미지 (210) 의 픽셀을 심지어 선택할 수도 있어서, 그래픽스 명령들 영역 (208) 내의 하나 이상의 대응하는 명령이 식별된다. 이러한 방식으로, 사용자는 그래픽스 이미지 (210) 의 픽셀 또는 다른 부분을 렌더링하거나 생성하기 위해 사용되는 렌더링 명령 또는 콜에 대해 역방향으로 효율적으로 드릴 (drill) 할 수 있다. 디스플레이 디바이스 (201) 는, 이미지 (210) 가 그래픽스 디바이스 (200) 상에 제공될 때 윈도우 (203) 에서 그 이미지 (203) 를 정확하게 재생성할 수도 있기 때문에, 사용자는 (그래픽스 명령들 영역 (208) 에 디스플레이된 다양한 그래픽스 명령들에 기초할 수도 있는) 그들의 애플리케이션에서의 이슈를 신속하게 분리할 수 있으며, 상태/성능 영역 (214) 내의 임의의 상태를 원형의 새로운 효과로 변경할 수도 있다.
일 양태에서, 디스플레이 디바이스 (201) 는 또한, 다중의 파티션에 걸쳐 스팬할 수도 있는 폴리곤 데이터 뿐만 아니라 파티셔닝 정보를 디스플레이할 수 있다. 예를 들어, 애플리케이션 개발자는 디스플레이 디바이스 (201) 로 하여금, 이미지 (210) 를 오버레이하고 디스플레이 영역 (211) 에서 장면을 그래픽적으로 분할하는 파티션 (예를 들어, 직사각형 형상의 파티션) 의 그래픽 표현을 디스플레이하게 하기 위해 버튼, 예를 들어, 버튼 (212A-212N) 중 하나를 선택할 수도 있다. 일부 경우에서, 디바이스 (200) 가 그래픽스 디바이스 (2) 의 일부이면, 디스플레이된 파티션은 수신된 매핑/파티셔닝 정보 (33) (도 1) 에 기초할 수도 있다. 디스플레이 디바이스 (201) 를 포함하는 디바이스는 또한, 그래픽스 데이터의 어느 부분이 파티션 중 다중의 파티션과 관련되는지를 결정하기 위해 그래픽스 이미지 (210) 에 대한 그래픽스 데이터 (예를 들어, 폴리곤 데이터) 를 분석할 수도 있다. 예를 들어, 다중의 폴리곤이 그래픽스 이미지 (210) 를 렌더링하기 위해 사용되었을 때, 디바이스는 이들 폴리곤 중 어느 폴리곤들이 다중의 파티션에 걸쳐 스팬하는지를 결정하기 위해 폴리곤을 분석할 수도 있다.
도 9 는 일 양태에 따른, 그래픽 윈도우 (220) 내에 정보를 디스플레이하는 디스플레이 디바이스 (201) 에 커플링된 그래픽스 디바이스 (200) 의 다른 예를 예시하는 개념도이다. 이러한 양태에서, 윈도우 (220) 는 메트릭 정보 뿐만 아니라 다양한 명령 정보를 포함한다.
예를 들어, 그래픽스 명령들 영역 (208) 내에, 다양한 그래픽스 명령들 (242) 이 도시되어 있다. 그래픽스 명령들 (242) 은 그래픽스 디바이스 (200) 에 의해 제공되는 그래픽스 명령들의 서브세트일 수도 있다. 예를 들어, 그래픽스 디바이스 (200) 가 그래픽스 디바이스 (2) 의 일부이면, 그래픽스 명령들 (242) 은 그래픽스 명령들 (30) 의 서브세트일 수도 있다. 일부 경우에서, (도 1 에 도시된 매핑 정보 (31) 와 같은) 매핑 정보는 그래픽스 디바이스 (200) 로부터 수신된 인커밍 명령을, 그래픽스 명령들 영역 (208) 내에 디스플레이되는 명령 (242) 으로서 유형화된 이들 명령의 시각적 표현에 매핑하기 위해 사용될 수도 있다. 예를 들어, 수신된 명령이 2진 형태이면, 명령 (242) 은 2진 형태의 명령을 생성하기 위해 사용되는 API 명령을 포함할 수도 있다.
도 9 의 예에 도시되어 있는 바와 같이, 그래픽스 명령들 (242) 은 하이-레벨 명령 및 로우-레벨 명령을 포함한다. 애플리케이션 개발자와 같은 사용자는 명령 (242) 의 풀세트를 보기 위해 스크롤바 (244) 를 사용할 수도 있다. 특정한 하이-레벨 명령은 더 낮은 레벨의 API 명령과 같은 하나 이상의 로우-레벨 명령을 포함할 수도 있다. 일부 경우에서, 애플리케이션 개발자는 관련된 하이-레벨 명령의 일부이거나 그 하이-레벨 명령에 의해 실행되는 임의의 로우-레벨 명령을 보기 위해 특정한 하이-레벨 명령을 (예를 들어, 클릭함으로써와 같이) 선택할 수도 있다. 상술한 바와 같이, 명령 (242) 과 같은 수신된 그래픽스 명령들은 윈도우 (220) 의 디스플레이 영역 (211) 에 도시된 그래픽스 이미지 (210) 를 포함하는 그래픽스 이미지 (202) 의 표현을 생성하기 위해 사용된다. 매핑 정보는, 명령 (242) 중 임의의 하나 이상을 하나 이상의 성능 이슈와 관련될 수도 있거나, 그 하나 이상의 성능 이슈의 잠재적 원인일 수도 있는 그래픽스 데이터의 부분에 매핑할 수도 있다.
도 9 의 상태/성능 정보 영역 (214) 아래에 다양한 선택 버튼이 도시되어 있다. 이들 선택 버튼은 텍스처 버튼 (236), 오버라이드 버튼 (238), 및 메트릭 버튼 (240) 을 포함한다. 도 9 의 예에서, 애플리케이션 개발자는 메트릭 버튼 (240) 을 선택한다. 이러한 버튼의 선택시에, 다양한 메트릭 옵션이 디스플레이될 수도 있다. 예를 들어, 하나 이상의 메트릭 버튼 (234A-234N) 이 상태/성능 영역 (214) 위에 디스플레이될 수도 있다. 각 메트릭 버튼 (234A-234N) 은 특정한 메트릭과 관련될 수도 있다. 일부 경우에서, 이들 메트릭 중 하나 이상은 사전결정되거나 사전구성된 메트릭 타입일 수도 있으며, 일부 경우에서, 애플리케이션 개발자는 메트릭 중 하나 이상을 선택하거나 커스터마이징할 수도 있다. 예시적인 메트릭이, 초당 프레임, (하나 이상의 프로세서에 대한) 사용중 퍼센트 (%), 버스 또는 메모리의 사용량과 관련된 메트릭, 초당 정점, 초당 삼각형, 초당 픽셀 클릭, 초당 프래그먼트 등 중 임의의 하나 이상을 포함할 수도 있다. 애플리케이션 개발자는 선택된 메트릭에 관한 추가의 디테일을 보기 위해 임의의 메트릭 버튼 (234A-234N) 을 선택할 수도 있다.
예를 들어, 메트릭 버튼 (234A) 이 초당 프레임의 수와 관련되면, 애플리케이션 개발자는 그래픽 이미지 (210) 에 대한 (성능에 관한) 초당 프레임의 수에 대한 추가의 디테일을 보거나, 그래픽스 이미지 (210) 의 부분을 선택하기 위해 메트릭 버튼 (234A) 을 선택할 수도 있다. 일부 경우에서, 개발자는 메트릭 버튼 (234A) 을 선택할 수도 있거나, 그 메트릭 버튼 (234A) 을 상태/성능 정보 영역 (214) 으로 드래그할 수도 있다. 초당 프레임의 수에 대한 상세 정보가 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있다. 개발자는 또한, 메트릭 버튼 (234A) 을 디스플레이 영역 (211) 으로 드래그할 수도 있거나, 메트릭 버튼 (234A) 의 애플리케이션에 대한 그래픽스 이미지 (210) 의 부분을 선택할 수도 있다. 예를 들어, 개발자는 메트릭 버튼 (234A) 을 선택한 이후에 그래픽스 이미지 (210) 의 부분을 선택할 수도 있고, 그 후, 그 선택된 부분에 대한 초당 프레임의 수에 대한 상세 정보가 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있다. 이러한 방식으로, 개발자는 메트릭 버튼 (234A-234N) 중 하나 이상의 선택, 및 그래픽스 이미지 (210) (또는 그것의 부분) 의 가능한 선택에 기초하여 임의의 수의 상이한 메트릭 타입에 대한 성능 데이터를 볼 수도 있다.
일 양태에서, 윈도우 (220) 내에 디스플레이될 수도 있는 메트릭 데이터는 그래픽스 디바이스 (200) 의 그래픽스 드라이버 (예를 들어, 도 3 에 도시된 그래픽스 드라이버 (18)) 에 의해 제공될 수도 있다. 이러한 그래픽스 드라이버는 윈도우 (220) 내에 메트릭 데이터로서 디스플레이될 수도 있는 다양한 데이터를 제공하기 위해 하드웨어 카운터 모듈 (예를 들어, 도 3 의 하드웨어 카운터 모듈 (114)) 및/또는 프로세서 사용 모듈 (예를 들어, 도 3 의 프로세서 사용 모듈 (112)) 을 구현할 수도 있다.
일부 경우에서, 개발자는 텍스처 버튼 (236) 을 또한 선택할 수도 있다. 선택시에, 그래픽스 이미지 (210) 에 관한 다양한 형태의 텍스처 정보가 디스플레이 디바이스 (201) 에 의해 디스플레이될 수도 있다. 예를 들어, 텍스처 정보는 상태/성능 정보 영역 (214) 내와 같은 윈도 (220) 내에 디스플레이될 수도 있다. 일부 경우에서, 텍스처 정보는 추가의 (예를 들어, 팝-업) 윈도우 (미도시) 내에 디스플레이될 수도 있다. 개발자는 디스플레이된 텍스처 정보를 볼 수도 있지만, 일부 경우에서는, 이 텍스처 정보를 또한 변경할 수도 있다. 이들 경우에서, 텍스처 정보에 대한 임의의 변경은 요청된 변경으로서 그래픽스 디바이스 (200) 로 역으로 전파될 수도 있다. 그래픽스 디바이스 (200) 로부터의 업데이트된 명령/정보의 수신시에, 그래픽스 이미지 (210) 에 대한 변경이 디스플레이 영역 (211) 내에 디스플레이될 수도 있다. 도 11 은 텍스처 버튼 (236) 의 선택시에 디스플레이될 수도 있는 특정한 텍스처 정보를 포함한다.
개발자는, 그래픽스 데이터가 명령 (242) 중 하나 이상 (또는 명령 (242) 에 대한 2진 소스 명령) 의 실행 동안 성능 이슈와 관련된다는 것을 수신된 매핑 정보가 식별한 경우에, 이미지 (210) 를 생성하기 위해 사용된 그래픽스 데이터와 관련된 텍스처 정보를 변경하기를 원할 수도 있다. 명령 실행 동안 이미지 (210) 를 렌더링하기 위해 사용되는 폴리곤 및 텍스처 데이터를 포함할 수도 있는 소스 그래픽스 데이터가 성능 문제의 잠재적 소스인 경우에서, 개발자는 텍스처 데이터 및/또는 폴리곤 데이터를 변경하기를 원할 수도 있다.
일부 경우에서, 개발자는 또한 오버라이드 버튼 (238) 을 선택할 수도 있다. 오버라이드 버튼 (238) 의 선택 이후에, 명령 및/또는 상태 정보와 같은 특정한 정보가 개발자에 의해 변경될 수도 있거나 오버라이드될 수도 있는 (예를 들어 윈도 (220) 또는 다른 윈도우내에) 디스플레이될 수도 있다. 임의의 변경 또는 오버라이드가 그래픽스 디바이스 (200) 로 전송되는 하나 이상의 요청된 변경내에 포함될 수도 있다. 일 양태에서, 그래픽스 디바이스 (200) 는 임의의 요청된 변경을 프로세싱하기 위해 그래픽스 드라이버 (18A) (도 3) 와 같은 그래픽스 드라이버를 구현할 수도 있다. 예를 들어, 그래픽스 디바이스 (200) 는 하나 이상의 오버라이드를 포함하는 이러한 요청된 변경을 프로세싱하기 위해 오버라이드 모듈 (120) 을 사용할 수도 있다.
일부 경우에서, 개발자는 그래픽스 명령들 영역 (208) 내에 도시되는 하나 이상의 그래픽스 명령들 (242) 을 오버라이드할 수도 있다. 이들 경우에서, 개발자는 그래픽스 명령들 (242) 중 하나 이상을 변경하거나 오버라이드하기 위해 그래픽스 명령들 영역 (208) 내에 정보를 유형화하거나 그렇지 않으면 입력할 수도 있다. 그 후, 이들 변경은 디스플레이 영역 (211) 내에서 그래픽스 이미지 (210) 의 디스플레이를 업데이트하기 위해 업데이트된 명령/정보를 제공하는 그래픽스 디바이스 (200) 로 전송될 수도 있다. 개발자는 예를 들어, 명령 (242) 에 의해 제공되는 하나 이상의 기능을 오버라이드하기 위해 그래픽스 명령들 (242) 의 파라미터, 순서, 타입 등을 변경할 수도 있다. 일 양태에서, 매핑 정보 (31) (도 1) 가 그래픽스 명령들 (242) 에 대한 변경을 그래픽스 디바이스 (200) 에 제공될 수도 있는 다른 포맷의 대응하는 명령 (예를 들어, 2진 명령) 으로 매핑하거나 변환하기 위해 사용될 수도 있다.
일부 경우에서, 개발자는 또한, 그래픽스 디바이스 (200) 에 의해 구현되는 프로세싱 파이프라인과 관련된 하나 이상의 기능을 오버라이드하기 위해 오버라이드 버튼 (238) 을 선택할 수도 있다. 도 12 는 오버라이드 버튼 (238) 의 선택시에 개발자에게 디스플레이될 수도 있는 오버라이드 스크린의 예를 도시한다.
윈도우 (220) 는 선택 버튼 (231 및 232) 을 더 포함한다. 선택 버튼 (231) 은 파티션 버튼이고, 선택 버튼 (232) 은 네비게이션 버튼이다. 개발자는 그래픽스 이미지 (210) 를 오버레이하고 디스플레이 영역 (211) 에 디스플레이된 장면을 그래픽적으로 분할하는 직사각형 형상의 파티션과 같은 파티션의 그래픽 표현을 보기 위해 파티션 버튼 (231) 을 선택할 수도 있다. 사용자가 파티션 버튼 (231) 을 선택할 때, 그래픽 파티션은 디스플레이 영역 (211) 에 디스플레이될 수도 있다.
디스플레이 영역 (211), 또는 개별 디스플레이 영역 또는 윈도우는 또한, 데이터의 어느 부분이 다중의 파티션과 관련되는지를 결정하는 그래픽스 이미지 (210) 에 대한 그래픽스 데이터의 분석에 기초하여 정보를 디스플레이할 수도 있다. 예를 들어, 디스플레이 영역 (211), 또는 개별 디스플레이 영역 또는 윈도우는, 그래픽스 이미지 (210) 를 렌더링하기 위해 사용되는 어느 폴리곤이 파티션의 그래픽 표현과 함께 다중의 파티션에 걸쳐 스팬하는지를 디스플레이한다. 일부 경우에서, 컬러와 같은 그래픽 표시는 다중의 파티션에 걸쳐 스팬하는 각 폴리곤 (예를 들어, 삼각형) 에 대해 디스플레이될 수도 있다.
예를 들어, 일 양태에서, 각 삼각형이 특정한 컬러로 디스플레이되는 "히트 맵 (heat map)" 이 디스플레이될 수도 있다. 다중의 파티션에 걸쳐 스팬하는 삼각형은 하나의 컬러 (예를 들어, 블루) 로 디스플레이될 수도 있다. 다중의 파티션 (예를 들어, 2개 내지 3개의 파티션) 에 걸쳐 스팬하는 삼각형은 제 2 컬러 (예를 들어, 퍼플) 로 디스플레이될 수도 있다. 4개 이상의 파티션에 걸쳐 스팬하는 삼각형은 제 3 컬러 (예를 들어, 레드) 로 두드러지게 디스플레이될 수도 있다. 따라서, 이러한 예에서, 애플리케이션 개발자는 어느 삼각형이 다중의 파티션에 걸쳐 스팬하는지, 및 어느 것이 다른 것 보다 많은 파티션에 걸쳐 스팬하는지를 신속하게 결정할 수 있다. 개발자는 그래픽스 이미지 (210) 를 생성할 때 성능 (예를 들어, 렌더링) 오버헤드를 감소시키기 위해 다중의 파티션에 걸쳐 스팬하는 삼각형을 어떻게 변경하고, 재정의하고, 그렇지 않으면, 재구성할지 결정하기 위해 이러한 정보를 사용할 수도 있다.
개발자는 또한, 디스플레이 영역 (211) 내에서 네비게이션하고, 디스플레이 영역 (211) 내에서 그래픽스 이미지 (210) 의 투시도를 변경하기 위해 네비게이션 버튼 (232) 을 선택할 수도 있다. 예를 들어, 네비게이션 버튼 (232) 의 선택시에, 3D 그래픽 카메라 또는 네비게이션 제어기가 디스플레이될 수도 있다. 개발자는 디스플레이 영역 (211) 내의 임의의 영역으로 네비게이션하기 위해 제어기와 상호작용할 수도 있다. 개발자는 또한, 예를 들어, 그래픽스 이미지 (210) 를 회전시키거나 줌 인/아웃함으로써 그래픽스 이미지 (210) 의 투시도를 변경하기 위해 제어기를 사용할 수도 있다.
일 양태에서, 네비게이션 버튼 (232) 의 선택 및 그래픽 네비게이션 제어기와의 상호작용을 통한 임의의 개발자 개시 변경은 요청된 변경 (예를 들어, 도 1 에 도시된 요청된 변경 (84) 의 일부) 으로서 그래픽스 디바이스 (200) 로 역으로 전파될 수도 있다. 그 후, 그래픽스 디바이스 (200) 에 의해 제공되는 업데이트된 명령/정보가 그래픽스 이미지 (210) 의 디스플레이 (예를 들어, 투시도) 를 업데이트하기 위해 사용될 수도 있다. 또한, 업데이트된 명령은 그래픽스 명령들 영역 (208) 내에 디스플레이될 수도 있다. 업데이트된 상태/성능 정보는 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있다.
일 양태에서, 그래픽 파티션이 그래픽스 이미지 (210) 의 변경된 투시도상에 디스플레이되고 오버레이될 수도 있다. 또한, 그래픽스 이미지 (210) 의 변경된 투시도에 대한 업데이트된 명령/정보내에 포함된 그래픽스 데이터는 데이터의 어느 부분이 다중의 파티션과 관련되는지를 결정하기 위해 분석될 수도 있다.
그 결과, 개발자는 그래픽스 이미지 (210) 를 렌더링하고 디스플레이하는 다른 원근 (perspective), 배향 (orientation), 뷰 (view) 등이 그래픽스 디바이스 (200) 의 성능 및 상태에 어떻게 영향을 미칠 수도 있는지를 효과적으로 및 효율적으로 결정할 수도 있다. 이것은 디스플레이 디바이스 (201) 상에 디스플레이된 시뮬레이션 환경에서의 그래픽스 이미지 (210) 및 그래픽스 디바이스 (200) 상에 디스플레이되는 실제 그래픽스 이미지 (202) 를 생성하고 렌더링하기 위해 사용되는 그래픽스 명령들 (242) 을 최적화하는데 개발자에게 매우 유용할 수도 있다. 일 양태에서, 윈도우 (220) 내의 개발자 개시 선택 및 제어에 기초하는 그래픽스 이미지 (210) 의 포지션, 원근, 배향 등에서의 임의의 변경은 테스팅 프로세스 동안 그래픽스 디바이스 (200) 상에 디스플레이될 수도 있는 그래픽스 이미지 (202) 에 대한 변경으로서 보여질 수도 있다.
그래픽 사용자 인터페이스내에서 그래픽 윈도우 (220) 와의 상호작용을 통해, 애플리케이션 개발자는 그래픽스 이미지 (202) 를 생성하기 위해 그래픽스 디바이스 (200) 에 의해 실행되는 그래픽스 명령들의 시각적 표현인 그래픽스 명령들 (242) 의 실행 동안 성능 이슈 및/또는 장애의 식별을 시도할 수 있다. 그래픽스 이미지 (202) (즉, 그래픽스 이미지 (210)) 의 표현은 그래픽스 디바이스 (200) 에 의해 수신된 상태/성능 데이터 및 그래픽스 명령들 (242) 에 기초하여 디스플레이 영역 (211) 내에 디스플레이된다. 그래픽스 명령들 (242), 그래픽스 이미지 (210), 및 상태/성능 정보, 뿐만 아니라 이들 중 하나 이상에 대한 사용자 개시 변경에 기초하여 효과를 봄으로써, 애플리케이션 개발자는 그래픽스 디바이스 (200) 상의 명령의 실행을 최적화하고, 명령 실행 동안 임의의 성능 이슈 (예를 들어, 장애) 를 제거하거나 완화하기 위한 시행착오, 또는 디버깅 프로세스에 쌍방향으로 및 동적으로 참여할 수 있다.
또한, 다수의 상이한 그래픽 파티션을 포함하는 그래픽 장면의 시각적 표현은, 장면 파티셔닝과 관련될 수도 있는 비용으로 인해 감소된 성능을 나타내는 그래픽스 장면의 부분을 개발자가 식별할 수 있게 한다. 개발자는 장면의 다른 조성을 연구하여, 이들 비용 및/또는 관련된 성능 오버헤드를 감소시키는 것을 돕기 위해 파티셔닝 및 관련된 분석 정보를 리뷰할 수도 있다. 또한, 개발자는 성능 이슈와 관련될 수도 있는 그래픽스 데이터의 특정 부분을 식별할 수도 있다. 이것은 개발자가 이들 이슈를 해결하기 위한 시도로 그래픽스 데이터를 변경하기 위해 집중된 노력에 관여하게 할 수 있다.
도 10 은 그래픽스 디바이스 (2) (도 1) 의 디스플레이 디바이스 (6), 애플리케이션 컴퓨팅 디바이스 (20) 의 디스플레이 디바이스 (24), 애플리케이션 컴퓨팅 디바이스 (40A) (도 4B) 의 디스플레이 디바이스 (124), 또는 디스플레이 디바이스 (201) (도 8 및 도 9) 와 같은 디스플레이 디바이스에 의해 제공된 스크린 영역 (250) 의 4개의 파티션에 걸쳐 스팬할 수도 있는 그래픽스 데이터의 예를 예시하는 개념도이다. 단지 예시를 위해, 아래의 설명에서, 도 10 에 도시된 데이터가 그래픽스 디바이스 (2) 로부터 수신된 그래픽스 명령들 (30) 및/또는 상태/성능 정보 (32), 및 또한 그래픽스 디바이스 (2) 로부터 수신된 매핑/파티셔닝 정보 (33) 에 기초하여 애플리케이션 컴퓨팅 디바이스 (20) 의 디스플레이 디바이스 (24) 상에 그래픽적으로 도시된다는 것을 가정한다. 상태/성능 정보 (32) 는 폴리곤 (즉, 지오메트리) (260, 262, 264, 및 266) 에 대한 그래픽스 데이터를 포함할 수도 있고, 매핑/파티셔닝 정보 (33) 는 파티션 (252, 254, 256, 및 258) 에 대한 정보를 포함할 수도 있다. 예를 들어, 애플리케이션 컴퓨팅 디바이스 (20) 에 의해 수신된 매핑/파티셔닝 정보 (33) 는, 그래픽스 데이터를 렌더링할 때, 그래픽스 디바이스 (2) 가 252, 254, 256, 및 258 로 표현된 4개의 별개의 파티션을 사용한다는 것을 나타낼 수도 있다.
도 10 의 예에서, 4개의 비닝 파티션 (252, 254, 256, 및 258) 이 구현된다. 이들 파티션은 디스플레이 디바이스 (24) 상에 디스플레이될 수도 있는 스크린 영역 (250) 내에 4개의 대응하는 영역을 나타낸다. 도면에서 알 수 있는 바와 같이, 폴리곤 (260 및 262) 은 대응하는 파티션 내에서 완벽하게 위치되거나 배치되는 것으로 각각 정의된다. 폴리곤 (260) 은 파티션 (252) 내에 위치되고, 폴리곤 (262) 은 파티션 (254) 내에 위치된다. 그래픽스 데이터를 렌더링할 때, 예를 들어, 그래픽스 프로세서 (12) 는 독립적인 렌더링 동작 동안 개별적으로, 파티션 (252, 254, 256, 및 258) 각각 내에서 데이터를 렌더링할 수도 있다. 폴리곤 (260) 이 완전히 파티션 (252) 내에 있기 때문에, 파티션 (252) 과 관련된 렌더링 동작 동안 완벽한 지오메트리로서 렌더링될 수도 있다. 유사하게, 폴리곤 (262) 이 파티션 (254) 내에 있기 때문에, 파티션 (254) 과 관련된 렌더링 동작 동안 완벽한 지오메트리로서 렌더링될 수도 있다.
한편, 폴리곤 (264 및 266) 은 다중의 파티션에 걸쳐 스팬한다. 폴리곤 (264) 은 모든 4개의 파티션 (252, 254, 256, 및 258) 에 걸쳐 스팬하지만, 폴리곤 (266) 은 2개의 파티션 (256, 258) 에 걸쳐 스팬한다. 폴리곤 (264) 을 렌더링하기 위해, 그래픽스 프로세서 (12) 는 폴리곤 (264) 을 4개의 구성 프래그먼트로 스플릿할 수도 있다. 그 후, 그래픽스 프로세서 (12) 는 독립적인 렌더링 동작 동안 이들 프래그먼트를 독립적으로 렌더링할 수도 있다. 이들 프래그먼트가 독립적으로 렌더링된 이후에, 디스플레이 프로세서 (16) 는 폴리곤 (264) 의 정확한 그래픽 표현을 디스플레이하기 위해 이들 프래그먼트 각각에 대한 렌더링된 이미지를 결합할 필요가 있을 수도 있다. 이들 개별 렌더링 및 결합 동작은 성능 오버헤드를 야기할 수도 있다.
애플리케이션 개발자가 스크린 영역 (250) 내에 디스플레이된 정보를 볼 때, 개발자는 폴리곤이 다중의 파티션에 걸쳐 스팬하기 때문에, 어느 폴리곤이 하드웨어에 의해 스플릿될 수도 있는지, 및 또한 이러한 파티션이 어디에 위치되는지의 아이디어를 획득할 수 있다. 개발자는 장면을 정의할 때 그래픽스 애플리케이션내의 특정한 그래픽스 데이터의 최적화된 구성 또는 위치를 결정하기 위해 이러한 정보를 사용할 수도 있다. 일부 경우에서, 장면 영역 (250) 은 명령 실행 동안 하나 이상의 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 특정한 부분을 하이라이트하거나 그렇지 않으면 식별할 수도 있다.
예를 들어, 폴리곤 (264 및 266) 은 그래픽스 데이터의 특정한 부분 (즉, 이들 특정한 폴리곤) 이, 이들 특정한 폴리곤이 다중의 파티션에 걸쳐 스팬한다는 사실에 의해 야기된 잠재적 성능 이슈와 관련된다는 것을 사용자에게 나타내기 위해 스크린 영역 (250) 내에 하이라이트되거나 그렇지 않으면 현저하게 디스플레이될 수도 있다. 상술한 바와 같이, 이들 폴리곤은 렌더링을 위해 스플릿될 수도 있고, 그 후, 렌더링된 프래그먼트는 재결합될 수도 있다. 이들 다양한 단계들은 폴리곤을 이동시키고, 폴리곤을 분해하거나, 심지어 폴리곤을 삭제함으로써 최소화되거나 완화될 수 있는 성능 오버헤드를 야기할 수도 있다.
예를 들어, 도 10 에 제공된 정보의 리뷰시에, 개발자는 폴리곤 (264 및 266) 을 재배열하거나 재구성하도록 결정할 수도 있어서, 폴리곤은 다중의 파티션에 걸쳐 스팬하지 않는다. 파티션이 그래픽스 디바이스 (2) 에 의해 정의될 때 스크린 영역 (250) 내의 그래픽스 이미지를 오버레이하는 파티션의 표현이 개발자에게 제공되고, 그래픽스 데이터의 특정한 부분이 식별되거나 하이라이트될 수도 있기 때문에, 개발자는 폴리곤이 다중의 파티션에 걸쳐 스팬하지 않거나, 폴리곤이 단지 최소의 수의 파티션에 걸쳐 스팬하도록 폴리곤 (264 및 266) 을 어떻게 정의하고, 구성하거나 위치시킬지 더 양호하게 이해할 수도 있다. 일부 경우에서, 개발자는 폴리곤을 서브-폴리곤으로서 재정의하도록 결정할 수도 있어서, 폴리곤은 렌더링 이후에 디스플레이 프로세서 (16) 에 의해 결합될 필요가 없을 수도 있다. 예를 들어, 개발자는 2개의 개별 폴리곤 (266A 및 266B) 으로서 애플리케이션 명령 (21) 의 변경된 버전에서 폴리곤 (266) 을 재정의할 수도 있다. 이들 폴리곤이 최초에 개별적으로 정의되면, 이들 폴리곤의 렌더링된 버전은 디스플레이 이전에 결합될 필요가 없을 수도 있고, 이것은 성능 오버헤드를 감소시킬 수도 있다.
도 11 은 그래픽스 디바이스 (2) (도 1) 의 디스플레이 디바이스 (6), 애플리케이션 컴퓨팅 디바이스 (20) 의 디스플레이 디바이스 (24), 애플리케이션 컴퓨팅 디바이스 (40A) (도 4b) 의 디스플레이 디바이스 (124), 또는 디스플레이 디바이스 (201) (도 8 및 도 9) 와 같은 디스플레이 디바이스에 의해 제공될 수도 있는 스크린 영역내의 텍스처 정보를 예시하는 개념도이다. 단지 예시를 위해, 아래의 설명에서, 도 11 에 도시된 데이터가 애플리케이션 디바이스 (40A) 의 디스플레이 디바이스 (124) 상에 그래픽적으로 도시된다는 것을 가정한다.
도 11 의 스크린 영역 (270) 은 도 9 에 도시된 그래픽스 이미지 (210) 와 유사한 3차원 정육면체를 정의하는 프리미티브 그래픽스 데이터의 그래픽 표현을 도시한다. 프리미티브 그래픽스 데이터는 정육면체의 지오메트리를 정의하기 위해 다중의 폴리곤을 포함하는 폴리곤 데이터를 포함할 수도 있고, 정육면체의 하나 이상의 텍스처를 정의하는 텍스처 데이터를 더 포함할 수도 있다. 다양한 경우에서, 텍스처는 정육면체에 디테일을 추가할 수도 있지만, 특정한 경우에서, 텍스처는 특정한 성능 이슈 또는 오버헤드의 원인일 수도 있다. 예를 들어, 다수의 텍스처 또는 복합 텍스처의 렌더링은 추가된 프로세싱 사이클 또는 오버헤드를 야기할 수도 있다. 이들 경우에서, 임의의 성능 이슈, 뿐만 아니라 이들 이슈와 관련되는 그래픽스 데이터의 임의의 부분을 인지하는 것이 애플리케이션 개발자 또는 아티스트에게 유용할 수도 있다.
도 11 에서, 텍스처 (272) 가 식별된 성능 이슈와 관련된다는 것이 가정된다. 예를 들어, 텍스처 (272) 는 큰 또는 복합 텍스처일 수도 있다. 컴퓨팅 디바이스 (40A) 는 실행될 때 텍스처 (272) 를 렌더링하고, 이러한 실행의 결과로서 식별된 성능 이슈와 관련되는 그래픽스 명령들에 텍스처 (272) 를 매핑하는 매핑 정보를 컴퓨팅 디바이스 (20) 로부터 수신할 수도 있다. 이러한 매핑 정보의 수신시에, 컴퓨팅 디바이스 (40A) 는 그래픽스 데이터 (즉, 텍스처 (272)) 의 이러한 부분의 표현을 디스플레이할 수도 있어서, 아티스트는 성능 이슈와 관련되거나 성능 이슈의 원인인 특정한 텍스처 (272) 를 식별할 수 있다. 그 후, 아티스트는 성능 이슈를 완화하거나 해결하기 위해 텍스처 (272) 의 조정을 시도할 수도 있다.
일 양태에서, 컴퓨팅 디바이스 (40A) 의 DCC 애플리케이션 (127) 이, 스크린 영역 (270) 내에서와 같이, 도 11 에 도시된 정육면체와 관련된 프리미티브 그래픽스 데이터를 생성하기 위해 아티스트에 의해 사용될 수도 있다. 이러한 양태에서, 매핑 정보의 수신시에, DCC 애플리케이션 (127) 은 DCC 애플리케이션 (127) 내에서 텍스처 (272) 를 직접 식별할 수 있어서, 아티스트는 식별된 성능 이슈와 관련되는 그래픽스 데이터 (예를 들어, 텍스처 (272)) 의 부분을 볼 수 있고 변경할 수 있다.
본 개시물에 설명한 기술은 범용 마이크로프로세서, 디지털 신호 프로세서 (DSP), 응용 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA), 또는 다른 등가의 로직 디바이스내에서 구현될 수도 있다. 따라서, 여기에 사용된 바와 같은 용어 "프로세서" 또는 "제어기" 는 임의의 상술한 구조 또는 여기에 설명된 기술의 구현에 적합한 임의의 다른 구조를 칭할 수도 있다.
여기에 예시된 다양한 컴포넌트는 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합의 임의의 조합에 의해 실현될 수도 있다. 도면에서, 다양한 컴포넌트를 개별 유닛 또는 모듈로서 도시하였다. 그러나, 이들 도면을 참조하여 설명한 다양한 컴포넌트 모두 또는 몇몇은 공통 하드웨어 및/또는 소프트웨어내에서 결합된 유닛 또는 모듈로서 집적될 수도 있다. 따라서, 컴포넌트, 유닛 또는 모듈로서의 특징의 표현은 예시의 용이함을 위해 특정한 기능적 특징을 하이라이트하는 것으로 의도되고, 개별 하드웨어 또는 소프트웨어 컴포넌트에 의한 이러한 특징의 실현을 반드시 요구하지 않는다. 일부 경우에서, 다양한 유닛이 하나 이상의 프로세서에 의해 수행된 프로그래머블 프로세스로서 구현될 수도 있다.
그래픽스 디바이스 (100) 및/또는 그것의 구성 컴포넌트를 포함하는 모듈, 디바이스, 또는 컴포넌트로서 여기에 설명한 임의의 특징은 집적 로직 디바이스에서 함께 또는 별개이지만 통합가능한 로직 디바이스로서 개별적으로 구현될 수도 있다. 다양한 양태에서, 이러한 컴포넌트는 집적된 회로칩 또는 칩세트와 같은 집적 회로 디바이스로서 일괄적으로 칭할 수도 있는 하나 이상의 집적 회로 디바이스로서 적어도 부분적으로 형성될 수도 있다. 이러한 회로는 단일의 집적 회로 칩 디바이스 또는 다중의 통합가능한 집적 회로 칩 디바이스에 제공될 수도 있고, 임의의 다양한 이미지, 디스플레이, 오디오, 또는 다른 멀티미디어 애플리케이션 및 디바이스에서 사용될 수도 있다. 일부 양태에서, 예를 들어, 이러한 컴포넌트는 무선 통신 디바이스 핸드셋과 같은 모바일 디바이스의 일부를 형성할 수도 있다.
소프트웨어에서 구현되면, 이 기술들은 하나 이상의 프로세서에 의해 실행될 때, 상술한 방법들 중 하나 이상을 수행하는 명령을 갖는 코드를 포함하는 컴퓨터 판독가능한 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능한 매체는 패키징 자료를 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 판독가능한 매체는 동기 동적 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적으로 소거가능한 프로그래머블 판독 전용 메모리 (EEPROM), 임베디드 동적 랜덤 액세스 메모리 (eDRAM), 정적 랜덤 액세스 메모리 (SRAM), 플래시 메모리, 자기 또는 광학 데이터 저장 매체를 포함할 수도 있다.
추가적으로 또는 대안으로, 이 기술들은 명령 또는 데이터 구조의 형태로 코드를 반송하거나 통신하고, 하나 이상의 프로세서에 의해 액세스되고, 판독되고/되거나 실행될 수 있는 컴퓨터 판독가능한 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다. 임의의 문맥이 컴퓨터 판독가능한 매체를 적절하게 칭할 수도 있다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스트드 페어, 디지털 가입자 라인 (DSL), 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 동축 케이블, 광섬유 케이블, 트위스트드 페어, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 상기의 조합이 컴퓨터 판독가능한 매체에 또한 포함된다. 활용되는 임의의 소프트웨어가 하나 이상의 DSP, 범용 마이크로프로세서, ASIC, FPGA, 또는 다른 등가의 집적 또는 개별 로직 회로에 의해 실행될 수도 있다.
다양한 양태들을 여기에 설명하였다. 이들 및 다른 양태들은 아래의 청구항의 범위내에 있다.

Claims (56)

  1. 외부 디바이스로부터 전송되는 그래픽스 명령들을 컴퓨팅 디바이스에 의해 수신하는 단계;
    상기 외부 디바이스에 의해 생성되고 상기 외부 디바이스로부터 전송되는 매핑 정보를 상기 컴퓨팅 디바이스에 의해 수신하는 단계로서, 상기 매핑 정보는 상기 그래픽스 명령들의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터에 상기 그래픽스 명령들을 매핑하기 위한 정보를 포함하고, 상기 매핑 정보는 상기 컴퓨팅 디바이스에 의한 상기 그래픽스 명령들의 실행 이전에 상기 외부 디바이스에 의해 생성되고 상기 컴퓨팅 디바이스에 의해 수신되는, 상기 매핑 정보를 수신하는 단계;
    상기 그래픽스 명령들내의 적어도 하나의 그래픽스 명령의 실행과 관련된 성능 이슈 (issue) 를 상기 컴퓨팅 디바이스에 의해 식별하는 단계; 및
    상기 적어도 하나의 그래픽스 명령의 실행에 기초하여 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 상기 컴퓨팅 디바이스에 의해 상기 매핑 정보를 사용하는 단계를 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  2. 제 1 항에 있어서,
    상기 매핑 정보를 수신하는 단계는, 상기 적어도 하나의 그래픽스 명령의 상기 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 상기 프리미티브 그래픽스 데이터의 상기 부분에 상기 적어도 하나의 그래픽스 명령을 매핑하는 상기 정보를 수신하는 단계를 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  3. 제 2 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분은, 하나 이상의 폴리곤을 포함하고,
    상기 매핑 정보를 사용하는 단계는, 상기 적어도 하나의 그래픽스 명령의 상기 실행에 기초하여 상기 성능 이슈와 관련된 상기 하나 이상의 폴리곤을 식별하는 단계를 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  4. 제 1 항에 있어서,
    상기 프리미티브 그래픽스 데이터는, 그래픽 장면의 구성 세그먼트들을 포함하는 폴리곤 데이터 및 텍스처 데이터 중 적어도 하나를 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  5. 제 1 항에 있어서,
    상기 외부 디바이스로부터 상태 정보를 수신하는 단계로서, 상기 상태 정보는 상기 적어도 하나의 그래픽스 명령의 상기 실행과 관련되는, 상기 상태 정보를 수신하는 단계; 및
    상기 적어도 하나의 그래픽스 명령 및 상기 상태 정보에 기초하여, 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 상기 부분의 표현을 디스플레이하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  6. 제 5 항에 있어서,
    상기 상태 정보는 상기 프리미티브 그래픽스 데이터를 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  7. 제 1 항에 있어서,
    상기 외부 디바이스로부터 성능 정보를 수신하는 단계로서, 상기 성능 정보는 상기 적어도 하나의 그래픽스 명령의 상기 실행 및 상기 프리미티브 그래픽스 데이터의 상기 부분과 관련되는, 상기 성능 정보를 수신하는 단계; 및
    상기 프리미티브 그래픽스 데이터의 상기 부분과 관련된 상기 성능 이슈를 식별하기 위해 상기 성능 정보를 분석하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  8. 제 7 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분에 대한 요청된 변경을 특정하는 사용자 입력을 수신하는 단계;
    상기 요청된 변경을 프로세싱을 위해 상기 외부 디바이스로 전송하는 단계;
    상기 외부 디바이스로부터 업데이트된 성능 정보를 수신하는 단계로서, 상기 업데이트된 성능 정보는 상기 요청된 변경과 관련되는, 상기 업데이트된 성능 정보를 수신하는 단계; 및
    상기 성능 이슈가 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  9. 제 8 항에 있어서,
    상기 외부 디바이스로부터 적어도 하나의 업데이트된 그래픽스 명령을 수신하는 단계로서, 상기 적어도 하나의 업데이트된 그래픽스 명령은 상기 요청된 변경과 관련되는, 상기 적어도 하나의 업데이트된 그래픽스 명령을 수신하는 단계; 및
    상기 외부 디바이스로부터 업데이트된 매핑 정보를 수신하는 단계로서, 상기 업데이트된 매핑 정보는 상기 적어도 하나의 업데이트된 그래픽스 명령의 상기 실행과 관련되는 상기 프리미티브 그래픽스 데이터의 제 2 부분에 상기 적어도 하나의 업데이트된 그래픽스 명령을 매핑하기 위한 업데이트된 정보를 포함하는, 상기 업데이트된 매핑 정보를 수신하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  10. 제 1 항에 있어서,
    상기 적어도 하나의 그래픽스 명령에 기초하여, 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 상기 부분의 표현을 디스플레이하는 단계;
    상기 외부 디바이스로부터 파티셔닝 정보를 수신하는 단계;
    상기 수신된 파티셔닝 정보에 기초하여, 상기 프리미티브 그래픽스 데이터의 상기 부분을 오버레이하는 파티션들의 표현을 디스플레이하는 단계; 및
    상기 프리미티브 그래픽스 데이터의 상기 부분이 상기 파티션들 중 다중의 파티션들과 관련되는지를 결정하기 위해 상기 프리미티브 그래픽스 데이터의 상기 부분을 분석하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  11. 제 10 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분은 복수의 삼각형들을 포함하고,
    상기 프리미티브 그래픽스 데이터의 상기 부분을 분석하는 단계는, 상기 삼각형들 중 어느 삼각형들이 상기 파티션들 중 상기 다중의 파티션들에 걸쳐 스팬하는지를 결정하는 단계를 포함하며,
    상기 방법은, 상기 파티션들 중 상기 다중의 파티션들에 걸쳐 스팬하는 상기 삼각형들의 그래픽 표현을 디스플레이하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  12. 제 1 항에 있어서,
    상기 적어도 하나의 그래픽스 명령을 제 2 외부 디바이스로 전송하는 단계;
    상기 제 2 외부 디바이스로 상기 매핑 정보를 전송하는 단계로서, 상기 매핑 정보는 상기 프리미티브 그래픽스 데이터의 상기 부분에 상기 적어도 하나의 그래픽스 명령을 매핑하기 위한 정보를 포함하는, 상기 매핑 정보를 전송하는 단계; 및
    상기 프리미티브 그래픽스 데이터의 상기 부분과 관련된 상기 성능 이슈의 표시를 상기 제 2 외부 디바이스로 전송하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  13. 제 12 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분에 대한 요청된 변경을 상기 제 2 외부 디바이스로부터 수신하는 단계;
    상기 요청된 변경을 프로세싱을 위해 상기 외부 디바이스로 전송하는 단계; 및
    상기 요청된 변경과 관련되는 업데이트된 성능 정보를 상기 외부 디바이스로부터 수신하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  14. 제 13 항에 있어서,
    상기 성능 이슈가 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하는 단계; 및
    상기 성능 이슈가 해결되었는지를 나타내는 제 2 표시를 상기 제 2 외부 디바이스로 전송하는 단계를 더 포함하는, 그래픽스 명령들을 프로세싱하는 방법.
  15. 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체로서,
    상기 컴퓨터 실행가능한 명령들은 컴퓨팅 디바이스의 하나 이상의 프로세로 하여금,
    외부 디바이스로부터 전송되는 그래픽스 명령들을 수신하게 하고,
    상기 외부 디바이스에 의해 생성되고 상기 외부 디바이스로부터 전송되는 매핑 정보를 수신하게 하고,
    상기 그래픽스 명령들내의 적어도 하나의 그래픽스 명령의 실행과 관련된 성능 이슈를 식별하게 하며,
    상기 적어도 하나의 그래픽스 명령의 실행에 기초하여 상기 성능 이슈와 관련되는 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 상기 매핑 정보를 사용하게 하며,
    상기 매핑 정보는 상기 그래픽스 명령들의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 상기 프리미티브 그래픽스 데이터에 상기 그래픽스 명령들을 매핑하기 위한 정보를 포함하고, 상기 매핑 정보는 상기 컴퓨팅 디바이스에 의한 상기 그래픽스 명령들의 실행 이전에 상기 외부 디바이스에 의해 생성되고 상기 컴퓨팅 디바이스에 의해 수신되는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  16. 제 15 항에 있어서,
    상기 하나 이상의 프로세서로 하여금 상기 매핑 정보를 수신하게 하는 상기 컴퓨터 실행가능한 명령들은, 상기 하나 이상의 프로세서로 하여금, 상기 적어도 하나의 그래픽스 명령의 상기 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 상기 프리미티브 그래픽스 데이터의 상기 부분에 상기 적어도 하나의 그래픽스 명령을 매핑하는 상기 정보를 수신하게 하는 컴퓨터 실행가능한 명령들을 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  17. 제 16 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분은 하나 이상의 폴리곤을 포함하고,
    상기 하나 이상의 프로세서로 하여금 상기 매핑 정보를 사용하게 하는 상기 컴퓨터 실행가능한 명령들은, 상기 하나 이상의 프로세서로 하여금, 상기 적어도 하나의 그래픽스 명령의 상기 실행에 기초하여 상기 성능 이슈와 관련되는 상기 하나 이상의 폴리곤을 식별하게 하는 컴퓨터 실행가능한 명령들을 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  18. 제 15 항에 있어서,
    상기 프리미티브 그래픽스 데이터는, 그래픽 장면의 구성 세그먼트들을 포함하는 폴리곤 데이터 및 텍스처 데이터 중 적어도 하나를 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  19. 제 15 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 적어도 하나의 그래픽스 명령의 상기 실행과 관련되는 상태 정보를 상기 외부 디바이스로부터 수신하게 하며,
    상기 적어도 하나의 그래픽스 명령 및 상기 상태 정보에 기초하여 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 상기 부분의 표현을 디스플레이하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  20. 제 19 항에 있어서,
    상기 상태 정보는 상기 프리미티브 그래픽스 데이터를 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  21. 제 15 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 적어도 하나의 그래픽스 명령의 상기 실행 및 상기 프리미티브 그래픽스 데이터의 상기 부분과 관련되는 성능 정보를 상기 외부 디바이스로부터 수신하게 하며,
    상기 프리미티브 그래픽스 데이터의 상기 부분과 관련된 상기 성능 이슈를 식별하기 위해 상기 성능 정보를 분석하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  22. 제 21 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 프리미티브 그래픽스 데이터의 상기 부분에 대한 요청된 변경을 특정하는 사용자 입력을 수신하게 하고,
    상기 요청된 변경을 프로세싱을 위해 상기 외부 디바이스로 전송하게 하고,
    상기 요청된 변경과 관련되는 업데이트된 성능 정보를 상기 외부 디바이스로부터 수신하게 하며,
    상기 성능 이슈가 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  23. 제 22 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 요청된 변경과 관련되는 적어도 하나의 업데이트된 그래픽스 명령을 상기 외부 디바이스로부터 수신하게 하며,
    상기 적어도 하나의 업데이트된 그래픽스 명령의 상기 실행과 관련되는 상기 프리미티브 그래픽스 데이터의 제 2 부분에 상기 적어도 하나의 업데이트된 그래픽스 명령을 매핑하기 위한 정보를 포함하는 업데이트된 매핑 정보를 상기 외부 디바이스로부터 수신하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  24. 제 15 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 적어도 하나의 그래픽스 명령에 기초하여 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 상기 부분의 표현을 디스플레이하게 하고,
    상기 외부 디바이스로부터 파티셔닝 정보를 수신하게 하고,
    상기 수신된 파티셔닝 정보에 기초하여 상기 프리미티브 그래픽스 데이터의 상기 부분을 오버레이하는 파티션들의 표현을 디스플레이하게 하며,
    상기 프리미티브 그래픽스 데이터의 상기 부분이 상기 파티션들 중 다중의 파티션들과 관련되는지를 결정하기 위해 상기 프리미티브 그래픽스 데이터의 상기 부분을 분석하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  25. 제 24 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분은 복수의 삼각형들을 포함하고,
    상기 하나 이상의 프로세서로 하여금 상기 프리미티브 그래픽스 데이터의 상기 부분을 분석하게 하는 상기 컴퓨터 실행가능한 명령들은, 상기 하나 이상의 프로세서로 하여금 상기 삼각형들 중 어느 삼각형들이 상기 파티션들 중 다중의 파티션들에 걸쳐 스팬하는지 결정하게 하는 컴퓨터 실행가능한 명령들을 포함하며,
    상기 컴퓨터 판독가능한 매체는, 상기 하나 이상의 프로세서로 하여금,
    상기 파티션들 중 다중의 파티션들에 걸쳐 스팬하는 상기 삼각형들의 그래픽 표현을 디스플레이하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  26. 제 15 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 적어도 하나의 그래픽스 명령을 제 2 외부 디바이스로 전송하게 하고,
    상기 프리미티브 그래픽스 데이터의 상기 부분에 상기 적어도 하나의 그래픽스 명령을 매핑하기 위한 정보를 포함하는 매핑 정보를 상기 제 2 외부 디바이스로 전송하게 하며,
    상기 프리미티브 그래픽스 데이터의 상기 부분과 관련된 상기 성능 이슈의 표시를 상기 제 2 외부 디바이스로 전송하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  27. 제 26 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 프리미티브 그래픽스 데이터의 상기 부분에 대한 요청된 변경을 상기 제 2 외부 디바이스로부터 수신하게 하고,
    상기 요청된 변경을 프로세싱을 위해 상기 외부 디바이스로 전송하게 하며,
    상기 요청된 변경과 관련되는 업데이트된 성능 정보를 상기 외부 디바이스로부터 수신하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  28. 제 27 항에 있어서,
    상기 하나 이상의 프로세서로 하여금,
    상기 성능 이슈가 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하게 하며,
    상기 성능 이슈가 해결되었는지 나타내는 제 2 표시를 상기 제 2 외부 디바이스로 전송하게 하는 컴퓨터 실행가능한 명령들을 더 포함하는, 컴퓨터 실행가능한 명령들을 포함하는 컴퓨터 판독가능한 매체.
  29. 디바이스로서,
    외부 디바이스로부터 전송되는 그래픽스 명령들을 수신하는 수단;
    상기 외부 디바이스에 의해 생성되고 상기 외부 디바이스로부터 전송되는 매핑 정보를 수신하는 수단으로서, 상기 매핑 정보는 상기 그래픽스 명령들의 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 프리미티브 그래픽스 데이터에 상기 그래픽스 명령들을 매핑하기 위한 정보를 포함하고, 상기 매핑 정보는 상기 디바이스에 의한 상기 그래픽스 명령들의 실행 이전에 상기 외부 디바이스에 의해 생성되고 상기 디바이스에 의해 수신되는, 상기 매핑 정보를 수신하는 수단;
    상기 그래픽스 명령들내의 적어도 하나의 그래픽스 명령의 실행과 관련된 성능 이슈 (issue) 를 식별하는 수단; 및
    상기 적어도 하나의 그래픽스 명령의 실행에 기초하여 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 부분을 식별하기 위해 상기 매핑 정보를 사용하는 수단을 포함하는, 디바이스.
  30. 제 29 항에 있어서,
    상기 그래픽스 명령들을 수신하는 수단, 상기 매핑 정보를 수신하는 수단, 상기 성능 이슈를 식별하는 수단, 및 상기 매핑 정보를 사용하는 수단은,
    하나 이상의 프로세서를 포함하며,
    상기 하나 이상의 프로세서는,
    상기 외부 디바이스로부터 전송되는 상기 그래픽스 명령들을 수신하고,
    상기 외부 디바이스에 의해 생성되고 상기 외부 디바이스로부터 전송되는 상기 매핑 정보를 수신하고,
    상기 적어도 하나의 그래픽스 명령의 실행과 관련된 상기 성능 이슈를 식별하며,
    상기 적어도 하나의 그래픽스 명령의 실행에 기초하여 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 상기 부분을 식별하기 위해 상기 매핑 정보를 사용하도록 구성되는, 디바이스.
  31. 제 30 항에 있어서,
    상기 하나 이상의 프로세서는, 상기 적어도 하나의 그래픽스 명령의 상기 실행 동안 하나 이상의 그래픽스 이미지를 렌더링하기 위해 사용되는 상기 프리미티브 그래픽스 데이터의 상기 부분에 상기 적어도 하나의 그래픽스 명령을 매핑하는 상기 정보를 적어도 수신함으로써 상기 매핑 정보를 수신하도록 구성되는, 디바이스.
  32. 제 31 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분은 하나 이상의 폴리곤을 포함하고,
    상기 하나 이상의 프로세서는, 상기 적어도 하나의 그래픽스 명령의 상기 실행에 기초하여 상기 성능 이슈와 관련되는 상기 하나 이상의 폴리곤을 적어도 식별함으로써 상기 매핑 정보를 사용하도록 구성되는, 디바이스.
  33. 제 30 항에 있어서,
    상기 프리미티브 그래픽스 데이터는, 그래픽 장면의 구성 세그먼트들을 포함하는 폴리곤 데이터 및 텍스처 데이터 중 적어도 하나를 포함하는, 디바이스.
  34. 제 30 항에 있어서,
    상기 하나 이상의 프로세서는 또한, 상기 적어도 하나의 그래픽스 명령의 상기 실행과 관련되는 상태 정보를 상기 외부 디바이스로부터 수신하며, 상기 적어도 하나의 그래픽스 명령 및 상기 상태 정보에 기초하여 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 상기 부분의 표현을 디스플레이하도록 구성되는, 디바이스.
  35. 제 34 항에 있어서,
    상기 상태 정보는 상기 프리미티브 그래픽스 데이터를 포함하는, 디바이스.
  36. 제 30 항에 있어서,
    상기 하나 이상의 프로세서는 또한, 상기 적어도 하나의 그래픽스 명령의 상기 실행 및 상기 프리미티브 그래픽스 데이터의 상기 부분과 관련되는 성능 정보를 상기 외부 디바이스로부터 수신하며, 상기 프리미티브 그래픽스 데이터의 상기 부분과 관련된 상기 성능 이슈를 식별하기 위해 상기 성능 정보를 분석하도록 구성되는, 디바이스.
  37. 제 36 항에 있어서,
    상기 하나 이상의 프로세서는 또한,
    상기 프리미티브 그래픽스 데이터의 상기 부분에 대한 요청된 변경을 특정하는 사용자 입력을 수신하고,
    상기 요청된 변경을 프로세싱을 위해 상기 외부 디바이스로 전송하고,
    상기 요청된 변경과 관련되는 업데이트된 성능 정보를 상기 외부 디바이스로부터 수신하며,
    상기 성능 이슈가 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하도록 구성되는, 디바이스.
  38. 제 37 항에 있어서,
    상기 하나 이상의 프로세서는 또한, 상기 요청된 변경과 관련되는 적어도 하나의 업데이트된 그래픽스 명령을 상기 외부 디바이스로부터 수신하며, 상기 적어도 하나의 업데이트된 그래픽스 명령의 상기 실행과 관련되는 상기 프리미티브 그래픽스 데이터의 제 2 부분에 상기 적어도 하나의 업데이트된 그래픽스 명령을 매핑하기 위한 업데이트된 정보를 포함하는 업데이트된 매핑 정보를 상기 외부 디바이스로부터 수신하도록 구성되는, 디바이스.
  39. 제 30 항에 있어서,
    상기 하나 이상의 프로세서는 또한,
    상기 적어도 하나의 그래픽스 명령에 기초하여 상기 성능 이슈와 관련되는 상기 프리미티브 그래픽스 데이터의 상기 부분의 표현을 디스플레이하고,
    상기 외부 디바이스로부터 파티셔닝 정보를 수신하고,
    상기 수신된 파티셔닝 정보에 기초하여 상기 프리미티브 그래픽스 데이터의 상기 부분을 오버레이하는 파티션들의 표현을 디스플레이하며,
    상기 프리미티브 그래픽스 데이터의 상기 부분이 상기 파티션들 중 다중의 파티션들과 관련되는지를 결정하기 위해 상기 프리미티브 그래픽스 데이터의 상기 부분을 분석하도록 구성되는, 디바이스.
  40. 제 39 항에 있어서,
    상기 프리미티브 그래픽스 데이터의 상기 부분은 복수의 삼각형들을 포함하고,
    상기 하나 이상의 프로세서는, 상기 삼각형들 중 어느 삼각형들이 상기 파티션들 중 다중의 파티션들에 걸쳐 스팬하는지 적어도 결정함으로써 상기 프리미티브 그래픽스 데이터의 상기 부분을 분석하도록 구성되며,
    상기 하나 이상의 프로세서는 또한, 상기 파티션들 중 다중의 파티션들에 걸쳐 스팬하는 상기 삼각형들의 그래픽 표현을 디스플레이하도록 구성되는, 디바이스.
  41. 제 30 항에 있어서,
    상기 하나 이상의 프로세서는 또한,
    상기 적어도 하나의 그래픽스 명령을 제 2 외부 디바이스로 전송하고,
    상기 적어도 하나의 그래픽스 명령을 상기 프리미티브 그래픽스 데이터의 상기 부분에 매핑하기 위한 정보를 포함하는 매핑 정보를 상기 제 2 외부 디바이스로 전송하며,
    상기 프리미티브 그래픽스 데이터의 상기 부분과 관련된 상기 성능 이슈의 표시를 상기 제 2 외부 디바이스로 전송하도록 구성되는, 디바이스.
  42. 제 41 항에 있어서,
    상기 적어도 하나의 프로세서는 또한,
    상기 프리미티브 그래픽스 데이터의 상기 부분에 대한 요청된 변경을 상기 제 2 외부 디바이스로부터 수신하고,
    상기 요청된 변경을 프로세싱을 위해 상기 외부 디바이스로 전송하며,
    상기 요청된 변경과 관련되는 업데이트된 성능 정보를 상기 외부 디바이스로부터 수신하도록 구성되는, 디바이스.
  43. 제 42 항에 있어서,
    상기 하나 이상의 프로세서는 또한,
    상기 성능 이슈가 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하며, 상기 성능 이슈가 해결되었는지를 나타내는 제 2 표시를 상기 제 2 외부 디바이스로 전송하도록 구성되는, 디바이스.
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
KR1020117004378A 2008-07-25 2009-07-24 성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑 KR101267120B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8366508P 2008-07-25 2008-07-25
US61/083,665 2008-07-25
US12/507,756 2009-07-22
US12/507,756 US9792718B2 (en) 2008-07-25 2009-07-22 Mapping graphics instructions to associated graphics data during performance analysis
PCT/US2009/051773 WO2010011981A1 (en) 2008-07-25 2009-07-24 Mapping graphics instructions to associated graphics data during performance analysis

Publications (2)

Publication Number Publication Date
KR20110033306A KR20110033306A (ko) 2011-03-30
KR101267120B1 true KR101267120B1 (ko) 2013-05-27

Family

ID=41568224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117004378A KR101267120B1 (ko) 2008-07-25 2009-07-24 성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑

Country Status (8)

Country Link
US (1) US9792718B2 (ko)
EP (1) EP2324459A1 (ko)
JP (1) JP5242789B2 (ko)
KR (1) KR101267120B1 (ko)
CN (1) CN102089786B (ko)
CA (1) CA2730299A1 (ko)
TW (1) TW201015488A (ko)
WO (1) WO2010011981A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100020069A1 (en) * 2008-07-25 2010-01-28 Qualcomm Incorporated Partitioning-based performance analysis for graphics imaging
US9182755B2 (en) 2010-08-26 2015-11-10 Rockwell Automation Technologies, Inc. Automated operator interface generation in a control system
US20120113091A1 (en) * 2010-10-29 2012-05-10 Joel Solomon Isaacson Remote Graphics
US9292902B1 (en) * 2011-03-30 2016-03-22 Google Inc. Remote rendering control objects
US8798775B2 (en) * 2011-06-28 2014-08-05 Rockwell Automation Technologies, Inc. Binding graphic elements to controller data
CN103974062B (zh) * 2013-06-24 2018-10-26 福州瑞芯微电子股份有限公司 图像显示装置、图像显示系统和图像显示方法
US10109085B2 (en) * 2014-01-08 2018-10-23 Walmart Apollo, Llc Data perspective analysis system and method
JP6344667B2 (ja) * 2014-09-03 2018-06-20 国立大学法人東北大学 半導体装置およびその製造方法
US10552639B1 (en) 2019-02-04 2020-02-04 S2 Systems Corporation Local isolator application with cohesive application-isolation interface
US10558824B1 (en) 2019-02-04 2020-02-11 S2 Systems Corporation Application remoting using network vector rendering
US10452868B1 (en) 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005116930A1 (en) * 2004-05-24 2005-12-08 Koninklijke Philips Electronics N.V. Tile based graphics rendering
US20080007563A1 (en) 2006-07-10 2008-01-10 Microsoft Corporation Pixel history for a graphics application

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701405A (en) 1995-06-21 1997-12-23 Apple Computer, Inc. Method and apparatus for directly evaluating a parameter interpolation function used in rendering images in a graphics system that uses screen partitioning
US5760778A (en) 1995-08-15 1998-06-02 Friedman; Glenn M. Algorithm for representation of objects to enable robotic recongnition
US5706479A (en) 1995-10-02 1998-01-06 Apple Computer, Inc. Method and apparatus for dynamically detecting overflow of a multi-layer buffer
JP3175757B2 (ja) 1996-08-13 2001-06-11 日本電気株式会社 デバッグシステム
US5889994A (en) 1997-03-27 1999-03-30 Hewlett-Packard, Co. Method for cataloging graphics primitives by rendering state
USH1812H (en) 1997-10-24 1999-11-02 Sun Microsystems, Inc. Method for encoding bounding boxes of drawing primitives to be rendered for multi-resolution supersampled frame buffers
US6091422A (en) * 1998-04-03 2000-07-18 Avid Technology, Inc. System for editing complex visual data providing a continuously updated rendering
JP2000020354A (ja) 1998-07-07 2000-01-21 Hitachi Ltd 実行ステップ数の編集装置
US6952215B1 (en) 1999-03-31 2005-10-04 International Business Machines Corporation Method and system for graphics rendering using captured graphics hardware instructions
JP2001191274A (ja) 1999-12-30 2001-07-17 Sony Corp データ保持装置、ロボット装置、変更装置及び変更方法
US6763377B1 (en) 2000-03-03 2004-07-13 International Business Machines Corporation Asset management and scheduling graphical user interface for media streamer
US6636232B2 (en) 2001-01-12 2003-10-21 Hewlett-Packard Development Company, L.P. Polygon anti-aliasing with any number of samples on an irregular sample grid using a hierarchical tiler
JP2003052160A (ja) 2001-08-06 2003-02-21 Tokyo R & D Co Ltd モータ
US20030156131A1 (en) 2002-02-21 2003-08-21 Samir Khazaka Method and apparatus for emulating a mobile device
US6856314B2 (en) 2002-04-18 2005-02-15 Stmicroelectronics, Inc. Method and system for 3D reconstruction of multiple views with altering search path and occlusion modeling
US20040027377A1 (en) 2002-08-06 2004-02-12 Grace Hays User interface design and validation including dynamic data
US7623892B2 (en) 2003-04-02 2009-11-24 Palm, Inc. System and method for enabling a person to switch use of computing devices
US7215810B2 (en) 2003-07-23 2007-05-08 Orametrix, Inc. Method for creating single 3D surface model from a point cloud
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US7446777B2 (en) 2003-09-26 2008-11-04 Rensselaer Polytechnic Institute System and method of computing and displaying property-encoded surface translator descriptors
WO2005109316A2 (en) 2004-05-03 2005-11-17 Perkinelmer Las, Inc. Method and apparatus for automatically segmenting a microarray image
US7167171B2 (en) 2004-06-29 2007-01-23 Intel Corporation Methods and apparatuses for a polygon binning process for rendering
CN100422923C (zh) 2004-11-23 2008-10-01 国际商业机器公司 增强便携式装置的显示输出能力的设备和方法
US8589142B2 (en) 2005-06-29 2013-11-19 Qualcomm Incorporated Visual debugging system for 3D user interface program
US7478187B2 (en) 2006-03-28 2009-01-13 Dell Products L.P. System and method for information handling system hot insertion of external graphics
DE102006014902B4 (de) 2006-03-30 2009-07-23 Siemens Ag Bildverarbeitungseinrichtung zur erweiterten Darstellung von dreidimensionalen Bilddatensätzen
US20080049015A1 (en) 2006-08-23 2008-02-28 Baback Elmieh System for development of 3D content used in embedded devices
US7714864B2 (en) * 2006-11-16 2010-05-11 Microsoft Corporation Visual resource profiler for graphical applications
US8296738B1 (en) * 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US8402394B2 (en) 2007-09-28 2013-03-19 Yahoo! Inc. Three-dimensional website visualization
US8714982B2 (en) 2007-10-15 2014-05-06 Casey Wimsatt System and method for teaching social skills, social thinking, and social awareness
US20100020069A1 (en) 2008-07-25 2010-01-28 Qualcomm Incorporated Partitioning-based performance analysis for graphics imaging

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005116930A1 (en) * 2004-05-24 2005-12-08 Koninklijke Philips Electronics N.V. Tile based graphics rendering
US20080007563A1 (en) 2006-07-10 2008-01-10 Microsoft Corporation Pixel history for a graphics application

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses

Also Published As

Publication number Publication date
US9792718B2 (en) 2017-10-17
KR20110033306A (ko) 2011-03-30
CA2730299A1 (en) 2010-01-28
CN102089786A (zh) 2011-06-08
CN102089786B (zh) 2014-04-30
JP2011529237A (ja) 2011-12-01
TW201015488A (en) 2010-04-16
JP5242789B2 (ja) 2013-07-24
US20100020098A1 (en) 2010-01-28
WO2010011981A1 (en) 2010-01-28
EP2324459A1 (en) 2011-05-25

Similar Documents

Publication Publication Date Title
KR101267120B1 (ko) 성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑
KR101286318B1 (ko) 렌더링된 그래픽 엘리먼트들을 위한 성능 메트릭들의 시각적 표현의 디스플레이
US8587593B2 (en) Performance analysis during visual creation of graphics images
KR101431311B1 (ko) 그래픽 이미지들의 시각적 창작 동안의 성능 분석
KR20170040698A (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
CN116185743B (zh) OpenGL接口的双显卡对比调试方法、装置及介质
US11270494B2 (en) Shadow culling
US20130063462A1 (en) Tile-based image processing using mipmaps
KR101286938B1 (ko) 그래픽스 이미징을 위한 파티셔닝-기반 성능 분석
CN113457161A (zh) 画面展示方法、信息生成方法、装置、设备及存储介质
KR20160068204A (ko) 메시 지오메트리를 위한 데이터 처리 방법 및 이를 기록한 컴퓨터 판독 가능 저장 매체
Thorn et al. Unity Basics for 2D Games
Chaudhari Real-Time Cross-Sectioning of Dynamic Particle Systems

Legal Events

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

Payment date: 20160330

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee