1 /*---------------------------------------------------------------------------* 2 3 Copyright 2010-2011 Nintendo. All rights reserved. 4 5 These coded instructions, statements, and computer programs contain 6 proprietary information of Nintendo of America Inc. and/or Nintendo 7 Company Ltd., and are protected by Federal copyright law. They may 8 not be disclosed to third parties or copied or duplicated in any form, 9 in whole or in part, without the prior written consent of Nintendo. 10 11 *---------------------------------------------------------------------------*/ 12 13 // gx2.h 14 // 15 // Top-level public include file for using GX2 API. 16 17 #ifndef _CAFE_GX2_H_ 18 #define _CAFE_GX2_H_ 19 20 // Special GX2 Doxygen Tags 21 // These special doxygen tags are used to indicate different safety 22 // issues of the various GX2 API calls. For more detailed information 23 // and specific exceptions see the descriptions in the Cafe manual: 24 // 25 // "Graphics -> Main Page -> API Limitations Table" 26 // 27 // \donotcall - Begins a "Do Not Call" from section in HTML 28 // \enddonotcall - Ends a "Do Not Call" from section in HTML 29 // \fgonly - Marks API as callable from foreground only 30 // \threadsafe - Marks API as thread safe 31 // \notthreadsafe - Marks API as not thread safe 32 // \notcallback - Marks API as not callable from a callback 33 // \notinterrupt - Marks API as not callable from an interrupt 34 // \notexception - Marks API as not callable from an exception handler 35 // \multicore - Marks API as callable from multiple cores 36 // \nomulticore - Marks API as callable only from the main graphics core 37 // \userheap - Indicates that API allocates from the user heap 38 // \userheap{1} - Indicates that API allocates from the user heap 39 // \devonly - Marks API as being available on the DEV-kit only 40 // \hostonly - Marks API as being available on the Host only 41 // \notdisplaylist - Marks API as not callable from within a display list 42 // \clobberstate - Indicates that an API clobbers graphics state 43 // \disablesstateshadow - Indicates that an API disables HW state shadowing 44 // \enablesstateshadow - Indicates that an API enables HW state shadowing 45 // \writesgpu - Indicates that an API writes 3D commands 46 // \directwritesgpu - Indicates that an API writes directly to GPU registers 47 // \alwayswritesgpu - Indicates that an API writes 3D commands 48 // \writesgpu{1} - Indicates that an API writes 3D commands with exceptions 49 // \writesdmae - Indicates that an API writes DMAE commands 50 // 51 // 52 // There are also some meta-tags that reference multiple tags in the above 53 // list: 54 // 55 // \gx2_typical - Indicates \fgonly, \notthreadsafe, \notcallback, 56 // \notinterrupt, \notexception and \devonly 57 // \gx2_dl - Same as \gx2_typical except it also includes \notdisplaylist 58 // 59 60 61 /// @defgroup GX2 GX2 Runtime Library 62 63 /// @defgroup GX2ConstGroup Constants 64 /// @ingroup GX2 65 66 /// @defgroup GX2EnumGroup Enums 67 /// @ingroup GX2 68 69 /// @defgroup GX2DrawGroup Draw 70 /// @ingroup GX2 71 /// @defgroup GX2DrawClearGroup Clear 72 /// @ingroup GX2DrawGroup 73 /// @defgroup GX2DrawPrimitiveGroup Primitive 74 /// @ingroup GX2DrawGroup 75 /// @defgroup GX2TessellationGroup Tessellation 76 /// @ingroup GX2DrawGroup 77 /// @defgroup GX2StreamOutGroup Stream Out 78 /// @ingroup GX2DrawGroup 79 80 /// @defgroup GX2ShaderGroup Shaders 81 /// @ingroup GX2 82 /// @defgroup GX2ShaderAllGroup All 83 /// @ingroup GX2ShaderGroup 84 /// @defgroup GX2ShaderVertexGroup Vertex 85 /// @ingroup GX2ShaderGroup 86 /// @defgroup GX2ShaderPixelGroup Pixel 87 /// @ingroup GX2ShaderGroup 88 /// @defgroup GX2ShaderGeometryGroup Geometry 89 /// @ingroup GX2ShaderGroup 90 /// @defgroup GX2ShaderFetchGroup Fetch 91 /// @ingroup GX2ShaderGroup 92 /// @defgroup GX2ShaderComputeGroup Compute 93 /// @ingroup GX2ShaderGroup 94 95 /// @defgroup GX2SurfaceGroup Surface 96 /// @ingroup GX2 97 /// @defgroup GX2SurfaceAllGroup All 98 /// @ingroup GX2SurfaceGroup 99 /// @defgroup GX2SurfaceColorGroup Color 100 /// @ingroup GX2SurfaceGroup 101 /// @defgroup GX2SurfaceDepthGroup Depth 102 /// @ingroup GX2SurfaceGroup 103 /// @defgroup GX2SurfaceCopyGroup Copy & Convert 104 /// @ingroup GX2SurfaceGroup 105 /// @defgroup GX2SurfaceTileGroup Tile Aperture 106 /// @ingroup GX2SurfaceGroup 107 108 /// @defgroup GX2TextureGroup Texture 109 /// @ingroup GX2 110 /// @defgroup GX2TextureSurfaceGroup Surface 111 /// @ingroup GX2TextureGroup 112 /// @defgroup GX2TextureSamplerGroup Sampler 113 /// @ingroup GX2TextureGroup 114 115 /// @defgroup GX2RenderStateGroup RenderState 116 /// @ingroup GX2 117 /// @defgroup GX2RenderStateDepthStencilGroup Depth/Stencil 118 /// @ingroup GX2RenderStateGroup 119 /// @defgroup GX2RenderStatePrimitiveAssemblyGroup Primitive Assembly 120 /// @ingroup GX2RenderStateGroup 121 /// @defgroup GX2RenderStateRenderTargetGroup Render Target 122 /// @ingroup GX2RenderStateGroup 123 /// @defgroup GX2RenderStateRegGroup Register 124 /// @ingroup GX2RenderStateGroup 125 126 /// @defgroup GX2ManagementGroup Management 127 /// @ingroup GX2 128 /// @defgroup GX2ManagementInitGroup Init 129 /// @ingroup GX2ManagementGroup 130 /// @defgroup GX2ManagementContextStateGroup Context State 131 /// @ingroup GX2ManagementGroup 132 /// @defgroup GX2ManagementDLGroup Display List 133 /// @ingroup GX2ManagementGroup 134 /// @defgroup GX2ManagementResetGroup GPU Reset 135 /// @ingroup GX2ManagementGroup 136 /// @defgroup GX2ManagementMemGroup Memory 137 /// @ingroup GX2ManagementGroup 138 /// @defgroup GX2ManagementSyncGroup Synchronization 139 /// @ingroup GX2ManagementGroup 140 /// @defgroup GX2QueryGroup Query 141 /// @ingroup GX2ManagementGroup 142 143 /// @defgroup GX2RGroup Resource Management Layer 144 /// @ingroup GX2 145 146 /// @defgroup GX2DisplayGroup Display 147 /// @ingroup GX2 148 /// @defgroup GX2DisplayInfoGroup Info 149 /// @ingroup GX2DisplayGroup 150 /// @defgroup GX2DisplayConfigGroup Config 151 /// @ingroup GX2DisplayGroup 152 /// @defgroup GX2DisplaySwapGroup Swap 153 /// @ingroup GX2DisplayGroup 154 155 /// @defgroup GX2DebugGroup Debug 156 /// @ingroup GX2 157 /// @defgroup GX2VerifyGroup Verify 158 /// @ingroup GX2DebugGroup 159 /// @defgroup GX2DebugCaptureGroup Capture 160 /// @ingroup GX2DebugGroup 161 162 /// @defgroup GX2PerfGroup Perf 163 /// @ingroup GX2 164 /// @defgroup GX2PerfCycleGroup Cycles & Time 165 /// @ingroup GX2PerfGroup 166 /// @defgroup GX2PerfLowGroup Low-level API 167 /// @ingroup GX2PerfGroup 168 /// @defgroup GX2PerfHighGroup High-level API 169 /// @ingroup GX2PerfGroup 170 /// @defgroup GX2PerfHighStructGroup Structures 171 /// @ingroup GX2PerfHighGroup 172 /// @defgroup GX2PerfHighSetupGroup Setup 173 /// @ingroup GX2PerfHighGroup 174 /// @defgroup GX2PerfHighCaptureGroup Capture 175 /// @ingroup GX2PerfHighGroup 176 /// @defgroup GX2PerfHighResultsGroup Results 177 /// @ingroup GX2PerfHighGroup 178 /// @defgroup GX2PerfEnumGroup Enum 179 /// @ingroup GX2PerfGroup 180 181 /// @defgroup GX2UTGroup Utility 182 /// @ingroup GX2 183 /// @defgroup GX2UTHelperGroup Helper 184 /// @ingroup GX2UTGroup 185 /// @defgroup GX2UTSurfaceHelperGroup Surface Helper Functions 186 /// @ingroup GX2UTHelperGroup 187 /// @defgroup GX2UTCopyAndConvertGroup Copy & Convert 188 /// @ingroup GX2UTGroup 189 /// @defgroup GX2UTClearSurfaceGroup Clear Surface 190 /// @ingroup GX2UTGroup 191 /// @defgroup GX2UTComponentGroup Component 192 /// @ingroup GX2UTGroup 193 /// @defgroup GX2UTCaptureGroup Capture 194 /// @ingroup GX2UTGroup 195 /// @defgroup GX2UTGX2RGroup Resource Management Layer 196 /// @ingroup GX2UTGroup 197 198 /// @defgroup GX2TempGroup Temp 199 /// @ingroup GX2 200 201 /// @defgroup GX2DeprecatedGroup Deprecated 202 /// @ingroup GX2 203 204 /// @defgroup GX2ToolLibGroup GX2 PC Tools & Libraries 205 /// @defgroup GX2ToolGroup Tools 206 /// @ingroup GX2ToolLibGroup 207 /// @defgroup GX2LibGroup Libraries 208 /// @ingroup GX2ToolLibGroup 209 /// @defgroup GX2TexUtilGroup Texture Utils 210 /// @ingroup GX2LibGroup 211 /// @defgroup GX2ShaderUtilsGroup Shader Utils 212 /// @ingroup GX2LibGroup 213 /// @defgroup GX2TexReaderGroup Texture Readers 214 /// @ingroup GX2LibGroup 215 216 #include <cafe/os.h> 217 218 // ----------------- 219 // GX2 includes: 220 221 #include <cafe/gx2/gx2Enum.h> 222 #include <cafe/gx2/gx2PerfEnum.h> 223 #include <cafe/gx2/gx2Constant.h> 224 #include <cafe/gx2/gx2Misc.h> 225 #include <cafe/gx2/gx2Manage.h> 226 #include <cafe/gx2/gx2Query.h> 227 #include <cafe/gx2/gx2Shaders.h> 228 #include <cafe/gx2/gx2Surface.h> 229 #include <cafe/gx2/gx2Texture.h> 230 #include <cafe/gx2/gx2RenderStateReg.h> 231 #include <cafe/gx2/gx2RenderState.h> 232 #include <cafe/gx2/gx2Tessellation.h> 233 #include <cafe/gx2/gx2Draw.h> 234 #include <cafe/gx2/gx2Display.h> 235 #include <cafe/gx2/gx2Perf.h> 236 #include <cafe/gx2/gx2PerfLowLevel.h> 237 #include <cafe/gx2/gx2Perf_deprecated.h> 238 #include <cafe/gx2/gx2Uda.h> 239 #include <cafe/gx2/gx2Verify.h> 240 #include <cafe/gx2/gx2rBuffer.h> 241 #include <cafe/gx2/gx2rSurface.h> 242 #if defined __cplusplus && !defined WIN32 && !defined WIN64 243 #include <cafe/gx2/gx2rCpp.h> 244 #endif 245 246 // these will go away: 247 #include <cafe/gx2/gx2Temp.h> 248 249 #endif // _CAFE_GX2_H_ 250