summaryrefslogtreecommitdiffstats
path: root/tests/manual/qmlperf/qml/qmlperf/AutoTest.qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/qmlperf/qml/qmlperf/AutoTest.qml')
-rw-r--r--tests/manual/qmlperf/qml/qmlperf/AutoTest.qml219
1 files changed, 219 insertions, 0 deletions
diff --git a/tests/manual/qmlperf/qml/qmlperf/AutoTest.qml b/tests/manual/qmlperf/qml/qmlperf/AutoTest.qml
new file mode 100644
index 00000000..d860b99a
--- /dev/null
+++ b/tests/manual/qmlperf/qml/qmlperf/AutoTest.qml
@@ -0,0 +1,219 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Controls
+import QtDataVisualization
+import "."
+
+Item {
+
+ height: 150
+
+ property list<string> graphTypes: ["Surface", "Scatter", "Bars"]
+ property int currentGraph: 0
+
+ property list<int>dataPoints: [10, 100, 300, 500]
+ property int currentPoints: 0
+
+ property list<string> optimization: ["Default", "Static"]
+ property int currentOptimization: 0
+
+ property list<int> sampleCounts: [0,2,4,8]
+ property int currentSamples: 0
+
+
+ property int shadowQuality
+
+ property bool finished: true
+
+ property int initTime: 0
+
+ function initAutoTest() {
+ //go through each graph iterating over all the variables
+ liveDataCB.checked = true
+ rotateCB.checked = true
+
+ tests.onTestFinished.connect(test)
+ dataGenerator.onCaptureInit.connect(setInitTime)
+
+ finished = false
+
+ currentGraph = 0
+ currentPoints = 0
+ currentOptimization = 0
+ currentSamples= 0
+ shadowQuality = 0
+
+ setParameters()
+ tests.startTest()
+ }
+
+ function test() {
+ //write previous test results
+ var averageFps = tests.averageFps
+ // graph type, num points, optimization, msaa, init time, averagefps
+ var csvLine = graphTypes[currentGraph] + ","
+ + (dataPoints[currentPoints] * dataPoints[currentPoints])+ ","
+ + optimization[currentOptimization] + ","
+ + sampleCounts[currentSamples] + ","
+ + shadowQuality + ","
+ + initTime + ","
+ + averageFps
+
+ dataGenerator.writeCSV(csvLine)
+ increment()
+ setParameters()
+ if (!finished) {
+ tests.startTest()
+ } else {
+ tests.onTestFinished.disconnect(test)
+ dataGenerator.onCaptureInit.disconnect(setInitTime)
+ }
+ }
+
+ function increment() {
+ if (varyShadow.checked) {
+ if (shadowQuality < 6) {
+ shadowQuality++
+ return
+ }
+ shadowQuality = 0
+ }
+
+ if (varySamples.checked) {
+ if (currentSamples < sampleCounts.length -1) {
+ currentSamples ++
+ return
+ }
+ currentSamples = 0
+ }
+
+ if (varyOptimization.checked) {
+ if (currentOptimization < optimization.length -1
+ && tabBar.currentIndex !== 0) {
+ currentOptimization++
+ return
+ }
+ currentOptimization = 0
+ }
+
+ if (varyPoints.checked) {
+ if (currentPoints < dataPoints.length -1) {
+ currentPoints ++
+ return
+ }
+ currentPoints = 0
+ }
+
+ if (varyGraphs.checked) {
+ if (currentGraph < graphTypes.length - 1) {
+ currentGraph++
+ console.log("Switching to " + graphTypes[currentGraph])
+ return
+ }
+ currentGraph = 0
+ }
+
+ dataGenerator.writeLine("Finished all tests!")
+ finished = true
+ }
+
+
+ function setParameters() {
+ if (varyShadow.checked) {
+ surfaceGraph.shadowQuality = shadowQuality
+ scatterGraph.shadowQuality = shadowQuality
+ barGraph.shadowQuality = shadowQuality
+ }
+
+ if (varySamples.checked) {
+ surfaceGraph.msaaSamples = sampleCounts[currentSamples]
+ scatterGraph.msaaSamples = sampleCounts[currentSamples]
+ barGraph.msaaSamples = sampleCounts[currentSamples]
+ }
+
+ if (varyOptimization.checked) {
+ if (optimization[currentOptimization] === "Legacy") {
+ scatterGraph.optimizationHint = AbstractGraph3D.OptimizationHint.Default
+ barGraph.optimizationHint = AbstractGraph3D.OptimizationHint.Default
+ } else {
+ scatterGraph.optimizationHint = AbstractGraph3D.OptimizationHint.Legacy
+ barGraph.optimizationHint = AbstractGraph3D.OptimizationHint.Legacy
+ }
+ }
+
+ if (varyGraphs.checked)
+ tabBar.setCurrentIndex(currentGraph)
+
+ if (varyPoints.checked) {
+ if (tabBar.currentIndex === 0)
+ dataGenerator.generateSurfaceData(surfaceSeries, dataPoints[currentPoints])
+ else if (tabBar.currentIndex === 1)
+ dataGenerator.generateScatterData(scatterSeries, dataPoints[currentPoints])
+ else
+ dataGenerator.generateBarData(barSeries, dataPoints[currentPoints])
+ }
+ }
+
+ function setInitTime(nsecs) {
+ initTime = nsecs
+ }
+
+ Button {
+ id: autoButton
+ text: finished? "Auto Test" : "End test"
+ width: parent.width - 20
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ height: 50
+ onClicked: {
+ if (finished) {
+ dataGenerator.writeLine("Testing configurations...")
+ initAutoTest()
+ } else {
+ finished = true
+ }
+
+ }
+ }
+
+ GridLayout {
+ id: autoTestParams
+ anchors.top: autoButton.bottom
+ anchors.topMargin: 10
+ width: parent.width - 50
+ enabled: finished
+ anchors.horizontalCenter: parent.Center
+ height: 50
+ columns: 2
+ CheckBox {
+ id: varyGraphs
+ text: qsTr("Vary graphs")
+ Layout.alignment: Qt.AlignCenter
+ checked: true
+ }
+ CheckBox {
+ id: varyPoints
+ text: qsTr("Vary points")
+ Layout.alignment: Qt.AlignCenter
+ checked: true
+ }
+ CheckBox {
+ id: varyOptimization
+ text: qsTr("Vary optimization")
+ Layout.alignment: Qt.AlignCenter
+ }
+ CheckBox {
+ id: varySamples
+ text: qsTr("Vary MSAA ")
+ Layout.alignment: Qt.AlignCenter
+ }
+ CheckBox {
+ id: varyShadow
+ text: qsTr("Vary Shadow ")
+ Layout.alignment: Qt.AlignCenter
+ }
+ }
+}