Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
413febf6
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
413febf6
编写于
1月 22, 2021
作者:
A
Alexander Alekhin
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19334 from alalek:fix_19134
上级
0f968e3b
212815a1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
6 deletion
+16
-6
modules/core/src/ocl.cpp
modules/core/src/ocl.cpp
+16
-6
未找到文件。
modules/core/src/ocl.cpp
浏览文件 @
413febf6
...
...
@@ -2802,16 +2802,24 @@ struct Kernel::Impl
haveTempSrcUMats
=
true
;
// UMat is created on RAW memory (without proper lifetime management, even from Mat)
}
void
addImage
(
const
Image2D
&
image
)
/// Preserve image lifetime (while it is specified as Kernel argument)
void
registerImageArgument
(
int
arg
,
const
Image2D
&
image
)
{
images
.
push_back
(
image
);
CV_CheckGE
(
arg
,
0
,
""
);
CV_CheckLT
(
arg
,
(
int
)
MAX_ARRS
,
""
);
if
(
arg
<
(
int
)
shadow_images
.
size
()
&&
shadow_images
[
arg
].
ptr
()
!=
image
.
ptr
())
// TODO future: replace ptr => impl (more strong check)
{
CV_Check
(
arg
,
!
isInProgress
,
"ocl::Kernel: clearing of pending Image2D arguments is not allowed"
);
}
shadow_images
.
reserve
(
MAX_ARRS
);
shadow_images
.
resize
(
std
::
max
(
shadow_images
.
size
(),
(
size_t
)
arg
+
1
));
shadow_images
[
arg
]
=
image
;
}
void
finit
(
cl_event
e
)
{
CV_UNUSED
(
e
);
cleanupUMats
();
images
.
clear
();
isInProgress
=
false
;
release
();
}
...
...
@@ -2836,7 +2844,7 @@ struct Kernel::Impl
bool
isInProgress
;
bool
isAsyncRun
;
// true if kernel was scheduled in async mode
int
nu
;
std
::
list
<
Image2D
>
images
;
std
::
vector
<
Image2D
>
shadow_
images
;
bool
haveTempDstUMats
;
bool
haveTempSrcUMats
;
};
...
...
@@ -2978,9 +2986,11 @@ int Kernel::set(int i, const void* value, size_t sz)
int
Kernel
::
set
(
int
i
,
const
Image2D
&
image2D
)
{
p
->
addImage
(
image2D
);
cl_mem
h
=
(
cl_mem
)
image2D
.
ptr
();
return
set
(
i
,
&
h
,
sizeof
(
h
));
int
res
=
set
(
i
,
&
h
,
sizeof
(
h
));
if
(
res
>=
0
)
p
->
registerImageArgument
(
i
,
image2D
);
return
res
;
}
int
Kernel
::
set
(
int
i
,
const
UMat
&
m
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录