Skip to content

Commit 61dd729

Browse files
committedDec 3, 2018
Move nodeCalc unique ptr to the GPU function
... and spare some CPU cycles
1 parent 5ef8737 commit 61dd729

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed
 

‎src/analysis/raster/qgsrastercalculator.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
#include "qgsgdalutils.h"
1919
#include "qgsrastercalculator.h"
20-
#include "qgsrastercalcnode.h"
2120
#include "qgsrasterdataprovider.h"
2221
#include "qgsrasterinterface.h"
2322
#include "qgsrasterlayer.h"
@@ -95,7 +94,7 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback
9594
// Check for matrix nodes, GPU implementation does not support them
9695
QList<const QgsRasterCalcNode *> nodeList;
9796
if ( QgsOpenClUtils::enabled() && QgsOpenClUtils::available() && calcNode->findNodes( QgsRasterCalcNode::Type::tMatrix ).isEmpty() )
98-
return processCalculationGPU( feedback );
97+
return processCalculationGPU( std::move( calcNode ), feedback );
9998
#endif
10099

101100
//open output dataset for writing
@@ -313,9 +312,9 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback
313312
}
314313

315314
#ifdef HAVE_OPENCL
316-
QgsRasterCalculator::Result QgsRasterCalculator::processCalculationGPU( QgsFeedback *feedback )
315+
QgsRasterCalculator::Result QgsRasterCalculator::processCalculationGPU( std::unique_ptr< QgsRasterCalcNode > calcNode, QgsFeedback *feedback )
317316
{
318-
std::unique_ptr< QgsRasterCalcNode > calcNode( QgsRasterCalcNode::parseRasterCalcString( mFormulaString, mLastError ) );
317+
319318
QString cExpression( calcNode->toString( true ) );
320319

321320
QList<const QgsRasterCalcNode *> nodeList( calcNode->findNodes( QgsRasterCalcNode::Type::tRasterRef ) );

‎src/analysis/raster/qgsrastercalculator.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "gdal.h"
2626
#include "qgis_analysis.h"
2727
#include "qgsogrutils.h"
28+
#include "qgsrastercalcnode.h"
2829

2930
class QgsRasterLayer;
3031
class QgsFeedback;
@@ -152,7 +153,7 @@ class ANALYSIS_EXPORT QgsRasterCalculator
152153
void outputGeoTransform( double *transform ) const;
153154

154155
//! Execute calculations on GPU
155-
Result processCalculationGPU( QgsFeedback *feedback = nullptr );
156+
Result processCalculationGPU( std::unique_ptr< QgsRasterCalcNode > calcNode, QgsFeedback *feedback = nullptr );
156157

157158
QString mFormulaString;
158159
QString mOutputFile;

0 commit comments

Comments
 (0)
Please sign in to comment.