KR20130043241A - 그래픽 이미지들의 시각적 창작 동안의 성능 분석 - Google Patents

그래픽 이미지들의 시각적 창작 동안의 성능 분석 Download PDF

Info

Publication number
KR20130043241A
KR20130043241A KR1020137008390A KR20137008390A KR20130043241A KR 20130043241 A KR20130043241 A KR 20130043241A KR 1020137008390 A KR1020137008390 A KR 1020137008390A KR 20137008390 A KR20137008390 A KR 20137008390A KR 20130043241 A KR20130043241 A KR 20130043241A
Authority
KR
South Korea
Prior art keywords
instructions
graphics
graphical
graphics device
external graphics
Prior art date
Application number
KR1020137008390A
Other languages
English (en)
Inventor
바백 엘미에
제임스 피 리츠
앵거스 도비
토마스 포티어
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/507,732 external-priority patent/US8587593B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20130043241A publication Critical patent/KR20130043241A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Debugging And Monitoring (AREA)
  • Image Generation (AREA)
  • Stored Programmes (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

일반적으로, 본 발명은 그래픽 이미지를 시각적으로 창작하기 위해 그래픽 디바이스로부터 수신된 그래픽 명령들 및 상태 정보를 사용하기 위한 기술에 관한 것이다. 또한, 성능 분석은, 그래픽 디바이스 상에서의 명령 실행 동안 잠재적인 병목들을 식별하기 위해 수행될 수도 있다. 일 예시적인 디바이스는 디스플레이 디바이스 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은, 외부 그래픽 디바이스로부터 복수의 그래픽 명령들을 수신하도록 구성되며, 여기서, 그래픽 명령들은, 그래픽 이미지를 디스플레이하고 외부 그래픽 디바이스로부터 상태 정보를 수신하도록 외부 그래픽 디바이스에 의해 실행되고, 여기서, 상태 정보는 외부 그래픽 디바이스 상에서의 그래픽 명령들의 실행과 관련된다. 또한, 하나 이상의 프로세서들은, 그래픽 명령들 및 상태 정보에 따라 그래픽 이미지의 표현을 디스플레이 디바이스 상에 디스플레이하도록 구성된다.

Description

그래픽 이미지들의 시각적 창작 동안의 성능 분석{PERFORMANCE ANALYSIS DURING VISUAL CREATION OF GRAPHICS IMAGES}
35 U.S.C. §119 하의 우선권 주장
본 특허 출원은, 발명의 명칭이 PERFORMANCE ANALYSIS DURING VISUAL CREATION OF GRAPHICS IMAGES 로서 2008년 7월 25일자로 출원되었고, 본 발명의 양수인에게 양도되었으며, 여기에 참조로서 명백히 포함되는 가출원 제 61/083,656호에 대한 우선권을 주장한다.
공동-계류중인 특허 출원에 대한 참조
본 특허 출원은 다음의 공동-계류중인 미국 특허 출원, 즉,
2008년 7월 25일자로 출원되었고, 대리인 참조번호 080969P1 을 갖고, 본 출원과 동시에 출원되었고, 본 발명의 양수인에게 양도되었으며, 여기에 참조로서 명백히 포함되는 제 61/083,659호; 및
2008년 7월 25일자로 출원되었고, 대리인 참조번호 080971P1 을 갖고, 본 출원과 동시에 출원되었고, 본 발명의 양수인에게 양도되었으며, 여기에 참조로서 명백히 포함되는 제 61/083,665호;
와 관련된다.
본 발명은 그래픽 이미지들의 디스플레이에 관한 것이다.
그래픽 프로세서들은, 비디오 게임들, 그래픽 프로그램들, 컴퓨터-보조 설계 (CAD) 애플리케이션들, 시뮬레이션 및 가시화 툴들, 및 이미징과 같은 다양한 애플리케이션들에 대해 2차원 (2D) 및 3차원 (3D) 이미지들을 렌더링하기 위해 광범위하게 사용된다. 디스플레이 프로세서들은, 디스플레이 디바이스를 통한 사용자로의 프리젠테이션을 위해 그래픽 프로세서의 렌더링된 출력을 디스플레이하는데 사용될 수도 있다.
OpenGL
Figure pat00001
(Open Graphics Library) 는, 2D 및 3D 그래픽을 생성하는 애플리케이션을 기입할 경우 사용될 수도 있는 애플리케이션 프로그래밍 인터페이스 (API) 를 정의하는 표준 규격이다. 자바와 같은 다른 언어들은 그들 자신의 표준 프로세스들을 통해 OpenGL API에 대한 바인딩 (binding) 들을 정의할 수도 있다. 그 인터페이스는, 간단한 프리미티브 (primitive) 들로부터 장면들을 인출하는데 사용될 수 있는 다수의 기능 호들 또는 명령들을 포함한다. 그 후, 그래픽 프로세서들, 멀티-미디어 프로세서들, 및 심지어 범용 CPU들은, OpenGL 기능 호들을 사용하여 기입되는 애플리케이션들을 실행할 수 있다. OpenGL ES (embedded system) 은, 이동 무선 전화기, 디지털 멀티미디어 플레이어, 개인 휴대 정보 단말기 (PDA), 또는 비디오 게임 콘솔과 같은 임베디드 디바이스들에 대해 설계되는 OpenGL의 변형이다.
3D 그래픽 애플리케이션들과 같은 그래픽 애플리케이션들은, API들 또는 명령들을 호출함으로써 장면의 콘텐츠들을 설명 또는 정의할 수도 있으며, 차례로, 그 API들 및 명령들은 이미지를 생성하기 위해 그래픽 디바이스 내의 하나 이상의 프로세서들과 같은 하부 그래픽 하드웨어를 사용한다. 그래픽 하드웨어는, 이들 API들을 통해 수행되는 일련의 상태 천이들을 경험할 수도 있다. 인출 호 또는 명령과 같은 각각의 API 호에 대한 풀 세트의 상태들은, 이미지가 하드웨어에 의해 렌더링되는 프로세스를 설명할 수도 있다.
일반적으로, 본 발명은, 이동 디바이스와 같은 그래픽 디바이스로부터 전송되는 상태 정보와 함께 그래픽 명령들 또는 호 스트림들을 캡쳐 및 분석하기 위한 기술들에 관한 것이다. 그래픽 명령들은 애플리케이션 프로그래밍 인터페이스 (API) 명령들로부터 생성되거나 컴파일될 수도 있다. 그래픽 명령들 및 상태 정보는, 개인용 컴퓨터와 같은 애플리케이션 컴퓨팅 디바이스에 통신 매체를 통해 송신될 수도 있고, 시뮬레이션 환경 내에서 (3D 이미지와 같은) 그래픽 이미지를 디스플레이하는데 사용될 수도 있다.
디스플레이된 그래픽 이미지는 그래픽 디바이스 상에서 디스플레이되는 이미지의 표현일 수도 있다. 시뮬레이션 환경은, 이미지 또는 (일련의 이미지들을 포함할 수도 있는) 장면을 재생성할 수 있다. 그래픽 디바이스 상에서 프리젠테이션됨에 따라 시뮬레이션 환경이 장면을 생성할 수도 있기 때문에, 애플리케이션 개발자들은, 그들의 그래픽 애플리케이션에서의 성능 이슈들 또는 병목들, 및 그러한 애플리케이션들의 전체 성능을 개선시킬 수도 있는 프로토타입 변형들을 격리시킬 수 있다.
일 양태에서, 방법은, 외부 그래픽 디바이스로부터 복수의 그래픽 명령들을 수신하는 단계로서, 그 그래픽 명령들은 그래픽 이미지를 디스플레이하기 위해 외부 그래픽 디바이스에 의해 실행되는, 그 복수의 그래픽 명령들을 수신하는 단계, 및 외부 그래픽 디바이스로부터 상태 정보를 수신하는 단계로서, 그 상태 정보는 외부 그래픽 디바이스 상에서의 그래픽 명령들의 실행과 관련되는, 그 상태 정보를 수신하는 단계를 포함한다. 그 방법은, 그래픽 명령들 및 상태 정보에 따라 그래픽 이미지의 표현을 디스플레이하는 단계를 더 포함한다. 특정한 경우에서, 그 방법은, 그래픽 명령들의 수신 단계, 상태 정보의 수신 단계, 및 그래픽 이미지의 표현을 디스플레이하는 단계를 그래픽 이미지의 다수의 프레임들에 대해 반복하는 단계를 더 포함한다. 특정한 경우에서, 그 방법은, 외부 그래픽 디바이스로부터 성능 정보를 수신하는 단계로서, 그 성능 정보는 외부 그래픽 디바이스 상에서의 그래픽 명령들의 실행과 관련되는, 그 성능 정보를 수신하는 단계, 및 그래픽 명령들의 실행 동안 외부 그래픽 상에서 하나 이상의 성능 이슈들을 식별하도록 성능 정보를 분석하는 단계를 더 포함한다.
본 발명에서 설명된 기술들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 소프트웨어는, 마이크로프로세서, 주문형 집적 회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA), 또는 디지털 신호 프로세서 (DSP) 와 같은 하나 이상의 프로세서들, 또는 다른 동등한 집적 또는 이산 로직 회로로서 지칭될 수도 있는 프로세서에서 실행될 수도 있다. 초기에, 그 기술들을 실행하기 위한 명령들을 포함하는 소프트웨어는, 컴퓨터-판독가능 매체 내에 저장되고 프로세서에 의해 로딩 및 실행될 수도 있다.
따라서, 본 발명은 프로세서로 하여금, 본 명세서에서 설명된 바와 같은 임의의 다양한 기술들을 수행하게 하기 위한 명령들을 포함하는 컴퓨터-판독가능 매체를 또한 고려한다. 몇몇 경우, 컴퓨터-판독가능 매체는 제조사들에 판매될 수도 있고/있거나 디바이스에서 사용될 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수도 있으며, 몇몇 경우, 패키징 재료를 또한 포함할 수도 있다.
하나 이상의 양태들의 세부사항들은 첨부한 도면 및 아래의 설명에서 개시된다. 다른 특성들, 목적들, 및 이점들은 설명 및 도면, 및 청구항으로부터 명백해질 것이다.
도 1은 본 발명의 일 양태에 따른, 상태 및/또는 성능 정보와 함께 그래픽 명령들을 애플리케이션 컴퓨팅 디바이스에 제공할 수도 있는 그래픽 디바이스를 도시한 블록도이다.
도 2는, 본 발명의 또 다른 양태에 따른, 상태 및/또는 성능 정보와 함께 그래픽 명령들을 애플리케이션 컴퓨팅 디바이스에 제공할 수도 있는 그래픽 디바이스를 도시한 블록도이다.
도 3은 본 발명의 일 양태에 따른, 도 1에 도시된 그래픽 프로세싱 시스템, 그래픽 드라이버, 및 애플리케이션 컴퓨팅 디바이스의 특정한 세부사항들을 도시한 블록도이다.
도 4는 본 발명의 일 양태에 따른, 도 1에 도시된 제어 프로세서, 그래픽 프로세서, 버텍스 프로세서, 및 디스플레이 프로세서에 의해 수행될 수도 있는 동작들의 부가적인 세부사항들을 도시한 흐름도이다.
도 5는 본 발명의 일 양태에 따른, 도 3에 도시된 그래픽 드라이버의 부가적인 세부사항들을 도시한 블록도이다.
도 6은 본 발명의 일 양태에 따른, 도 1 또는 도 2에 도시된 그래픽 디바이스에 의해 수행될 수도 있는 방법의 흐름도이다.
도 7은 본 발명의 일 양태에 따른, 도 1 또는 도 2에 도시된 애플리케이션 컴퓨팅 디바이스에 의해 수행될 수도 있는 제 1 방법의 흐름도이다.
도 8은 본 발명의 일 양태에 따른, 도 1 또는 도 2에 도시된 애플리케이션 컴퓨팅 디바이스에 의해 수행될 수도 있는 제 2 방법의 흐름도이다.
도 9는 본 발명의 일 양태에 따른, 그래픽 윈도우에서 정보를 디스플레이하기 위한 디스플레이 디바이스에 커플링된 그래픽 디바이스의 일 예를 도시한 개념도이다.
도 10은 본 발명의 일 양태에 따른, 그래픽 윈도우 내에서 정보를 디스플레이하는 디스플레이 디바이스에 커플링된 그래픽 디바이스의 또 다른 예를 도시한 개념도이다.
도 11은 본 발명의 일 양태에 따른, 도 10의 디스플레이 디바이스에 의해 디스플레이될 수도 있는 통계 및/또는 텍스처 정보의 일 예를 도시한 다이어그램이다.
도 12는 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 상에서 디스플레이될 수도 있는 오버라이드 스크린의 일 예를 도시한 스크린도이다.
도 13은 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 상에서 디스플레이될 수도 있는 오버라이드 정보의 일 예를 도시한 스크린도이다.
도 14는 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 상에서 디스플레이될 수도 있는 텍스처 정보의 일 예를 도시한 스크린도이다.
도 15는 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 상에서 디스플레이될 수도 있는 성능 정보의 일 예를 도시한 스크린도이다.
도 1은 본 발명의 일 양태에 따른, 상태 및/또는 성능 정보 (32) 와 함께 그래픽 명령들 (30) 을 애플리케이션 컴퓨팅 디바이스 (20) 에 제공할 수도 있는 그래픽 디바이스 (2) 를 도시한 블록도이다. 그래픽 디바이스 (2) 는 자립형 디바이스일 수도 있거나 더 큰 시스템의 일부일 수도 있다. 예를 들어, 그래픽 디바이스 (2) 는 (무선 이동 핸드셋과 같은) 무선 통신 디바이스를 포함할 수도 있거나, 디지털 카메라, 비디오 카메라, 디지털 멀티미디어 플레이어, 개인 휴대 정보 단말기 (PDA), 비디오 게임 콘솔, 다른 비디오 디바이스, 또는 (텔레비전과 같은) 전용 뷰잉 스테이션의 일부일 수도 있다. 또한, 그래픽 디바이스 (2) 는 개인용 컴퓨터 또는 랩탑 디바이스를 포함할 수도 있다. 또한, 그래픽 디바이스 (2) 는, 상술된 디바이스들 중 일부 또는 전부에서 사용될 수도 있는 하나 이상의 집적회로들 또는 칩들에 포함될 수도 있다.
몇몇 경우, 그래픽 디바이스 (2) 는 그래픽 애플리케이션들, 비디오 애플리케이션들, 오디오 애플리케이션들, 및/또는 다른 멀티-미디어 애플리케이션들과 같은 다양한 애플리케이션들을 실행할 수 있을 수도 있다. 예를 들어, 그래픽 디바이스 (2) 는 그래픽 애플리케이션들, 비디오 게임 애플리케이션들, 비디오 재생 애플리케이션들, 디지털 카메라 애플리케이션들, 인스턴트 메시징 애플리케이션들, 비디오 원격화상회의 애플리케이션들, 모바일 애플리케이션들, 또는 비디오 스트리밍 애플리케이션들에 대해 사용될 수도 있다.
그래픽 디바이스 (2) 는 다양하고 상이한 데이터 타입들 및 포맷들을 프로세싱할 수 있을 수도 있다. 예를 들어, 그래픽 디바이스 (2) 는, 더 상세히 후술될 바와 같이, 스틸 이미지 데이터, 이동 이미지 (비디오) 데이터, 또는 다른 멀티-미디어 데이터를 프로세싱할 수도 있다. 이미지 데이터는 컴퓨터-생성된 그래픽 데이터를 포함할 수도 있다. 도 1의 예에서, 그래픽 디바이스 (2) 는 그래픽 프로세싱 시스템 (4), (메모리를 포함하는) 저장 매체 (8), 및 디스플레이 디바이스 (6) 를 포함한다.
프로그래밍가능한 프로세서들 (10, 12, 14, 및 16) 은 그래픽 프로세싱 시스템 (4) 내에 포함될 수도 있다. 프로그래밍가능한 프로세서 (10) 는 제어 또는 범용 프로세서이다. 프로그래밍가능한 프로세서 (12) 는 그래픽 프로세서이고, 프로그래밍가능한 프로세서 (14) 는 버텍스 프로세서이며, 프로그래밍가능한 프로세서 (16) 는 디스플레이 프로세서이다. 제어 프로세서 (10) 는 그래픽 프로세서 (12), 버텍스 프로세서 (14), 및/또는 디스플레이 프로세서 (16) 를 제어할 수 있을 수도 있다. 일 양태에서, 그래픽 프로세싱 시스템 (4) 은 다른 형태의 멀티-미디어 프로세서들을 포함할 수도 있다.
그래픽 디바이스 (2) 에서, 그래픽 프로세싱 시스템 (4) 은 저장 매체 (8) 및 디스플레이 디바이스 (6) 양자에 커플링된다. 저장 매체 (8) 는, 예를 들어, 동기식 동적 랜덤 액세스 메모리 (SDRAM), 판독-전용 메모리 (ROM), 비-휘발성 랜덤 액세스 메모리 (NVRAM), 임베디드 동적 랜덤 액세스 메모리 (eDRAM), 동적 랜덤 액세스 메모리 (SRAM), 또는 플래시 메모리와 같이 명령들 및/또는 데이터를 저장할 수 있는 임의의 영구 또는 휘발성 메모리를 포함할 수도 있다. 디스플레이 디바이스 (6) 는, LCD (liquid crystal display), 플라즈마 디스플레이 디바이스, 또는 다른 텔레비전 (TV) 디스플레이 디바이스와 같이 디스플레이 목적을 위해 이미지 데이터를 디스플레이할 수 있는 임의의 디바이스일 수도 있다.
버텍스 프로세서 (14) 는 버텍스 정보 및 프로세싱 버텍스 변환들을 관리할 수 있다. 일 양태에서, 버텍스 프로세서 (14) 는 디지털 신호 프로세서 (DSP) 를 포함할 수도 있다. 그래픽 프로세서 (12) 는 컴퓨터화된 그래픽을 렌더링, 조작, 및 디스플레이하는데 이용되는 전용 그래픽 렌더링 디바이스일 수도 있다. 그래픽 프로세서 (12) 는 다양하고 복잡한 그래픽-관련 알고리즘들을 구현할 수도 있다. 예를 들어, 복잡한 알고리즘들은 2차원 또는 3차원 컴퓨터화된 그래픽의 표현에 대응할 수도 있다. 그래픽 프로세서 (12) 는, 디스플레이 디바이스 (6) 와 같은 디스플레이 상에서 복잡한 3차원 이미지들을 생성하기 위해, 포인트들, 라인들, 및 삼각형들 또는 다른 다각형 표면들을 형성하는 것과 같이 소위 다수의 "프리미티브" 그래픽 동작들을 구현할 수도 있다.
그래픽 프로세서 (12) 는 저장 매체 (8) 에 저장된 명령들을 운반할 수도 있다. 저장 매체 (8) 는, (그래픽 또는 비디오 애플리케이션과 같은) 애플리케이션에 대한 애플리케이션 명령들 (21) 뿐만 아니라 하나 이상의 그래픽 드라이버들 (18) 을 저장할 수 있다. 애플리케이션 명령들 (21) 은 실행을 위해 저장 매체 (8) 로부터 그래픽 프로세싱 시스템 (4) 으로 로딩될 수도 있다. 예를 들어, 제어 프로세서 (10), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상은 명령들 (21) 을 실행할 수도 있다. 일 양태에서, 애플리케이션 명령들 (21) 은 공중을 통해 동적으로 저장 매체 (8) 에 다운로딩되는 하나 이상의 다운로딩가능한 모듈들을 포함할 수도 있다. 일 양태에서, 애플리케이션 명령들 (21) 은 애플리케이션 개발자에 의해 생성된 애플리케이션 프로그래밍 인터페이스 (API) 명령들로부터 생성되거나 컴파일되는 바이너리 명령들의 호 스트림을 포함할 수도 있다.
또한, 그래픽 드라이버 (18) 는 실행을 위해 저장 매체 (8) 로부터 그래픽 프로세싱 시스템 (4) 으로 로딩될 수도 있다. 예를 들어, 제어 프로세서 (10), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상은 그래픽 드라이버들 (18) 로부터의 특정한 명령들을 실행할 수도 있다. 일 예시적인 양태에서, 그래픽 드라이버들 (18) 은 그래픽 프로세서 (12) 에 의해 로딩 및 실행된다. 그래픽 드라이버들 (18) 은 더 상세히 후술될 것이다.
또한, 도 1에 도시된 바와 같이, 그래픽 프로세싱 시스템 (4) 은 하나 이상의 버퍼들 (15) 을 포함한다. 제어 프로세서 (10), 그래픽 프로세서 (12), 버텍스 프로세서 (14), 및/또는 디스플레이 프로세서 (16) 각각은 버퍼들 (15) 에 대한 액세스를 가지며, 버퍼들 (15) 에 데이터를 저장하거나 버퍼들 (15) 로부터 데이터를 검색할 수도 있다. 버퍼들 (15) 은 캐시 메모리를 포함할 수도 있고, 데이터 및 명령들 양자를 저장할 수 있을 수도 있다. 예를 들어, 버퍼들 (15) 은, 저장 매체 (8) 로부터 그래픽 프로세싱 시스템 (4) 으로 로딩된 그래픽 드라이버들 (18) 로부터의 하나 이상의 명령들 또는 애플리케이션 명령들 (21) 중 하나 이상을 포함할 수도 있다. 또한, 버퍼들 (15) 및/또는 저장 매체 (8) 는 명령 실행 동안 사용된 그래픽 데이터를 포함할 수도 있다.
특정한 경우, 애플리케이션 명령들 (21) 은 3D 그래픽 애플리케이션과 같은 그래픽 애플리케이션에 대한 명령들을 포함할 수도 있다. 애플리케이션 명령들 (21) 은, 하나 이상의 그래픽 이미지들을 포함하는 그래픽 장면의 콘텐츠들을 설명 또는 정의하는 명령들을 포함할 수도 있다. 애플리케이션 명령들 (21) 이 그래픽 프로세싱 시스템 (4) 에 의해 로딩 및 실행될 경우, 그래픽 프로세싱 시스템 (4) 은 일련의 상태 천이들을 경험할 수도 있다. 또한, 그래픽 드라이버들 (18) 내의 하나 이상의 명령들은 애플리케이션 명령들 (21) 의 실행 동안 디스플레이 디바이스 (6) 상에서 그래픽 이미지들을 렌더링하거나 디스플레이하도록 실행될 수도 있다.
인출 호와 같은 명령에 대한 풀 세트의 상태들은, 이미지가 그래픽 프로세싱 시스템 (4) 에 의해 렌더링되는 프로세스를 설명할 수도 있다. 그러나, 애플리케이션 명령들 (21) 을 기입하는 애플리케이션 개발자는 종종, 정의된 장면 내의 이미지들을 설명 또는 렌더링하는 대안적인 방법에 관해 디버깅 또는 실험하려는 목적을 위해 이들 상태들을 인터액티브하게 뷰잉 또는 변경할 제한된 능력을 가질 수도 있다. 또한, 도 2에 도시된 그래픽 프로세싱 시스템 (17) 의 플랫폼과 같은 상이한 하드웨어 플랫폼들은, 이들 상태들 및/또는 상태 천이들의 상이한 하드웨어 설계들 및 구현들을 가질 수도 있다.
따라서, 일 양태에서, 애플리케이션 개발자는, 장면 내의 이미지들을 설명 또는 렌더링하기 위한 대안적인 방법들에 관해 디버깅 및 실험하는 프로세싱을 보조하기 위해, 도 1에 도시된 애플리케이션 컴퓨팅 디바이스 (20) 를 사용할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽 디바이스 (2) 에 커플링된다. 예를 들어, 일 양태에서, 애플리케이션 컴퓨팅 디바이스 (20) 는 유니버셜 시리얼 버스 (USB) 접속을 통해 그래픽 디바이스 (2) 에 커플링된다. 다른 양태들에서, 무선 또는 다른 형태의 유선 접속들과 같은 다른 타입의 접속들이 사용될 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는 하나 이상의 프로세서들 (22), 디스플레이 디바이스 (24), 및 저장 매체 (26) 를 포함한다. 프로세서들 (22) 은, 일 양태에 따라, 제어 프로세서, 그래픽 프로세서, 버텍스 프로세서, 및 디스플레이 프로세서 중 하나 이상을 포함할 수도 있다. 저장 매체 (26) 는, 예를 들어, 동기식 동적 랜덤 액세스 메모리 (SDRAM), 판독-전용 메모리 (ROM), 비-휘발성 랜덤 액세스 메모리 (NVRAM), 정적 랜덤 액세스 메모리 (SRAM), 또는 플래시 메모리와 같이 명령들 및/또는 데이터를 저장할 수 있는 임의의 영구 또는 휘발성 메모리를 포함할 수도 있다. 디스플레이 디바이스 (24) 는, LCD (liquid crystal display), 플라즈마 디스플레이 디바이스, 또는 다른 텔레비전 (TV) 디스플레이 디바이스와 같이 디스플레이 목적을 위해 이미지 데이터를 디스플레이할 수 있는 임의의 디바이스일 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 디바이스 (2) 로 전송되는 상태 및/또는 성능 정보 (32) 와 함께 그래픽 명령들 (30) 을 캡쳐 및 분석할 수 있다. 일 양태에서, 그래픽 드라이버들 (18) 은, 그래픽 명령들 (30) 및 상태/성능 정보 (32) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 전송하도록 구성된다. 그래픽 명령들 (30) 은 애플리케이션 명령들 (21) 중 하나 이상을 포함할 수도 있고, 상태/성능 정보 (32) 는 그래픽 프로세싱 시스템 (4) 내에서의 그래픽 명령들 (30) 의 실행 동안 생성 또는 캡쳐될 수도 있다.
상태/성능 정보 (32) 는 명령 실행 동안의 그래픽 프로세싱 시스템 (4) 의 상태 및 성능에 관한 정보를 포함하며, 더 상세히 후술될 것이다. 상태/성능 정보 (32) 는, 그래픽 명령들 (30) 에 관해 사용될 수도 있거나 그래픽 명령들 (30) 과 관련되는 그래픽 데이터 (예를 들어, 프리미티브 및/또는 래스터화된 그래픽 데이터) 를 포함할 수도 있다. 그래픽 프로세싱 시스템 (4) 은, 디스플레이 (6) 상에 이미지 또는 이미지들의 장면을 디스플레이하기 위해 그래픽 명령들 (30) 을 실행할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 디바이스 (2) 의 디스플레이 디바이스 (6) 상에 또한 나타낸 그래픽 이미지 또는 장면을 생성하기 위해 상태/성능 정보 (32) 와 함께 그래픽 정보 (30) 를 사용할 수 있다.
시뮬레이션 애플리케이션 (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) 이 바이너리 명령들을 포함할 수도 있기 때문에, 애플리케이션 컴퓨팅 디바이스 (20) 는, 디스플레이 디바이스 (24) 상의 그래픽 명령들 (30) 의 시각적 표현을 생성하도록 명령 매핑 정보 (31) 를 사용할 수도 있다. 명령 매핑 정보 (31) 는, 저장 매체 (26) 내에 저장되며, 그래픽 명령들 (30) 의 시각적 표현을 디스플레이하기 위해 프로세서들 (22) 로 로딩될 수도 있다.
일 양태에서, 명령 매핑 정보 (31) 는, 그래픽 명령들 (30) 을 생성할 경우 이전에 컴파일될 수도 있었던 대응하는 API 명령들에 그래픽 명령들 (30) 을 매핑하기 위해, 예를 들어, 룩업 테이블 내에 매핑 정보를 포함할 수도 있다. 그래픽 디바이스 (2) 상에서의 실행을 위해, 애플리케이션 개발자들은 API 명령들을 사용하는 프로그램들을 기입할 수도 있지만, API 명령들은 통상적으로 (애플리케이션 명령들 (21) 내에 포함되는) 그래픽 명령들 (30) 과 같은 바이너리 명령들로 컴파일된다. 그래픽 명령들 (30) 내의 하나 이상의 명령들은 개별 API 명령에 매핑될 수도 있다. 그 후, 매핑된 API 명령들은, 실제로 실행되고 있는 그래픽 명령들 (30) 의 시각적 표현을 제공하기 위해 디스플레이 디바이스 (24) 상에서 애플리케이션 개발자에게 디스플레이될 수도 있다.
일 양태에서, 애플리케이션 개발자와 같은 사용자는, 예를 들어, 성능에 대한 그러한 변화들의 영향들을 결정하기 위해 그래픽 명령들 (30) 중 하나 이상을 변경시키기를 원할 수도 있다. 이러한 양태에서, 사용자는 그래픽 명령들 (30) 의 시각적 표현을 변경시킬 수도 있다. 그 후, 매핑 정보 (31) 는 더 상세히 후술될 바와 같이, 그래픽 명령들 (30) 의 시각적 표현 내의 이들 변경들을 바이너리 명령들에 매핑하는데 사용될 수도 있으며, 그 후, 그 바이너리 명령들은 요청된 변경들 (34) 내에서 그래픽 디바이스 (2) 에 다시 제공될 수 있다.
상술된 바와 같이, 애플리케이션 컴퓨팅 디바이스 (20) 의 디스플레이 디바이스 (24) 상에 디스플레이된 그래픽 이미지는, 그래픽 디바이스 (2) 상에 디스플레이된 이미지의 표현일 수도 있다. 그래픽 디바이스 (2) 상에 프리젠테이션되는 바와 같이 이미지 또는 장면을 정확히 생성하기 위해 시뮬레이션 애플리케이션 (28) 이 그래픽 명령들 (30) 및 상태/성능 정보 (32) 를 사용할 수도 있기 때문에, 애플리케이션 컴퓨팅 디바이스 (20) 를 사용하는 애플리케이션 개발자들은 그래픽 애플리케이션들 (30) 의 실행 동안 잠재적인 성능 이슈들 또는 병목들, 및 심지어 그래픽 애플리케이션들 (30) 의 전체 성능을 개선시키기 위해 프로토타입 변경들을 신속하게 식별할 수 있을 수도 있다.
예를 들어, 애플리케이션 개발자는, 애플리케이션 컴퓨팅 디바이스 (20) 상에서의 시뮬레이션 애플리케이션 (28) 의 실행 및 디스플레이 디바이스 (24) 상에서의 이미지의 디스플레이 동안 그래픽 정보들 (30) 및/또는 상태/성능 정보 (32) 에 대해 하나 이상의 요청된 변경들 (34) 을 행하기를 선택할 수도 있다. 임의의 그러한 요청된 변경들 (20) 은, 그래픽 명령들 (30) 의 실행 또는 상태/성능 정보 (32) 의 분석 동안의 관측된 성능 이슈들 또는 병목들에 기초할 수도 있다. 그 후, 이들 요청된 변경들 (34) 은 애플리케이션 컴퓨팅 디바이스 (20) 로부터 그래픽 디바이스 (2) 로 전송될 수도 있으며, 여기서, 그들은 그래픽 프로세싱 시스템 (4) 에 의해 프로세싱된다. 일 양태에서, 그래픽 드라이버들 (18) 중 하나 이상은 요청된 변경들 (34) 을 프로세싱하기 위해 그래픽 프로세싱 시스템 (4) 내에서 실행된다. 몇몇 경우, 요청된 변경들 (34) 은 변경된 명령들을 포함할 수도 있다. 몇몇 경우, 요청된 변경들은 변경된 상태 및/또는 성능 정보를 포함할 수도 있다.
요청된 변경들 (34) 의 프로세싱 시에, 업데이트된 명령들 및/또는 정보 (35) 는 예를 들어, 그래픽 드라이버들 (18) 중 하나 이상에 의해 애플리케이션 컴퓨팅 디바이스 (20) 에 다시 전송된다. 업데이트된 명령들/정보 (35) 는, 그래픽 디바이스 (2) 에 의해 프로세싱되었던 요청된 변경들 (34) 에 기초한 실행을 위한 업데이트된 그래픽 명령들을 포함할 수도 있다. 또한, 업데이트된 명령들/정보 (35) 는, 그래픽 디바이스 (2) 에 의해 프로세싱되었던 요청된 변경들 (34) 에 기초한 업데이트된 상태 및/또는 성능 정보를 포함할 수도 있다.
업데이트된 명령들/정보 (35) 는, 디스플레이 디바이스 (24) 상에서의 이미지 정보의 디스플레이를 업데이트하고 또한 (명령 매핑 정보 (31) 를 사용하는 것을 또한 포함할 수도 있는) 업데이트된 명령들/정보 (35) 의 시각적 표현을 애플리케이션 개발자에게 제공하도록 시뮬레이션 애플리케이션 (28) 에 의해 프로세싱된다. 그 후, 애플리케이션 개발자는, 성능 이슈들이 해결되었거나 완화되었는지를 결정하기 위해, 디스플레이 디바이스 (24) 상의 업데이트된 이미지 정보 뿐만 아니라 업데이트된 명령들/정보 (35) 의 시각적 표현을 뷰잉할 수도 있다. 애플리케이션 개발자는 그래픽 명령들 (30), 또는 그래픽 명령들 (30) 의 전체 성능을 개선시키기 위한 프로토타입 변경들을 디버깅하기 위해 반복 프로세스를 사용할 수도 있다.
도 2는 본 발명의 또 다른 양태에 따른, 상태 및/또는 성능 정보 (82) 와 함께 그래픽 명령들 (80) 을 애플리케이션 컴퓨팅 디바이스 (20) 에 제공할 수도 있는 그래픽 디바이스 (52) 를 도시한 블록도이다. 이러한 양태에서, 그래픽 디바이스 (52) 는, 도 1에 도시된 그래픽 디바이스 (2) 와는 상이한 하드웨어 설계 및 아키텍처를 갖는다. 그러나, 애플리케이션 컴퓨팅 디바이스 (20) 는, 또 다른 시뮬레이션 애플리케이션 (29) 을 사용함으로써, 그래픽 디바이스 (52) 와 상호작용하고, 이미지 정보를 생성하며, 그래픽 디바이스 (52) 에 대한 성능 정보를 디스플레이할 수 있다. 도 1에서, 시뮬레이션 프로그램 (28) 은 그래픽 디바이스 (2) 에 대한 사용을 위해 설계되고 맞춤화된다. 도 2에서, 시뮬레이션 프로그램 (29) 은 그래픽 디바이스 (52) 에 대한 사용을 위해 설계되고 맞춤화된다.
도 2에 도시된 바와 같이, 그래픽 디바이스 (52) 는 그래픽 프로세싱 시스템 (54), 디스플레이 디바이스 (56), 및 저장 매체 (58) 를 포함한다. 그래픽 프로세싱 시스템 (4) (도 1) 과는 달리, 그래픽 프로세싱 시스템 (54) 은 버텍스 프로세서를 포함하지 않는다. 그래픽 프로세싱 시스템 (54) 은 제어 프로세서 (60), 그래픽 프로세서 (62), 디스플레이 프로세서 (66), 및 하나 이상의 버퍼들 (65) 을 포함한다. 제어 프로세서 (60) 는 그래픽 프로세서 (62) 및/또는 디스플레이 프로세서 (66) 를 제어할 수도 있다. 제어 프로세서 (60), 그래픽 프로세서 (62), 및 디스플레이 프로세서 (66) 의 각각은, 데이터 또는 명령들을 포함할 수도 있는 버퍼들 (65) 에 대한 액세스를 갖는다.
저장 매체 (8) (도 1) 와 유사하게, 그래픽 디바이스 (52) 의 저장 매체 (58) 는 명령들 및 드라이버들을 저장할 수 있다. 도 2에 도시된 바와 같이, (메모리를 포함하는) 저장 매체는 애플리케이션 명령들 (71) 및 하나 이상의 그래픽 드라이버들 (68) 을 포함한다. 애플리케이션 명령들 (71) 은 그래픽 애플리케이션을 위한 명령들을 포함할 수도 있고, 그래픽 드라이버들 (68) 은 디스플레이 디바이스 (56) 상에서의 이미지 데이터의 디스플레이를 위한 명령들 및 애플리케이션 컴퓨팅 디바이스 (20) 와 통신하기 위한 명령들을 포함할 수도 있다. 애플리케이션 명령들 (71) 및 그래픽 드라이버들 (68) 은, 그래픽 프로세싱 시스템 (54) 내의 제어 프로세서 (60), 그래픽 프로세서 (62), 및/또는 디스플레이 프로세서 (66) 에 로딩될 수도 있고 그들에 의해 실행될 수도 있다. 몇몇 경우에서, 애플리케이션 명령들 (71) 중 하나 이상 및 그래픽 드라이버들 (68) 로부터의 하나 이상의 명령들은, 그래픽 프로세싱 시스템 (54) 내에서의 실행을 위해 버퍼들 (65) 로 로딩될 수도 있다.
그래픽 프로세싱 시스템 (54) 내에서의 애플리케이션 명령들 (71) 의 실행 동안, 그래픽 드라이버들 (68) 중 하나 이상은, 실행 동안 그래픽 명령들 (80) 및 상태 및/또는 성능 정보 (82) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 또한 전송할 수도 있다. 그래픽 명령들 (80) 은 애플리케이션 명령들 (71) 의 일부 또는 서브세트를 포함할 수도 있다. 상태/성능 정보 (82) 는, 제어 프로세서 (60), 그래픽 프로세서 (62), 및 디스플레이 프로세서 (66) 중 하나 이상 내에서의 그래픽 명령들 (80) 의 실행에 기초할 수도 있다.
시뮬레이션 애플리케이션 (29) 은, 그래픽 명령들 (80) 및 상태/성능 정보 (82) 를 프로세싱하기 위해, 프로세서들 (22) 중 하나 이상에 로딩될 수도 있고 그들에 의해 실행될 수도 있다. 상술된 바와 같이, 시뮬레이션 애플리케이션 (29) 은, 특히 그래픽 디바이스 (52) 의 동작을 시뮬레이팅하도록 설계될 수도 있다. 그래픽 디바이스들의 다양한 타입의 설계들은, 대응하는 시뮬레이션 애플리케이션들의 생성 및 실행을 통해 애플리케이션 컴퓨팅 디바이스 (20) 상에서 시뮬레이팅될 수도 있다.
시뮬레이션 애플리케이션 (29) 은 프로세서들 (22) 로 하여금, 수신된 그래픽 명령들 (82) 및 상태/성능 정보 (82) 에 따라 디스플레이 디바이스 (24) 상에서 그래픽 이미지 또는 장면의 표현을 디스플레이하게 할 수도 있다. 본래, 이러한 이미지 또는 장면은 그래픽 디바이스 (52) 의 디스플레이 디바이스 (56) 상에서 디스플레이되지만, 그의 표현은 디스플레이 디바이스 (24) 상에서 디스플레이된다. 또한, 시뮬레이션 애플리케이션 (29) 은 프로세서들 (22) 로 하여금, 디스플레이 디바이스 (24) 상에서 상태/성능 정보 (82) 의 시각적 표현을 디스플레이하게 할 수도 있다. 또한, 애플리케이션 컴퓨팅 디바이스 (20) 는, 디스플레이 디바이스 (24) 에서 그래픽 명령들 (80) 의 시각적 표현을 제공하기 위해 명령 매핑 정보 (33) 를 사용할 수도 있다.
또한, 애플리케이션 개발자는, 시뮬레이션 애플리케이션 (29) 의 실행 동안 그래픽 명령들 (80) 및/또는 상태/성능 정보 (82) 에 대해 하나 이상의 요청된 변경들 (84) 을 행하기를 선택할 수도 있다. 임의의 그러한 요청된 변경들 (84) 은, 그래픽 명령들 (80) 의 실행 또는 상태/성능 정보 (82) 의 분석 동안, 관측된 성능 이슈들 또는 병목들에 기초할 수도 있다. 그 후, 이들 요청된 변경들 (84) 은 애플리케이션 컴퓨팅 디바이스 (20) 로부터 그래픽 디바이스 (52) 로 전송될 수도 있으며, 여기서, 그들은 그래픽 드라이버들 (68) 중 하나 이상에 의해 프로세싱될 수도 있다.
요청된 변경들 (84) 의 프로세싱 시에, 업데이트된 명령들 및/또는 정보 (85) 는, 그래픽 드라이버들 (68) 중 하나 이상에 의해 애플리케이션 컴퓨팅 디바이스 (20) 에 다시 전송된다. 업데이트된 명령들/정보 (85) 는 업데이트된 그래픽 명령들, 업데이트된 상태 정보, 및/또는 업데이트된 성능 정보를 포함할 수도 있다.
업데이트된 명령들/정보 (85) 는, 디스플레이 디바이스 (24) 상에서의 이미지 정보의 디스플레이를 업데이트하고, 또한, 업데이트된 명령들/정보 (85) 의 시각적 표현을 애플리케이션 개발자에게 제공하도록 시뮬레이션 애플리케이션 (29) 에 의해 프로세싱된다. 애플리케이션 개발자는, 성능 이슈들이 해결되거나 완화되었는지를 결정하기 위해, 디스플레이 디바이스 (24) 상의 업데이트된 이미지 정보 뿐만 아니라 업데이트된 명령/정보 (85) 의 시각적 표현을 뷰잉할 수도 있다. 애플리케이션 개발자는 그래픽 명령들 (80) 또는 그래픽 애플리케이션들 (80) 의 전체 성능을 개선시키기 위한 프로토타입 변경들을 디버깅하기 위한 반복 프로세스를 사용할 수도 있다.
도 3은 일 양태에 따른, 도 1에 도시된 그래픽 프로세싱 시스템 (4), 그래픽 드라이버 (18), 및 애플리케이션 컴퓨팅 디바이스 (20) 의 특정한 세부사항들을 도시한 블록도이다. 도 3에서, 애플리케이션 컴퓨팅 디바이스 (20) 가 디바이스 (2) 의 그래픽 프로세싱 시스템 (4) 에 커플링된다고 가정한다. 그러나, 이것은 단지 예시의 목적을 위해서만 도시된다. 다른 시나리오에서, 애플리케이션 컴퓨팅 디바이스 (20) 는, 디바이스 (52) 의 그래픽 프로세싱 시스템 (54) (도 2) 과 같은 많은 다른 형태의 그래픽 프로세싱 시스템들 및 디바이스들에 커플링될 수도 있다.
도 3에 도시된 바와 같이, 그래픽 프로세싱 시스템 (4) 은 4개의 프로그래밍가능한 프로세서들, 즉, 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 를 포함하며, 이들은 또한 도 1에 도시되어 있다. 제어 프로세서 (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) 중 어느 프로세서들이 성능 이슈들을 갖는 프로세서일 수도 있는지를 반드시 알 필요는 없다.
성능 병목들 및 잠재적인 솔루션을 식별하는 문제점을 해결하기 위해, 그래픽 디바이스 (2) 의 그래픽 드라이버 (18A) 는 도 3에 도시된 바와 같이, 그래픽 프로세싱 시스템 (4) 으로부터 그래픽 명령들 (30) 을 캡쳐 또는 수집하고, 그들을 애플리케이션 컴퓨팅 디바이스 (20) 에 라우팅할 수도 있다. 그래픽 드라이버 (18A) 는 도 1에 도시된 그래픽 드라이버들 (18) 의 일부이다. 그래픽 드라이버 (18A) 는 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 의해 로딩되고 실행될 수도 있다. 또한, 그래픽 드라이버 (18A) 는 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상으로부터 상태 및/또는 성능 정보 (32) 를 또한 수집하고, 이러한 정보 (32) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 또한 라우팅할 수도 있다. 일 양태에서, 그래픽 드라이버 (18A) 는, 그래픽 명령들 (30) 이 OpenGL ES API 명령들로부터 생성 또는 컴파일될 수도 있는 바이너리 명령들을 포함할 경우, 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, 및/또는 16) 중 어느 특정한 프로세서들이 성능 이슈들을 가질 수도 있는지를 식별할 수 있을 수도 있다.
임의의 식별된 성능 이슈들에 대한 차선책 또는 해결을 식별하려는 시도에서, 개발자는 애플리케이션 컴퓨팅 디바이스 (20) 상에서 하나 이상의 요청된 변경들 (34) 을 개시할 수도 있다. 예를 들어, 개발자는 요청된 변경들 (34) 을 생성하기 위해, 재생성된 이미지 또는 상태/성능 정보 (32) 의 표현과 상호작용할 수도 있다. 몇몇 경우, 심지어 개발자는 더 상세히 후술될 바와 같이, 요청된 변경들 (34) 을 생성하기 위해 상태/성능 정보 (32) 를 직접적으로 변경시킬 수도 있다. 특정한 경우, 요청된 변경들 (34) 은, 그래픽 디바이스 (2) 의 그래픽 프로세싱 시스템 (4) 에서 그래픽 명령들 (30) 중 하나 이상의 실행을 디스에이블시키기 위한 하나 이상의 요청들, 또는 그래픽 명령들 (30) 중 하나 이상을 변경시키기 위한 요청들을 포함할 수도 있다.
요청된 변경들 (34) 은 애플리케이션 컴퓨팅 디바이스 (20) 로부터 그래픽 드라이버 (18A) 로 전송되며, 그 그래픽 드라이버는 동작 동안 그래픽 디바이스 (2) 에 대한 요청들을 처리한다. 많은 경우, 요청된 변경들 (34) 은, 그래픽 명령들 (30) 의 실행 동안 그래픽 프로세싱 시스템 (4) 내의 프로세서들 (10, 12, 14, 또는 16) 중 하나 이상 내에서, 데이터를 포함할 수도 있는 상태 정보를 변경시키기 위한 요청들을 포함할 수도 있다. 그 후, 그래픽 드라이버 (18A) 는 요청된 변경들 (34) 내에 포함된, 그래픽 프로세싱 시스템 (4) 내의 변경들을 구현할 수도 있다. 이들 변경들은 그래픽 명령들 (30) 의 실행 동안 프로세서들 (10, 12, 14, 및/또는 16) 사이에서 실행 흐름을 수정할 수도 있다. 특정한 경우, 그래픽 명령들 (30) 중 하나 이상은, 요청된 변경들 (34) 에 따라 그래픽 프로세싱 시스템 (4) 에서의 실행 동안 디스에이블될 수도 있다.
그래픽 드라이버 (18A) 는, 요청된 변경들 (34) 의 프로세싱에 응답하여 애플리케이션 컴퓨팅 디바이스 (20) 에 업데이트된 명령들 및/또는 정보 (35) 를 전송할 수 있다. 업데이트된 명령들/정보 (35) 는, 그래픽 드라이버 (18A) 에 의해 그래픽 프로세싱 시스템 (4) 으로부터 수집된, 성능 정보를 포함하는 업데이트된 상태 정보를 포함할 수도 있다. 또한, 업데이트된 명령들/정보 (35) 는 업데이트된 그래픽 명령들을 포함할 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 이미지의 업데이트된 표현 뿐만 아니라 업데이트된 명령들/정보 (35) 의 시각적 표현을 디스플레이하도록, 업데이트된 명령들/정보 (35) 를 사용할 수도 있다. 그 후, 애플리케이션 개발자는, 이전에 식별된 성능 이슈들이 해결되거나 해소되었는지를 평가할 수 있을 수도 있다. 예를 들어, 애플리케이션 개발자는, 특정한 텍스처, 다각형, 또는 다른 피처 (feature) 가 최적화되었는지 또는 다른 성능 파라미터들이 개선되었는지를 결정하기 위해, 업데이트된 이미지 뿐만 아니라 업데이트된 명령들/정보 (35) 의 시각적 표현을 분석할 수 있을 수도 있다.
그러한 방식으로, 애플리케이션 개발자는, 그래픽 디바이스 (2) 상의 그래픽 프로세싱 시스템 (4) 의 동작을 시뮬레이팅하는 애플리케이션 컴퓨팅 디바이스 (20) 상의 환경 내에서의 그래픽 명령들 (30) 의 실행을 신속하고 효율적으로 디버깅 또는 분석할 수 있을 수도 있다. 개발자는, 그래픽 명령들 (30) 의 실행 성능을 최대화하기 위해 장면 또는 다수의 이미지 프레임들 내의 다수의 그래픽 이미지들을 분석하도록, 애플리케이션 컴퓨팅 디바이스 (20) 상의 디스플레이된 이미지 및 상태/성능 정보와 반복적으로 상호작용할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 상의 그러한 반복 및 디스플레이된 정보의 예들은 아래에서 더 상세히 제공될 것이다.
도 4는 일 양태에 따른, 제어 프로세서 (10), 그래픽 프로세서 (12), 버텍스 프로세서 (14), 및 디스플레이 프로세서 (16) 에 의해 수행될 수도 있는 동작들의 부가적인 세부사항들을 도시한 흐름도이다. 또한, 도 4는 프레임 버퍼 저장부 (100) 및 디스플레이 (102) 에 대한 동작들을 도시한다. 일 양태에서, 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및/또는 디스플레이 프로세서 (16) 는 그래픽 명령들 (30) 중 하나 이상의 실행의 결과로서 다양한 동작들을 수행한다.
상술된 바와 같이, 제어 프로세서 (10) 는, 그래픽 프로세싱 파이프라인을 통한 데이터 또는 명령 실행의 흐름의 하나 이상의 양태들을 제어할 수도 있다. 도 4에 도시된 바와 같이, 제어 프로세서 (10) 는 도면부호 (90) 에서 지오메트리 저장을 수행할 수도 있다. 몇몇 경우, 하나 이상의 프리미티브들에 대한 지오메트리 정보는 제어 프로세서 (10) 에 의해 버퍼들 (15) (도 1) 에 저장될 수도 있다. 몇몇 경우, 지오메트리 정보는 저장 매체 (8) 에 저장될 수도 있다.
그 후, 버텍스 프로세서 (14) 는, 제어 프로세서에 의해 제공되고/되거나 도면부호 (92) 에서의 프로세싱을 위하여 버퍼들 (15) 에 저장되는 소정의 프리미티브에 대한 지오메트리 정보를 획득할 수도 있다. 특정한 경우, 버텍스 프로세서 (14) 는 지오메트리 정보의 버텍스 변환을 관리할 수도 있다. 특정한 경우, 버텍스 프로세서 (14) 는 지오메트리 정보에 대해 조명 동작 (lighting operation) 을 수행할 수도 있다.
버텍스 프로세서 (14) 는, 도면부호 (94) 에서 데이터에 대해 렌더링 또는 래스터화 동작들을 수행할 수도 있는 그래픽 프로세서 (12) 에 그의 출력을 제공할 수도 있다. 그래픽 프로세서 (12) 는, 디스플레이를 위해 픽셀 형태로 하나 이상의 그래픽 이미지들을 준비하는 디스플레이 프로세서 (16) 에 그의 출력을 제공할 수도 있다. 디스플레이 프로세서 (16) 는, 도면부호 (98) 에서 데이터의 다양한 프레그먼트 (fragment) 들을 프로세싱하기 위한 프레그먼트 프로세싱을 포함하는 다양한 동작들을 픽셀 데이터에 대해 수행할 수도 있다. 특정한 경우, 당업계에 알려진 바와 같이, 이것은 깊이 테스팅, 스텐실 테스팅, 블렌딩 또는 텍스처 매핑 중 하나 이상을 포함할 수도 있다. 텍스처 매핑을 수행할 경우, 도면부호 (96) 에서 디스플레이 프로세서 (16) 는, 텍스처 저장 및 필터링 정보를 포함할 수도 있다. 몇몇 경우, 그래픽 프로세서 (16) 는 쉐이딩 또는 스케일링 동작들과 같은 다른 동작들을 래스터화된 데이터에 대해 수행할 수도 있다.
디스플레이 프로세서 (16) 는, 도면부호 (100) 에서 프레임 버퍼로의 저장을 위해 출력 픽셀 정보를 제공한다. 몇몇 경우, 프레임 버퍼는 버퍼들 (15) (도 1) 내에 포함될 수도 있다. 다른 경우, 프레임 버퍼는 저장 매체 (8) 내에 포함될 수도 있다. 프레임 버퍼는 이미지 데이터의 하나 이상의 프레임들을 저장하며, 그 후, 그 프레임들은 예를 들어, 디스플레이 디바이스 (6) 상에 디스플레이될 수 있다.
상술된 바와 같이, 그래픽 명령들 (30) 은, 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 의해 실행될 수도 있다. 통상적으로, 애플리케이션 개발자들은, 그래픽 프로세싱 시스템 (4) 내의 어느 특정한 프로세서들이 그래픽 명령들 (30) 중 어느 명령들을 실행하는지에 대한 정보 또는 제어를 많이 갖지 않을 수도 있다. 특정한 경우, 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상은, 그래픽 명령들 (30) 의 실행 동안 성능 이슈들을 갖거나 프로세싱 파이프라인 내의 잠재적인 병목들로서 기능할 수도 있다. 종종, 애플리케이션 개발자가 병목의 위치, 또는 그러한 병목의 효과들을 해결하거나 완화시키는 최상의 방법을 특정하기가 어려울 수도 있다. 따라서, 일 양태에서, 그래픽 명령들 (30) 및/또는 상태 정보는 그래픽 디바이스 (2) 로부터 애플리케이션 컴퓨팅 디바이스 (20) 와 같은 외부 컴퓨팅 디바이스로 제공될 수도 있다. 상태 정보는, 그래픽 명령들 (30) 의 동작 동안 발생하는 도 4에 도시된 것과 같은 다양한 동작들에 대한, 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 로부터의 데이터를 포함할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 는, 효율적이고 효과적인 방식으로 병목들을 식별 및 해결하는데 도움을 주기 위해, 디바이스 (2) 상에 나타낸 그래픽 이미지를 생성할 수도 있다.
도 5는 일 양태에 따른, 도 3에 도시된 그래픽 드라이버 (18A) 의 부가적인 세부사항들을 도시한 블록도이다. 상술된 바와 같이, 그래픽 드라이버 (18A) 는, (예를 들어, 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 의해) 그래픽 프로세싱 시스템 (4) 내에서 실행될 수 있는 명령들을 포함할 수도 있으며, 그래픽 드라이버들 (18) 의 일부일 수도 있다. 그래픽 드라이버 (18A) 의 실행은 그래픽 프로세싱 시스템 (4) 으로 하여금 애플리케이션 컴퓨팅 디바이스 (20) 와 통신하게 한다. 일 양태에서, 그래픽 드라이버 (18A) 는 그래픽 프로세싱 시스템 (54) 내에서 실행될 수 있는 명령들을 포함할 수도 있으며, 그래픽 드라이버들 (68) 의 일부일 수도 있다.
실행될 경우, 그래픽 드라이버 (18A) 는, 전송 인터페이스 (110), 프로세서 사용도 모듈 (112), 하드웨어 카운터 모듈 (114), 다른 상태 및/또는 성능 데이터를 관리할 수 있는 상태/성능 데이터 모듈 (116), API 트레이스 모듈 (118), 및 오버라이드 모듈 (120) 로서 도 5에 도시된 다양한 기능 블록들을 포함한다. 그래픽 드라이버 (18A) 는 애플리케이션 컴퓨팅 디바이스 (20) 와 통신하도록 전송 인터페이스 모듈 (110) 을 사용한다.
프로세서 사용도 모듈 (112) 은, 제어 프로세서 (10), 버텍스 프로세서 (14), 그래픽 프로세서 (12), 및 디스플레이 프로세서 (16) 중 하나 이상에 대한 프로세서 사용도 정보를 수집 및 보유한다. 프로세서 사용도 정보는 프로세서 사이클 및/또는 성능 정보를 포함할 수도 있다. 사이클 데이터는 프로파일링, 커맨드 어레이들, 버텍스 및 인덱스 데이터, 또는 다른 동작들에 대해 사용된 사이클들에 대한 데이터를 포함할 수도 있다. 그 후, 프로세서 사용도 모듈 (112) 은 전송 인터페이스 모듈 (110) 을 통해 애플리케이션 컴퓨팅 디바이스 (20) 에 그러한 프로세서 사용도 정보를 제공할 수도 있다. 몇몇 경우, 프로세서 사용도 모듈 (112) 은, 정보를 수신함에 따라 이러한 정보를 디바이스 (20) 에 비동기 방식으로 제공한다. 다른 경우, 프로세서 사용도 모듈 (112) 은 디바이스 (20) 로부터의 요청의 수신 시에 정보를 제공할 수도 있다.
하드웨어 카운터 모듈 (114) 은, 제어 프로세서 (10), 그래픽 프로세서 (12), 버텍스 프로세서 (14), 또는 디스플레이 프로세서 (16) 중 하나 이상에 의한 명령들의 실행 동안 다양한 하드웨어 카운터들을 수집 및 보유한다. 카운터들은, 그래픽 프로세싱 시스템 (4) 내의 명령 실행에 대한 다양한 상태 표시자들 및/또는 메트릭들을 추적할 수도 있다. 하드웨어 카운터 모듈 (114) 은 디바이스 (20) 에 정보를 비동기식으로 또는 요청 시에 제공할 수도 있다.
상태/성능 데이터 모듈 (116) 은, 그래픽 프로세싱 시스템 (4) 내의 제어 프로세서 (10), 그래픽 프로세서 (12), 버텍스 프로세서 (14), 및 디스플레이 프로세서 (16) 중 하나 이상에 대한 다른 상태 및/또는 성능 데이터를 수집 및 보유한다. 예를 들어, 몇몇 경우, 상태 데이터를 그래픽 데이터를 포함할 수도 있다. 상태 데이터는 위치, 컬러, 좌표, 사이즈, 또는 가중 데이터와 같은 버텍스 어레이에 관련된 데이터를 포함할 수도 있다. 상태 데이터는 텍스처 상태 데이터, 포인트 상태 데이터, 라인 상태 데이터, 다각형 상태 데이터, 컬링 상태 데이터, 알파 테스트 상태 데이터, 블렌딩 상태 데이터, 깊이 상태 데이터, 스텐실 상태 데이터, 또는 컬러 상태를 더 포함할 수도 있다. 성능 데이터는 다양한 다른 메트릭들 또는 사이클 데이터를 포함할 수도 있다. 상태/성능 데이터 모듈 (116) 은 디바이스 (20) 에 정보를 비동기식으로 또는 요청 시에 제공할 수도 있다.
API 트레이스 모듈 (118) 은, 그래픽 프로세싱 시스템 (4) 에 의해 실행되고, 전송 인터페이스 모듈 (110) 을 통해 애플리케이션 컴퓨팅 디바이스 (20) 에 전송되는 그래픽 명령들의 흐름 및/또는 트레이스를 관리한다. 상술된 바와 같이, 그래픽 디바이스 (2) 는, 그의 프로세싱 파이프라인에서 그래픽 프로세싱 시스템 (4) 에 의해 실행되는 그래픽 명령들 (30) 의 카피를 디바이스 (20) 에 제공한다. API 트레이스 모듈 (118) 은 이들 그래픽 명령들 (30) 의 캡쳐 및 전송을 관리한다. 또한, API 트레이스 모듈 (118) 은, 그래픽 명령들 (30) 을 생성하는데 사용될 수도 있는 API 명령들과 같이, 그래픽 명령들 (30) 의 시각적 표현에 그래픽 명령들 (30) 을 매핑하기 위해 명령 매핑 정보 (31) (도 1) 에 의해 사용된 특정한 정보를 제공할 수도 있다.
오버라이드 모듈 (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) 은 프로세싱을 위해 애플리케이션 컴퓨팅 디바이스 (20) 에 업데이트된 명령들/정보 (35) 를 전송할 수도 있다.
그러한 방식으로, 그래픽 드라이버 (18A) 는 그래픽 디바이스 (2) 와 애플리케이션 컴퓨팅 디바이스 (20) 사이에 인터페이스를 제공한다. 그래픽 드라이버 (18A) 는, 그래픽 명령들 및 상태/성능 정보 (32) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 제공할 수 있으며, 또한, 요청된 변경들 (34) 을 애플리케이션 컴퓨팅 디바이스 (20) 로부터 수신할 수 있다. 그러한 요청된 변경들 (34) 을 프로세싱한 이후, 그래픽 드라이버 (18A) 는 후속하여, 업데이트된 명령들/정보 (35) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 역으로 제공할 수 있다.
도 6은 본 발명의 일 양태에 따른, 도 1에 도시된 그래픽 디바이스 (2) 및 도 2에 도시된 그래픽 디바이스 (52) 에 의해 수행될 수도 있는 방법의 흐름도이다. 단지 예시의 목적을 위해, 후속 설명에서 도 6의 방법이 그래픽 디바이스 (2) 에 의해 수행된다고 가정할 것이다.
그래픽 디바이스 (2) 는 애플리케이션 컴퓨팅 디바이스 (20) 와 같은 컴퓨팅 디바이스에 복수의 그래픽 명령들을 전송할 수도 있다 (121). 그래픽 명령들 (30) 과 같은 그래픽 명령들은 그래픽 이미지를 디스플레이하도록 그래픽 디바이스 (2) 에 의해 실행된다. 그래픽 명령들 (30) 은, 애플리케이션 프로그래밍 인터페이스 (API) 명령들로부터 생성된 바이너리 명령들을 포함할 수도 있다. 일 양태에서, 그래픽 디바이스 (2) 는, 그래픽 드라이버 (18A) (도 5) 의 API 트레이스 모듈 (118) 을 사용하여 그래픽 명령들 (30) 을 전송할 수도 있다. 또한, 그래픽 디바이스 (2) 는 상태/성능 정보 (32) 를 애플리케이션 컴퓨팅 디바이스 (20) 에 전송한다 (122). 상태/성능 정보 (32) 는 그래픽 디바이스 (2) 에 의한 그래픽 명령들 (30) 의 실행과 관련된다. 일 양태에서, 그래픽 디바이스 (2) 는, 그래픽 드라이버 (18A) 의 상태/성능 데이터 모듈 (116) 을 사용하여 상태/성능 정보 (32) 를 전송할 수도 있다. 상태/성능 정보 (32) 는, 그래픽 명령들 (30) 을 실행하는 그래픽 디바이스 (2) 의 프로세서들 (10, 12, 14, 또는 16) 중 하나 이상으로부터의 상태 정보 또는 데이터를 포함할 수도 있고, 그래픽 데이터를 포함할 수도 있다. 또한, 상태/성능 정보 (32) 는 이들 프로세서들 (10, 12, 14, 또는 16) 중 하나 이상으로부터 수집된 성능 메트릭들을 포함할 수도 있다. 이들 경우에서, 그래픽 디바이스 (2) 는, 그래픽 드라이버 (18A) 의 프로세서 사용도 모듈 (112) 및/또는 하드웨어 카운터 모듈 (114) 을 사용하여 상태/성능 정보 (32) 를 전송할 수도 있다.
또한, 그래픽 디바이스 (2) 는 애플리케이션 컴퓨팅 디바이스 (20) 로부터 하나 이상의 요청된 변경들 (34) 을 수신할 수 있다 (123). 이들 요청된 변경들 (34) 은 그래픽 디바이스 (2) 로 하여금, 그래픽 디바이스 (2) 에 의한 그래픽 명령들 (30) 의 실행을 변경시키게 할 수도 있다. 요청된 변경들 (34) 은, 그래픽 디바이스 (2) 상에서의 그래픽 명령들 (30) 중 하나 이상의 실행을 디스에이블시키기 위한 요청, 그래픽 디바이스 (2) 상의 그래픽 명령들 (30) 중 하나 이상을 변경시키기 위한 요청, 또는 그래픽 디바이스 (2) 상의 상태 정보를 변경시키기 위한 요청 중 하나 이상을 포함할 수도 있다. 일 양태에서, 그래픽 디바이스 (2) 는, 그래픽 드라이버 (18A) 의 오버라이드 모듈 (120), API 트레이스 모듈 (118), 및/또는 상태/성능 데이터 모듈 (116) 을 사용하여, 요청된 변경들 (34) 을 수신할 수도 있다
요청된 변경들 (34) 의 프로세싱 시에, 그래픽 디바이스 (2) 는, 요청된 변경들 (34) 에 기초하여 애플리케이션 컴퓨팅 디바이스 (20) 에 업데이트된 명령들 및/또는 상태 정보 (35) 를 전송할 수도 있다 (124). 일 양태에서, 그래픽 디바이스 (2) 는, 그래픽 드라이버 (18A) 의 API 트레이스 모듈 (118) 및/또는 상태/성능 데이터 모듈 (116) 을 사용하여, 업데이트된 명령들/정보 (35) 를 전송할 수도 있다.
그래픽 디바이스 (2) 가 하나 이상의 그래픽 이미지 또는 이미지 프레임들에 대한 프로세싱 정보를 완료하지 못했다면 (125), 그래픽 디바이스는, 그래픽 명령들 (30) 의 전송, 상태/성능 정보 (32) 의 전송, 요청된 변경들 (34) 의 수신, 업데이트된 명령들/정보 (35) 의 수신을 그래픽 이미지의 다수의 이미지들 또는 프레임들에 대해 반복할 수도 있다. 몇몇 경우, 그래픽 디바이스 (2) 는 그래픽 명령들 (30) 및 상태/성능 정보 (32) 에 따라 디스플레이 디바이스 (6) 상에 하나 이상의 그래픽 이미지들을 디스플레이할 수도 있다.
도 7은 일 양태에 따른, 프로세서들 (22) 상의 시뮬레이션 애플리케이션 (28) (도 1) 또는 시뮬레이션 애플리케이션 (29) (도 2) 의 실행을 통해 애플리케이션 컴퓨팅 디바이스 (20) 에 의해 수행될 수도 있는 방법의 흐름도이다. 애플리케이션 컴퓨팅 디바이스 (20) 는, 외부 그래픽 디바이스 (2) 로부터의 그래픽 명령들 (30) 과 같은 복수의 그래픽 명령들을 외부 그래픽 디바이스로부터 수신한다 (130). 그래픽 명령들 (30) 은, 3차원 (3D) 그래픽 이미지들과 같은 하나 이상의 그래픽 이미지들을 디스플레이 디바이스 (6) 에 디스플레이하도록 그래픽 디바이스 (2) 에 실행된다. 일 양태에서, 그래픽 명령들 (30) 은, 실행될 경우 그래픽 이미지들을 렌더링하는 호 스트림을 포함한다. 일 양태에서, 호 스트림은, 애플리케이션 프로그래밍 인터페이스 (API) 명령들로부터 생성된 바이너리 명령들을 포함한다.
애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽 디바이스 (2) 로부터 상태 및/또는 성능 정보 (32) 를 수신할 수도 있다 (132). 상태/성능 정보 (32) 는 그래픽 디바이스 (2) 상에서의 그래픽 명령들 (30) 의 실행과 관련된다. 상태/성능 정보 (32) 는, 그래픽 디바이스 (2) 가 그래픽 이미지를 렌더링함에 따라 그 그래픽 디바이스 (2) 의 하나 이상의 상태들을 나타내는 상태 정보를 포함할 수도 있다. 상태 정보는, 제어 프로세서 (10), 그래픽 프로세서 (12), 버텍스 프로세서 (14), 및/또는 디스플레이 프로세서 (16) 과 같이, 그래픽 명령들 (30) 을 실행하는 그래픽 디바이스 (2) 중 하나 이상의 프로세서들로부터의 상태 정보를 포함할 수도 있다. 몇몇 경우, 상태/성능 정보 (32) 는 그래픽 데이터 (예를 들어, 프리미티브 데이터 및/또는 래스터화된 데이터) 를 포함할 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 명령들 (30) 및 상태/성능 정보 (32) 에 따라 하나 이상의 그래픽 이미지들의 표현을 디스플레이할 수도 있다 (134). 그러한 방식으로, 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 디바이스 (2) 를 시뮬레이팅하는 시뮬레이팅된 환경 내에서 이들 그래픽들의 표현을 디스플레이할 수 있다. 시뮬레이팅된 환경은, 애플리케이션 컴퓨팅 디바이스 (20) 의 프로세서들 (22) 상의 시뮬레이션 애플리케이션 (28) 의 실행을 통해 제공될 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는, 디스플레이 디바이스 (24) 상에서 그래픽 명령들 (30) 및 상태/성능 정보 (32) 의 적어도 일부를 디스플레이한다 (136). 몇몇 경우, 그래픽 명령들 (30) 이 바이너리 명령들을 포함할 경우, 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽 명령들 (30) 의 시각적 표현을 디스플레이한다. 상술된 바와 같이, 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 명령들 (30) 을 명령들 (30) 의 표현에 매핑하기 위해 명령 매핑 정보 (31) 를 사용할 수도 있다. 그 표현은, 디스플레이 디바이스 (24) 상에서 시각적으로 디스플레이될 수도 있는 관련 그래픽 애플리케이션 프로그래밍 인터페이스 (API) 명령들을 포함할 수도 있다. 또한, 상태/성능 정보 (32) 의 시각적 표현이 디스플레이 디바이스 (24) 상에서 디스플레이될 수도 있다. 그래픽 명령들의 수신 (130), 상태 정보의 수신 (132), 그래픽 이미지의 표현의 디스플레이 (134), 및 명령들 및 상태 정보의 디스플레이 (136) 는, 프로세싱할 많은 프레임들이 존재한다면, 하나 이상의 그래픽 이미지들의 다수의 이미지 프레임들에 대해 반복될 수도 있다 (138). 이러한 방식으로, 애플리케이션 컴퓨팅 디바이스 (20) 는, 디스플레이 디바이스 (24) 상에서 (3D 이미지들을 포함하는) 스틸 및 이동 그래픽 이미지들 양자를 디스플레이할 수 있다.
일 양태에서, 프로세서들 (22) 은, 디스플레이 디바이스 (24) 상에 네비게이션 콘트롤러를 디스플레이하기 위해 시뮬레이션 애플리케이션 (28) 을 실행할 수도 있다. 애플리케이션 개발자와 같은 사용자는, 디스플레이 디바이스 (24) 상에 디스플레이된 그래픽 사용자 인터페이스 내에서 네비게이션 콘트롤러와 시각적으로 상호작용할 수도 있다. 그래픽 사용자 인터페이스는, 하나 이상의 디스플레이된 그래픽 이미지들의 투시도를 변경시키기 위해 네비게이션 콘트롤러와 상호작용하도록 애플리케이션 개발자로부터의 사용자 입력을 수신할 수도 있다. 그 후, 그래픽 이미지의 변경된 투시도는, 네비게이션 콘트롤러로의 사용자 입력에 기초하여 그래픽 사용자 인터페이스에서 디스플레이될 수도 있다.
일반적으로, 하나 이상의 그래픽 이미지들이 디스플레이 디바이스 (24) 상에 시각적으로 표현되고 디스플레이된 이후, 시뮬레이션 애플리케이션 (28) 은 (프로세서들 (22) 상에서의 실행 동안) 그래픽 이미지를 변경시키기 위한 사용자 입력을 수신할 수도 있다. 예를 들어, 더 상세히 후술될 바와 같이, 애플리케이션 컴퓨팅 디바이스 (20) 는, 외부 그래픽 디바이스 (2) (여기서, 그래픽 디바이스 (2) 는 애플리케이션 컴퓨팅 디바이스 (20) 에 대해 외부에 있다) 에 의한 그래픽 명령들 (30) 의 실행에 대한 하나 이상의 요청된 변경들 (34) 을 특정하는 사용자 입력을 수신할 수도 있다. 이러한 사용자 입력의 수신 시에, 애플리케이션 컴퓨팅 디바이스 (20) 는, 프로세싱을 위해 그래픽 디바이스 (2) 에 요청된 변경들 (34) 을 전송한다. 그 후, 상술된 바와 같이, 그래픽 디바이스 (2) 는 요청된 변경들 (34) 을 프로세싱할 수도 있다. 일 양태에서, 요청된 변경들 (34) 은, 그래픽 디바이스 (2) 상에서의 그래픽 명령들 (30) 중 하나 이상의 실행을 디스에이블시키기 위한 요청, 그래픽 디바이스 (2) 상에서 그래픽 명령들 (30) 중 하나 이상을 변경시키기 위한 요청, 및 그래픽 디바이스 (2) 상에서 상태/성능 정보 (32) 를 변경시키기 위한 요청 중 하나 이상을 포함할 수도 있다.
후속하여, 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽 디바이스 (2) 로부터 복수의 업데이트된 그래픽 명령들 및/또는 정보 (35) 를 수신할 수도 있다. 업데이트된 그래픽 명령/정보 (35) 는 요청된 변경들 (34) 과 관련될 수도 있다. 업데이트된 명령들/정보 (35) 는, 그래픽 디바이스 (2) 에 의한 그래픽 명령들 (30) 의 실행에 대한 요청된 변경들 (34) 과 관련되는 업데이트된 상태 정보를 포함할 수도 있다. 업데이트된 명령들/정보 (35) 의 수신 시에, 애플리케이션 컴퓨팅 디바이스 (20) 는, 업데이트된 명령들/정보 (35) 에 따라 하나 이상의 그래픽 이미지들의 업데이트된 버전을 디스플레이할 수도 있다.
도 8은 본 발명의 일 양태에 따른, 프로세서들 (22) 상에서의 시뮬레이션 애플리케이션 (28) (도 1) 또는 시뮬레이션 애플리케이션 (29) (도 2) 의 실행을 통해 애플리케이션 컴퓨팅 디바이스 (20) 에 의하여 수행될 수도 있는 방법의 흐름도이다. 이러한 양태에서, 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽 디바이스 (2) 로부터 그래픽 명령들 (30) 을 수신할 수도 있다 (150). 또한, 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽 디바이스 (2) 로부터 상태 및/또는 성능 정보 (32) 를 수신할 수도 있다 (152). 그래픽 명령들 (30) 및 상태/성능 정보 (32) 의 수신 시에, 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 명령들 (30) 및 상태/성능 정보 (32) 에 따라 하나 이상의 그래픽 이미지들의 표현을 디스플레이할 수도 있다 (154).
이들 이미지들의 생성 동안 또는 생성 시에, 애플리케이션 컴퓨팅 디바이스 (20) 는 하나 이상의 성능 이슈들을 식별하기 위한 입력을 수신할 수도 있다 (156). 예를 들어, 몇몇 경우, 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 명령들 (30) 의 실행 및/또는 그래픽 디바이스 (2) 에 의해 제공된 상태/성능 정보 (32) 의 분석에 기초하여, 그래픽 명령들 (30) 의 실행 시에 잠재적인 병목들을 식별하도록 시뮬레이션 애플리케이션 (28) 으로부터 입력을 자동적으로 수신할 수도 있다. 이들 병목들은, 제어 프로세서 (10), 그래픽 프로세서 (12), 버텍스 프로세서 (14), 및/또는 디스플레이 프로세서 (16) 와 같은 그래픽 디바이스 (2) 의 프로세싱 파이프라인 내에서의 그래픽 명령들 (30) 의 실행과 관련될 수도 있다. 몇몇 경우, 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 이미지들을 생성하기 위한 애플리케이션 컴퓨팅 디바이스 (20) 상에서의 그래픽 명령들 (30) 의 실행 동안, 하나 이상의 성능 이슈들을 특정하거나 식별하는 입력을 애플리케이션 개발자와 같은 사용자로부터 수신할 수도 있다.
*일 양태에서, 상태/성능 정보 (32) 는 그래픽 디바이스 (2) 상에서의 그래픽 명령들 (30) 의 실행과 관련된 성능 정보를 포함한다. 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 명령들 (30) 의 그의 실행 동안 그래픽 디바이스 (2) 상에서 하나 이상의 성능 이슈들을 식별하기 위해 성능 정보를 분석할 수도 있다. 몇몇 경우, 성능 정보는, 그래픽 디바이스 (2) 상에서 그래픽 명령들 (30) 을 실행할 수도 있는 프로세서들 (10, 12, 14, 또는 16) 중 하나 이상으로부터 수집되는 성능 메트릭들을 포함할 수도 있다. 애플리케이션 컴퓨팅 디바이스 (20) 가 그래픽 디바이스 (2) 로부터 수신된 성능 정보를 분석할 경우, 이들 프로세서들 (10, 12, 14, 또는 16) 중 하나 이상에서 감소된 성능을 식별할 수도 있다.
그러한 이슈들의 식별 시에, 애플리케이션 컴퓨팅 디바이스 (20) 는, 그래픽 명령들 (30) 의 실행에 대한 하나 이상의 요청된 변경들 (34) 을 그래픽 디바이스 (2) 로 전송할 수도 있다 (158). 몇몇 경우, 애플리케이션 컴퓨팅 디바이스 (20) 는 요청된 변경들 (34) 중 하나 이상을 특정하는 사용자 입력을 수신할 수도 있다. 일 양태에서, 요청된 변경들 (34) 은, 그래픽 디바이스 (2) 상에서의 그래픽 명령들 (30) 중 하나 이상의 실행을 디스에이블시키기 위한 요청, 그래픽 디바이스 (2) 상의 그래픽 명령들 (30) 중 하나 이상을 변경시키기 위한 요청, 및 그래픽 디바이스 (2) 상의 상태/성능 정보 (32) 를 변경시키기 위한 요청 중 적어도 하나를 포함할 수도 있다.
(상술된 바와 같이) 그래픽 디바이스 (2) 가 요청된 변경들 (34) 을 프로세싱한 이후, 애플리케이션 컴퓨팅 디바이스 (20) 는 그래픽 디바이스 (2) 로부터 복수의 업데이트된 명령들 및/또는 정보 (35) 를 수신할 수도 있다 (160). 업데이트된 명령들/정보 (35) 는 업데이트된 그래픽 명령들 및/또는 업데이트된 성능 정보를 포함할 수도 있다. 임의의 업데이트된 그래픽 명령들 및/또는 성능 정보는, 그래픽 디바이스 (2) 에 의한 그래픽 명령들 (30) 의 실행에 대한 요청된 변경들 (34) 과 관련될 수도 있다. 그 후, 애플리케이션 컴퓨팅 디바이스 (20) 는, 업데이트된 그래픽 명령들 및 업데이트된 성능 정보에 따라, 디스플레이 디바이스 (24) 상에서의 하나 이상의 그래픽 이미지들의 업데이트된 표현을 디스플레이할 수도 있다.
그 후, 애플리케이션 컴퓨팅 디바이스 (20) 는, 이전에 식별된 성능 이슈들 중 하나 이상이 해결되었는지를 결정하기 위해, 업데이트된 성능 정보를 분석할 수도 있다 (162). 몇몇 경우, 애플리케이션 컴퓨팅 디바이스 (20) 는, 특정한 성능 이슈들이 해결되거나 완화되었는지를 결정하기 위해, 업데이트된 명령들/정보 (35) 를 자동적으로 분석 또는 프로세싱할 수 있을 수도 있다. 몇몇 경우, 애플리케이션 개발자는, 디스플레이 디바이스 (24) 상에 디스플레이된 업데이트된 명령들/정보 (35) 의 개발자의 분석 및/또는 그래픽 이미지들의 업데이트된 표현의 리뷰 시에, 특정한 성능 이슈들이 해결되거나 완화되었다는 것을 애플리케이션 컴퓨팅 디바이스 (20) 에 사용자 입력을 통해 나타낼 수 있을 수도 있다.
애플리케이션 컴퓨팅 디바이스 (20) 는, 기존의 성능 이슈들을 식별하는 액트, 그래픽 디바이스 (2) 에 요청된 변경들 (34) 을 전송하는 액트, 및 식별된 성능 이슈들이 해결되거나 완화될 때까지 업데이트된 명령들 및/또는 정보 (35) 를 수신하는 액트를 반복적인 방식으로 반복한다. 또한, 애플리케이션 디바이스 (20) 는, 디스플레이 디바이스 (24) 상에 시각적으로 표현된 하나 이상의 그래픽 이미지들의 다수의 이미지 프레임들에 대해 도 8에 도시된 액트들을 반복한다 (164). 이러한 방식으로, 애플리케이션 컴퓨팅 디바이스 (20) 는 디스플레이 디바이스 (24) 상에 (3D 이미지들을 포함하는) 스틸 및 이동 그래픽 이미지들 양자를 디스플레이할 수 있다.
도 9는 일 양태에 따른, 그래픽 윈도우 (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) 를 포함하는 컴퓨팅 디바이스는 도 10에 도시된 개념도 외부에 놓여져 있다.
상술된 바와 같이, 그래픽 디바이스 (200) 는 (도 9의 예에서는 입방체인) 3D 그래픽 이미지 (202) 를 디스플레이할 수 있다. 또한, 그래픽 디바이스 (200) 는 키패드 (204) 를 갖는다. 사용자는 그래픽 디바이스 (200) 를 조작하기 위해 키패드 (204) 와 상호작용할 수도 있다. 키패드 (204) 는 다수의 키들 및/또는 버튼들을 포함할 수도 있다. 그래픽 디바이스 (200) 는, 그래픽 디바이스 (201) 를 포함하는 디바이스 (예를 들어, 애플리케이션 컴퓨팅 디바이스 (20)) 에 그래픽 명령들 및 상태/성능 정보를 접속기 (206) 를 통해 전송할 수 있다. 일 양태에서, 접속기 (206) 는 유니버셜 시리얼 버스 (USB) 접속기를 포함한다. 다른 양태에서, IEEE (Institute of Electrical and Electronic Engineers) 1394 접속기와 같은 상이한 형태의 접속기들이 사용될 수도 있다. 몇몇 양태에서, 무선 통신이 접속기 (206) 를 대체할 수도 있다.
도 9의 예에 도시된 바와 같이, 디스플레이 디바이스 (201) 는 그래픽 사용자 인터페이스 내에서 다양한 타입의 정보를 디스플레이할 수도 있다. 이러한 예에서, 디스플레이 디바이스 (201) 는 그래픽 사용자 인터페이스 내에 그래픽 윈도우 (203) 를 디스플레이한다. 윈도우 (203) 는 디스플레이 영역 (211), 그래픽 명령 영역 (208), 및 상태/성능 정보 영역 (214) 을 포함한다. 디스플레이 영역 (211) 은, 상술된 바와 같이, 3D 그래픽 이미지 (202) 의 표현인 3D 그래픽 이미지 (210) 를 포함한다. 이러한 예에서, 3D 그래픽 이미지는 입방체를 포함한다. 디스플레이 디바이스 (201) 상에 디스플레이된 정보는 일 양태에 따른, 디버깅 및 테스팅을 위해 그래픽 디바이스 (202) 상에 디스플레이된 정보의 표현 또는 시뮬레이션을 포함한다.
도 9의 예에서, 그래픽 명령 영역 (208) 은, 그래픽 디바이스 (200) 로부터 수신된 하나 이상의 그래픽 명령들의 시각적 표현을 포함한다. 상술된 바와 같이, 그러한 명령들의 시각적 표현은 그러한 명령들의 일 표현을 포함할 수도 있다. 예를 들어, 그래픽 디바이스 (200) 가 바이너리 그래픽 명령들을 전송하면, 디스플레이 디바이스 (201) 는, 고레벨 애플리케이션 프로그래밍 인터페이스 (API) 명령들 (예를 들어, OpenGL 명령들) 과 같은 다른 형태로 그러한 명령들의 표현을 디스플레이할 수도 있다. (도 1에 도시된 매핑 정보 (31) 와 같은) 매핑 정보는, 그래픽 명령 영역 (208) 내에 디스플레이될 수도 있는 또 다른 포맷으로 수신 바이너리 명령들을 매핑하는데 사용될 수도 있다.
상태/성능 정보 영역 (214) 은, 그래픽 디바이스 (200) 로부터 수신된 선택된 상태 및/또는 성능 정보의 시각적 표현을 포함한다. 수신된 그래픽 명령들 및/또는 상태/성능 정보는 디스플레이 영역 내에서 3D 그래픽 이미지 (210) 를 디스플레이하는데 사용될 수도 있다. 일 양태에서, 그래픽 디바이스 (200) 는, 다양한 상태 및/또는 성능 데이터를 제공하기 위해 (도 5에 도시된 상태/성능 데이터 모듈 (116) 과 같은) 상태/성능 데이터 모듈을 구현하는 그래픽 드라이버를 이용할 수도 있다. 수신된 상태/성능 정보는 그래픽 데이터 (예를 들어, 프리미티브 데이터 및/또는 래스터화된 데이터) 를 포함할 수도 있다.
또한, 윈도우 (203) 는 하나 이상의 선택기들 (212A 내지 212N) 을 포함한다. 사용자는 이들 선택기들 (212A 내지 212N) 중 임의의 선택기를 선택할 수도 있다. 더 상세히 후술될 바와 같이, 각각의 선택기 (212A 내지 212N) 는, 통계 및 네비게이션 기능들과 같은 상이한 기능들과 관련될 수도 있다. 윈도우 (203) 는 선택기들 (216A 내지 216N 및 218A 내지 218N) 을 더 포함하며, 그 각각은 사용자에 의해 선택될 수도 있다. 또한, 각각의 선택기 (216A 내지 216N 및 218A 내지 218N) 는, 도 10을 참조하여 더 상세히 후술될 바와 같이, 메트릭 기능, 오버라이드 기능, 및/또는 텍스처 기능과 같은 상이한 기능들과 관련될 수도 있다.
애플리케이션 개발자와 같은 사용자는 윈도우 (203) 내에서 디스플레이되는 정보를 변경시킬 수도 있다. 예를 들어, 사용자는, 그래픽 명령 영역 (208) 내에 디스플레이된 명령들의 하나 이상, 또는 상태/성능 정보 영역 (214) 내의 상태/성능 정보 중 임의의 것 중 하나 이상을 변경시킬 수도 있다.
그 후, 윈도우 (203) 내의 사용자에 의해 개시된 임의의 변경들은 요청된 변경으로서 그래픽 디바이스 (200) 에 역으로 전송될 수도 있다. 그 후, 그래픽 디바이스 (200) 는 이들 변경들을 프로세싱할 수도 있고, 업데이트된 명령들 및/또는 정보를 제공할 수도 있으며, 그 후, 그 업데이트된 명령들 및/또는 정보는 그래픽 명령 영역 (208) 및/또는 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있다. 또한, 업데이트된 명령들 및/또는 정보는 디스플레이 영역 (211) 내에 3D 그래픽 이미지 (210) 의 변경된 버전을 디스플레이하는데 사용될 수도 있다.
일 양태에서, 영역 (214) 내에 디스플레이될 수도 있는 상태 및/또는 성능 정보는, 그래픽 디바이스 (200) 상의 그래픽 명령들의 실행 동안 잠재적인 병목들을 식별하기 위해 (도 1에 도시된 애플리케이션 컴퓨팅 디바이스 (20)) 디스플레이 디바이스 (201) 를 포함하는 컴퓨팅 디바이스에 의해 분석될 수도 있다. 최종적으로, 애플리케이션 개발자와 같은 사용자는, 그래픽 디바이스 (200) 상의 그래픽 명령들의 실행을 최적화하기 위한 디버깅 프로세스 동안, 윈도우 (203) 에 프리젠테이션된 정보를 뷰잉하기를 원할 수도 있다. 상술된 바와 같이, 병목들은 그래픽 디바이스 (200) 의 그래픽 프로세싱 파이프라인 내의 어느 곳에서도 도입될 수도 있으며, 애플리케이션 개발자가 성능 최적화를 위해 그러한 병목들을 격리시키는 것은 어려울 수도 있다. 상태 및/또는 성능 정보의 분석을 통해, 잠재적인 병목들 및 가능한 차선책들은, 하나 이상의 서브-윈도우들 또는 팝-업 윈도우들 또는 윈도우 (203) 의 영역 (214) 과 같은 윈도우 (203) 에 디스플레이될 수 있다.
일 양태에서, 윈도우 (203) 는, 그래픽 디바이스 (200) 로부터 수신된 그래픽 명령들의 호-스트림에서 직면된 병목들에 관한 리포트를 디스플레이할 수도 있으며, 또한, 가능한 차선책들을 디스플레이할 수도 있다. 몇몇 경우, 이들 가능한 차선책들은 "왓-이프 (what-if)" 시나리오들로서 사용자에게 프리젠테이션될 수도 있다. 예를 들어, 호-스트림에서 비-최적화된 삼각형-리스트를 렌더링하는 것이 하나의 가능한 시나리오로서 프리젠테이션될 수도 있지만, 삼각형-스트립 최적화 프레임워크를 통해 그 리스트를 프리-프로세싱하는 것이 제 2 가능한 시나리오로서 프리젠테이션될 수도 있다. 사용자는 이들 가능한 차선책 시나리오들 중 임의의 시나리오를 요청된 변경들로서 선택할 수도 있고, 그 후, 그 요청된 변경들은 그래픽 디바이스 (200) 에 역으로 송신되며, 여기서 그 성능이 측정될 수도 있다. 그 후, 그래픽 디바이스 (200) 는, 그래픽 명령 영역 (208) 및/또는 상태/성능 정보 영역 (214) 내에서 프리젠테이션될 수도 있는 업데이트된 명령들/정보를 전송한다. 그 후, 사용자는 결과들을 뷰잉할 수 있으며, 최적의 솔루션을 식별하기 위해 다양하고 상이한 잠재적인 차선책들에 대해 결과들을 비교한다. 사용자는, 그들의 애플리케이션으로부터 병목들을 제거하기 위해 취해질 수 있는 일련의 단계들을 신속하게 식별하기 위하여 이러한 프로세스를 사용할 수 있다.
사용자는, 실험의 목적을 위해 윈도우 (203) 내에서 조정들, 또는 시행/착오 디버깅을 계속 반복적으로 행할 수도 있다. 사용자는, 디스플레이 영역 (211) 내에서 디스플레이되는 이미지들 또는 장면들에서의 변화들을 식별하기 위해, 그래픽 명령들 및 상태/성능 정보의 다양하고 상이한 형태들 또는 그들의 조합들로 실험할 수도 있다. 사용자는, 호-스트림의 일부일 수도 있는 그래픽 명령들을 인터액티브하게 뷰잉 및 변경시키도록 윈도우 (203) 의 콘텐츠들에 의해 제공된 시뮬레이션 환경, 및 소스 코드를 재컴파일하고 그 컴파일된 코드를 그래픽 디바이스 (200) 상에서 재실행할 필요없이 그래픽 디바이스 (200) 에 의해 제공된 상태들을 사용할 수 있다.
몇몇 경우, 사용자는, 그래픽 이미지 (210) 의 투시도를 변경시키기 위해 그래픽 카메라와 같은 그래픽 네비게이션 콘트롤러를 조작하도록 버튼들 (212A 내지 212N) 중 하나 이상을 조작할 수도 있다. 그러한 조작은 요청된 변경들로서 캡쳐될 수도 있으며, 그 후, 그 요청된 변경들은 그래픽 디바이스 (200) 에 역으로 전송된다. 그 후, 그래픽 디바이스 (200) 에 의해 제공된 업데이트된 명령들/정보는 그래픽 이미지 (210) 이 투시도를 변경시키기 위해 사용된다.
몇몇 경우, 다양한 텍스처 및/또는 상태 정보는, 변경가능한 엔티티들로서 윈도우 (203) 의 영역 (214) 에 제공될 수도 있다. 또한, 심지어 사용자는, 그래픽 명령 영역 (208) 내의 하나 이상의 대응하는 명령들이 식별되도록, 예를 들어, 디스플레이 영역 (211) 내의 그래픽 이미지 (210) 의 픽셀을 선택할 수도 있다. 이러한 방식으로, 사용자는, 그래픽 이미지 (210) 의 그 픽셀 또는 다른 부분들을 렌더링 또는 생성하는데 사용되었던 렌더링 명령 또는 호에 후방으로 효율적으로 드릴 (drill) 할 수 있다. 그래픽 디바이스 (200) 상에서 프리젠테이션되는 바와 정확하게 그래픽 디바이스 (201) 가 윈도우 (203) 에서 이미지 (210) 를 생성할 수도 있기 때문에, 사용자는, (그래픽 명령 영역 (208) 에서 디스플레이된 다양한 그래픽 명령들에 기초할 수도 있는) 그들의 애플리케이션에서의 이슈들을 신속하게 격리시킬 수 있으며, 상태/성능 영역 (214) 내의 임의의 상태들을 프로토타입 새로운 효과들로 변경시킬 수 있다.
도 10은 일 양태에 따른, 그래픽 윈도우 (220) 내에서 정보를 디스플레이하는 디스플레이 디바이스 (201) 에 커플링된 그래픽 디바이스 (200) 의 또 다른 예를 도시한 개념도이다. 이러한 양태에서, 윈도우 (220) 는 다양한 명령 정보 뿐만 아니라 메트릭 정보를 포함한다.
예를 들어, 그래픽 명령 영역 (208) 내에서, 다양한 그래픽 명령들 (242) 이 도시된다. 그래픽 명령들 (242) 은, 그래픽 디바이스 (200) 에 의해 제공된 그래픽 명령들의 서브세트일 수도 있다. 예를 들어, 그래픽 디바이스 (200) 가 그래픽 디바이스 (2) 의 일부이면, 그래픽 명령들 (242) 은 그래픽 명령들 (30) 의 서브세트일 수도 있다. 몇몇 경우, (도 1에 도시된 매핑 정보 (31) 또는 도 2에 도시된 매핑 정보 (33) 과 같은) 매핑 정보는, 그래픽 명령 영역 (208) 내에서 디스플레이되는 명령들 (242) 로서 유형화되는 이들 명령들의 시각적으로 표현에 그래픽 디바이스 (200) 로부터 수신된 인커밍 명령들을 매핑하는데 사용될 수도 있다. 예를 들어, 수신된 명령들이 바이너리 형태이면, 명령들 (242) 은 바이너리 형태로 명령들을 생성하는데 사용되었던 API 명령들을 포함할 수도 있다.
도 10의 예에 도시된 바와 같이, 그래픽 명령들 (242) 은 고레벨 명령들 및 저레벨 명령들 양자를 포함한다. 애플리케이션 개발자와 같은 사용자는 명령들 (242) 의 풀세트를 뷰잉하기 위해 스크롤바 (244) 를 사용할 수도 있다. 특정한 고레벨 명령들은 저레벨 API 명령들과 같은 하나 이상의 저레벨 명령들을 포함할 수도 있다. 몇몇 경우, 애플리케이션 개발자는, 관련 고레벨 명령들의 일부 또는 그 명령들에 의해 실행된 임의의 저레벨 명령들을 뷰잉하기 위해 특정한 고레벨 명령에 대해 (예를 들어, 클릭함으로써) 선택할 수도 있다. 상술된 바와 같이, 명령들 (242) 와 같은 수신된 그래픽 명령들은, 윈도우 (220) 의 디스플레이 영역 (211) 에 도시된 그래픽 이미지 (210) 를 포함하는 그래픽 이미지 (202) 의 표현을 생성하는데 사용된다.
다양한 선택 버튼들이, 도 10에서 상태/성능 정보 영역 (214) 아래에 도시되어 있다. 이들 선택 버튼들은 텍스처 버튼 (236), 오버라이드 버튼 (238), 및 메트릭 버튼 (240) 을 포함한다. 도 10의 예에서, 애플리케이션 개발자는 메트릭 버튼 (240) 을 선택한다. 이러한 버튼의 선택 시에, 다양한 메트릭 옵션들이 디스플레이될 수도 있다. 예를 들어, 하나 이상의 메트릭 버튼들 (234A 내지 234N) 이 상태/성능 영역 (214) 위에 디스플레이될 수도 있다. 각각의 메트릭 버튼 (234A 내지 234N) 은 특정한 메트릭과 관련될 수도 있다. 몇몇 경우, 이들 메트릭들 중 하나 이상은 미리 정의되거나 미리 구성된 메트릭 타입일 수도 있으며, 몇몇 경우, 애플리케이션 개발자는 메트릭들 중 하나 이상을 선택하거나 맞춤화할 수도 있다. 예를 들어, 예시적인 메트릭들은, 초당 프레임, (하나 이상의 프로세서들에 대한) % 비지 (busy), 버스 비지, 메모리 비지, 버텍스 비지, 초당 버텍스, 초당 삼각형, 초당 픽셀 클록, 초당 프레그먼트 등 중 임의의 하나 이상을 포함할 수도 있다. 애플리케이션 개발자는, 선택된 메트릭에 관한 부가적인 세부사항들을 뷰잉하기 위해 메트릭 버튼들 (234A 내지 234N) 중 임의의 버튼을 선택할 수도 있다.
예를 들어, 메트릭 버튼 (234A) 이 초당 프레임들의 수와 관련되면, 애플리케이션 개발자는, 그래픽 이미지 (210) 에 대해 (성능과 관련된) 초당 프레임들의 수에 대한 부가적인 세부사항들을 뷰잉하도록 메트릭 버튼 (234A) 을 선택할 수도 있다. 몇몇 경우, 개발자는 메트릭 버튼 (234A) 을 선택할 수도 있거나, 메트릭 버튼 (234A) 을 상태/성능 정보 영역 (214) 으로 드래그할 수도 있다. 초당 프레임들의 수에 대한 상세한 정보는 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있다. 또한, 개발자는 디스플레이 영역 (211) 으로 메트릭 버튼 (234A) 을 드래그할 수도 있거나, 메트릭 버튼 (234A) 의 애플리케이션을 위해 그래픽 이미지 (210) 의 일부를 선택할 수도 있다. 예를 들어, 개발자는 메트릭 버튼 (234A) 을 선택한 이후 그래픽 이미지 (210) 의 일부를 선택할 수도 있으며, 그 후, 그 선택된 부분에 대한 초당 프레임들의 수에 관한 상세한 정보가 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있다. 그러한 방식으로, 개발자는, 메트릭 버튼들 (234A 내지 234N) 중 하나 이상의 선택 및 그래픽 이미지 (210) (또는 그 일부) 의 더 가능한 선택에 기초하여, 임의의 수의 상이한 메트릭 타입들에 대한 성능 데이터를 뷰잉할 수도 있다.
일 양태에서, 윈도우 (220) 내에서 디스플레이될 수도 있는 메트릭 데이터는, 그래픽 디바이스 (200) 의 그래픽 드라이버 (예를 들어, 도 5에 도시된 그래픽 드라이버 (18)) 에 의해 제공될 수도 있다. 이러한 그래픽 드라이버는, 다양한 데이터를 제공하기 위해 하드웨어 카운터 모듈 (예를 들어, 도 5의 하드웨어 카운터 모듈 (114)) 및/또는 프로세서 사용도 모듈 (예를 들어, 도 5의 프로세서 사용도 모듈 (112)) 을 구현할 수도 있으며, 그 후, 그 데이터는 메트릭 데이터로서 윈도우 (220) 내에 디스플레이될 수도 있다.
몇몇 경우, 개발자는 텍스처 버튼 (236) 을 또한 선택할 수도 있다. 선택 시에, 그래픽 이미지 (210) 에 관련된 다양한 형태의 텍스처 정보는 그래픽 디바이스 (201) 에 의해 디스플레이될 수도 있다. 예를 들어, 텍스처 정보는, 상태/성능 정보 영역 (214) 과 같은 윈도우 (220) 내에 디스플레이될 수도 있다. 몇몇 경우, 텍스처 정보는 부가적인 (예를 들어, 팝-업) 윈도우 (미도시) 내에 디스플레이될 수도 있다. 개발자는 디스플레이된 텍스처 정보를 뷰잉할 수도 있지만, 몇몇 경우, 텍스처 정보를 또한 변경시킬 수도 있다. 이들 경우들에서, 텍스처 정보에 대한 임의의 변경들은 요청된 변경들로서 그래픽 디바이스 (200) 에 역으로 전파될 수도 있다. 그래픽 디바이스 (200) 로부터의 업데이트된 명령들/정보의 수신 시에, 그래픽 이미지 (210) 에 대한 변경들은 디스플레이 영역 (211) 내에 디스플레이될 수도 있다. 도 11은 텍스처 버튼 (236) 의 선택 시에 디스플레이될 수도 있는 특정한 텍스처 정보를 포함한다.
몇몇 경우, 개발자는 오버라이드 버튼 (238) 을 또한 선택할 수도 있다. 오버라이드 버튼 (238) 의 선택 이후, 개발자에 의해 변경될 수도 있거나 오버라이드될 수도 있는 명령 및/또는 상태 정보와 같은 특정한 정보가 (예를 들어, 윈도우 (220) 또는 또 다른 윈도우 내에) 디스플레이될 수도 있다. 임의의 변경들 또는 오버라이드들은, 그래픽 디바이스 (200) 에 전송되는 하나 이상의 요청된 변경들 내에 포함될 수도 있다. 일 양태에서, 그래픽 디바이스 (200) 는 임의의 요청된 변경들을 프로세싱하기 위해 그래픽 드라이버 (18A) (도 5) 와 같은 그래픽 드라이버를 구현할 수도 있다. 예를 들어, 그래픽 디바이스 (200) 는 하나 이상의 오버라이드들을 포함하는 그러한 요청된 변경들을 프로세싱하도록 오버라이드 모듈 (120) 을 사용할 수도 있다.
몇몇 경우, 개발자는, 그래픽 명령 영역 (208) 내에 도시된 그래픽 명령들 (242) 에 걸쳐 하나 이상을 오버라이드할 수도 있다. 이들 경우들에서, 개발자는, 그래픽 명령들 (242) 중 하나 이상을 변경시키거나 오버라이드하기 위해 그래픽 명령 영역 (208) 내에 정보를 타이핑하거나 입력할 수도 있다. 그 후, 이들 변경들은 그래픽 디바이스 (200) 에 전송될 수도 있으며, 그 그래픽 디바이스는 디스플레이 영역 (211) 내에 그래픽 이미지 (210) 의 디스플레이를 업데이트하기 위해 업데이트된 명령들/정보를 제공할 것이다. 예를 들어, 개발자는, 명령들 (242) 에 의해 제공된 하나 이상의 기능들을 오버라이드하기 위해 그래픽 명령들 (242) 의 파라미터들, 순서, 타입 등을 변경할 수도 있다. 일 양태에서, 매핑 정보 (31) (도 1) 또는 매핑 정보 (33) (도 2) 는 그래픽 명령들 (242) 에 대한 변경들을 또 다른 포맷 (예를 들어, 바이너리 명령들) 의 대응하는 명령들로 매핑 또는 변환하는데 사용될 수도 있으며, 그 후, 그것은 그래픽 디바이스 (200) 에 제공될 수도 있다.
몇몇 경우, 개발자는, 그래픽 디바이스 (200) 에 의해 구현된 프로세싱 파이프라인과 관련되는 하나 이상의 기능들을 오버라이드하기 위해 오버라이드 버튼 (238) 을 또한 선택할 수도 있다. 도 12는 오버라이드 버튼 (238) 의 선택 시에 개발자에게 디스플레이될 수도 있는 오버라이드 스크린의 일 예를 도시한다.
윈도우 (220) 는 선택 버튼들 (230 및 232) 을 더 포함한다. 선택 버튼 (230) 은 통계 버튼이고, 선택 버튼 (232) 은 네비게이션 버튼이다. 개발자는, 그래픽 이미지 (210) 의 디스플레이와 관련된 통계 정보를 뷰잉하도록 통계 버튼 (230) 을 선택할 수도 있다. 이러한 통계 정보는 통계 정보의 하나 이상의 그래프들, 테이블들, 또는 다른 형태들을 포함할 수도 있다. 도 11은, 통계 버튼 (230) 의 사용자 선택 시에 디스플레이될 수도 있는 특정한 통계 및 텍스처 정보의 일 예를 제공한다. 개발자는, 그래픽 이미지 (210) 의 디스플레이와 관련된 다양한 성능 또는 다른 관련 이슈들의 더 양호한 이해를 획득하도록 통계 정보를 뷰잉할 수도 있다.
*개발자는, 디스플레이 영역 (211) 내에서 네비게이팅하고, 더 가능하게는, 디스플레이 영역 (211) 내에서 그래픽 이미지 (210) 의 투시도를 변경시키기 위해 네비게이션 버튼 (232) 을 선택할 수도 있다. 예를 들어, 네비게이션 버튼 (232) 의 선택 시에, 3D 그래픽 카메라 또는 네비게이션 콘트롤러가 디스플레이될 수도 있다. 개발자는 디스플레이 영역 (211) 내의 임의의 영역으로 네비게이팅하기 위해 콘트롤러와 상호작용할 수도 있다. 또한, 개발자는, 예를 들어, 그래픽 이미지 (210) 를 회전시키거나 줌인/줌아웃함으로써 그래픽 이미지 (210) 의 투시도를 변경시키도록 콘트롤러를 사용할 수도 있다.
일 양태에서, 네비게이션 버튼 (232) 의 선택 및 그래픽 네비게이션 콘트롤러와의 상호작용을 통한 임의의 개발자-개시된 변경들은, 요청된 변경들 (예를 들어, 도 1에 도시된 요청된 변경들 (84) 의 일부) 로서 그래픽 디바이스 (200) 에 역으로 전파될 수도 있다. 그 후, 그래픽 디바이스 (200) 에 의해 제공된 업데이트된 명령/정보는 그래픽 이미지 (210) 의 디스플레이 (예를 들어, 투시도) 를 업데이트하는데 사용될 수도 있다. 또한, 업데이트된 명령들은 그래픽 명령 영역 (208) 내에 디스플레이될 수도 있다. 또한, 업데이트된 상태/성능 정보는, 상태/성능 정보 영역 (214) 내에 디스플레이될 수도 있다.
결과로서, 개발자는, 그래픽 이미지 (210) 를 렌더링 및 디스플레이하기 위해 교번 투시, 배향, 뷰 등이 그래픽 디바이스 (200) 의 성능 및 상태에 영향을 줄 수도 있는 방법을 효과적으로 및 효율적으로 결정할 수도 있다. 이것은, 디스플레이 디바이스 (201) 상에 디스플레이되는 시뮬레이션 환경에서 그래픽 이미지 (210) 및 효과적으로는, 그래픽 디바이스 (200) 상에 디스플레이되는 그래픽 이미지 (202) 를 생성 및 렌더링하는데 사용되는 그래픽 명령들 (242) 을 최적화할 시에 개발자에게 매우 유용할 수도 있다. 일 양태에서, 윈도우 (220) 내의 개발자-개시된 선택들 및 제어들에 기초한 그래픽 이미지 (210) 의 위치, 투시, 배향 등에서의 임의의 변경들은, 테스팅 프로세스 동안 그래픽 디바이스 (200) 상에서 디스플레이될 수도 있는 그래픽 이미지 (202) 에 대한 변경들로서 또한 관측될 수도 있다.
그래픽 사용자 인터페이스 내의 그래픽 윈도우 (220) 와의 상호작용을 통해, 애플리케이션 개발자는, 그래픽 이미지 (202) 를 생성하도록 그래픽 디바이스 (200) 에 의해 실행되는 그래픽 명령들의 시각적 표현인 그래픽 명령들 (242) 의 실행 동안 성능 이슈들 및/또는 병목들을 식별하기를 시도할 수 있다. 그래픽 이미지 (202) (즉, 그래픽 이미지 (210)) 의 표현은, 그래픽 디바이스 (200) 에 의해 수신된 그래픽 명령들 (242) 및 상태/성능 데이터에 기초하여 디스플레이 영역 (211) 내에 디스플레이된다. 그래픽 명령들 (242), 그래픽 이미지 (210), 및 상태/성능 정보 뿐만 아니라 이들 중 하나 이상에 대한 사용자-개시된 변경들에 기초한 효과들을 뷰잉함으로써, 애플리케이션 개발자는, 그래픽 디바이스 (200) 상에서의 명령들의 실행을 최적화하고 명령 실행 동안 임의의 성능 이슈들 (즉, 병목들) 을 제거 또는 완화시키기 위한 프로세스를 시행-착오로 인터액티브하게 및 동적으로 인게이지할 수 있거나 디버깅할 수 있다.
도 11은 일 양태에 따른, 도 10의 디스플레이 디바이스 (201) 에 의해 디스플레이될 수도 있는 통계 및/또는 텍스처 정보 (250) 의 일 예를 도시한 다이어그램이다. 예를 들어, 통계/텍스처 정보 (250) 의 하나 이상의 부분들은 텍스처 버튼 (236) 의 사용자-선택 시에 디스플레이될 수도 있다. 또한, 통계/텍스처 정보 (250) 의 하나 이상의 부분들은 통계 버튼 (230) 의 사용자-선택 시에 디스플레이될 수도 있다.
도 11에 도시된 통계/텍스처 정보 (250) 는, 각각 하나 이상의 값들을 갖는 다수의 예시적인 통계 및/또는 텍스처 필드들을 포함한다. 예를 들어, 정보 (250) 는 그래픽 이미지 (210) 를 렌더링 및 디스플레이하는데 필요할 수도 있는 (그래픽 명령들 (242) 와 관련된) 다수의 렌더 호에 대한 값을 포함한다. 윈도우 (220) 에 나타낸 데이터가 그래픽 디바이스 (200) 의 시뮬레이션에 기초하기 때문에, 렌더 호들의 수는, 그래픽 디바이스 (200) 상에 그래픽 이미지 (202) 를 렌더링하고 디스플레이할 필요가 있을 수도 있는 호들의 수를 효율적으로 나타낼 수도 있다. 렌더 호는, 하나 이상의 고레벨 및/또는 저레벨 명령들과 같은 그래픽 명령들 (242) 중 하나 이상과 관련될 수도 있다.
또한, 통계/텍스처 정보 (250) 는 렌더 호당 평균 텍스처 변경들 및 렌더 호당 평균 상태 변경들에 대한 값들을 포함한다. 이들 값들은, 텍스처 및/또는 상태 변경들의 수에 관한 정보를 개발자에게 제공할 수도 있으며, 이들은 전체 성능에 영향을 줄 수도 있다.
그래픽 이미지 (210) 에서의 이미지 데이터의 특정한 프레임에 대해, 통계/텍스처 정보 (250) 는, 이미지 데이터의 프레임을 생성하도록 렌더링되었던 프리미티브들에 대한 버텍스들의 수 및 삼각형들의 수에 대한 값들을 포함할 수도 있다. 또한, 렌더 호당 평균 삼각형들 및 렌더 호당 평균 버텍스들에 대한 값들이 디스플레이된다. 이들 값들은, 애플리케이션 개발자가 그래픽 명령들에 의해 구현되는 렌더 호들의 효율성을 평가하는데 유용할 수도 있다.
또한, 통계/텍스처 정보 (250) 는 텍스처 사이즈 정보를 포함한다. 도 11의 하부 근처에 도시된 바와 같이, 정보 (250) 는 하나 이상의 텍스처 사이즈들에 대한 값들 (예를 들어, 64×64, 64×128, 128×128, 256×256) 을 제공할 수도 있으며, 이는 그래픽 이미지 (210) 에 대한 각각의 텍스처 사이즈의 수를 나타낸다.
또한, 통계/텍스처 정보 (250) 는 렌더링 성능 및 효율성에 관련된 다양한 값들을 포함한다. 예를 들어, 정보 (250) 는 그래픽 이미지 (210) 에 대한 최적화된 텍스처의 퍼센트에 대한 값을 포함한다. 몇몇 경우, 디스플레이 디바이스 (210) 를 포함하는 컴퓨팅 디바이스 (예를 들어, 애플리케이션 컴퓨팅 디바이스 (20)) 는, 그래픽 디바이스 (200) 로부터 수신된 그래픽 명령들 및/또는 상태/성능 정보에 기초하여 이러한 값을 계산할 수도 있다. 통상적으로, 애플리케이션 개발자는 이러한 퍼센트 값이 가능한 높기를 원할 수도 있다. 그것이 원하는 것보다 낮으면, 개발자는, 하나 이상의 요청된 변경들을 그래픽 디바이스 (200) 에 제공하기 위해, 그래픽 명령들, 상태 정보, 성능 정보, 또는 윈도우 (220) 내의 다른 파라미터들을 조작 또는 변경시킬 수도 있다. 그래픽 디바이스 (200) 로부터 업데이트된 명령들/정보의 수신 시에, 업데이트된 값은 최적화된 텍스처들의 퍼센티지에 대해 디스플레이될 수도 있다. 개발자는, 윈도우 (220) 에서 제공된 시뮬레이션 환경 내에서 텍스처를 최적화하기 위해, 예를 들어, 디버깅 또는 시행-착오 세션 동안 이러한 프로세스로 계속할 수도 있다. 개발자는, 임의의 코드/명령들을 재컴파일할 필요없이 효과적이고 효율적인 방식으로 그것을 행할 수 있을 수도 있다.
통계/텍스처 정보 (250) 는 인덱싱되고 스트립핑된 버텍스들의 퍼센티지들에 대한 값들을 더 포함한다. 이들 값들은, 렌더링 및 디스플레이 또는 그래픽 이미지 (210) 에 대한 최적화된 삼각형들의 퍼센티지를 나타낸다. 통상적으로, 애플리케이션 개발자는 인덱싱되고 스트립핑된 버텍스들의 퍼센트 값들이 가능한 높기를 원할 수도 있다. 그들이 원하는 것보다 낮으면, 개발자는, 그래픽 디바이스 (200) 에 대한 하나 이상의 요청된 변경들을 제공하기 위해 윈도우 (220) 내에서 그래픽 명령들, 상태 정보, 성능 정보, 또는 다른 파라미터들을 조작 또는 변경시킬 수도 있다. 그래픽 디바이스 (200) 로부터의 업데이트된 명령들/정보의 수신 시에, 업데이트된 값들은 이들 퍼센티지 값들에 대해 디스플레이될 수도 있다. 개발자는, 그래픽 디바이스 (200) 상에서 임의의 코드/명령들을 재컴파일하거나 시간-소비적이거나 지루한 디버깅 동작들에 인게이지될 필요없이 최적화된 수의 삼각형들을 획득하도록 이러한 프로세스로 계속할 수도 있다.
도 12는 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 (201) 상에서 디스플레이될 수도 있는 오버라이드 스크린 (260) 을 도시한 스크린도이다. 애플리케이션 개발자는, 오버라이드 스크린 (260) 을 뷰잉할 수도 있고, 그래픽 디바이스 (200) 에 의해 제공된 하나 이상의 기능들을 오버라이딩하기 위해 오버라이드 스크린 (260) 내에 디스플레이된 정보의 하나 이상의 선택을 행할 수도 있으며, 그에 의해, 그래픽 디바이스 (200) 상에서의 명령 실행의 흐름을 수정한다.
몇몇 경우, 오버라이드 스크린 (260) 은 오버라이드 버튼 (238) 의 사용자 선택 시에 디스플레이될 수도 있다. 오버라이드 스크린 (260) 은 스크린 (220) 의 일부로서 디스플레이될 수도 있거나, 별개의 윈도우 (예를 들어, 팝-업 윈도우) 로서 디스플레이될 수도 있다. 오버라이드 스크린 (260) 은, 그래픽 디바이스 (200) 에 의해 구현될 수도 있는 그래픽 프로세싱 파이프라인의 시각적 표현을 나타낸다. 일 양태에서, 그래픽 디바이스 (200) 는 도 1에 도시된 그래픽 디바이스 (2) 를 포함할 수도 있으며, 이러한 경우, 그것은 제어 프로세서, 버텍스 프로세서, 그래픽 프로세서, 및 디스플레이 프로세서를 포함할 수도 있다. 결과로서, 오버라이드 스크린 (260) 에 도시된 그래픽 프로세싱 파이프라인의 시각적 표현은, 제어 프로세서 아이콘 (262), 버텍스 프로세서 아이콘 (264), 그래픽 프로세서 아이콘 (266), 및 디스플레이 프로세서 아이콘 (268) 을 포함할 수도 있다.
각각의 아이콘 (262, 264, 266, 및 268) 은 그래픽 디바이스 (200) 내의 대응하는 프로세서와 관련된다. 이들 아이콘들은 그래픽, 텍스처, 또는 다른 형태의 아이콘들을 포함할 수도 있다. 애플리케이션 개발자는, 예를 들어, 오버라이드 스크린 (260) 내의 아이콘을 클릭함으로써, 아이콘들 (262, 264, 266, 또는 268) 중 하나 이상을 선택할 수도 있다. 그래픽 프로세서 아이콘 (266) 과 같은 아이콘을 선택할 시에, 오버라이드 스크린 (260) 은 아이콘 (266) 과 관련되는 드롭-다운 메뉴와 같은 대응하는 메뉴 (271) 를 디스플레이한다.
도 12의 예에서, 메뉴 (271) 는 4개의 선택가능한 옵션들, 즉, (알파/투명도 동작들을 디스에이블시키기 위한) 옵션 (270), (블렌딩 동작들을 디스에이블시키기 위한) 옵션 (272), (Z-거부 동작들을 디스에이블시키기 위한) 옵션 (274), 및 (깊이 테스팅 동작들을 디스에이블시키기 위한) 옵션 (276) 을 포함한다. 옵션들 (270, 272, 274, 및 276) 과 관련된 동작들의 각각은, 그래픽 디바이스 (200) 내의 그래픽 프로세서에 의해 수행될 수도 있는 동작들에 대응한다.
도 12는, 사용자 선택이 알파 (투명도) 동작들을 디스에이블시키기 위한 옵션 (270) 에 대해 행해진다는 것을 도시한다. 옵션 (270) 의 사용자 선택 시에, 요청된 변경은 알파 동작들을 디스에이블시키기 위해 그래픽 디바이스 (200) 에 전송될 수도 있다. 그래픽 디바이스 (200) 가 도 5에 도시된 그래픽 드라이버 (18A) 를 구현하면, 그래픽 디바이스 (200) 는 요청된 변경 또는 오버라이드를 프로세싱하기 위해 오버라이드 모듈 (120) 을 사용할 수도 있다. 그 후, 오버라이드 모듈 (120) 은, 알파 동작들을 디스에이블시키기 위해 대응하는 그래픽 프로세서 (예를 들어, 도 1에 도시된 그래픽 프로세서 (12)) 에 오버라이드 요청을 전송할 수도 있다.
유사하게, 애플리케이션 프로그래머는 그래픽 프로세서 상에서 블렌딩 동작들을 디스에이블시키기 위한 옵션 (272) 을 선택할 수도 있다. 개발자는 Z-거부 동작들을 디스에이블시키기 위한 옵션 (274) 을 선택할 수도 있다. 개발자는, 그래픽 프로세서 내의 깊이 테스팅에 관련된 동작들을 디스에이블시키기 위한 옵션 (276) 을 선택할 수도 있다.
도 12의 예에서, 개발자는, 예를 들어, 이전에 인에이블될 수도 있는 하나 이상의 동작을 디스에이블시킴으로써, 그래픽 디바이스 (200) 의 그래픽 프로세서와 관련된 하나 이상의 기능들을 오버라이드할 수도 있다. 몇몇 경우, 개발자는, 알파, 블렌딩, Z-거부, 및/또는 깊이 테스팅 동작들과 같이 이전에 디스에이블되었던 임의의 동작들을 재인에이블시키도록 메뉴 (271) 와 유사한 또 다른 메뉴를 사용할 수도 있다.
따라서, 개발자는, 그래픽 프로세서에 대한 다양한 기능들 및 동작들을 계속 및 반복적으로 오버라이드 또는 변경시킬 수도 있으며, 그 후, 그러한 변경들이 성능에 어떻게 영향을 주는지를 결정할 수도 있다. 예를 들어, 개발자는 메뉴 옵션 (270) 을 선택함으로써 알파 동작들을 디스에이블시킬 수도 있으며, 그 후, 그래픽 디바이스 (200) 의 그래픽 프로세서에 관련된 것과 같은 임의의 이전의 성능 이슈들이 해결되거나 완화되었는지를 결정하기 위해 그러한 동작들의 디스에이블 시에 그래픽 디바이스 (200) 에 의해 제공되는 업데이트된 상태/성능 정보를 뷰잉할 수도 있다. 또한, 개발자는, 알파 동작들의 디스에이블에 기초하여 성능에서의 변경들 또는 가능한 개선들을 평가하기 위해, 도 11에 도시된 예시적인 정보의 타입과 같은 통계 정보를 리뷰할 수도 있다. 또한, 그래픽 이미지 (210) 의 업데이트된 버전 및 업데이트된 명령들 (242) 이 알파 동작들의 디스에이블 시에 윈도우 (220) (도 10) 에 디스플레이될 수도 있다.
물론, 다른 시나리오들에서, 애플리케이션 개발자는 그래픽 프로세서와 관련된 다른 기능들을 디스에이블 또는 인에이블시킬 수도 있다. 또한, 개발자는, 제어 프로세서, 버텍스 프로세서, 및/또는 디스플레이 프로세서와 같은 그래픽 디바이스 (200) 내의 다른 프로세서들과 관련된 기능들을 디스에이블 또는 인에이블시킬 수도 있다. 예를 들어, 개발자는, 제어 프로세서 (예를 들어, 도 1에 도시된 제어 프로세서 (10)) 와 관련된 하나 이상의 기능들을 디스에이블 또는 인에이블시키기 위해 하나 이상의 선택가능한 옵션들을 포함할 수도 있는 메뉴 (271) 와 유사한 메뉴를 뷰잉하도록 제어 프로세서 아이콘 (262) 을 선택할 수도 있다. 이들 기능들에 대한 임의의 변경들은, 예를 들어, 오버라이드 모듈 (120) 에 의한 프로세싱을 위해 그래픽 디바이스 (200) 에 전송되는 하나 이상의 요청된 변경들로서 제공될 수도 있다. 그 후, 상태 및/또는 성능 정보와 같은 업데이트된 명령들 및/또는 다른 정보는, 개발자가 제어 프로세서에 관련된 임의의 성능 이슈들 또는 병목들이 해결되거나 완화되었는지를 결정할 수도 있도록, 윈도우 (220) 에 도시된 정보를 업데이트하도록 그래픽 디바이스 (200) 에 의해 제공될 수도 있다.
도 13은 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 (201) 상에 디스플레이될 수도 있는 오버라이드 정보의 일 예를 도시한 스크린도이다. 이러한 양태에서, 오버라이드 정보는 그래픽 윈도우 (280) 내에 도시되어 있다. 그래픽 이미지 (210) 는 디스플레이 영역 (211) 내에 도시되어 있다. 상술된 바와 같이, 사용자는, 디스플레이 영역 (211) 내의 그래픽 이미지 (210) 의 디스플레이를 변경시키도록 하나 이상의 오버라이드들을 요청할 수도 있다. 일 시나리오에서, 사용자는 하나 이상의 오버라이드 선택들을 행하기 위해 오버라이드 버튼 (238) (도 10) 을 선택할 수도 있다. 도 13은, 오버라이드 버튼 (238) 의 사용자 선택 시에 윈도우 (280) 내에 디스플레이될 수도 있는 오버라이드 정보의 일 예를 도시한다.
도 13은 3개의 예시적인 오버라이드들, 즉, 오버라이드 A, 오버라이드 B, 오버라이드 C 를 도시한다. 이들 3개의 예시적인 오버라이드들 각각은 (도 12에 도시된 것을 포함하는) 디스에이블 기능, 인에이블 기능 등과 같은 임의의 오버라이드 기능에 대응할 수도 있다. 또한, 이들 3개의 예시적인 오버라이드들 각각은 하나 이상의 프로세서들의 기능과 관련될 수도 있다. 따라서, 사용자는 예를 들어, 이들 프로세서들의 특정한 동작들을 인에이블 또는 디스에이블시키기 위해 하나 이상의 프로세서들의 작동을 수정하도록 오버라이드들 중 하나 이상을 선택할 수도 있다.
각각의 오버라이드 (오버라이드 A, 오버라이드 B, 및 오버라이드 C) 는, 사용자에 의해 선택되거나 구성될 수도 있는 대응하는 파라미터들 또는 옵션들을 가질 수도 있다. 예를 들어, 오버라이드 A는 오버라이드 파라미터들 (282A) 을 갖고, 오버라이드 B는 오버라이드 파라미터들 (282B) 를 가지며, 오버라이드 C는 오버라이드 파라미터들 (282C) 을 갖는다. 사용자는, 대응하는 파라미터들을 변경시킴으로써 그 오버라이들 각각을 맞춤화할 수도 있다. 예를 들어, 오버라이드 A가 블렌딩을 디스에이블시키기 위한 오버라이드에 대응하면, 사용자는 블렌딩을 디스에이블시키기 위해 오버라이드 기능을 변경 또는 맞춤화하도록 오버라이드 파라미터들 (282A) 을 선택 또는 변경시킬 수도 있다. 또한, 오버라이드 파라미터들 (282A) 은 하나 이상의 프로세서들의 식별을 포함할 수도 있다. 예를 들어, 사용자가 그래픽 프로세서 상에서 블렌딩을 디스에이블시키기를 원하면, 오버라이드 파라미터들 (282A) 은 그래픽 프로세서의 식별을 포함할 수도 있다.
사용자에 의해 요청된 임의의 오버라이드들은, 그래픽 디바이스에 역으로 전송된 요청된 변경들 (34) 내에 포함될 수도 있다. 그 후, 상술된 바와 같이, 그래픽 디바이스는 요청된 변경들 (34) 을 프로세싱할 수도 있고, 업데이트된 명령들/정보 (35) 를 제공할 수도 있다. 업데이트된 명령들/정보 (35) 는, 디스플레이 영역 (211) 내의 그래픽 이미지 (210) 의 디스플레이를 업데이트하는데 사용될 수도 있다.
도 14는 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 (201) 상에 디스플레이될 수도 있는 텍스처 정보의 일 예를 도시한 스크린도이다. 이러한 양태에서, 텍스처 정보는 그래픽 윈도우 (290) 내에 도시되어 있다. 그래픽 이미지 (210) 는 디스플레이 영역 (211) 내에 도시되어 있다. 사용자는 그래픽 이미지 (210) 의 하나 이상의 텍스처들을 변경시킬 수도 있으며, 그 후, 그것은 디스플레이 영역 (211) 내에 도시될 수 있다.
예를 들어, 도 14에서, 사용자는 텍스처들 (294, 296, 및/또는 298) 중 임의의 텍스처를 선택할 수도 있다. 도 14에서, 도시된 바와 같이, 사용자가 텍스처 (294) 를 선택했다고 가정한다. 임의의 수의 상이한 텍스처들은 윈도우 (290) 내에서 디스플레이되고 선택될 수도 있으며, 도 14에 디스플레이된 것들은 단지 예시의 목적을 위해 도시된다.
텍스처 (294) 의 사용자 선택 시에, 선택된 텍스처 (294) 의 확장된 표현이 텍스처 영역 (300) 에 도시되어 있다. 그 후, 사용자는 그래픽 이미지 (210) 의 하나 이상의 부분들에 텍스처 (294) 를 적용할 수도 있다. 일 시나리오에서, 사용자는, 텍스처 영역 (300) 으로부터 디스플레이 영역 (211) 으로 텍스처 (294) 를 드래그할 수도 있고, 그래픽 이미지 (210) 의 원하는 부분(들)에 그 텍스처를 적용할 수도 있다. 도 14의 예에서, 사용자는 그래픽 이미지 (210) 의 표시된 부분에 텍스처 (294) 를 적용한다. 이러한 방식으로, 사용자는 하나 이상의 텍스처들 (예를 들어, 텍스처들 (294, 296, 298)) 중 임의의 텍스처를 선택할 수도 있고, 그러한 텍스처를 그래픽 이미지 (210) 에 적용할 수도 있으며, 또한, 디스플레이 영역 (211) 내에서 그래픽 이미지 (210) 에 대한 대응하는 변경들을 뷰잉할 수도 있다.
사용자에 의해 선택되거나 적용되는 임의의 텍스처는, 그래픽 디바이스에 역으로 전송된 요청된 변경들 (34) 내에 포함될 수도 있다. 그 후, 상술된 바와 같이, 그래픽 디바이스는 요청된 변경들 (34) 을 프로세싱할 수도 있고, 업데이트된 명령들/정보 (35) 를 제공할 수도 있다. 업데이트된 명령들/정보 (35) 는, 디스플레이 영역 (211) 내에서의 그래픽 이미지 (210) 의 디스플레이를 업데이트하는데 사용될 수도 있다.
도 15는 본 발명의 일 양태에 따른, 도 10에 도시된 그래픽 디바이스 (201) 상에 디스플레이될 수도 있는 성능 정보의 일 예를 도시한 스크린도이다. 이러한 양태에서, 성능 정보는 그래픽 윈도우 (302) 내에 도시된다. 도 15의 예에서, 성능 정보는 성능 그래프 (304) 에 의해 표현된다. 그래프 (304) 는 수평축에 따라 시간, 및 수직축에 따라 프로세서 사용도의 퍼센트 (%) 를 도시한다. 프로세서 사용도의 퍼센티지는, 제어 프로세서, 디스플레이 프로세서, 버텍스 프로세서, 및/또는 그래픽 프로세서와 같은 그래픽 프로세싱 시스템 내의 하나 이상의 프로세서들의 퍼센트 사용도에 대응할 수도 있다.
성능 그래프 (304) 를 계속 모니터링함으로써, 사용자는, 요청된 변경들 (34) 내에서 그래픽 디바이스에 행해지거나 역으로 전송된 임의의 변경들의 효율성을 평가할 수 있을 수도 있다. 예를 들어, 사용자는, 그래픽 애플리케이션의 실행 동안 임의의 관측된 성능 이슈들 또는 병목들을 해결하거나 완화하려는 노력으로, 그래픽 명령들을 업데이트하고, 상태/성능 정보를 업데이트하고, 그래픽 이미지의 투시도를 변경시키고, 하나 이상의 오버라이드들을 개시하고, 텍스처를 변경시키거나 다른 변경들을 행할 수도 있다. 특정한 변경들은 퍼센트 사용도 (또는 프로세서 이용도) 를 감소시킴으로써 성능을 개선시킬 수도 있지만, 다른 변경들은 프로세서 이용도를 증가시킨다. 더 낮은 또는 감소된 프로세서 이용도를 초래하는 것과 같이, 그래픽 애플리케이션에 대한 최적의 또는 바람직한 솔루션 또는 변경을 식별하는 것을 돕기 위해, 사용자는, 요청된 변경들 (34) 내에 포함되는 것과 같이, 임의의 구현된 변경들의 효과를 확인하기 위해, 시간에 걸쳐 성능 그래프 (304) 를 계속 모니터링할 수도 있다.
본 발명에서 설명된 기술들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA), 또는 다른 동등한 로직 디바이스들 내에서 구현될 수도 있다. 따라서, 여기에 사용된 바와 같이, "프로세서" 또는 "콘트롤러" 라는 용어는, 전술한 구조들 중 임의의 하나 이상 또는 여기에 설명된 기술들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다.
여기에 도시된 다양한 컴포넌트들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합의 임의의 적절한 조합에 의해 실현될 수도 있다. 도면들에서, 다양한 컴포넌트들이 별개의 유닛들 또는 모듈들로서 도시되어 있다. 그러나, 이들 도면들을 참조하여 설명된 다양한 컴포넌트들 모두 또는 그들 중 수 개는 공통 하드웨어 및/또는 소프트웨어 내의 결합된 유닛들 또는 모듈들로 통합될 수도 있다. 따라서, 컴포넌트들, 유닛들 또는 모듈들로서의 피처들의 표현은, 설명의 용이함을 위해 특정한 기능 피처들을 강조하도록 의도되며, 별개의 하드웨어 또는 소프트웨어 컴포넌트들에 의해 그러한 피처들의 실현을 반드시 요구하지는 않는다. 몇몇 경우, 다양한 유닛들은 하나 이상의 프로세서들에 의해 수행되는 프로그래밍가능한 프로세스들로서 구현될 수도 있다.
그래픽 디바이스 (100) 및/또는 그의 구성 컴포넌트들을 포함하는, 모듈들, 디바이스들, 또는 컴포넌트들로서 여기에 설명된 임의의 피처들은, 통합된 로직 디바이스에 함께 구현될 수도 있거나, 별개지만 상호동작가능한 로직 디바이스들로서 별개로 구현될 수도 있다. 다양한 양태들에서, 그러한 컴포넌트들은, 집적 회로 칩 또는 칩셋과 같은 집적 회로 디바이스로서 집합적으로 지칭될 수도 있는 하나 이상의 집적 회로 디바이스들로서 적어도 부분적으로 형성될 수도 있다. 그러한 회로는 단일 집적 회로 칩 디바이스 또는 다수의 상호동작가능한 집적 회로 칩 디바이스들에서 제공될 수도 있으며, 임의의 다양한 이미지, 디스플레이, 오디오, 또는 다른 멀티미디어 애플리케이션들 및 디바이스들에서 사용될 수도 있다. 몇몇 양태들에서, 예를 들어, 그러한 컴포넌트들은 무선 통신 디바이스 핸드셋과 같은 이동 디바이스의 일부를 형성할 수도 있다.
소프트웨어로 구현되면, 기술들은, 하나 이상의 프로세서들에 의해 실행될 경우 상술된 방법들 중 하나 이상을 수행하는 명령들을 갖는 코드를 포함한 컴퓨터-판독가능 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터-판독가능 매체는, 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터-판독가능 매체는, 동기식 동적 랜덤 액세스 메모리 (SDRAM) 와 같은 랜덤 액세스 메모리 (RAM), 판독-전용 메모리 (ROM), 비-휘발성 랜덤 액세스 메모리 (NVRAM), 전기적으로 소거가능한 프로그래밍가능 판독-전용 메모리 (EEPROM), 임베디드 동적 랜덤 액세스 메모리 (eDRAM), 정적 랜덤 액세스 메모리 (SRAM), 플래시 메모리, 자성 또는 광 데이터 저장 매체를 포함할 수도 있다.
부가적으로 또는 대안적으로, 기술들은, 명령들 또는 데이터 구조들의 형태로 코드를 운반 또는 통신하고 하나 이상의 프로세서들에 의해 액세스, 판독, 및/또는 실행될 수 있는 컴퓨터-판독가능 통신 매체에 의해 적어도 부분적으로 실현될 수도 있다. 임의의 접속이 컴퓨터-판독가능 매체를 적절히 지칭할 수도 있다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 꼬인 쌍, 디지털 가입자 라인 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 동축 케이블, 광섬유 케이블, 꼬인 쌍, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 또한, 상기의 조합들이 컴퓨터-판독가능 매체의 범위 내에 포함되어야 한다. 이용되는 임의의 소프트웨어는, 하나 이상의 DSP들, 범용 마이크로프로세서들, ASIC들, FPGA들, 또는 다른 동등한 집적 또는 이산 로직 회로와 같은 하나 이상의 프로세서들에 의해 실행될 수도 있다.
다양한 양태들이 본 명세서에서 설명되었다. 이들 및 다른 양태들은 다음의 청구항의 범위 내에 존재한다.

