From fd8bec44abcd2758cacd910e499357156e2248b8 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Wed, 25 May 2022 22:52:53 +0300 Subject: [PATCH] Compute & log max primitive count in ui painter --- libs/ui/source/painter_impl.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libs/ui/source/painter_impl.cpp b/libs/ui/source/painter_impl.cpp index 39fe3063..39d8b932 100644 --- a/libs/ui/source/painter_impl.cpp +++ b/libs/ui/source/painter_impl.cpp @@ -185,6 +185,7 @@ void main() std::vector> batches; std::size_t max_batch_count = 0; + std::size_t max_primitive_count = 0; template Batch & batch(Batch && n) @@ -224,6 +225,7 @@ void main() painter_impl::~painter_impl() { log::debug() << "UI painter max batch count: " << impl().max_batch_count; + log::debug() << "UI painter max primitive count: " << impl().max_primitive_count; } void painter_impl::draw_rect(geom::box const & rect, gfx::color_rgba const & color) @@ -388,14 +390,21 @@ void main() gl::ActiveTexture(gl::TEXTURE0); + std::size_t primitive_count = 0; + auto batch_visitor = util::overload( [&](colored_batch const & b){ + primitive_count += b.indices.size() / 3; + impl().colored_program.bind(); impl().colored_mesh.load(b.vertices, b.indices, gl::TRIANGLES); impl().colored_mesh.draw(); }, [&](textured_batch const & b){ if (!b.texture) return; + + primitive_count += b.indices.size() / 3; + gfx::program & program = (b.mode == ui::painter::color_mode::mix) ? impl().textured_mix_program : impl().textured_multiply_program; program.bind(); program["u_texture_size"] = geom::cast(b.texture->size()); @@ -437,6 +446,8 @@ void main() impl().max_batch_count = std::max(impl().max_batch_count, impl().batches.size()); + impl().max_primitive_count = std::max(impl().max_primitive_count, primitive_count); + impl().depth = 0; impl().batches.clear(); impl().stencil_level = 0;