We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I was running the following test
TEST_F(PositiveGpuAVDescriptorIndexing, SharedPipelineLayoutSubsetGraphicsShaderObject2) { SetTargetApiVersion(VK_API_VERSION_1_2); AddRequiredExtensions(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME); AddRequiredExtensions(VK_EXT_SHADER_OBJECT_EXTENSION_NAME); AddRequiredFeature(vkt::Feature::dynamicRendering); AddRequiredFeature(vkt::Feature::shaderObject); AddRequiredFeature(vkt::Feature::descriptorBindingStorageBufferUpdateAfterBind); RETURN_IF_SKIP(Init()); InitDynamicRenderTarget(); VkDescriptorBindingFlags binding_flags = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT; VkDescriptorSetLayoutBindingFlagsCreateInfo flags_create_info = vku::InitStructHelper(); flags_create_info.bindingCount = 1; flags_create_info.pBindingFlags = &binding_flags; const VkDescriptorSetLayoutBinding binding{0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, VK_SHADER_STAGE_ALL, nullptr}; vkt::DescriptorSetLayout dsl_1(*m_device, binding, VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, &flags_create_info); std::array set_layouts = {dsl_1.handle(), dsl_1.handle()}; VkPipelineLayoutCreateInfo pipeline_layout_ci = vku::InitStructHelper(); pipeline_layout_ci.pSetLayouts = set_layouts.data(); pipeline_layout_ci.setLayoutCount = 2; const vkt::PipelineLayout pipeline_layout_2(*m_device, pipeline_layout_ci); ; char const *vs_source_2 = R"glsl( #version 450 layout(set = 0, binding = 0) buffer foo_0 { int a; }; layout(set = 1, binding = 0) buffer foo_1 { int b; }; void main() { a = b; } )glsl"; const std::vector<uint32_t> vs_spv_2 = GLSLToSPV(VK_SHADER_STAGE_VERTEX_BIT, vs_source_2); VkShaderCreateInfoEXT vs_ci_2 = ShaderCreateInfo(vs_spv_2, VK_SHADER_STAGE_VERTEX_BIT, 2, set_layouts.data(), 0, nullptr); const vkt::Shader vs_2(*m_device, vs_ci_2); static const char fs_source_2[] = R"glsl( #version 460 layout(set = 0, binding = 0) buffer foo_0 { int a; }; layout(set = 1, binding = 0) buffer foo_1 { int b; }; void main() {} )glsl"; const std::vector<uint32_t> fs_spv_2 = GLSLToSPV(VK_SHADER_STAGE_FRAGMENT_BIT, fs_source_2); VkShaderCreateInfoEXT fs_ci_2 = ShaderCreateInfo(fs_spv_2, VK_SHADER_STAGE_FRAGMENT_BIT, 2, set_layouts.data(), 0, nullptr); const vkt::Shader fs_2(*m_device, fs_ci_2); const std::array<VkShaderStageFlagBits, 5> stages = {{VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, VK_SHADER_STAGE_GEOMETRY_BIT, VK_SHADER_STAGE_FRAGMENT_BIT}}; const std::array<VkShaderEXT, 5> shaders_2 = {{vs_2.handle(), VK_NULL_HANDLE, VK_NULL_HANDLE, VK_NULL_HANDLE,fs_2.handle()}}; VkDescriptorPoolSize pool_size = {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 2}; VkDescriptorPoolCreateInfo ds_pool_ci = vku::InitStructHelper(); ds_pool_ci.flags = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT; ds_pool_ci.maxSets = 2; ds_pool_ci.poolSizeCount = 1; ds_pool_ci.pPoolSizes = &pool_size; vkt::DescriptorPool pool(*m_device, ds_pool_ci); VkDescriptorSetAllocateInfo allocate_info = vku::InitStructHelper(); allocate_info.descriptorPool = pool.handle(); allocate_info.descriptorSetCount = 2; allocate_info.pSetLayouts = set_layouts.data(); std::array<VkDescriptorSet, 2> descriptor_sets{}; vk::AllocateDescriptorSets(device(), &allocate_info, descriptor_sets.data()); vkt::Buffer buffer(*m_device, 32, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT); VkDescriptorBufferInfo buffer_info = {buffer.handle(), 0, VK_WHOLE_SIZE}; VkWriteDescriptorSet descriptor_writes[2]; descriptor_writes[0] = vku::InitStructHelper(); descriptor_writes[0].dstSet = descriptor_sets[0]; descriptor_writes[0].dstBinding = 0; descriptor_writes[0].descriptorCount = 1; descriptor_writes[0].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER; descriptor_writes[0].pBufferInfo = &buffer_info; descriptor_writes[1] = descriptor_writes[0]; descriptor_writes[1].dstSet = descriptor_sets[1]; vk::UpdateDescriptorSets(device(), 2, descriptor_writes, 0, nullptr); VkCommandBufferBeginInfo begin_info = vku::InitStructHelper(); m_commandBuffer->begin(&begin_info); m_commandBuffer->BeginRenderingColor(GetDynamicRenderTarget(), GetRenderTargetArea()); vk::CmdBindDescriptorSets(m_commandBuffer->handle(), VK_PIPELINE_BIND_POINT_GRAPHICS, pipeline_layout_2.handle(), 0, 2, descriptor_sets.data(), 0, nullptr); vk::CmdBindShadersEXT(m_commandBuffer->handle(), size32(stages), stages.data(), shaders_2.data()); SetDefaultDynamicStatesAll(m_commandBuffer->handle()); vk::CmdDraw(m_commandBuffer->handle(), 3, 1, 0, 0); m_commandBuffer->EndRendering(); m_commandBuffer->end(); m_default_queue->Submit(*m_commandBuffer); m_default_queue->Wait(); }
and I see the following VVL error from the output of the Shader Object layer
Validation Error: [ VUID-VkGraphicsPipelineCreateInfo-pLibraries-06634 ] | MessageID = 0xf8ff56c9 | vkCreateGraphicsPipelines(): pCreateInfos[0] Fragment Shader and Fragment Output Interface were created with different VkPipelineMultisampleStateCreateInfo.Fragment Shader pMultisampleState: pNext: (nil) rasterizationSamples: VK_SAMPLE_COUNT_1_BIT sampleShadingEnable: 0 minSampleShading: 0.000000 pSampleMask: (nil) alphaToCoverageEnable: 0 alphaToOneEnable: 0 Fragment Output Interface pMultisampleState: pNext: (nil) rasterizationSamples: VK_SAMPLE_COUNT_1_BIT sampleShadingEnable: 0 minSampleShading: 0.000000 pSampleMask: 0x5e5bfa0a2c20 alphaToCoverageEnable: 0 alphaToOneEnable: 0
The text was updated successfully, but these errors were encountered:
No branches or pull requests
I was running the following test
and I see the following VVL error from the output of the Shader Object layer
The text was updated successfully, but these errors were encountered: