3D: Add tracepoints to bars

Task-number: QTBUG-130380
Change-Id: I455cb5374cb445416c92a5233aab2a279d84d556
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Reviewed-by: Kwanghyo Park <kwanghyo.park@qt.io>
(cherry picked from commit fa271ab207)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Sami Varanka 2025-08-26 09:35:20 +03:00 committed by Qt Cherry-pick Bot
parent 5627b3ae81
commit c606a5d42e
2 changed files with 79 additions and 0 deletions

View File

@ -139,6 +139,14 @@ else()
)
endif()
if(QT_FEATURE_graphs_3d_bars3d)
set(
LOCAL_TRACE_SOURCES
${LOCAL_TRACE_SOURCES}
graphs3d/qml/qquickgraphsbars.cpp
)
endif()
set(
TRACE_SOURCES
${LOCAL_TRACE_SOURCES}

View File

@ -20,6 +20,49 @@
#include <QtGui/qquaternion.h>
#include <qtgraphs_tracepoints_p.h>
Q_TRACE_PREFIX(qtgraphs,
"QT_BEGIN_NAMESPACE" \
"#include <graphs3d/utils/qgraphs3dnamespace.h>" \
"class qquickgraphsbars;" \
"QT_END_NAMESPACE"
)
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsSynch_entry_beforeGraphsItem);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsSynch_exit_beforeGraphsItem);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsSynch_entry_afterGraphsItem);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsSynch_exit_afterGraphsItem);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBarsUpdateGraph_entry);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBarsUpdateGraph_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBars_entry, int seriesCount);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBars_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBarsLegacy_entry);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBarsLegacy_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBarsDefault_entry);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsGenerateBarsDefault_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsUpdateBarPositionsLegacy_entry);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsUpdateBarPositionsLegacy_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsDoPicking_entry, float posX, float posY);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsDoPicking_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsDoRayPicking_entry, float originX, float originY,
float originZ, float directionX, float directionY, float directionZ);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsDoRayPicking_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsCreateSliceView_entry);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsCreateSliceView_exit);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsCreateOffscreenSliceView_entry, int requestedIndex, int sliceType);
Q_TRACE_POINT(qtgraphs, QGraphs3DBarsCreateOffscreenSliceView_exit);
/*!
* \qmltype Bars3D
* \inherits GraphsItem3D
@ -742,6 +785,9 @@ QQuick3DViewport *QQuickGraphsBars::createOffscreenSliceView(int requestedIndex,
{
QQuick3DViewport *sliceView = QQuickGraphsItem::createOffscreenSliceView(sliceType);
Q_TRACE_SCOPE(QGraphs3DBarsCreateOffscreenSliceView, requestedIndex,
static_cast<int>(sliceType));
bool isRow = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Row)
|| sliceType == QtGraphs3D::SliceCaptureType::RowImage);
bool isColumn = (selectionMode().testFlag(QtGraphs3D::SelectionFlag::Column)
@ -976,6 +1022,9 @@ void QQuickGraphsBars::componentComplete()
void QQuickGraphsBars::synchData()
{
qCDebug(lcGraphs3D, "%s start of sync", qUtf8Printable(QLatin1String(__FUNCTION__)));
Q_TRACE(QGraphs3DBarsSynch_entry_beforeGraphsItem);
if (m_changeTracker.barSpecsChanged || !m_cachedBarThickness.isValid()) {
updateBarSpecs(m_barThicknessRatio, m_barSpacing, m_isBarSpecRelative);
m_changeTracker.barSpecsChanged = false;
@ -1009,9 +1058,12 @@ void QQuickGraphsBars::synchData()
adjustAxisRanges();
m_changeTracker.axisRangeChanged = false;
}
Q_TRACE(QGraphs3DBarsSynch_exit_beforeGraphsItem);
QQuickGraphsItem::synchData();
Q_TRACE(QGraphs3DBarsSynch_entry_afterGraphsItem);
if (m_selectedBarPos.isNull())
itemLabel()->setVisible(false);
@ -1021,6 +1073,7 @@ void QQuickGraphsBars::synchData()
m_changeTracker.floorChanged = false;
}
Q_TRACE(QGraphs3DBarsSynch_exit_afterGraphsItem);
qCDebug(lcGraphs3D, "%s end syncing", qUtf8Printable(QLatin1String(__FUNCTION__)));
}
@ -1087,6 +1140,8 @@ void QQuickGraphsBars::updateFloorLevel(float level)
void QQuickGraphsBars::updateGraph()
{
Q_TRACE_SCOPE(QGraphs3DBarsGenerateBarsUpdateGraph);
QList<QBar3DSeries *> barSeriesAsList = barSeriesList();
calculateSceneScalingFactors();
@ -1583,6 +1638,8 @@ void QQuickGraphsBars::disconnectSeries(QBar3DSeries *series)
void QQuickGraphsBars::generateBars(QList<QBar3DSeries *> &barSeriesList)
{
m_visibleSeriesCount = 0;
Q_TRACE_SCOPE(QGraphs3DBarsGenerateBars, barSeriesList.size());
for (const auto &barSeries : std::as_const(barSeriesList)) {
QQuick3DTexture *texture = createTexture();
texture->setParent(this);
@ -1604,6 +1661,7 @@ void QQuickGraphsBars::generateBars(QList<QBar3DSeries *> &barSeriesList)
QBarDataProxy *dataProxy = barSeries->dataProxy();
qsizetype dataRowIndex = m_minRow;
qsizetype newRowSize = qMin(dataProxy->rowCount() - dataRowIndex, m_newRows);
Q_TRACE_SCOPE(QGraphs3DBarsGenerateBarsLegacy);
for (int row = 0; row < newRowSize; ++row) {
const QBarDataRow &dataRow = dataProxy->rowAt(dataRowIndex);
@ -1632,6 +1690,8 @@ void QQuickGraphsBars::generateBars(QList<QBar3DSeries *> &barSeriesList)
}
}
} else if (optimizationHint() == QtGraphs3D::OptimizationHint::Default) {
Q_TRACE_SCOPE(QGraphs3DBarsGenerateBarsDefault);
auto scene = graphNode();
BarModel *barInstancing = new BarModel();
barInstancing->texture = texture;
@ -1793,6 +1853,8 @@ void QQuickGraphsBars::updateBarPositions(QBar3DSeries *series)
* (barList.at(i)->visualIndex
- (barList.at(i)->visualIndex * m_cachedBarSeriesMargin.width())));
if (optimizationHint() == QtGraphs3D::OptimizationHint::Legacy) {
Q_TRACE_SCOPE(QGraphs3DBarsUpdateBarPositionsLegacy);
QBarDataItem *item = barList.at(i)->barItem;
QQuick3DModel *model = barList.at(i)->model;
float heightValue = updateBarHeightParameters(item);
@ -1844,6 +1906,8 @@ void QQuickGraphsBars::updateBarPositions(QBar3DSeries *series)
row = 0;
}
} else if (optimizationHint() == QtGraphs3D::OptimizationHint::Default) {
Q_TRACE_SCOPE(QGraphs3DBarsGenerateBarsDefault);
deleteBarItemHolders(barList.at(i)->instancing);
QList<BarItemHolder *> positions;
for (int row = 0; row < newRowSize; ++row) {
@ -2197,6 +2261,8 @@ bool QQuickGraphsBars::doPicking(QPointF position)
if (!QQuickGraphsItem::doPicking(position))
return false;
Q_TRACE_SCOPE(QGraphs3DBarsDoPicking, position.x(), position.y());
m_selectionDirty = true;
QList<QQuick3DPickResult> pickResults;
if (m_customView)
@ -2292,6 +2358,9 @@ bool QQuickGraphsBars::doRayPicking(QVector3D origin, QVector3D direction)
if (!QQuickGraphsItem::doRayPicking(origin, direction))
return false;
Q_TRACE_SCOPE(QGraphs3DBarsDoRayPicking, origin.x(), origin.y(), origin.z(), direction.x(),
direction.y(), direction.z());
m_selectionDirty = true;
QList<QQuick3DPickResult> pickResults;
if (m_customView)
@ -2602,6 +2671,8 @@ void QQuickGraphsBars::createSliceView()
setSliceOrthoProjection(false);
QQuickGraphsItem::createSliceView();
Q_TRACE_SCOPE(QGraphs3DBarsCreateSliceView);
QList<QBar3DSeries *> barSeries = barSeriesList();
for (const auto &barSeries : std::as_const(barSeries)) {
QList<BarModel *> &slicedBarList = m_slicedBarModels[barSeries];