Hi,
on Google Pixel (both on android 7.1 and 9.0) with Adreno (TM) 530 Vendor 5143 Device 5030004 Driver 512.313.0 the attempt to create even a simplest compute pipeline crashes in driver. the error is
SIGSEGV (signal SIGSEGV: invalid address (fault address: 0x4))
and the callstack is
<unknown function> 0x00000000e6337b56
<unknown function> 0x00000000e6337206
<unknown function> 0x00000000e5f4f526
<unknown function> 0x00000000e5f4ff40
<unknown function> 0x00000000e65220fe
<unknown function> 0x00000000e6529e8e
QGLCCompileToIRShader(void*, QGLC_SRCSHADER*, QGLC_COMPILETOIR_RESULT*) 0x00000000e65d109a
QglShaderCompiler::CompileToIrShader(QglProgram const*, QglShaderStage, char const*, unsigned int, char const*, QGLC_COMPILETOIR_RESULT*) 0x00000000d5921852
QglProgram::Compile(QglPipelineLayout const*) 0x00000000d59153d4
QglProgram::Create(QglProgramCreateData*) 0x00000000d591505e
QglPipeline::CreateProgram() 0x00000000d5913060
QglPipeline::Compile() 0x00000000d5912f04
QglPipeline::Init(QglPipelineCreateData*) 0x00000000d59122aa
QglPipeline::Create(QglPipelineCreateData*) 0x00000000d591220e
qglinternal::vkCreateComputePipelines(VkDevice_T*, unsigned long long, unsigned int, VkComputePipelineCreateInfo const*, VkAllocationCallbacks const*, unsigned long long*) 0x00000000d58e9174
So basically upgrading android didn't change anything. Would appreciate any hints. Thanks!
here's the source for the shader
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %2 "main" %gl_GlobalInvocationID
OpExecutionMode %2 LocalSize 8 8 1
OpDecorate %4 DescriptorSet 1
OpDecorate %4 Binding 0
OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId
%void = OpTypeVoid
%6 = OpTypeFunction %void
%uint = OpTypeInt 32 0
%v3uint = OpTypeVector %uint 3
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%11 = OpTypeImage %int 3D 0 0 0 2 R32i
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
%4 = OpVariable %_ptr_UniformConstant_11 UniformConstant
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input
%2 = OpFunction %void None %6
%14 = OpLabel
%15 = OpLoad %v3uint %gl_GlobalInvocationID
%16 = OpLoad %11 %4
OpImageWrite %16 %15 %int_0
OpReturn
OpFunctionEnd
Were you able to fix the problem? I am having the same problem when using compute shader.
Are you using DXC compiler or GlslangValidator? I am using DXC.
Hi,
I am currently working since about 6 months on a graphics engine done in Vulkan for PC/Oculus Quest, so far we did not touch much compute shaders .. until a couple of weeks ago ..
The code base is very similar, let' say "80% identical" between PC and Quest version, in fact that's the whole idea of the thing.
Anyway let's say I have something that works totally perfect on the PC but the moment I try to call :
With a set of descriptors/layouts/etc. that seem OK on PC all I get is :
Signal = SIGSEGV ( signal SIGSEVG : invalid address ( fault address 0x3df8e9be534709) )
The "fault address" seems to be "always the same" no matter what "parameters" are passed.
Now I can't run the samples "as they are" from the Adreno SDK, because that won't run on Quest, but I did take the same compute shader in the sample and re-compiled in my envirronement .. again .. calling VkCreateComputePipelines() seems ALWAYS to fall "no matter what".
I did post this same thing today on the Oculus Quest forums but I doubt I'll get any reply.
I so far made " a lot of tries " simplifying at max the compute shader, at the point to have a compute shader that just made something like :
Hi,
to reply you "in case of my crashses" I am always using GLslangValidator, the one found/supplied in the Lunarg SDK.
Hi,
I wish to add some more info, this is the kind of GPU/situation I am working with :
I also have problem with compute pipeline on Adreno:
https://community.khronos.org/t/adreno-506-vkcreatecomputepipelines-has-...
https://developer.qualcomm.com/forum/qdn-forums/software/adreno-gpu-sdk/...