1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: gd_System.h 4 5 Copyright (C)2011 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 *---------------------------------------------------------------------------*/ 14 #ifndef NN_GD_CTR_GD_SYSTEM_ 15 #define NN_GD_CTR_GD_SYSTEM_ 16 17 #include <nn/gd/CTR/gd_Types.h> 18 #include <nn/gd/CTR/gd_Result.h> 19 20 #if NN_GD_DOCUMENT_TYPE == ENGLISH 21 /* Please see man pages for details 22 23 */ 24 #else 25 /* Please see man pages for details 26 27 */ 28 #endif 29 30 #ifndef NN_UNUSED_VAR 31 #if NN_GD_DOCUMENT_TYPE == ENGLISH 32 /* Please see man pages for details */ 33 #else 34 /* Please see man pages for details */ 35 #endif 36 #define NN_UNUSED_VAR(var) ((void)&var); 37 #endif 38 39 #if NN_GD_DOCUMENT_TYPE == ENGLISH 40 /* Please see man pages for details 41 */ 42 #else 43 /* Please see man pages for details */ 44 #endif 45 typedef void (*gdCallbackfunctionErrorPtr)(nnResult result, const char* functionName); 46 47 namespace nn { 48 namespace gd { 49 namespace CTR { 50 51 #if NN_GD_DOCUMENT_TYPE == ENGLISH 52 /* Please see man pages for details 53 */ 54 #else 55 /* Please see man pages for details 56 */ 57 #endif 58 class RecordedPacketId; 59 60 #if NN_GD_DOCUMENT_TYPE == ENGLISH 61 /* Please see man pages for details 62 63 64 */ 65 /* */ // defgroup systemFunction 66 #else 67 /* Please see man pages for details 68 69 70 */ 71 /* */ // defgroup systemFunction 72 #endif 73 74 #if NN_GD_DOCUMENT_TYPE == ENGLISH 75 /* Please see man pages for details 76 77 78 79 80 */ 81 #else 82 /* Please see man pages for details 83 84 85 86 87 */ 88 #endif 89 class System 90 { 91 public: 92 93 #if NN_GD_DOCUMENT_TYPE == ENGLISH 94 /* Please see man pages for details */ 95 #else 96 /* Please see man pages for details */ 97 #endif 98 enum Module 99 { 100 MODULE_RASTERIZER = 1 << 0, 101 MODULE_LIGHTING = 1 << 1, 102 MODULE_FRAMEBUFFER = 1 << 2, 103 MODULE_TEXTURE_COMBINER = 1 << 3, 104 MODULE_GAS_FOG = 1 << 4, 105 MODULE_FRAGMENT_OPERATION = 1 << 5, 106 MODULE_TEXTURE = 1 << 6, 107 MODULE_TEXTURE_PROCEDURAL = 1 << 7, 108 MODULE_VERTEX_INPUT = 1 << 8, 109 MODULE_SHADER = 1 << 9, 110 111 MODULE_ALL = 0x7fffffff 112 }; 113 114 #if NN_GD_DOCUMENT_TYPE == ENGLISH 115 /* Please see man pages for details 116 117 */ 118 #else 119 /* Please see man pages for details 120 121 */ 122 #endif 123 static void SetCallbackFunctionError(gdCallbackfunctionErrorPtr callbackFunctionError); 124 125 #if NN_GD_DOCUMENT_TYPE == ENGLISH 126 /* Please see man pages for details 127 128 129 */ 130 #else 131 /* Please see man pages for details 132 133 134 135 136 137 */ 138 #endif 139 static char* GetErrorStringFromResult(nnResult result); 140 141 #if NN_GD_DOCUMENT_TYPE == ENGLISH 142 /* Please see man pages for details 143 144 145 */ 146 #else 147 /* Please see man pages for details 148 149 150 151 152 153 154 155 */ 156 #endif 157 static nnResult Initialize(); 158 159 #if NN_GD_DOCUMENT_TYPE == ENGLISH 160 /* Please see man pages for details 161 162 163 */ 164 #else 165 /* Please see man pages for details 166 167 168 */ 169 #endif 170 static void Finalize(); 171 172 #if NN_GD_DOCUMENT_TYPE == ENGLISH 173 /* Please see man pages for details 174 */ 175 #else 176 /* Please see man pages for details 177 */ 178 #endif 179 static void ForceDirty(u32 flag); 180 181 #if NN_GD_DOCUMENT_TYPE == ENGLISH 182 /* Please see man pages for details 183 */ 184 #else 185 /* Please see man pages for details 186 */ 187 #endif 188 static void SetDefault(u32 flag); 189 190 #if NN_GD_DOCUMENT_TYPE == ENGLISH 191 /* Please see man pages for details 192 193 194 */ 195 #else 196 /* Please see man pages for details 197 198 199 */ 200 #endif 201 static void Draw(u32 vertexCount, u32 startVertexLocation); 202 203 #if NN_GD_DOCUMENT_TYPE == ENGLISH 204 /* Please see man pages for details 205 206 207 */ 208 #else 209 /* Please see man pages for details 210 211 212 */ 213 #endif 214 static void DrawIndexed(u32 indexCount, u32 startIndexLocation); 215 216 #if NN_GD_DOCUMENT_TYPE == ENGLISH 217 /* Please see man pages for details 218 */ 219 #else 220 /* Please see man pages for details 221 */ 222 #endif 223 static void Execute3DCommandList(); 224 225 #if NN_GD_DOCUMENT_TYPE == ENGLISH 226 /* Please see man pages for details 227 228 229 230 231 232 233 234 */ 235 #else 236 /* Please see man pages for details 237 238 239 240 241 242 243 244 245 246 247 248 249 250 */ 251 #endif 252 static nnResult StartRecordingPackets(u32* forceDirtyModuleFlag); 253 254 #if NN_GD_DOCUMENT_TYPE == ENGLISH 255 /* Please see man pages for details 256 257 258 259 */ 260 #else 261 /* Please see man pages for details 262 263 264 265 266 267 268 269 270 271 272 273 */ 274 #endif 275 static nnResult GetCommandBufferOffset(u32* offset); 276 277 #if NN_GD_DOCUMENT_TYPE == ENGLISH 278 /* Please see man pages for details 279 280 281 282 283 284 */ 285 #else 286 /* Please see man pages for details 287 288 289 290 291 292 293 294 295 296 297 */ 298 #endif 299 static nnResult GetCommandBufferBaseAddress(RecordedPacketId* packetId, u32** commandBufferAddr); 300 301 #if NN_GD_DOCUMENT_TYPE == ENGLISH 302 /* Please see man pages for details 303 304 305 306 */ 307 #else 308 /* Please see man pages for details 309 310 311 312 313 314 315 316 317 318 319 320 321 */ 322 #endif 323 static nnResult StopRecordingPackets(RecordedPacketId** packetId); 324 325 #if NN_GD_DOCUMENT_TYPE == ENGLISH 326 /* Please see man pages for details 327 328 329 330 331 332 333 334 335 */ 336 #else 337 /* Please see man pages for details 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 */ 353 #endif 354 static nnResult ReplayPackets(RecordedPacketId* packetId, u32* forceDirtyModuleFlag); 355 356 #if NN_GD_DOCUMENT_TYPE == ENGLISH 357 /* Please see man pages for details 358 359 */ 360 #else 361 /* Please see man pages for details 362 363 364 365 366 367 */ 368 #endif 369 static nnResult ReleasePackets(RecordedPacketId* packetId); 370 371 372 }; // System 373 374 /* */ // addtogroup systemFunction 375 376 } // namespace CTR 377 } // namespace gd 378 } // namespace nn 379 380 381 #endif //NN_GD_CTR_GD_SYSTEM_ 382