mirror of
https://github.com/HackerN64/F3DEX3.git
synced 2026-01-21 10:37:45 -08:00
250 lines
22 KiB
HTML
250 lines
22 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.11.0"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>F3DEX3: Performance Results</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<script type="text/javascript" src="clipboard.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="cookie.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript" src="darkmode_toggle.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
|
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
|
<link href="doxygen-extra.css" rel="stylesheet" type="text/css"/>
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">F3DEX3
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.11.0 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() { codefold.init(0); });
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search',true);
|
|
$(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function(){initNavTree('performance.html',''); initResizable(true); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div><div class="header">
|
|
<div class="headertitle"><div class="title">Performance Results</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><h1><a class="anchor" id="autotoc_md38"></a>
|
|
Performance Results</h1>
|
|
<p>F3DEX3_NOC matches or beats the RSP performance of F3DEX2 on <b>all</b> critical paths in the microcode, including command dispatch, vertex processing, and triangle processing. Then, the RDP and memory traffic performance improvements of F3DEX3–56 vertex buffer, auto-batched rendering, etc.–should further improve overall game performance from there.</p>
|
|
<h2><a class="anchor" id="autotoc_md39"></a>
|
|
Cycle Counts</h2>
|
|
<p>These are cycle counts for many key paths in the microcode. Lower numbers are better. The timings are hand-counted taking into account all pipeline stalls and all dual-issue conditions. Instruction alignment after branches is usually taken into account (especially in F3DEX3), but in some cases it is assumed to be optimal.</p>
|
|
<p>All numbers assume default profiling configuration. <a class="el" href="structTri.html">Tri</a> numbers assume texture, shade, and Z, and not flushing the buffer. <a class="el" href="structTri.html">Tri</a> numbers are measured from the first cycle of the command handler inclusive, to the first cycle of whatever is after $ra exclusive; this is in order to capture an extra stall cycle in F3DEX2 when finishing a triangle and going to the next command.</p>
|
|
<p>Vertex numbers assume no extra F3DEX3 features (packed normals, ambient occlusion, etc.). These features are listed below as the number of extra cycles the feature costs per vertex pair. ltbasic is the codepath when point lighting, specular, and Fresnel are disabled; ltadv is the codepath with any of these enabled. The reason timings are listed separately for each number of lights is because some implementations are pipelined for two lights, so going from an even to an odd number of lights adds a different time than vice versa.</p>
|
|
<table class="markdownTable">
|
|
<tr class="markdownTableHead">
|
|
<th class="markdownTableHeadNone"></th><th class="markdownTableHeadNone">F3DEX2 </th><th class="markdownTableHeadNone">F3DEX3_NOC </th><th class="markdownTableHeadNone">F3DEX3 </th></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Command dispatch </td><td class="markdownTableBodyNone">12 </td><td class="markdownTableBodyNone">10 </td><td class="markdownTableBodyNone">10 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Small RDP command </td><td class="markdownTableBodyNone">14 </td><td class="markdownTableBodyNone">4 </td><td class="markdownTableBodyNone">4 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Only/2nd tri to offscreen </td><td class="markdownTableBodyNone">27 </td><td class="markdownTableBodyNone">20 </td><td class="markdownTableBodyNone">20 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">1st tri to offscreen </td><td class="markdownTableBodyNone">28 </td><td class="markdownTableBodyNone">21 </td><td class="markdownTableBodyNone">21 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Only/2nd tri to clip </td><td class="markdownTableBodyNone">32 </td><td class="markdownTableBodyNone">25 </td><td class="markdownTableBodyNone">25 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">1st tri to clip </td><td class="markdownTableBodyNone">33 </td><td class="markdownTableBodyNone">26 </td><td class="markdownTableBodyNone">26 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Only/2nd tri to backface </td><td class="markdownTableBodyNone">38 </td><td class="markdownTableBodyNone">31 </td><td class="markdownTableBodyNone">31 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">1st tri to backface </td><td class="markdownTableBodyNone">39 </td><td class="markdownTableBodyNone">32 </td><td class="markdownTableBodyNone">32 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Only/2nd tri to degenerate </td><td class="markdownTableBodyNone">42 </td><td class="markdownTableBodyNone">33 </td><td class="markdownTableBodyNone">33 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">1st tri to degenerate </td><td class="markdownTableBodyNone">43 </td><td class="markdownTableBodyNone">34 </td><td class="markdownTableBodyNone">34 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Only/2nd tri to occluded </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">37 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">1st tri to occluded </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">38 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Only/2nd tri to draw </td><td class="markdownTableBodyNone">172 </td><td class="markdownTableBodyNone">149 </td><td class="markdownTableBodyNone">151 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">1st tri to draw </td><td class="markdownTableBodyNone">173 </td><td class="markdownTableBodyNone">150 </td><td class="markdownTableBodyNone">152 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="structTri.html">Tri</a> snake </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">10/11* </td><td class="markdownTableBodyNone">10/11* </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> before DMA start </td><td class="markdownTableBodyNone">16 </td><td class="markdownTableBodyNone">17 </td><td class="markdownTableBodyNone">17 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, no lighting </td><td class="markdownTableBodyNone">54 </td><td class="markdownTableBodyNone">54 </td><td class="markdownTableBodyNone">70 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 0 dir lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">65 </td><td class="markdownTableBodyNone">81 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 1 dir lt </td><td class="markdownTableBodyNone">73 </td><td class="markdownTableBodyNone">70 </td><td class="markdownTableBodyNone">86 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 2 dir lts </td><td class="markdownTableBodyNone">76 </td><td class="markdownTableBodyNone">77 </td><td class="markdownTableBodyNone">93 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 3 dir lts </td><td class="markdownTableBodyNone">88 </td><td class="markdownTableBodyNone">84 </td><td class="markdownTableBodyNone">100 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 4 dir lts </td><td class="markdownTableBodyNone">91 </td><td class="markdownTableBodyNone">91 </td><td class="markdownTableBodyNone">107 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 5 dir lts </td><td class="markdownTableBodyNone">103 </td><td class="markdownTableBodyNone">98 </td><td class="markdownTableBodyNone">114 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 6 dir lts </td><td class="markdownTableBodyNone">106 </td><td class="markdownTableBodyNone">105 </td><td class="markdownTableBodyNone">121 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 7 dir lts </td><td class="markdownTableBodyNone">118 </td><td class="markdownTableBodyNone">112 </td><td class="markdownTableBodyNone">128 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 8 dir lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">119 </td><td class="markdownTableBodyNone">135 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 9 dir lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">126 </td><td class="markdownTableBodyNone">142 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 0 point lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">117 </td><td class="markdownTableBodyNone">133 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 1 point lt </td><td class="markdownTableBodyNone">276 </td><td class="markdownTableBodyNone">194 </td><td class="markdownTableBodyNone">210 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 2 point lts </td><td class="markdownTableBodyNone">420 </td><td class="markdownTableBodyNone">271 </td><td class="markdownTableBodyNone">287 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 3 point lts </td><td class="markdownTableBodyNone">564 </td><td class="markdownTableBodyNone">348 </td><td class="markdownTableBodyNone">364 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 4 point lts </td><td class="markdownTableBodyNone">708 </td><td class="markdownTableBodyNone">425 </td><td class="markdownTableBodyNone">441 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 5 point lts </td><td class="markdownTableBodyNone">852 </td><td class="markdownTableBodyNone">502 </td><td class="markdownTableBodyNone">518 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 6 point lts </td><td class="markdownTableBodyNone">996 </td><td class="markdownTableBodyNone">579 </td><td class="markdownTableBodyNone">595 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 7 point lts </td><td class="markdownTableBodyNone">1140 </td><td class="markdownTableBodyNone">656 </td><td class="markdownTableBodyNone">672 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 8 point lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">733 </td><td class="markdownTableBodyNone">749 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone"><a class="el" href="unionVtx.html">Vtx</a> pair, 9 point lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">810 </td><td class="markdownTableBodyNone">826 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Packed normals, ltbasic </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">6 </td><td class="markdownTableBodyNone">6 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Light-to-alpha, ltbasic </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">10 </td><td class="markdownTableBodyNone">10 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Ambient occlusion, ltbasic </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">9 </td><td class="markdownTableBodyNone">9 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Packed normals, ltadv </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">-3 </td><td class="markdownTableBodyNone">-3 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Light-to-alpha, ltadv </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">6 </td><td class="markdownTableBodyNone">6 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Ambient occlusion, ltadv </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Specular or fresnel </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">47 </td><td class="markdownTableBodyNone">47 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">+ Fresnel </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">23 </td><td class="markdownTableBodyNone">23 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">+ Specular per dir lt </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">13 </td><td class="markdownTableBodyNone">13 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">+ Specular per point lt </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">13 </td><td class="markdownTableBodyNone">13 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 0 dir lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">92 </td><td class="markdownTableBodyNone">92 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 1 dir lt </td><td class="markdownTableBodyNone">141 </td><td class="markdownTableBodyNone">92 </td><td class="markdownTableBodyNone">92 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 2 dir lts </td><td class="markdownTableBodyNone">180 </td><td class="markdownTableBodyNone">93 </td><td class="markdownTableBodyNone">93 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 3 dir lts </td><td class="markdownTableBodyNone">219 </td><td class="markdownTableBodyNone">118 </td><td class="markdownTableBodyNone">118 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 4 dir lts </td><td class="markdownTableBodyNone">258 </td><td class="markdownTableBodyNone">119 </td><td class="markdownTableBodyNone">119 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 5 dir lts </td><td class="markdownTableBodyNone">297 </td><td class="markdownTableBodyNone">144 </td><td class="markdownTableBodyNone">144 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 6 dir lts </td><td class="markdownTableBodyNone">336 </td><td class="markdownTableBodyNone">145 </td><td class="markdownTableBodyNone">145 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 7 dir lts </td><td class="markdownTableBodyNone">375 </td><td class="markdownTableBodyNone">170 </td><td class="markdownTableBodyNone">170 </td></tr>
|
|
<tr class="markdownTableRowEven">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 8 dir lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">171 </td><td class="markdownTableBodyNone">171 </td></tr>
|
|
<tr class="markdownTableRowOdd">
|
|
<td class="markdownTableBodyNone">Light dir xfrm, 9 dir lts </td><td class="markdownTableBodyNone">Can't </td><td class="markdownTableBodyNone">196 </td><td class="markdownTableBodyNone">196 </td></tr>
|
|
</table>
|
|
<h2><a class="anchor" id="autotoc_md40"></a>
|
|
Triangle Snake Cycle Counts</h2>
|
|
<p>With the recent F3DEX3 updates bringing significant RSP time savings in command dispatch and triangle draw, triangle snakes are unfortuantely no longer competitive in RSP time.</p>
|
|
<p>Suppose we have two tris which are offscreen. If drawn with <code>SP2Triangles</code>, this is 10 cycles for command dispatch, 21 cycles to cull the first tri, and 20 cycles to cull the second, for a total of 51 cycles. If drawn as part of a long triangle snake, the triangle snake processing adds 10 or 11 cycles relative to the <code>SP2Triangles</code> first or second triangle respectively. So this is 31 cycles to cull each triangle, for a total of 61 cycles.</p>
|
|
<p>It gets worse for snakes when counting the overhead of starting and ending a snake, which have also gotten worse with the recent changes bringing triangle performance improvements. I used to have a long discussion here computing estimated performance for switching to snakes, but the numbers have all changed and they were imprecise to begin with. The upshot is for a typical scene, switching everything from <code>SP2Triangles</code> to snakes might save about 70 us of RDRAM/RDP time but cost about 400 us of RSP time.</p>
|
|
<p>However, note that in F3DEX2, <code>SP2Triangles</code> to two offscreen triangles is 12+28+27 = 67 cycles. F3DEX3 is so much faster than F3DEX2 that even the performance penalty of snakes doesn't outweigh this. </p>
|
|
</div></div><!-- contents -->
|
|
</div><!-- PageDoc -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="md_docs_2documentation.html">Documentation</a></li>
|
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.11.0 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|