libctru/gspgpu_8h_source.html
2024-11-03 20:36:34 +00:00

412 lines
80 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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libctru: include/3ds/services/gspgpu.h Source File</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>
<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>
<link href="doxygen.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 style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libctru
&#160;<span id="projectnumber">v2.4.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_d475325f6a9fe3bfc3a495c72a9e475e.html">3ds</a></li><li class="navelem"><a class="el" href="dir_0e005207343684f6967052d1f51a7e66.html">services</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">gspgpu.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="gspgpu_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * @file gspgpu.h</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * @brief GSPGPU service.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a69ce16dabc811ea71517f94b24d3cb73"> 7</a></span>&#160;<span class="preprocessor">#define GSP_SCREEN_TOP 0 </span><span class="comment">///&lt; ID of the top screen.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a1fc769abd26ac3eb5e84fb88447c5628"> 8</a></span>&#160;<span class="preprocessor">#define GSP_SCREEN_BOTTOM 1 </span><span class="comment">///&lt; ID of the bottom screen.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a18a802efce37d4517fa69e09a142b7da"> 9</a></span>&#160;<span class="preprocessor">#define GSP_SCREEN_WIDTH 240 </span><span class="comment">///&lt; Width of the top/bottom screens.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#abfc0d039acdc290e47c773d43b1d68fa"> 10</a></span>&#160;<span class="preprocessor">#define GSP_SCREEN_HEIGHT_TOP 400 </span><span class="comment">///&lt; Height of the top screen.</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a793006fa469cb1bc7e09db8cf6e07c81"> 11</a></span>&#160;<span class="preprocessor">#define GSP_SCREEN_HEIGHT_TOP_2X 800 </span><span class="comment">///&lt; Height of the top screen (2x).</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ab0cb156cd5b9715768787f063e761a04"> 12</a></span>&#160;<span class="preprocessor">#define GSP_SCREEN_HEIGHT_BOTTOM 320 </span><span class="comment">///&lt; Height of the bottom screen.</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">/// Framebuffer information.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html"> 15</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;{</div>
<div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html#a966cb16d7e86079ed888fc57bdbccaa3"> 17</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structGSPGPU__FramebufferInfo.html#a966cb16d7e86079ed888fc57bdbccaa3">active_framebuf</a>; <span class="comment">///&lt; Active framebuffer. (0 = first, 1 = second)</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html#a5dba8a35ac953e10653ac8e745cb208f"> 18</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *<a class="code" href="structGSPGPU__FramebufferInfo.html#a5dba8a35ac953e10653ac8e745cb208f">framebuf0_vaddr</a>; <span class="comment">///&lt; Framebuffer virtual address, for the main screen this is the 3D left framebuffer.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html#ab29deb55a9b0454de1988172319f246f"> 19</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *<a class="code" href="structGSPGPU__FramebufferInfo.html#ab29deb55a9b0454de1988172319f246f">framebuf1_vaddr</a>; <span class="comment">///&lt; For the main screen: 3D right framebuffer address.</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html#a3e7dac9d79cad31182a4c325f780ffb6"> 20</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structGSPGPU__FramebufferInfo.html#a3e7dac9d79cad31182a4c325f780ffb6">framebuf_widthbytesize</a>; <span class="comment">///&lt; Value for 0x1EF00X90, controls framebuffer width.</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html#a4e0899ea0a76864a9268a8a938b122ec"> 21</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structGSPGPU__FramebufferInfo.html#a4e0899ea0a76864a9268a8a938b122ec">format</a>; <span class="comment">///&lt; Framebuffer format, this u16 is written to the low u16 for LCD register 0x1EF00X70.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html#ad33ec3ca41e404b967416c78c7aa7db8"> 22</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structGSPGPU__FramebufferInfo.html#ad33ec3ca41e404b967416c78c7aa7db8">framebuf_dispselect</a>; <span class="comment">///&lt; Value for 0x1EF00X78, controls which framebuffer is displayed.</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="structGSPGPU__FramebufferInfo.html#a1794be4dc30dcf32ff0c2fb2ef7a5841"> 23</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structGSPGPU__FramebufferInfo.html#a1794be4dc30dcf32ff0c2fb2ef7a5841">unk</a>; <span class="comment">///&lt; Unknown.</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;} <a class="code" href="structGSPGPU__FramebufferInfo.html">GSPGPU_FramebufferInfo</a>;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">/// Framebuffer format.</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36b"> 27</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">enum</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36babcae9c454df64644542ee85d4460647f"> 29</a></span>&#160; <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36babcae9c454df64644542ee85d4460647f">GSP_RGBA8_OES</a>=0, <span class="comment">///&lt; RGBA8. (4 bytes)</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7e2e54f5d000504cd971d23bf2d2b58f"> 30</a></span>&#160; <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7e2e54f5d000504cd971d23bf2d2b58f">GSP_BGR8_OES</a>=1, <span class="comment">///&lt; BGR8. (3 bytes)</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36baf2acd7de248add1481404d4cd1fdf816"> 31</a></span>&#160; <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36baf2acd7de248add1481404d4cd1fdf816">GSP_RGB565_OES</a>=2, <span class="comment">///&lt; RGB565. (2 bytes)</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba6262e1f07384fcc538113978d5c8a6b8"> 32</a></span>&#160; <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba6262e1f07384fcc538113978d5c8a6b8">GSP_RGB5_A1_OES</a>=3, <span class="comment">///&lt; RGB5A1. (2 bytes)</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7d05a3900d34338a30c681f67c35093b">GSP_RGBA4_OES</a>=4 <span class="comment">///&lt; RGBA4. (2 bytes)</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7d05a3900d34338a30c681f67c35093b"> 34</a></span>&#160;} <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36b">GSPGPU_FramebufferFormat</a>;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">/// Capture info entry.</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="structGSPGPU__CaptureInfoEntry.html"> 37</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="structGSPGPU__CaptureInfoEntry.html#a6dd072baeeb8a0d385e712f7155fb002"> 39</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *<a class="code" href="structGSPGPU__CaptureInfoEntry.html#a6dd072baeeb8a0d385e712f7155fb002">framebuf0_vaddr</a>; <span class="comment">///&lt; Left framebuffer.</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="structGSPGPU__CaptureInfoEntry.html#a09e23bcfb56d75309bf7a547b85c56b0"> 40</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> *<a class="code" href="structGSPGPU__CaptureInfoEntry.html#a09e23bcfb56d75309bf7a547b85c56b0">framebuf1_vaddr</a>; <span class="comment">///&lt; Right framebuffer.</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="structGSPGPU__CaptureInfoEntry.html#a067ad2df1b3b46e4e06b26f8f905bdd0"> 41</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structGSPGPU__CaptureInfoEntry.html#a067ad2df1b3b46e4e06b26f8f905bdd0">format</a>; <span class="comment">///&lt; Framebuffer format.</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="structGSPGPU__CaptureInfoEntry.html#ae9d2aa171cdc8607485e22543cf7ed66"> 42</a></span>&#160; <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> <a class="code" href="structGSPGPU__CaptureInfoEntry.html#ae9d2aa171cdc8607485e22543cf7ed66">framebuf_widthbytesize</a>; <span class="comment">///&lt; Framebuffer pitch.</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;} <a class="code" href="structGSPGPU__CaptureInfoEntry.html">GSPGPU_CaptureInfoEntry</a>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/// Capture info.</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structGSPGPU__CaptureInfo.html"> 46</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structGSPGPU__CaptureInfo.html#aed2556cc309dde56f06ad13023cfe406"> 48</a></span>&#160; <a class="code" href="structGSPGPU__CaptureInfoEntry.html">GSPGPU_CaptureInfoEntry</a> screencapture[2]; <span class="comment">///&lt; Capture info entries, one for each screen.</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;} <a class="code" href="structGSPGPU__CaptureInfo.html">GSPGPU_CaptureInfo</a>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">/// GSPGPU events.</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cb"> 52</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">enum</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;{</div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba8df851fc136cf036038889661d574a78"> 54</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba8df851fc136cf036038889661d574a78">GSPGPU_EVENT_PSC0</a> = 0, <span class="comment">///&lt; Memory fill completed.</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba96ec398a3845579fe3bdb7259ec8b8b2"> 55</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba96ec398a3845579fe3bdb7259ec8b8b2">GSPGPU_EVENT_PSC1</a>, <span class="comment">///&lt; TODO</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba6b9085683ccf233f10da885153998dc6"> 56</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba6b9085683ccf233f10da885153998dc6">GSPGPU_EVENT_VBlank0</a>, <span class="comment">///&lt; TODO</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cbac37987948ea2cd5ff82bd428857ee95f"> 57</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cbac37987948ea2cd5ff82bd428857ee95f">GSPGPU_EVENT_VBlank1</a>, <span class="comment">///&lt; TODO</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba5f7bd78a3019e3d57bac1cfee8cef768"> 58</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba5f7bd78a3019e3d57bac1cfee8cef768">GSPGPU_EVENT_PPF</a>, <span class="comment">///&lt; Display transfer finished.</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cbae99eb38dedd3b63fb501bb4c0a2d644e"> 59</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cbae99eb38dedd3b63fb501bb4c0a2d644e">GSPGPU_EVENT_P3D</a>, <span class="comment">///&lt; Command list processing finished.</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba767fab5a8e58912ea84f192dff6926af"> 60</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba767fab5a8e58912ea84f192dff6926af">GSPGPU_EVENT_DMA</a>, <span class="comment">///&lt; TODO</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba1bf23df97456715e279a4254b39c49b2"> 62</a></span>&#160; <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba1bf23df97456715e279a4254b39c49b2">GSPGPU_EVENT_MAX</a>, <span class="comment">///&lt; Used to know how many events there are.</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;} <a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cb">GSPGPU_Event</a>;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * @brief Gets the number of bytes per pixel for the specified format.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * @param format See \ref GSPGPU_FramebufferFormat.</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * @return Bytes per pixel.</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a7d03f7255091e4cfe52d423903085b24"> 70</a></span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="gspgpu_8h.html#a7d03f7255091e4cfe52d423903085b24">gspGetBytesPerPixel</a>(<a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36b">GSPGPU_FramebufferFormat</a> format)</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">switch</span> (format)</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36babcae9c454df64644542ee85d4460647f">GSP_RGBA8_OES</a>:</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> 4;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">case</span> <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7e2e54f5d000504cd971d23bf2d2b58f">GSP_BGR8_OES</a>:</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> 3;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">case</span> <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36baf2acd7de248add1481404d4cd1fdf816">GSP_RGB565_OES</a>:</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">case</span> <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba6262e1f07384fcc538113978d5c8a6b8">GSP_RGB5_A1_OES</a>:</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">case</span> <a class="code" href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7d05a3900d34338a30c681f67c35093b">GSP_RGBA4_OES</a>:</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> 2;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">/// Initializes GSPGPU.</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a0156b0b24d27e1e93f6c92e75c1addd3"> 87</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a0156b0b24d27e1e93f6c92e75c1addd3">gspInit</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">/// Exits GSPGPU.</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a1de71253d8f3e3ea0f504ab6cc621f98"> 90</a></span>&#160;<span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="gspgpu_8h.html#a1de71253d8f3e3ea0f504ab6cc621f98">gspExit</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> * @brief Gets a pointer to the current gsp::Gpu session handle.</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * @return A pointer to the current gsp::Gpu session handle.</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a4e7a35446a15c2cbe6f37109f2c9ff4c"> 96</a></span>&#160;<a class="code" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> *<a class="code" href="gspgpu_8h.html#a4e7a35446a15c2cbe6f37109f2c9ff4c">gspGetSessionHandle</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">/// Returns true if the application currently has GPU rights.</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#aa72b3de059f90ef6d07672269381686f"> 99</a></span>&#160;<span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="gspgpu_8h.html#aa72b3de059f90ef6d07672269381686f">gspHasGpuRight</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * @brief Presents a buffer to the specified screen.</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * @param screen Screen ID (see \ref GSP_SCREEN_TOP and \ref GSP_SCREEN_BOTTOM)</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * @param swap Specifies which set of framebuffer registers to configure and activate (0 or 1)</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> * @param fb_a Pointer to the framebuffer (in stereo mode: left eye)</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * @param fb_b Pointer to the secondary framebuffer (only used in stereo mode for the right eye, otherwise pass the same as fb_a)</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * @param stride Stride in bytes between scanlines</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * @param mode Mode configuration to be written to LCD register</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * @return true if a buffer had already been presented to the screen but not processed yet by GSP, false otherwise.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> * @note The most recently presented buffer is processed and configured during the specified screen&#39;s next VBlank event.</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ac09cf36ea68fa2b035bb898e7a4cc333"> 112</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="gspgpu_8h.html#ac09cf36ea68fa2b035bb898e7a4cc333">gspPresentBuffer</a>(<span class="keywordtype">unsigned</span> screen, <span class="keywordtype">unsigned</span> swap, <span class="keyword">const</span> <span class="keywordtype">void</span>* fb_a, <span class="keyword">const</span> <span class="keywordtype">void</span>* fb_b, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> stride, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> mode);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * @brief Returns true if a prior \ref gspPresentBuffer command is still pending to be processed by GSP.</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * @param screen Screen ID (see \ref GSP_SCREEN_TOP and \ref GSP_SCREEN_BOTTOM)</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a00c4c184a1c48cca1e823debcfe80aeb"> 118</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="gspgpu_8h.html#a00c4c184a1c48cca1e823debcfe80aeb">gspIsPresentPending</a>(<span class="keywordtype">unsigned</span> screen);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> * @brief Configures a callback to run when a GSPGPU event occurs.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * @param id ID of the event.</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> * @param cb Callback to run.</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * @param data Data to be passed to the callback.</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * @param oneShot When true, the callback is only executed once. When false, the callback is executed every time the event occurs.</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a38080f47e69bd240156ca043c7946b29"> 127</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="gspgpu_8h.html#a38080f47e69bd240156ca043c7946b29">gspSetEventCallback</a>(<a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cb">GSPGPU_Event</a> <span class="keywordtype">id</span>, <a class="code" href="types_8h.html#a857e4e893f41191500e83c00058df64e">ThreadFunc</a> cb, <span class="keywordtype">void</span>* data, <span class="keywordtype">bool</span> oneShot);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * @brief Waits for a GSPGPU event to occur.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> * @param id ID of the event.</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> * @param nextEvent Whether to discard the current event and wait for the next event.</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a91a03ad378747bc554ff611742727958"> 134</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="gspgpu_8h.html#a91a03ad378747bc554ff611742727958">gspWaitForEvent</a>(<a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cb">GSPGPU_Event</a> <span class="keywordtype">id</span>, <span class="keywordtype">bool</span> nextEvent);</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> * @brief Waits for any GSPGPU event to occur.</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * @return The ID of the event that occurred.</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * The function returns immediately if there are unprocessed events at the time of call.</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a7280943da0262bb75eacc779bf54be87"> 142</a></span>&#160;<a class="code" href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cb">GSPGPU_Event</a> <a class="code" href="gspgpu_8h.html#a7280943da0262bb75eacc779bf54be87">gspWaitForAnyEvent</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">/// Waits for PSC0</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a704e891a5d988f4964c24dc2b8bac787"> 145</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForPSC0() gspWaitForEvent(GSPGPU_EVENT_PSC0, false)</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">/// Waits for PSC1</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a8a6e23746817c80d092cefd439d490f6"> 148</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForPSC1() gspWaitForEvent(GSPGPU_EVENT_PSC1, false)</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">/// Waits for VBlank.</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#abf0a992835649b5fe90e95d8a58b8c45"> 151</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForVBlank() gspWaitForVBlank0()</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">/// Waits for VBlank0.</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ac999e7889bfe880d47ef787aa4ad36ff"> 154</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForVBlank0() gspWaitForEvent(GSPGPU_EVENT_VBlank0, true)</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment">/// Waits for VBlank1.</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a109b22fd311cb108387d59c298d5acef"> 157</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForVBlank1() gspWaitForEvent(GSPGPU_EVENT_VBlank1, true)</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">/// Waits for PPF.</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a2f2aca81b76a88b6ebb121ec54f76b7e"> 160</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForPPF() gspWaitForEvent(GSPGPU_EVENT_PPF, false)</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">/// Waits for P3D.</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#aba84a82e0137f5dc7a5c9d0ece41d9b7"> 163</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForP3D() gspWaitForEvent(GSPGPU_EVENT_P3D, false)</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">/// Waits for DMA.</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a95267f3508badebdcd0788cf262c99d8"> 166</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define gspWaitForDMA() gspWaitForEvent(GSPGPU_EVENT_DMA, false)</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> * @brief Submits a GX command.</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * @param gxCommand GX command to execute.</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a4b46f68de3b67e3ed9a7c5125cb12d8e"> 172</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a4b46f68de3b67e3ed9a7c5125cb12d8e">gspSubmitGxCommand</a>(<span class="keyword">const</span> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> gxCommand[0x8]);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * @brief Acquires GPU rights.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> * @param flags Flags to acquire with.</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a317950e5ea5dabed8569ae5683075fc6"> 178</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a317950e5ea5dabed8569ae5683075fc6">GSPGPU_AcquireRight</a>(<a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> flags);</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">/// Releases GPU rights.</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#aa163710b32591debd191e2cbf04e5374"> 181</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#aa163710b32591debd191e2cbf04e5374">GSPGPU_ReleaseRight</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> * @brief Retrieves display capture info.</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> * @param captureinfo Pointer to output capture info to.</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a6677e4b4467934a07320c556f4d103f2"> 187</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a6677e4b4467934a07320c556f4d103f2">GSPGPU_ImportDisplayCaptureInfo</a>(<a class="code" href="structGSPGPU__CaptureInfo.html">GSPGPU_CaptureInfo</a>* captureinfo);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment">/// Saves the VRAM sys area.</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a6217cefdce79c05f2ae4fdadfac817b0"> 190</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a6217cefdce79c05f2ae4fdadfac817b0">GSPGPU_SaveVramSysArea</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">/// Resets the GPU</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ae4c31cd3321a5f5c5811ba3bdd3e200d"> 193</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#ae4c31cd3321a5f5c5811ba3bdd3e200d">GSPGPU_ResetGpuCore</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment">/// Restores the VRAM sys area.</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a663f1bd4b15c96bf426ccbda06810fba"> 196</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a663f1bd4b15c96bf426ccbda06810fba">GSPGPU_RestoreVramSysArea</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * @brief Sets whether to force the LCD to black.</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> * @param flags Whether to force the LCD to black. (0 = no, non-zero = yes)</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a0be2d830a9eccca7b59bf927b7c5e002"> 202</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a0be2d830a9eccca7b59bf927b7c5e002">GSPGPU_SetLcdForceBlack</a>(<a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> flags);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> * @brief Updates a screen&#39;s framebuffer state.</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * @param screenid ID of the screen to update.</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * @param framebufinfo Framebuffer information to update with.</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#aee48318b76d5ef9257940b4e35eaf375"> 209</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#aee48318b76d5ef9257940b4e35eaf375">GSPGPU_SetBufferSwap</a>(<a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> screenid, <span class="keyword">const</span> <a class="code" href="structGSPGPU__FramebufferInfo.html">GSPGPU_FramebufferInfo</a>* framebufinfo);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> * @brief Flushes memory from the data cache.</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> * @param adr Address to flush.</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> * @param size Size of the memory to flush.</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a24f1c78fad4e1108ddc56fb3674cdba2"> 216</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a24f1c78fad4e1108ddc56fb3674cdba2">GSPGPU_FlushDataCache</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* adr, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> size);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment"> * @brief Invalidates memory in the data cache.</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * @param adr Address to invalidate.</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> * @param size Size of the memory to invalidate.</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#abfd8bb5bde8d3072a9041884d599665e"> 223</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#abfd8bb5bde8d3072a9041884d599665e">GSPGPU_InvalidateDataCache</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* adr, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> size);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> * @brief Writes to GPU hardware registers.</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> * @param regAddr Register address to write to.</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> * @param data Data to write.</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> * @param size Size of the data to write.</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a67587eb02d2f0c7e3097e7c79ed04019"> 231</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a67587eb02d2f0c7e3097e7c79ed04019">GSPGPU_WriteHWRegs</a>(<a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> regAddr, <span class="keyword">const</span> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a>* data, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> size);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> * @brief Writes to GPU hardware registers with a mask.</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> * @param regAddr Register address to write to.</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * @param data Data to write.</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * @param datasize Size of the data to write.</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> * @param maskdata Data of the mask.</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * @param masksize Size of the mask.</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ad72f4c2b9e9027265e7050d9f38c4293"> 241</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#ad72f4c2b9e9027265e7050d9f38c4293">GSPGPU_WriteHWRegsWithMask</a>(<a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> regAddr, <span class="keyword">const</span> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a>* data, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> datasize, <span class="keyword">const</span> <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a>* maskdata, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> masksize);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> * @brief Reads from GPU hardware registers.</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"> * @param regAddr Register address to read from.</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment"> * @param data Buffer to read data to.</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"> * @param size Size of the buffer.</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#ae554cb598da7d9be11dd4345902c43a5"> 249</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#ae554cb598da7d9be11dd4345902c43a5">GSPGPU_ReadHWRegs</a>(<a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> regAddr, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a>* data, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a> size);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> * @brief Registers the interrupt relay queue.</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> * @param eventHandle Handle of the GX command event.</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * @param flags Flags to register with.</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> * @param outMemHandle Pointer to output the shared memory handle to.</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> * @param threadID Pointer to output the GSP thread ID to.</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a5ebccf501024a721b2f1ff96abe397ff"> 258</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a5ebccf501024a721b2f1ff96abe397ff">GSPGPU_RegisterInterruptRelayQueue</a>(<a class="code" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a> eventHandle, <a class="code" href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a> flags, <a class="code" href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a>* outMemHandle, <a class="code" href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a>* threadID);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment">/// Unregisters the interrupt relay queue.</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a70ca61cd22140cadbf54c55da13eb48c"> 261</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a70ca61cd22140cadbf54c55da13eb48c">GSPGPU_UnregisterInterruptRelayQueue</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment">/// Triggers a handling of commands written to shared memory.</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#aa5d37db7ffdd14031b5f19c6de49f933"> 264</a></span>&#160;<span class="comment"></span><a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#aa5d37db7ffdd14031b5f19c6de49f933">GSPGPU_TriggerCmdReqQueue</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"></span> </div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment">/**</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> * @brief Sets 3D_LEDSTATE to the input state value.</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"> * @param disable False = 3D LED enable, true = 3D LED disable.</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="gspgpu_8h.html#a5ded369891b53dc76be633e690cb13d1"> 270</a></span>&#160;<a class="code" href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a> <a class="code" href="gspgpu_8h.html#a5ded369891b53dc76be633e690cb13d1">GSPGPU_SetLedForceOff</a>(<span class="keywordtype">bool</span> disable);</div>
<div class="ttc" id="agspgpu_8h_html_a00c4c184a1c48cca1e823debcfe80aeb"><div class="ttname"><a href="gspgpu_8h.html#a00c4c184a1c48cca1e823debcfe80aeb">gspIsPresentPending</a></div><div class="ttdeci">bool gspIsPresentPending(unsigned screen)</div><div class="ttdoc">Returns true if a prior gspPresentBuffer command is still pending to be processed by GSP.</div></div>
<div class="ttc" id="agspgpu_8h_html_a0156b0b24d27e1e93f6c92e75c1addd3"><div class="ttname"><a href="gspgpu_8h.html#a0156b0b24d27e1e93f6c92e75c1addd3">gspInit</a></div><div class="ttdeci">Result gspInit(void)</div><div class="ttdoc">Initializes GSPGPU.</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cb"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cb">GSPGPU_Event</a></div><div class="ttdeci">GSPGPU_Event</div><div class="ttdoc">GSPGPU events.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:53</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cba1bf23df97456715e279a4254b39c49b2"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba1bf23df97456715e279a4254b39c49b2">GSPGPU_EVENT_MAX</a></div><div class="ttdeci">@ GSPGPU_EVENT_MAX</div><div class="ttdoc">Used to know how many events there are.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:62</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cba5f7bd78a3019e3d57bac1cfee8cef768"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba5f7bd78a3019e3d57bac1cfee8cef768">GSPGPU_EVENT_PPF</a></div><div class="ttdeci">@ GSPGPU_EVENT_PPF</div><div class="ttdoc">Display transfer finished.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:58</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cba6b9085683ccf233f10da885153998dc6"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba6b9085683ccf233f10da885153998dc6">GSPGPU_EVENT_VBlank0</a></div><div class="ttdeci">@ GSPGPU_EVENT_VBlank0</div><div class="ttdoc">TODO.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:56</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cba767fab5a8e58912ea84f192dff6926af"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba767fab5a8e58912ea84f192dff6926af">GSPGPU_EVENT_DMA</a></div><div class="ttdeci">@ GSPGPU_EVENT_DMA</div><div class="ttdoc">TODO.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:60</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cba8df851fc136cf036038889661d574a78"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba8df851fc136cf036038889661d574a78">GSPGPU_EVENT_PSC0</a></div><div class="ttdeci">@ GSPGPU_EVENT_PSC0</div><div class="ttdoc">Memory fill completed.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:54</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cba96ec398a3845579fe3bdb7259ec8b8b2"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cba96ec398a3845579fe3bdb7259ec8b8b2">GSPGPU_EVENT_PSC1</a></div><div class="ttdeci">@ GSPGPU_EVENT_PSC1</div><div class="ttdoc">TODO.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:55</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cbac37987948ea2cd5ff82bd428857ee95f"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cbac37987948ea2cd5ff82bd428857ee95f">GSPGPU_EVENT_VBlank1</a></div><div class="ttdeci">@ GSPGPU_EVENT_VBlank1</div><div class="ttdoc">TODO.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:57</div></div>
<div class="ttc" id="agspgpu_8h_html_a02ba699764336c8df7f8910921d478cbae99eb38dedd3b63fb501bb4c0a2d644e"><div class="ttname"><a href="gspgpu_8h.html#a02ba699764336c8df7f8910921d478cbae99eb38dedd3b63fb501bb4c0a2d644e">GSPGPU_EVENT_P3D</a></div><div class="ttdeci">@ GSPGPU_EVENT_P3D</div><div class="ttdoc">Command list processing finished.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:59</div></div>
<div class="ttc" id="agspgpu_8h_html_a0be2d830a9eccca7b59bf927b7c5e002"><div class="ttname"><a href="gspgpu_8h.html#a0be2d830a9eccca7b59bf927b7c5e002">GSPGPU_SetLcdForceBlack</a></div><div class="ttdeci">Result GSPGPU_SetLcdForceBlack(u8 flags)</div><div class="ttdoc">Sets whether to force the LCD to black.</div></div>
<div class="ttc" id="agspgpu_8h_html_a1de71253d8f3e3ea0f504ab6cc621f98"><div class="ttname"><a href="gspgpu_8h.html#a1de71253d8f3e3ea0f504ab6cc621f98">gspExit</a></div><div class="ttdeci">void gspExit(void)</div><div class="ttdoc">Exits GSPGPU.</div></div>
<div class="ttc" id="agspgpu_8h_html_a24f1c78fad4e1108ddc56fb3674cdba2"><div class="ttname"><a href="gspgpu_8h.html#a24f1c78fad4e1108ddc56fb3674cdba2">GSPGPU_FlushDataCache</a></div><div class="ttdeci">Result GSPGPU_FlushDataCache(const void *adr, u32 size)</div><div class="ttdoc">Flushes memory from the data cache.</div></div>
<div class="ttc" id="agspgpu_8h_html_a317950e5ea5dabed8569ae5683075fc6"><div class="ttname"><a href="gspgpu_8h.html#a317950e5ea5dabed8569ae5683075fc6">GSPGPU_AcquireRight</a></div><div class="ttdeci">Result GSPGPU_AcquireRight(u8 flags)</div><div class="ttdoc">Acquires GPU rights.</div></div>
<div class="ttc" id="agspgpu_8h_html_a38080f47e69bd240156ca043c7946b29"><div class="ttname"><a href="gspgpu_8h.html#a38080f47e69bd240156ca043c7946b29">gspSetEventCallback</a></div><div class="ttdeci">void gspSetEventCallback(GSPGPU_Event id, ThreadFunc cb, void *data, bool oneShot)</div><div class="ttdoc">Configures a callback to run when a GSPGPU event occurs.</div></div>
<div class="ttc" id="agspgpu_8h_html_a4b46f68de3b67e3ed9a7c5125cb12d8e"><div class="ttname"><a href="gspgpu_8h.html#a4b46f68de3b67e3ed9a7c5125cb12d8e">gspSubmitGxCommand</a></div><div class="ttdeci">Result gspSubmitGxCommand(const u32 gxCommand[0x8])</div><div class="ttdoc">Submits a GX command.</div></div>
<div class="ttc" id="agspgpu_8h_html_a4e7a35446a15c2cbe6f37109f2c9ff4c"><div class="ttname"><a href="gspgpu_8h.html#a4e7a35446a15c2cbe6f37109f2c9ff4c">gspGetSessionHandle</a></div><div class="ttdeci">Handle * gspGetSessionHandle(void)</div><div class="ttdoc">Gets a pointer to the current gsp::Gpu session handle.</div></div>
<div class="ttc" id="agspgpu_8h_html_a5ded369891b53dc76be633e690cb13d1"><div class="ttname"><a href="gspgpu_8h.html#a5ded369891b53dc76be633e690cb13d1">GSPGPU_SetLedForceOff</a></div><div class="ttdeci">Result GSPGPU_SetLedForceOff(bool disable)</div><div class="ttdoc">Sets 3D_LEDSTATE to the input state value.</div></div>
<div class="ttc" id="agspgpu_8h_html_a5ebccf501024a721b2f1ff96abe397ff"><div class="ttname"><a href="gspgpu_8h.html#a5ebccf501024a721b2f1ff96abe397ff">GSPGPU_RegisterInterruptRelayQueue</a></div><div class="ttdeci">Result GSPGPU_RegisterInterruptRelayQueue(Handle eventHandle, u32 flags, Handle *outMemHandle, u8 *threadID)</div><div class="ttdoc">Registers the interrupt relay queue.</div></div>
<div class="ttc" id="agspgpu_8h_html_a6217cefdce79c05f2ae4fdadfac817b0"><div class="ttname"><a href="gspgpu_8h.html#a6217cefdce79c05f2ae4fdadfac817b0">GSPGPU_SaveVramSysArea</a></div><div class="ttdeci">Result GSPGPU_SaveVramSysArea(void)</div><div class="ttdoc">Saves the VRAM sys area.</div></div>
<div class="ttc" id="agspgpu_8h_html_a663f1bd4b15c96bf426ccbda06810fba"><div class="ttname"><a href="gspgpu_8h.html#a663f1bd4b15c96bf426ccbda06810fba">GSPGPU_RestoreVramSysArea</a></div><div class="ttdeci">Result GSPGPU_RestoreVramSysArea(void)</div><div class="ttdoc">Restores the VRAM sys area.</div></div>
<div class="ttc" id="agspgpu_8h_html_a6677e4b4467934a07320c556f4d103f2"><div class="ttname"><a href="gspgpu_8h.html#a6677e4b4467934a07320c556f4d103f2">GSPGPU_ImportDisplayCaptureInfo</a></div><div class="ttdeci">Result GSPGPU_ImportDisplayCaptureInfo(GSPGPU_CaptureInfo *captureinfo)</div><div class="ttdoc">Retrieves display capture info.</div></div>
<div class="ttc" id="agspgpu_8h_html_a67587eb02d2f0c7e3097e7c79ed04019"><div class="ttname"><a href="gspgpu_8h.html#a67587eb02d2f0c7e3097e7c79ed04019">GSPGPU_WriteHWRegs</a></div><div class="ttdeci">Result GSPGPU_WriteHWRegs(u32 regAddr, const u32 *data, u8 size)</div><div class="ttdoc">Writes to GPU hardware registers.</div></div>
<div class="ttc" id="agspgpu_8h_html_a70ca61cd22140cadbf54c55da13eb48c"><div class="ttname"><a href="gspgpu_8h.html#a70ca61cd22140cadbf54c55da13eb48c">GSPGPU_UnregisterInterruptRelayQueue</a></div><div class="ttdeci">Result GSPGPU_UnregisterInterruptRelayQueue(void)</div><div class="ttdoc">Unregisters the interrupt relay queue.</div></div>
<div class="ttc" id="agspgpu_8h_html_a7280943da0262bb75eacc779bf54be87"><div class="ttname"><a href="gspgpu_8h.html#a7280943da0262bb75eacc779bf54be87">gspWaitForAnyEvent</a></div><div class="ttdeci">GSPGPU_Event gspWaitForAnyEvent(void)</div><div class="ttdoc">Waits for any GSPGPU event to occur.</div></div>
<div class="ttc" id="agspgpu_8h_html_a7d03f7255091e4cfe52d423903085b24"><div class="ttname"><a href="gspgpu_8h.html#a7d03f7255091e4cfe52d423903085b24">gspGetBytesPerPixel</a></div><div class="ttdeci">static unsigned gspGetBytesPerPixel(GSPGPU_FramebufferFormat format)</div><div class="ttdoc">Gets the number of bytes per pixel for the specified format.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:70</div></div>
<div class="ttc" id="agspgpu_8h_html_a91a03ad378747bc554ff611742727958"><div class="ttname"><a href="gspgpu_8h.html#a91a03ad378747bc554ff611742727958">gspWaitForEvent</a></div><div class="ttdeci">void gspWaitForEvent(GSPGPU_Event id, bool nextEvent)</div><div class="ttdoc">Waits for a GSPGPU event to occur.</div></div>
<div class="ttc" id="agspgpu_8h_html_aa163710b32591debd191e2cbf04e5374"><div class="ttname"><a href="gspgpu_8h.html#aa163710b32591debd191e2cbf04e5374">GSPGPU_ReleaseRight</a></div><div class="ttdeci">Result GSPGPU_ReleaseRight(void)</div><div class="ttdoc">Releases GPU rights.</div></div>
<div class="ttc" id="agspgpu_8h_html_aa5d37db7ffdd14031b5f19c6de49f933"><div class="ttname"><a href="gspgpu_8h.html#aa5d37db7ffdd14031b5f19c6de49f933">GSPGPU_TriggerCmdReqQueue</a></div><div class="ttdeci">Result GSPGPU_TriggerCmdReqQueue(void)</div><div class="ttdoc">Triggers a handling of commands written to shared memory.</div></div>
<div class="ttc" id="agspgpu_8h_html_aa72b3de059f90ef6d07672269381686f"><div class="ttname"><a href="gspgpu_8h.html#aa72b3de059f90ef6d07672269381686f">gspHasGpuRight</a></div><div class="ttdeci">bool gspHasGpuRight(void)</div><div class="ttdoc">Returns true if the application currently has GPU rights.</div></div>
<div class="ttc" id="agspgpu_8h_html_abfd8bb5bde8d3072a9041884d599665e"><div class="ttname"><a href="gspgpu_8h.html#abfd8bb5bde8d3072a9041884d599665e">GSPGPU_InvalidateDataCache</a></div><div class="ttdeci">Result GSPGPU_InvalidateDataCache(const void *adr, u32 size)</div><div class="ttdoc">Invalidates memory in the data cache.</div></div>
<div class="ttc" id="agspgpu_8h_html_ac09cf36ea68fa2b035bb898e7a4cc333"><div class="ttname"><a href="gspgpu_8h.html#ac09cf36ea68fa2b035bb898e7a4cc333">gspPresentBuffer</a></div><div class="ttdeci">bool gspPresentBuffer(unsigned screen, unsigned swap, const void *fb_a, const void *fb_b, u32 stride, u32 mode)</div><div class="ttdoc">Presents a buffer to the specified screen.</div></div>
<div class="ttc" id="agspgpu_8h_html_ad72f4c2b9e9027265e7050d9f38c4293"><div class="ttname"><a href="gspgpu_8h.html#ad72f4c2b9e9027265e7050d9f38c4293">GSPGPU_WriteHWRegsWithMask</a></div><div class="ttdeci">Result GSPGPU_WriteHWRegsWithMask(u32 regAddr, const u32 *data, u8 datasize, const u32 *maskdata, u8 masksize)</div><div class="ttdoc">Writes to GPU hardware registers with a mask.</div></div>
<div class="ttc" id="agspgpu_8h_html_ade9eea08a2ad835b9c5d0f7a9164f36b"><div class="ttname"><a href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36b">GSPGPU_FramebufferFormat</a></div><div class="ttdeci">GSPGPU_FramebufferFormat</div><div class="ttdoc">Framebuffer format.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:28</div></div>
<div class="ttc" id="agspgpu_8h_html_ade9eea08a2ad835b9c5d0f7a9164f36ba6262e1f07384fcc538113978d5c8a6b8"><div class="ttname"><a href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba6262e1f07384fcc538113978d5c8a6b8">GSP_RGB5_A1_OES</a></div><div class="ttdeci">@ GSP_RGB5_A1_OES</div><div class="ttdoc">RGB5A1. (2 bytes)</div><div class="ttdef"><b>Definition:</b> gspgpu.h:32</div></div>
<div class="ttc" id="agspgpu_8h_html_ade9eea08a2ad835b9c5d0f7a9164f36ba7d05a3900d34338a30c681f67c35093b"><div class="ttname"><a href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7d05a3900d34338a30c681f67c35093b">GSP_RGBA4_OES</a></div><div class="ttdeci">@ GSP_RGBA4_OES</div><div class="ttdoc">RGBA4. (2 bytes)</div><div class="ttdef"><b>Definition:</b> gspgpu.h:33</div></div>
<div class="ttc" id="agspgpu_8h_html_ade9eea08a2ad835b9c5d0f7a9164f36ba7e2e54f5d000504cd971d23bf2d2b58f"><div class="ttname"><a href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36ba7e2e54f5d000504cd971d23bf2d2b58f">GSP_BGR8_OES</a></div><div class="ttdeci">@ GSP_BGR8_OES</div><div class="ttdoc">BGR8. (3 bytes)</div><div class="ttdef"><b>Definition:</b> gspgpu.h:30</div></div>
<div class="ttc" id="agspgpu_8h_html_ade9eea08a2ad835b9c5d0f7a9164f36babcae9c454df64644542ee85d4460647f"><div class="ttname"><a href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36babcae9c454df64644542ee85d4460647f">GSP_RGBA8_OES</a></div><div class="ttdeci">@ GSP_RGBA8_OES</div><div class="ttdoc">RGBA8. (4 bytes)</div><div class="ttdef"><b>Definition:</b> gspgpu.h:29</div></div>
<div class="ttc" id="agspgpu_8h_html_ade9eea08a2ad835b9c5d0f7a9164f36baf2acd7de248add1481404d4cd1fdf816"><div class="ttname"><a href="gspgpu_8h.html#ade9eea08a2ad835b9c5d0f7a9164f36baf2acd7de248add1481404d4cd1fdf816">GSP_RGB565_OES</a></div><div class="ttdeci">@ GSP_RGB565_OES</div><div class="ttdoc">RGB565. (2 bytes)</div><div class="ttdef"><b>Definition:</b> gspgpu.h:31</div></div>
<div class="ttc" id="agspgpu_8h_html_ae4c31cd3321a5f5c5811ba3bdd3e200d"><div class="ttname"><a href="gspgpu_8h.html#ae4c31cd3321a5f5c5811ba3bdd3e200d">GSPGPU_ResetGpuCore</a></div><div class="ttdeci">Result GSPGPU_ResetGpuCore(void)</div><div class="ttdoc">Resets the GPU.</div></div>
<div class="ttc" id="agspgpu_8h_html_ae554cb598da7d9be11dd4345902c43a5"><div class="ttname"><a href="gspgpu_8h.html#ae554cb598da7d9be11dd4345902c43a5">GSPGPU_ReadHWRegs</a></div><div class="ttdeci">Result GSPGPU_ReadHWRegs(u32 regAddr, u32 *data, u8 size)</div><div class="ttdoc">Reads from GPU hardware registers.</div></div>
<div class="ttc" id="agspgpu_8h_html_aee48318b76d5ef9257940b4e35eaf375"><div class="ttname"><a href="gspgpu_8h.html#aee48318b76d5ef9257940b4e35eaf375">GSPGPU_SetBufferSwap</a></div><div class="ttdeci">Result GSPGPU_SetBufferSwap(u32 screenid, const GSPGPU_FramebufferInfo *framebufinfo)</div><div class="ttdoc">Updates a screen's framebuffer state.</div></div>
<div class="ttc" id="astructGSPGPU__CaptureInfoEntry_html"><div class="ttname"><a href="structGSPGPU__CaptureInfoEntry.html">GSPGPU_CaptureInfoEntry</a></div><div class="ttdoc">Capture info entry.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:38</div></div>
<div class="ttc" id="astructGSPGPU__CaptureInfoEntry_html_a067ad2df1b3b46e4e06b26f8f905bdd0"><div class="ttname"><a href="structGSPGPU__CaptureInfoEntry.html#a067ad2df1b3b46e4e06b26f8f905bdd0">GSPGPU_CaptureInfoEntry::format</a></div><div class="ttdeci">u32 format</div><div class="ttdoc">Framebuffer format.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:41</div></div>
<div class="ttc" id="astructGSPGPU__CaptureInfoEntry_html_a09e23bcfb56d75309bf7a547b85c56b0"><div class="ttname"><a href="structGSPGPU__CaptureInfoEntry.html#a09e23bcfb56d75309bf7a547b85c56b0">GSPGPU_CaptureInfoEntry::framebuf1_vaddr</a></div><div class="ttdeci">u32 * framebuf1_vaddr</div><div class="ttdoc">Right framebuffer.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:40</div></div>
<div class="ttc" id="astructGSPGPU__CaptureInfoEntry_html_a6dd072baeeb8a0d385e712f7155fb002"><div class="ttname"><a href="structGSPGPU__CaptureInfoEntry.html#a6dd072baeeb8a0d385e712f7155fb002">GSPGPU_CaptureInfoEntry::framebuf0_vaddr</a></div><div class="ttdeci">u32 * framebuf0_vaddr</div><div class="ttdoc">Left framebuffer.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:39</div></div>
<div class="ttc" id="astructGSPGPU__CaptureInfoEntry_html_ae9d2aa171cdc8607485e22543cf7ed66"><div class="ttname"><a href="structGSPGPU__CaptureInfoEntry.html#ae9d2aa171cdc8607485e22543cf7ed66">GSPGPU_CaptureInfoEntry::framebuf_widthbytesize</a></div><div class="ttdeci">u32 framebuf_widthbytesize</div><div class="ttdoc">Framebuffer pitch.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:42</div></div>
<div class="ttc" id="astructGSPGPU__CaptureInfo_html"><div class="ttname"><a href="structGSPGPU__CaptureInfo.html">GSPGPU_CaptureInfo</a></div><div class="ttdoc">Capture info.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:47</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html">GSPGPU_FramebufferInfo</a></div><div class="ttdoc">Framebuffer information.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:16</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html_a1794be4dc30dcf32ff0c2fb2ef7a5841"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html#a1794be4dc30dcf32ff0c2fb2ef7a5841">GSPGPU_FramebufferInfo::unk</a></div><div class="ttdeci">u32 unk</div><div class="ttdoc">Unknown.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:23</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html_a3e7dac9d79cad31182a4c325f780ffb6"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html#a3e7dac9d79cad31182a4c325f780ffb6">GSPGPU_FramebufferInfo::framebuf_widthbytesize</a></div><div class="ttdeci">u32 framebuf_widthbytesize</div><div class="ttdoc">Value for 0x1EF00X90, controls framebuffer width.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:20</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html_a4e0899ea0a76864a9268a8a938b122ec"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html#a4e0899ea0a76864a9268a8a938b122ec">GSPGPU_FramebufferInfo::format</a></div><div class="ttdeci">u32 format</div><div class="ttdoc">Framebuffer format, this u16 is written to the low u16 for LCD register 0x1EF00X70.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:21</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html_a5dba8a35ac953e10653ac8e745cb208f"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html#a5dba8a35ac953e10653ac8e745cb208f">GSPGPU_FramebufferInfo::framebuf0_vaddr</a></div><div class="ttdeci">u32 * framebuf0_vaddr</div><div class="ttdoc">Framebuffer virtual address, for the main screen this is the 3D left framebuffer.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:18</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html_a966cb16d7e86079ed888fc57bdbccaa3"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html#a966cb16d7e86079ed888fc57bdbccaa3">GSPGPU_FramebufferInfo::active_framebuf</a></div><div class="ttdeci">u32 active_framebuf</div><div class="ttdoc">Active framebuffer. (0 = first, 1 = second)</div><div class="ttdef"><b>Definition:</b> gspgpu.h:17</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html_ab29deb55a9b0454de1988172319f246f"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html#ab29deb55a9b0454de1988172319f246f">GSPGPU_FramebufferInfo::framebuf1_vaddr</a></div><div class="ttdeci">u32 * framebuf1_vaddr</div><div class="ttdoc">For the main screen: 3D right framebuffer address.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:19</div></div>
<div class="ttc" id="astructGSPGPU__FramebufferInfo_html_ad33ec3ca41e404b967416c78c7aa7db8"><div class="ttname"><a href="structGSPGPU__FramebufferInfo.html#ad33ec3ca41e404b967416c78c7aa7db8">GSPGPU_FramebufferInfo::framebuf_dispselect</a></div><div class="ttdeci">u32 framebuf_dispselect</div><div class="ttdoc">Value for 0x1EF00X78, controls which framebuffer is displayed.</div><div class="ttdef"><b>Definition:</b> gspgpu.h:22</div></div>
<div class="ttc" id="atypes_8h_html_a857e4e893f41191500e83c00058df64e"><div class="ttname"><a href="types_8h.html#a857e4e893f41191500e83c00058df64e">ThreadFunc</a></div><div class="ttdeci">void(* ThreadFunc)(void *)</div><div class="ttdoc">Thread entrypoint function.</div><div class="ttdef"><b>Definition:</b> types.h:43</div></div>
<div class="ttc" id="atypes_8h_html_a92c50087ca0e64fa93fc59402c55f8ca"><div class="ttname"><a href="types_8h.html#a92c50087ca0e64fa93fc59402c55f8ca">u8</a></div><div class="ttdeci">uint8_t u8</div><div class="ttdoc">would be nice if newlib had this already</div><div class="ttdef"><b>Definition:</b> types.h:21</div></div>
<div class="ttc" id="atypes_8h_html_ab6d744c6b5de129f12937e482dc674fb"><div class="ttname"><a href="types_8h.html#ab6d744c6b5de129f12937e482dc674fb">Handle</a></div><div class="ttdeci">u32 Handle</div><div class="ttdoc">Resource handle.</div><div class="ttdef"><b>Definition:</b> types.h:41</div></div>
<div class="ttc" id="atypes_8h_html_ac830bf5a4f2cf8273f61ab99a46cf163"><div class="ttname"><a href="types_8h.html#ac830bf5a4f2cf8273f61ab99a46cf163">Result</a></div><div class="ttdeci">s32 Result</div><div class="ttdoc">Function result.</div><div class="ttdef"><b>Definition:</b> types.h:42</div></div>
<div class="ttc" id="atypes_8h_html_afaa62991928fb9fb18ff0db62a040aba"><div class="ttname"><a href="types_8h.html#afaa62991928fb9fb18ff0db62a040aba">u32</a></div><div class="ttdeci">uint32_t u32</div><div class="ttdoc">32-bit unsigned integer</div><div class="ttdef"><b>Definition:</b> types.h:23</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>