|
|
@ -1412,9 +1412,18 @@ struct Net::Impl |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ld.skip = false; |
|
|
|
ld.skip = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
|
|
|
{ |
|
|
|
ld.backendNodes[DNN_BACKEND_VKCOM] = |
|
|
|
ld.backendNodes[DNN_BACKEND_VKCOM] = |
|
|
|
layer->initVkCom(ld.inputBlobsWrappers); |
|
|
|
layer->initVkCom(ld.inputBlobsWrappers); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
catch (const cv::Exception& e) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CV_LOG_ERROR(NULL, "initVkCom failed, fallback to CPU implementation. " << e.what()); |
|
|
|
|
|
|
|
ld.backendNodes[DNN_BACKEND_VKCOM] = Ptr<BackendNode>(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -2317,9 +2326,18 @@ struct Net::Impl |
|
|
|
forwardInfEngine(node); |
|
|
|
forwardInfEngine(node); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (preferableBackend == DNN_BACKEND_VKCOM) |
|
|
|
else if (preferableBackend == DNN_BACKEND_VKCOM) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
{ |
|
|
|
forwardVkCom(ld.outputBlobsWrappers, node); |
|
|
|
forwardVkCom(ld.outputBlobsWrappers, node); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
catch (const cv::Exception& e) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
CV_LOG_ERROR(NULL, "forwardVkCom failed, fallback to CPU implementation. " << e.what()); |
|
|
|
|
|
|
|
it->second = Ptr<BackendNode>(); |
|
|
|
|
|
|
|
forwardLayer(ld); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
CV_Error(Error::StsNotImplemented, "Unknown backend identifier"); |
|
|
|
CV_Error(Error::StsNotImplemented, "Unknown backend identifier"); |
|
|
|