mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Implement a Performance Counter Viewer pane, hook up selection dialog
This commit is contained in:
committed by
baldurk
parent
7d15d75638
commit
03343239c7
@@ -1,26 +1,26 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016-2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016-2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
#include "PerformanceCounterSelection.h"
|
||||
#include "Code/CaptureContext.h"
|
||||
@@ -98,17 +98,19 @@ PerformanceCounterSelection::PerformanceCounterSelection(ICaptureContext &ctx, Q
|
||||
// Add
|
||||
auto listItem = new QListWidgetItem(ui->enabledCounters);
|
||||
listItem->setText(item->text(0));
|
||||
m_SelectedCounters.insert(d.toInt(), listItem);
|
||||
m_SelectedCounters.insert(d.toUInt(), listItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove
|
||||
auto listItem = m_SelectedCounters.take(d.toInt());
|
||||
auto listItem = m_SelectedCounters.take(d.toUInt());
|
||||
delete listItem;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
connect(ui->sampleCounters, &QPushButton::pressed, [&]() -> void { this->accept(); });
|
||||
|
||||
ui->counterTree->setMouseTracking(true);
|
||||
|
||||
auto showCounters = [&](const QVector<CounterDescription> &counters) -> void {
|
||||
@@ -153,7 +155,7 @@ PerformanceCounterSelection::PerformanceCounterSelection(ICaptureContext &ctx, Q
|
||||
auto counterItem = new QTreeWidgetItem{categoryItem};
|
||||
counterItem->setText(0, desc.name);
|
||||
counterItem->setData(0, Qt::UserRole + 1, desc.description);
|
||||
counterItem->setData(0, Qt::UserRole + 2, (int32_t)desc.counterID);
|
||||
counterItem->setData(0, Qt::UserRole + 2, (uint32_t)desc.counterID);
|
||||
counterItem->setCheckState(0, Qt::Unchecked);
|
||||
}
|
||||
};
|
||||
@@ -173,3 +175,8 @@ PerformanceCounterSelection::~PerformanceCounterSelection()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
QList<uint32_t> PerformanceCounterSelection::GetSelectedCounters() const
|
||||
{
|
||||
return m_SelectedCounters.keys();
|
||||
}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
#include <QDialog>
|
||||
#include <QMap>
|
||||
@@ -41,9 +41,11 @@ public:
|
||||
explicit PerformanceCounterSelection(ICaptureContext &ctx, QWidget *parent = 0);
|
||||
~PerformanceCounterSelection();
|
||||
|
||||
QList<uint32_t> GetSelectedCounters() const;
|
||||
|
||||
private:
|
||||
Ui::PerformanceCounterSelection *ui;
|
||||
|
||||
ICaptureContext &m_Ctx;
|
||||
QMap<int, QListWidgetItem *> m_SelectedCounters;
|
||||
QMap<uint32_t, QListWidgetItem *> m_SelectedCounters;
|
||||
};
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
#include "Windows/Dialogs/AboutDialog.h"
|
||||
#include "Windows/Dialogs/CaptureDialog.h"
|
||||
#include "Windows/Dialogs/LiveCapture.h"
|
||||
#include "Windows/Dialogs/PerformanceCounterSelection.h"
|
||||
#include "Windows/Dialogs/RemoteManager.h"
|
||||
#include "Windows/Dialogs/SettingsDialog.h"
|
||||
#include "Windows/Dialogs/SuggestRemoteDialog.h"
|
||||
@@ -1647,8 +1646,12 @@ void MainWindow::on_actionShow_Tips_triggered()
|
||||
|
||||
void MainWindow::on_action_Counter_Viewer_triggered()
|
||||
{
|
||||
PerformanceCounterSelection pcs(m_Ctx, this);
|
||||
RDDialog::show(&pcs);
|
||||
QWidget *performanceCounterViewer = m_Ctx.GetPerformanceCounterViewer()->Widget();
|
||||
|
||||
if(ui->toolWindowManager->toolWindows().contains(performanceCounterViewer))
|
||||
ToolWindowManager::raiseToolWindow(performanceCounterViewer);
|
||||
else
|
||||
ui->toolWindowManager->addToolWindow(performanceCounterViewer, mainToolArea());
|
||||
}
|
||||
|
||||
void MainWindow::saveLayout_triggered()
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
</action>
|
||||
<action name="action_Counter_Viewer">
|
||||
<property name="text">
|
||||
<string>Counter selection</string>
|
||||
<string>Performance Counter Viewer</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
|
||||
@@ -1,28 +1,29 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
#include "PerformanceCounterViewer.h"
|
||||
#include "Windows/Dialogs/PerformanceCounterSelection.h"
|
||||
#include "ui_PerformanceCounterViewer.h"
|
||||
|
||||
PerformanceCounterViewer::PerformanceCounterViewer(ICaptureContext &ctx, QWidget *parent)
|
||||
@@ -31,6 +32,26 @@ PerformanceCounterViewer::PerformanceCounterViewer(ICaptureContext &ctx, QWidget
|
||||
ui->setupUi(this);
|
||||
|
||||
m_Ctx.AddLogViewer(this);
|
||||
|
||||
connect(ui->captureCounters, &QToolButton::pressed, [=]() -> void {
|
||||
PerformanceCounterSelection pcs(m_Ctx, this);
|
||||
if(RDDialog::show(&pcs) == QDialog::Accepted)
|
||||
{
|
||||
const QList<uint32_t> selectedCounters = pcs.GetSelectedCounters();
|
||||
|
||||
m_Ctx.Replay().AsyncInvoke([=](IReplayController *controller) -> void {
|
||||
rdctype::array<GPUCounter> counters;
|
||||
counters.create(selectedCounters.size());
|
||||
|
||||
for(int i = 0; i < selectedCounters.size(); ++i)
|
||||
{
|
||||
counters[i] = (GPUCounter)selectedCounters[i];
|
||||
}
|
||||
|
||||
controller->FetchCounters(counters);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
PerformanceCounterViewer::~PerformanceCounterViewer()
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
/******************************************************************************
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Baldur Karlsson
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
@@ -202,6 +202,11 @@ struct CaptureContextInvoker : ICaptureContext
|
||||
{
|
||||
return InvokeRetFunction<IDebugMessageView *>(&ICaptureContext::GetDebugMessageView);
|
||||
}
|
||||
virtual IPerformanceCounterViewer *GetPerformanceCounterViewer() override
|
||||
{
|
||||
return InvokeRetFunction<IPerformanceCounterViewer *>(
|
||||
&ICaptureContext::GetPerformanceCounterViewer);
|
||||
}
|
||||
virtual IStatisticsViewer *GetStatisticsViewer() override
|
||||
{
|
||||
return InvokeRetFunction<IStatisticsViewer *>(&ICaptureContext::GetStatisticsViewer);
|
||||
@@ -242,6 +247,10 @@ struct CaptureContextInvoker : ICaptureContext
|
||||
{
|
||||
return InvokeRetFunction<bool>(&ICaptureContext::HasDebugMessageView);
|
||||
}
|
||||
virtual bool HasPerformanceCounterViewer() override
|
||||
{
|
||||
return InvokeRetFunction<bool>(&ICaptureContext::HasPerformanceCounterViewer);
|
||||
}
|
||||
virtual bool HasStatisticsViewer() override
|
||||
{
|
||||
return InvokeRetFunction<bool>(&ICaptureContext::HasStatisticsViewer);
|
||||
@@ -280,6 +289,10 @@ struct CaptureContextInvoker : ICaptureContext
|
||||
{
|
||||
InvokeVoidFunction(&ICaptureContext::ShowDebugMessageView);
|
||||
}
|
||||
virtual void ShowPerformanceCounterViewer() override
|
||||
{
|
||||
InvokeVoidFunction(&ICaptureContext::ShowPerformanceCounterViewer);
|
||||
}
|
||||
virtual void ShowStatisticsViewer() override
|
||||
{
|
||||
InvokeVoidFunction(&ICaptureContext::ShowStatisticsViewer);
|
||||
|
||||
Reference in New Issue
Block a user