]> git.cworth.org Git - apitrace/blobdiff - gui/apitracecall.cpp
Add depth info to the surfaces.
[apitrace] / gui / apitracecall.cpp
index f500d90c8b2f62b89a12c626a62418e5a88125c8..26f20bacc1dcad9b46b09f67c28c122807642bc7 100644 (file)
@@ -101,6 +101,10 @@ plainTextToHTML(const QString & plain, bool multiLine)
 QString
 apiVariantToString(const QVariant &variant, bool multiLine)
 {
+    if (variant.isNull()) {
+        return QLatin1String("?");
+    }
+
     if (variant.userType() == QVariant::Double) {
         return QString::number(variant.toFloat());
     }
@@ -142,37 +146,37 @@ apiVariantToString(const QVariant &variant, bool multiLine)
 }
 
 
-void VariantVisitor::visit(Trace::Null *)
+void VariantVisitor::visit(trace::Null *)
 {
     m_variant = QVariant::fromValue(ApiPointer(0));
 }
 
-void VariantVisitor::visit(Trace::Bool *node)
+void VariantVisitor::visit(trace::Bool *node)
 {
     m_variant = QVariant(node->value);
 }
 
-void VariantVisitor::visit(Trace::SInt *node)
+void VariantVisitor::visit(trace::SInt *node)
 {
     m_variant = QVariant(node->value);
 }
 
-void VariantVisitor::visit(Trace::UInt *node)
+void VariantVisitor::visit(trace::UInt *node)
 {
     m_variant = QVariant(node->value);
 }
 
-void VariantVisitor::visit(Trace::Float *node)
+void VariantVisitor::visit(trace::Float *node)
 {
     m_variant = QVariant(node->value);
 }
 
-void VariantVisitor::visit(Trace::String *node)
+void VariantVisitor::visit(trace::String *node)
 {
     m_variant = QVariant(QString::fromStdString(node->value));
 }
 
-void VariantVisitor::visit(Trace::Enum *e)
+void VariantVisitor::visit(trace::Enum *e)
 {
     ApiTraceEnumSignature *sig = 0;
 
@@ -191,28 +195,28 @@ void VariantVisitor::visit(Trace::Enum *e)
     m_variant = QVariant::fromValue(ApiEnum(sig));
 }
 
-void VariantVisitor::visit(Trace::Bitmask *bitmask)
+void VariantVisitor::visit(trace::Bitmask *bitmask)
 {
     m_variant = QVariant::fromValue(ApiBitmask(bitmask));
 }
 
-void VariantVisitor::visit(Trace::Struct *str)
+void VariantVisitor::visit(trace::Struct *str)
 {
     m_variant = QVariant::fromValue(ApiStruct(str));
 }
 
-void VariantVisitor::visit(Trace::Array *array)
+void VariantVisitor::visit(trace::Array *array)
 {
     m_variant = QVariant::fromValue(ApiArray(array));
 }
 
-void VariantVisitor::visit(Trace::Blob *blob)
+void VariantVisitor::visit(trace::Blob *blob)
 {
     QByteArray barray = QByteArray(blob->buf, blob->size);
     m_variant = QVariant(barray);
 }
 
-void VariantVisitor::visit(Trace::Pointer *ptr)
+void VariantVisitor::visit(trace::Pointer *ptr)
 {
     m_variant = QVariant::fromValue(ApiPointer(ptr->value));
 }
@@ -289,19 +293,19 @@ QString ApiPointer::toString() const
         return QLatin1String("NULL");
 }
 
-ApiBitmask::ApiBitmask(const Trace::Bitmask *bitmask)
+ApiBitmask::ApiBitmask(const trace::Bitmask *bitmask)
     : m_value(0)
 {
     init(bitmask);
 }
 
