17.08.2013 Views

Profiling and Debugging Your Game with PIX on Xbox 360

Profiling and Debugging Your Game with PIX on Xbox 360

Profiling and Debugging Your Game with PIX on Xbox 360

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<str<strong>on</strong>g>Profiling</str<strong>on</strong>g> <str<strong>on</strong>g>and</str<strong>on</strong>g> <str<strong>on</strong>g>Debugging</str<strong>on</strong>g> <str<strong>on</strong>g>Your</str<strong>on</strong>g><br />

<str<strong>on</strong>g>Game</str<strong>on</strong>g> <str<strong>on</strong>g>with</str<strong>on</strong>g> <str<strong>on</strong>g>PIX</str<strong>on</strong>g> <strong>on</strong> <strong>Xbox</strong> <strong>360</strong><br />

Bruce Daws<strong>on</strong><br />

bdaws<strong>on</strong>@microsoft.com<br />

Microsoft, <str<strong>on</strong>g>Game</str<strong>on</strong>g> Technology Group, Reading


Tools Matter<br />

• Greater developer efficiency<br />

• Better results: faster, better looking<br />

• Educati<strong>on</strong>al<br />

• Great tools make the job more fun<br />

Performance Investigator for <strong>Xbox</strong><br />

Performance Investigator for <strong>Xbox</strong>, Windows, <str<strong>on</strong>g>and</str<strong>on</strong>g><br />

<strong>Xbox</strong> <strong>360</strong><br />

Performance <str<strong>on</strong>g>and</str<strong>on</strong>g> <str<strong>on</strong>g>Debugging</str<strong>on</strong>g> Investigator for <strong>Xbox</strong>,<br />

Windows, <str<strong>on</strong>g>and</str<strong>on</strong>g> <strong>Xbox</strong> <strong>360</strong><br />

• Agenda:<br />

– Why is <str<strong>on</strong>g>PIX</str<strong>on</strong>g> a vital tool?<br />

– What can it tell you?<br />

– Demos!


Why <str<strong>on</strong>g>PIX</str<strong>on</strong>g>?<br />

• Optimizing<br />

– Knowledge is power<br />

– Running tests is tedious<br />

– Analyzing the results is hard


Why <str<strong>on</strong>g>PIX</str<strong>on</strong>g>?<br />

• Optimizing<br />

– Knowledge is power<br />

– Running tests is tedious<br />

– Analyzing the results is hard<br />

• <str<strong>on</strong>g>Debugging</str<strong>on</strong>g><br />

• Underst<str<strong>on</strong>g>and</str<strong>on</strong>g>ing the software <str<strong>on</strong>g>and</str<strong>on</strong>g> hardware


Inside <str<strong>on</strong>g>PIX</str<strong>on</strong>g> for <strong>Xbox</strong> <strong>360</strong><br />

• Many profilers in <strong>on</strong>e<br />

– System M<strong>on</strong>itor<br />

– Timing Captures<br />

– GPU Captures<br />

– CPU Trace Captures<br />

• Timing <str<strong>on</strong>g>and</str<strong>on</strong>g> GPU captures use an instrumented<br />

versi<strong>on</strong> of D3D<br />

– Only mildly intrusive<br />

• System M<strong>on</strong>itor <str<strong>on</strong>g>and</str<strong>on</strong>g> CPU Trace Captures work <strong>on</strong><br />

full release builds


Inside <str<strong>on</strong>g>PIX</str<strong>on</strong>g> for Windows<br />

• Many profilers in <strong>on</strong>e<br />

– Timing informati<strong>on</strong><br />

– Full-frame capture<br />

– Direct3D call log<br />

– Direct3D call stream recording<br />

• Works <strong>on</strong> full release versi<strong>on</strong>s of your games


Default <strong>Xbox</strong> <strong>360</strong> System M<strong>on</strong>itor


Tricked Out System M<strong>on</strong>itor


Adding Custom Counters: <strong>Xbox</strong> <strong>360</strong><br />

• Call <str<strong>on</strong>g>PIX</str<strong>on</strong>g>AddNamedCounter <strong>on</strong>ce per frame<br />

<str<strong>on</strong>g>PIX</str<strong>on</strong>g>AddNamedCounter( m_nPhysObj, "Physics Objects" );<br />

• Available in all build c<strong>on</strong>figurati<strong>on</strong>s, including release


Timing Capture: Timelines


Timing Capture: Events


Adding Event Names: <strong>Xbox</strong> <strong>360</strong><br />

• Wrap code to be measured in <str<strong>on</strong>g>PIX</str<strong>on</strong>g>BeginNamedEvent<br />

<str<strong>on</strong>g>and</str<strong>on</strong>g> <str<strong>on</strong>g>PIX</str<strong>on</strong>g>EndNamedEvent.<br />

<str<strong>on</strong>g>PIX</str<strong>on</strong>g>BeginNamedEvent( 0xFFFFFFFF, "Draw Text: %s",<br />

...<br />

message );<br />

