From 6cf0179cc8aa84f3d7442528480de30ca4de071a Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 6 Feb 2017 17:22:57 +0000 Subject: [PATCH] Add code to display buffer viewer to D3D12/GL/Vulkan pipeline views --- .../D3D12PipelineStateViewer.cpp | 58 +++++++++++++------ .../PipelineState/GLPipelineStateViewer.cpp | 42 ++++++++++---- .../VulkanPipelineStateViewer.cpp | 42 ++++++++++---- 3 files changed, 101 insertions(+), 41 deletions(-) diff --git a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp index ede8b2b76..8e30df78f 100644 --- a/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/D3D12PipelineStateViewer.cpp @@ -1730,10 +1730,16 @@ void D3D12PipelineStateViewer::resource_itemActivated(QTreeWidgetItem *item, int { if(tex->resType == eResType_Buffer) { - // TODO Buffer viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(false, 0, ulong.MaxValue, tex.ID); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewTexture(0, 0, tex->ID); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } else { @@ -1900,10 +1906,16 @@ void D3D12PipelineStateViewer::resource_itemActivated(QTreeWidgetItem *item, int } { - // TODO Buffer viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(true, buf.offset, buf.size, buf.ID, format); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewBuffer(offs, size, view.res.Resource, format); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } } } @@ -1925,12 +1937,18 @@ void D3D12PipelineStateViewer::cbuffer_itemActivated(QTreeWidgetItem *item, int if(cb.idx == ~0U) { // unused cbuffer, open regular buffer viewer - // TODO Buffer Viewer - // var viewer = new BufferViewer(m_Core, false); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); - // var buf = stage.Spaces[tag.space].ConstantBuffers[tag.reg]; - // viewer.ViewRawBuffer(true, buf.Offset, buf.ByteSize, buf.Buffer); - // viewer.Show(m_DockContent.DockPanel); + const D3D12PipelineState::CBuffer &buf = stage->Spaces[cb.space].ConstantBuffers[cb.reg]; + + viewer->ViewBuffer(buf.Offset, buf.ByteSize, buf.Buffer); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); return; } @@ -1968,10 +1986,16 @@ void D3D12PipelineStateViewer::on_iaBuffers_itemActivated(QTreeWidgetItem *item, if(buf.id != ResourceId()) { - // TODO Buffer Viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(true, buf.offset, ulong.MaxValue, buf.id); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewBuffer(buf.offset, UINT64_MAX, buf.id); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } } } diff --git a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp index 24d1c8cf6..d9585fe70 100644 --- a/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/GLPipelineStateViewer.cpp @@ -1968,10 +1968,16 @@ void GLPipelineStateViewer::resource_itemActivated(QTreeWidgetItem *item, int co { if(tex->resType == eResType_Buffer) { - // TODO Buffer viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(false, 0, ulong.MaxValue, tex.ID); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewTexture(0, 0, tex->ID); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } else { @@ -2029,10 +2035,16 @@ void GLPipelineStateViewer::resource_itemActivated(QTreeWidgetItem *item, int co if(buf.ID != ResourceId()) { - // TODO Buffer viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(true, buf.offset, buf.size, buf.ID, format); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewBuffer(buf.offset, buf.size, buf.ID, format); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } } } @@ -2084,10 +2096,16 @@ void GLPipelineStateViewer::on_viBuffers_itemActivated(QTreeWidgetItem *item, in if(buf.id != ResourceId()) { - // TODO Buffer Viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(true, buf.offset, ulong.MaxValue, buf.id); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewBuffer(buf.offset, UINT64_MAX, buf.id); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } } } diff --git a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp index 9777a6635..ea38901b9 100644 --- a/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp +++ b/qrenderdoc/Windows/PipelineState/VulkanPipelineStateViewer.cpp @@ -2059,10 +2059,16 @@ void VulkanPipelineStateViewer::resource_itemActivated(QTreeWidgetItem *item, in { if(tex->resType == eResType_Buffer) { - // TODO Buffer viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(false, 0, ulong.MaxValue, tex.ID); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewTexture(0, 0, tex->ID); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } else { @@ -2122,10 +2128,16 @@ void VulkanPipelineStateViewer::resource_itemActivated(QTreeWidgetItem *item, in if(buf.ID != ResourceId()) { - // TODO Buffer viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(true, buf.offset, buf.size, buf.ID, format); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewBuffer(buf.offset, buf.size, buf.ID, format); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } } } @@ -2178,10 +2190,16 @@ void VulkanPipelineStateViewer::on_viBuffers_itemActivated(QTreeWidgetItem *item if(buf.id != ResourceId()) { - // TODO Buffer Viewer - // var viewer = new BufferViewer(m_Core, false); - // viewer.ViewRawBuffer(true, buf.offset, ulong.MaxValue, buf.id); - // viewer.Show(m_DockContent.DockPanel); + BufferViewer *viewer = new BufferViewer(m_Ctx, false, m_Ctx->mainWindow()); + + viewer->ViewBuffer(buf.offset, UINT64_MAX, buf.id); + + m_Ctx->setupDockWindow(viewer); + + ToolWindowManager *manager = ToolWindowManager::managerOf(this); + + ToolWindowManager::AreaReference ref(ToolWindowManager::AddTo, manager->areaOf(this)); + manager->addToolWindow(viewer, ref); } } }