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