]> git.cworth.org Git - apitrace/blobdiff - retrace/d3d10state_images.cpp
retrace: Implement glxCopySubBufferMESA
[apitrace] / retrace / d3d10state_images.cpp
index daba21f9e9489de3ae17dd635f24d4cb0b3db267..d79c2493942dfb496672ba8cecfffbf5ea3db496 100644 (file)
@@ -386,32 +386,47 @@ getDepthStencilViewImage(ID3D10Device *pDevice,
 }
 
 
-void
-dumpTextures(JSONWriter &json, ID3D10Device *pDevice)
+static void
+dumpStageTextures(JSONWriter &json, ID3D10Device *pDevice, const char *stageName,
+                  UINT NumViews,
+                  ID3D10ShaderResourceView **ppShaderResourceViews)
 {
-    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]) {
+    for (UINT i = 0; i < NumViews; ++i) {
+        if (!ppShaderResourceViews[i]) {
             continue;
         }
 
         image::Image *image;
-        image = getShaderResourceViewImage(pDevice, pShaderResourceViews[i]);
+        image = getShaderResourceViewImage(pDevice, ppShaderResourceViews[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();
+        ppShaderResourceViews[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", ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
+
+    pDevice->VSGetShaderResources(0, ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
+    dumpStageTextures(json, pDevice, "VS", ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
+
+    pDevice->GSGetShaderResources(0, ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
+    dumpStageTextures(json, pDevice, "GS", ARRAYSIZE(pShaderResourceViews), pShaderResourceViews);
 
     json.endObject();
     json.endMember(); // textures