KR100909153B1 - 그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및시스템 - Google Patents

그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및시스템 Download PDF

Info

Publication number
KR100909153B1
KR100909153B1 KR1020070077546A KR20070077546A KR100909153B1 KR 100909153 B1 KR100909153 B1 KR 100909153B1 KR 1020070077546 A KR1020070077546 A KR 1020070077546A KR 20070077546 A KR20070077546 A KR 20070077546A KR 100909153 B1 KR100909153 B1 KR 100909153B1
Authority
KR
South Korea
Prior art keywords
draw call
draw
graphics pipeline
subunit
window
Prior art date
Application number
KR1020070077546A
Other languages
English (en)
Other versions
KR20080012235A (ko
Inventor
라울 아구아비바
세바스티앙 줄리앙 도미네
윌리암 오빌레 라메이 2세
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 KR20080012235A publication Critical patent/KR20080012235A/ko
Application granted granted Critical
Publication of KR100909153B1 publication Critical patent/KR100909153B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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
    • G06T1/00General purpose image data processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅하기 위한 방법이 개시된다. 복수의 드로우 콜 그룹이 액세스된다. 각 드로우 콜 그룹은 규정된 상태의 공통 상태 속성들을 공유하는 각각의 복수의 드로우 콜을 포함한다. 복수의 선택 가능 드로우 콜 그룹이 표시된다. 사용자 선택에 응답하여, 선택된 드로우 콜 그룹과 연관된 복수의 선택 가능 드로우 콜이 표시된다. 복수의 선택 가능 그래픽 파이프라인 서브유닛이 표시된다. 선택된 서브유닛의 사용자 선택에 응답하여, 선택된 드로우 콜과 연관된 복수의 편집 가능 상태 정보 및 그래픽 프리미티브가 표시된다. 복수의 편집 가능 상태 정보는 규정된 상태의 공통 속성들을 공유하는 일부가 하나의 그룹 내에 있도록 그룹화될 수 있다. 사용자 선택에 응답하여, 선택된 드로우 콜 또는 선택된 드로우 콜 그룹에 대한 변경들이 이루어질 수 있다.
그래픽 파이프라인 서브유닛, 디버깅, 드로우 콜, 공통 상태 속성, 상태 정보

Description

그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR DEBUGGING A GRAPHICS PIPELINE SUBUNIT}
본 발명은 그래픽 처리 유닛의 분야에 관한 것이다. 보다 상세하게는, 본 발명의 실시예들은 그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및 시스템에 관한 것이다.
<관련 미국 특허 출원>
본 출원은, 대리인 관리 번호 NVID-P002635이고 본 발명의 양수인에게 양도된 "Method And User Interface For Enhanced Graphical Operation Organization"이라는 제목의 Aguaviva 등에 의해 2006년 8월 1일자로 출원된 미국 특허 출원 제 호, 및 대리인 관리 번호 NVID-P002603이고 본 발명의 양수인에게 양도된 "A Method And System For Calculating Performance Parameters For A Processor"라는 제목의 Aguaviva 등에 의해 2006년 8월 1일자로 출원된 미국 특허 출원 제 호의 전체를 참고로 포함하고 있다.
그래픽 애플리케이션을 실행하는 그래픽 처리 유닛(graphics processing unit: GPU)의 효율을 향상시키기 위한 요구는 항상 소프트웨어 개발자들의 주요 관 심사였다. 예를 들어, 파이프라인식 GPU가 그의 가장 느린 파이프라인 유닛과 같은 정도로만 빠르다고 가정할 경우, 애플리케이션을 최적화하기 위해서는 병목현상(bottleneck)의 분석이 중요하다. 마찬가지로, 그래픽 파이프라인의 각 유닛의 이용을 모니터링하여, 부하의 분산을 가능하게 하고, 임의의 주어진 시간에 각 유닛의 충분한 이용을 보장하는 것이 바람직하다. 그러나, 이용 가능한 성능 툴의 수가 제한되고, 통상의 툴이 제공하는 기능의 수가 제한되는 경우, GPU 성능의 최적화 및 그래픽 파이프라인 서브유닛의 디버깅은 어려운 작업이 된다.
통상의 방법은 그래픽 연산(예를 들어, 드로우 콜(draw call))을 실행할 때 그래픽 파이프라인의 각 서브유닛의 셋업에 대한 상세한 정보 및 이들의 상태 정보를 제공하지 못한다. 따라서, 각 서브유닛의 셋업 및 이들의 드로우 콜에 대한 대응하는 상태 정보의 진정한 지식 없이 시행착오를 통해 교정 작업이 행해진다. 더욱이, GPU의 문제의 서브유닛을 보수하기 위한 임의의 교정은 GPU의 다른 서브유닛에 악영향을 미칠 수 있다. 예를 들어, 하나의 서브유닛의 병목현상을 줄이는 것은 다른 서브유닛의 이용에 악영향을 줄 수 있다. 따라서, 개발자들은 종종, 파이프라인 서브유닛들에 관한 이용 정보를 모니터링할 능력이 없다면, 병목현상이 교정되더라도 최소한의 성능 이득을 얻게 된다.
전술한 결점에 더하여, 개발자가 병목현상을 치유하고, 주어진 프레임 또는 그래픽 연산을 위해 이용 중인 서브유닛의 이용을 증가시킬 수 있더라도, 다른 프레임들 및/또는 그래픽 연산들에 대한 성능은 감소할 수 있다. 따라서, 주어진 GPU 상에서의 그래픽 애플리케이션의 상당한 성능 향상 없이 통상의 성능 툴을 이 용하는 것은 많은 시간과 노력을 소모할 것이다.
따라서, 그래픽 연산(예를 들어, 드로우 콜)을 실행할 때 GPU 파이프라인의 서브유닛들의 셋업 및 이들의 상태 정보에 대한 투명성(transparency)을 제공할 필요가 있다. 더욱이, 편집 가능한 상태 정보에 대한 투명성을 제공할 필요가 있는데, 이는 상태 정보의 편집이 GPU 파이프라인의 전체 효율 및 그의 프레임 레이트를 상당히 향상시킬 수 있기 때문이다. 또한, 프레임의 문제 있는 그래픽 연산들의 자동 식별도 가능하게 하는 디버그 툴 내에서 상기 투명성을 제공할 필요가 있다. 본 발명의 상세한 설명을 읽은 후에 본 발명의 실시예들이 전술한 요구를 만족시킨다는 것은 이 분야의 전문가에게 자명할 것이다.
본 발명의 일 실시예에서, 실행 시간에 의해 분류될 수 있는 복수의 선택 가능 드로우 콜 그룹이 그래픽 사용자 인터페이스에 의해 액세스되고 표시된다. 선택 드로우 콜 그룹의 사용자 선택에 응답하여, 그 그룹으로부터 복수의 선택 가능 드로우 콜이 표시된다. 각 드로우 콜 그룹의 모든 드로우 콜은 규정된 상태의 공통 상태 속성들을 공유한다. 복수의 선택 가능 그래픽 파이프라인 서브유닛의 식별자들도 표시된다. 드로우 콜 그룹과 연관된 드로우 콜의 사용자 선택 및 서브유닛의 선택에 응답하여, 복수의 편집 가능 상태 정보가 자동으로 표시된다(예를 들어, 텍스트 윈도우). 상태 정보의 사용자 편집에 응답하여, 복수의 데이터 저장소 셋팅이 변경된다. 또한, 사용자 선택에 응답하여, 선택된 드로우 콜 또는 선택된 드로우 콜 그룹에 상태 정보의 편집이 적용된다.
본 발명의 실시예들의 채용 결과로서, 서브유닛 셋업 정보 및 상태 정보가 개발자에게 투명하게 된다. 따라서, 사용자는 상태 정보의 편집에 관하여 정보에 근거한 결정을 행함으로써 GPU 파이프라인의 전체 성능 및 그의 프레임 레이트를 향상시킬 수 있다.
구체적으로, 본 발명의 일 실시예는 그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅 및/또는 최적화하는 방법에 관한 것으로서, 이 방법은 복수의 드로우 콜 그룹에 액세스하는 단계-각각의 드로우 콜 그룹은 규정된 상태의 공통 상태 속성들을 모두가 공유하는 각각의 복수의 드로우 콜을 포함함-; 제1 윈도우에 상기 복수의 드로우 콜 그룹을 표시하고, 그의 사용자 선택을 허가하는 단계; 드로우 콜 그룹의 사용자 선택에 응답하여, 선택된 드로우 콜 그룹과 연관된 복수의 드로우 콜을 표시하고, 그의 사용자 선택을 허가하는 단계; 제2 윈도우에 복수의 그래픽 파이프라인 서브유닛의 식별자들을 표시하고, 그의 사용자 선택을 허가하는 단계; 및 선택된 그래픽 파이프라인 서브유닛의 사용자 선택에 응답하여, 선택된 드로우 콜과 연관된 선택된 그래픽 파이프라인 서브유닛의 복수의 상태 정보를 표시하는 단계를 포함한다.
실시예들은 상기한 것을 포함하고, 상기 방법은 상기 선택된 드로우 콜의 실행으로부터 야기되는 선택된 파이프라인 서브유닛에 의해 렌더링되는 그래픽 프리미티브(primitive)들을 표시하는 단계를 더 포함한다. 실시예들은 상기한 것을 더 포함하고, 선택된 그래픽 파이프라인 서브유닛에 관한 선택된 드로우 콜 및 드로우 콜 그룹에 대한 성능 데이터를 표시하는 단계를 더 포함하며, 성능 데이터는 복수의 그래픽 파이프라인 서브유닛이 선택된 드로우 콜 그룹을 실행하기 위한 시간을 지시하고, 성능 데이터는 또한 선택된 그래픽 파이프라인 서브유닛이 선택된 드로우 콜을 실행하기 위한 시간을 지시한다.
또한, 실시예들은 상기한 것을 포함하고, 상기 방법은 복수의 상태 정보의 사용자 편집을 허가하는 단계를 더 포함한다. 더욱이, 실시예들은 상기한 것을 포함하고, 복수의 드로우 콜 그룹 및 복수의 드로우 콜은 그룹 및 드로우 콜의 실행 시간에 의해 각각 순위화된다. 또한, 실시예들은 상기한 것을 포함하고, 복수의 상태 정보를 표시하는 단계는 상기 선택된 드로우 콜 그룹 전체에 공통인 복수의 상태 정보의 일부가 함께 묘사되도록 복수의 상태 정보를 그룹화하는 단계를 더 포함한다.
본 발명의 실시예들의 채용 결과로서, 서브유닛 셋업 정보 및 상태 정보가 개발자에게 투명하게 된다. 따라서, 사용자는 상태 정보의 편집에 관하여 정보에 근거한 결정을 행함으로써 GPU 파이프라인의 전체 성능 및 그의 프레임 레이트를 향상시킬 수 있다.
이제, 첨부된 도면에 그 예가 도시된 본 발명의 실시예들을 상세히 설명한다. 본 발명은 이들 실시예와 관련하여 설명되지만, 본 발명을 이들 실시예로 한정하려는 의도는 아니라는 것을 이해할 것이다. 그와 달리, 본 발명은 첨부된 청 구범위에 의해 정해지는 발명의 사상 및 범위 내에 포함될 수 있는 대안, 변형 및 균등물을 포함하는 것을 의도한다. 또한, 본 발명에 대한 다음의 상세한 설명에서는, 본 발명의 완전한 이해를 제공하기 위하여 다양한 특정 상세가 설명된다. 그러나, 본 발명은 이러한 특정 상세 없이도 실시될 수 있음은 이 분야의 전문가에게 자명할 것이다. 다른 예에서, 공지된 방법들, 절차들, 컴포넌트들 및 회로들은 본 발명의 특징을 불필요하게 불명확하게 하지 않기 위하여 상세히 설명되지 않았다.
기호 및 술어
이어지는 상세한 설명의 일부는 절차, 단계, 논리 블록, 처리, 및 컴퓨터 메모리 상에서 수행될 수 있는 데이터 비트들 상의 연산들의 다른 기호 표현에 의해 제공된다. 이들 설명 및 표현은 이 분야의 전문가들이 그들의 작업의 내용을 이 분야의 다른 전문가들에게 가장 효과적으로 전달하기 위해 사용하는 수단이다. 절차, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기서 그리고 일반적으로 원하는 결과로 이끄는 단계들 또는 명령들의 일관성 있는 시퀀스인 것으로 이해된다. 단계들은 물리적 양의 물리적 조작을 요구하는 단계들이다.
반드시 그렇지는 않지만 통상적으로, 이들 양은 컴퓨터 시스템에서 저장, 전송, 조합, 비교 및 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 때로는, 주로 공통 이용의 이유에서 이들 신호를 비트, 값, 요소, 기호, 문자, 용어, 번호 등으로 지칭하는 것이 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어 모두는 적절한 물리량들과 연관되며, 이들 양에 적용되는 편리한 라벨일 뿐이라는 점에 유의해야 한다. 아래의 설명으로부터 명백하듯이 달리 구체적으로 언급되지 않는 한, 본 발명의 전반에서 "처리" 또는 "생성" 또는 "전송" 또는 "실행" 또는 "결정" 또는 "지시" 또는 "발행" 또는 "중지" 또는 "소거" 또는 "수집" 또는 "취득" 또는 "선택" 또는 "계산" 또는 "측정" 또는 "표시" 또는 "액세스" 또는 "허가" 또는 "그룹화" 등과 같은 용어를 이용한 설명은, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로 표현되는 데이터를 조작하고 컴퓨터 시스템의 메모리 또는 레지스터 또는 다른 그러한 정보 저장, 전송 또는 표시 장치 내의 물리량으로 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 지칭하는 것임을 이해한다.
그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및 시스템
GPU 파이프라인은 일반적으로 호스트 컴퓨터 프로세서 상에서 동작하는 드라이버 프로그램에 의해 지시되는 바와 같은 그래픽 연산(예를 들어, 드로우 콜)을 실행한다. 프레임은 복수의 드로우 콜을 포함한다. GPU 파이프라인의 서브유닛들에 대한 다양한 성능 파라미터(예를 들어, 병목현상 및 이용 정보)가 계산된다. 이들 성능 및 다른 파라미터들의 계산은, 대리인 관리 번호 NVID-P002603이고 "A Method And System For Calculating Performance Parameters For A Processor"라는 제목으로 Aguaviva 등에 의해 2006년 8월 1일자로 출원되어 그 전체가 본 명세서에 포함된 미국 특허 출원 제______호에 설명되어 있다. 드로우 콜들은 사용자 지정 공통 상태 속성들에 응답하여 드로우 콜 그룹들 내에 자동으로 형성될 수 있다. 공통 상태 속성들에 기초한 드로우 콜들의 그룹화는, 대리인 관리 번호 NVID- P002635이고 "Method And User Interface For Enhanced Graphical Operation Organization"이라는 제목으로 Aguaviva 등에 의해 2006년 8월 1일자로 출원되고 그 전체가 본 명세서에 포함된 미국 특허 출원 제______호에 설명되어 있다.
이제, 도 1을 참조하면, 본 발명의 일 실시예에 따른, 선택된 드로우 콜 그룹으로부터 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 예시적인 컴퓨터 제어 사용자 인터페이스(100)가 도시되어 있다. 사용자 인터페이스는 드롭다운 메뉴(105)에서 선택 가능한 드로우 콜 그룹들에 액세스하여 표시한다. 각각의 드로우 콜 그룹은 "Method And User Interface For Enhanced Graphical Operation Organization"이라는 제목으로 Aguaviva 등에 의해 2006년 8월 1일자로 출원된 미국 특허 출원 제______호에 설명된 바와 같이 공통 상태 속성들을 갖는다. 드롭다운 메뉴(105)는 드로우 콜 그룹 내의 드로우 콜들의 수, 그룹의 총 실행 시간 및 처리되는 픽셀들의 수를 표시할 수 있다. 그룹의 실행 시간은 GPU 파이프라인이 드로우 콜 그룹을 실행하는 데 필요한 시간의 양이다. 이 예에서, 선택된 드로우 콜 그룹은 32개의 드로우 콜을 포함하며, GPU 파이프라인에 의해 3.056 ms 내에 실행된다. 또한, GPU 파이프라인은 선택된 드로우 콜 그룹을 완전히 실행한 후 906240 개의 픽셀에 기입하였을 것이다. 드롭다운 메뉴의 이용은 한정적인 것이 아니라 예시적임을 이해한다. 예를 들어, 다른 실시예들은 팝업 윈도우를 이용하여 선택 가능 정보를 표시할 수 있다. 대안으로, 정보는 다른 선택 가능 포맷으로, 테이블에 또는 링크를 통해 표시될 수도 있다.
드롭다운 메뉴(110)는 선택된 드로우 콜 그룹 내의 모든 드로우 콜을 표시한 다. 드롭다운 메뉴(110)는 또한 드로우 콜들의 실행 시간 및 GPU 파이프라인에 의해 처리되는 픽셀들의 수를 표시할 수 있다. 이 예에서, 드로우 콜은 GPU 파이프라인에 의해 0.458 ms 내에 실행된다. 또한, GPU 파이프라인은 선택된 드로우 콜을 완전히 실행한 후 136473 개의 픽셀에 기입하였을 것이다. 드롭다운 메뉴의 이용은 한정적인 것이 아니라 예시적인 것임을 이해한다. 예를 들어, 다른 실시예들은 팝업 윈도우를 이용하여 선택 가능 정보를 표시할 수 있다. 대안으로, 정보는 다른 선택 가능 포맷으로, 테이블에 또는 링크를 통해 표시될 수도 있다.
도 1을 계속 참조하면, 사용자 인터페이스(100)는 GPU 파이프라인 내의 파이프라인 서브유닛을 선택하기 위한 복수의 선택 가능 항목을 포함한다. 이 실시예에서, 선택 가능 서브유닛들은 정점 어셈블리(115), 정점 쉐이더(vertex shader)(120), 픽셀 쉐이더(125) 및 래스터 연산(130)이다. 다른 실시예들은 파이프라인 아키텍처에 따라 보다 적거나 많거나 상이한 서브유닛들을 가질 수 있다. 선택 가능 툴로서 탭을 이용하는 것은 한정적인 것이 아니라 예시적임을 이해한다. 예를 들어, 다른 실시예들은 팝업 윈도우를 이용하여 선택 가능 정보를 표시할 수 있다. 대안으로, 정보는 다른 선택 가능 포맷으로, 테이블에 또는 링크를 통해 표시될 수도 있다.
드로우 콜 그룹, 그 그룹의 드로우 콜 및 서브유닛의 사용자 선택에 응답하여, 실시예들은 그와 관련된 성능 정보를 표시할 수 있다. 성능 정보는 도면 번호 135, 140 및 145로 도시된 바와 같이 바 그래프 포맷으로 표시될 수 있다. 바 그래프(135)는 GPU 서브유닛이 프레임을 실행하는 데 필요한 시간을 표시한다. 이 예에서, GPU 서브유닛은 9.651 ms 내에 프레임을 실행한다. 바 그래프(140)는 GPU 서브유닛이 선택된 드로우 콜 그룹을 실행하는 데 필요한 시간의 양을 표시한다. 바 그래프(145)는 선택된 서브유닛이 선택된 드로우 콜을 실행하는 데 필요한 시간의 양을 표시한다. 따라서, 도시된 바 그래프들은 프레임이 변경되거나 선택된 드로우 콜 그룹이 변경되거나, 선택된 드로우 콜이 변경되거나, 선택된 서브유닛이 변경될 때 변경된다. 바 그래프의 이용은 한정적인 것이 아니라 예시적임을 이해한다. 따라서, 다른 실시예들은 다른 방법을 이용하여 성능 정보를 표시할 수 있으며, 얼마간의 정보를 잠재적으로 표시할 수 있다. 또한, 설명되는 성능 정보는 한정적인 것이 아니라 예시적임을 이해한다. 따라서, 다른 성능 정보도 표시될 수 있다(예를 들어, 이용 및 병목현상).
본 발명의 실시예들에 따라, 드로우 콜 그룹, 드로우 콜 및 서브유닛의 사용자 선택에 응답하여, 선택된 서브유닛에 대응하는 선택된 드로우 콜에 대한 상태 정보가 윈도우(150)에 표시된다. 이 예에서, 0.458 ms 내에 실행되는 32 개의 드로우 콜을 가진 드로우 콜 그룹 및 정점 어셈블리(115) 서브유닛이 선택된다. 상태 정보는 예를 들어 프리미티브들(155)을 드로잉(drawing)하기 위한 드로우 콜을 처리하기 위하여 셋업, 구성 및 프로그래밍을 위한 파이프라인 유닛에 적합한 선택 가능 파라미터들을 포함한다. 프리미티브들을 드로잉하기 위한 상태 정보는 프리미티브들(예를 들어, 삼각형)을 드로잉하는 데 필요한 셋팅 및 값들이다. 이 예에서, 정의된 프리미티브 타입은 삼각형이다. 사용되는 정점들의 수 또는 프리미티브 카운트(primitive count)도 표시될 수 있다. 예를 들어, 정점들의 수는 28385 이고, 프리미티브 카운트는 4864이다.
상태 정보는 또한 인덱스 버퍼(160)의 설명을 포함할 수 있다. 인덱스 버퍼는 메모리 버퍼의 타입 및 포맷을 정의할 수 있다. 또한, 인덱스 버퍼는 메모리 풀의 위치를 정의할 수 있다.
상태 정보는 정점 버퍼 선언(vertex buffer declaration)(165)을 더 포함할 수 있다. 정점 버퍼 선언(165)은 예를 들어 정점 크기, 각각의 개별 정점에 대한 위치, 법선 및 접선이 정점 버퍼 내에 위치하는 오프셋 또는 스트림 등을 정의한다. 이 예에서, 정점 크기는 32이다. 스트림 정점 버퍼 설명(170)에 대한 상태 정보는 정점 버퍼 설명의 상태 정보와 유사하다. 상태 정보는 또한 정점 버퍼 바운딩 박스(175)를 포함할 수 있다. 정점 버퍼 바운딩 박스(vertex buffer bounding box)(175)는 객체 공간 내의 지오메트리(geometry)의 범위를 정의할 수 있다.
상태 정보는 비효율 등에 대해 소프트웨어 개발자에 의해 검사될 수 있다. 일반적으로, 소프트웨어 개발자는 상태 분석을 위해 큰 실행 시간을 갖는 드로우 콜을 선택하고 드로우 콜 셋업 파라미터에 대한 수정을 행하며, 가능하게는 연산에 대한 동일 파라미터들을 공유하는 다른 드로우 콜들은 최적화되는 경우에 프레임 레이트 성능에 상당한 영향을 미칠 것이다. 이 윈도우(150) 내의 상태 정보는 사용자에 의해 편집될 수 있다.
선택된 서브유닛에 대한 선택된 드로우 콜의 그래픽 프리미티브들은 윈도우(150) 내의 상태 정보에 기초하여 윈도우(180)에서 렌더링될 수 있다. 이러한 렌더링은 소프트웨어 개발자가 원래의 모델 데이터 내의 잠재적 에러를 파악할 수 있게 하는 와이어 프레임 렌더링(wireframe rendering), 또는 렌더링 불규칙성을 검사하기 위한 완전 음영 렌더링(fully shaded rendering)일 수 있다. 이 실시예에서, 사용자는 드롭다운 메뉴(110)를 이용하여 선택된 드로우 콜 그룹 내의 다른 드로우 콜들로 스크롤할 수 있다. 대안으로, 사용자는 역순으로 가기 위해 단계 역방향 버튼(185)을 이용하거나, 순서대로 스크롤하기 위해 단계 정방향 버튼(190)을 이용하여 드로우 콜들을 스크롤할 수 있다. 대안으로, 사용자는 슬라이더(195)를 이용하여 드로우 콜들을 스크롤할 수 있다. 따라서, 한번에 하나의 드로우 콜씩 장면(scene)을 진행하기 위해 디버거가 이용될 수 있다. 따라서, 각각의 드로우 콜에 대해, 사용자는 사용된 지오메트리, 텍스처, 쉐이더 및 래스터 연산 셋팅을 볼 수 있다. 드로우 콜들의 스크롤링은 바 그래프(145) 내의 성능 정보를 갱신한다는 점을 이해한다. 또한, 드로우 콜들의 스크롤링은 윈도우(150) 내의 상태 정보를 갱신한다는 점을 이해한다. 이와 같이, 드로우 콜들의 스크롤링은 순차적인 이들의 실행 순서로 윈도우(180) 내의 그래픽 프리미티브들을 갱신하여, 사용자가 문제 있는 드로우 콜 또는 드로우 콜 그룹에 대한 이유를 학습하는 것을 가능하게 한다.
도 1을 계속 참조하면, 윈도우(180) 내에 묘사된 렌더링은 드롭다운 메뉴(196)에 의해 수정될 수 있다. 메뉴(196)의 메뉴 항목의 선택에 응답하여, 선택된 메뉴 항목에 대응하는 렌더링 정보의 상이한 묘사가 표시될 수 있다. 예를 들어, 하나 이상의 식별된 그래픽 연산에 대응하는 프레임 버퍼 내의 데이터가 윈도 우(180) 내에 표시될 수 있다. 대안으로, 하나 이상의 식별된 그래픽 연산에 대응하는 렌더링 정보가 표시될 수 있는데, 이 렌더링 정보는 와이어 프레임 뷰 내의 하나 이상의 렌더링된 객체를 포함한다. 그리고, 다른 실시예들에서, 메뉴(196)로부터의 다른 선택은 하나 이상의 식별된 그래픽 연산에 대응하는 렌더링된 객체의 다른 특성(예를 들어, 깊이 버퍼 정보, 알파 채널 오버레이(alpha channel overlay) 등)의 표시를 가능하게 할 수 있다.
익스포트(export) 버튼(197)은 대안적인 형태로 보기 위해 실행, 상태 정보 및 성능 정보를 익스포트할 수 있는 능력을 제공한다. 익스포트된 데이터는 텍스트 및/또는 그래픽 이미지들을 형성할 수 있다. 이와 같이, 익스포트된 데이터에 액세스하고 표시하기 위해 다른 애플리케이션 및/또는 사용자 인터페이스가 이용될 수 있다.
"단순(Simple)" 버튼(198)은 그래픽 처리 파이프라인의 다양한 파이프라인 유닛에 의한 데이터 스트림의 처리에 관한 보다 적은 정보(예를 들어, 개별 팝업 윈도우에서 그래픽 인터페이스 오버레이들의 제거)의 표시를 가능하게 한다. 이 정보는 데이터 스트림의 처리를 간략화하는 데 사용될 수 있다. 따라서, 사용자는 데이터 스트림의 간단한 처리를 이용하여 문제 있는 서브유닛 및 문제 있는 드로우 콜 그룹을 찾을 수 있다. 이와 같이, 디버깅 사용자 인터페이스는 문제 있는 드로우 콜, 문제 있는 드로우 콜 그룹 또는 문제 있는 서브유닛을 치유하는 데 필요한 교정 동작을 취하는 데 사용될 수 있다. 그 결과, GPU 파이프라인의 성능 및 프레임 레이트가 향상된다.
일 실시예에서, 사용자 인터페이스는 버튼(199)을 제공하는데, 이 버튼(199)의 선택은 드롭다운 메뉴(105, 110)는 물론, 바 그래프(135, 140, 145)를, 윈도우(150, 180) 및 선택 가능 서브유닛(115, 120, 125, 130)과 함께 숨긴다. 이와 같이, 버튼(199)의 선택은 프레임에 대해 드로잉된 드로우 콜들을 실행된 최종 드로우 콜까지 표시한다. 그래픽 인터페이스 요소들은 기초 렌더링의 대상 영역을 불명료하게 하며, 따라서 소프트웨어 개발자를 혼란스럽게 한다. 소프트웨어 개발자는 "단순" 버튼(198)을 선택하여 그래픽 인터페이스를 제거함으로써, 상황 인식을 다시 할 수 있다. 이어서, 소프트웨어 엔지니어는 그래픽 인터페이스를 다시 인에이블링하여 최적화 작업을 계속할 수 있다. 다른 실시예들은 전술한 그래픽 사용자 인터페이스의 일부를 숨길 수 있다.
본 발명의 일 실시예에서, 윈도우(150) 내의 상태 정보는 사용자에 의해 예를 들어 워드 프로세서 기능으로서 편집될 수 있다. 일 실시예에서, 상태 정보의 편집은 기초 애플리케이션을 변경한다는 점을 이해한다. 따라서, 상태 정보는 사용자에게 문제 있는 드로우 콜 및/또는 문제 있는 드로우 콜 그룹에 대한 상이한 서브유닛에서의 정확한 상태 속성 값들에 관한 투명성을 제공한다. 더욱이, 상당한 실행 시간을 갖는 드로우 콜 그룹을 선택함으로써, 사용자는 장황한 드로우 콜들을 공략하여 최적화할 수 있다. 따라서, 보다 적은 변경으로 상당한 프레임 개선이 실현될 수 있다.
일 실시예에서, 윈도우(150)의 상태 정보는 그룹화될 수 있는데, 드로우 콜 그룹 전체의 공통 속성들을 가진 상태 정보가 함께 그룹화되고 나머지 상태 정보가 함께 그룹화된다. 따라서, 공통 속성들을 갖는 상태 정보의 편집은 이들 공통 속성을 갖는 모든 드로우 콜에 적용될 수 있다. 그 결과, 이 상태 정보의 편집은 선택된 드로우 콜 그룹 및 그 안의 모든 드로우 콜에 영향을 준다. 대안으로, 사용자는 공통 속성이 없는 그룹을 편집할 수도 있다. 이와 같이, 고유한 상태 정보의 편집은 그 상태 정보를 갖는 드로우 콜에 영향을 준다. 상태 정보를 전술한 그룹들로 그룹화하는 것은 일 실시예에서 상태 정보의 칼라 코딩(color coding)에 의해 달성될 수 있다는 것을 이해한다. 대안으로, 이들 속성이 공유되는 경우, 사용자가 선택된 드로우 콜 또는 선택된 드로우 콜 그룹에 대해서만 변경을 적용하기를 원하는지를 팝업 윈도우가 사용자에게 물을 수 있다. 다른 실시예들은 다른 방법을 이용하여 상태 정보를 함께 그룹화할 수 있다.
이제, 도 2를 참조하면, 본 발명의 일 실시예에 따라 그룹들의 리스트로부터 드로우 콜 그룹을 선택하기 위한 예시적인 사용자 인터페이스가 도시되어 있다. 전술한 바와 같이, 각각의 드로우 콜 그룹은 한 세트의 공통 상태 속성들에 의해 정의된다. 이 예에서, 드롭다운 메뉴(105)는 5개의 드로우 콜 그룹을 포함한다. 일 실시예에서, 드로우 콜 그룹들은 그들 각각의 실행 시간의 순서로 분류 또는 순위화된다. 예를 들어, 드로우 콜 그룹들은 그들의 실행 시간이 증가하는 순서로 분류될 수 있다. 따라서, 상당한 실행 시간을 가진 드로우 콜 그룹들이 선택될 수 있는데, 이는 긴 실행 시간을 가진 드로우 콜 그룹을 최적화하는 것이 짧은 실행 시간을 가진 드로우 콜 그룹을 최적화하는 것보다 GPU 파이프라인의 효율을 보다 효과적으로 향상시킬 수 있기 때문이다. 이 실시예에서 윈도우(150) 내에 상태 정 보를 표시하는 것은 드롭다운 메뉴(110)로부터 드로우 콜을 선택함으로써 행해진다. 이와 같이, 이 실시예에서, 드로우 콜 그룹의 선택은 윈도우(150) 내의 상태 정보의 값을 변경하지 않는다.
이제, 도 3을 참조하면, 본 발명의 일 실시예에 따른, 선택된 그룹의 드로우 콜을 선택하기 위한 예시적인 사용자 인터페이스가 도시되어 있다. 전술한 바와 같이, 선택된 드로우 콜 그룹은 그 그룹 내에 32개의 드로우 콜을 갖는다. 따라서, 사용자는 드롭다운 메뉴(110)를 이용하여 상이한 선택 가능 드로우 콜들을 스크롤할 수 있다. 일 실시예에서, 드로우 콜들은 그들 각각의 실행 시간의 순서로 분류된다. 예를 들어, 드로우 콜들은 그들의 실행 시간이 감소하는 순서로 분류될 수 있다. 따라서, 가장 긴 실행 시간을 가진 드로우 콜이 GPU 파이프라인에 의해 실행되는 가장 비싼 드로우 콜이다. 따라서, 상당한 드로우 콜들을 최적화하는 것은 GPU 파이프라인의 성능 및 실행 시간을 효과적으로 향상시킨다. 드로우 콜의 선택은 그의 관련 상태 정보가 윈도우(150)에 표시되게 한다.
이제, 도 4를 참조하면, 본 발명의 일 실시예에 따른, 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스가 도시되어 있다. 도 4는 동일한 선택된 드로우 콜 그룹, 동일한 선택된 드로우 콜, 그러나 상이한 서브유닛에 대해 표시되는 상태 정보를 나타낸다. 이 예에서, 선택된 서브유닛은 정점 쉐이더(120)이다. 일 실시예에서, 정점 쉐이더(120)의 선택은 정점 쉐이더 윈도우(410) 및 정점 쉐이더 상수 윈도우(420)를 표시한다. 이와 같이, 정점 쉐이더(120)에 의해 사용되는 임의의 상수 및 텍스처가 검사를 위해 표시된다. 정점 쉐이더 윈도우(410)는 각 정점 상에서 실행되는 정점 쉐이더 어셈블리 언어를 표시한다. 정점 쉐이더 상수 윈도우(420)는 상수를 표시한다. 상수는 예를 들어 변환 매트릭스, 평활화(smoothing) 파라미터, 스키닝(skinning) 파라미터, 라이팅(lighting) 및 변위 상수를 제공한다. 일반적으로, 정점 쉐이더 상수 윈도우(420)는 지오메트리를 수정하기 위한 정보를 제공한다. 정점 쉐이더 서브유닛(120)의 선택은 또한 텍스처 윈도우(430)를 제공한다. 텍스처 윈도우(430)는 텍스처의 값에 기초한 정점의 이동을 가능하게 한다. RGB 탭(440)은 사용자가 상이한 채널을 볼 수 있게 하고, 사용자가 텍스처 내의 다양한 칼라 채널을 통해 인코딩될 수 있는 상이한 정보를 볼 수 있게 한다. 예를 들어, 이 실시예에서는 적, 녹, 청의 3개의 채널이 제공된다.
전술한 바와 같이, 상태 정보 또는 텍스처 데이터가 편집될 수 있다. 따라서, 정점 쉐이더 윈도우(410)에 표시되는 상태 정보는 편집될 수 있다. 이 실시예는, 사용자가 텍스처를 확대할 수 있도록 확대 능력을 제공한다는 것을 이해한다.
이제, 도 5를 참조하면, 본 발명의 일 실시예에 따른, 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스가 도시되어 있다. 도 5는 동일한 선택된 드로우 콜 그룹, 동일한 선택된 드로우 콜, 그러나 상이한 서브유닛에 대해 표시되는 상태 정보를 나타낸다. 이 예에서, 선택된 서브유닛은 픽셀 쉐이더(125)이다. 일 실시예에서, 픽셀 쉐이더(125)의 선택은 고정 함수 셋업 윈도우(510)를 표시한다. 픽셀 쉐이더(125) 프로그램이 선택될 때, 픽셀 쉐이더(125) 프로그램에 의해 사용되는 임의의 상수 및 텍스처가 검사를 위해 표시된다. 고정 함수 셋업 윈도우(510)는 제한된 프로그램 가능성을 갖는 사전 정의된 함수들을 포함한다. 따라서, 사전 정의 함수들의 파라미터들 및 이들의 조합은 다른 함수들을 생성하는 데 이용될 수 있다. 이와 같이, 상태 정보는 사전 정의 함수들에 기초하여 새로운 함수들을 생성하기 위해 편집될 수 있다.
대안으로, 픽셀 쉐이더(125)를 선택하면, 프로그램 가능 윈도우(도시되지 않음)가 표시될 수 있다. 프로그램 가능 윈도우는 편집될 수 있는 상태 정보를 포함한다. 이들은 픽셀 쉐이더 상에서 실행되는 어셈블리 언어 프로그래밍, 및 예를 들어 라이트 위치, 재료 파라미터 등을 지정할 수 있는 그 프로그램과 관련된 임의의 상수를 포함한다. 픽셀 쉐이더(125)의 선택은 텍스처 윈도우(520)를 표시할 수 있다. 텍스처 윈도우(520)는 도 4의 텍스처 윈도우(430)와 유사한 기능을 한다. 따라서, 텍스처 윈도우(520)는 예를 들어 라이트 맵, 법선 맵, 사인 또는 코사인 값들에 대한 탐색표 및 제곱근 맵을 제공할 수 있다.
이제, 도 6을 참조하면, 본 발명의 일 실시예에 따른, 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스가 도시되어 있다. 도 6은 동일한 선택된 드로우 콜 그룹, 동일한 선택된 드로우 콜, 그러나 상이한 서브유닛에 대해 표시되는 상태 정보를 나타낸다. 이 예에서, 선택된 서브유닛은 래스터 연산(130)이다. 일 실시예에서, 래스터 연산(130)의 선택은 렌더 상태 윈도우(610)를 표시한다. 렌더 상태 윈도우(610)는 대량의 데이터의 관리를 돕기 위해 접이식 트리 내에 제공되는 복수의 셋팅에 대한 트리 구조를 포함한다. 래스터 연산(130)에서의 다양한 렌더링 상태가 변경될 수 있다. 예를 들어, 알파 블렌딩(alpha blending)이 턴오프될 수 있다. 렌더 상태 윈도우(610)는 렌더 셋업에 영향을 준다.
래스터 연산(130)의 선택은 렌더 타겟 윈도우(620) 내에 렌더 타겟을 표시한다. 렌더 타겟 윈도우(620)는 예를 들어 메모리 풀(memory pool) 위치 및 비트 깊이와 같은 상태 정보를 표시한다. 일반적으로, 렌더 타겟 윈도우(620)는 렌더링 연산의 결과가 기입되는 위치를 표시한다. 따라서, 상태 정보의 편집은 메모리 액세스 등과 같은 다양한 동작에 영향을 미칠 수 있다.
이제, 도 7을 참조하면, 본 발명의 일 실시예에 따른, 선택된 서브유닛 상에서 실행되는 선택된 드로우 콜에 대응하는 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스가 도시되어 있다. 이 예에서, 67 중의 드로우 콜 번호 30에 대한 상태 정보가 윈도우(150)에 표시된다. 그래픽 프리미티브(180)는 GPU 파이프라인에 의해 드로잉되는 컨테이너를 나타낸다. 전술한 바와 같이, 상태 정보는 편집되어, 선택된 드로우 콜 및/또는 선택된 드로우 콜 그룹의 성능 및 실행에 영향을 미칠 수 있다.
이제, 도 8을 참조하면, 본 발명의 일 실시예에 따른, 선택된 서브유닛 상에서 실행되는 선택된 드로우 콜에 대응하는 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스가 도시되어 있다. 이 예에서, 67 중의 드로우 콜 번호 51에 대한 상태 정보가 윈도우(150)에 표시된다. 그래픽 프리미티브(180)는 GPU 파이프라인에 의해 드로잉되는 스쿨(skull)을 나타낸다. 전술한 바와 같이, 상태 정보는 편 집되어, 선택된 드로우 콜 및/또는 선택된 드로우 콜 그룹의 성능 및 실행에 영향을 미칠 수 있다. 이와 같이, 사용자는 드로잉되는 장면에 새로운 그래픽 프리미티브로서 추가되고 실행되는 순차적인 순서로 각각의 드로우 콜을 조사하고 상태 정보를 조사하기 위하여 상이한 드로우 콜들을 스크롤할 수 있다.
이제, 도 9를 참조하면, 본 발명의 일 실시예에 따른, 그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅하기 위한 컴퓨터 구현 프로세스의 흐름도(900)가 도시되어 있다. 그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅하는 방법은 단계 905에서 시작된다.
단계 910에서, 메모리로부터 복수의 드로우 콜 그룹이 액세스된다. 전술하였고 참고로 포함된 바와 같이, 복수의 드로우 콜 그룹이 규정된 상태의 공통 상태 속성들의 사용자 선택에 응답하여 구성된다. 따라서, 복수의 드로우 콜을 포함하는 각각의 드로우 콜 그룹은 규정된 공통 상태 속성들을 공유한다.
단계 915에서, 액세스되는 복수의 드로우 콜 그룹을 나타내는 리스트가 제1 윈도우에 표시된다. 예를 들어, 복수의 드로우 콜 그룹은 드롭다운 메뉴를 이용하여 표시될 수 있다. 정보를 표시하는 다른 방법이 이용될 수 있음을 이해한다. 예를 들어, 팝업 윈도우가 사용될 수 있다. 표시는 또한 사용자가 리스트의 드로우 콜 그룹을 선택할 수 있게 한다. 일 실시예에서, 드로우 콜 그룹들은 드로우 콜 그룹의 실행 시간에 의해 리스트 내에 순서화된다. 드로우 콜 그룹의 실행 시간은 드로우 콜 그룹이 GPU 파이프라인에 의해 실행되는 데 필요한 시간이다. 일 실시예에서, 표시된 복수의 드로우 콜 그룹은 또한 각 그룹 내의 드로우 콜들의 수, 그룹의 실행 시간 및 렌더링되는 픽셀들의 수와 같은 추가 정보를 표시할 수 있다.
단계 920에서, 드로우 콜 그룹의 사용자 선택에 응답하여, 선택된 드로우 콜 그룹과 연관된 복수의 드로우 콜이 제1 윈도우에 또는 대안으로 별도의 윈도우에 표시된다. 일 실시예에서, 복수의 드로우 콜은 드롭다운 메뉴를 이용하여 리스트로서 표시될 수 있다. 정보를 표시하는 다른 방법이 이용될 수 있음을 이해한다. 예를 들어, 팝업 윈도우가 사용될 수 있다. 표시는 또한 사용자가 드로우 콜을 선택할 수 있게 한다. 일 실시예에서, 드로우 콜들은 선택된 서브유닛에 대한 드로우 콜의 실행 시간에 의해 리스트 내에 순서화된다.
단계 925에서, 복수의 그래픽 파이프라인 서브유닛이 제1 윈도우에 또는 대안으로 별도의 윈도우에 표시된다. 더욱이, 복수의 그래픽 파이프라인 서브유닛은 사용자가 선택 가능하다. 따라서, 사용자는 서브유닛을 선택할 수 있으므로, 선택된 서브유닛에 대한 선택된 드로우 콜을 검사할 수 있다.
단계 930에서, 드로우 콜 그룹, 드로우 콜 및 서브유닛의 사용자 선택에 응답하여, 복수의 관련 상태 정보가 제2 윈도우에 표시될 수 있다. 그러나, 상태 정보는 제1 윈도우에 또는 별도의 윈도우에 표시될 수 있음을 이해한다. 단계 935에서, 그래픽 프리미티브들이 선택된 드로우 콜의 실행으로부터 야기되는 선택된 파이프라인 서브유닛에 의해 렌더링된다. 드로우 콜의 변경 또는 다양한 드로우 콜의 스크롤링은 상태 정보를 갱신하는 것 외에도 그래픽 프리미티브들을 갱신할 것이다. 따라서, 사용자는 각 드로우 콜의 실행, 그의 상태 정보 및 그에 대응하는 그래픽 프리미티브들을 한번에 한 단계씩 검사할 수 있다.
단계 940에서, 선택된 그래픽 파이프라인 서브유닛에 관련된 선택된 드로우 콜 및 드로우 콜 그룹에 대한 성능 데이터가 표시된다. 일 실시예에서, 성능 데이터는 GPU 파이프라인에 의한 프레임 실행 시간, GPU 파이프라인에 의한 선택된 드로우 콜 그룹 실행 시간, 및 선택된 서브유닛에 의한 선택된 드로우 콜 실행 시간이다. 다른 실시예들은 각 서브유닛에 대한 이용 및 병목현상 정보를 제공할 수 있다.
단계 945에서, 복수의 상태 정보는 규정된 상태의 공통 상태 속성들을 공유하는 복수의 상태 정보의 일부가 함께 묘사되도록 그룹화된다. 일 실시예에서, 그룹화는 동일 윈도우 내의 공통 상태 속성들을 가진 상태 정보의 그룹화에 의한다. 다른 실시예에서, 그룹화는 그룹들의 칼라 코딩에 의한다. 상태 정보를 그룹화하기 위한 다른 방법이 이용될 수 있음을 이해한다.
단계 950에서, 사용자는 복수의 상태 정보를 편집할 수 있다. 일 실시예에서, 상태 정보의 편집은 애플리케이션을 변경한다. 단계 955에서, 복수의 상태 정보의 편집은 사용자 선택에 응답하여 선택된 드로우 콜에 적용되거나, 대안으로는 선택된 드로우 콜 그룹에 적용된다. 단계 960에서, 그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅하는 프로세스가 종료된다.
도 10은 본 발명의 일 실시예가 구현될 수 있는 범용 컴퓨터 시스템(1000)을 나타내는 블록도이다. 컴퓨터 시스템(1000)은 도 9에 도시된 바와 같은 그래픽 파이프라인 서브유닛을 디버깅하는 방법을 구현할 수 있으며, 정보를 통신하기 위한 버스(1002) 또는 다른 통신 메커니즘, 및 정보를 처리하기 위해 버스(1002)에 결합되는 프로세서(1004)를 포함한다. 컴퓨터 시스템(1000)은 프로세서(1004)에 의해 실행되는 명령들 및 정보를 저장하기 위해 버스(1002)에 결합되는 RAM(random access memory) 또는 다른 동적 저장 장치와 같은 메인 메모리(1006)를 더 포함한다. 메인 메모리(1006)는 또한 프로세서(1004)에 의하여 실행되는 명령들의 실행 동안 임시 변수 또는 다른 중간 정보를 저장하는 데 사용될 수 있다. 컴퓨터 시스템(1000)은 프로세서(1004)에 대한 명령들 및 정적 정보를 저장하기 위해 버스(1002)에 결합되는 ROM(read only memory)(1008) 또는 다른 정적 저장 장치를 더 포함한다. 자기 디스크 또는 광 디스크와 같은 불휘발성 저장 장치(1010)가 제공되고, 정보 및 명령들을 저장하기 위해 버스(1002)에 결합되며, 지속적인 내부 큐(queue)를 저장할 수 있다.
컴퓨터 시스템(1000)은 컴퓨터 사용자에게 정보를 표시하기 위한 CRT(cathode ray tube)와 같은 옵션 디스플레이(1012)에 버스(1002)를 통해 결합될 수 있다. 영숫자 및 다른 키들을 포함하는 옵션 입력 장치(1014)가 정보 및 커맨드 선택들을 프로세서(1004)에 통신하기 위해 버스(1002)에 결합될 수 있다. 다른 타입의 사용자 입력 장치는, 마우스, 트랙볼, 또는 방향 정보 및 커맨드 선택들을 프로세서(1004)에 통신하고 디스플레이(1012) 상의 커서 이동을 제어하기 위한 커서 방향 키들과 같은 커서 제어(1016)이다.
본 명세서에서 사용되는 "컴퓨터 판독 가능 매체"라는 용어는 실행을 위해 프로세서(1004)에 명령들을 제공하는 데 관여하는 임의의 매체를 지칭한다. 이러 한 매체는 불휘발성 매체, 휘발성 매체 및 전송 매체를 포함하지만 이에 한정되지 않는 다양한 형태를 가질 수 있다. 불휘발성 매체는 예를 들어 저장 장치(1010)와 같은 광 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(1006)와 같은 동적 메모리를 포함한다. 전송 매체는 버스(1002)를 구성하는 와이어들을 포함하여, 동축 케이블, 구리 와이어, 및 광섬유를 포함한다. 전송 매체는 또한 전파(radio wave) 및 적외선 데이터 통신 동안 생성되는 것과 같은 음파 또는 광파의 형태를 가질 수 있다.
컴퓨터 판독 가능 매체의 통상 형태는 예를 들어 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 또는 임의의 다른 자기 매체, CD-ROM, 임의의 다른 광학 매체, 펀치 카드, 종이 테이프, 구멍의 패턴을 가진 임의의 다른 물리적 매체, RAM, PROM 및 EPROM, 플래시 EPROM, 임의의 다른 메모리 칩 또는 카트리지, 후술하는 반송파, 또는 컴퓨터가 판독할 수 있는 임의의 다른 매체를 포함한다.
컴퓨터 시스템(1000)은 네트워크(들), 네트워크 링크(1020) 및 통신 인터페이스(1018)를 통해 메시지를 송수신할 수 있다. 인터넷 예에서, 서버(1030)는 인터넷(1028), ISP(1026), 로컬 네트워크(1022) 및 통신 인터페이스(1018)를 통해 애플리케이션 프로그램에 대해 요청된 코드를 전송할 수 있다. 수신된 코드는 수신되는 대로 프로세서(1004)에 의해 실행될 수 있고, 그리고/또는 후속 실행을 위해 저장 장치(1010) 또는 다른 불휘발성 저장 장치에 저장될 수 있다.
전술한 명세서에서, 본 발명의 실시예들은 구현마다 다를 수 있는 다양한 특정 상세를 참조하여 설명되었다. 따라서, 발명이 무엇인지 그리고 출원인이 무 엇을 의도하는지에 대한 유일하고 배타적인 지시자는 이 출원으로부터 허여되는 청구항들의 세트인데, 이는 임의의 후속 보정을 포함하는 그러한 청구항들이 허여되는 특정 형태를 갖는다. 따라서, 청구항에 명시적으로 기재되지 않은 어떠한 제한, 요소, 특성, 특징, 이점 또는 속성도 어떠한 방식으로도 청구항의 범위를 한정하지 않아야 한다. 따라서, 명세서 및 도면들은 제한적이 아니라 예시적인 것으로 간주되어야 한다.
본 발명은 동일 참조 번호들이 유사한 요소들을 지칭하는 첨부 도면들에서 한정적인 것이 아니라 예시적으로 설명된다.
도 1은 본 발명의 일 실시예에 따른, 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 사용자 인터페이스의 예시적인 스크린샷(shot)을 나타내는 도면.
도 2는 본 발명의 일 실시예에 따른, 드로우 콜 그룹을 선택하기 위한 예시적인 사용자 인터페이스의 스크린샷을 나타내는 도면.
도 3은 본 발명의 일 실시예에 따른, 드로우 콜을 선택하기 위한 예시적인 사용자 인터페이스의 스크린샷을 나타내는 도면.
도 4는 본 발명의 일 실시예에 따른, 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스의 스크린 샷을 나타내는 도면.
도 5는 본 발명의 일 실시예에 따른, 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스의 스크린 샷을 나타내는 도면.
도 6은 본 발명의 일 실시예에 따른, 선택된 드로우 콜을 실행하는 선택된 서브유닛에 대한 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스의 스크린 샷을 나타내는 도면.
도 7은 본 발명의 일 실시예에 따른, 선택된 서브유닛 상에서 실행되는 선택 된 드로우 콜에 대응하는 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스의 스크린 샷을 나타내는 도면.
도 8은 본 발명의 일 실시예에 따른, 선택된 서브유닛 상에서 실행되는 선택된 드로우 콜에 대응하는 상태 정보를 표시하기 위한 예시적인 사용자 인터페이스의 스크린 샷을 나타내는 도면.
도 9는 본 발명의 일 실시예에 따른, 그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅하기 위한 컴퓨터 구현 프로세스의 흐름도를 나타내는 도면.
도 10은 본 발명의 실시예들의 플랫폼으로서 기능할 수 있는 범용 컴퓨터 시스템을 나타내는 도면.
<도면 부호의 간단한 설명>
1000: 컴퓨터 시스템
1002: 버스
1004: 프로세서
1006: 메인 메모리
1008: ROM
1010: 저장 장치
1012: 디스플레이
1014: 입력 장치
1016: 커서 제어
1018: 통신 인터페이스
1022: 로컬 네트워크
1026: ISP
1028: 인터넷
1030: 서버

