mirror of
https://github.com/opencv/opencv.git
synced 2025-06-13 04:52:53 +08:00
ocl: Add a function to unload a run-time cached program
This function is the counterpart of "Context::getProg". With this function, users have chance to unload a program from global run-time cached programs, and save resource.
This commit is contained in:
parent
f670a99270
commit
da3da84a20
@ -248,6 +248,7 @@ public:
|
|||||||
const Device& device(size_t idx) const;
|
const Device& device(size_t idx) const;
|
||||||
Program getProg(const ProgramSource& prog,
|
Program getProg(const ProgramSource& prog,
|
||||||
const String& buildopt, String& errmsg);
|
const String& buildopt, String& errmsg);
|
||||||
|
void unloadProg(Program& prog);
|
||||||
|
|
||||||
static Context& getDefault(bool initialize = true);
|
static Context& getDefault(bool initialize = true);
|
||||||
void* ptr() const;
|
void* ptr() const;
|
||||||
|
@ -1397,6 +1397,23 @@ struct Context::Impl
|
|||||||
return prog;
|
return prog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void unloadProg(Program& prog)
|
||||||
|
{
|
||||||
|
cv::AutoLock lock(program_cache_mutex);
|
||||||
|
for (CacheList::iterator i = cacheList.begin(); i != cacheList.end(); ++i)
|
||||||
|
{
|
||||||
|
phash_t::iterator it = phash.find(*i);
|
||||||
|
if (it != phash.end())
|
||||||
|
{
|
||||||
|
if (it->second.ptr() == prog.ptr())
|
||||||
|
{
|
||||||
|
phash.erase(*i);
|
||||||
|
cacheList.erase(i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
IMPLEMENT_REFCOUNTABLE();
|
IMPLEMENT_REFCOUNTABLE();
|
||||||
|
|
||||||
@ -1660,7 +1677,11 @@ Program Context::getProg(const ProgramSource& prog,
|
|||||||
return p ? p->getProg(prog, buildopts, errmsg) : Program();
|
return p ? p->getProg(prog, buildopts, errmsg) : Program();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Context::unloadProg(Program& prog)
|
||||||
|
{
|
||||||
|
if (p)
|
||||||
|
p->unloadProg(prog);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_OPENCL_SVM
|
#ifdef HAVE_OPENCL_SVM
|
||||||
bool Context::useSVM() const
|
bool Context::useSVM() const
|
||||||
|
Loading…
Reference in New Issue
Block a user