Skip to content

Instantly share code, notes, and snippets.

@Wolfvak
Last active April 21, 2020 04:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Wolfvak/2f3e989c0baccb777e976417a8f77f0c to your computer and use it in GitHub Desktop.
Save Wolfvak/2f3e989c0baccb777e976417a8f77f0c to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <assert.h>
#include <stdint.h>
#include <stddef.h>
#include <stdlib.h>
static const char *reg_name(unsigned reg);
static uint32_t cmd_paramask_to_sane_mask(unsigned mask) {
uint32_t ret = 0;
ret |= (mask & 1) ? 0xFF : 0;
ret |= (mask & 2) ? 0xFF00 : 0;
ret |= (mask & 4) ? 0xFF0000 : 0;
ret |= (mask & 8) ? 0xFF000000 : 0;
return ret;
}
static unsigned cmd_regid(uint32_t cmd) {
return cmd & 0xFFFF;
}
static unsigned cmd_paramask(uint32_t cmd) {
return (cmd >> 16) & 0xF;
}
static unsigned cmd_params(uint32_t cmd) {
return ((cmd >> 20) & 0xFF) + 1;
}
static unsigned cmd_consecutive(uint32_t cmd) {
return cmd >> 31;
}
static void print_cmd(unsigned reg, uint32_t param, uint32_t mask) {
const char *name = reg_name(reg);
if (name) {
printf("[%s]", name);
} else {
printf("[GPUREG_%04X]", reg);
}
//printf("[0x%04X] = %08X", reg, param);
printf(" = %08X", param);
if (mask != 0xFFFFFFFF) printf(", MASK = %08X", mask);
printf("\n");
}
static int dump_cmd(uint32_t *w, uint32_t rem) {
uint32_t cmd, param_mask;
unsigned reg, mask, argc, con;
if (rem < 2) {
printf("\nEND OF CMDLIST\n");
return 0;
}
cmd = w[1];
reg = cmd_regid(cmd);
mask = cmd_paramask(cmd);
argc = cmd_params(cmd);
con = cmd_consecutive(cmd);
if ((argc+1) > rem) {
printf("tried to read more words than available (%d / %d)\n", argc+1, rem);
return 0;
}
param_mask = cmd_paramask_to_sane_mask(mask);
print_cmd(reg, w[0], param_mask);
w = &w[2];
for (unsigned i = 1; i < argc; i++) {
if (con) reg += 1;
printf("-> ");
print_cmd(reg, *(w++), param_mask);
}
return argc + 1;
}
static void dump_cmdlist(uint32_t *w, uint32_t numwords) {
while(numwords >= 2) {
uint32_t inc = dump_cmd(w, numwords);
if (!inc) return;
inc = (inc + 1) & ~1;
numwords -= inc;
w += inc;
}
}
int main(int argc, char *argv[])
{
FILE *fp;
uint32_t *buf;
size_t datasz, bufsz;
assert(argc == 2);
fp = fopen(argv[1], "rb");
assert(fp != NULL);
fseek(fp, 0L, SEEK_END);
datasz = ftell(fp);
if (datasz & 15) {
printf("WARNING: cmdlist is not aligned to a 16 byte boundary. Ignoring the last %d bytes\n", datasz & 15);
datasz &= ~0xF;
}
buf = calloc(1, datasz); // buffer should be zero-filled
assert(buf != NULL);
fseek(fp, 0L, SEEK_SET);
fread(buf, 1, datasz, fp);
fclose(fp);
dump_cmdlist(buf, datasz >> 2);
free(buf);
return 0;
}
static const char *reg_name(unsigned reg) {
switch(reg) {
default: return NULL;
case 0x10: return "FINALIZE";
case 0x40: return "FACECULLING_CONFIG";
case 0x41: return "VIEWPORT_WIDTH";
case 0x42: return "VIEWPORT_INVW";
case 0x43: return "VIEWPORT_HEIGHT";
case 0x44: return "VIEWPORT_INVH";
case 0x47: return "FRAGOP_CLIP";
case 0x48: return "FRAGOP_CLIP_DATA0";
case 0x49: return "FRAGOP_CLIP_DATA1";
case 0x4A: return "FRAGOP_CLIP_DATA2";
case 0x4B: return "FRAGOP_CLIP_DATA3";
case 0x4D: return "DEPTHMAP_SCALE";
case 0x4E: return "DEPTHMAP_OFFSET";
case 0x4F: return "SH_OUTMAP_TOTAL";
case 0x50: return "SH_OUTMAP_O0";
case 0x51: return "SH_OUTMAP_O1";
case 0x52: return "SH_OUTMAP_O2";
case 0x53: return "SH_OUTMAP_O3";
case 0x54: return "SH_OUTMAP_O4";
case 0x55: return "SH_OUTMAP_O5";
case 0x56: return "SH_OUTMAP_O6";
case 0x61: return "EARLYDEPTH_FUNC";
case 0x62: return "EARLYDEPTH_TEST1";
case 0x63: return "EARLYDEPTH_CLEAR";
case 0x64: return "SH_OUTATTR_MODE";
case 0x65: return "SCISSORTEST_MODE";
case 0x66: return "SCISSORTEST_POS";
case 0x67: return "SCISSORTEST_DIM";
case 0x68: return "VIEWPORT_XY";
case 0x6A: return "EARLYDEPTH_DATA";
case 0x6D: return "DEPTHMAP_ENABLE";
case 0x6E: return "RENDERBUF_DIM";
case 0x6F: return "SH_OUTATTR_CLOCK";
case 0x80: return "TEXUNIT_CONFIG";
case 0x81: return "TEXUNIT0_BORDER_COLOR";
case 0x82: return "TEXUNIT0_DIM";
case 0x83: return "TEXUNIT0_PARAM";
case 0x84: return "TEXUNIT0_LOD";
case 0x85: return "TEXUNIT0_ADDR1";
case 0x86: return "TEXUNIT0_ADDR2";
case 0x87: return "TEXUNIT0_ADDR3";
case 0x88: return "TEXUNIT0_ADDR4";
case 0x89: return "TEXUNIT0_ADDR5";
case 0x8A: return "TEXUNIT0_ADDR6";
case 0x8B: return "TEXUNIT0_SHADOW";
case 0x91: return "TEXUNIT1_BORDER_COLOR";
case 0x92: return "TEXUNIT1_DIM";
case 0x93: return "TEXUNIT1_PARAM";
case 0x94: return "TEXUNIT1_LOD";
case 0x95: return "TEXUNIT1_ADDR";
case 0x96: return "TEXUNIT1_TYPE";
case 0x99: return "TEXUNIT2_BORDER_COLOR";
case 0x9A: return "TEXUNIT2_DIM";
case 0x9B: return "TEXUNIT2_PARAM";
case 0x9C: return "TEXUNIT2_LOD";
case 0x9D: return "TEXUNIT2_ADDR";
case 0x9E: return "TEXUNIT2_TYPE";
// missing TEXUNIT3 / PROCTEX_LUT
case 0xC0: return "TEXENV0_SOURCE";
case 0xC1: return "TEXENV0_OPERAND";
case 0xC2: return "TEXENV0_COMBINER";
case 0xC3: return "TEXENV0_COLOR";
case 0xC4: return "TEXENV0_SCALE";
case 0xC8: return "TEXENV1_SOURCE";
case 0xC9: return "TEXENV1_OPERAND";
case 0xCA: return "TEXENV1_COMBINER";
case 0xCB: return "TEXENV1_COLOR";
case 0xCC: return "TEXENV1_SCALE";
case 0xD0: return "TEXENV2_SOURCE";
case 0xD1: return "TEXENV2_OPERAND";
case 0xD2: return "TEXENV2_COMBINER";
case 0xD3: return "TEXENV2_COLOR";
case 0xD4: return "TEXENV2_SCALE";
case 0xD8: return "TEXENV2_SOURCE";
case 0xD9: return "TEXENV2_OPERAND";
case 0xDA: return "TEXENV2_COMBINER";
case 0xDB: return "TEXENV2_COLOR";
case 0xDC: return "TEXENV2_SCALE";
case 0xE0: return "TEXENV_UPDATE_BUFFER";
case 0xE1: return "FOG_COLOR";
case 0xE4: return "GAS_ATTENUATION";
case 0xE5: return "GAS_ACCMAX";
case 0xE6: return "FOG_LUT_INDEX";
case 0xE8: return "FOG_LUT_DATA0";
case 0xE9: return "FOG_LUT_DATA1";
case 0xEA: return "FOG_LUT_DATA2";
case 0xEB: return "FOG_LUT_DATA3";
case 0xEC: return "FOG_LUT_DATA4";
case 0xED: return "FOG_LUT_DATA5";
case 0xEE: return "FOG_LUT_DATA6";
case 0xEF: return "FOG_LUT_DATA7";
case 0xF0: return "TEXENV4_SOURCE";
case 0xF1: return "TEXENV4_OPERAND";
case 0xF2: return "TEXENV4_COMBINER";
case 0xF3: return "TEXENV4_COLOR";
case 0xF4: return "TEXENV4_SCALE";
case 0xF8: return "TEXENV5_SOURCE";
case 0xF9: return "TEXENV5_OPERAND";
case 0xFA: return "TEXENV5_COMBINER";
case 0xFB: return "TEXENV5_COLOR";
case 0xFC: return "TEXENV5_SCALE";
case 0xFD: return "TEXENV_BUFFER_COLOR";
case 0x100: return "COLOR_OPERATION";
case 0x101: return "BLEND_FUNC";
case 0x102: return "LOGIC_OP";
case 0x103: return "BLEND_COLOR";
case 0x104: return "FRAGOP_ALPHA_TEST";
case 0x105: return "STENCIL_TEST";
case 0x106: return "STENCIL_OP";
case 0x107: return "DEPTH_COLOR_MASK";
case 0x110: return "FRAMEBUFFER_INVALIDATE";
case 0x111: return "FRAMEBUFFER_FLUSH";
case 0x112: return "COLORBUFFER_READ";
case 0x113: return "COLORBUFFER_WRITE";
case 0x114: return "DEPTHBUFFER_READ";
case 0x115: return "DEPTHBUFFER_WRITE";
case 0x116: return "DEPTHBUFFER_FORMAT";
case 0x117: return "COLORBUFFER_FORMAT";
case 0x118: return "EARLYDEPTH_TEST2";
case 0x11B: return "FRAMEBUFFER_BLOCK32";
case 0x11C: return "DEPTHBUFFER_LOC";
case 0x11D: return "COLORBUFFER_LOC";
case 0x11E: return "FRAMEBUFFER_DIM";
case 0x120: return "GAS_LIGHT_XY";
case 0x121: return "GAS_LIGHT_Z";
case 0x122: return "GAS_LIGHT_Z_COLOR";
case 0x123: return "GAS_LUT_INDEX";
case 0x124: return "GAS_LUT_DATA";
case 0x126: return "GAS_DELTAZ_DEPTH";
case 0x130: return "FRAGOP_SHADOW";
case 0x140: return "LIGHT0_SPECULAR0";
case 0x141: return "LIGHT0_SPECULAR1";
case 0x142: return "LIGHT0_DIFFUSE";
case 0x143: return "LIGHT0_AMBIENT";
case 0x144: return "LIGHT0_XY";
case 0x145: return "LIGHT0_Z";
case 0x146: return "LIGHT0_SPOTDIR_XY";
case 0x147: return "LIGHT0_SPOTDIR_Z";
case 0x149: return "LIGHT0_CONFIG";
case 0x14A: return "LIGHT0_ATTENUATION_BIAS";
case 0x14B: return "LIGHT0_ATTENUATION_SCALE";
case 0x150: return "LIGHT1_SPECULAR0";
case 0x151: return "LIGHT1_SPECULAR1";
case 0x152: return "LIGHT1_DIFFUSE";
case 0x153: return "LIGHT1_AMBIENT";
case 0x154: return "LIGHT1_XY";
case 0x155: return "LIGHT1_Z";
case 0x156: return "LIGHT1_SPOTDIR_XY";
case 0x157: return "LIGHT1_SPOTDIR_Z";
case 0x159: return "LIGHT1_CONFIG";
case 0x15A: return "LIGHT1_ATTENUATION_BIAS";
case 0x15B: return "LIGHT1_ATTENUATION_SCALE";
case 0x160: return "LIGHT2_SPECULAR0";
case 0x161: return "LIGHT2_SPECULAR1";
case 0x162: return "LIGHT2_DIFFUSE";
case 0x163: return "LIGHT2_AMBIENT";
case 0x164: return "LIGHT2_XY";
case 0x165: return "LIGHT2_Z";
case 0x166: return "LIGHT2_SPOTDIR_XY";
case 0x167: return "LIGHT2_SPOTDIR_Z";
case 0x169: return "LIGHT2_CONFIG";
case 0x16A: return "LIGHT2_ATTENUATION_BIAS";
case 0x16B: return "LIGHT2_ATTENUATION_SCALE";
case 0x170: return "LIGHT3_SPECULAR0";
case 0x171: return "LIGHT3_SPECULAR1";
case 0x172: return "LIGHT3_DIFFUSE";
case 0x173: return "LIGHT3_AMBIENT";
case 0x174: return "LIGHT3_XY";
case 0x175: return "LIGHT3_Z";
case 0x176: return "LIGHT3_SPOTDIR_XY";
case 0x177: return "LIGHT3_SPOTDIR_Z";
case 0x179: return "LIGHT3_CONFIG";
case 0x17A: return "LIGHT3_ATTENUATION_BIAS";
case 0x17B: return "LIGHT3_ATTENUATION_SCALE";
case 0x180: return "LIGHT4_SPECULAR0";
case 0x181: return "LIGHT4_SPECULAR1";
case 0x182: return "LIGHT4_DIFFUSE";
case 0x183: return "LIGHT4_AMBIENT";
case 0x184: return "LIGHT4_XY";
case 0x185: return "LIGHT4_Z";
case 0x186: return "LIGHT4_SPOTDIR_XY";
case 0x187: return "LIGHT4_SPOTDIR_Z";
case 0x189: return "LIGHT4_CONFIG";
case 0x18A: return "LIGHT4_ATTENUATION_BIAS";
case 0x18B: return "LIGHT4_ATTENUATION_SCALE";
case 0x190: return "LIGHT5_SPECULAR0";
case 0x191: return "LIGHT5_SPECULAR1";
case 0x192: return "LIGHT5_DIFFUSE";
case 0x193: return "LIGHT5_AMBIENT";
case 0x194: return "LIGHT5_XY";
case 0x195: return "LIGHT5_Z";
case 0x196: return "LIGHT5_SPOTDIR_XY";
case 0x197: return "LIGHT5_SPOTDIR_Z";
case 0x199: return "LIGHT5_CONFIG";
case 0x19A: return "LIGHT5_ATTENUATION_BIAS";
case 0x19B: return "LIGHT5_ATTENUATION_SCALE";
case 0x1A0: return "LIGHT6_SPECULAR0";
case 0x1A1: return "LIGHT6_SPECULAR1";
case 0x1A2: return "LIGHT6_DIFFUSE";
case 0x1A3: return "LIGHT6_AMBIENT";
case 0x1A4: return "LIGHT6_XY";
case 0x1A6: return "LIGHT6_SPOTDIR_XY";
case 0x1A7: return "LIGHT6_SPOTDIR_Z";
case 0x1A9: return "LIGHT6_CONFIG";
case 0x1AA: return "LIGHT6_ATTENUATION_BIAS";
case 0x1AB: return "LIGHT6_ATTENUATION_SCALE";
case 0x1B0: return "LIGHT7_SPECULAR0";
case 0x1B1: return "LIGHT7_SPECULAR1";
case 0x1B2: return "LIGHT7_DIFFUSE";
case 0x1B3: return "LIGHT7_AMBIENT";
case 0x1B4: return "LIGHT7_XY";
case 0x1B5: return "LIGHT7_Z";
case 0x1B6: return "LIGHT7_SPOTDIR_XY";
case 0x1B7: return "LIGHT7_SPOTDIR_Z";
case 0x1B9: return "LIGHT7_CONFIG";
case 0x1BA: return "LIGHT7_ATTENUATION_BIAS";
case 0x1BB: return "LIGHT7_ATTENUATION_SCALE";
case 0x1C0: return "LIGHTING_AMBIENT";
case 0x1C2: return "LIGHTING_NUM_LIGHTS";
case 0x1C3: return "LIGHTING_CONFIG0";
case 0x1C4: return "LIGHTING_CONFIG1";
case 0x1C5: return "LIGHTING_LUT_INDEX";
case 0x1C6: return "LIGHTING_ENABLE1";
case 0x1C8: return "LIGHTING_LUT_DATA0";
case 0x1C9: return "LIGHTING_LUT_DATA1";
case 0x1CA: return "LIGHTING_LUT_DATA2";
case 0x1CB: return "LIGHTING_LUT_DATA3";
case 0x1CC: return "LIGHTING_LUT_DATA4";
case 0x1CD: return "LIGHTING_LUT_DATA5";
case 0x1CE: return "LIGHTING_LUT_DATA6";
case 0x1CF: return "LIGHTING_LUT_DATA7";
case 0x1D0: return "LIGHTING_LUTINPUT_ABS";
case 0x1D1: return "LIGHTING_LUTINPUT_SELECT";
case 0x1D2: return "LIGHTING_LUTINPUT_SCALE";
case 0x1D9: return "LIGHTING_LIGHT_PERMUTATION";
case 0x200: return "ATTRIBBUFFERS_LOC";
case 0x201: return "ATTRIBBUFFERS_FORMAT_LOW";
case 0x202: return "ATTRIBBUFFERS_FORMAT_HIGH";
case 0x203: return "ATTRIBBUFFER0_OFFSET";
case 0x204: return "ATTRIBBUFFER0_CONFIG1";
case 0x205: return "ATTRIBBUFFER0_CONFIG2";
case 0x206: return "ATTRIBBUFFER1_OFFSET";
case 0x207: return "ATTRIBBUFFER1_CONFIG1";
case 0x208: return "ATTRIBBUFFER1_CONFIG2";
case 0x209: return "ATTRIBBUFFER2_OFFSET";
case 0x20A: return "ATTRIBBUFFER2_CONFIG1";
case 0x20B: return "ATTRIBBUFFER2_CONFIG2";
case 0x20C: return "ATTRIBBUFFER3_OFFSET";
case 0x20D: return "ATTRIBBUFFER3_CONFIG1";
case 0x20E: return "ATTRIBBUFFER3_CONFIG2";
case 0x20F: return "ATTRIBBUFFER4_OFFSET";
case 0x210: return "ATTRIBBUFFER4_CONFIG1";
case 0x211: return "ATTRIBBUFFER4_CONFIG2";
case 0x212: return "ATTRIBBUFFER5_OFFSET";
case 0x213: return "ATTRIBBUFFER5_CONFIG1";
case 0x214: return "ATTRIBBUFFER5_CONFIG2";
case 0x215: return "ATTRIBBUFFER6_OFFSET";
case 0x216: return "ATTRIBBUFFER6_CONFIG1";
case 0x217: return "ATTRIBBUFFER6_CONFIG2";
case 0x218: return "ATTRIBBUFFER7_OFFSET";
case 0x219: return "ATTRIBBUFFER7_CONFIG1";
case 0x21A: return "ATTRIBBUFFER7_CONFIG2";
case 0x21B: return "ATTRIBBUFFER8_OFFSET";
case 0x21C: return "ATTRIBBUFFER8_CONFIG1";
case 0x21D: return "ATTRIBBUFFER8_CONFIG2";
case 0x21E: return "ATTRIBBUFFER9_OFFSET";
case 0x21F: return "ATTRIBBUFFER9_CONFIG1";
case 0x220: return "ATTRIBBUFFER9_CONFIG2";
case 0x221: return "ATTRIBBUFFER10_OFFSET";
case 0x222: return "ATTRIBBUFFER10_CONFIG1";
case 0x223: return "ATTRIBBUFFER10_CONFIG2";
case 0x224: return "ATTRIBBUFFER11_OFFSET";
case 0x225: return "ATTRIBBUFFER11_CONFIG1";
case 0x226: return "ATTRIBBUFFER11_CONFIG2";
case 0x227: return "INDEXBUFFER_CONFIG";
case 0x228: return "NUMVERTICES";
case 0x229: return "GEOSTAGE_CONFIG";
case 0x22A: return "VERTEX_OFFSET";
case 0x22D: return "POST_VERTEX_CACHE_NUM";
case 0x22E: return "DRAWARRAYS";
case 0x22F: return "DRAWELEMENTS";
case 0x231: return "VTX_FUNC";
case 0x232: return "FIXEDATTRIB_INDEX";
case 0x233: return "FIXEDATTRIB_DATA0";
case 0x234: return "FIXEDATTRIB_DATA1";
case 0x235: return "FIXEDATTRIB_DATA2";
case 0x238: return "CMDBUF_SIZE0";
case 0x239: return "CMDBUF_SIZE1";
case 0x23A: return "CMDBUF_ADDR0";
case 0x23B: return "CMDBUF_ADDR1";
case 0x23C: return "CMDBUF_JUMP0";
case 0x23D: return "CMDBUF_JUMP1";
case 0x242: return "VSH_NUM_ATTR";
case 0x244: return "VSH_COM_MODE";
case 0x245: return "START_DRAW_FUNC0";
case 0x24A: return "VSH_OUTMAP_TOTAL1";
case 0x251: return "VSH_OUTMAP_TOTAL2";
case 0x252: return "GSH_MISC0";
case 0x253: return "GEOSTAGE_CONFIG2";
case 0x254: return "GSH_MISC1";
case 0x25E: return "PRIMITIVE_CONFIG";
case 0x25F: return "RESTART_PRIMITIVE";
case 0x280: return "GSH_BOOLUNIFORM";
case 0x281: return "GSH_INTUNIFORM_I0";
case 0x282: return "GSH_INTUNIFORM_I1";
case 0x283: return "GSH_INTUNIFORM_I2";
case 0x284: return "GSH_INTUNIFORM_I3";
case 0x289: return "GSH_INPUTBUFFER_CONFIG";
case 0x28A: return "GSH_ENTRYPOINT";
case 0x28B: return "GSH_ATTRIBUTES_PERMUTATION_LOW";
case 0x28C: return "GSH_ATTRIBUTES_PERMUTATION_HIGH";
case 0x28D: return "GSH_OUTMAP_MASK";
case 0x28F: return "GSH_CODETRANSFER_END";
case 0x290: return "GSH_FLOATUNIFORM_INDEX";
case 0x291: return "GSH_FLOATUNIFORM_DATA0";
case 0x292: return "GSH_FLOATUNIFORM_DATA1";
case 0x293: return "GSH_FLOATUNIFORM_DATA2";
case 0x294: return "GSH_FLOATUNIFORM_DATA3";
case 0x295: return "GSH_FLOATUNIFORM_DATA4";
case 0x296: return "GSH_FLOATUNIFORM_DATA5";
case 0x297: return "GSH_FLOATUNIFORM_DATA6";
case 0x298: return "GSH_FLOATUNIFORM_DATA7";
case 0x29B: return "GSH_CODETRANSFER_INDEX";
case 0x29C: return "GSH_CODETRANSFER_DATA0";
case 0x29D: return "GSH_CODETRANSFER_DATA1";
case 0x29E: return "GSH_CODETRANSFER_DATA2";
case 0x29F: return "GSH_CODETRANSFER_DATA3";
case 0x2A0: return "GSH_CODETRANSFER_DATA4";
case 0x2A1: return "GSH_CODETRANSFER_DATA5";
case 0x2A2: return "GSH_CODETRANSFER_DATA6";
case 0x2A3: return "GSH_CODETRANSFER_DATA7";
case 0x2A5: return "GSH_OPDESCS_INDEX";
case 0x2A6: return "GSH_OPDESCS_DATA0";
case 0x2A7: return "GSH_OPDESCS_DATA1";
case 0x2A8: return "GSH_OPDESCS_DATA2";
case 0x2A9: return "GSH_OPDESCS_DATA3";
case 0x2AA: return "GSH_OPDESCS_DATA4";
case 0x2AB: return "GSH_OPDESCS_DATA5";
case 0x2AC: return "GSH_OPDESCS_DATA6";
case 0x2AD: return "GSH_OPDESCS_DATA7";
case 0x2B0: return "VSH_BOOLUNIFORM";
case 0x2B1: return "VSH_INTUNIFORM_I0";
case 0x2B2: return "VSH_INTUNIFORM_I1";
case 0x2B3: return "VSH_INTUNIFORM_I2";
case 0x2B4: return "VSH_INTUNIFORM_I3";
case 0x2B9: return "VSH_INPUTBUFFER_CONFIG";
case 0x2BA: return "VSH_ENTRYPOINT";
case 0x2BB: return "VSH_ATTRIBUTES_PERMUTATION_LOW";
case 0x2BC: return "VSH_ATTRIBUTES_PERMUTATION_HIGH";
case 0x2BD: return "VSH_OUTMAP_MASK";
case 0x2BF: return "VSH_CODETRANSFER_END";
case 0x2C0: return "VSH_FLOATUNIFORM_INDEX";
case 0x2C1: return "VSH_FLOATUNIFORM_DATA0";
case 0x2C2: return "VSH_FLOATUNIFORM_DATA1";
case 0x2C3: return "VSH_FLOATUNIFORM_DATA2";
case 0x2C4: return "VSH_FLOATUNIFORM_DATA3";
case 0x2C5: return "VSH_FLOATUNIFORM_DATA4";
case 0x2C6: return "VSH_FLOATUNIFORM_DATA5";
case 0x2C7: return "VSH_FLOATUNIFORM_DATA6";
case 0x2C8: return "VSH_FLOATUNIFORM_DATA7";
case 0x2CB: return "VSH_CODETRANSFER_INDEX";
case 0x2CC: return "VSH_CODETRANSFER_DATA0";
case 0x2CD: return "VSH_CODETRANSFER_DATA1";
case 0x2CE: return "VSH_CODETRANSFER_DATA2";
case 0x2CF: return "VSH_CODETRANSFER_DATA3";
case 0x2D0: return "VSH_CODETRANSFER_DATA4";
case 0x2D1: return "VSH_CODETRANSFER_DATA5";
case 0x2D2: return "VSH_CODETRANSFER_DATA6";
case 0x2D3: return "VSH_CODETRANSFER_DATA7";
case 0x2D5: return "VSH_OPDESCS_INDEX";
case 0x2D6: return "VSH_OPDESCS_DATA0";
case 0x2D7: return "VSH_OPDESCS_DATA1";
case 0x2D8: return "VSH_OPDESCS_DATA2";
case 0x2D9: return "VSH_OPDESCS_DATA3";
case 0x2DA: return "VSH_OPDESCS_DATA4";
case 0x2DB: return "VSH_OPDESCS_DATA5";
case 0x2DC: return "VSH_OPDESCS_DATA6";
case 0x2DD: return "VSH_OPDESCS_DATA7";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment