diff --git a/src/modules/graphics/vulkan/Graphics.cpp b/src/modules/graphics/vulkan/Graphics.cpp index abe12ed1a..f1d77c9ad 100644 --- a/src/modules/graphics/vulkan/Graphics.cpp +++ b/src/modules/graphics/vulkan/Graphics.cpp @@ -2184,17 +2184,18 @@ void Graphics::createVulkanVertexFormat( { std::set usedBuffers; - auto allBits = vertexAttributes.enableBits; + auto enableBits = vertexAttributes.enableBits; + auto allBits = enableBits; bool usesColor = false; uint8_t highestBufferBinding = 0; - // fixme: change to loop like in opengl implementation ? - for (uint32_t i = 0; i < VertexAttributes::MAX; i++) + uint32_t i = 0; + while (allBits) { uint32 bit = 1u << i; - if (allBits & bit) + if (enableBits & bit) { if (i == ATTRIB_COLOR) usesColor = true; @@ -2225,6 +2226,9 @@ void Graphics::createVulkanVertexFormat( attributeDescriptions.push_back(attributeDescription); } + + i++; + allBits >>= 1; } if (!usesColor) diff --git a/src/modules/graphics/vulkan/Shader.cpp b/src/modules/graphics/vulkan/Shader.cpp index 19d6ac954..893a5abd6 100644 --- a/src/modules/graphics/vulkan/Shader.cpp +++ b/src/modules/graphics/vulkan/Shader.cpp @@ -355,6 +355,7 @@ void Shader::cmdPushDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBind }; for (const auto &builtin : builtinUniformTextures) + { if (builtinUniformInfo[builtin] != nullptr) { auto texture = dynamic_cast(builtinUniformInfo[builtin]->textures[0]); @@ -374,6 +375,7 @@ void Shader::cmdPushDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBind vkUpdateDescriptorSets(device, 1, &textureWrite, 0, nullptr); } + } vkCmdBindDescriptorSets(commandBuffer, bindPoint, pipelineLayout, 0, 1, ¤tDescriptorSet, 0, nullptr); @@ -765,7 +767,7 @@ void Shader::compileShaders() auto shaderResources = comp.get_shader_resources(active); comp.set_enabled_interface_variables(std::move(active)); - for (const auto &resource : shaderResources.uniform_buffers) + for (const auto &resource : shaderResources.uniform_buffers) { if (resource.name == "gl_DefaultUniformBlock") { @@ -1039,12 +1041,14 @@ void Shader::setVideoTextures(graphics::Texture *ytexture, graphics::Texture *cb static_assert(textures.size() == builtIns.size(), "expected number of textures to be the same"); for (size_t i = 0; i < textures.size(); i++) + { if (builtinUniformInfo[builtIns[i]] != nullptr) { textures[i]->retain(); builtinUniformInfo[builtIns[i]]->textures[0]->release(); builtinUniformInfo[builtIns[i]]->textures[0] = textures[i]; } + } } bool Shader::hasUniform(const std::string &name) const