-void ApiBitmask::init(const Trace::Bitmask *bitmask)
+void ApiBitmask::init(const trace::Bitmask *bitmask)
 {
     if (!bitmask)
         return;
 
     m_value = bitmask->value;
-    for (const Trace::BitmaskFlag *it = bitmask->sig->flags;
+    for (const trace::BitmaskFlag *it = bitmask->sig->flags;
          it != bitmask->sig->flags + bitmask->sig->num_flags; ++it) {
         assert(it->value);
         QPair<QString, unsigned long long> pair;
@@ -339,7 +343,7 @@ QString ApiBitmask::toString() const
     return str;
 }
 
-ApiStruct::ApiStruct(const Trace::Struct *s)
+ApiStruct::ApiStruct(const trace::Struct *s)
 {
     init(s);
 }
@@ -361,7 +365,7 @@ QString ApiStruct::toString(bool multiLine) const
     return str;
 }
 
-void ApiStruct::init(const Trace::Struct *s)
+void ApiStruct::init(const trace::Struct *s)
 {
     if (!s)
         return;
@@ -376,7 +380,7 @@ void ApiStruct::init(const Trace::Struct *s)
     }
 }
 
-ApiArray::ApiArray(const Trace::Array *arr)
+ApiArray::ApiArray(const trace::Array *arr)
 {
     init(arr);
 }
@@ -406,7 +410,7 @@ QString ApiArray::toString(bool multiLine) const
     return str;
 }
 
-void ApiArray::init(const Trace::Array *arr)
+void ApiArray::init(const trace::Array *arr)
 {
     if (!arr)
         return;
@@ -454,6 +458,8 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
             image[QLatin1String("__normalized__")].toBool();
         int numChannels =
             image[QLatin1String("__channels__")].toInt();
+        int depth =
+            image[QLatin1String("__depth__")].toInt();
 
         Q_ASSERT(type == QLatin1String("uint8"));
         Q_ASSERT(normalized == true);
@@ -464,6 +470,7 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
 
         ApiTexture tex;
         tex.setSize(size);
+        tex.setDepth(depth);
         tex.setNumChannels(numChannels);
         tex.setLabel(itr.key());
         tex.contentsFromBase64(dataArray);
@@ -481,6 +488,7 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
         QString type = buffer[QLatin1String("__type__")].toString();
         bool normalized = buffer[QLatin1String("__normalized__")].toBool();
         int numChannels = buffer[QLatin1String("__channels__")].toInt();
+        int depth = buffer[QLatin1String("__depth__")].toInt();
 
         Q_ASSERT(type == QLatin1String("uint8"));
         Q_ASSERT(normalized == true);
@@ -491,6 +499,7 @@ ApiTraceState::ApiTraceState(const QVariantMap &parsedJson)
 
         ApiFramebuffer fbo;
         fbo.setSize(size);
+        fbo.setDepth(depth);
         fbo.setNumChannels(numChannels);
         fbo.setType(itr.key());
         fbo.contentsFromBase64(dataArray);
@@ -610,7 +619,7 @@ void ApiTraceEvent::setState(ApiTraceState *state)
 
 ApiTraceCall::ApiTraceCall(ApiTraceFrame *parentFrame,
                            TraceLoader *loader,
-                           const Trace::Call *call)
+                           const trace::Call *call)
     : ApiTraceEvent(ApiTraceEvent::Call),
       m_parentFrame(parentFrame)
 {
@@ -635,12 +644,16 @@ ApiTraceCall::ApiTraceCall(ApiTraceFrame *parentFrame,
     }
     m_argValues.reserve(call->args.size());
     for (int i = 0; i < call->args.size(); ++i) {
-        VariantVisitor argVisitor(loader);
-        call->args[i]->visit(argVisitor);
-        m_argValues.append(argVisitor.variant());
-        if (m_argValues[i].type() == QVariant::ByteArray) {
-            m_hasBinaryData = true;
-            m_binaryDataIndex = i;
+        if (call->args[i]) {
+            VariantVisitor argVisitor(loader);
+            call->args[i]->visit(argVisitor);
+            m_argValues.append(argVisitor.variant());
+            if (m_argValues[i].type() == QVariant::ByteArray) {
+                m_hasBinaryData = true;
+                m_binaryDataIndex = i;
+            }
+        } else {
+            m_argValues.append(QVariant());
         }
     }
     m_argValues.squeeze();