diff options
author | Kenneth Graunke <kenneth@whitecape.org> | 2010-05-26 16:41:47 -0700 |
---|---|---|
committer | Kenneth Graunke <kenneth@whitecape.org> | 2010-06-09 11:14:57 -0700 |
commit | c30f6e5dea7e75983784f3539304c8dd36356d1c (patch) | |
tree | 07f07b0edadac395c0d0b796cdcfe7e8d07db5a4 | |
parent | 81377c012cf5db3efe2e39885846c60b6e5c6eb8 (diff) |
Add mappings between ir_texture_opcode and strings.
-rw-r--r-- | ir.cpp | 21 | ||||
-rw-r--r-- | ir.h | 10 |
2 files changed, 31 insertions, 0 deletions
@@ -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) @@ -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. */ |