Resolve validation warnings

This commit is contained in:
IndecisiveTurtle 2025-07-13 18:50:17 +03:00
parent fc3454cd9e
commit b16b9a1544

View File

@ -86,7 +86,7 @@ GraphicsPipeline::GraphicsPipeline(
}; };
const vk::PipelineVertexInputStateCreateInfo vertex_input_info = { const vk::PipelineVertexInputStateCreateInfo vertex_input_info = {
.pNext = &divisor_state, .pNext = divisors.empty() ? nullptr : &divisor_state,
.vertexBindingDescriptionCount = static_cast<u32>(vertex_bindings.size()), .vertexBindingDescriptionCount = static_cast<u32>(vertex_bindings.size()),
.pVertexBindingDescriptions = vertex_bindings.data(), .pVertexBindingDescriptions = vertex_bindings.data(),
.vertexAttributeDescriptionCount = static_cast<u32>(vertex_attributes.size()), .vertexAttributeDescriptionCount = static_cast<u32>(vertex_attributes.size()),
@ -323,6 +323,7 @@ void GraphicsPipeline::GetVertexInputs(
} }
const auto& vs_info = GetStage(Shader::LogicalStage::Vertex); const auto& vs_info = GetStage(Shader::LogicalStage::Vertex);
for (const auto& attrib : fetch_shader->attributes) { for (const auto& attrib : fetch_shader->attributes) {
const auto step_rate = attrib.GetStepRate();
const auto& buffer = attrib.GetSharp(vs_info); const auto& buffer = attrib.GetSharp(vs_info);
attributes.push_back(Attribute{ attributes.push_back(Attribute{
.location = attrib.semantic, .location = attrib.semantic,
@ -333,17 +334,15 @@ void GraphicsPipeline::GetVertexInputs(
bindings.push_back(Binding{ bindings.push_back(Binding{
.binding = attrib.semantic, .binding = attrib.semantic,
.stride = buffer.GetStride(), .stride = buffer.GetStride(),
.inputRate = attrib.GetStepRate() == InstanceIdType::None .inputRate = step_rate == InstanceIdType::None ? vk::VertexInputRate::eVertex
? vk::VertexInputRate::eVertex : vk::VertexInputRate::eInstance,
: vk::VertexInputRate::eInstance,
}); });
const u32 divisor = const u32 divisor = step_rate == InstanceIdType::OverStepRate0
attrib.GetStepRate() == InstanceIdType::OverStepRate0 ? step_rate_0
? step_rate_0 : (step_rate == InstanceIdType::OverStepRate1 ? step_rate_1 : 1);
: (attrib.GetStepRate() == InstanceIdType::OverStepRate1 ? step_rate_1 : 1);
if constexpr (std::is_same_v<Binding, vk::VertexInputBindingDescription2EXT>) { if constexpr (std::is_same_v<Binding, vk::VertexInputBindingDescription2EXT>) {
bindings.back().divisor = divisor; bindings.back().divisor = divisor;
} else { } else if (step_rate != InstanceIdType::None) {
divisors.push_back(vk::VertexInputBindingDivisorDescriptionEXT{ divisors.push_back(vk::VertexInputBindingDivisorDescriptionEXT{
.binding = attrib.semantic, .binding = attrib.semantic,
.divisor = divisor, .divisor = divisor,