|
Krita Source Code Documentation
|
#include <kis_convolution_worker_fft.h>
Inheritance diagram for KisConvolutionWorkerFFT< _IteratorFactory_ >:Classes | |
| struct | FFTInfo |
Public Member Functions | |
| void | execute (const KisConvolutionKernelSP kernel, const KisPaintDeviceSP src, QPoint srcPos, QPoint dstPos, QSize areaSize, const QRect &dataRect) override |
| void | fillCacheFromDevice (KisPaintDeviceSP src, const QRect &rect, const int cacheRowStride, const FFTInfo &info, const QRect &dataRect) |
| KisConvolutionWorkerFFT (KisPainter *painter, KoUpdater *progress) | |
| void | limitValue (qreal *value, qreal lowBound, qreal highBound) |
| qreal | writeAlphaFromCache (quint8 *dstPtr, const quint32 channel, const FFTInfo &info, double *channelValuePtr, bool *dstValueIsNull) |
| template<bool additionalMultiplierActive> | |
| qreal | writeOneChannelFromCache (quint8 *dstPtr, const quint32 channel, const FFTInfo &info, double *channelValuePtr, const qreal additionalMultiplier=0.0) |
| void | writeResultToDevice (const QRect &rect, const int cacheRowStride, const int halfKernelWidth, const int halfKernelHeight, const FFTInfo &info, const QRect &dataRect) |
| ~KisConvolutionWorkerFFT () | |
Public Member Functions inherited from KisConvolutionWorker< _IteratorFactory_ > | |
| KisConvolutionWorker (KisPainter *painter, KoUpdater *progress) | |
| virtual | ~KisConvolutionWorker () |
Private Member Functions | |
| void | addToProgress (float amount) |
| void | cleanUp () |
| void | fftFillKernelMatrix (const KisConvolutionKernelSP kernel, fftw_complex *m_kernelFFT) |
| void | fftLogMatrix (double *channel, const QString &f) |
| void | fftMultiply (fftw_complex *channel, fftw_complex *kernel) |
| bool | isInterrupted () |
| void | optimumDimensions (quint32 &w, quint32 &h) |
Private Attributes | |
| QVector< fftw_complex * > | m_channelFFT |
| float | m_currentProgress {0.0} |
| quint32 | m_extraMem {0} |
| quint32 | m_fftHeight {0} |
| quint32 | m_fftLength {0} |
| quint32 | m_fftWidth {0} |
| fftw_complex * | m_kernelFFT {0} |
Additional Inherited Members | |
Protected Member Functions inherited from KisConvolutionWorker< _IteratorFactory_ > | |
| QList< KoChannelInfo * > | convolvableChannelList (const KisPaintDeviceSP src) |
Protected Attributes inherited from KisConvolutionWorker< _IteratorFactory_ > | |
| KisPainter * | m_painter |
| KoUpdater * | m_progress |
Definition at line 40 of file kis_convolution_worker_fft.h.
|
inline |
Definition at line 43 of file kis_convolution_worker_fft.h.
|
inline |
Definition at line 48 of file kis_convolution_worker_fft.h.
|
inlineprivate |
Definition at line 515 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::m_currentProgress, KisConvolutionWorker< _IteratorFactory_ >::m_progress, and KoUpdater::setProgress().
|
inlineprivate |
Definition at line 534 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::m_channelFFT, and KisConvolutionWorkerFFT< _IteratorFactory_ >::m_kernelFFT.
|
inlineoverridevirtual |
FIXME: check whether this "optimization" is needed to be uncommented. My tests showed about 30% better performance when the line is commented out (DK).
Implements KisConvolutionWorker< _IteratorFactory_ >.
Definition at line 52 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::addToProgress(), KisConvolutionWorkerFFT< _IteratorFactory_ >::cleanUp(), KisPaintDevice::colorSpace(), KisConvolutionWorker< _IteratorFactory_ >::convolvableChannelList(), KisPainter::device, KisConvolutionKernel::factor, KisConvolutionWorkerFFT< _IteratorFactory_ >::fftFillKernelMatrix(), KisConvolutionWorkerFFT< _IteratorFactory_ >::fftMultiply(), KisConvolutionWorkerFFTLock::fftwMutex, KisConvolutionWorkerFFT< _IteratorFactory_ >::fillCacheFromDevice(), KisConvolutionKernel::height(), KisConvolutionWorkerFFT< _IteratorFactory_ >::isInterrupted(), KisConvolutionWorkerFFT< _IteratorFactory_ >::m_channelFFT, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_extraMem, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftHeight, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftLength, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftWidth, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_kernelFFT, KisConvolutionWorker< _IteratorFactory_ >::m_painter, KisSelection::selectedRect(), KisPainter::selection, KisConvolutionKernel::width(), and KisConvolutionWorkerFFT< _IteratorFactory_ >::writeResultToDevice().
|
inlineprivate |
Definition at line 415 of file kis_convolution_worker_fft.h.
References KisConvolutionKernel::data, KisConvolutionKernel::height(), KisConvolutionWorkerFFT< _IteratorFactory_ >::m_extraMem, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftHeight, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftWidth, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_kernelFFT, and KisConvolutionKernel::width().
|
inlineprivate |
Definition at line 485 of file kis_convolution_worker_fft.h.
References dbgKrita, KisConvolutionWorkerFFTLock::fftwMutex, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftHeight, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftWidth, and KisPortingUtils::setUtf8OnStream().
|
inlineprivate |
Definition at line 442 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::m_fftLength.
|
inline |
Definition at line 214 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::alphaCachePos, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::alphaRealPos, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::convChannelList, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_channelFFT, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::numChannels(), and KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::toDoubleFuncPtr.
|
inlineprivate |
Definition at line 524 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::cleanUp(), KoUpdater::interrupted(), and KisConvolutionWorker< _IteratorFactory_ >::m_progress.
|
inline |
Definition at line 274 of file kis_convolution_worker_fft.h.
References value().
|
inlineprivate |
Definition at line 463 of file kis_convolution_worker_fft.h.
|
inline |
Definition at line 283 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::absoluteOffset, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::convChannelList, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::fftScale, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::fromDoubleCheckNullFuncPtr, KisConvolutionWorkerFFT< _IteratorFactory_ >::limitValue(), KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::maxClamp, and KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::minClamp.
|
inline |
Definition at line 298 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::absoluteOffset, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::convChannelList, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::fftScale, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::fromDoubleFuncPtr, KisConvolutionWorkerFFT< _IteratorFactory_ >::limitValue(), KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::maxClamp, and KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::minClamp.
|
inline |
Definition at line 318 of file kis_convolution_worker_fft.h.
References KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::alphaCachePos, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::convChannelList, KisPainter::device, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::fromDoubleFuncPtr, KisConvolutionWorkerFFT< _IteratorFactory_ >::m_channelFFT, KisConvolutionWorker< _IteratorFactory_ >::m_painter, KisConvolutionWorkerFFT< _IteratorFactory_ >::FFTInfo::numChannels(), and KisConvolutionWorkerFFT< _IteratorFactory_ >::writeAlphaFromCache().
|
private |
Definition at line 554 of file kis_convolution_worker_fft.h.
|
private |
Definition at line 551 of file kis_convolution_worker_fft.h.
|
private |
Definition at line 550 of file kis_convolution_worker_fft.h.
|
private |
Definition at line 548 of file kis_convolution_worker_fft.h.
|
private |
Definition at line 549 of file kis_convolution_worker_fft.h.
|
private |
Definition at line 547 of file kis_convolution_worker_fft.h.
|
private |
Definition at line 553 of file kis_convolution_worker_fft.h.