Claims (50)

  1. 그래픽 이미지들의 시각적 창작 (creation) 동안 성능을 분석하는 방법으로서,
    컴퓨팅 디바이스에 의해, 외부 그래픽 디바이스로부터 전송된 그래픽 명령들을 수신하는 단계로서, 상기 그래픽 명령들은 그래픽 이미지를 디스플레이하기 위해 상기 외부 그래픽 디바이스에 의해 실행되는, 상기 그래픽 명령들을 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 외부 그래픽 디바이스로부터 전송된 상태 정보를 수신하는 단계로서, 상기 상태 정보는 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련되는, 상기 상태 정보를 수신하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 외부 그래픽 디바이스를 시뮬레이팅하기 위해 시뮬레이팅된 환경을 제공하는 시뮬레이션 애플리케이션을 실행하는 단계;
    상기 시뮬레이션 애플리케이션의 실행 동안 상기 컴퓨팅 디바이스에 의해, 상기 그래픽 명령들 및 상기 상태 정보에 따라 상기 시뮬레이팅된 환경 내에 상기 그래픽 이미지의 표현을 디스플레이하는 단계;
    상기 컴퓨팅 디바이스에 의해 제공된 그래픽 사용자 인터페이스를 통해 사용자 입력을 수신하는 단계로서, 상기 사용자 입력은 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 요청된 변경을 특정하는, 상기 사용자 입력을 수신하는 단계; 및
    프로세싱을 위해 상기 요청된 변경을 상기 외부 그래픽 디바이스에 전송하는 단계를 포함하는, 성능 분석 방법.
  2. 제 1 항에 있어서,
    상기 그래픽 이미지의 다수의 프레임들에 대해, 상기 그래픽 명령들을 수신하는 단계, 상기 상태 정보를 수신하는 단계, 및 상기 그래픽 이미지의 표현을 디스플레이하는 단계를 반복하는 단계를 더 포함하는, 성능 분석 방법.
  3. 제 1 항에 있어서,
    상기 상태 정보는, 상기 외부 그래픽 디바이스가 상기 그래픽 이미지를 렌더링함에 따라 상기 외부 그래픽 디바이스의 하나 이상의 상태들을 나타내는, 성능 분석 방법.
  4. 제 1 항에 있어서,
    상기 상태 정보는, 상기 그래픽 명령들을 실행하는 상기 외부 그래픽 디바이스의 하나 이상의 프로세서들로부터의 상태 정보를 포함하는, 성능 분석 방법.
  5. 제 1 항에 있어서,
    상기 상태 정보는, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련된 데이터를 포함하는, 성능 분석 방법.
  6. 제 1 항에 있어서,
    상기 외부 그래픽 디바이스로부터 복수의 업데이트된 그래픽 명령들을 수신하는 단계로서, 상기 업데이트된 그래픽 명령들은, 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 복수의 업데이트된 그래픽 명령들을 수신하는 단계;
    상기 외부 그래픽 디바이스로부터 업데이트된 상태 정보를 수신하는 단계로서, 상기 업데이트된 상태 정보는, 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 업데이트된 상태 정보를 수신하는 단계; 및
    상기 업데이트된 그래픽 명령들 및 상기 업데이트된 상태 정보에 따라 상기 그래픽 이미지의 업데이트된 버전을 디스플레이하는 단계를 더 포함하는, 성능 분석 방법.
  7. 제 1 항에 있어서,
    상기 요청된 변경은, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들의 실행을 디스에이블시키기 위한 요청, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들을 변경시키기 위한 요청, 및 상기 외부 그래픽 디바이스 상에서 상기 상태 정보를 변경시키기 위한 요청 중 적어도 하나를 포함하는, 성능 분석 방법.
  8. 제 1 항에 있어서,
    상기 그래픽 명령들의 시각적 표현을 디스플레이하는 단계; 및
    상기 상태 정보의 시각적 표현을 디스플레이하는 단계를 더 포함하는, 성능 분석 방법.
  9. 제 8 항에 있어서,
    상기 그래픽 명령들의 시각적 표현을 디스플레이하는 단계는,
    상기 그래픽 명령들을 관련 그래픽 애플리케이션 프로그래밍 인터페이스 (API) 명령들에 매핑하는 단계; 및
    상기 그래픽 API 명령들을 디스플레이하는 단계를 포함하는, 성능 분석 방법.
  10. 제 1 항에 있어서,
    상기 컴퓨팅 디바이스에 의해, 상기 그래픽 명령들의 시각적 표현 및 상기 상태 정보의 시각적 표현 중 적어도 하나의 사용자 변경을 허용하는 그래픽 사용자 인터페이스를 제공하는 단계를 더 포함하는, 성능 분석 방법.
  11. 제 1 항에 있어서,
    상기 그래픽 명령들은, 애플리케이션 프로그래밍 인터페이스 (API) 명령들로부터 생성된 바이너리 명령들을 포함하는, 성능 분석 방법.
  12. 제 1 항에 있어서,
    네비게이션 콘트롤러를 디스플레이하는 단계;
    상기 네비게이션 콘트롤러와 상호작용하기 위한 사용자 입력을 수신하는 단계; 및
    상기 사용자 입력에 기초하여 상기 그래픽 이미지의 변경된 투시도를 디스플레이하는 단계를 더 포함하는, 성능 분석 방법.
  13. 제 1 항에 있어서,
    상기 그래픽 이미지를 변경시키기 위한 사용자 입력을 수신하는 단계; 및
    상기 사용자 입력에 따라 상기 그래픽 이미지의 변경된 버전을 디스플레이하는 단계를 더 포함하는, 성능 분석 방법.
  14. 제 1 항에 있어서,
    상기 외부 그래픽 디바이스로부터 성능 정보를 수신하는 단계로서, 상기 성능 정보는 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련되는, 상기 성능 정보를 수신하는 단계; 및
    상기 그래픽 명령들의 실행 동안 상기 외부 그래픽 디바이스 상의 하나 이상의 성능 이슈들을 식별하기 위해 상기 성능 정보를 분석하는 단계를 더 포함하는, 성능 분석 방법.
  15. 제 14 항에 있어서,
    상기 성능 정보는, 상기 외부 그래픽 디바이스 상에서 상기 그래픽 명령들을 실행하는 하나 이상의 프로세서들로부터 수집된 성능 메트릭들을 포함하는, 성능 분석 방법.
  16. 제 15 항에 있어서,
    상기 성능 정보를 분석하는 단계는, 상기 그래픽 명령들의 실행 동안 상기 외부 그래픽 디바이스의 프로세서들 중 하나 이상의 프로세서들에서 감소된 성능을 식별하는 단계를 포함하는, 성능 분석 방법.
  17. 제 14 항에 있어서,
    상기 컴퓨팅 디바이스에 의해 제공된 그래픽 사용자 인터페이스를 통해 사용자 입력을 수신하는 단계로서, 상기 사용자 입력은, 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 요청된 변경을 특정하는, 상기 사용자 입력을 수신하는 단계;
    프로세싱을 위해 상기 요청된 변경을 상기 외부 그래픽 디바이스에 전송하는 단계;
    상기 외부 그래픽 디바이스로부터 복수의 업데이트된 그래픽 명령들을 수신하는 단계로서, 상기 업데이트된 그래픽 명령들은 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 복수의 업데이트된 그래픽 명령들을 수신하는 단계;
    상기 외부 그래픽 디바이스로부터 업데이트된 성능 정보를 수신하는 단계로서, 상기 업데이트된 성능 정보는 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 업데이트된 성능 정보를 수신하는 단계; 및
    상기 성능 이슈들 중 하나 이상이 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하는 단계를 더 포함하는, 성능 분석 방법.
  18. 제 17 항에 있어서,
    상기 요청된 변경은, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들의 실행을 디스에이블시키기 위한 요청, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들을 변경시키기 위한 요청, 및 상기 외부 그래픽 디바이스 상에서 상기 상태 정보를 변경시키기 위한 요청 중 적어도 하나를 포함하는, 성능 분석 방법.
  19. 제 17 항에 있어서,
    상기 업데이트된 그래픽 명령들 및 상기 업데이트된 성능 정보에 따라 상기 그래픽 이미지의 업데이트된 표현을 디스플레이하는 단계를 더 포함하는, 성능 분석 방법.
  20. 하나 이상의 프로세서들로 하여금,
    외부 그래픽 디바이스로부터 전송된 그래픽 명령들을 수신하게 하기 위한 명령들로서, 상기 그래픽 명령들은 그래픽 이미지를 디스플레이하기 위해 상기 외부 그래픽 디바이스에 의해 실행되는, 상기 그래픽 명령들을 수신하게 하기 위한 명령들;
    상기 외부 그래픽 디바이스로부터 전송된 상태 정보를 수신하게 하기 위한 명령들로서, 상기 상태 정보는 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련되는, 상기 상태 정보를 수신하게 하기 위한 명령들;
    상기 외부 그래픽 디바이스를 시뮬레이팅하기 위해 시뮬레이팅된 환경을 제공하는 시뮬레이션 애플리케이션을 실행하게 하기 위한 명령들;
    상기 시뮬레이션 애플리케이션의 실행 동안, 상기 그래픽 명령들 및 상기 상태 정보에 따라 상기 시뮬레이팅된 환경 내에 상기 그래픽 이미지의 표현을 디스플레이하게 하기 위한 명령들;
    그래픽 사용자 인터페이스를 통해 사용자 입력을 수신하게 하기 위한 명령들로서, 상기 사용자 입력은 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 요청된 변경을 특정하는, 상기 사용자 입력을 수신하게 하기 위한 명령들; 및
    프로세싱을 위해 상기 요청된 변경을 상기 외부 그래픽 디바이스에 전송하게 하기 위한 명령들을 포함하는, 컴퓨터-판독가능 기록매체.
  21. 제 20 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 그래픽 이미지의 다수의 프레임들에 대해, 상기 그래픽 명령들을 수신하게 하는 것, 상기 상태 정보를 수신하게 하는 것, 및 상기 그래픽 이미지의 표현을 디스플레이하게 하는 것을 반복하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  22. 제 20 항에 있어서,
    상기 상태 정보는, 상기 외부 그래픽 디바이스가 상기 그래픽 이미지를 렌더링함에 따라 상기 외부 그래픽 디바이스의 하나 이상의 상태들을 나타내는, 컴퓨터-판독가능 기록매체.
  23. 제 20 항에 있어서,
    상기 상태 정보는, 상기 그래픽 명령들을 실행하는 상기 외부 그래픽 디바이스의 적어도 하나의 프로세서로부터의 상태 정보를 포함하는, 컴퓨터-판독가능 기록매체.
  24. 제 20 항에 있어서,
    상기 상태 정보는, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련된 데이터를 포함하는, 컴퓨터-판독가능 기록매체.
  25. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 외부 그래픽 디바이스로부터 복수의 업데이트된 그래픽 명령들을 수신하게 하기 위한 명령들로서, 상기 업데이트된 그래픽 명령들은, 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 복수의 업데이트된 그래픽 명령들을 수신하게 하기 위한 명령들;
    상기 외부 그래픽 디바이스로부터 업데이트된 상태 정보를 수신하게 하기 위한 명령들로서, 상기 업데이트된 상태 정보는, 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 업데이트된 상태 정보를 수신하게 하기 위한 명령들; 및
    상기 업데이트된 그래픽 명령들 및 상기 업데이트된 상태 정보에 따라 상기 그래픽 이미지의 업데이트된 버전을 디스플레이하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  26. 제 19 항에 있어서,
    상기 요청된 변경은, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들의 실행을 디스에이블시키기 위한 요청, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들을 변경시키기 위한 요청, 및 상기 외부 그래픽 디바이스 상에서 상기 상태 정보를 변경시키기 위한 요청 중 적어도 하나를 포함하는, 컴퓨터-판독가능 기록매체.
  27. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 그래픽 명령들의 시각적 표현을 디스플레이하게 하기 위한 명령들; 및
    상기 상태 정보의 시각적 표현을 디스플레이하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  28. 제 27 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 그래픽 명령들의 시각적 표현을 디스플레이하게 하기 위한 명령들은, 상기 하나 이상의 프로세서들로 하여금,
    상기 그래픽 명령들을 관련 그래픽 애플리케이션 프로그래밍 인터페이스 (API) 명령들에 매핑하게 하기 위한 명령들; 및
    상기 그래픽 API 명령들을 디스플레이하게 하기 위한 명령들을 포함하는, 컴퓨터-판독가능 기록매체.
  29. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 그래픽 명령들의 시각적 표현 및 상기 상태 정보의 시각적 표현 중 적어도 하나의 사용자 변경을 허용하는 그래픽 사용자 인터페이스를 제공하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  30. 제 19 항에 있어서,
    상기 그래픽 명령들은, 애플리케이션 프로그래밍 인터페이스 (API) 명령들로부터 생성된 바이너리 명령들을 포함하는, 컴퓨터-판독가능 기록매체.
  31. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    네비게이션 콘트롤러를 디스플레이하게 하기 위한 명령들;
    상기 네비게이션 콘트롤러와 상호작용하기 위한 사용자 입력을 수신하게 하기 위한 명령들; 및
    상기 사용자 입력에 기초하여 상기 그래픽 이미지의 변경된 투시도를 디스플레이하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  32. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 그래픽 이미지를 변경시키기 위한 사용자 입력을 수신하게 하기 위한 명령들; 및
    상기 사용자 입력에 따라 상기 그래픽 이미지의 변경된 버전을 디스플레이하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  33. 제 19 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 외부 그래픽 디바이스로부터 성능 정보를 수신하게 하기 위한 명령들로서, 상기 성능 정보는 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련되는, 상기 성능 정보를 수신하게 하기 위한 명령들; 및
    상기 그래픽 명령들의 실행 동안 상기 외부 그래픽 디바이스 상의 하나 이상의 성능 이슈들을 식별하기 위해 상기 성능 정보를 분석하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  34. 제 33 항에 있어서,
    상기 성능 정보는, 상기 외부 그래픽 디바이스 상에서 상기 그래픽 명령들을 실행하는 상기 외부 그래픽 디바이스의 적어도 하나의 프로세서로부터 수집된 성능 메트릭들을 포함하는, 컴퓨터-판독가능 기록매체.
  35. 제 34 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금 상기 성능 정보를 분석하게 하기 위한 명령들은, 상기 하나 이상의 프로세서들로 하여금, 상기 그래픽 명령들의 실행 동안 상기 외부 그래픽 디바이스의 적어도 하나의 프로세서에서 감소된 성능을 식별하게 하기 위한 명령들을 포함하는, 컴퓨터-판독가능 기록매체.
  36. 제 33 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 외부 그래픽 디바이스로부터 복수의 업데이트된 그래픽 명령들을 수신하게 하기 위한 명령들로서, 상기 업데이트된 그래픽 명령들은 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 복수의 업데이트된 그래픽 명령들을 수신하게 하기 위한 명령들;
    상기 외부 그래픽 디바이스로부터 업데이트된 성능 정보를 수신하게 하기 위한 명령들로서, 상기 업데이트된 성능 정보는 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는, 상기 업데이트된 성능 정보를 수신하게 하기 위한 명령들; 및
    상기 성능 이슈들 중 하나 이상이 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  37. 제 36 항에 있어서,
    상기 요청된 변경은, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들의 실행을 디스에이블시키기 위한 요청, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들을 변경시키기 위한 요청, 및 상기 외부 그래픽 디바이스 상에서 상기 상태 정보를 변경시키기 위한 요청 중 적어도 하나를 포함하는, 컴퓨터-판독가능 기록매체.
  38. 제 36 항에 있어서,
    상기 하나 이상의 프로세서들로 하여금,
    상기 업데이트된 그래픽 명령들 및 상기 업데이트된 성능 정보에 따라 상기 그래픽 이미지의 업데이트된 표현을 디스플레이하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 기록매체.
  39. 그래픽 이미지들의 시각적 창작 (creation) 동안 성능을 분석하는 디바이스로서,
    디스플레이 디바이스; 및
    하나 이상의 프로세서들을 포함하며,
    상기 하나 이상의 프로세서들은,
    외부 그래픽 디바이스로부터 전송된 그래픽 명령들을 수신하는 것으로서, 상기 그래픽 명령들은 그래픽 이미지를 디스플레이하기 위해 상기 외부 그래픽 디바이스에 의해 실행되는, 상기 그래픽 명령들을 수신하고;
    상기 외부 그래픽 디바이스로부터 전송된 상태 정보를 수신하는 것으로서, 상기 상태 정보는 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련되는, 상기 상태 정보를 수신하고;
    상기 외부 그래픽 디바이스를 시뮬레이팅하기 위해 시뮬레이팅된 환경을 제공하는 시뮬레이션 애플리케이션을 실행하며;
    상기 시뮬레이션 애플리케이션의 실행 동안, 상기 그래픽 명령들 및 상기 상태 정보에 따라 상기 시뮬레이팅된 환경 내에 상기 그래픽 이미지의 표현을 상기 디스플레이 디바이스 상에 디스플레이하고;
    상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 요청된 변경을 특정하는 사용자 입력을 그래픽 사용자 인터페이스를 통해 수신하고;
    프로세싱을 위해 상기 요청된 변경을 상기 외부 그래픽 디바이스에 전송하도록 구성되는, 성능 분석 디바이스.
  40. 제 39 항에 있어서,
    상기 하나 이상의 프로세서들은 또한, 상기 그래픽 이미지의 다수의 프레임들에 대해, 상기 그래픽 명령들을 수신하는 것, 상기 상태 정보를 수신하는 것, 및 상기 그래픽 이미지의 표현을 디스플레이하는 것을 반복하도록 구성되는, 성능 분석 디바이스.
  41. 제 39 항에 있어서,
    상기 하나 이상의 프로세서들은 또한, 상기 그래픽 명령들의 시각적 표현을 상기 디스플레이 디바이스 상에 디스플레이하고, 상기 상태 정보의 시각적 표현을 상기 디스플레이 디바이스 상에 디스플레이하도록 구성되는, 성능 분석 디바이스.
  42. 제 39 항에 있어서,
    상기 하나 이상의 프로세서들은 또한, 네비게이션 콘트롤러를 상기 디스플레이 디바이스 상에 디스플레이하고, 상기 네비게이션 콘트롤러와 상호작용하기 위한 사용자 입력을 수신하며, 상기 사용자 입력에 기초하여 상기 그래픽 이미지의 변경된 투시도를 상기 디스플레이 디바이스 상에 디스플레이하도록 구성되는, 성능 분석 디바이스.
  43. 제 39 항에 있어서,
    상기 하나 이상의 프로세서들은 또한, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련되는 성능 정보를 상기 외부 그래픽 디바이스로부터 수신하고, 상기 그래픽 명령들의 실행 동안 상기 외부 그래픽 디바이스 상의 하나 이상의 성능 이슈들을 식별하기 위해 상기 성능 정보를 분석하도록 구성되는, 성능 분석 디바이스.
  44. 제 43 항에 있어서,
    상기 성능 정보는, 상기 외부 그래픽 디바이스 상에서 상기 그래픽 명령들을 실행하는 상기 외부 그래픽 디바이스의 적어도 하나의 프로세서로부터 수집된 성능 메트릭들을 포함하는, 성능 분석 디바이스.
  45. 제 44 항에 있어서,
    상기 하나 이상의 프로세서들은, 적어도, 상기 그래픽 명령들의 실행 동안 상기 외부 그래픽 디바이스의 프로세서들 중 하나 이상의 프로세서들에서 감소된 성능을 식별함으로써 상기 성능 정보를 분석하도록 구성되는, 성능 분석 디바이스.
  46. 제 43 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는 복수의 업데이트된 그래픽 명령들을 상기 외부 그래픽 디바이스로부터 수신하고;
    상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 상기 요청된 변경과 관련되는 업데이트된 성능 정보를 상기 외부 그래픽 디바이스로부터 수신하며; 그리고,
    상기 성능 이슈들 중 하나 이상이 해결되었는지를 결정하기 위해 상기 업데이트된 성능 정보를 분석하도록 구성되는, 성능 분석 디바이스.
  47. 제 46 항에 있어서,
    상기 요청된 변경은, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들의 실행을 디스에이블시키기 위한 요청, 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들 중 하나 이상의 그래픽 명령들을 변경시키기 위한 요청, 및 상기 외부 그래픽 디바이스 상에서 상기 상태 정보를 변경시키기 위한 요청 중 적어도 하나를 포함하는, 성능 분석 디바이스.
  48. 제 46 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 업데이트된 그래픽 명령들 및 상기 업데이트된 성능 정보에 따라 상기 그래픽 이미지의 업데이트된 표현을 상기 디스플레이 디바이스 상에 디스플레이하도록 구성되는, 성능 분석 디바이스.
  49. 제 39 항에 있어서,
    상기 하나 이상의 프로세서들은 또한,
    상기 그래픽 명령들의 시각적 표현 및 상기 상태 정보의 시각적 표현 중 적어도 하나의 사용자 변경을 허용하는 그래픽 사용자 인터페이스를 제공하도록 구성되는, 성능 분석 디바이스.
  50. 그래픽 이미지들의 시각적 창작 (creation) 동안 성능을 분석하는 디바이스로서,
    외부 그래픽 디바이스로부터 전송된 그래픽 명령들을 수신하는 수단으로서, 상기 그래픽 명령들은 그래픽 이미지를 디스플레이하기 위해 상기 외부 그래픽 디바이스에 의해 실행되는, 상기 그래픽 명령들을 수신하는 수단;
    상기 외부 그래픽 디바이스로부터 전송된 상태 정보를 수신하는 수단으로서, 상기 상태 정보는 상기 외부 그래픽 디바이스 상에서의 상기 그래픽 명령들의 실행과 관련되는, 상기 상태 정보를 수신하는 수단;
    상기 외부 그래픽 디바이스를 시뮬레이팅하기 위해 시뮬레이팅된 환경을 제공하는 시뮬레이션 애플리케이션을 실행하는 수단;
    상기 시뮬레이션 애플리케이션의 실행 동안, 상기 그래픽 명령들 및 상기 상태 정보에 따라 상기 시뮬레이팅된 환경 내에 상기 그래픽 이미지의 표현을 디스플레이하는 수단;
    상기 컴퓨팅 디바이스에 의해 제공된 그래픽 사용자 인터페이스를 통해 사용자 입력을 수신하는 수단으로서, 상기 사용자 입력은 상기 외부 그래픽 디바이스에 의한 상기 그래픽 명령들의 실행에 대한 요청된 변경을 특정하는, 상기 사용자 입력을 수신하는 수단; 및
    프로세싱을 위해 상기 요청된 변경을 상기 외부 그래픽 디바이스에 전송하는 수단을 포함하는, 성능 분석 디바이스.




