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