KR20110000532A - 그래픽 분석 기법들 - Google Patents

그래픽 분석 기법들 Download PDF

Info

Publication number
KR20110000532A
KR20110000532A KR1020100060737A KR20100060737A KR20110000532A KR 20110000532 A KR20110000532 A KR 20110000532A KR 1020100060737 A KR1020100060737 A KR 1020100060737A KR 20100060737 A KR20100060737 A KR 20100060737A KR 20110000532 A KR20110000532 A KR 20110000532A
Authority
KR
South Korea
Prior art keywords
pixel
draw
graphics
graphical
calls
Prior art date
Application number
KR1020100060737A
Other languages
English (en)
Other versions
KR101206548B1 (ko
Inventor
크리스토퍼 제이. 코맥
세르게이 스틴
브라이언 더블유. 브라운
로렌스 윅스트롬
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20110000532A publication Critical patent/KR20110000532A/ko
Application granted granted Critical
Publication of KR101206548B1 publication Critical patent/KR101206548B1/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
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Abstract

실시예들은 그래픽 애플리케이션 분석 기술을 제공한다. 예컨대, 소정 장치는 그래픽 애플리케이션 프로그램 인터페이스(API), 그래픽 엔진, 및 그래픽 분석 도구를 포함할 수 있다. 그래픽 분석 도구는 그래픽 API에게 발행된 복수의 드로우 콜(draw call)을 수신하여 이 드로우 콜들을 각각이 특정 렌더링 타겟(render target)에 대응하는 복수의 계열로 배열할 수 있다. 이 정보에 기초하여 여러 가지 분석 작업이 수행될 수 있다. 예컨대, 오버드로우(overdraw) 이미지가 생성될 수 있다. 그와 같은 오버드로우 이미지는 그 동적 범위를 개선하도록 향상될 수 있다. 또한 픽셀 히스토리(pixel history)가 대응하는 픽셀 선택에 기초하여 생성될 수 있다. 또한 선택된 픽셀에 미치는 드로우 콜의 영향이 결정될 수도 있다. 더욱이, 그와 같은 작업은 각 렌더링 타겟 단위로 수행될 수 있다.

Description

그래픽 분석 기법들{GRAPHICS ANALYSIS TECHNIQUES}
본 발명은 그래픽 분석 기법에 관한 것이다.
컴퓨터 애플리케이션이 이용하는 그래픽은 점점 더 복잡해지고 있다. 예컨대, 게임 애플리케이션은 보통은 실시간 기반으로 애니메이트되는(animated) 3차원 그래픽을 제공한다. 그와 같은 그래픽은 점점 더 사실적으로 되어 가고 있다.
그와 같은 그래픽의 복잡성이 증가함에 따라 애플리케이션 개발자들도 더 어려운 문제에 부딪히게 된다. 예컨대, 개발자들은 올바르게 작동하지 않거나 나타나지 않는 그래픽 렌더링을 디버그(debug)해야 한다. 또한 개발자들은 한정된 처리 용량을 다루어야 한다. 그러므로, 그래픽 렌더링에 의해 부과되는 처리 부하를 분석하고, 대개는 그와 같은 한정된 용량에 맞도록 개선해야 할 필요가 있다.
그래픽을 테스트, 분석 및 디버깅하는 도구는 그래픽 애플리케이션 개발에 중요하다.
도면에서 유사한 참조번호는 일반적으로 동리하고, 기능적으로 유사한 그리고/또는 구조적으로 유사한 구설요소들을 가리킨다. 구성요소가 처음 나타나는 도면은 참조번호의 최좌측 자리수(들)로 표시된다. 본 발명은 첨부도면을 참조하여 설명한다.
도 1은 예시적인 동작 환경의 도면이다.
도 2는 그래픽 분석 도구에 포함될 수 있는 구현의 도면이다.
도 3은 예시적인 사용자 인터페이스의 도면이다.
도 4 내지 9는 논리 흐름도 들이다.
도 10은 예시적인 플랫폼의 도면이다.
실시예들은 그래픽 애플리케이션 분석을 위한 기법을 제공한다. 예컨대, 장치는 그래픽 애플리케이션 프로그램 인터페이스(API), 그래픽 엔진, 및 그래픽 분석 도구를 포함할 수 있다. 그래픽 분석 도구는 그래픽 API에 대해 발행된 복수의 드로우 콜(draw call)을 수신하고, 드로우 콜들을 각각이 특정 렌더링 타겟(render target)에 대응하는 다수의 시퀀스로 배열할 수 있다. 이 정보로부터 여러 가지 분석 작업이 수행될 수 있다. 예컨대, 오버드로우(overdraw) 이미지가 생성될 수 있다. 또한 대응하는 픽셀 선택에 기초하여 픽셀 히스토리(pixel history)가 생성될 수 있다. 더욱이, 선택된 픽셀에 미치는 드로우 콜의 효과가 결정될 수 있다. 더욱이, 그와 같은 작업은 각 렌더링 타겟 기반 단위로 수행될 수 있다.
본 명세서 전체에 걸쳐서 "일 실시예"나 "실시예"에 대한 참조는 실시예와 관련하여 설명되는 특정한 형상, 구조 또는 특성이 적어도 하나의 실시예에 포함됨을 의미한다. 따라서 본 명세서 전체에 걸쳐서 여러 곳에서 표현된 "일 실시예에서"나 "실시예에서"라는 구절은 반드시 동일한 실시예를 지칭하는 것은 아니다. 더욱이, 이러한 특정한 형상, 구조 또는 특성은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다.
도 1은 본 명세서에서 설명되는 기법을 이용할 수 있는 예시적인 동작 환경(100)의 도면이다. 환경(100)은 여러 가지 구성요소를 포함할 수 있다. 예컨대, 도 1은 그래픽 애플리케이션(102), 그래픽 애플리케이션 프로그램 인터페이스(API)(104), 그래픽 엔진(106), 및 그래픽 분석 도구(110)를 포함하는 환경(100)을 도시한다. 이들 구성요소는 하드웨어 및/또는 소프트웨어의 임의의 조합으로 구현될 수 있다. 더욱이, 실시예들은 도 1의 구성요소들로 한정되지 않는다.
실시예들에서, 그래픽 애플리케이션(102)은 하나 이상의 디스플레이 상에 출력되는 그래픽(예컨대, 3차원 그래픽)을 이용하는 컴퓨터 애플리케이션(예컨대, 사용자 애플리케이션)이다. 예시적인 사용자 애플리케이션은 (이것으로 한정되는 것은 아니지만) 비디오 게임 및 시뮬레이션 도구가 있다.
그래픽 API(104)는 그래픽 애플리케이션(102)에 그래픽 엔진(106)의 서비스를 제공한다. 실시예들에서 이것은 여러 가지 루틴, 데이터 구조, 오브젝트 클래스, 및/또는 프로토콜을 통해 제공될 수 있다. 그와 같은 그래픽 API(104) 이용을 본 명세서에서는 "드로우 콜(draw call)"이라 지칭한다. 실시예들은 (이것으로 한정되는 것은 아니지만) 상업적으로 이용가능한 API를 이용할 수 있다. 그와 같은 API의 예로는 OpenGL, DirectX, 등이 있다.
일반적인 동작 시에, 그래픽 애플리케이션(102)은 그래픽 생성에 있어 다중 렌더링 타겟을 이용할 수 있다. 렌더링 타겟은 그래픽 애플리케이션(102)이 그래픽 API(104)를 통해 개시하는 드로우잉 동작에 영향을 받는 (그래픽 엔진(106)에 의해 유지되는) 버퍼이다.
다중 렌더링 타겟은 여러 가지 방식으로 이용될 수 있다. 예컨대, 그래픽 애플리케이션(102)은 각각의 렌더링 타겟이 특정 효과에 대응하는 다중 렌더링 타겟을 이용할 수 있다. 예시적인 효과들은 (이것으로 한정되는 것은 아니지만) 모션과 관련된 새도우잉(shadowing), 포그(fog), 라이팅(lighting), 블러링(blurring) 등이 있다. 추가적으로 또는 대안적으로 다중 렌더링 타겟 각각은 하나 이상의 렌더링된 오브젝트 또는 프리미티브(primitive)에 대응할 수 있다. 그러나, 실시예들은 렌더링 타겟의 이러한 예시적인 사용으로 한정되지 않는다.
그래픽 엔진(106)은 그래픽 애플리케이션(102)을 위해 그래픽 동작을 수행한다. 전술한 바와 같이, 그와 같은 동작은 그래픽 API(104)를 통해 수신 및 처리된 드로우 콜에 응답하여 수행될 수 있다. 예시적인 동작들은 디스플레이 장치에 이미지(프레임)를 렌더링하고 출력하는 것을 포함한다. 따라서, 그래픽 엔진(106)은 그래픽 파이프라인을 이용한다. 전술한 바와 같이, 그래픽 엔진(106)은 하드웨어 및/또는 소프트웨어의 임의의 조합으로 구현될 수 있다. 따라서, 실시예들에서 그래픽 엔진(106)은 그래픽 처리 장치(GPU)를 포함한다.
도 1은 그래픽 분석 도구(110)가 그래픽 API(104)와 그래픽 엔진(106) 모두에 결합된 것을 도시한다. 그래픽 분석 도구(110)는 그래픽 애플리케이션의 분석을 수반하는 동작을 수행할 수 있다. 이를 위해, 그래픽 분석 도구(110)는 그래픽 애플리케이션(102)에 의해 만들어진 드로우 콜을 획득할 수 있다. 그와 같은 드로우 콜에 기초하여, 그래픽 분석 도구(110)는 그래픽 엔진(106)을 이용하여 드로우 콜에 관한 동작 정보를 생성할 수 있다. 그와 같은 정보는 (이것으로 한정되는 것은 아니지만) 오버드로우(overdraw) 이미지와 픽셀 히스토리를 포함할 수 있다.
또한, 그래픽 분석 도구(110)는 그래픽 엔진(106)에 의해 렌더링된 프레임을 획득(또는 캡처)할 수 있다. 또한, 그래픽 분석 도구(110)는 그와 같은 캡처된 프레임에 관련된 드로우 콜을 획득할 수 있다. 더욱이, 그래픽 분석 도구(110)는 애플리케이션(102)에 대응하는 프레임이 생성되는 속도를 제어할 수 있다. 그와 같은 제어를 통해, 프레임은 원하는 속도로 단계화될 수 있다. 그와 같은 속도는 사용자에 의해 설정될 수 있다.
도 1을 참조로 전술한 바와 같이, 그래픽 분석 도구(110)는 그래픽 애플리케이션의 분석을 수반하는 동작을 수행할 수 있다. 도 2는 그래픽 분석 도구(110)에 포함될 수 있는 예시적인 구현(200)의 도면이다. 도 2는 그래픽 API 인터셉터 모듈(interceptor module)(202), 그래픽 API 콜 로그 데이터베이스(call log database)(204), 재구성 모듈(206), 오버드로우 분석 모듈(207), 픽셀 히스토리 분석 모듈(208), 재생 모듈(210), 및 사용자 인터페이스 모듈(210)을 포함하는 구현(200)을 도시한다. 이들 구성요소는 하드웨어 및/또는 소프트웨어의 임의의 조합으로 구현될 수 있다.
그래픽 API 인터셉터 모듈(202)은 (그래픽 애플리케이션(102)과 같은) 그래픽 애플리케이션이 생성하는 그래픽 API 동작(본 명세서에서는 드로우 콜이라 지칭함)을 복사한다. 더욱이, 그래픽 API 인터셉터 모듈(202)은 복사된 드로우 콜을 그래픽 API 콜 로그 데이터베이스(204)로 전송한다. 그러면, 그래픽 API 콜 로그 데이터베이스(204)는 이들 수신된 드로우 콜을 저장한다.
그래픽 API 콜 로그 데이터베이스(204)는 수신된 드로우 콜을 여러 가지 방식으로 저장할 수 있다. 예컨대, 그래픽 API 콜 로그 데이터베이스(204)는 드로우 콜을 시간 순으로 저장할 수 있다. 더욱이, 그와 같은 시간순 저장은 다중 렌더링 타겟 각각에 대한 드로우 콜로 정렬될 수 있다.
재구성 모듈(206)은 API 콜 로그 데이터베이스(204)에 저장된 드로우 콜에 기초하여 여러 가지 이미지(프레임)를 생성할 수 있다. 그와 같은 재구성은 그래픽 엔진(106)과 같은 그래픽 엔진의 이용을 포함한다. 더욱이, 그와 같은 이미지를 생성하는데 있어 재구성 모듈(206)은 그래픽 엔진에게 특정 설정을 이용하라고 지시할 수 있다. 예컨대, 렌더링 이미지가 발생된 특정 이벤트(예컨대, 오버드로우)의 수를 나타내도록 설정이 변경될 수 있다. 또한, 재구성 모듈(206)은 그래픽 엔진 내에서의 여러 가지 파이프라인 테스트를 활성화하거나 비활성화할 수 있다.
오버드로우 분석 모듈(207)은 특정 드로우 콜과 연관된 오버드로우를 (렌더링 타겟 기반으로) 판정한다. 이것은 재구성 모듈(206)로 하여금 선택된(사용자가 선택하거나 자동적으로 선택된) 드로우 콜과 렌더링 타겟 기반의 오버드로우 이미지를 생성하라고 지시하는 것을 포함할 수 있다. 그와 같은 특징에 관한 예시적인 동작은 도 4를 참조하여 후술한다.
픽셀 히스토리 분석 모듈(208)은 픽셀이 기입("터치")되게 하는 드로우 콜의 시퀀스를 결정한다. 이것은 재구성 모듈(206)로 하여금 여러 가지 설정에 따라 특정 이미지를 생성하라고 지시하는 것을 포함할 수 있다. 그와 같은 특징에 관한 예시적인 동작은 도 5, 6 및 7을 참조하여 후술한다.
사용자 인터페이스 모듈(210)은 그래픽 분석 도구(110)와의 사용자 상호작용(interaction)을 제공한다. 예컨대, 실시예들에서 사용자 인터페이스 모듈(210)은 본 명세서에서 설명되는 기법의 효율적인 사용자 동작을 제공하는 그래픽 사용자 인터페이스를 제공한다.
프레임 저장 모듈(212)은 그래픽 엔진(예컨대, 그래픽 엔진(106))이 생성한 하나 이상의 프레임(이미지)을 저장한다. 이들 프레임은 디스플레이 장치(미도시) 상에 출력될 수 있는 위치에 대응하는 다수의 픽셀을 포함한다. 프레임들은 여러 가지 형식으로 되어 있을 수 있다. 예시적인 형식들은 (이것으로 한정되는 아니지만) 여러 가지 RGB 및 CMYK 형식들을 포함한다. 또한 프레임 캡처 데이터베이스(108)는 여러 가지 압축 및/또는 인코딩 방식을 이용하여 프레임(들)을 저장할 수 있다.
실시예들에서, 이들 프레임은 본 명세서에서 설명되는 기법에 따라서 생성될 수 있다. 예컨대, 프레임 저장 모듈(212)은 애플리케이션(102), 그래픽 API(104) 및 그래픽 엔진(106)의 정상적인 동작을 통해 생성된 프레임을 저장할 수 있다. 또한 프레임 저장 모듈(212)은 오버드로우 이미지 프레임, 픽셀 히스토리 프레임, 및 기타 다른 유형의 프레임을 포함하는 프레임을 저장할 수 있다.
실시예들은 그래픽 관련 정보를 사용자에게 디스플레이하는 사용자 인터페이스를 제공한다. 도 3은 예시적인 사용자 인터페이스(인터페이스 콘솔이라고도 함)(300)의 도면이다. 인터페이스 콘솔(300)은 사용자가 그래픽 동작과 연관된 여러 가지 정보를 보게 한다. 도 3에 도시된 바와 같이, 인터페이스 콘솔(300)은 드로우 콜 필드(302), 렌더링 타겟 필드(304), 이미지 렌더링 필드(306) 및 픽셀 히스토리 필드(308)를 포함한다.
렌더링 타겟 필드(304)는 특정 이미지와 연관된 다중 렌더링 타겟을 나타낸다. 실시예들에서, 그와 같은 렌더링 타겟은 아이콘이나 기타 다른 그래픽 표현으로 나타낼 수 있다. 사용자는 GUI 상호작용을 통해 (예컨대, 커서 위치 설정과 더블 클릭에 의해) 특정 드로우 콜을 선택할 수 있다.
실시예들에서, 드로우 콜 필드(302)는 드로우 콜(예컨대, 필드(304)에서 선택된 렌더링 타겟에 대응하는 드로우 콜)을 시간순(예컨대, 좌측에서 우측) 바 차트(bar chart) 형태로 나타낸다. 따라서, 각각의 바는 특정 드로우 콜에 대응한다. 더욱이, 각각의 바의 높이는 해당 드로우 콜에 의해 유발되는 그래픽 엔진 동작(예컨대, 파이프라인 동작)의 수를 나타낸다. 실시예들에서, 사용자는 GUI 상호작용을 통해 (예컨대, 커서 위치 설정과 더블 클릭에 의해) 특정 드로우 콜을 선택할 수 있다.
선택된 드로우 콜에 기초하여, 사용자는 이미지 렌더링 필드(306) 내의 오버드로우 이미지를 볼 수 있다. 오버드로우 이미지와 관련된 특징은 도 4를 참조로 후술한다. 그와 같은 오버드로우 이미지로부터 사용자는 분석을 위한 특정 픽셀을 선택할 수 있다. 그와 같은 픽셀 선택으로부터, 픽셀 히스토리 이미지가 이미지 렌더링 필드(306)에 디스플레이될 수 있다. 더욱이, 드로우 콜의 해당 픽셀 히스토리가 픽셀 히스토리 필드(308)에 디스플레이될 수 있다. 픽셀 히스토리에 관한 예시적인 세부 사항은 도 5 내지 7을 참조로 제공한다.
여러 가지 실시예의 동작은 이하의 도면과 수반하는 예들을 참조로 더 설명한다. 도면들 중 일부는 논리 흐름을 포함할 수 있다. 본 명세서에서 제시된 그러한 도면은 특정 논리 흐름을 포함할 수 있지만, 논리 흐름은 본 명세서에서 설명되는 일반적인 기능이 구현될 수 있는 방법의 일례를 제공할 뿐임을 잘 알 것이다. 더욱이, 주어진 논리 흐름은 달리 명시하지 않는 한 반드시 제시된 순서로만 실행될 필요가 없다. 게다가 주어진 논리 흐름은 하드웨어 요소, 하나 이상의 프로세서에 의해 실행되는 소프트웨어 구성요소, 또는 이들의 임의의 조합으로 구현될 수 있다. 실시예들은 이러한 경우로 한정되는 것은 아니다.
실시예들은 그래픽 애플리케이션 분석을 위한 다양한 기법을 제공한다. 그와 같은 기법은 오버드로우, 픽셀 히스토리, 드로우 콜 등의 분석을 수반한다. 더욱이, 그와 같은 기법은 이미지 재구성과 표현을 교대로 이용할 수 있다.
이러한 재구성과 표현의 교대는 성능 관련 정보가 그래픽 장면으로부터 보다 신속하게 추출될 수 있다는 장점을 갖는다. 그와 같은 재구성과 표시의 교대의 예는 렌더링 타겟 기반으로 수행되는 오버드로우 분석을 수반한다. 이러한 분석으로부터, 대응하는 픽셀 히스토리가 생성될 수 있다. 이러한 특징들은 일련의 그래픽 작업으로부터, 다른 경우에서 은닉된 정보를 추출할 수 있다. 그와 같은 오버드로우 분석 및 픽셀 히스토리 생성과 관련된 예에 대해서는 도 4를 참조로 아래에 설명한다.
도 4는 하나 이상의 실시예에 의해 실행되는 동작을 나타낼 수 있는 논리 흐름(400)을 도시한다. 이 흐름은 도 1 및 2의 맥락에서 설명한다. 그러나 이 흐름은 다른 맥락에서 이용될 수 있다. 도 4는 특정 시퀀스를 도시하지만 다른 시퀀스가 이용될 수 있다. 또한, 도시된 동작들은 여러 가지 병렬적 및/또는 순차적 조합으로 수행될 수 있다.
블록(402)에서, 그래픽 API 콜(드로우 콜)의 시퀀스가 저장된다. 이 시퀀스는 특정 이미지(프레임)에 해당할 수 있다. 도 2의 맥락에서, 이것은 API 인터셉터 모듈(202)이 이들 드로우 콜을 인터셉트하고 그래픽 API 콜 로그 데이터베이스(204)가 그것들을 저장하는 것을 수반할 수 있다.
블록(404)에서, 저장된 API 콜의 시퀀스는 다중 렌더링 타겟 각각에 대한 시퀀스로 분류된다. 도 2를 참조로 설명하면, 이것은 재구성 모듈(206)이 API 콜 각각으로부터 렌더링 타겟을 결정하는 것을 수반할 수 있다. 실시예들에서, 이를 위해 재구성 모듈(206)은 그래픽 엔진(예컨대, 그래픽 엔진(106))을 이용할 수 있다.
이들 렌더링 타겟 그룹 각각에 대해, 블록(406)에서 오버드로우 이미지가 생성된다. 다시 도 2를 참조로 설명하면, 이것은 재구성 모듈(206)이 그래픽 엔진(예컨대, 그래픽 엔진(106))으로 하여금 렌더링 타겟 각각에 대해 드로우 콜을 수행하라고 지시하는 것을 수반할 수 있다. 그러나, 그래픽 엔진은 통상적으로 동작하는 대신, 픽셀 값이 누적되도록 구성된다. 특히, 그래픽 엔진은 드로우 콜이 해당 렌더링 타겟 픽셀 값이 기입("터치")될 때마다 이 값이 누적되게(픽셀 히트 카운트(hit count)를 증가) 하도록 구성될 수 있다. 따라서, 각 렌더링 타겟에서는 픽셀마다 카운트가 발생된다. 이러한 카운트는 픽셀이 얼마나 많이 터치되었는지를 나타낸다.
블록(408)에서, 렌더링 타겟들 중 하나가 선택된다. 이 선택은 사용자에 의한 것이거나 자동적인 것일 수 있다. 실시예들에서, 이 렌더링 타겟은 디스플레이 상에 (예컨대, 아이콘이나 기타 다른 그래픽 표현으로) 제공된 다중 렌더링 타겟 리스트로부터 선택될 수 있다.
블록(409)에서, 선택된 렌더링 타겟에 대한 오버드로우 이미지는 시각적으로 향상된다. 이러한 향상은 오버드로우 이미지의 동적 범위를 증가시키는 것을 수반할 수 있다. 그와 같은 향상에 관한 상세는 도 8을 참조로 후술한다.
블록(410)에서, 오버드로우 이미지는 선택된 렌더링 타겟에 대해 디스플레이된다. 전술한 바와 같이, 오버드로우 이미지는 픽셀이 터치된 횟수를 나타낸다. 실시예들에서, 이러한 횟수는 디스플레이된 오버드로우 이미지에서 픽셀 휘도(brightness)로 나타낼 수 있다. 그러나 실시예들은 이러한 특징으로 한정되는 것은 아니다.
블록(412)에서, 이 오버드로우 이미지의 하나 이상의 해당 픽셀이 선택될 수 있다. 이러한 선택은 사용자에 의한 것이거나 자동 기법을 통한 것일 수 있다. 사용자 선택은 그래픽 사용자 인터페이스(GUI)를 통해 오버드로우 이미지와 상호작용하는 것을 수반할 수 있다. 예컨대, 사용자는 커서를 통해, 그래픽 십자선(cross-hairs)을 통해, 수치 좌표의 입력을 통해, 그리고/또는 기타 다른 기법을 통해 픽셀을 선택할 수 있다. 이와 달리, 자동 선택은 픽셀의 오버드로우 값에 기초하여 픽셀(들)을 자동적으로 선택하는 것을 수반할 수 있다. 예컨대, 최고 터치 수를 나타내는 픽셀이 자동적으로 선택될 수 있다.
블록(414)에서, 사용자를 위해 하나 이상의 선택된 픽셀 각각에 대한 픽셀 히스토리가 획득된다. 픽셀 히스토리는 그 픽셀에 영향을 미친(또는 기입을 유발한) 각 드로우 콜을 포함할 수 있다. 실시예들에서, 이들 드로우 콜은 블록(408)에서 선택된 렌더링 타겟에 영향을 준 것들로만 제한될 수 있다. 그러나, 실시예들은 추가적으로 또는 대안적으로 다른 렌더링 타겟에 영향을 주는 해당 드로우 콜을 제공할 수 있다.
블록(416)에서, 이 픽셀 히스토리가 디스플레이될 수 있다. 실시예들에서, 이 디스플레이는 각각이 드로우 콜을 나타내는 일련의 아이콘 형식일 수 있다. 사용자는 그와 같은 아이콘을 선택(예컨대, 더블 클릭)하여 드로우 콜에 관한 상세 정보를 볼 수 있다. 그러나, 픽셀 히스토리를 디스플레이하는 다른 기법(예컨대, 텍스트 리스팅)이 이용될 수 있다.
도 4의 흐름은 장면 내의 가장 복잡한 픽셀로부터 정보를 추출하는 직접적인 방법을 제공한다는 장점을 갖는다. 예컨대, 블록(410)에서 디스플레이된 오버드로우 이미지로부터, 비교적 많은 횟수로 터치되었던 픽셀(높은 복잡성을 갖는 픽셀이라고 지칭하기도 함)이 선택될 수 있다. 전술한 바와 같이, 그와 같은 픽셀은 디스플레이된 휘도를 통해 분명하게 될 수 있다.
높은 복잡성을 갖는 픽셀을 선택하면, 사용자는 픽셀에 영향을 미친 API 콜(픽셀 히스토리)을 볼 수 있다. 게다가, 사용자는 이미지의 (오버드로우 표시가 아닌) 정상적 표시를 볼 수 있다. 드로우 콜 분석을 통해, 사용자는 더욱 효율적인 API 콜 세트가 만들어질 수 있는지 여부를 판정할 수 있다. 따라서, 그와 같은 픽셀의 식별을 통해 개발자는 애플리케이션을 개선하여 픽셀의 드로우되는 횟수를 줄일 수 있다. 이것은 그래픽 애플리케이션 성능을 향상시킨다는 장점이 있다.
전술한 바와 같이, 실시예들은 픽셀 관련 정보의 추출을 제공한다. 또한, 실시예들은 사용자에게 드로우 콜이 픽셀로 하여금 터치되도록 하는 횟수에 대해 통지할 수 있다. 단일의 드로우 콜은 2회 이상 특정 픽셀을 터치할 수 있다. 예컨대, 그래픽 엔진(예컨대, 그래픽 엔진(106))으로 하여금 3차원 오브젝트를 렌더링하라고 지시하는 드로우 콜은 중첩하는 픽셀 위치를 갖는 그래픽 엔진 렌더링 표면을 수반할 수 있다. 일례로서, 렌더링된 입방체는 중첩되는 정면과 배면을 가질 수 있다. 실시예들은 픽셀이 특정 드로우 콜에 의해 터치될 때마다 (특정 렌더링 타겟에 대해) 검출하고 나타낼 수 있다. 그와 같은 특징을 수반하는 예는 도 5를 참조하여 아래에 설명된다.
도 5는 하나 이상의 실시예에 의해 실행되는 동작을 나타낼 수 있는 논리 흐름(500)을 도시한다. 이 흐름은 도 1 및 2의 맥락에서 설명한다. 그러나, 이 흐름은 다른 맥락에서 이용될 수 있다. 도 5는 특정 시퀀스를 도시하지만 다른 시퀀스가 이용될 수 있다. 또한, 도시된 동작들은 여러 가지 병렬적 및/또는 순차적 조합으로 수행될 수 있다.
블록(502)에서, 렌더링 타겟이 선택된다. 이 선택은 사용자에 의한 것일 수 있다. 이와 달리 이 선택은 자동적인 것일 수 있다. 또한, 블록(504)에서, 하나 이상의 픽셀이 선택된다. 이 픽셀은 여러 가지 방식으로 선택될 수 있다. 예컨대, 이 픽셀은 도 4를 참조로 전술한 바와 같이, 오버드로우에 기초하여 사용자에 의해 선택되거나 자동적으로 선택될 수 있다. 그러나, 실시예들은 이러한 맥락으로 한정되는 것은 아니다.
블록(506)에서, 사용자는 선택된 픽셀에 대응하는 드로우 콜을 선택한다. 예컨대, 사용자는 이 드로우 콜을 도 4의 블록(414)에서 생성된 픽셀 히스토리와 같은 픽셀 히스토리에서 식별된 다중 드로우 콜(예컨대, 드로우 콜의 시퀀스)로부터 선택할 수 있다. 따라서, 이것이 시퀀스에서의 첫 번째 선택이라면 실시예들은 블록(507)에서 이것을 초기 선택 드로우 콜로 지정한다.
이 시점에서, 블록(509)에서 (선택된 렌더링 타겟에서의) 선택된 픽셀이 터치된 횟수에 관한 정보가 결정될 수 있다. 실시예들에서, 이 결정은 선택된 드로우 콜에 대한 것일 수 있다. 이와 달리, 이 결정은 블록(507)에서 지정된 초기 드로우 콜로 시작하고 블록(506)에서 선택된 드로우 콜로 끝나는 드로우 콜의 시퀀스에 대한 것일 수 있다.
도 5에 도시된 바와 같이, 그와 같은 결정은 다중 패스(pass)를 수반할 수 있다. 예컨대, 제1 패스는 임의의 그래픽 파이프라인 테스트를 활성화하지 않고 드로우 콜(들)을 수행하는 것을 수반할 수 있다. 또한, 제2 패스는 특정 그래픽 파이프라인 테스트를 활성화한 상태에서 드로우 콜(들)을 수행하는 것을 수반할 수 있다. 더욱이, 제3 패스는 알파 블렌딩(alpha blending)을 이용하여 드로우 콜(들)을 수행하는 것을 수반할 수 있다. 블록(509) 내의 이들 3개의 패스는 예시의 목적으로 기술되는 것이며 한정적인 것이 아니다. 따라서, 실시예들은 패스들의 다른 조합 및/또는 다른 시퀀스를 이용할 수 있다. 이들 패스에 대해 더 자세한 것은 도 6을 참조하여 이하에 제공한다.
블록(510)에서, 사용자는 다음 드로우 콜을 선택할 수 있다. 이 다음 드로우 콜은 선택된 렌더링 타겟 내의 선택된 픽셀에 영향을 미치는 드로우 콜의 시간순 시퀀스 내에 있을 수 있다. 예컨대, 이 다음 드로우 콜은 (블록(506) 또는 블록(510)에서) 가장 최근에 선택된 드로우 콜에 후속하는 드로우 콜일 수 있다. 도 5에 도시된 바와 같이 다음 드로우 콜이 선택되면 동작은 블록(509)으로 되돌아 간다.
따라서 도 5의 특징들은 사용자로 하여금 관심있는 하나 이상의 드로우 콜을 선택하고, 특정 픽셀에 대한 이것의(이들의) 영향을 분석하게 한다. 그와 같은 특징들은 특정 렌더링 타겟의 임의의 픽셀에 대한 장면 복잡성이 평가되게 한다는 장점이 있다. 이 정보는 사용자가 특정 장면의 복잡성을 감소시켜야 할지 또는 애플리케이션 설정을 변경하여 특정 3D 동작의 성능을 증가시켜야 할지를 결정하는 것을 도울수 있다는 장점이 있다.
전술한 바와 같이, (선택된 렌더링 타겟에서의) 선택된 픽셀이 터치된 횟수에 관한 결정은 다중 패스에서 수행될 수 있다. 그와 같은 다중 패스의 예가 도 6에 제공된다.
특히, 도 6은 제1 패스(602), 제2 패스(604) 및 제3 패스(606)를 포함하는 흐름도(600)이다. 이들 패스 각각은 다중 동작들을 수반한다. 예컨대, 도 6은 블록(610-614)을 포함하는 제1 패스(602)를 도시한다. 블록(610)에서, 특정 그래픽 파이프라인 테스트(예컨대, 시저(scissor) 테스트, 장방(rectangle) 테스트, Z 테스트, 스텐실(stencil) 테스트, 및/또는 알파 테스트)는 디스에이블된다. 블록(612)에서, 이들 테스트가 디스에이블된 동안에 드로우 콜(들)이 그 선택된 픽셀을 얼마나 많이 터치하였는지가 판정된다. 이는 변경된 렌더링 동작으로 드로우 콜(들)을 수행하는 것을 수반할 수 있다. 예컨대, 픽셀 쉐이더(shader) 코드는 픽셀이 드로우 콜에 의해 터치될 때마다 선택된 픽셀의 음영(shading)이 증가되도록 변경될 수 있다. 그러나, 실시예들은 이 기법으로 한정되는 것은 아니다.
블록(614)에서, 이러한 판정의 결과가 사용자에게 출력된다. 이들 결과는 그래픽 형식으로 출력될 수 있다(예컨대, 선택된 픽셀 위치에서 해당 휘도, 쉐이딩 또는 투명도 레벨로서 디스플레이될 수 있다). 대안적으로, 이들 결과는 텍스트 형식으로 출력될 수 있다.
도 6은 블록(620-632)을 포함하는 제2 패스(604)를 도시한다. 블록(620)에서, 사용자는 특정 테스트를 활성화할 수 있다. 예컨대, 사용자는 레인지드(ranged) 시저 테스트, z 테스트 또는 스텐실 테스트를 활성화할 수 있다. 블록(622)에서, 테스트가 선택되었는지의 여부가 판정된다. 선택되었다면, 동작은 블록(624)으로 진행한다. 선택되지 않았다면, 블록(640)에서 동작은 제3 패스로 진행한다.
블록(624)에서, 선택된 렌더링 타겟이 클리어된다. 이 다음에, 블록(626)에서, 선택된 테스트는 그래픽 엔진에서 인에이블된다. 블록(628)에서, 드로우 콜(들)이 수행된다.
블록(630)에서, 이들 드로우 콜(들)의 결과가 사용자에게 출력된다. 이들 결과는 그래픽 형식으로 출력될 수 있다(예컨대, 선택된 픽셀 위치에서 해당 휘도 또는 투명도 레벨로서 디스플레이될 수 있다). 대안적으로, 이들 결과는 텍스트 형식으로 출력될 수 있다. 결과가 제로이면(픽셀 값이 없다면), 이것은 선택된 테스트가 호출될 때마다 실패했다는 것을 나타낸다. 그러나, 결과가 제로가 아니면, 선택된 테스트는 그것이 호출될 때 적어도 한 번은 통과했다.
블록(632)으로 나타낸 바와 같이, 사용자는 다른 테스트를 선택할 수 있다. 만약 그렇다면, 동작은 블록(620)으로 되돌아 간다. 그렇지 않으면, 블록(640)에서 동작은 제3 패스로 진행한다.
도 6은 블록(640)을 포함하는 제3 패스를 도시한다. 이 블록에서, 정상적인 렌더링이 수행되어 픽셀의 출력 컬러를 결정한다.
도 6의 흐름에 더하여, 픽셀이 터치되었던 횟수에 관한 여러 가지 비한정적인 예들이 이제 제공된다. 예컨대, "터치" 수는 렌더링된 형상이 픽셀과 교차하는 횟수일 수 있다. 예컨대, 렌더링되고 있는 형상이 양면 삼각형(two sided triangles)을 포함하는 구인 경우, 중심 픽셀은 한번은 정면에 대해, 또 한번은 배면에 대해, 2번의 오버드로우 카운트를 가질 것이다. (이 경우에 z-테스트는 디스에이블된다.) 더욱이, 렌더링되고 있는 형상이 단면 삼각형(one sided triangles)을 포함하는 구인 경우, 중심 픽셀은 정면에 대해 한번, 배면에 대해서는 제로(이것이 배면 컬링(back-face culling)되었기 때문임. (이 경우에 컬링이 인에이블됨))의, 한번의 오버드로우 카운트를 가질 것이다.
더욱이, "터치" 수는 픽셀이 실제로 버퍼에 기입된 횟수(형상이 z-테스트 거부된 횟수는 폐기)일 수 있다. 예컨대, 보는 사람의 관점에서 상기 3개의 삼각형을 서로 렌더링하는 경우, 터치 수는 드로우 순서에 따라 다를 것이다. 예컨대, 처음에는 가장 먼 쪽, 그 다음에 가운데 쪽, 그 다음에 가장 가까운 쪽이 드로우되는 경우, 3개 삼각형 모두가 중첩되는 픽셀에 대해 카운트는 3일 것이다. 그러나, 처음에 가장 가까운 쪽, 그 다음에 가운데 쪽, 그 다음에 가장 먼 쪽이 드로우되는 경우, 동일한 픽셀에 대해 카운트는 1일 것이다. 이는 후자의 2개는 z-테스트 거부되었을 수 있기 때문이다.
전술한 바와 같이, 실시예들은 사용자로 하여금 특정 픽셀에 대한 드로우 콜의 효과를 판정할 수 있다. 더욱이, 실시예들은 드로우 콜을 디스에이블하는 것을 허용한다. 예컨대, 사용자는 하나 이상의 드로우 콜을 디스에이블 하고, 이 디스에이블의 픽셀 처리에 대한 영향을 판정할 수 있다. 따라서, 연산 차이가 판정될 수 있다. 예컨대, 장면 렌더링이 더 빠르게 되는지 여부가 판정될 수 있다. 또한, 사용자는 렌더링된 이미지에 대한 디스에이블링의 시각적 영향을 판정할 수 있다. 예컨대, 드로우 콜(들)을 디스에이블하는 것이 장면을 더 마음에 들지 않게 하는지를 판정할 수 있다. 다음에 그와 같은 특징과 관련된 예를 도 7을 참조하여 설명한다.
도 7은 하나 이상의 실시예에 의해 실행되는 동작을 나타낼 수 있는 논리 흐름(700)을 도시한다. 이 흐름은 도 1 및 2의 맥락에서 설명한다. 그러나, 이 흐름은 다른 맥락에서 이용될 수 있다. 도 7은 특정 시퀀스를 도시하지만 다른 시퀀스가 이용될 수 있다. 또한, 도시된 동작들은 여러 가지 병렬적 및/또는 순차적 조합으로 수행될 수 있다.
도 7에 도시된 바와 같이, 블록(702)에서, 렌더링 타겟이 선택된다. 이 선택은 사용자에 의한 것이거나 자동 기법을 통한 것일 수 있다. 또한, 블록(704)에서, 픽셀이 선택된다. 이 픽셀은 여러 가지 방식으로 선택될 수 있다. 예컨대, 픽셀은 도 4를 참조로 전술한 바와 같이 사용자에 의해 선택되거나 자동적으로 선택될 수 있다. 그러나 실시예들은 이러한 맥락으로 한정되는 것은 아니다.
블록(706)에서, 사용자는 디스에이블될 하나 이상의 드로우 콜을 선택한다. 이 선택은 드로우 콜의 시퀀스로부터 선택하는 것일 수 있다. 블록(708)에서, 드로우 콜의 시퀀스에 대한 픽셀 히스토리가 결정된다. 실시예들에서, 이것은 도 5를 참조로 전술한 동작을 수행하는 것을 수반할 수 있다. 따라서, 디스에이블된 드로우 콜(들)을 이용하여 픽셀이 터치된 횟수가 판정될 수 있다. 도 5를 참조로 전술한 바와 같이, 그와 같은 판정은 여러 가지 그래픽 파이프라인 테스트(들)(예컨대, 시저 테스트, 장방 테스트, Z 테스트, 스텐실 테스트, 및/또는 알파 테스트)이 활성화되거나 또는 비활성화된 상태로 이루어질 수 있다. 디스에이블된 드로우 콜(들)은 렌더링되지 않으므로 후속 드로우 콜에 대한 그와 같은 테스트는 상이한 테스트 결과를 가질 수 있다. 따라서, 드로우 콜을 디스에이블하면 동적 픽셀 히스토리를 제공한다.
블록(710)에서, 선택된 드로우 콜(들)이 디스에이블된 상태에서 드로우 콜 의 시퀀스에 대한 이미지가 렌더링된다. 블록(712)에서 이 렌더링된 이미지가 디스플레이된다.
전술한 바와 같이, 실시예들은 오버드로우 이미지를 제공한다. 더욱이, 실시예들은 사용자가 선택한 드로우 콜이 오버드로우 이미지의 구성을 분해하고 렌더링된 픽셀을 더 깊이 조사하도록 인에이블 또는 디스에이블하는 능력을 제공한다.
오버드로우 이미지들은 시각적으로 식별하기 어려운 미세한 차이를 포함할 수 있다. 예컨대, 하나의 영역은 인접 영역보다 약간 더 어두울 수 있다(따라서 이들 영역이 터치되었던 횟수의 차이를 나타냄). 실시예들은 이러한 차이들을 시각적으로 향상시킬 수 있다. 예컨대, 도 4의 블록(409)에서 오버드로우 이미지가 향상된다.
그와 같은 향상은 오버드로우 이미지의 동적 범위를 증가시킬 수 있다. 그 결과, 오버드로우 이미지들에서의 미세한 차이는 보기가 훨씬 더 쉽게 된다. 동적 범위의 그러한 증가를 제공하기 위해 여러 가지 기법이 이용될 수 있다. 예컨대, 실시예들은 클램핑 동작을 이용할 수 있다.
도 8은 하나 이상의 실시예에 의해 실행되는 동작을 나타낼 수 있는 논리 흐름(800)을 도시한다. 도 8은 특정 시퀀스를 도시하지만 다른 시퀀스도 이용될 수 있다. 또한, 도시된 동작들은 여러 가지 병렬적 및/또는 순차적 조합으로 수행될 수 있다.
블록(802)에서, 오버드로우 이미지가 제공된다. 블록(804)에서, 오버드로우 이미지의 최소값 및 최대값이 결정된다.
블록(806)에서, 최소값 및 최대값에 기초하여 행렬이 생성된다. 그리고 나서, 블록(808)에서 오버드로우 이미지는 행렬을 이용하여 처리된다. 이 처리는 향상된 오버드로우 이미지를 생성하고, 이는 블록(810)에서 디스플레이될 수 있다.
이제 이 기법의 예가 제공된다. 이 예는 5×5 행렬을 포함한다. 이것은 이미지 데이터에 대해 선형 동작을 수행하는 표준 기법이다. 픽셀 값이 [0, 255] 범위에 있고 행렬값이 부동 소수점 스케일 인자라고 가정하면 다음의 공식이 이용된다.
Figure pat00001
이것은 기본 행렬 곱셈 연산으로서, 원래의 RGBA 이미지 컬러(Ir, Ig, Ib, Ia)에 5×5 행렬 M이 곱해져 조정된 RGBA 이미지 컬러(Or, Og, Ob, Oa)를 연산한다. M의 20개 변수 요소의 값을 조정함으로써 많은 컬러 조정 작업이 수행될 수 있다. 오버드로우 이미지의 경우, 행렬값은 관심 데이터의 범위를 확장하기 위해 오버드로우 이미지를 스케일링하도록 조정된다.
예로서, 전체 렌더링 타겟 내의 모든 픽셀이 20회 기입되었다고(전체 렌더링 타겟 쿼드가 서로의 상단에서 모두 혼합되었다고) 가정하고, 그 다음에 3개의 작은 삼각형이 렌더링 타겟에 더 기입되고 그 중 2개는 일부 중첩되었다고 가정한다. 이 예에서, 대부분의 픽셀은 20의 오버드로우를 가질 것이며, 몇 개의 픽셀(작은 삼각형에 의해 터치된 것들)은 21의 오버드로우를 가질 것이며, 몇 개의 픽셀(중첩된 2개의 작은 삼각형의 교차점에 있었던 것들)은 22의 오버드로우를 가질 것이다.
사용자가 이 이미지를 정상적으로 보았다면, 어둡게 보일 것이며, 21과 22의 오버드로우 값을 갖는 프레임 부분을 보기는 극히 어려울 것이다. 이 실시예에서 조정된 이미지를 보면 정상적인 이미지 내의 픽셀 각각에는 행렬 M이 곱해져 컬러가 조정된 오버드로우 이미지를 연산한다. 여기서 사용된 값은 8 비트 컬러 채널(원래의 이미지와 오버드로우 이미지의 RGBA 값 각각은 [0, 255]의 값을 가짐)을 가정하나, 이 기법은 이 경우에 한정되는 것은 아니고 다른 컬러 깊이를 이용하더라도 작용할 것이다.
Figure pat00002
Figure pat00003
이 예를 보면 이하의 행렬에는, 이미지에 3개의 고유한 원래의 값이 있다.
Figure pat00004
이들은 행렬 곱셈에 따라 하기 변환을 겪게 된다.
Figure pat00005
Figure pat00006
이므로, 따라서
Figure pat00007
중간의 (21) 값에 대해서는 다음이 수행된다.
Figure pat00008
따라서,
Figure pat00009
가장 높은 (22) 값에 대해서는 다음이 수행된다.
Figure pat00010
따라서,
Figure pat00011
상기 기법은 작은 범위의 값이 가시성이 최대화되도록 최대 범위로 확장되게 하는 장점을 갖는다. 이 기법은 예시적인 것이며 한정적인 것이 아니다. 따라서, 다른 기법을 이용하여 이미지의 가시성을 증가시킬 수 있다.
전술한 바와 같이, 실시예들의 구성요소들(예컨대, 도 1 및 2의 구성요소들)은 하드웨어 및/또는 소프트웨어의 임의의 조합으로 구현될 수 있다. 따라서, 도 10은 본 명세서에서 설명된 본 발명의 기능이 구현될 수 있는 예시적인 플랫폼(1002)의 도면이다.
전술한 바와 같이, 실시예들은 프레임을 캡처하는 기법을 제공한다. 또한, 실시예들은 애플리케이션에 의해 발생되는 그래픽 프레임에 대한 싱글 스테핑(single stepping)(예컨대, 한 번에 하나의 그래픽 프레임)에 대한 기법을 제공한다. 그와 같은 특징은 애플리케이션의 작업부하가 "작동 중에(on the fly)" 캡처되게 하여, 관심있는 정확한 프레임이 캡처되게 한다는 장점이 있다.
실시예들에서, 그와 같은 싱글 스테핑은 사용자 상호작용에 의해 제어될 수 있다. 예컨대, 사용자에게는 일시정지 버튼, 스텝 버튼 및 캡처 버튼이 제공될 수 있다. 그와 같은 버튼들은 그래픽 사용자 인터페이스(예컨대, 도 3의 인터페이스 콘솔(300))를 통해 제공될 수 있다. 그러나, 실시예들은 이러한 맥락으로 한정되는 것은 아니다. 더욱이, 실시예들은 그래픽 사용자 인터페이스의 이용으로 한정되는 것은 아니다.
일시정지 버튼은 사용자가 그 현재 프레임에서 애플리케이션(예컨대, 그래픽 애플리케이션(102))을 원격으로 일시 정지시키게 한다. 이어서, 스텝 버튼은 사용자가 정확하게 한 프레임을 앞으로 싱글 스텝하게 한다. 캡처 버튼은 사용자가 분석을 위해 프레임 데이터(및 이에 대응하는 드로우 콜)를 저장하도록 결정하게 한다.
도 9는 그와 같은 스테핑 및 프레임 캡처링 특징을 수반하는 동작을 나타낼 수 있는 논리 흐름(900)을 도시한다. 이 흐름은 도 1 및 2의 맥락에서 설명된다. 그러나, 이 흐름은 다른 맥락에서 이용될 수도 있다. 또한, 도 9는 특정 시퀀스를 도시하지만, 다른 시퀀스도 이용될 수 있다. 또한, 도시된 동작들은 여러 가지 병렬적 및/또는 순차적 조합으로 수행될 수 있다.
블록(902)에서, 그래픽 애플리케이션(예컨대, 게임)이 시작된다. 예컨대, 도 1의 맥락에서, 이것은 그래픽 애플리케이션(102)의 실행을 개시하는 것을 포함할 수 있다.
블록(904)에서, 사용자는 일시정지 버튼을 활성화한다. 그 결과, 블록(906)에서 그래픽 애플리케이션은 그 현재 프레임의 완료 시에 동작을 중지한다. 이 특징은 애플리케이션(102)을 기다리는 그래픽 분석 도구(110)가 (그래픽 API(104)를 통해) "현재 콜"을 생성하는 것을 수반할 수 있다. 그와 같은 콜은 현재 프레임에 대한 그 드로우 콜이 완료되고 현재 프레임이 그래픽 엔진(106)에 의해 렌더링될 준비가 되어 있음을 나타낸다. 그와 같은 콜이 배치되면, 그래픽 분석 도구(110)는 그래픽 애플리케이션(102)을 일시 정지시킬 수 있다. 이것은, 예컨대, 하나 이상의 운영 체제 콜을 통해 수행될 수 있다. 예컨대, 그래픽 분석 도구(110)는 그래픽 애플리케이션과 연관된, 실행하고 있는 CPU 소프트웨어 스레드(thread) 모두를 정지시킬 수 있다. 이러한 일시정지 시에, 현재 프레임이 디스플레이될 수 있다.
블록(907)에서, 사용자는 버튼을 활성화한다. 이 버튼이 스텝 버튼이라면, 동작은 블록(909)으로 진행하고, 여기서 그래픽 애플리케이션이 재개되고 다음 프레임이 현재 프레임이 된다. 도 1의 맥락에서, 이것은 그래픽 분석 도구(110)가 하나 이상의 운영 체제 콜을 배치하는 것을 수반할 수 있다. 이것에 이어서, 동작은 블록(906)으로 되돌아가고, 그래픽 애플리케이션이 프레임을 완료하면 그래픽 애플리케이션은 다시 일시 정지된다.
그러나, 사용자가 캡처 버튼을 횔성화하면, 블록(910)에서, 그래픽 엔진(예컨대, 그래픽 엔진(106))에 의해 생성된 프레임이 저장된다. 도 2를 참조하면, 이것은 현재 프레임의 픽셀 데이터를 프레임 저장 모듈(212)에 저장하는 것을 포함할 수 있다. 또한, 블록(912)에서, 현재 프레임에 관한 추가 정보가 저장된다. 그와 같은 정보는 (이것으로 한정되는 것은 아니지만) 현재 프레임에 대응하는 드로우 콜, 그래픽 엔진과 관련된 상태 정보(예컨대, 파이프라인 상태 정보), 그래픽 API, 및/또는 그래픽 애플리케이션을 포함한다. 또한, 그와 같은 정보는 애플리케이션에 의해 제공되는 자원(예컨대, 월드 모델(world model) 정보, 버텍스(vertex) 정보, 쉐이딩 정보, 텍스처 정보 등)을 포함할 수 있다. 실시예들은 이러한 예들에 한정되는 것은 아니다. 도 2의 맥락에서 그와 같은 정보의 일부는 그래픽 API 드로우 콜 인터셉터 모듈(202)에 의해 인터셉트되어 식별될 수 있으며 그래픽 API 콜 로그 데이터베이스(204)에 저장될 수 있다.
도 9는 블록(910, 912)에 이어서 동작이 블록(909)으로 진행할 수 있고, 여기서 그래픽 애플리케이션이 재개되고 다음 프레임이 현재 프레임이 됨을 도시한다. 이것에 이어서 동작은 블록(906)으로 진행하고, 그래픽 애플리케이션이 프레임을 완료하면 그래픽 애플리케이션은 다시 일시 정지된다.
또 다른 대안으로서, 도 9는 사용자가 일시정지 버튼을 활성화한 경우에 블록(914)에서 그래픽 애플리케이션의 정상적인 동작이 재개되는 것을 도시한다. 도 1의 맥락에서, 이것은 그래픽 분석 도구(110)가 하나 이상의 운영 체제 콜을 배치하는 것을 수반할 수 있다. 이것에 이어서 블록(916)은 동작이 블록(904)으로 되돌아가서 추가적인 프레임 스테핑 및 프레임 캡처 동작을 수행할 수 있음을 나타낸다.
따라서, 이들 프레임 스테핑 및 프레임 캡처 기법들은 사용자로 하여금 디버깅하고 프로파일링 할 정확한 프레임에 대해 미세하게 제어할 수 있게 한다. 그 결과, 사용자는 병목현상을 찾아서 고치고, 그리고/또는 중복되는 또는 중요하지 않은 그래픽 동작을 제거할 수 있다. 도 9의 흐름은 GUI 버튼의 맥락에서 설명된다. 이것은 예시적인 것으로 한정적인 것이 아니다. 따라서, 다른 사용자 상호작용 기법/장치가 이용될 수 있다. 따라서, 실시예들은 전술한 일시정지, 스테핑, 캡처링 및 재개 특징에 대한 여러 가지 사용자 제어를 제공할 수 있다.
실시예들에서, 플랫폼(1002)은 CPU(1012), GPU(1013), 하나 이상의 드라이버(1014), 하나 이상의 네트워크 연결부(1015), 운영 체제(1016), 저장소(1018) 및 디스플레이 장치(1019)를 포함할 수 있다.
CPU(1012)는 듀얼 코어 프로세서와 같은 하나 이상의 프로세서를 포함할 수 있다. 듀얼 코어 프로세서의 예로는 Intel®사에서 제조한 Pentium®D processor 및 Pentium® processor Extreme Edition이 있으며, 이들은 예컨대, Intel Core Duo® processor라 할 수 있다.
GPU(1013)는 PCI(peripheral component interconnect) Express 그래픽 카드와 같은 여러 가지 그래픽 프로세서를 포함할 수 있다. 그러나 실시예들은 이 예에 한정되는 것은 아니다. 도 1을 참조하면, GPU(1013)는 그래픽 엔진(106)의 특징을 제공할 수 있다.
일 실시예에서, 네트워크 연결부(1015)는 Intel®사에서 제조한 PRO/1000 PM 또는 PRO/100 VE/VM 네트워크 연결부를 포함할 수 있다.
실시예들에서, 운영 체제(1016)는 Microsoft®사에서 제조한 Windows®XP Media Center를 포함할 수 있다. 다른 실시예들에서 운영 체제(1016)는 Linux®는 물론 기타 다른 형태의 운영 체제를 포함할 수 있다.
일 실시예에서 저장소(1018)는 여러 가지 실체적 저장 매체를 포함할 수 있다. 그와 같은 저장 매체는 데이터(예컨대, 이미지 또는 프레임)는 물론이고 본 명세서에서 설명된 여러 가지 특징(예컨대, 도 1 및 2의 구성요소들)을 구현하는 명령어나 제어 로직(예컨대, 소프트웨어)을 포함할 수 있다. 그와 같은 명령어나 제어 로직은 CPU(1012) 및/또는 GPU(1013)에 의해 실행될 수 있다. 저장 매체의 예에 대해서는 뒤에 더 자세히 설명한다.
디스플레이 장치(1019)는 사용자에게 정보를 출력할 수 있다. 그 외에도, 디스플레이 장치(1019)는 본 명세서에서 설명된 사용자 상호작용을 가능하게 할 수 있다. 예컨대, 그와 같은 사용자 상호작용은 예시적인 사용자 인터페이스(300)를 통할 수 있다.
본 명세서에서 설명된 바와 같이 여러 가지 실시예들은 하드웨어 요소, 소프트웨어 요소 또는 이들의 임의의 조합을 이용하여 구현될 수 있다. 하드웨어 요소의 예로는 프로세서, 마이크로프로세서, 회로, 회로 요소(예컨대, 트랜지스터, 저항, 커패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(ASIC), 프로그래머블 로직 장치(PLD), 디지털 신호 프로세서(DSP), 필드 프로그래머블 게이트 어레이(FPGA), 로직 게이트, 레지스터, 반도체 장치, 칩, 마이크로칩, 칩셋 등을 들 수 있다.
소프트웨어의 예로는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 밸류(value), 심볼, 또는 이들의 임의의 조합을 들 수 있다.
일부 실시예는 예컨대, 머신에 의해 실행될 때에 그 머신이 실시예들에 따른 방법 및/또는 동작을 수행하게 할 수 있는 실체적인 머신 판독가능한 매체(저장 매체) 또는 물품을 이용하여 구현될 수 있다. 그와 같은 기계는 예컨대, 적절한 처리 플랫폼, 컴퓨팅 플랫폼, 컴퓨팅 장치, 처리 장치, 컴퓨팅 시스템, 처리 시스템, 컴퓨터, 프로세서 등을 포함할 수 있으며, 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합을 이용하여 구현될 수 있다.
머신 판독가능한 매체(저장 매체) 또는 물품은 예컨대, 적당한 형태의 메모리 유닛, 메모리 장치, 메모리 물품, 메모리 매체, 저장 장치, 저장 물품, 저장 매체 및/또는 저장 유닛, 예컨대, 메모리, 착탈식 또는 고정 매체, 소거가능 또는 소거불능 매체, 쓰기가능 또는 겹쳐 쓰기가능 매체, 디지털 또는 아날로그 매체, 하드 디스크, 플로피 디스크, CD-ROM(Compact Disk Read Only Memory), CD-R(Compact Disk Recordable), CD-RW(Compact disk Rewriteable), 광 디스크, 자기 매체, 자기광 매체, 착탈식 메모리 카드 또는 디스크, 각종 DVD(Digital Versatile Disk), 테이프, 카세트 등을 포함할 수 있다. 명령어는 소스 코드, 컴파일된 코드, 해석된 코드, 실행가능한 코드, 스태틱 코드, 다이나믹 코드, 암호화된 코드 등과 같은 임의의 적절한 형태의 코드를 포함할 수 있으며, 임의의 적절한 하이 레벨, 로우 레벨, 객체 지향, 비주얼, 컴파일된 및/또는 해석된 프로그래밍 언어를 이용하여 구현될 수 있다.
일부 실시예는 "결합된"과 "연결된"이라는 표현을 그 파생어와 함께 이용하여 기술될 수 있다. 이러한 용어는 서로 동의어를 의미하는 것은 아니다. 예컨대, 일부 실시예는 2 이상의 구성요소가 서로 물리적으로 또는 전기적으로 직접적으로 접촉하는 것을 나타내는 데는 "연결된" 및/또는 "결합된"이라는 용어를 이용하여 기술될 수 있다. 그러나 "결합된"이라는 용어는 2 이상의 구성요소가 서로 직접적으로 접촉하는 것이 아니라 서로 협력하거나 상호 작용하는 것을 의미할 수도 있다.
지금까지 본 발명의 여러 가지 실시예들에 대해 설명하였지만 이들 실시예는 단지 예시적인 것으로 한정적인 것이 아님을 알아야 한다. 따라서 당업자라면 본 발명의 본질과 범위로부터 벗어남이 없이 형태와 세부 사항에 있어 여러 가지로 변경될 수 있음을 잘 알 것이다. 따라서 본 발명의 폭과 범위는 전술한 예시적인 실시예들에 의해 한정되는 것이 아니라 하기의 청구범위와 그 등가물에 따라서만 정해져야 한다.
102: 그래픽 애플리케이션
104: 그래픽 애플리케이션 프로그램 인터페이스
106: 그래픽 엔진
110: 그래픽 분석 도구
202: 그래픽 API 인터셉터 모듈
204: 그래픽 API 콜 로그 데이터베이스
206: 재구성 모듈
207: 오버드로우 분석 모듈
208: 픽셀 히스토리 분석 모듈
210: 사용자 인터페이스 모듈
212: 프레임 저장 모듈

Claims (20)

  1. 제1 그래픽 API(application program interface) 콜들의 시퀀스를 포함하는 픽셀 히스토리를 픽셀에 대해 생성하는 단계; 및
    제2 그래픽 API 콜들의 시퀀스 내의 드로우 콜이, 선택된 픽셀이 기입되게 하는 횟수를 판정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 그래픽 API 드로우 콜들의 시퀀스는 렌더링 타겟에 대응하는 방법.
  3. 제2항에 있어서,
    상기 렌더링 타겟의 사용자 선택을 수신하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    추가적인 그래픽 API 드로우 콜들의 시퀀스에 기초하여 오버드로우 이미지를 생성하는 단계; 및
    상기 오버드로우 이미지에 기초하여 상기 픽셀을 선택하는 단계
    를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 오버드로우 이미지를 생성하는 단계는 상기 픽셀이 기입될 때마다 픽셀 히트 카운트(hit count)를 증가시키는 단계를 포함하는 방법.
  6. 제1항에 있어서,
    상기 판정 단계는 하나 이상의 그래픽 파이프라인 테스트가 디스에이블된 상태로 수행되는 방법.
  7. 그래픽 API;
    그래픽 엔진; 및
    그래픽 분석 도구
    를 포함하고,
    상기 그래픽 분석 도구는,
    상기 그래픽 API에게 발행된 복수의 드로우 콜을 수신하고,
    상기 복수의 드로우 콜을 복수의 드로우 콜 시퀀스로 배열 - 상기 복수의 드로우 콜 시퀀스 각각은 복수의 렌더링 타겟 중 하나에 대응함 - 하고,
    상기 복수의 렌더링 타겟 중 하나를 선택하고,
    상기 선택된 렌더링 타겟에 대응하는 상기 드로우 콜 시퀀스에 기초하여 오버드로우 이미지를 생성하는 장치.
  8. 제7항에 있어서,
    상기 그래픽 분석 도구는,
    상기 오버드로우 이미지에 기초하여, 상기 선택된 렌더링 타겟 내의 픽셀을 선택하고,
    상기 선택된 픽셀에 대한 픽셀 히스토리를 생성하는
    장치.
  9. 제7항에 있어서,
    상기 복수의 드로우 콜을 생성하는 그래픽 애플리케이션을 더 포함하는 장치.
  10. 제7항에 있어서,
    상기 그래픽 엔진은 그래픽 파이프라인을 포함하는 장치.
  11. 제7항에 있어서,
    상기 그래픽 분석 도구는 상기 복수의 드로우 콜을 저장하는 데이터베이스를 포함하는 장치.
  12. 제7항에 있어서,
    상기 그래픽 분석 도구는 렌더링된 프레임을 저장하는 데이터베이스를 포함하는 장치.
  13. 제7항에 있어서,
    상기 픽셀 히스토리는 상기 선택된 픽셀에 영향을 미치는 드로우 콜 시퀀스를 포함하는 장치.
  14. 복수의 그래픽 API 드로우 콜들을 저장하는 단계;
    상기 복수의 그래픽 API 드로우 콜들을 복수의 드로우 콜 시퀀스로 배열하는 단계 - 상기 복수의 드로우 콜 시퀀스 각각은 복수의 렌더링 타겟 중 하나에 대응함 - ;
    상기 복수의 렌더링 타겟 중 하나의 사용자 선택을 수신하는 단계; 및
    상기 선택된 렌더링 타겟에 대응하는 상기 드로우 콜 시퀀스에 기초하여 오버드로우 이미지를 생성하는 단계
    를 포함하는 방법.
  15. 제14항에 있어서,
    상기 오버드로우 이미지에 기초하여, 상기 선택된 렌더링 타겟 내의 픽셀의 사용자 선택을 수신하는 단계; 및
    상기 선택된 픽셀에 대한 픽셀 히스토리를 생성하는 단계
    를 더 포함하는 방법.
  16. 복수의 렌더링 타겟 중 하나의 사용자 선택을 수신하는 단계;
    상기 선택된 렌더링 타겟 내의 픽셀의 사용자 선택을 수신하는 단계;
    상기 선택된 픽셀에 대응하는 그래픽 API 드로우 콜의 사용자 선택을 수신하는 단계; 및
    상기 드로우 콜이 상기 선택된 픽셀이 기입되게 하는 횟수를 판정하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서,
    상기 드로우 콜이 상기 선택된 픽셀이 기입되게 하는 횟수를 나타내는 이미지를 생성하는 단계를 더 포함하는 방법.
  18. 제16항에 있어서,
    상기 판정 단계는 하나 이상의 그래픽 파이프라인 테스트가 디스에이블된 상태로 수행되는 방법.
  19. 머신에 의해 실행되는 경우, 상기 머신으로 하여금,
    제1 그래픽 API 콜들의 시퀀스를 포함하는 픽셀 히스토리를 픽셀에 대해 생성하게 하고,
    제2 그래픽 API 콜들의 시퀀스 내의 드로우 콜이, 선택된 픽셀이 기입되게 하는 횟수를 판정하게 하는
    명령어들이 저장된 머신 액세스가능한 매체를 포함하는 물품.
  20. 제19항에 있어서,
    상기 제1 그래픽 API 드로우 콜들의 시퀀스는 렌더링 타겟에 대응하는 물품.
KR1020100060737A 2009-06-26 2010-06-25 그래픽 분석 기법들 KR101206548B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/459,266 2009-06-26
US12/459,266 US8581916B2 (en) 2009-06-26 2009-06-26 Graphics analysis techniques

Publications (2)

Publication Number Publication Date
KR20110000532A true KR20110000532A (ko) 2011-01-03
KR101206548B1 KR101206548B1 (ko) 2012-11-30

Family

ID=42371245

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100060737A KR101206548B1 (ko) 2009-06-26 2010-06-25 그래픽 분석 기법들

Country Status (8)

Country Link
US (1) US8581916B2 (ko)
JP (1) JP5875751B2 (ko)
KR (1) KR101206548B1 (ko)
CN (1) CN101937574B (ko)
DE (1) DE102010023693A1 (ko)
GB (1) GB2471367B (ko)
RU (1) RU2470367C2 (ko)
TW (1) TWI499997B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101399473B1 (ko) * 2012-08-13 2014-05-28 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
KR101399472B1 (ko) * 2012-08-13 2014-06-27 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850404B2 (en) * 2009-12-23 2014-09-30 Intel Corporation Relational modeling for performance analysis of multi-core processors using virtual tasks
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
CN102810199B (zh) * 2012-06-15 2015-03-04 成都平行视野科技有限公司 一种基于gpu的图像处理方法
US8599201B1 (en) * 2012-10-29 2013-12-03 Google Inc. System and method for a stencil-based overdraw visualizer
US9292414B2 (en) 2012-11-26 2016-03-22 Nvidia Corporation System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU
RU2666642C2 (ru) * 2014-03-27 2018-09-11 Иноземцев Юрий Александрович Способ генерации примитивов изображения
US9645916B2 (en) 2014-05-30 2017-05-09 Apple Inc. Performance testing for blocks of code
US9928564B2 (en) * 2014-06-26 2018-03-27 Intel Corporation Efficient hardware mechanism to ensure shared resource data coherency across draw calls
US10025367B2 (en) * 2014-08-19 2018-07-17 Intel Corporation Dynamic scaling of graphics processor execution resources
RU2629439C2 (ru) * 2015-12-29 2017-08-29 Общество С Ограниченной Ответственностью "Яндекс" Способ и система хранения данных для отрисовки трехмерных графических объектов
CN107680028B (zh) * 2016-08-01 2020-04-21 北京百度网讯科技有限公司 用于缩放图像的处理器和方法
RU2658875C1 (ru) * 2016-08-05 2018-06-25 Общество С Ограниченной Ответственностью "Яндекс" Способ и сервер для определения порядка отрисовки карты
RU2678077C2 (ru) * 2017-05-04 2019-01-23 Общество С Ограниченной Ответственностью "Яндекс" Способ отрисовки поисковых результатов на карте, отображаемой на электронном устройстве
CN108446233A (zh) * 2018-03-20 2018-08-24 南京邮电大学 一种软件测试方法
CN113298918B (zh) * 2020-02-24 2022-12-27 广东博智林机器人有限公司 一种重叠区域的异色显示方法及装置
CN112579409A (zh) * 2020-12-05 2021-03-30 西安翔腾微电子科技有限公司 一种OpenGL图形任务分析方法
CN113689523A (zh) * 2021-08-26 2021-11-23 联想(北京)有限公司 一种图形绘制方法及电子设备
CN114332311B (zh) * 2021-12-05 2023-08-04 北京字跳网络技术有限公司 一种图像生成方法、装置、计算机设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021122A (ja) 1996-07-05 1998-01-23 Mitsubishi Electric Corp プロセッサモニタ装置
US6047123A (en) * 1997-03-27 2000-04-04 Hewlett-Packard Company Methods for recording a compilable graphics call trace
JP3356007B2 (ja) * 1997-06-27 2002-12-09 日本電気株式会社 グラフィックスlsi
US6594387B1 (en) * 1999-04-30 2003-07-15 Texas Instruments Incorporated Enhanced color correction
US6891533B1 (en) * 2000-04-11 2005-05-10 Hewlett-Packard Development Company, L.P. Compositing separately-generated three-dimensional images
US7286138B2 (en) * 2001-05-08 2007-10-23 Microsoft Corporation Discontinuity edge overdraw
EP1495412B1 (en) * 2002-03-22 2012-11-28 Alandro Consulting NY LLC Scalable high performance 3d graphics
US7451457B2 (en) * 2002-04-15 2008-11-11 Microsoft Corporation Facilitating interaction between video renderers and graphics device drivers
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US20050195198A1 (en) * 2004-03-03 2005-09-08 Anderson Michael H. Graphics pipeline and method having early depth detection
US7348982B2 (en) * 2004-09-30 2008-03-25 Microsoft Corporation Method, system, and computer-readable medium for creating and laying out a graphic within an application program
JP2007116237A (ja) * 2005-10-18 2007-05-10 Mitsubishi Electric Corp 色データ変換装置および色データ変換方法
US20080007563A1 (en) * 2006-07-10 2008-01-10 Microsoft Corporation Pixel history for a graphics application
US8607151B2 (en) 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US8448067B2 (en) * 2006-12-07 2013-05-21 Sony Computer Entertainment America, LLC Graphics command management tool and methods for analyzing performance for command changes before application modification
JP2009020610A (ja) 2007-07-10 2009-01-29 Mitsubishi Electric Corp 解析装置及び解析方法及びプログラム
US7992137B2 (en) 2007-07-30 2011-08-02 Nvidia Corporation Client server system for analysis and performance tuning of remote graphics devices
GB0908506D0 (en) * 2009-05-18 2009-06-24 Imagination Tech Ltd Method and apparatus for drawing polygons

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101399473B1 (ko) * 2012-08-13 2014-05-28 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
KR101399472B1 (ko) * 2012-08-13 2014-06-27 (주)투비소프트 다중 프로세싱을 이용한 렌더링 처리 장치 및 방법
US8952971B2 (en) 2012-08-13 2015-02-10 Tobesoft Co., Ltd. Rendering processing apparatus and method using multiprocessing
US8952970B2 (en) 2012-08-13 2015-02-10 Tobesoft Co., Ltd. Rendering processing apparatus and method using multiprocessing

Also Published As

Publication number Publication date
US8581916B2 (en) 2013-11-12
GB201009073D0 (en) 2010-07-14
US20100328321A1 (en) 2010-12-30
KR101206548B1 (ko) 2012-11-30
CN101937574A (zh) 2011-01-05
TW201118790A (en) 2011-06-01
JP5875751B2 (ja) 2016-03-02
TWI499997B (zh) 2015-09-11
DE102010023693A1 (de) 2011-01-05
JP2011008789A (ja) 2011-01-13
GB2471367A (en) 2010-12-29
CN101937574B (zh) 2014-05-07
GB2471367B (en) 2012-06-27
RU2470367C2 (ru) 2012-12-20
RU2010126188A (ru) 2011-12-27

Similar Documents

Publication Publication Date Title
KR101206548B1 (ko) 그래픽 분석 기법들
JP5437485B2 (ja) レンダリングされたグラフィックス要素のためのパフォーマンスメトリックの視覚的表現の表示
US20080007563A1 (en) Pixel history for a graphics application
KR101267120B1 (ko) 성능 분석 동안 관련된 그래픽스 데이터에 대한 그래픽스 명령들의 매핑
CA2880345C (en) Hit testing method and apparatus
KR20170113676A (ko) 스푸프 클록의 사용 및 미세 수준 주파수 제어를 통한 역 호환성
WO2008127517A1 (en) Graphics command management tool and methods for analyzing performance for command changes before application modification
US8624907B2 (en) Graphics analysis techniques
JP2023532434A (ja) レイトレーシングのための早期カリング
GB2541692A (en) Graphics processing systems
JP5242788B2 (ja) グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析
CN111932689B (zh) 一种采用id像素图的三维对象快速选取方法
US20100332987A1 (en) Graphics analysis techniques
KR20230032826A (ko) 멀티-프래그먼트 렌더링에서 가상 두께 기반 레이어 병합 방법, 이를 수행하는 장치 및 컴퓨터 프로그램
Iyer et al. GPU debugging and Profiling with NVIDIA Parallel Nsight
CN116670719A (zh) 一种图形处理方法、装置及电子设备
Therén Optimization of graphical performance in a motion-based web game: Improving design and implementation of a game measured by frame rate
Sambeek Real-time shadow generation for 3D simulations using modern hardware

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
A107 Divisional application of patent
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee