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<title>GenerateMipMapsCPU</title> 8 </head> 9 <body> 10<h1><CODE><a href="../../../../../nn/Overview.html">nn</a>::<a href="../../../../../nn/gd/Overview.html">gd</a>::<a href="../../../../../nn/gd/CTR/Overview.html">CTR</a>::<a href="../../../../../nn/gd/CTR/Resource/Overview.html">Resource</a>::<a href="../../../../../nn/gd/CTR/Resource/Helper/Overview.html">Helper</a>::GenerateMipMapsCPU</CODE> Member Function</h1> 11<h2>Syntax</h2> 12 <div class="section"> 13 <pre class="definition"> 14static <a href="../../../../../nnResult/Overview.html">nnResult</a> GenerateMipMapsCPU( 15 <a href="../../../../../nn/gd/CTR/Resource/NativeFormat.html">NativeFormat</a> format, 16 <a href="../../../../../nn_types/u32.html">u32</a> width, 17 <a href="../../../../../nn_types/u32.html">u32</a> height, 18 const <a href="../../../../../nn_types/u8.html">u8</a> * dataSrc, 19 <a href="../../../../../nn_types/u8.html">u8</a> * dataDst, 20 <a href="../../../../../nn_types/u32.html">u32</a> countMipLevelToGenerate 21); 22</pre> 23 </div> 24<h2>Parameters</h2> 25 <div class="section"> 26 <table class="arguments"> 27 <thead> 28 <tr> 29 <td width="15" /> 30<th>Name</th> 31<td>Description</td> 32 </tr> 33 </thead> 34 <tr> 35<td>in</td> 36<th><CODE>format</CODE></th> 37<td>Specifies the source data format.</td> 38 </tr> 39 <tr> 40<td>in</td> 41<th><CODE>width</CODE></th> 42<td>Specifies the source data width. Must be a power of 2 that is 8 or greater.</td> 43 </tr> 44 <tr> 45<td>in</td> 46<th><CODE>height</CODE></th> 47<td>Specifies the source data height. Must be a power of 2 that is 8 or greater.</td> 48 </tr> 49 <tr> 50<td>in</td> 51<th><CODE>dataSrc</CODE></th> 52<td>Specifies the address of the source data for generating the mipmap.</td> 53 </tr> 54 <tr> 55<td>in</td> 56<th><CODE>dataDst</CODE></th> 57<td>Specifies a pointer to the address where the generated mipmap data is stored.</td> 58 </tr> 59 <tr> 60<td>in</td> 61<th><CODE>countMipLevelToGenerate</CODE></th> 62<td>Specifies the number of mipmaps to generate.</td> 63 </tr> </table> 64 </div> 65<h2>Return Values</h2> 66<div class="section">Returns the result of the operation. <br /> 67 <table class="arguments"> 68 <thead> 69 <tr> 70<th>Value</th> 71<td>Description</td> 72 </tr> 73 </thead> 74 <tr> 75<th><CODE>Result::IsSuccess</CODE></th> 76<td>Process was successful.</td> 77 </tr> 78 <tr> 79<th><CODE>ResultNullParameter</CODE></th> 80<td><CODE>NULL</CODE> was specified in an argument.</td> 81 </tr> 82 <tr> 83<th><CODE>ResultInvalidTextureResolution</CODE></th> 84<td>The resolution of the source data must be 8x8 or better and a multiple of 2.</td> 85 </tr> 86 <tr> 87<th><CODE>ResultInvalidTextureMipLevelIndex</CODE></th> 88<td>Invalid number of mipmaps to generate.</td> 89 </tr> 90 <tr> 91<th><CODE>ResultInvalidTextureFormat</CODE></th> 92<td>The source data has an invalid pixel format.</td> 93 </tr> 94 </table> </div> 95<h2>Description</h2> 96 <div class="section"> 97<p>This helper function generates mipmaps using the CPU.</p><p>This function is used the same way as the <CODE>MemoryGenerateMipMaps</CODE> function. However, the <CODE>MemoryGenerateMipMaps</CODE> function executes the mipmap generation request command using the GPU, but the <CODE>ResourceHelper::GenerateMipMapsCPU</CODE> function performs mipmap calculations on the CPU. The drawback is that the <itemizedlist><listitem><para><a href="../../../../../nn/gd/CTR/Resource/Helper/GenerateMipMapsCPU.html">Resource::Helper::GenerateMipMapsCPU</a> function is slower than the <CODE>MemoryGenerateMipMaps</CODE> function.</para></listitem><listitem><para>If the 3D command or data transfer command to be executed will change the source data, the current command buffer execution must finish before the <CODE>ResourceHelper::GenerateMipMapsCPU</CODE> function is executed. Advantages: For the <CODE><a href="../../../../../nn/gd/CTR/Memory/GenerateMipMaps.html">Memory::GenerateMipMaps</a></CODE> function, the resolution of the generated mipmap must be 32 or better. However, for the <CODE>ResourceHelper::GenerateMipMapsCPU</CODE> function, the minimum generated mipmap resolution is 8. The memory layout of the data source is LAYOUT_BLOCK_8 and the format of the data source is native format. The formats that can be used are:<br /></para></listitem></itemizedlist></p><p>NATIVE_FORMAT_RGBA_8888 <br /><itemizedlist><listitem><para>NATIVE_FORMAT_RGB_888 <br /></para></listitem><listitem><para>NATIVE_FORMAT_RGBA_4444 <br /></para></listitem><listitem><para>NATIVE_FORMAT_RGBA_5551 <br /></para></listitem><listitem><para>NATIVE_FORMAT_RGB_565 <br /></para></listitem><listitem><para>NATIVE_FORMAT_LUMINANCE_ALPHA_88 <br /></para></listitem><listitem><para>NATIVE_FORMAT_HILO_88 <br /></para></listitem><listitem><para>NATIVE_FORMAT_LUMINANCE_8 <br /></para></listitem><listitem><para>NATIVE_FORMAT_ALPHA_8 <br /></para></listitem><listitem><para>NATIVE_FORMAT_LUMINANCE_ALPHA_44 <br /></para></listitem></itemizedlist></p><p>All mipmaps are created contiguously in memory. You must allocate enough memory to the address area for mipmap generation to store all the mipmaps. The memory area size required to store one mipmap level is as follows: <CODE>memSize = (srcWidth >> 1) * (srcHeight >> 1) * formatBpp</CODE><BR><CODE>memSize</CODE> is the size of the memory in bytes; <CODE>srcWidth</CODE> and <CODE>srcHeight</CODE> are the source resolution. <CODE>formatBpp</CODE> is the number of pixel bytes used for pixel encoding. For example, if the number of mipmaps to generate is 2, then you must allocate at least enough memory for mipmap generation to hold the size calculated below.<BR><CODE>memSize = ((srcWidth >> 1) * (srcHeight >> 1) * formatBpp) + ((srcWidth >> 2) * (srcHeight >> 2) * formatBpp)</CODE></p><!-- write here --></div> 98<h2>Revision History</h2> 99 <div class="section"> 100 <dl class="history"> 101 <dt>2011/06/03</dt> 102<dd>Initial version.<br /> 103 </dd> 104 </dl> 105 </div> 106 <hr><p>CONFIDENTIAL</p></body> 107</html>