Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Mali G57 vkCreateGraphicsPipelines crashes with Tessellation shaders

Hi!

I use Tessellation shaders for creating VkPipeline. But during calling vkCreateGraphicsPipelines I got crash

Vulkan driver info: Conformance Version: 1.2.2.0 ID: VK_DRIVER_ID_ARM_PROPRIETARY Name: Mali-G57 MC2 Info: v1.r26p0-01eac0.db14d76a92163ae64c7b9e4d58c437a5

I attached Debug APK

I attached shaders original + spirv (old)

I attached Android Studio project with source and shaders

See VkPipelineAndroid_template\app\src\main\shaderSources

Small test apk

I can provide additional information.

Parents Reply Children
  • Hi,

    Mali Best Practice is not to have Tessellation shaders (they give bad performance), but in this case there's also likely a bug you're hitting, in the HLSL->DXC->SPIR-V process.  DXC-compiled tessellation shaders don't work on Mali (since R26), they create a problematic pattern.

    A proposed workaround exists: 

    -> round-trip the SPIR-V through GLSL (using SPIRV-Cross) and back to SPIR-V again. 

    There are DXC patterns that SPIRV-Cross can't cope with either, so depends whether you hit those (it didn't work for another developer who hit this issue). In that case it might just need the SPIR-V to be patched.

  • Hi, Thank you for you reply.

    but in this case there's also likely a bug you're hitting, in the HLSL->DXC->SPIR-V process.  DXC-compiled tessellation shaders don't work on Mali (since R26), they create a problematic pattern.

    I use glslang for creating SPIR-V from HLSL, see "Android studio project with source and shader":

    VkPipelineAndroid_template\app\src\main\shaderSources\compile_hull.cmd

    glslangValidator.exe -V -D -e hMain hs.tesc

    VkPipelineAndroid_template\app\src\main\shaderSources\compile_domain.cmd:

    glslangValidator.exe -V -D -e dMain ds.tese

    round-trip the SPIR-V through GLSL (using SPIRV-Cross) and back to SPIR-V again. 

    I think this is a strange solution, Will ARM fix driver's bug for new GPU or drivers ?

    Qualcomm will fix the same problem: developer.qualcomm.com/.../68860

  • It is already in the system as a bug, although I don't know how quickly it will be got to. Regardless, if/when it is fixed for new drivers, they only tend to get loaded on new phones, so you'll have a set of phones out there that you'll need a workaround for.

    And if we can encourage you away from tessellation shaders all the better :) 

  • Hi I will wait this fix and check this bug on new phones...