Add mappings between ir_texture_opcode and strings.

This commit is contained in:
Kenneth Graunke 2010-05-26 16:41:47 -07:00
parent 81377c012c
commit c30f6e5dea
2 changed files with 31 additions and 0 deletions

21
ir.cpp
View file

@ -303,6 +303,27 @@ ir_dereference::is_lvalue()
}
const char *tex_opcode_strs[] = { "tex", "txb", "txl", "txd", "txf" };
const char *ir_texture::opcode_string()
{
assert((unsigned int) op <=
sizeof(tex_opcode_strs) / sizeof(tex_opcode_strs[0]));
return tex_opcode_strs[op];
}
ir_texture_opcode
ir_texture::get_opcode(const char *str)
{
const int count = sizeof(tex_opcode_strs) / sizeof(tex_opcode_strs[0]);
for (int op = 0; op < count; op++) {
if (strcmp(str, tex_opcode_strs[op]) == 0)
return (ir_texture_opcode) op;
}
return (ir_texture_opcode) -1;
}
ir_swizzle::ir_swizzle(ir_rvalue *val, unsigned x, unsigned y, unsigned z,
unsigned w, unsigned count)
: val(val)

10
ir.h
View file

@ -775,6 +775,16 @@ public:
/* empty */
}
/**
* Return a string representing the ir_texture_opcode.
*/
const char *opcode_string();
/**
* Do a reverse-lookup to translate a string into an ir_texture_opcode.
*/
static ir_texture_opcode get_opcode(const char *);
enum ir_texture_opcode op;
/** Sampler to use for the texture access. */