Hi All, I have problem on Adreno 506.
vkCreateComputePipelines
has returned VK_INCOMPLETE
. I have no error message from Vulkan debug layers,
but i see an error message from Adreno Driver(Android Studio/logcat):
31569-31637/com.qualcomm.vulkan.compute.d I/Adreno: Shader compilation failed for shaderType: 5
Sample code:
void VkSample::Test(VkDevice mDevice)
{
const VkDescriptorSetLayoutBinding vkDescriptorSetLayoutBinding[4] = {
{0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_COMPUTE_BIT, NULL },
{1, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_COMPUTE_BIT, NULL },
{2, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_COMPUTE_BIT, NULL },
{3, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_COMPUTE_BIT, NULL },
};
VkDescriptorSetLayoutCreateInfo vkDescriptorSetLayoutCreateInfo = {};
vkDescriptorSetLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
vkDescriptorSetLayoutCreateInfo.bindingCount = 4;
vkDescriptorSetLayoutCreateInfo.pBindings = vkDescriptorSetLayoutBinding;
VkDescriptorSetLayout vkDescriptorSetLayout = VK_NULL_HANDLE;
VkResult res = vkCreateDescriptorSetLayout(mDevice, &vkDescriptorSetLayoutCreateInfo, NULL, &vkDescriptorSetLayout);
VkPipelineLayout vkPipelineLayout = VK_NULL_HANDLE;
VkPipelineLayoutCreateInfo vkPipelineLayoutCreateInfo = {};
vkPipelineLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
vkPipelineLayoutCreateInfo.setLayoutCount = 1;
vkPipelineLayoutCreateInfo.pSetLayouts = &vkDescriptorSetLayout;
res = vkCreatePipelineLayout(mDevice, &vkPipelineLayoutCreateInfo, NULL, &vkPipelineLayout);
VkComputePipelineCreateInfo vkComputePipelineCreateInfo = {};
VkPipelineShaderStageCreateInfo& vkPipelineShaderStageCreateInfo = vkComputePipelineCreateInfo.stage;
vkPipelineShaderStageCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
vkPipelineShaderStageCreateInfo.flags = 0;
vkPipelineShaderStageCreateInfo.pNext = NULL;
vkPipelineShaderStageCreateInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT;
vkPipelineShaderStageCreateInfo.module = CreateShaderModuleFromAsset("shaders/spirv.spv");
vkPipelineShaderStageCreateInfo.pName = "CullObjects";
vkPipelineShaderStageCreateInfo.pSpecializationInfo = NULL;
vkComputePipelineCreateInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO;
vkComputePipelineCreateInfo.layout = vkPipelineLayout;
VkPipeline vkComputePipeline = VK_NULL_HANDLE;
res = vkCreateComputePipelines(mDevice, NULL, 1, &vkComputePipelineCreateInfo, NULL, &vkComputePipeline);
}
Original Shader was compiled using glslang tool(GitHub - KhronosGroup/glslang: Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.)
Simple project(Android Studio) are based on Vulkan-Compute sample from Adreno Vulkan SDK:
See Sample.cpp, line 634, method void VkSample::Test. I attached original shader CSShaderGPUInstanceCulling.hlsl, Spir-v shader:
spirv.spv
I have no problem on Mali G71, G76, AMD(Windows/Linux), nVidia(Windows), Intel(Windows)
What do you think about it ?