]> git.cworth.org Git - apitrace/commitdiff
d3dretrace: Dump textures of all shader stages.
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 4 Sep 2013 09:49:32 +0000 (10:49 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 11 Sep 2013 12:39:56 +0000 (13:39 +0100)
retrace/d3d10state_images.cpp

index daba21f9e9489de3ae17dd635f24d4cb0b3db267..0341690c87d9f296277d339c8f8909263e474ece 100644 (file)
@@ -386,15 +386,10 @@ getDepthStencilViewImage(ID3D10Device *pDevice,
 }
 
 
-void
-dumpTextures(JSONWriter &json, ID3D10Device *pDevice)
+static void
+dumpStageTextures(JSONWriter &json, ID3D10Device *pDevice, const char *stageName,
+                  ID3D10ShaderResourceView *pShaderResourceViews[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT])
 {
-    json.beginMember("textures");
-    json.beginObject();
-
-    ID3D10ShaderResourceView *pShaderResourceViews[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
-    pDevice->PSGetShaderResources(0, ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
-
     for (UINT i = 0; i < ARRAYSIZE(pShaderResourceViews); ++i) {
         if (!pShaderResourceViews[i]) {
             continue;
@@ -404,14 +399,33 @@ dumpTextures(JSONWriter &json, ID3D10Device *pDevice)
         image = getShaderResourceViewImage(pDevice, pShaderResourceViews[i]);
         if (image) {
             char label[64];
-            _snprintf(label, sizeof label, "PS_RESOURCE_%u", i);
+            _snprintf(label, sizeof label, "%s_RESOURCE_%u", stageName, i);
             json.beginMember(label);
             json.writeImage(image, "UNKNOWN");
-            json.endMember(); // PS_RESOURCE_*
+            json.endMember(); // *_RESOURCE_*
         }
 
         pShaderResourceViews[i]->Release();
     }
+}
+
+
+void
+dumpTextures(JSONWriter &json, ID3D10Device *pDevice)
+{
+    json.beginMember("textures");
+    json.beginObject();
+
+    ID3D10ShaderResourceView *pShaderResourceViews[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
+
+    pDevice->PSGetShaderResources(0, ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
+    dumpStageTextures(json, pDevice, "PS", pShaderResourceViews);
+
+    pDevice->VSGetShaderResources(0, ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
+    dumpStageTextures(json, pDevice, "VS", pShaderResourceViews);
+
+    pDevice->GSGetShaderResources(0, ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
+    dumpStageTextures(json, pDevice, "GS", pShaderResourceViews);
 
     json.endObject();
     json.endMember(); // textures