KR1020137008390A 2008-07-25 2009-07-24 그래픽 이미지들의 시각적 창작 동안의 성능 분석 KR20130043241A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8365608P 2008-07-25 2008-07-25
US61/083,656 2008-07-25
US12/507,732 US8587593B2 (en) 2008-07-25 2009-07-22 Performance analysis during visual creation of graphics images
US12/507,732 2009-07-22
PCT/US2009/051771 WO2010011979A2 (en) 2008-07-25 2009-07-24 Performance analysis during visual creation of graphics images

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020117004641A Division KR101431311B1 (ko) 2008-07-25 2009-07-24 그래픽 이미지들의 시각적 창작 동안의 성능 분석

Publications (1)

Publication Number Publication Date
KR20130043241A true KR20130043241A (ko) 2013-04-29

Family

ID=41146500

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117004641A KR101431311B1 (ko) 2008-07-25 2009-07-24 그래픽 이미지들의 시각적 창작 동안의 성능 분석
KR1020137008390A KR20130043241A (ko) 2008-07-25 2009-07-24 그래픽 이미지들의 시각적 창작 동안의 성능 분석

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020117004641A KR101431311B1 (ko) 2008-07-25 2009-07-24 그래픽 이미지들의 시각적 창작 동안의 성능 분석

Country Status (7)

