Merge pull request #9736 from Kelebek1/dynamic_vertex_attribs
Remove fake vertex bindings when dynamic state is enabled
This commit is contained in:
commit
c5743d5499
|
@ -548,31 +548,7 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
|
||||||
static_vector<VkVertexInputBindingDescription, 32> vertex_bindings;
|
static_vector<VkVertexInputBindingDescription, 32> vertex_bindings;
|
||||||
static_vector<VkVertexInputBindingDivisorDescriptionEXT, 32> vertex_binding_divisors;
|
static_vector<VkVertexInputBindingDivisorDescriptionEXT, 32> vertex_binding_divisors;
|
||||||
static_vector<VkVertexInputAttributeDescription, 32> vertex_attributes;
|
static_vector<VkVertexInputAttributeDescription, 32> vertex_attributes;
|
||||||
if (key.state.dynamic_vertex_input) {
|
if (!key.state.dynamic_vertex_input) {
|
||||||
const size_t num_vertex_arrays = std::min(
|
|
||||||
key.state.attributes.size(), static_cast<size_t>(device.GetMaxVertexInputBindings()));
|
|
||||||
for (size_t index = 0; index < num_vertex_arrays; ++index) {
|
|
||||||
const u32 type = key.state.DynamicAttributeType(index);
|
|
||||||
if (!stage_infos[0].loads.Generic(index) || type == 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
vertex_attributes.push_back({
|
|
||||||
.location = static_cast<u32>(index),
|
|
||||||
.binding = 0,
|
|
||||||
.format = type == 1 ? VK_FORMAT_R32_SFLOAT
|
|
||||||
: type == 2 ? VK_FORMAT_R32_SINT
|
|
||||||
: VK_FORMAT_R32_UINT,
|
|
||||||
.offset = 0,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (!vertex_attributes.empty()) {
|
|
||||||
vertex_bindings.push_back({
|
|
||||||
.binding = 0,
|
|
||||||
.stride = 4,
|
|
||||||
.inputRate = VK_VERTEX_INPUT_RATE_VERTEX,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
const size_t num_vertex_arrays = std::min(
|
const size_t num_vertex_arrays = std::min(
|
||||||
Maxwell::NumVertexArrays, static_cast<size_t>(device.GetMaxVertexInputBindings()));
|
Maxwell::NumVertexArrays, static_cast<size_t>(device.GetMaxVertexInputBindings()));
|
||||||
for (size_t index = 0; index < num_vertex_arrays; ++index) {
|
for (size_t index = 0; index < num_vertex_arrays; ++index) {
|
||||||
|
|
Loading…
Reference in a new issue