@@ -1003,13 +1003,11 @@ namespace nbl::ext::imgui
1003
1003
for (uint32_t i = 0 ; i < drawData->CmdListsCount ; i++)
1004
1004
{
1005
1005
const ImDrawList* commandList = drawData->CmdLists [i];
1006
-
1007
- // calculate upper bound byte size for each mdi's content
1008
1006
params.bytesToFill [MDI::EBC_DRAW_INDIRECT_STRUCTURES] += commandList->CmdBuffer .Size * sizeof (VkDrawIndexedIndirectCommand);
1009
1007
params.bytesToFill [MDI::EBC_ELEMENT_STRUCTURES] += commandList->CmdBuffer .Size * sizeof (PerObjectData);
1010
- params.bytesToFill [MDI::EBC_INDEX_BUFFERS] += commandList->IdxBuffer .Size * sizeof (ImDrawIdx);
1011
- params.bytesToFill [MDI::EBC_VERTEX_BUFFERS] += commandList->VtxBuffer .Size * sizeof (ImDrawVert);
1012
1008
}
1009
+ params.bytesToFill [MDI::EBC_VERTEX_BUFFERS] = drawData->TotalVtxCount * sizeof (ImDrawVert);
1010
+ params.bytesToFill [MDI::EBC_INDEX_BUFFERS] = drawData->TotalIdxCount * sizeof (ImDrawIdx);
1013
1011
1014
1012
// calculate upper bound byte size limit for mdi buffer
1015
1013
params.totalByteSizeRequest = std::reduce (std::begin (params.bytesToFill ), std::end (params.bytesToFill ));
@@ -1033,7 +1031,6 @@ namespace nbl::ext::imgui
1033
1031
struct
1034
1032
{
1035
1033
typename MDI::ALLOCATOR_TRAITS_T::size_type offset = MDI::ALLOCATOR_TRAITS_T::allocator_type::invalid_address,
1036
- alignment = MDI_MAX_ALIGNMENT,
1037
1034
multiAllocationSize = {};
1038
1035
} requestState;
1039
1036
@@ -1052,7 +1049,7 @@ namespace nbl::ext::imgui
1052
1049
const auto leftSizeToUpload = mdiParams.totalByteSizeRequest - uploadedSize,
1053
1050
maxTotalFreeBlockSizeToAlloc = m_mdi.allocator .max_size ();
1054
1051
1055
- MDI::ALLOCATOR_TRAITS_T::multi_alloc_addr (m_mdi.allocator , 1u , &requestState.offset , &requestState.multiAllocationSize , &requestState. alignment );
1052
+ MDI::ALLOCATOR_TRAITS_T::multi_alloc_addr (m_mdi.allocator , 1u , &requestState.offset , &requestState.multiAllocationSize , &MDI_MAX_ALIGNMENT );
1056
1053
1057
1054
if (requestState.offset == MDI::ALLOCATOR_TRAITS_T::allocator_type::invalid_address)
1058
1055
{
@@ -1089,15 +1086,15 @@ namespace nbl::ext::imgui
1089
1086
1090
1087
if constexpr (type == MDI::EBC_INDEX_BUFFERS)
1091
1088
{
1092
- const auto localInputBlockOffset = cmd_list->IdxBuffer .Size * sizeof (ImDrawIdx);
1093
- ::memcpy (data, cmd_list->IdxBuffer.Data, localInputBlockOffset );
1094
- data += localInputBlockOffset ;
1089
+ const auto blockStrideToFill = cmd_list->IdxBuffer .Size * sizeof (ImDrawIdx);
1090
+ ::memcpy (data, cmd_list->IdxBuffer.Data, blockStrideToFill );
1091
+ data += blockStrideToFill ;
1095
1092
}
1096
1093
else if (type == MDI::EBC_VERTEX_BUFFERS)
1097
1094
{
1098
- const auto localInputBlockOffset = cmd_list->VtxBuffer .Size * sizeof (ImDrawVert);
1099
- ::memcpy (data, cmd_list->VtxBuffer.Data, localInputBlockOffset );
1100
- data += localInputBlockOffset ;
1095
+ const auto blockStrideToFill = cmd_list->VtxBuffer .Size * sizeof (ImDrawVert);
1096
+ ::memcpy (data, cmd_list->VtxBuffer.Data, blockStrideToFill );
1097
+ data += blockStrideToFill ;
1101
1098
}
1102
1099
}
1103
1100
0 commit comments