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