OpenCL read_imagef奇怪的行为

weixin_38119139 2019-09-12 04:09:27

我有一个CL_FLOAT格式的图像并存储所有RGBA通道。现在,图像的每4个像素已经存储在那里的整数,我clasically并将其作为: image[i * 4 + 3].x = *(float*)(&someInt); image[i * 4 + 3].y = *(float*)(&someInt2); etc. 当我需要这些是整数(而不是浮动),像素的其余的都储存花车,所以我这里没有太多选择。 当我看到像从OpenCL的背我正确地获取值,问题就出现在OpenCL的内核: 每当我读到像这样的(采样设置只是最近过滤): float4 fourthPixel = read_imagef(img, sampler, coords); 我尝试将其转换为整数 int id = as_int(fourthPixel.x); 我不读正确的数字(它总是返回0,除非数量是整数形式相当高的)。 到目前为止,我得到了几点 - 如果我存储号码像1505353234它工作,让我回6539629947781120.000000 - 这是正确的。如果我存储较小的数字,似乎read_imagef只是钳位然后下降到0. 所以很明显,所有的非规格化数字都被限制为零。那么,是否有任何好的方法来实际强制read_imagef不将非规范化数字限制为零,而无需添加进一步的指令(您可以添加0x7f000000等 - 但我需要代码中的性能,所以这种解决方案是不可接受的)?








...全文
262 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38141003 2019-09-12
  • 打赏
  • 举报
回复

所以显然阅读图像通过read_imagei工作正常。我也看着规格,并发现你的设备可以钳位非规范浮点数​​为零。

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