Country Link
EP (1) EP2321730B1 (ko)
JP (1) JP5450624B2 (ko)
KR (2) KR101431311B1 (ko)
CN (1) CN102105868B (ko)
CA (1) CA2730291A1 (ko)
TW (1) TW201015485A (ko)
WO (1) WO2010011979A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8786634B2 (en) * 2011-06-04 2014-07-22 Apple Inc. Adaptive use of wireless display
CN103064644B (zh) * 2011-10-21 2016-03-02 联想(北京)有限公司 一种图像显示方法、显卡及电子设备
CN103713891B (zh) * 2012-10-09 2017-11-24 阿里巴巴集团控股有限公司 一种在移动设备上进行图形渲染的方法和装置
EP2745892B1 (en) * 2012-12-21 2018-12-12 Dassault Systèmes Partition of a 3D scene into a plurality of zones processed by a computing resource
CN103974062B (zh) * 2013-06-24 2018-10-26 福州瑞芯微电子股份有限公司 图像显示装置、图像显示系统和图像显示方法
EP3234764B1 (en) * 2014-12-15 2019-10-02 Intel Corporation Instrumentation of graphics instructions
KR102644276B1 (ko) 2016-10-10 2024-03-06 삼성전자주식회사 그래픽 처리 장치 및 방법

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 データ保持装置、ロボット装置、変更装置及び変更方法
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
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