Claims (21)

  1. 그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅하기 위한 그래픽 사용자 인터페이스로서,
    복수의 드로우 콜(draw call) 그룹을 표시하고, 그의 사용자 선택을 허가하도록 동작 가능한 제1 윈도우 - 상기 각 드로우 콜 그룹은 각각의 복수의 드로우 콜을 포함하고, 상기 각 드로우 콜 그룹의 모든 드로우 콜들은 규정된 상태의 공통 상태 속성들을 공유함 -;
    복수의 그래픽 파이프라인 서브유닛의 식별자들을 표시하고, 그의 사용자 선택을 허가하도록 동작 가능한 제2 윈도우; 및
    상기 제1 및 제2 윈도우들의 선택들에 응답하여, 선택된 드로우 콜과 연관된 선택된 그래픽 파이프라인 서브유닛의 복수의 상태 정보를 표시하기 위한 제3 윈도우
    를 포함하고,
    상기 선택된 드로우 콜은 선택된 드로우 콜들의 그룹과 연관되는 그래픽 사용자 인터페이스.
  2. 제1항에 있어서, 상기 선택된 드로우 콜의 실행으로부터 야기되는 상기 선택된 그래픽 파이프라인 서브유닛에 의해 렌더링(rendering)되는 그래픽 프리미티브(primitive)들을 표시하기 위한 제4 윈도우를 더 포함하는 그래픽 사용자 인터페이스.
  3. 제1항에 있어서,
    그래픽 파이프라인 서브유닛에 대해 선택된 드로우 콜 및 선택된 드로우 콜 그룹에 대한 성능 데이터를 표시하기 위한 제4 윈도우를 더 포함하고,
    상기 성능 데이터는 상기 복수의 그래픽 파이프라인 서브유닛이 상기 선택된 드로우 콜 그룹을 실행하기 위한 시간을 나타내고, 상기 성능 데이터는 또한 상기 선택된 그래픽 파이프라인 서브유닛이 상기 선택된 드로우 콜을 실행하기 위한 시간을 나타내는 그래픽 사용자 인터페이스.
  4. 제1항에 있어서, 상기 복수의 상태 정보는 상기 제3 윈도우 내에서 사용자가 편집할 수 있는 그래픽 사용자 인터페이스.
  5. 제1항에 있어서,
    상기 복수의 드로우 콜 그룹은 실행 시간에 의해 순위화되고,
    상기 복수의 드로우 콜은 실행 시간에 의해 순위화되는 그래픽 사용자 인터페이스.
  6. 제1항에 있어서, 상기 복수의 상태 정보는, 상기 선택된 드로우 콜 그룹 전체에 공통인 상기 복수의 상태 정보의 일부가 공통으로 묘사되도록 그룹화되는 그래픽 사용자 인터페이스.
  7. 그래픽 파이프라인 서브유닛 상에서 동작 가능한 애플리케이션을 디버깅하는 방법으로서,
    복수의 드로우 콜 그룹에 액세스하는 단계 - 상기 각 드로우 콜 그룹은 규정된 상태의 공통 상태 속성들을 모두가 공유하는 각각의 복수의 드로우 콜을 포함함 -;
    제1 윈도우에 상기 복수의 드로우 콜 그룹을 표시하고 그의 사용자 선택을 허가하는 단계;
    드로우 콜 그룹의 사용자 선택에 응답하여, 상기 선택된 드로우 콜 그룹과 연관된 복수의 드로우 콜을 표시하고 그의 사용자 선택을 허가하는 단계;
    제2 윈도우에 복수의 그래픽 파이프라인 서브유닛의 식별자들을 표시하고 그의 사용자 선택을 허가하는 단계; 및
    선택된 그래픽 파이프라인 서브유닛의 사용자 선택에 응답하여, 선택된 드로우 콜과 연관된 선택된 그래픽 파이프라인 서브유닛의 복수의 상태 정보를 표시하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서, 상기 선택된 드로우 콜의 실행으로부터 야기되는 상기 선택된 그래픽 파이프라인 서브유닛에 의해 렌더링되는 그래픽 프리미티브들을 표시하는 단계를 더 포함하는 방법.
  9. 제7항에 있어서,
    상기 선택된 그래픽 파이프라인 서브유닛에 관한 상기 선택된 드로우 콜 및 상기 드로우 콜 그룹에 대한 성능 데이터를 표시하는 단계를 더 포함하고,
    상기 성능 데이터는 상기 복수의 그래픽 파이프라인 서브유닛이 상기 선택된 드로우 콜 그룹을 실행하기 위한 시간을 나타내고, 상기 성능 데이터는 또한 상기 선택된 그래픽 파이프라인 서브유닛이 상기 선택된 드로우 콜을 실행하기 위한 시간을 나타내는 방법.
  10. 제7항에 있어서, 상기 복수의 상태 정보를 표시하는 단계는, 상기 선택된 드로우 콜 그룹 전체에 공통인 상기 복수의 상태 정보의 일부가 함께 묘사되도록 상기 복수의 상태 정보를 그룹화하는 단계를 더 포함하는 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020070077546A 2006-08-01 2007-08-01 그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및시스템 KR100909153B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/498,203 US8607151B2 (en) 2006-08-01 2006-08-01 Method and system for debugging a graphics pipeline subunit
