We have completely recreated our Win64 build environment, and rely now on recent versions of g++ & 3rd-party libs. We are interested by your feedback on possible speed improvements.
Want to test new installer ?
Is Krita version available? I do not use GIMP.
A few words about the technical changes, in comparison to the binaries I was providing before (for Windows) :
- g++ version has been updated from version 7 to version 10.
- This now allows to enable the
-flto
optimization flag (LTO=Link-Time Optimization), which is supposed to optimize the generated binary even more.
I wrote a short section on the GāMIC Download page, to explain all the steps required to compile GāMIC executables on Windows:
https://gmic.eu/download.shtml#source_windows
Let me know, if you encounter issues while trying to compile.
I tried your windows build procedure.
All is ok until link:
C:/msys64/mingw64/bin/ā¦/lib/gcc/x86_64-w64-mingw32/10.2.0/ā¦/ā¦/ā¦/ā¦/x86_64-w64-mingw32/bin/ld.exe: cannot find -lfftw3_threads
I have a remark: when you install MSYS2, you get two shells: MSYS2 shell that should be used only for MSYS2 updating and Mingw64 shell that permits to build applications by providing the necessary environment. I donāt see the distinction in your procedure.
fftw3_threads
is actually not used in Windows, only used in Linux.
It shouldnāt tell you you need it (if you look at the Makefile or the qmake, this is enabled only for Linux).
I use the Mingw64 shell for all steps, this didnāt make any difference for installing required packages.
Only had tested it a few, not rigorously. I think there might be a speed improvement on the Krita GāMIC-QT (I tested with Thorn Fractal, and Attractor as well MadJik Newton Fractal). I will get back to you once this test ( Render 10x sublevel Thorn Fractal on a 8192x8192 image with max iterations of 255. Which means 6,710,886,400 loops and cpu usage of 27000 MB ) finishes.
Stylize has a different behavior, it does not work, however it crash instead of doing nothing in the end.
EDIT: I do not think there is drastic speed improvement. At most, itās pretty mild after running it.
@David_Tschumperle I donāt have the resources or time to compile. Would you mind building and uploading the standalone? I would like to give it a try. Thanks!
Under MSYS2 or mingw shell:
$ uname
MINGW64_NT-10.0-19041
$ echo $OS
Windows_NT
So I think that the test permitting to require fftw3_threads is true.
That was a mistake Iāve fixed, but only in the develop
branch, my fault.
This should be now fixed in master
as well.
Thanks it is ok now
I know the preferred way to compile is using MinGW/g++ on Windows, but just for the sake of it, I also tried Visual Studio, with versions from VS2012 up to the latest VS2019, and while this was never a problem in the past (aside from the template optimisation issue of course), with the latest GāMIC sources it will no longer compile due to āinvalid template function initialisationā. This can be fixed by removing the default parameters for two functions, then it will compile again also under Visual Studio. Just wanted to let you know about that, let me know if you need any specific info on what I changed or if you want to keep it as it is.
Cheers,
Toby
Interested by this. Iāll try compiling with MSVC this afternoon, but if you already know what to change, that would save me some time !
In gmic.h on line 269:
template
gmic(const char *const commands_line,
const char *const custom_commands=0,
const bool include_stdlib=true,
float *const p_progress=0, bool *const p_is_abort=0,
const T& pixel_type=(T)0);
error C4519: default template arguments are only allowed on a class template
In gmic.h on line 282:
template
gmic& run(const char *const commands_line,
float *const p_progress=0, bool *const p_is_abort=0,
const T& pixel_type=(T)0);
error C4519: default template arguments are only allowed on a class template
Now the error above only happens with VS2012, since the first C++11 standard iteration did indeed not allow default template arguments for template functions, only class templates (there was seen no need to allow this). Fortunately, VS2012 has an unsupported feature by adding ā4519ā in the project property settings under āC/C++ - Advanced - Disable Specific Warningsā that makes this error go away, even though it is an error and not a warning.
The other error is however still happening with latest C++ compilers like VS2019 or the Intel C++ compiler:
In gmic.cpp on line 15163:
template CImg& CImg::assign(const unsigned int size_x, const unsigned int size_y=1,
const unsigned int size_z=1, const unsigned int size_c=1); \
error C2572: ācimg_library::CImg::assignā : redefinition of default parameter : parameter 4
error C2572: ācimg_library::CImg::assignā : redefinition of default parameter : parameter 3
error C2572: ācimg_library::CImg::assignā : redefinition of default parameter : parameter 2
Here I just removed the three default parameters from line 15163 in the assign functions and it still seems to work fine.
Ha interesting, thanks. What I propose then is to remove the value of the default template parameter. I really prefer to no use ārecentā C++ features if the code can still compile on older compilers.
Seems legit indeed. Iāll remove them too.
Iāve made the changes in the ādevelopā branch of the git repo.
Couldnāt test on my Windows, as my version of MSVC 2019 was a trial, and date is expired
@Tobias_Fleischer, about the information missing in the JSON feature. What do you need and what is your proposal to add them ?
I can change the parse_cli_json
to add these info.
According to the description of parse_gui, it seems the info is already available and just needs to be put in the output string for JSON.
I think the following data makes sense to include in the JSON:
$_fF_commandpreview: Filter preview command
And for each parameter:
$_fF_pP_visibility: Parameter visibility