Also Published As

Publication number Publication date
EP2321730B1 (en) 2018-04-11
KR20110050482A (ko) 2011-05-13
JP2011529235A (ja) 2011-12-01
WO2010011979A3 (en) 2010-04-15
KR101431311B1 (ko) 2014-09-19
CN102105868B (zh) 2015-03-04
CN102105868A (zh) 2011-06-22
EP2321730A2 (en) 2011-05-18
CA2730291A1 (en) 2010-01-28
WO2010011979A2 (en) 2010-01-28
JP5450624B2 (ja) 2014-03-26
TW201015485A (en) 2010-04-16

Similar Documents

Publication Publication Date Title
US8587593B2 (en) Performance analysis during visual creation of graphics images
KR101286318B1 (ko) 렌더링된 그래픽 엘리먼트들을 위한 성능 메트릭들의 시각적 표현의 디스플레이
US9792718B2 (en) Mapping graphics instructions to associated graphics data during performance analysis
KR101431311B1 (ko) 그래픽 이미지들의 시각적 창작 동안의 성능 분석
EP2710559A2 (en) Rendering mode selection in graphics processing units
CN116185743B (zh) OpenGL接口的双显卡对比调试方法、装置及介质
JP5242788B2 (ja) グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析
CN117523062B (zh) 光照效果的预览方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A107 Divisional application of patent
WITB Written withdrawal of application