KisCompositionBenchmark proposed update
ClosedPublic

Authored by vanyossi on Apr 9 2019, 8:57 PM.

Details

Summary

commented out benchmark does not currently work

The next changes add the requeested type objects for the specifyc tests on current API so the test can run.

Test Plan

Only testedon OSX

all tests pass

Diff Detail

Repository
R37 Krita
Lint
Lint Skipped
Unit
Unit Tests Skipped
vanyossi created this revision.Apr 9 2019, 8:57 PM
Restricted Application added a reviewer: Krita. · View Herald TranscriptApr 9 2019, 8:57 PM
vanyossi requested review of this revision.Apr 9 2019, 8:57 PM
dkazakov accepted this revision.Apr 10 2019, 5:01 PM
dkazakov added a subscriber: dkazakov.

The patch looks fine, please push!

And also push add the following patch. Without it, the benchmark is quite useless :)

1diff --git a/benchmarks/kis_composition_benchmark.cpp b/benchmarks/kis_composition_benchmark.cpp
2index ad75225..a19ee5c 100644
3--- a/benchmarks/kis_composition_benchmark.cpp
4+++ b/benchmarks/kis_composition_benchmark.cpp
5@@ -189,14 +189,14 @@ void generateDataLine(uint seed, int numPixels, quint8 *srcPixels, quint8 *dstPi
6 void printData(int numPixels, quint8 *srcPixels, quint8 *dstPixels, quint8 *mask)
7 {
8 for (int i = 0; i < numPixels; i++) {
9- dbgKrita << "Src: "
10+ qDebug() << "Src: "
11 << srcPixels[i*4] << "\t"
12 << srcPixels[i*4+1] << "\t"
13 << srcPixels[i*4+2] << "\t"
14 << srcPixels[i*4+3] << "\t"
15 << "Msk:" << mask[i];
16
17- dbgKrita << "Dst: "
18+ qDebug() << "Dst: "
19 << dstPixels[i*4] << "\t"
20 << dstPixels[i*4+1] << "\t"
21 << dstPixels[i*4+2] << "\t"
22@@ -300,19 +300,19 @@ bool compareTwoOpsPixels(QVector<Tile> &tiles, channel_type prec) {
23
24 for (int i = 0; i < numPixels; i++) {
25 if (!comparePixels<channel_type>(dst1, dst2, prec)) {
26- dbgKrita << "Wrong result:" << i;
27- dbgKrita << "Act: " << dst1[0] << dst1[1] << dst1[2] << dst1[3];
28- dbgKrita << "Exp: " << dst2[0] << dst2[1] << dst2[2] << dst2[3];
29- dbgKrita << "Dif: " << dst1[0] - dst2[0] << dst1[1] - dst2[1] << dst1[2] - dst2[2] << dst1[3] - dst2[3];
30+ qDebug() << "Wrong result:" << i;
31+ qDebug() << "Act: " << dst1[0] << dst1[1] << dst1[2] << dst1[3];
32+ qDebug() << "Exp: " << dst2[0] << dst2[1] << dst2[2] << dst2[3];
33+ qDebug() << "Dif: " << dst1[0] - dst2[0] << dst1[1] - dst2[1] << dst1[2] - dst2[2] << dst1[3] - dst2[3];
34
35 channel_type *s1 = src1 + 4 * i;
36 channel_type *s2 = src2 + 4 * i;
37
38- dbgKrita << "SrcA:" << s1[0] << s1[1] << s1[2] << s1[3];
39- dbgKrita << "SrcE:" << s2[0] << s2[1] << s2[2] << s2[3];
40+ qDebug() << "SrcA:" << s1[0] << s1[1] << s1[2] << s1[3];
41+ qDebug() << "SrcE:" << s2[0] << s2[1] << s2[2] << s2[3];
42
43- dbgKrita << "MskA:" << tiles[0].mask[i];
44- dbgKrita << "MskE:" << tiles[1].mask[i];
45+ qDebug() << "MskA:" << tiles[0].mask[i];
46+ qDebug() << "MskE:" << tiles[1].mask[i];
47
48 return false;
49 }
50@@ -431,14 +431,14 @@ void benchmarkCompositeOp(const KoCompositeOp *op,
51 op->composite(params);
52 }
53
54- dbgKrita << testName << "RESULT:" << timer.elapsed() << "msec";
55+ qDebug() << testName << "RESULT:" << timer.elapsed() << "msec";
56
57 freeTiles(tiles, srcAlignmentShift, dstAlignmentShift);
58 }
59
60 void benchmarkCompositeOp(const KoCompositeOp *op, const QString &postfix)
61 {
62- dbgKrita << "Testing Composite Op:" << op->id() << "(" << postfix << ")";
63+ qDebug() << "Testing Composite Op:" << op->id() << "(" << postfix << ")";
64
65 benchmarkCompositeOp(op, true, 0.5, 0.3, 0, 0, ALPHA_RANDOM, ALPHA_RANDOM);
66 benchmarkCompositeOp(op, true, 0.5, 0.3, 8, 0, ALPHA_RANDOM, ALPHA_RANDOM);
67@@ -503,9 +503,9 @@ void checkRounding(qreal opacity, qreal flow, qreal averageOpacity = -1, quint32
68 for (int j = 0; j < vecSize; j++) {
69
70 //if (8 * i + j == 7080) {
71- // dbgKrita << "src: " << src2[0] << src2[1] << src2[2] << src2[3];
72- // dbgKrita << "dst: " << dst2[0] << dst2[1] << dst2[2] << dst2[3];
73- // dbgKrita << "msk:" << msk2[0];
74+ // qDebug() << "src: " << src2[0] << src2[1] << src2[2] << src2[3];
75+ // qDebug() << "dst: " << dst2[0] << dst2[1] << dst2[2] << dst2[3];
76+ // qDebug() << "msk:" << msk2[0];
77 //}
78
79 Compositor::template compositeOnePixelScalar<true, Vc::CurrentImplementation::current()>(src2, dst2, msk2, params.opacity, paramsWrapper);
80@@ -529,12 +529,12 @@ void checkRounding(qreal opacity, qreal flow, qreal averageOpacity = -1, quint32
81 }
82
83 if(!compareResult || errorcount > 1) {
84- dbgKrita << "Wrong rounding in pixel:" << 8 * i + j;
85- dbgKrita << "Vector version: " << dst1[0] << dst1[1] << dst1[2] << dst1[3];
86- dbgKrita << "Scalar version: " << dst2[0] << dst2[1] << dst2[2] << dst2[3];
87+ qDebug() << "Wrong rounding in pixel:" << 8 * i + j;
88+ qDebug() << "Vector version: " << dst1[0] << dst1[1] << dst1[2] << dst1[3];
89+ qDebug() << "Scalar version: " << dst2[0] << dst2[1] << dst2[2] << dst2[3];
90
91- dbgKrita << "src:" << src1[0] << src1[1] << src1[2] << src1[3];
92- dbgKrita << "msk:" << msk1[0];
93+ qDebug() << "src:" << src1[0] << src1[1] << src1[2] << src1[3];
94+ qDebug() << "msk:" << msk1[0];
95
96 QFAIL("Wrong rounding");
97 }

This revision is now accepted and ready to land.Apr 10 2019, 5:01 PM
This revision was automatically updated to reflect the committed changes.