]> git.cworth.org Git - apitrace/blobdiff - common/trace_parser.cpp
Preserve both D3D9 shader byte code, and disassembly.
[apitrace] / common / trace_parser.cpp
index 0e4fba098db597d4e782251e7149d7c36ee80a0c..3b159017eabc4c5b5be76d7e138d14ee320bff39 100644 (file)
@@ -557,6 +557,9 @@ Value *Parser::parse_value(void) {
     case trace::TYPE_OPAQUE:
         value = parse_opaque();
         break;
+    case trace::TYPE_REPR:
+        value = parse_repr();
+        break;
     default:
         std::cerr << "error: unknown type " << c << "\n";
         exit(1);
@@ -613,6 +616,9 @@ void Parser::scan_value(void) {
     case trace::TYPE_OPAQUE:
         scan_opaque();
         break;
+    case trace::TYPE_REPR:
+        scan_repr();
+        break;
     default:
         std::cerr << "error: unknown type " << c << "\n";
         exit(1);
@@ -784,6 +790,19 @@ void Parser::scan_opaque() {
 }
 
 
+Value *Parser::parse_repr() {
+    Value *humanValue = parse_value();
+    Value *machineValue = parse_value();
+    return new Repr(humanValue, machineValue);
+}
+
+
+void Parser::scan_repr() {
+    scan_value();
+    scan_value();
+}
+
+
 const char * Parser::read_string(void) {
     size_t len = read_uint();
     char * value = new char[len + 1];