1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<html xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <meta http-equiv="Content-Style-Type" content="text/css" /> 6 <link rel="stylesheet" href="../css/manpage.css" type="text/css" /> 7 <style type="text/css"><!-- 8 span.static_style 9 { 10 font-size : 8pt; 11 color : white; 12 font-weight : bold; 13 background : #44f; 14 border-left : solid 1px #aaf; 15 border-top : solid 1px #aaf; 16 border-right : solid 1px #00c; 17 border-bottom : solid 1px #00c; 18 padding-left : 2px; 19 padding-right : 2px; 20 } 21 22 span.virtual_style 23 { 24 font-size : 8pt; 25 color : white; 26 font-weight : bold; 27 background : #0a0; 28 border-left : solid 1px #0f0; 29 border-top : solid 1px #0f0; 30 border-right : solid 1px #060; 31 border-bottom : solid 1px #060; 32 padding-left : 2px; 33 padding-right : 2px; 34 } 35 36 span.protected_style 37 { 38 font-size : 8pt; 39 color : white; 40 font-weight : bold; 41 background : #444; 42 border-left : solid 1px #ccc; 43 border-top : solid 1px #ccc; 44 border-right : solid 1px #222; 45 border-bottom : solid 1px #222; 46 padding-left : 2px; 47 padding-right : 2px; 48 } 49 --></style> 50 <title>gx Raw </title> 51 </head> 52 <body> 53<h1>gx Raw</h1> 54<h2>Description</h2> 55 <div class="section"> 56 <p>This is the directly specified command list version of the DMPGL system API.</p><p> 57 The <CODE>gx Raw</CODE> API is a group of functions that enable the command list-related controls of the <CODE>gx</CODE> API to be processed in the form of directly specified command list objects. 58 </p><p> 59 With the existing <CODE>gx</CODE> API, command list processing adheres to OpenGL style rules: you specify the IDs for objects allocated in the library and use them in a bound form. The code for the use of command lists looks something like this: 60 </p><code><pre> 61// For saving the command list ID 62GLuint s_MyCmdListId; 63 64{ 65 // Prepare a new command list. 66 nngxGenCmdlists(1, &s_MyCmdListId); 67 68 nngxBindCmdlist(s_MyCmdListId); 69 nngxCmdlistStorage(MY_CMDLIST_BUFFER_SIZE, MY_CMDLIST_NUM_REQUESTS); 70 nngxClearCmdlist(); 71} 72 73{ 74 // Run the command list. 75 nngxBindCmdlist(s_MyCmdListId); 76 nngxRunCmdlist(); 77} 78 79{ 80 // Destroy the command list. 81 nngxDeleteCmdlists(1, &s_MyCmdListId); 82} 83 </pre></code><p> 84In contrast, with this <CODE>gx Raw</CODE> function group, the definition of the <CODE>nngxCommandList</CODE> structure that maintains command list management information is provided, and the various functions are called with a pointer to an object of this type given as the first argument. In this case, the code for performing this same kind of process looks something like this: 85 </p><code><pre> 86// Allocate command list object. 87nngxCommandList s_MyCmdListObj; 88 89{ 90 // Prepare a new command list. 91 GLsizei reqSize; 92 GLvoid* pCmdBuffer; 93 GLvoid* pReqBuffer; 94 95 // The application allocates the required buffer region. 96 reqSize = nngxGetCommandRequestSizeRaw(MY_CMDLIST_NUM_REQUESTS); 97 pCmdBuffer = MyAlloc(MY_CMDLIST_BUFFER_SIZE); 98 pReqBuffer = MyAlloc(reqSize); 99 100 nngxCmdlistStorageRaw(&s_MyCmdListObj, pCmdBuffer, MY_CMDLIST_BUFFER_SIZE, pReqBuffer, reqSize); 101 nngxClearCmdlistRaw(&s_MyCmdListObj); 102} 103 104{ 105 // Run the command list. 106 nngxRunCmdlistRaw(&s_MyCmdListObj); 107} 108 109// No need to explicitly destroy the command list. 110 </pre></code><p> 111 Although this requires that the application take complete responsibility for managing the allocating and deallocating of objects and buffer regions, it gives you more freedom to build a framework that is not dependent on the state inside the library. 112 </p><p> 113The provided APIs are named like the existing functions but with "<CODE>Raw</CODE>" appended to the end of the name, and with the added parameter of the pointer to <CODE>nngxCommandList</CODE>. As long as there are no special descriptions, you can read details about operations and errors by reading the references for the existing functions. (Wherever the reference says "the current command list," replace it with "the command list specified by <CODE>nngxCommandList</CODE>.")) 114 </p><h4><B>Note:</B> </h4><ul><li>Because the <CODE>gl</CODE> and <CODE>gd</CODE> APIs operate on the presumption that the command list is bound inside the library, you cannot use those functions in combination with the <CODE>gx Raw</CODE> API. It is assumed the <CODE>gx Raw</CODE> API will be used mainly in combination with the <CODE>gr</CODE> API.</li><li>For the sake of internal implementation, you cannot use copies of <CODE>nngxCommandList</CODE> objects.</li><li>Behavior is not guaranteed if you use normal <CODE>gx</CODE> command list processing functions in combination with <CODE>gx Raw</CODE> functions. However, the following functions are exceptions in that they can be used at the same time as the <CODE>gx Raw</CODE> functions.</li><ul><li><a href="../nn_gx/nngxWaitCmdlistDone.html"><CODE>nngxWaitCmdlistDone</CODE></a></li><li><a href="../nn_gx/nngxSetTimeout.html"><CODE>nngxSetTimeout</CODE></a></li><li><a href="../nn_gx/nngxGetIsRunning.html"><CODE>nngxGetIsRunning</CODE></a></li></ul></ul></div> 115 <a name="struct" id="struct"> 116 <h2>Structures</h2> 117 <div class="section"> 118 <table class="members"> 119 <tr> 120 <th> 121 <a href="../nngxCommandList/Overview.html"><CODE>nngxCommandList</CODE> </a> 122 </th> 123 <td>The structure that maintains command list information.</td> 124 </tr> </table> 125 </div> 126 </a> <a name="function" id="function"> 127 <h2>Functions</h2> 128 <div class="section"> 129 <table class="members"> 130 <tr> 131 <th class="category" colspan="3">Command List Execution Control</th> 132 </tr> 133 <tr> 134 <td width="100"> </td> 135 <th> 136 <a href="../nn_gx_raw/nngxCmdlistStorageRaw.html"><CODE>nngxCmdlistStorageRaw</CODE> </a> 137 </th> 138 <td>Allocates the data region for the specified command list.</td> 139 </tr> 140 <tr> 141 <td width="100"> </td> 142 <th> 143 <a href="../nn_gx_raw/nngxGetCommandRequestSizeRaw.html"><CODE>nngxGetCommandRequestSizeRaw</CODE> </a> 144 </th> 145 <td>Calculates and returns the size of the buffer needed for storing the command list queue data.</td> 146 </tr> 147 <tr> 148 <td width="100"> </td> 149 <th> 150 <a href="../nn_gx_raw/nngxSplitDrawCmdlistRaw.html"><CODE>nngxSplitDrawCmdlistRaw</CODE> </a> 151 </th> 152 <td>Splits the 3D command buffer for the specified command list.</td> 153 </tr> 154 <tr> 155 <td width="100"> </td> 156 <th> 157 <a href="../nn_gx_raw/nngxEnableCmdlistCallbackRaw.html"><CODE>nngxEnableCmdlistCallbackRaw</CODE> </a> 158 </th> 159 <td>Enables an exit callback for the specified command list.</td> 160 </tr> 161 <tr> 162 <td width="100"> </td> 163 <th> 164 <a href="../nn_gx_raw/nngxDisableCmdlistCallbackRaw.html"><CODE>nngxDisableCmdlistCallbackRaw</CODE> </a> 165 </th> 166 <td>Disables an exit callback for the specified command list.</td> 167 </tr> 168 <tr> 169 <td width="100"> </td> 170 <th> 171 <a href="../nn_gx_raw/nngxSetCmdlistCallbackRaw.html"><CODE>nngxSetCmdlistCallbackRaw</CODE> </a> 172 </th> 173 <td>Sets the exit callback function for the specified command list.</td> 174 </tr> 175 <tr> 176 <td width="100"> </td> 177 <th> 178 <a href="../nn_gx_raw/nngxRunCmdlistRaw.html"><CODE>nngxRunCmdlistRaw</CODE> </a> 179 </th> 180 <td>Runs the specified command list.</td> 181 </tr> 182 <tr> 183 <td width="100"> </td> 184 <th> 185 <a href="../nn_gx_raw/nngxReserveStopCmdlistRaw.html"><CODE>nngxReserveStopCmdlistRaw</CODE> </a> 186 </th> 187 <td>Presets the specified command list to stop.</td> 188 </tr> 189 <tr> 190 <td width="100"> </td> 191 <th> 192 <a href="../nn_gx_raw/nngxClearCmdlistRaw.html"><CODE>nngxClearCmdlistRaw</CODE> </a> 193 </th> 194 <td>Clears commands accumulated in the specified command list.</td> 195 </tr> 196 <tr> 197 <td width="100"> </td> 198 <th> 199 <a href="../nn_gx_raw/nngxClearFillCmdlistRaw.html"><CODE>nngxClearFillCmdlistRaw</CODE> </a> 200 </th> 201 <td>Uses the specified value to clear commands accumulated in the specified command list.</td> 202 </tr> 203 <tr> 204 <td width="100"> </td> 205 <th> 206 <a href="../nn_gx_raw/nngxSetGasAutoAccumulationUpdateRaw.html"><CODE>nngxSetGasAutoAccumulationUpdateRaw</CODE> </a> 207 </th> 208 <td>Updates the additive blend result from rendering gas density information for the specified command request handler of the specified command list.</td> 209 </tr> 210 <tr> 211 <td width="100"> </td> 212 <th> 213 <a href="../nn_gx_raw/nngxSetGasUpdateRaw.html"><CODE>nngxSetGasUpdateRaw</CODE> </a> 214 </th> 215 <td>Specifies whether to update the additive blend result from rendering gas density information for the specified command list.</td> 216 </tr> 217 <tr> 218 <td width="100"> </td> 219 <th> 220 <a href="../nn_gx_raw/nngxGetIsRunningRaw.html"><CODE>nngxGetIsRunningRaw</CODE> </a> 221 </th> 222 <td>Checks whether the specified command list is running.</td> 223 </tr> 224 <tr> 225 <td width="100"> </td> 226 <th> 227 <a href="../nn_gx_raw/nngxGetUsedBufferSizeRaw.html"><CODE>nngxGetUsedBufferSizeRaw</CODE> </a> 228 </th> 229 <td>Returns the size of the 3D command buffer accumulated in the specified command list.</td> 230 </tr> 231 <tr> 232 <td width="100"> </td> 233 <th> 234 <a href="../nn_gx_raw/nngxGetUsedRequestCountRaw.html"><CODE>nngxGetUsedRequestCountRaw</CODE> </a> 235 </th> 236 <td>Returns the number of command requests accumulated in the specified command list.</td> 237 </tr> 238 <tr> 239 <td width="100"> </td> 240 <th> 241 <a href="../nn_gx_raw/nngxGetMaxBufferSizeRaw.html"><CODE>nngxGetMaxBufferSizeRaw</CODE> </a> 242 </th> 243 <td>Returns the maximum size of the 3D command buffer that can be accumulated in the specified command list.</td> 244 </tr> 245 <tr> 246 <td width="100"> </td> 247 <th> 248 <a href="../nn_gx_raw/nngxGetMaxRequestCountRaw.html"><CODE>nngxGetMaxRequestCountRaw</CODE> </a> 249 </th> 250 <td>Returns the maximum number of command requests that can be accumulated in the specified command list.</td> 251 </tr> 252 <tr> 253 <td width="100"> </td> 254 <th> 255 <a href="../nn_gx_raw/nngxGetTopBufferAddrRaw.html"><CODE>nngxGetTopBufferAddrRaw</CODE> </a> 256 </th> 257 <td>Returns the starting address of the 3D command buffer that has been set in the specified command list.</td> 258 </tr> 259 <tr> 260 <td width="100"> </td> 261 <th> 262 <a href="../nn_gx_raw/nngxGetRunBufferSizeRaw.html"><CODE>nngxGetRunBufferSizeRaw</CODE> </a> 263 </th> 264 <td>Returns the size of the 3D command buffer that has been executed in the specified command list.</td> 265 </tr> 266 <tr> 267 <td width="100"> </td> 268 <th> 269 <a href="../nn_gx_raw/nngxGetRunRequestCountRaw.html"><CODE>nngxGetRunRequestCountRaw</CODE> </a> 270 </th> 271 <td>Returns the number of command requests that have been executed in the specified command list.</td> 272 </tr> 273 <tr> 274 <td width="100"> </td> 275 <th> 276 <a href="../nn_gx_raw/nngxGetTopRequestAddrRaw.html"><CODE>nngxGetTopRequestAddrRaw</CODE> </a> 277 </th> 278 <td>Returns the starting address of the buffer for storing command request queue data that has been set in the specified command list.</td> 279 </tr> 280 <tr> 281 <td width="100"> </td> 282 <th> 283 <a href="../nn_gx_raw/nngxGetNextRequestTypeRaw.html"><CODE>nngxGetNextRequestTypeRaw</CODE> </a> 284 </th> 285 <td>Returns the type of the next command request that will be executed among those command requests that have accumulated in the specified command list.</td> 286 </tr> 287 <tr> 288 <td width="100"> </td> 289 <th> 290 <a href="../nn_gx_raw/nngxGetNextBufferAddrRaw.html"><CODE>nngxGetNextBufferAddrRaw</CODE> </a> 291 </th> 292<td>Returns the next buffer address to execute in the 3D command buffer accumulated in the specified command list.</td> 293 </tr> 294 <tr> 295 <td width="100"> </td> 296 <th> 297 <a href="../nn_gx_raw/nngxGetNextBufferSizeRaw.html"><CODE>nngxGetNextBufferSizeRaw</CODE> </a> 298 </th> 299<td>Returns the size of the next buffer region to execute in the 3D command buffer accumulated in the specified command list.</td> 300 </tr> 301 <tr> 302 <td width="100"> </td> 303 <th> 304 <a href="../nn_gx_raw/nngxGetCurrentBufferAddrRaw.html"><CODE>nngxGetCurrentBufferAddrRaw</CODE> </a> 305 </th> 306 <td>For the specified command list, returns the 3D command buffer address where the next 3D command will be accumulated.</td> 307 </tr> 308 <tr> 309 <td width="100"> </td> 310 <th> 311 <a href="../nn_gx_raw/nngxGetHWStateRaw.html"><CODE>nngxGetHWStateRaw</CODE> </a> 312 </th> 313 <td>Gets 32 bits of data indicating the hardware state.</td> 314 </tr> 315 <tr> 316 <th class="category" colspan="3">Command Cache Operations</th> 317 </tr> 318 <tr> 319 <td width="100"> </td> 320 <th> 321 <a href="../nn_gx_raw/nngxAdd3DCommandNoCacheFlushRaw.html"><CODE>nngxAdd3DCommandNoCacheFlushRaw</CODE> </a> 322 </th> 323 <td>For the specified command list, adds the data of the specified region (a 3D command) to the 3D command buffer.</td> 324 </tr> 325 <tr> 326 <th class="category" colspan="3">Issuance of Low-Level Command Requests</th> 327 </tr> 328 <tr> 329 <td width="100"> </td> 330 <th> 331 <a href="../nn_gx_raw/nngxFlush3DCommandNoCacheFlushRaw.html"><CODE>nngxFlush3DCommandNoCacheFlushRaw</CODE> </a> 332 </th> 333 <td>Issues a render command request and flushes the accumulated 3D command buffer in the specified command list.</td> 334 </tr> 335 <tr> 336 <td width="100"> </td> 337 <th> 338 <a href="../nn_gx_raw/nngxFlush3DCommandPartiallyRaw.html"><CODE>nngxFlush3DCommandPartiallyRaw</CODE> </a> 339 </th> 340 <td>Issues a render command request and flushes the accumulated 3D command buffer in the specified command list. However, 3D commands are only executed for the specified size.</td> 341 </tr> 342 <tr> 343 <td width="100"> </td> 344 <th> 345 <a href="../nn_gx_raw/nngxMoveCommandbufferPointerRaw.html"><CODE>nngxMoveCommandbufferPointerRaw</CODE> </a> 346 </th> 347 <td>Moves the current output-destination pointer of the 3D command buffer in the specified command list.</td> 348 </tr> 349 <tr> 350 <td width="100"> </td> 351 <th> 352 <a href="../nn_gx_raw/nngxAddB2LTransferCommandRaw.html"><CODE>nngxAddB2LTransferCommandRaw</CODE> </a> 353 </th> 354 <td>Adds a command to the specified command list to convert a block image to a linear image and then transfer it.</td> 355 </tr> 356 <tr> 357 <td width="100"> </td> 358 <th> 359 <a href="../nn_gx_raw/nngxAddBlockImageCopyCommandRaw.html"><CODE>nngxAddBlockImageCopyCommandRaw</CODE> </a> 360 </th> 361 <td>Adds a command to the specified command list to transfer a block image.</td> 362 </tr> 363 <tr> 364 <td width="100"> </td> 365 <th> 366 <a href="../nn_gx_raw/nngxAddL2BTransferCommandRaw.html"><CODE>nngxAddL2BTransferCommandRaw</CODE> </a> 367 </th> 368 <td>Adds a command to the specified command list to convert a linear image to a block image and then transfer it.</td> 369 </tr> 370 <tr> 371 <td width="100"> </td> 372 <th> 373 <a href="../nn_gx_raw/nngxAddMemoryFillCommandRaw.html"><CODE>nngxAddMemoryFillCommandRaw</CODE> </a> 374 </th> 375 <td>Adds a memory-fill command to the specified command list.</td> 376 </tr> 377 <tr> 378 <td width="100"> </td> 379 <th> 380 <a href="../nn_gx_raw/nngxAddVramDmaCommandNoCacheFlushRaw.html"><CODE>nngxAddVramDmaCommandNoCacheFlushRaw</CODE> </a> 381 </th> 382 <td>Adds a DMA transfer command to the specified command list.</td> 383 </tr> 384 <tr> 385 <td width="100"> </td> 386 <th> 387 <a href="../nn_gx_raw/nngxFilterBlockImageRaw.html"><CODE>nngxFilterBlockImageRaw</CODE> </a> 388 </th> 389 <td>Adds a command to the specified command list to transfer a block image anti-aliasing filter.</td> 390 </tr> </table> 391 </div> 392 </a> 393 <h2>Revision History</h2> 394 <div class="section"> 395 <dl class="history"> 396 <dt>2012/06/14</dt> 397<dd>Added a list of the <CODE>gx</CODE> command list processing functions that can be used at the same time as the <CODE>gx Raw</CODE> functions.<br /> 398 </dd> 399 <dt>2012/05/09</dt> 400 <dd>Initial version. <br /> 401 </dd> 402 </dl> 403 </div> 404 <hr><p>CONFIDENTIAL</p></body> 405</html>