mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
Move nodeCalc unique ptr to the GPU function
... and spare some CPU cycles
This commit is contained in:
parent
5ef87371aa
commit
61dd729517
@ -17,7 +17,6 @@
|
||||
|
||||
#include "qgsgdalutils.h"
|
||||
#include "qgsrastercalculator.h"
|
||||
#include "qgsrastercalcnode.h"
|
||||
#include "qgsrasterdataprovider.h"
|
||||
#include "qgsrasterinterface.h"
|
||||
#include "qgsrasterlayer.h"
|
||||
@ -95,7 +94,7 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback
|
||||
// Check for matrix nodes, GPU implementation does not support them
|
||||
QList<const QgsRasterCalcNode *> nodeList;
|
||||
if ( QgsOpenClUtils::enabled() && QgsOpenClUtils::available() && calcNode->findNodes( QgsRasterCalcNode::Type::tMatrix ).isEmpty() )
|
||||
return processCalculationGPU( feedback );
|
||||
return processCalculationGPU( std::move( calcNode ), feedback );
|
||||
#endif
|
||||
|
||||
//open output dataset for writing
|
||||
@ -313,9 +312,9 @@ QgsRasterCalculator::Result QgsRasterCalculator::processCalculation( QgsFeedback
|
||||
}
|
||||
|
||||
#ifdef HAVE_OPENCL
|
||||
QgsRasterCalculator::Result QgsRasterCalculator::processCalculationGPU( QgsFeedback *feedback )
|
||||
QgsRasterCalculator::Result QgsRasterCalculator::processCalculationGPU( std::unique_ptr< QgsRasterCalcNode > calcNode, QgsFeedback *feedback )
|
||||
{
|
||||
std::unique_ptr< QgsRasterCalcNode > calcNode( QgsRasterCalcNode::parseRasterCalcString( mFormulaString, mLastError ) );
|
||||
|
||||
QString cExpression( calcNode->toString( true ) );
|
||||
|
||||
QList<const QgsRasterCalcNode *> nodeList( calcNode->findNodes( QgsRasterCalcNode::Type::tRasterRef ) );
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "gdal.h"
|
||||
#include "qgis_analysis.h"
|
||||
#include "qgsogrutils.h"
|
||||
#include "qgsrastercalcnode.h"
|
||||
|
||||
class QgsRasterLayer;
|
||||
class QgsFeedback;
|
||||
@ -152,7 +153,7 @@ class ANALYSIS_EXPORT QgsRasterCalculator
|
||||
void outputGeoTransform( double *transform ) const;
|
||||
|
||||
//! Execute calculations on GPU
|
||||
Result processCalculationGPU( QgsFeedback *feedback = nullptr );
|
||||
Result processCalculationGPU( std::unique_ptr< QgsRasterCalcNode > calcNode, QgsFeedback *feedback = nullptr );
|
||||
|
||||
QString mFormulaString;
|
||||
QString mOutputFile;
|
||||
|
Loading…
x
Reference in New Issue
Block a user