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 #else 148 /* Please see man pages for details 149 150 151 152 153 154 155 156 157 */ 158 #endif 159 static nnResult SetIndexBuffer(VertexBufferResource* indexBuffer, IndexFormat format, u32 offset); 160 161 #if NN_GD_DOCUMENT_TYPE == ENGLISH 162 /* Please see man pages for details 163 164 165 */ 166 #else 167 /* Please see man pages for details 168 169 170 171 172 173 174 */ 175 #endif 176 static nnResult SetInputLayout(InputLayout* inputLayout); 177 178 #if NN_GD_DOCUMENT_TYPE == ENGLISH 179 /* Please see man pages for details 180 181 182 */ 183 #else 184 /* Please see man pages for details 185 186 187 188 189 190 */ 191 #endif 192 static nnResult SetPrimitiveTopology(PrimitiveTopology primitiveTopology); 193 194 #if NN_GD_DOCUMENT_TYPE == ENGLISH 195 /* Please see man pages for details 196 197 198 199 200 */ 201 #else 202 /* Please see man pages for details 203 204 205 206 207 208 209 210 211 212 */ 213 #endif 214 static nnResult SetVertexBuffers(u32 startSlot, u32 numBuffers, VertexBufferResource** vertexBuffers, u32* offsets); 215 216 #if NN_GD_DOCUMENT_TYPE == ENGLISH 217 /* Please see man pages for details 218 219 220 221 222 223 */ 224 #else 225 /* Please see man pages for details 226 227 228 229 230 231 232 233 234 235 236 237 */ 238 #endif 239 static nnResult CreateInputLayout(InputElementDescription* inputElementDescs, u32 numElements, u32* strides, VertexShader* vertexShader, InputLayout** inputLayout); 240 241 #if NN_GD_DOCUMENT_TYPE == ENGLISH 242 /* Please see man pages for details 243 244 */ 245 #else 246 /* Please see man pages for details 247 248 249 250 251 252 253 */ 254 #endif 255 static nnResult ReleaseInputLayout(InputLayout *inputLayout); 256 }; // VertexInputStage 257 258 259 #if NN_GD_DOCUMENT_TYPE == ENGLISH 260 /* Please see man pages for details 261 262 263 */ 264 #else 265 /* Please see man pages for details 266 267 268 */ 269 #endif 270 class InputElementDescription 271 { 272 public: 273 #if NN_GD_DOCUMENT_TYPE == ENGLISH 274 /* Please see man pages for details 275 */ 276 #else 277 /* Please see man pages for details 278 */ 279 #endif 280 u32 m_StreamSlot; 281 282 #if NN_GD_DOCUMENT_TYPE == ENGLISH 283 /* Please see man pages for details 284 */ 285 #else 286 /* Please see man pages for details 287 */ 288 #endif 289 const char* m_SemanticName; 290 291 #if NN_GD_DOCUMENT_TYPE == ENGLISH 292 /* Please see man pages for details 293 */ 294 #else 295 /* Please see man pages for details 296 */ 297 #endif 298 VertexInputStage::ShaderStreamFormatType m_Format; 299 300 #if NN_GD_DOCUMENT_TYPE == ENGLISH 301 /* Please see man pages for details 302 */ 303 #else 304 /* Please see man pages for details 305 */ 306 #endif 307 u32 m_Count; 308 309 #if NN_GD_DOCUMENT_TYPE == ENGLISH 310 /* Please see man pages for details 311 312 */ 313 #else 314 /* Please see man pages for details 315 316 */ 317 #endif 318 u32 m_AlignedByteOffset; 319 320 #if NN_GD_DOCUMENT_TYPE == ENGLISH 321 /* Please see man pages for details 322 */ 323 #else 324 /* Please see man pages for details 325 */ 326 #endif 327 static const u32 Append = 0x00080000; 328 }; 329 330 /* */ // addtogroup VertexInputStage 331 332 } // namespace CTR 333 } // namespace gd 334 } // namespace nn 335 336 #endif // NN_GD_CTR_GD_VERTEXINPUT_H_ 337