@@ -764,12 +764,12 @@ namespace nbl::ext::imgui
764
764
multiAllocParams.byteSizes [MDI::EBC_VERTEX_BUFFERS] += commandList->VtxBuffer .Size * sizeof (ImDrawVert);
765
765
}
766
766
767
- // calculate upper bound byte size limit for mdi buffer with alignments taken into account
767
+ // calculate upper bound byte size limit for mdi buffer
768
768
const auto mdiBufferByteSize = [&byteSizes = multiAllocParams.byteSizes , &alignments = multiAllocParams.alignments ]() -> size_t
769
769
{
770
770
auto requestedByteSize = std::reduce (std::begin (byteSizes), std::end (byteSizes));
771
771
auto maxAlignment = *std::max_element (std::begin (alignments), std::end (alignments));
772
- auto padding = requestedByteSize % maxAlignment;
772
+ auto padding = requestedByteSize % maxAlignment; // okay I don't need it at all but lets add a few bytes
773
773
774
774
return requestedByteSize + padding;
775
775
}();
@@ -784,6 +784,18 @@ namespace nbl::ext::imgui
784
784
if (!ok)
785
785
{
786
786
logger->log (" Could not multi alloc mdi buffer!" , system::ILogger::ELL_ERROR);
787
+
788
+ auto callback = [&](const std::string_view section, const MDI::MULTI_ALLOC_PARAMS::COMPOSE_T::value_type offset)
789
+ {
790
+ std::string value = offset == MDI::MULTI_ALLOC_PARAMS::COMPOSE_T::invalid_value ? " invalid_value" : std::to_string (offset);
791
+ logger->log (" %s offset = %s" , system::ILogger::ELL_ERROR, section.data (), value.c_str ());
792
+ };
793
+
794
+ callback (" MDI::EBC_DRAW_INDIRECT_STRUCTURES" , multiAllocParams.offsets [MDI::EBC_DRAW_INDIRECT_STRUCTURES]);
795
+ callback (" MDI::EBC_ELEMENT_STRUCTURES" , multiAllocParams.offsets [MDI::EBC_ELEMENT_STRUCTURES]);
796
+ callback (" MDI::EBC_INDEX_BUFFERS" , multiAllocParams.offsets [MDI::EBC_INDEX_BUFFERS]);
797
+ callback (" MDI::EBC_VERTEX_BUFFERS" , multiAllocParams.offsets [MDI::EBC_VERTEX_BUFFERS]);
798
+
787
799
exit (0x45 ); // TODO: handle overflows, unallocatedSize tells how much is missing
788
800
}
789
801
}
0 commit comments