<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<font size="-1">Hi, Ivan!<br>
<br>
1) It is not much possible to compare the brushes at the level of
KisBrush, because there are too many things and options involved.
I would suggest to make your </font><br>
<font size="-1"><span class="gi">KisMaskSimilarityTester to accept
two KisBrushMaskApplicatorBase* objects and a rect with the
expected bounding rect of the brush</span>. That would be much
easier to control.<br>
<br>
2) The second problem is forcing the scalar version of the code.
Right now one cannot choose the the scalar version, there is no
API for that, but nothing stops you from making one :) Just an
idea on how it can be implemetned:<br>
2.1) Define a special createOptimizedClass() function that accepts
not only 'param' but also 'forceScalarImplemetation' flag<br>
2.2) Then the default implementation of createOptimizedClass() can
be refactored in terms of this new function (internally it has the
same switch for AMD CPUs)<br>
2.3) Add a special method to KisCircleMaskGenerator, like 'void
resetMaskApplicator(bool forceScalar)' and call it from the
unittest<br>
2.4) In the unittest just create two </font><font size="-1"><font
size="-1">KisCircleMaskGenerator objects and ask them to create
corresponding applicators<br>
<br>
3) For QImage comparison operations I would recommend you to use
TestUtil::compareQImages() from qimage_test_util.h. It does
exactly what you try to implement there :)<br>
<br>
</font></font>
<div class="moz-cite-prefix">On 28.04.2018 07:43, Iván Yossi wrote:<br>
</div>
<blockquote type="cite"
cite="mid:aa19dbc9-22f4-4c15-9005-168e451d7395@Spark">
<title></title>
<div name="messageBodySection" style="font-size: 14px;
font-family: -apple-system, BlinkMacSystemFont, sans-serif;">Hi!
<div><br>
</div>
<div>I’ve been working on the unit test for comparing both
scalar and vectorized mask. I create a mask and convert it to
an image to later compare pixel by pixel to ensure the mask is
within the error limit.</div>
<div><br>
</div>
<div>The patch along side the first Gauss AVX optimization is
here</div>
<div><a href="https://phabricator.kde.org/P200"
moz-do-not-send="true">https://phabricator.kde.org/P200</a><br>
</div>
<div><br>
</div>
<div>I’m not sure if the way I implemented it is the recomended
way as I force the use of scalar by initialiazing the brush
with 3 spikes. The names I used for variables, I’m mostly sure
I adhere to the naming convention but I probably skip
something. This test generates an image of the masks for
visual aid, I made it this way so i could asses if the
difference is visually detectable while in production to fine
tune the error.</div>
<div><br>
</div>
<div>The current test will pass for the Default Brush and Fail
for the GaussBrush as it uses my dummy vectorized code.
However it should pass if only the test is integrated as both
mask would be generated using the scalar process.</div>
<div><br>
</div>
<div>I reach to you for any advice and recommendation to make
the test more robust.</div>
<div><br>
</div>
<div>Thanks!</div>
<div><br>
</div>
</div>
<div name="messageSignatureSection" style="font-size: 14px;
font-family: -apple-system, BlinkMacSystemFont, sans-serif;"><br>
Iván Yossi
<div><a class="moz-txt-link-rfc2396E" href="mailto:ghevan@gmail.com"><ghevan@gmail.com></a></div>
<div>IRC: ivanyossi</div>
<div><br>
</div>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Dmitry Kazakov</pre>
</body>
</html>