<str<strong>on</strong>g>PIX</str<strong>on</strong>g>EndNamedEvent();<br />

• Requires instrumented versi<strong>on</strong> of D3D


Adding Event Names: Windows<br />

• Wrap code to be measured in <str<strong>on</strong>g>PIX</str<strong>on</strong>g>BeginNamedEvent<br />

<str<strong>on</strong>g>and</str<strong>on</strong>g> <str<strong>on</strong>g>PIX</str<strong>on</strong>g>EndNamedEvent.<br />

D3DPERF_BeginEvent( 0xFFFFFFFF, "Draw Hero" );<br />

...<br />

D3DPERF_EndEvent();<br />

• Requires instrumented versi<strong>on</strong> of D3D


GPU Capture: Shader View


<str<strong>on</strong>g>PIX</str<strong>on</strong>g> for Windows Demo<br />

• A live demo occurs at this point. This demo will<br />

show many types of capture <str<strong>on</strong>g>and</str<strong>on</strong>g> analysis <str<strong>on</strong>g>and</str<strong>on</strong>g> will<br />

be narrated in a witty manner.<br />

• Please wait...


Shader <str<strong>on</strong>g>Debugging</str<strong>on</strong>g>


HLSL Shader <str<strong>on</strong>g>Debugging</str<strong>on</strong>g>!


Shaders Tab: <strong>Xbox</strong> <strong>360</strong><br />

• Pixel Shader<br />

• These performance estimates are based<br />

up<strong>on</strong> a static analysis of the shader.<br />

Use the "Analysis" tab for a more<br />

accurate dynamic analysis.<br />

Cycles/64 pixel vector: ALU 9, vertex<br />

0, texture 4, sequencer 8, interpolator<br />

32


Analysis Tab: <strong>Xbox</strong> <strong>360</strong><br />

Bottleneck Summary<br />

Simulati<strong>on</strong> Time: 155370 *************************<br />

Shading: 151555<br />

ALU: 19244<br />

VS ALU: 4<br />

PS ALU: 19240 ***<br />

C<strong>on</strong>trol Flow: 86586<br />

VS CF: 6<br />

PS CF: 86580 **************<br />

Texture Fetch: 57720<br />

Bilinear/Point: 57720 *********<br />

...<br />

Vertex Fetch: 4<br />

Vertices: 4<br />

Vfetch_fulls: 2<br />

Shader Stalls: 64969<br />

Vertex Cache: 0<br />

Texture Cache: 64969 **********<br />

...<br />

Rasterizati<strong>on</strong> <str<strong>on</strong>g>and</str<strong>on</strong>g> Fill: 124775<br />

Scan <str<strong>on</strong>g>and</str<strong>on</strong>g> Interpolate: 115440<br />

Quads: 115440 *******************<br />

Interpolati<strong>on</strong>: 115440 *******************<br />

Tiles: 14620 **


Analysis Tab: <strong>Xbox</strong> <strong>360</strong><br />

General<br />

Measured Time: 296<br />

Indices: 36<br />

Primitives: 12<br />

Transformed Vertices: 30<br />

Vertex Vectors: 1<br />

Quads: 0<br />

Tiles: 6<br />

Pixel Vectors: 0<br />

N<strong>on</strong>-pipelined Busy: 1033<br />

Primitive Type: TRILIST<br />

Ideal Fill: 2<br />

Max VS Threads: 9<br />

Max PS Threads: 30<br />

VS Clauses: 2<br />

PS Clauses: 1<br />

Warning: low vertex thread count due to high GPR<br />

usage may hurt performance. Performance simulati<strong>on</strong><br />

may be inaccurate.


Warnings Tab: <strong>Xbox</strong> <strong>360</strong>


Summary<br />

• Tools matter<br />

• Learn the available tools<br />

• Modify your code <str<strong>on</strong>g>and</str<strong>on</strong>g> c<strong>on</strong>figurati<strong>on</strong>s to use <str<strong>on</strong>g>PIX</str<strong>on</strong>g><br />

– It's easy


Resources<br />

• <str<strong>on</strong>g>PIX</str<strong>on</strong>g> for Windows<br />

http://msdn.microsoft.com/DirectX/<br />

• <str<strong>on</strong>g>PIX</str<strong>on</strong>g> for <strong>Xbox</strong> <strong>360</strong><br />

https://xds.xbox.com/xbox<strong>360</strong>/nav.aspx?Page=xdks<br />

oftware/xdkdownload.htm<br />

• Live <str<strong>on</strong>g>PIX</str<strong>on</strong>g> for Windows (August 2005 versi<strong>on</strong>)<br />

demo:<br />

http://channel9.msdn.com/ShowPost.aspx?PostID=1<br />

09622


Questi<strong>on</strong>s?<br />

• D<strong>on</strong>'t forget your evaluati<strong>on</strong> forms

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!