US11/498,203 2006-08-01

Publications (2)

Publication Number Publication Date
KR20080012235A KR20080012235A (ko) 2008-02-11
KR100909153B1 true KR100909153B1 (ko) 2009-07-23

Family

ID=39030707

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070077546A KR100909153B1 (ko) 2006-08-01 2007-08-01 그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및시스템

Country Status (6)

Country Link
US (1) US8607151B2 (ko)
JP (1) JP5489395B2 (ko)
KR (1) KR100909153B1 (ko)
CN (1) CN101118643B (ko)
DE (1) DE102007036071A1 (ko)
TW (1) TWI378399B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8593465B2 (en) * 2007-06-13 2013-11-26 Advanced Micro Devices, Inc. Handling of extra contexts for shader constants
US7992137B2 (en) * 2007-07-30 2011-08-02 Nvidia Corporation Client server system for analysis and performance tuning of remote graphics devices
US9035957B1 (en) * 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US8624907B2 (en) * 2009-06-26 2014-01-07 Intel Corporation Graphics analysis techniques
US8581916B2 (en) * 2009-06-26 2013-11-12 Intel Corporation Graphics analysis techniques
US20100332987A1 (en) * 2009-06-26 2010-12-30 Cormack Christopher J Graphics analysis techniques
US20110072414A1 (en) * 2009-09-20 2011-03-24 Richard Dee Gardner Method of using a diagram to create a program code
US8614716B2 (en) * 2010-10-01 2013-12-24 Apple Inc. Recording a command stream with a rich encoding format for capture and playback of graphics content
US8933948B2 (en) * 2010-10-01 2015-01-13 Apple Inc. Graphics system which utilizes fine grained analysis to determine performance issues
KR101773396B1 (ko) * 2011-02-09 2017-08-31 삼성전자주식회사 데이터를 압축 해제하는 그래픽 처리 장치 및 방법
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9720842B2 (en) * 2013-02-20 2017-08-01 Nvidia Corporation Adaptive multilevel binning to improve hierarchical caching
US9471456B2 (en) 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
US9645916B2 (en) 2014-05-30 2017-05-09 Apple Inc. Performance testing for blocks of code
US10204394B2 (en) 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
CN107423019B (zh) * 2017-07-31 2020-11-10 山东超越数控电子股份有限公司 一种基于飞腾平台控制3d图形加速的实现方法
US20190369849A1 (en) * 2018-06-01 2019-12-05 Apple Inc. Visualizing Execution History With Shader Debuggers
US11087431B2 (en) * 2019-11-25 2021-08-10 Qualcomm Incorporated Methods and apparatus for reducing draw command information

Family Cites Families (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905296A (en) * 1986-07-22 1990-02-27 Schlumberger Systems & Services, Inc. System for shape recognition
CA2077970C (en) * 1991-11-19 1999-02-23 Daniel P. Huttenlocher Optical word recognition by examination of word shape
US5966539A (en) * 1994-03-01 1999-10-12 Digital Equipment Corporation Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis
US5524066A (en) * 1994-03-31 1996-06-04 Xerox Corporation Text recognition by predictive composed shapes
JPH08255155A (ja) * 1995-03-16 1996-10-01 Fuji Xerox Co Ltd 全文登録語検索装置および方法
US5643086A (en) * 1995-06-29 1997-07-01 Silicon Gaming, Inc. Electronic casino gaming apparatus with improved play capacity, authentication and security
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
US6026362A (en) * 1995-09-11 2000-02-15 Compaq Computer Corporation Tool and method for diagnosing and correcting errors in a computer program
US6016474A (en) * 1995-09-11 2000-01-18 Compaq Computer Corporation Tool and method for diagnosing and correcting errors in a computer program
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5815154A (en) * 1995-12-20 1998-09-29 Solidworks Corporation Graphical browser system for displaying and manipulating a computer model
US5987459A (en) * 1996-03-15 1999-11-16 Regents Of The University Of Minnesota Image and document management system for content-based retrieval
US5913205A (en) * 1996-03-29 1999-06-15 Virage, Inc. Query optimization for visual information retrieval system
US5978484A (en) * 1996-04-25 1999-11-02 Microsoft Corporation System and method for safety distributing executable objects
US5892904A (en) * 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US6330008B1 (en) * 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
AU7957998A (en) * 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US5920725A (en) * 1997-07-02 1999-07-06 Adaptivity Inc. Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors
US5970147A (en) * 1997-09-30 1999-10-19 Intel Corporation System and method for configuring and registering a cryptographic device
US6714909B1 (en) * 1998-08-13 2004-03-30 At&T Corp. System and method for automated multimedia content indexing and retrieval
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
JP2002526841A (ja) * 1998-09-29 2002-08-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 区分符号化方法及び装置
US6389168B2 (en) * 1998-10-13 2002-05-14 Hewlett Packard Co Object-based parsing and indexing of compressed video streams
JP2000174948A (ja) * 1998-12-04 2000-06-23 Canon Inc 画像入出力装置、画像入出力方法および画像処理システム
TW410290B (en) * 1999-01-08 2000-11-01 Via Tech Inc Cross-banks and -pages access control device and method for memory
US6362825B1 (en) * 1999-01-19 2002-03-26 Hewlett-Packard Company Real-time combination of adjacent identical primitive data sets in a graphics call sequence
US6694311B1 (en) * 1999-01-25 2004-02-17 International Business Machines Corporation Method and apparatus for fast query approximation using adaptive query vector projection
US6157618A (en) * 1999-01-26 2000-12-05 Microsoft Corporation Distributed internet user experience monitoring system
US6378066B1 (en) * 1999-02-04 2002-04-23 Sun Microsystems, Inc. Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications
US7383205B1 (en) * 1999-03-27 2008-06-03 Microsoft Corporation Structure of a digital content package
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
GB2355899A (en) * 1999-10-29 2001-05-02 Oak Technology Inc Multistage digital processor with dedicated stage clock controllers
US6901582B1 (en) * 1999-11-24 2005-05-31 Quest Software, Inc. Monitoring system for monitoring the performance of an application
US20010034835A1 (en) * 2000-02-29 2001-10-25 Smith Robert E. Applied digital and physical signatures over telecommunications media
JP2001325103A (ja) * 2000-05-16 2001-11-22 Denso Corp シミュレータ作成方法、シミュレータ作成装置およびシミュレータの作成支援方法
US6760042B2 (en) * 2000-09-15 2004-07-06 International Business Machines Corporation System and method of processing MPEG streams for storyboard and rights metadata insertion
US6965994B1 (en) * 2001-01-30 2005-11-15 Microsoft Corporation Security mechanism for computer processing modules
US7016972B2 (en) * 2001-04-23 2006-03-21 International Business Machines Corporation Method and system for providing and viewing performance analysis of resource groups
US6943800B2 (en) * 2001-08-13 2005-09-13 Ati Technologies, Inc. Method and apparatus for updating state data
TW530498B (en) * 2001-08-14 2003-05-01 Nat Univ Chung Cheng Object segmentation method using MPEG-7
US20030043022A1 (en) * 2001-08-31 2003-03-06 Burgan John M. Messaging system providing message redundancy reduction
US7047519B2 (en) * 2001-09-26 2006-05-16 International Business Machines Corporation Dynamic setting of breakpoint count attributes
US7749076B2 (en) * 2002-09-13 2010-07-06 Bally Gaming, Inc. System and method for an alterable storage media in a gaming machine
US7398389B2 (en) * 2001-12-20 2008-07-08 Coretrace Corporation Kernel-based network security infrastructure
US7401116B1 (en) * 2002-03-29 2008-07-15 Silicon Graphics, Inc. System and method for allowing remote users to specify graphics application parameters for generation of interactive images
US6732060B1 (en) * 2002-05-06 2004-05-04 Adaptec, Inc. System and method for an interface invariant test case
US7436531B2 (en) * 2002-05-14 2008-10-14 Xerox Corporation Systems and methods for using multiple processors for imaging
JP2004046599A (ja) * 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
US7260066B2 (en) * 2002-10-31 2007-08-21 Conexant Systems, Inc. Apparatus for link failure detection on high availability Ethernet backplane
US7237151B2 (en) * 2002-12-17 2007-06-26 Texas Instruments Incorporated Apparatus and method for trace stream identification of a processor reset
CA2418670A1 (en) * 2003-02-11 2004-08-11 Ibm Canada Limited - Ibm Canada Limitee Method and system for generating executable code for formatiing and printing complex data structures
US7565551B2 (en) * 2003-02-19 2009-07-21 Microsoft Corporation Enhancing software integrity through installation and verification
US7173635B2 (en) * 2003-03-25 2007-02-06 Nvidia Corporation Remote graphical user interface support using a graphics processing unit
US7148888B2 (en) * 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
KR100755683B1 (ko) * 2003-05-07 2007-09-05 삼성전자주식회사 컨텐츠 제공자 인증 및 컨텐츠 무결성 보장 방법
US7505953B2 (en) * 2003-07-11 2009-03-17 Computer Associates Think, Inc. Performance monitoring of method calls and database statements in an application server
US7277826B2 (en) * 2003-08-25 2007-10-02 International Business Machines Corporation Apparatus and method for detecting and forecasting resource bottlenecks
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US7831838B2 (en) * 2004-03-05 2010-11-09 Microsoft Corporation Portion-level in-memory module authentication
US20050222881A1 (en) * 2004-04-05 2005-10-06 Garry Booker Management work system and method
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7730456B2 (en) * 2004-05-19 2010-06-01 Sony Computer Entertainment Inc. Methods and apparatus for handling processing errors in a multi-processing system
US7203922B2 (en) * 2004-06-01 2007-04-10 Agilent Technologies, Inc. Merging of infrastructure within a development environment
US7555499B2 (en) * 2004-08-17 2009-06-30 Oracle International Corporation Diagnosing database performance problems using a plurality of wait classes
US7802110B2 (en) * 2004-08-25 2010-09-21 Microsoft Corporation System and method for secure execution of program code
US7249331B2 (en) * 2004-10-07 2007-07-24 International Business Machines Corporation Architectural level throughput based power modeling methodology and apparatus for pervasively clock-gated processor cores
US8379553B2 (en) * 2004-11-22 2013-02-19 Qualcomm Incorporated Method and apparatus for mitigating the impact of receiving unsolicited IP packets at a wireless device
JP2006153628A (ja) * 2004-11-29 2006-06-15 Shimadzu Corp 分析データ管理装置及び分析データ管理プログラム
US7805765B2 (en) * 2004-12-28 2010-09-28 Lenovo (Singapore) Pte Ltd. Execution validation using header containing validation data
US7548244B2 (en) * 2005-01-12 2009-06-16 Sony Computer Entertainment Inc. Interactive debugging and monitoring of shader programs executing on a graphics processor
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US7401242B2 (en) * 2005-09-27 2008-07-15 International Business Machines Corporation Dynamic power management in a processor design
US8817029B2 (en) * 2005-10-26 2014-08-26 Via Technologies, Inc. GPU pipeline synchronization and control system and method
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US7891012B1 (en) * 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US7688809B2 (en) * 2006-05-03 2010-03-30 Cisco Technology, Inc. Media inactivity detection in VoIP networks
US20080007563A1 (en) * 2006-07-10 2008-01-10 Microsoft Corporation Pixel history for a graphics application
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8436870B1 (en) * 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
KR100781705B1 (ko) * 2006-10-24 2007-12-03 삼성전자주식회사 이동통신 단말기에서 모드 제어 장치 및 방법
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
N. Tatarchuk, "New RenderMonkey Features for DirectX and OpenGL Shader Development", Game Developers Conference, March 2004.

Also Published As

Publication number Publication date
JP2008123488A (ja) 2008-05-29
TWI378399B (en) 2012-12-01
DE102007036071A1 (de) 2008-04-10
TW200820130A (en) 2008-05-01
CN101118643B (zh) 2012-05-23
US8607151B2 (en) 2013-12-10
US20080034311A1 (en) 2008-02-07
JP5489395B2 (ja) 2014-05-14
DE102007036071A8 (de) 2008-08-14
KR20080012235A (ko) 2008-02-11
CN101118643A (zh) 2008-02-06

Similar Documents

Publication Publication Date Title
KR100909153B1 (ko) 그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및시스템
KR101286318B1 (ko) 렌더링된 그래픽 엘리먼트들을 위한 성능 메트릭들의 시각적 표현의 디스플레이
CN101675453B (zh) 用于分析对于应用程序修改前命令改变的性能的图形命令管理工具和方法
CN106233326B (zh) 图形处理中基于显现目标的灵活显现
US10853905B2 (en) Instruction execution in graphics processor shader programs
US20080100627A1 (en) Processing of 3-Dimensional Graphics
JP6108670B2 (ja) グラフィックス処理
US8436864B2 (en) Method and user interface for enhanced graphical operation organization
US8436870B1 (en) User interface and method for graphical processing analysis
US10943385B2 (en) Using textures in graphics processing systems
US10593093B2 (en) Data processing systems
US8232994B2 (en) Viewing multi-dimensional data in two dimensions
GB2476544A (en) Relational modeling for performance analysis of multi-core processors
US20210294579A1 (en) Graphics pipeline optimizations
US11107264B2 (en) Graphics processing systems for determining blending operations
CN111831273B (zh) 基于着色器的数据处理方法、装置及电子设备
GB2440667A (en) A graphical user interface for debugging a graphics pipeline subunit
US6323870B1 (en) Texture alpha discrimination a method and apparatus for selective texture modulation in a real time graphics pipeline
CN111932689A (zh) 一种采用id像素图的三维对象快速选取方法
KR101239965B1 (ko) 렌더링 장치 및 방법
CN101127124A (zh) 在显示用图形对象绘制期间变换对象顶点的方法及设备
CN117011444B (zh) 一种gpu分块渲染的性能分析方法及系统
CN117409088A (zh) 可编程的像素混合流水线、方法、装置和计算机设备

Legal Events

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

Payment date: 20130621

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140702

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151023

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170710

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190711

Year of fee payment: 11