wut v1.8.0
Wii U Toolchain
Loading...
Searching...
No Matches
shaders.h
Go to the documentation of this file.
1#pragma once
2#include <string.h>
3#include <wut.h>
4#include "enum.h"
5#include "sampler.h"
6#include "gx2r/buffer.h"
7
14#ifdef __cplusplus
15extern "C" {
16#endif
17
22typedef struct GX2LoopVar GX2LoopVar;
29
31{
33
34 struct
35 {
36 uint32_t sq_pgm_resources_fs;
38
39 uint32_t size;
40 void *program;
41 uint32_t attribCount;
42 uint32_t numDivisors;
43 uint32_t divisors[2];
44};
45WUT_CHECK_OFFSET(GX2FetchShader, 0x0, type);
46WUT_CHECK_OFFSET(GX2FetchShader, 0x4, regs.sq_pgm_resources_fs);
47WUT_CHECK_OFFSET(GX2FetchShader, 0x8, size);
48WUT_CHECK_OFFSET(GX2FetchShader, 0xc, program);
49WUT_CHECK_OFFSET(GX2FetchShader, 0x10, attribCount);
50WUT_CHECK_OFFSET(GX2FetchShader, 0x14, numDivisors);
51WUT_CHECK_OFFSET(GX2FetchShader, 0x18, divisors);
52WUT_CHECK_SIZE(GX2FetchShader, 0x20);
53
55{
56 const char *name;
57 uint32_t offset;
58 uint32_t size;
59};
60WUT_CHECK_OFFSET(GX2UniformBlock, 0x00, name);
61WUT_CHECK_OFFSET(GX2UniformBlock, 0x04, offset);
62WUT_CHECK_OFFSET(GX2UniformBlock, 0x08, size);
63WUT_CHECK_SIZE(GX2UniformBlock, 0x0C);
64
66{
67 const char *name;
69 uint32_t count;
70 uint32_t offset;
71 int32_t block;
72};
73WUT_CHECK_OFFSET(GX2UniformVar, 0x00, name);
74WUT_CHECK_OFFSET(GX2UniformVar, 0x04, type);
75WUT_CHECK_OFFSET(GX2UniformVar, 0x08, count);
76WUT_CHECK_OFFSET(GX2UniformVar, 0x0C, offset);
77WUT_CHECK_OFFSET(GX2UniformVar, 0x10, block);
78WUT_CHECK_SIZE(GX2UniformVar, 0x14);
79
81{
82 float value[4];
83 uint32_t offset;
84};
85WUT_CHECK_OFFSET(GX2UniformInitialValue, 0x00, value);
86WUT_CHECK_OFFSET(GX2UniformInitialValue, 0x10, offset);
87WUT_CHECK_SIZE(GX2UniformInitialValue, 0x14);
88
90{
91 uint32_t offset;
92 uint32_t value;
93};
94WUT_CHECK_OFFSET(GX2LoopVar, 0x00, offset);
95WUT_CHECK_OFFSET(GX2LoopVar, 0x04, value);
96WUT_CHECK_SIZE(GX2LoopVar, 0x08);
97
99{
100 const char *name;
102 uint32_t location;
103};
104WUT_CHECK_OFFSET(GX2SamplerVar, 0x00, name);
105WUT_CHECK_OFFSET(GX2SamplerVar, 0x04, type);
106WUT_CHECK_OFFSET(GX2SamplerVar, 0x08, location);
107WUT_CHECK_SIZE(GX2SamplerVar, 0x0C);
108
110{
111 const char *name;
113 uint32_t count;
114 uint32_t location;
115};
116WUT_CHECK_OFFSET(GX2AttribVar, 0x00, name);
117WUT_CHECK_OFFSET(GX2AttribVar, 0x04, type);
118WUT_CHECK_OFFSET(GX2AttribVar, 0x08, count);
119WUT_CHECK_OFFSET(GX2AttribVar, 0x0C, location);
120WUT_CHECK_SIZE(GX2AttribVar, 0x10);
121
123{
124 struct
125 {
126 uint32_t sq_pgm_resources_vs;
127 uint32_t vgt_primitiveid_en;
128 uint32_t spi_vs_out_config;
129 uint32_t num_spi_vs_out_id;
130 uint32_t spi_vs_out_id[10];
131 uint32_t pa_cl_vs_out_cntl;
132 uint32_t sq_vtx_semantic_clear;
133 uint32_t num_sq_vtx_semantic;
134 uint32_t sq_vtx_semantic[32];
135 uint32_t vgt_strmout_buffer_en;
136 uint32_t vgt_vertex_reuse_block_cntl;
137 uint32_t vgt_hos_reuse_depth;
139
140 uint32_t size;
141 void *program;
143
146
149
152
153 uint32_t loopVarCount;
155
158
161
162 uint32_t ringItemsize;
163
165 uint32_t streamOutStride[4];
166
168};
169WUT_CHECK_OFFSET(GX2VertexShader, 0x00, regs.sq_pgm_resources_vs);
170WUT_CHECK_OFFSET(GX2VertexShader, 0x04, regs.vgt_primitiveid_en);
171WUT_CHECK_OFFSET(GX2VertexShader, 0x08, regs.spi_vs_out_config);
172WUT_CHECK_OFFSET(GX2VertexShader, 0x0C, regs.num_spi_vs_out_id);
173WUT_CHECK_OFFSET(GX2VertexShader, 0x10, regs.spi_vs_out_id);
174WUT_CHECK_OFFSET(GX2VertexShader, 0x38, regs.pa_cl_vs_out_cntl);
175WUT_CHECK_OFFSET(GX2VertexShader, 0x3C, regs.sq_vtx_semantic_clear);
176WUT_CHECK_OFFSET(GX2VertexShader, 0x40, regs.num_sq_vtx_semantic);
177WUT_CHECK_OFFSET(GX2VertexShader, 0x44, regs.sq_vtx_semantic);
178WUT_CHECK_OFFSET(GX2VertexShader, 0xC4, regs.vgt_strmout_buffer_en);
179WUT_CHECK_OFFSET(GX2VertexShader, 0xC8, regs.vgt_vertex_reuse_block_cntl);
180WUT_CHECK_OFFSET(GX2VertexShader, 0xCC, regs.vgt_hos_reuse_depth);
181WUT_CHECK_OFFSET(GX2VertexShader, 0xD0, size);
182WUT_CHECK_OFFSET(GX2VertexShader, 0xD4, program);
183WUT_CHECK_OFFSET(GX2VertexShader, 0xD8, mode);
184WUT_CHECK_OFFSET(GX2VertexShader, 0xDc, uniformBlockCount);
185WUT_CHECK_OFFSET(GX2VertexShader, 0xE0, uniformBlocks);
186WUT_CHECK_OFFSET(GX2VertexShader, 0xE4, uniformVarCount);
187WUT_CHECK_OFFSET(GX2VertexShader, 0xE8, uniformVars);
188WUT_CHECK_OFFSET(GX2VertexShader, 0xEc, initialValueCount);
189WUT_CHECK_OFFSET(GX2VertexShader, 0xF0, initialValues);
190WUT_CHECK_OFFSET(GX2VertexShader, 0xF4, loopVarCount);
191WUT_CHECK_OFFSET(GX2VertexShader, 0xF8, loopVars);
192WUT_CHECK_OFFSET(GX2VertexShader, 0xFc, samplerVarCount);
193WUT_CHECK_OFFSET(GX2VertexShader, 0x100, samplerVars);
194WUT_CHECK_OFFSET(GX2VertexShader, 0x104, attribVarCount);
195WUT_CHECK_OFFSET(GX2VertexShader, 0x108, attribVars);
196WUT_CHECK_OFFSET(GX2VertexShader, 0x10c, ringItemsize);
197WUT_CHECK_OFFSET(GX2VertexShader, 0x110, hasStreamOut);
198WUT_CHECK_OFFSET(GX2VertexShader, 0x114, streamOutStride);
199WUT_CHECK_OFFSET(GX2VertexShader, 0x124, gx2rBuffer);
200WUT_CHECK_SIZE(GX2VertexShader, 0x134);
201
203{
204 struct
205 {
206 uint32_t sq_pgm_resources_ps;
207 uint32_t sq_pgm_exports_ps;
208 uint32_t spi_ps_in_control_0;
209 uint32_t spi_ps_in_control_1;
210 uint32_t num_spi_ps_input_cntl;
211 uint32_t spi_ps_input_cntls[32];
212 uint32_t cb_shader_mask;
213 uint32_t cb_shader_control;
214 uint32_t db_shader_control;
215 uint32_t spi_input_z;
217
218 uint32_t size;
219 void *program;
221
224
227
230
231 uint32_t loopVarCount;
233
236
238};
239WUT_CHECK_OFFSET(GX2PixelShader, 0x00, regs.sq_pgm_resources_ps);
240WUT_CHECK_OFFSET(GX2PixelShader, 0x04, regs.sq_pgm_exports_ps);
241WUT_CHECK_OFFSET(GX2PixelShader, 0x08, regs.spi_ps_in_control_0);
242WUT_CHECK_OFFSET(GX2PixelShader, 0x0C, regs.spi_ps_in_control_1);
243WUT_CHECK_OFFSET(GX2PixelShader, 0x10, regs.num_spi_ps_input_cntl);
244WUT_CHECK_OFFSET(GX2PixelShader, 0x14, regs.spi_ps_input_cntls);
245WUT_CHECK_OFFSET(GX2PixelShader, 0x94, regs.cb_shader_mask);
246WUT_CHECK_OFFSET(GX2PixelShader, 0x98, regs.cb_shader_control);
247WUT_CHECK_OFFSET(GX2PixelShader, 0x9C, regs.db_shader_control);
248WUT_CHECK_OFFSET(GX2PixelShader, 0xA0, regs.spi_input_z);
249WUT_CHECK_OFFSET(GX2PixelShader, 0xA4, size);
250WUT_CHECK_OFFSET(GX2PixelShader, 0xA8, program);
251WUT_CHECK_OFFSET(GX2PixelShader, 0xAC, mode);
252WUT_CHECK_OFFSET(GX2PixelShader, 0xB0, uniformBlockCount);
253WUT_CHECK_OFFSET(GX2PixelShader, 0xB4, uniformBlocks);
254WUT_CHECK_OFFSET(GX2PixelShader, 0xB8, uniformVarCount);
255WUT_CHECK_OFFSET(GX2PixelShader, 0xBC, uniformVars);
256WUT_CHECK_OFFSET(GX2PixelShader, 0xC0, initialValueCount);
257WUT_CHECK_OFFSET(GX2PixelShader, 0xC4, initialValues);
258WUT_CHECK_OFFSET(GX2PixelShader, 0xC8, loopVarCount);
259WUT_CHECK_OFFSET(GX2PixelShader, 0xCC, loopVars);
260WUT_CHECK_OFFSET(GX2PixelShader, 0xD0, samplerVarCount);
261WUT_CHECK_OFFSET(GX2PixelShader, 0xD4, samplerVars);
262WUT_CHECK_OFFSET(GX2PixelShader, 0xD8, gx2rBuffer);
263WUT_CHECK_SIZE(GX2PixelShader, 0xE8);
264
266{
267 struct
268 {
269 uint32_t sq_pgm_resources_gs;
270 uint32_t vgt_gs_out_prim_type;
271 uint32_t vgt_gs_mode;
272 uint32_t pa_cl_vs_out_cntl;
273 uint32_t sq_pgm_resources_vs;
274 uint32_t sq_gs_vert_itemsize;
275 uint32_t spi_vs_out_config;
276 uint32_t num_spi_vs_out_id;
277 uint32_t spi_vs_out_id[10];
278 uint32_t vgt_strmout_buffer_en;
280
281 uint32_t size;
282 void *program;
286
289
292
295
296 uint32_t loopVarCount;
298
301
302 uint32_t ringItemSize;
304 uint32_t streamOutStride[4];
305
307};
308WUT_CHECK_OFFSET(GX2GeometryShader, 0x00, regs.sq_pgm_resources_gs);
309WUT_CHECK_OFFSET(GX2GeometryShader, 0x04, regs.vgt_gs_out_prim_type);
310WUT_CHECK_OFFSET(GX2GeometryShader, 0x08, regs.vgt_gs_mode);
311WUT_CHECK_OFFSET(GX2GeometryShader, 0x0C, regs.pa_cl_vs_out_cntl);
312WUT_CHECK_OFFSET(GX2GeometryShader, 0x10, regs.sq_pgm_resources_vs);
313WUT_CHECK_OFFSET(GX2GeometryShader, 0x14, regs.sq_gs_vert_itemsize);
314WUT_CHECK_OFFSET(GX2GeometryShader, 0x18, regs.spi_vs_out_config);
315WUT_CHECK_OFFSET(GX2GeometryShader, 0x1C, regs.num_spi_vs_out_id);
316WUT_CHECK_OFFSET(GX2GeometryShader, 0x20, regs.spi_vs_out_id);
317WUT_CHECK_OFFSET(GX2GeometryShader, 0x48, regs.vgt_strmout_buffer_en);
318WUT_CHECK_OFFSET(GX2GeometryShader, 0x4C, size);
319WUT_CHECK_OFFSET(GX2GeometryShader, 0x50, program);
320WUT_CHECK_OFFSET(GX2GeometryShader, 0x54, vertexProgramSize);
321WUT_CHECK_OFFSET(GX2GeometryShader, 0x58, vertexProgram);
322WUT_CHECK_OFFSET(GX2GeometryShader, 0x5C, mode);
323WUT_CHECK_OFFSET(GX2GeometryShader, 0x60, uniformBlockCount);
324WUT_CHECK_OFFSET(GX2GeometryShader, 0x64, uniformBlocks);
325WUT_CHECK_OFFSET(GX2GeometryShader, 0x68, uniformVarCount);
326WUT_CHECK_OFFSET(GX2GeometryShader, 0x6C, uniformVars);
327WUT_CHECK_OFFSET(GX2GeometryShader, 0x70, initialValueCount);
328WUT_CHECK_OFFSET(GX2GeometryShader, 0x74, initialValues);
329WUT_CHECK_OFFSET(GX2GeometryShader, 0x78, loopVarCount);
330WUT_CHECK_OFFSET(GX2GeometryShader, 0x7C, loopVars);
331WUT_CHECK_OFFSET(GX2GeometryShader, 0x80, samplerVarCount);
332WUT_CHECK_OFFSET(GX2GeometryShader, 0x84, samplerVars);
333WUT_CHECK_OFFSET(GX2GeometryShader, 0x88, ringItemSize);
334WUT_CHECK_OFFSET(GX2GeometryShader, 0x8C, hasStreamOut);
335WUT_CHECK_OFFSET(GX2GeometryShader, 0x90, streamOutStride);
336WUT_CHECK_OFFSET(GX2GeometryShader, 0xA0, gx2rBuffer);
337WUT_CHECK_SIZE(GX2GeometryShader, 0xB0);
338
350WUT_CHECK_OFFSET(GX2AttribStream, 0x0, location);
351WUT_CHECK_OFFSET(GX2AttribStream, 0x4, buffer);
352WUT_CHECK_OFFSET(GX2AttribStream, 0x8, offset);
353WUT_CHECK_OFFSET(GX2AttribStream, 0xc, format);
354WUT_CHECK_OFFSET(GX2AttribStream, 0x10, type);
355WUT_CHECK_OFFSET(GX2AttribStream, 0x14, aluDivisor);
356WUT_CHECK_OFFSET(GX2AttribStream, 0x18, mask);
357WUT_CHECK_OFFSET(GX2AttribStream, 0x1c, endianSwap);
358WUT_CHECK_SIZE(GX2AttribStream, 0x20);
359
360uint32_t
362
363uint32_t
365
366uint32_t
368 GX2FetchShaderType fetchShaderType,
369 GX2TessellationMode tesellationMode);
370
371void
373 uint8_t *buffer,
374 uint32_t attribCount,
375 const GX2AttribStream *attribs,
377 GX2TessellationMode tessMode);
378
379void
381
382void
384
385void
387
388void
390
391void
393 uint32_t id);
394
395void
397 uint32_t id);
398
399void
401 uint32_t id);
402
403void
405 uint32_t count,
406 const void *data);
407
408void
409GX2SetPixelUniformReg(uint32_t offset,
410 uint32_t count,
411 const void *data);
412
413void
414GX2SetVertexUniformBlock(uint32_t location,
415 uint32_t size,
416 const void *data);
417
418void
419GX2SetPixelUniformBlock(uint32_t location,
420 uint32_t size,
421 const void *data);
422
423void
425 uint32_t size,
426 const void *data);
427
428void
430 uint32_t numVsGpr, uint32_t numVsStackEntries,
431 uint32_t numGsGpr, uint32_t numGsStackEntries,
432 uint32_t numPsGpr, uint32_t numPsStackEntries);
433
434void
436
437void
439 uint32_t size);
440
441void
443 uint32_t size);
444
445uint32_t
447
448uint32_t
450
451uint32_t
453
454uint32_t
456
457uint32_t
459
460uint32_t
462
463static inline GX2UniformBlock *
465 const char *name)
466{
467 for (uint32_t i = 0; i < shader->uniformBlockCount; ++i) {
468 if (strcmp(name, shader->uniformBlocks[i].name) == 0) {
469 return &shader->uniformBlocks[i];
470 }
471 }
472
473 return NULL;
474}
475
476static inline GX2UniformBlock *
478 const char *name)
479{
480 for (uint32_t i = 0; i < shader->uniformBlockCount; ++i) {
481 if (strcmp(name, shader->uniformBlocks[i].name) == 0) {
482 return &shader->uniformBlocks[i];
483 }
484 }
485
486 return NULL;
487}
488
489static inline GX2UniformBlock *
491 const char *name)
492{
493 for (uint32_t i = 0; i < shader->uniformBlockCount; ++i) {
494 if (strcmp(name, shader->uniformBlocks[i].name) == 0) {
495 return &shader->uniformBlocks[i];
496 }
497 }
498
499 return NULL;
500}
501
502static inline GX2UniformVar *
504 const char *name)
505{
506 for (uint32_t i = 0; i < shader->uniformVarCount; ++i) {
507 if (strcmp(name, shader->uniformVars[i].name) == 0) {
508 return &shader->uniformVars[i];
509 }
510 }
511
512 return NULL;
513}
514
515static inline GX2UniformVar *
517 const char *name)
518{
519 for (uint32_t i = 0; i < shader->uniformVarCount; ++i) {
520 if (strcmp(name, shader->uniformVars[i].name) == 0) {
521 return &shader->uniformVars[i];
522 }
523 }
524
525 return NULL;
526}
527
528static inline GX2UniformVar *
530 const char *name)
531{
532 for (uint32_t i = 0; i < shader->uniformVarCount; ++i) {
533 if (strcmp(name, shader->uniformVars[i].name) == 0) {
534 return &shader->uniformVars[i];
535 }
536 }
537
538 return NULL;
539}
540
541static inline void
543{
545 GX2SetShaderModeEx(mode, 0x2c, 0x20, 0x40, 0x30, 0x4c, 0xb0);
546 } else {
547 GX2SetShaderModeEx(mode, 0x30, 0x40, 0x0, 0x0, 0xc8, 0xc0);
548 }
549}
550
551#ifdef __cplusplus
552}
553#endif
554
GX2AttribFormat
Definition enum.h:53
GX2FetchShaderType
Definition enum.h:216
GX2ShaderVarType
Definition enum.h:360
GX2EndianSwapMode
Definition enum.h:208
GX2ShaderMode
Definition enum.h:352
GX2SamplerVarType
Definition enum.h:332
GX2AttribIndexType
Definition enum.h:105
GX2TessellationMode
Definition enum.h:515
@ GX2_SHADER_MODE_GEOMETRY_SHADER
Definition enum.h:355
GX2AttribVar * attribVars
Definition shaders.h:160
uint32_t initialValueCount
Definition shaders.h:150
struct GX2FetchShader::@16 regs
uint32_t attribVarCount
Definition shaders.h:159
struct GX2PixelShader::@18 regs
GX2RBuffer gx2rBuffer
Definition shaders.h:167
GX2SamplerVar * samplerVars
Definition shaders.h:157
GX2UniformBlock * uniformBlocks
Definition shaders.h:145
GX2EndianSwapMode endianSwap
Definition shaders.h:348
void * vertexProgram
Definition shaders.h:284
uint32_t vertexProgramSize
Definition shaders.h:283
uint32_t numDivisors
Definition shaders.h:42
GX2ShaderVarType type
Definition shaders.h:68
uint32_t ringItemSize
Definition shaders.h:302
GX2AttribFormat format
Definition shaders.h:344
uint32_t divisors[2]
Definition shaders.h:43
int32_t block
Definition shaders.h:71
uint32_t streamOutStride[4]
Definition shaders.h:165
uint32_t attribCount
Definition shaders.h:41
GX2AttribIndexType type
Definition shaders.h:345
struct GX2GeometryShader::@19 regs
uint32_t samplerVarCount
Definition shaders.h:156
GX2FetchShaderType type
Definition shaders.h:32
GX2ShaderMode mode
Definition shaders.h:142
uint32_t count
Definition shaders.h:69
uint32_t offset
Definition shaders.h:57
uint32_t location
Definition shaders.h:102
const char * name
Definition shaders.h:56
GX2LoopVar * loopVars
Definition shaders.h:154
uint32_t loopVarCount
Definition shaders.h:153
struct GX2VertexShader::@17 regs
uint32_t uniformVarCount
Definition shaders.h:147
GX2SamplerVarType type
Definition shaders.h:101
uint32_t ringItemsize
Definition shaders.h:162
uint32_t size
Definition shaders.h:39
uint32_t buffer
Definition shaders.h:342
uint32_t aluDivisor
Definition shaders.h:346
uint32_t mask
Definition shaders.h:347
uint32_t value
Definition shaders.h:92
GX2UniformVar * uniformVars
Definition shaders.h:148
uint32_t uniformBlockCount
Definition shaders.h:144
void * program
Definition shaders.h:40
BOOL hasStreamOut
Definition shaders.h:164
GX2UniformInitialValue * initialValues
Definition shaders.h:151
void GX2SetGeometryShader(const GX2GeometryShader *shader)
uint32_t GX2CalcGeometryShaderInputRingBufferSize(uint32_t ringItemSize)
uint32_t GX2GetGeometryShaderGPRs(const GX2GeometryShader *shader)
void GX2InitFetchShaderEx(GX2FetchShader *fetchShader, uint8_t *buffer, uint32_t attribCount, const GX2AttribStream *attribs, GX2FetchShaderType type, GX2TessellationMode tessMode)
void GX2SetGeometryUniformBlock(uint32_t location, uint32_t size, const void *data)
void GX2SetVertexUniformReg(uint32_t offset, uint32_t count, const void *data)
static GX2UniformVar * GX2GetGeometryUniformVar(const GX2GeometryShader *shader, const char *name)
Definition shaders.h:503
void GX2SetPixelUniformReg(uint32_t offset, uint32_t count, const void *data)
void GX2SetShaderModeEx(GX2ShaderMode mode, uint32_t numVsGpr, uint32_t numVsStackEntries, uint32_t numGsGpr, uint32_t numGsStackEntries, uint32_t numPsGpr, uint32_t numPsStackEntries)
void GX2SetPixelShader(const GX2PixelShader *shader)
static GX2UniformBlock * GX2GetVertexUniformBlock(const GX2VertexShader *shader, const char *name)
Definition shaders.h:490
static GX2UniformVar * GX2GetPixelUniformVar(const GX2PixelShader *shader, const char *name)
Definition shaders.h:516
static GX2UniformVar * GX2GetVertexUniformVar(const GX2VertexShader *shader, const char *name)
Definition shaders.h:529
void GX2SetStreamOutEnable(BOOL enable)
uint32_t GX2GetPixelShaderStackEntries(const GX2PixelShader *shader)
void GX2SetVertexUniformBlock(uint32_t location, uint32_t size, const void *data)
static void GX2SetShaderMode(GX2ShaderMode mode)
Definition shaders.h:542
void GX2SetPixelUniformBlock(uint32_t location, uint32_t size, const void *data)
uint32_t GX2GetVertexShaderStackEntries(const GX2VertexShader *shader)
void GX2SetGeometryShaderOutputRingBuffer(void *buffer, uint32_t size)
void GX2SetFetchShader(const GX2FetchShader *shader)
static GX2UniformBlock * GX2GetPixelUniformBlock(const GX2PixelShader *shader, const char *name)
Definition shaders.h:477
static GX2UniformBlock * GX2GetGeometryUniformBlock(const GX2GeometryShader *shader, const char *name)
Definition shaders.h:464
void GX2SetGeometryShaderInputRingBuffer(const void *buffer, uint32_t size)
void GX2SetPixelSampler(const GX2Sampler *sampler, uint32_t id)
uint32_t GX2CalcFetchShaderSizeEx(uint32_t attribs, GX2FetchShaderType fetchShaderType, GX2TessellationMode tesellationMode)
void GX2SetVertexShader(const GX2VertexShader *shader)
uint32_t GX2GetPixelShaderGPRs(const GX2PixelShader *shader)
void GX2SetGeometrySampler(const GX2Sampler *sampler, uint32_t id)
uint32_t GX2GetVertexShaderGPRs(const GX2VertexShader *shader)
void GX2SetVertexSampler(const GX2Sampler *sampler, uint32_t id)
uint32_t GX2CalcGeometryShaderOutputRingBufferSize(uint32_t ringItemSize)
uint32_t GX2GetGeometryShaderStackEntries(const GX2GeometryShader *shader)
int32_t BOOL
Definition wut_types.h:7