1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: gd_VertexInput.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_VERTEXINPUT_H_ 15 #define NN_GD_CTR_GD_VERTEXINPUT_H_ 16 17 #include <nn/gd/CTR/gd_Types.h> 18 #include <nn/gd/CTR/gd_Result.h> 19 20 #include <nn/gd/CTR/gd_Resource.h> 21 #include <nn/gd/CTR/gd_Shader.h> 22 23 #if NN_GD_DOCUMENT_TYPE == ENGLISH 24 /* Please see man pages for details 25 26 */ 27 #else 28 /* Please see man pages for details 29 30 */ 31 #endif 32 33 namespace nn { 34 namespace gd { 35 namespace CTR { 36 37 class InputElementDescription; 38 class InputLayout; 39 40 #if NN_GD_DOCUMENT_TYPE == ENGLISH 41 /* Please see man pages for details 42 43 44 45 46 47 48 */ 49 #else 50 /* Please see man pages for details 51 52 53 54 55 56 57 */ 58 #endif 59 class VertexInputStage 60 { 61 public: 62 63 #if NN_GD_DOCUMENT_TYPE == ENGLISH 64 /* Please see man pages for details */ 65 #else 66 /* Please see man pages for details */ 67 #endif 68 enum ShaderStreamFormatType 69 { 70 STREAM_TYPE_BYTE = 0, 71 STREAM_TYPE_UNSIGNED_BYTE = 1, 72 STREAM_TYPE_SHORT = 2, 73 STREAM_TYPE_FLOAT = 3, 74 75 STREAM_TYPE_RESERVED_MAX_U32 = 0xffffffffu 76 }; 77 78 #if NN_GD_DOCUMENT_TYPE == ENGLISH 79 /* Please see man pages for details */ 80 #else 81 /* Please see man pages for details */ 82 #endif 83 enum IndexFormat 84 { 85 #if NN_GD_DOCUMENT_TYPE == ENGLISH 86 /* Please see man pages for details */ 87 #else 88 /* Please see man pages for details */ 89 #endif 90 INDEX_FORMAT_UBYTE = 0, 91 92 #if NN_GD_DOCUMENT_TYPE == ENGLISH 93 /* Please see man pages for details */ 94 #else 95 /* Please see man pages for details */ 96 #endif 97 INDEX_FORMAT_USHORT = 1, 98 99 INDEX_FORMAT_RESERVED_MAX_U32 = 0xffffffffu 100 }; 101 102 #if NN_GD_DOCUMENT_TYPE == ENGLISH 103 /* Please see man pages for details */ 104 #else 105 /* Please see man pages for details */ 106 #endif 107 enum PrimitiveTopology 108 { 109 #if NN_GD_DOCUMENT_TYPE == ENGLISH 110 /* Please see man pages for details */ 111 #else 112 /* Please see man pages for details */ 113 #endif 114 PRIMITIVE_TOPOLOGY_TRIANGLELIST = 0, 115 116 #if NN_GD_DOCUMENT_TYPE == ENGLISH 117 /* Please see man pages for details */ 118 #else 119 /* Please see man pages for details */ 120 #endif 121 PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 1, 122 123 #if NN_GD_DOCUMENT_TYPE == ENGLISH 124 /* Please see man pages for details */ 125 #else 126 /* Please see man pages for details */ 127 #endif 128 PRIMITIVE_TOPOLOGY_TRIANGLEFAN = 2, 129 130 #if NN_GD_DOCUMENT_TYPE == ENGLISH 131 /* Please see man pages for details */ 132 #else 133 /* Please see man pages for details */ 134 #endif 135 PRIMITIVE_TOPOLOGY_GEOMETRY = 3, 136 137 PRIMITIVE_TOPOLOGY_RESERVED_MAX_U32 = 0xffffffffu 138 139 }; 140 141 #if NN_GD_DOCUMENT_TYPE == ENGLISH 142 /* Please see man pages for details 143 144 145 146 147 148 149 150 */ 151 #else 152 /* Please see man pages for details 153 154 155 156 157 158 159 160 161 */ 162 #endif 163 static nnResult SetIndexBuffer(VertexBufferResource* indexBuffer, IndexFormat format, u32 offset); 164 165 #if NN_GD_DOCUMENT_TYPE == ENGLISH 166 /* Please see man pages for details 167 168 169 170 171 172 173 174 */ 175 #else 176 /* Please see man pages for details 177 178 179 180 181 182 183 184 */ 185 #endif 186 static nnResult SetInputLayout(InputLayout* inputLayout); 187 188 #if NN_GD_DOCUMENT_TYPE == ENGLISH 189 /* Please see man pages for details 190 191 192 193 194 195 196 */ 197 #else 198 /* Please see man pages for details 199 200 201 202 203 204 205 */ 206 #endif 207 static nnResult SetPrimitiveTopology(PrimitiveTopology primitiveTopology); 208 209 #if NN_GD_DOCUMENT_TYPE == ENGLISH 210 /* Please see man pages for details 211 212 213 214 215 216 217 218 219 */ 220 #else 221 /* Please see man pages for details 222 223 224 225 226 227 228 229 230 231 */ 232 #endif 233 static nnResult SetVertexBuffers(u32 startSlot, u32 numBuffers, VertexBufferResource** vertexBuffers, u32* offsets); 234 235 #if NN_GD_DOCUMENT_TYPE == ENGLISH 236 /* Please see man pages for details 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 */ 254 #else 255 /* Please see man pages for details 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 */ 273 #endif 274 static nnResult CreateInputLayout(InputElementDescription* inputElementDescs, u32 numElements, u32* strides, Shader* vertexShader, InputLayout** inputLayout); 275 276 #if NN_GD_DOCUMENT_TYPE == ENGLISH 277 /* Please see man pages for details 278 279 280 281 282 283 284 */ 285 #else 286 /* Please see man pages for details 287 288 289 290 291 292 293 */ 294 #endif 295 static nnResult ReleaseInputLayout(InputLayout *inputLayout); 296 }; // VertexInputStage 297 298 299 #if NN_GD_DOCUMENT_TYPE == ENGLISH 300 /* Please see man pages for details 301 302 303 */ 304 #else 305 /* Please see man pages for details 306 307 308 */ 309 #endif 310 class InputElementDescription 311 { 312 public: 313 #if NN_GD_DOCUMENT_TYPE == ENGLISH 314 /* Please see man pages for details 315 */ 316 #else 317 /* Please see man pages for details 318 */ 319 #endif 320 u32 m_StreamSlot; 321 322 #if NN_GD_DOCUMENT_TYPE == ENGLISH 323 /* Please see man pages for details 324 */ 325 #else 326 /* Please see man pages for details 327 */ 328 #endif 329 const char* m_SemanticName; 330 331 #if NN_GD_DOCUMENT_TYPE == ENGLISH 332 /* Please see man pages for details 333 */ 334 #else 335 /* Please see man pages for details 336 */ 337 #endif 338 VertexInputStage::ShaderStreamFormatType m_Format; 339 340 #if NN_GD_DOCUMENT_TYPE == ENGLISH 341 /* Please see man pages for details 342 */ 343 #else 344 /* Please see man pages for details 345 */ 346 #endif 347 u32 m_Count; 348 349 #if NN_GD_DOCUMENT_TYPE == ENGLISH 350 /* Please see man pages for details 351 352 */ 353 #else 354 /* Please see man pages for details 355 356 */ 357 #endif 358 u32 m_AlignedByteOffset; 359 360 #if NN_GD_DOCUMENT_TYPE == ENGLISH 361 /* Please see man pages for details 362 */ 363 #else 364 /* Please see man pages for details 365 */ 366 #endif 367 static const u32 Append = 0x00080000; 368 }; 369 370 /* */ // addtogroup VertexInputStage 371 372 } // namespace CTR 373 } // namespace gd 374 } // namespace nn 375 376 #endif // NN_GD_CTR_GD_VERTEXINPUT_H_ 377