X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fvertexsetup_backend.cpp;h=1ac823b55742559031c7dacd27b0ff1d98feda2e;hb=fcc065736e303088ef121c554318e0cc028a0666;hp=0d25181448caebe7ceb9ff14e4855f8daa4536a9;hpb=99ca354f18119f82f1adeca100cd665a8f640317;p=libs%2Fgl.git diff --git a/source/backends/vulkan/vertexsetup_backend.cpp b/source/backends/vulkan/vertexsetup_backend.cpp index 0d251814..1ac823b5 100644 --- a/source/backends/vulkan/vertexsetup_backend.cpp +++ b/source/backends/vulkan/vertexsetup_backend.cpp @@ -28,21 +28,21 @@ void VulkanVertexSetup::update(unsigned) const n_attribs += !is_padding(a); StructureBuilder sb(creation_info, 3); - VkPipelineVertexInputStateCreateInfo *&input_state = sb.add(); - VkVertexInputBindingDescription *&bindings = sb.add(n_bindings); - VkVertexInputAttributeDescription *&attribs = sb.add(n_attribs); + VkPipelineVertexInputStateCreateInfo *const &input_state = sb.add(); + VkVertexInputBindingDescription *const &bindings = sb.add(n_bindings); + VkVertexInputAttributeDescription *const &attribs = sb.add(n_attribs); bindings[0].binding = 0; bindings[0].stride = self.vertex_format.stride(); bindings[0].inputRate = VK_VERTEX_INPUT_RATE_VERTEX; - update_attributes(self.vertex_format, 0, attribs); + void *attrib_ptr = update_attributes(self.vertex_format, 0, attribs); if(!self.inst_format.empty()) { bindings[1].binding = 1; bindings[1].stride = self.inst_format.stride(); bindings[1].inputRate = VK_VERTEX_INPUT_RATE_INSTANCE; - update_attributes(self.inst_format, 1, attribs+self.vertex_format.size()); + update_attributes(self.inst_format, 1, attrib_ptr); } input_state->sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; @@ -61,7 +61,7 @@ void VulkanVertexSetup::update(unsigned) const } } -void VulkanVertexSetup::update_attributes(const VertexFormat &fmt, unsigned binding, void *buffer) const +void *VulkanVertexSetup::update_attributes(const VertexFormat &fmt, unsigned binding, void *buffer) const { VkVertexInputAttributeDescription *attrib = reinterpret_cast(buffer); unsigned offset = 0; @@ -77,6 +77,8 @@ void VulkanVertexSetup::update_attributes(const VertexFormat &fmt, unsigned bind } offset += get_attribute_size(a); } + + return attrib; } uint64_t VulkanVertexSetup::compute_hash() const