Hi!
I use Tessellation shaders for creating VkPipeline. But vkCreateGraphicsPipelines has returned error VK_ERROR_UNKNOWN.
Android 11
Vulkan driver info: Conformance Version: 1.2.0.1 ID: VK_DRIVER_ID_QUALCOMM_PROPRIETARY Name: Qualcomm Technologies Inc. Adreno Vulkan Driver Info: Driver Build: 704ecd9a2b, Ib3f3e69395, 1609240670
Date: 12/29/20
I attached Project with debug apk
During debugging
I see message in logvat
2021-10-25 10:11:36.989 29550-29576/vkpipeline.android.d I/AdrenoVK-0: Shader compilation failed for shaderType: 3
I can provide additional information.
Hi , I attached Android Studio project with source and shaders
See VkPipelineAndroid_template\app\src\main\shaderSources
Small test apk
Hi,
I am able to reproduce a failed shader compilation with the SPIR-V shader you provided. I've created an internal tracker for this and will follow up with our Compiler team on the root-cause. Will let you know what we find.
We have root-caused this problem. Thanks for bringing it to our attention. For exising drivers, the Adreno shader compiler only handles tessellatoin shaders if they originate from GLSL. This is becuase in GLSL, built-ins like gl_Position must be declared inside a gl_PerVertex strucure. Our comiler depends on the gl_PerVertex strucure being converted to a corresponding SPIR-V structure.
So in the near-term, the only robust solution for you would be to author your shaders using GLSL.
Yes, we are working on a fix now to address this issue, and our future drivers will include the improvement. That said, the initial drivers for SoCs with A7xx are already locked down and shipped to OEMs, so if you buy one of the earliest Phones with A7xx GPU, you may want to buy from an OEM that give you a path for driver updates. You can reach out later if you need help updating your driver on A7xx GPU.