在Adreno 630上的vulkan计算着色器中使用glsl barrier()函数时遇到麻烦

我正在Adreno 630 GPU(平台为SDM845)上使用vulkan开发渲染应用程序。

我尝试使用计算着色器预处理某些附件,但是使用barrier()函数同步线程时遇到麻烦。

在任何地方添加“ barrier();”指令,它会使我的应用程序崩溃。

我使用glslangvalidator编译glsl代码以为我的计算着色器生成spir-v编译代码。

我使用的glslangvalidator的版本是:

>glslangvalidator -v
Glslang Version: 7.11.3113
ESSL Version: OpenGL ES GLSL 3.20 glslang Khronos. 11.3113
GLSL Version: 4.60 glslang Khronos. 11.3113
SPIR-V Version 0x00010300,Revision 6
GLSL.std.450 Version 100,Revision 1
Khronos Tool ID 8
SPIR-V Generator Version 7
GL_KHR_vulkan_glsl version 100
ARB_GL_gl_spirv version 100

“ barrier();”指令不包含在条件代码中,因此它应该可以工作。

即使我使用“ barrier();”启动主要功能,指令,它会使我的应用程序崩溃:

我尝试过的glsl代码示例:

#version 460
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable

void main()
{
    // some variables declarations

    barrier();

    *** my code ***

}

但是,如果我用barrier()注释这一行,我的应用程序将不再崩溃。


由于在同一硬件上使用OpenCL时,障碍会起作用,因此我尝试使用clspv解决此问题。

我从此仓库中检出了最新的主代码: https://github.com/google/clspv/blob/master/docs/OpenCLCOnVulkan.md

我已将一些基本的OpenCL C代码成功编译到spir-v中,但是当我在代码中添加障碍(barrier(CLK_LOCAL_MEM_FENCE);)时,我遇到了相同的问题。

关于什么地方可能出问题或有人遇到过相同问题的任何提示?

谢谢

达米恩

cathylia 回答:在Adreno 630上的vulkan计算着色器中使用glsl barrier()函数时遇到麻烦

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3153586.html

大家都在问