chrono_batch_render/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
560 / 572
97.9%
Branches:
466 / 640
72.8%
Functions:
83 / 83, 5 excl
100.0%

scene/tables/storage.h
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 #pragma once
3
4 #include <algorithm>
5 #include <cstdint>
6 #include <cstring>
7 #include <string>
8 #include <vector>
9
10 #include "chrono_batch_render/device/buffer.h"
11 #include "chrono_batch_render/device/device.h"
12 #include "chrono_batch_render/device/queue.h"
13 #include "chrono_batch_render/device/ref.h"
14
15 namespace chrono::batch_render {
16
17 template <class T> class RecordTable {
18 public:
19 4028 explicit RecordTable(std::string label) : m_label(std::move(label)) {}
20
21 975 void Assign(uint32_t rows, const T& value) {
22 975 m_rows.assign(rows, value);
23 975 m_dirty.clear();
24 975 m_grown = true;
25 975 }
26
27 36510 void Reserve(uint32_t rows) {
28
21/22
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Reserve(unsigned int):
✓ Branch 0 taken 314 times.
✓ Branch 1 taken 864 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Reserve(unsigned int):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 5 times.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Reserve(unsigned int):
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 1219 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Reserve(unsigned int):
✓ Branch 0 taken 450 times.
✓ Branch 1 taken 885 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Reserve(unsigned int):
✓ Branch 0 taken 327 times.
✓ Branch 1 taken 952 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Reserve(unsigned int):
✓ Branch 0 taken 459 times.
✓ Branch 1 taken 947 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Reserve(unsigned int):
✓ Branch 0 taken 1011 times.
✓ Branch 1 taken 10993 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Reserve(unsigned int):
✓ Branch 0 taken 277 times.
✓ Branch 1 taken 664 times.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Reserve(unsigned int):
✓ Branch 0 taken 349 times.
✓ Branch 1 taken 856 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Reserve(unsigned int):
✓ Branch 0 taken 392 times.
✓ Branch 1 taken 764 times.
chrono::batch_render::RecordTable<unsigned int>::Reserve(unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 14758 times.
36510 if (rows > m_rows.size()) {
29
18/22
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Reserve(unsigned int):
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 308 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Reserve(unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Reserve(unsigned int):
✓ Branch 0 taken 17 times.
✓ Branch 1 taken 5 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Reserve(unsigned int):
✓ Branch 0 taken 7 times.
✓ Branch 1 taken 443 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Reserve(unsigned int):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 325 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Reserve(unsigned int):
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 453 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Reserve(unsigned int):
✓ Branch 0 taken 493 times.
✓ Branch 1 taken 518 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Reserve(unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 277 times.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Reserve(unsigned int):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 347 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Reserve(unsigned int):
✓ Branch 0 taken 48 times.
✓ Branch 1 taken 344 times.
chrono::batch_render::RecordTable<unsigned int>::Reserve(unsigned int):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
4184 m_rows.resize(std::max<size_t>(rows, m_rows.size() * 2), T{});
30 3603 m_grown = true;
31 }
32 36510 }
33
34 26642 bool Set(uint32_t row, const T& value) {
35 26642 Reserve(row + 1);
36
21/22
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Set(unsigned int, chrono::batch_render::CurvesRecord const&):
✓ Branch 0 taken 79 times.
✓ Branch 1 taken 9 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Set(unsigned int, chrono::batch_render::Float4 const&):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 time.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Set(unsigned int, chrono::batch_render::MaterialRecord const&):
✓ Branch 0 taken 94 times.
✓ Branch 1 taken 75 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Set(unsigned int, chrono::batch_render::MeshRecord const&):
✓ Branch 0 taken 147 times.
✓ Branch 1 taken 4 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Set(unsigned int, chrono::batch_render::PointsRecord const&):
✓ Branch 0 taken 131 times.
✓ Branch 1 taken 36 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Set(unsigned int, chrono::batch_render::ProductRecord const&):
✓ Branch 0 taken 220 times.
✓ Branch 1 taken 184 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Set(unsigned int, chrono::batch_render::RadioRecord const&):
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 11660 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Set(unsigned int, chrono::batch_render::SubsetRecord const&):
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Set(unsigned int, chrono::batch_render::TangentRecord const&):
✓ Branch 0 taken 36 times.
✓ Branch 1 taken 51 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Set(unsigned int, chrono::batch_render::TextureRecord const&):
✓ Branch 0 taken 25 times.
✓ Branch 1 taken 129 times.
chrono::batch_render::RecordTable<unsigned int>::Set(unsigned int, unsigned int const&):
✓ Branch 0 taken 7110 times.
✓ Branch 1 taken 6630 times.
26642 if (std::memcmp(&m_rows[row], &value, sizeof(T)) == 0) {
37 return false;
38 }
39 7863 m_rows[row] = value;
40 7863 m_dirty.push_back(row);
41 7863 return true;
42 }
43
44 763 const T& Row(uint32_t row) const {
45 static const T kEmpty{};
46
43/86
<unknown function 19>:
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
<unknown function 44>:
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✓ Branch 12 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 time.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 time.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 time.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 time.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::RecordTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Set(unsigned int, chrono::batch_render::CurvesRecord const&):
✓ Branch 0 taken 86 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Assign(unsigned int, chrono::batch_render::MaterialRecord const&):
✓ Branch 0 taken 89 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 298 times.
✗ Branch 3 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::RecordTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >):
✓ Branch 0 taken 31 times.
✗ Branch 1 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::RecordTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 20 times.
✗ Branch 13 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Set(unsigned int, chrono::batch_render::PointsRecord const&):
✓ Branch 0 taken 157 times.
✗ Branch 1 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Set(unsigned int, chrono::batch_render::TangentRecord const&):
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
chrono::batch_render::RecordTable<unsigned int>::Assign(unsigned int, unsigned int const&):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
762 return row < m_rows.size() ? m_rows[row] : kEmpty;
47 }
48
49 4789 uint32_t Rows() const {
50
8/8
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Assign(unsigned int, chrono::batch_render::MaterialRecord const&):
✓ Branch 0 taken 210 times.
✓ Branch 1 taken 15 times.
✓ Branch 2 taken 3969 times.
✓ Branch 3 taken 334 times.
chrono::batch_render::RecordTable<unsigned int>::Assign(unsigned int, unsigned int const&):
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
chrono::batch_render::RecordTable<unsigned int>::Set(unsigned int, unsigned int const&):
✓ Branch 0 taken 258 times.
✓ Branch 1 taken 1 time.
4789 return uint32_t(m_rows.size());
51 }
52
53 5611 bool Upload(device::Device& device) {
54
22/22
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 267 times.
✓ Branch 2 taken 278 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 2 times.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 203 times.
✓ Branch 2 taken 333 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 272 times.
✓ Branch 2 taken 320 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 277 times.
✓ Branch 2 taken 279 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 226 times.
✓ Branch 2 taken 275 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 41 times.
✓ Branch 2 taken 293 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 192 times.
✓ Branch 2 taken 274 times.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 278 times.
✓ Branch 2 taken 281 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 190 times.
✓ Branch 2 taken 311 times.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 354 times.
✓ Branch 2 taken 664 times.
5611 Reserve(1);
55 5611 device::Queue& queue = device.GetQueue();
56
33/44
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 267 times.
✓ Branch 1 taken 278 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 267 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 time.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 203 times.
✓ Branch 1 taken 333 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 203 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 272 times.
✓ Branch 1 taken 320 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 272 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 277 times.
✓ Branch 1 taken 279 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 277 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 226 times.
✓ Branch 1 taken 275 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 226 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 41 times.
✓ Branch 1 taken 293 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 41 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 192 times.
✓ Branch 1 taken 274 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 192 times.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 278 times.
✓ Branch 1 taken 281 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 278 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 190 times.
✓ Branch 1 taken 311 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 190 times.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 354 times.
✓ Branch 1 taken 664 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 354 times.
5611 const bool replaced = m_grown || !m_buffer;
57 if (replaced) {
58
28/33
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 278 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 278 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 1 time.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 333 times.
✓ Branch 3 taken 59 times.
✓ Branch 4 taken 274 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 320 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 320 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 279 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 279 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 275 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 274 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 293 times.
✓ Branch 3 taken 19 times.
✓ Branch 4 taken 274 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 274 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274 times.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 281 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 281 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 311 times.
✓ Branch 3 taken 30 times.
✓ Branch 4 taken 281 times.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 664 times.
✓ Branch 3 taken 19 times.
✓ Branch 4 taken 645 times.
3439 m_buffer = device.CreateBuffer({.bytes = m_rows.size() * sizeof(T), .label = m_label});
59 3310 queue.Write(*m_buffer, m_rows.data());
60
13/22
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 267 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 203 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 272 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 277 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 226 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 41 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 192 times.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 278 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 181 times.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 352 times.
2301 } else if (m_dirty.size() * 4 > m_rows.size()) {
61 11 queue.Write(*m_buffer, m_rows.data());
62 } else {
63 2290 std::ranges::sort(m_dirty);
64 2290 m_dirty.erase(std::ranges::unique(m_dirty).begin(), m_dirty.end());
65
21/22
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 267 times.
chrono::batch_render::RecordTable<chrono::batch_render::Float4>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Upload(chrono::batch_render::device::Device&):
✗ Branch 0 not taken.
✓ Branch 1 taken 203 times.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 272 times.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 83 times.
✓ Branch 1 taken 277 times.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 35 times.
✓ Branch 1 taken 226 times.
chrono::batch_render::RecordTable<chrono::batch_render::RadioRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 41 times.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 192 times.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 278 times.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 181 times.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 196 times.
✓ Branch 1 taken 352 times.
2653 for (const uint32_t row : m_dirty) {
66 363 queue.Write(m_buffer->Slice(uint64_t(row) * sizeof(T), sizeof(T)), &m_rows[row]);
67 }
68 }
69 5611 m_dirty.clear();
70 5611 m_grown = false;
71 5611 return replaced;
72 3310 }
73
74 const Ref<device::Buffer>& Buffer() const {
75
11/21
chrono::batch_render::RecordTable<chrono::batch_render::CurvesRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 545 times.
✗ Branch 2 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Assign(unsigned int, chrono::batch_render::MaterialRecord const&):
✓ Branch 0 taken 226 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 536 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 536 times.
✗ Branch 5 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::MeshRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 592 times.
✗ Branch 2 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::PointsRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 556 times.
✗ Branch 2 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::ProductRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 501 times.
✗ Branch 1 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::SubsetRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 466 times.
✗ Branch 1 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::TangentRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 559 times.
✗ Branch 2 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::TextureRecord>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 501 times.
✗ Branch 2 not taken.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 791 times.
14309 return m_buffer;
76 }
77
78 private:
79 std::string m_label;
80 std::vector<T> m_rows;
81 std::vector<uint32_t> m_dirty;
82 Ref<device::Buffer> m_buffer;
83 bool m_grown = false;
84 };
85
86 template <class T> class DeviceTable {
87 public:
88 8416 explicit DeviceTable(std::string label, device::BufferUsage usage = device::BufferUsage::None)
89 8416 : m_label(std::move(label)), m_usage(usage) {}
90
91 6528 void Allocate(device::Device& device, uint32_t rows) {
92
33/44
chrono::batch_render::DeviceTable<chrono::batch_render::BoundableBox>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 322 times.
chrono::batch_render::DeviceTable<chrono::batch_render::BvhBox>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 278 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CameraRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 131 times.
✓ Branch 1 taken 143 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CheckerRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 229 times.
✓ Branch 1 taken 45 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CollectionRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 228 times.
✓ Branch 1 taken 47 times.
chrono::batch_render::DeviceTable<chrono::batch_render::DetectorRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 131 times.
✓ Branch 1 taken 143 times.
chrono::batch_render::DeviceTable<chrono::batch_render::DistortionRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 131 times.
✓ Branch 1 taken 143 times.
chrono::batch_render::DeviceTable<chrono::batch_render::Float4>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
chrono::batch_render::DeviceTable<chrono::batch_render::FollowState>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 13 times.
chrono::batch_render::DeviceTable<chrono::batch_render::InstanceRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 311 times.
chrono::batch_render::DeviceTable<chrono::batch_render::LidarRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 259 times.
✓ Branch 1 taken 15 times.
chrono::batch_render::DeviceTable<chrono::batch_render::LightShapeRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 228 times.
✓ Branch 1 taken 47 times.
chrono::batch_render::DeviceTable<chrono::batch_render::MotionRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 317 times.
✓ Branch 1 taken 8 times.
chrono::batch_render::DeviceTable<chrono::batch_render::RadarRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 262 times.
✓ Branch 1 taken 13 times.
chrono::batch_render::DeviceTable<chrono::batch_render::RenderOrigin>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 311 times.
chrono::batch_render::DeviceTable<chrono::batch_render::ResolvedImageable>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 331 times.
chrono::batch_render::DeviceTable<chrono::batch_render::ShapeRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 311 times.
chrono::batch_render::DeviceTable<chrono::batch_render::SlotHit>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 311 times.
chrono::batch_render::DeviceTable<chrono::batch_render::SurfaceRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 300 times.
chrono::batch_render::DeviceTable<chrono::batch_render::WorldTransform>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 636 times.
chrono::batch_render::DeviceTable<float>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 322 times.
chrono::batch_render::DeviceTable<unsigned int>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 554 times.
6528 m_rows = std::max(rows, 1u);
93
60/66
chrono::batch_render::DeviceTable<chrono::batch_render::BoundableBox>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 322 times.
✓ Branch 3 taken 48 times.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::BvhBox>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 278 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CameraRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 274 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CheckerRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 274 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CollectionRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 275 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::DetectorRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 274 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::DistortionRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 274 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::Float4>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 1 time.
chrono::batch_render::DeviceTable<chrono::batch_render::FollowState>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 13 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 13 times.
chrono::batch_render::DeviceTable<chrono::batch_render::InstanceRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 311 times.
✓ Branch 3 taken 11 times.
✓ Branch 4 taken 300 times.
chrono::batch_render::DeviceTable<chrono::batch_render::LidarRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 274 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::LightShapeRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 275 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::MotionRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 325 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 322 times.
chrono::batch_render::DeviceTable<chrono::batch_render::RadarRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 275 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<chrono::batch_render::RenderOrigin>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 311 times.
✓ Branch 3 taken 11 times.
✓ Branch 4 taken 300 times.
chrono::batch_render::DeviceTable<chrono::batch_render::ResolvedImageable>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 331 times.
✓ Branch 3 taken 9 times.
✓ Branch 4 taken 322 times.
chrono::batch_render::DeviceTable<chrono::batch_render::ShapeRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 311 times.
✓ Branch 3 taken 11 times.
✓ Branch 4 taken 300 times.
chrono::batch_render::DeviceTable<chrono::batch_render::SlotHit>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 311 times.
✓ Branch 3 taken 11 times.
✓ Branch 4 taken 300 times.
chrono::batch_render::DeviceTable<chrono::batch_render::SurfaceRecord>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 300 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 292 times.
chrono::batch_render::DeviceTable<chrono::batch_render::WorldTransform>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 642 times.
✓ Branch 3 taken 20 times.
✓ Branch 4 taken 622 times.
chrono::batch_render::DeviceTable<float>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 322 times.
✓ Branch 3 taken 48 times.
✓ Branch 4 taken 274 times.
chrono::batch_render::DeviceTable<unsigned int>::Allocate(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 1 taken 554 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 548 times.
6722 m_buffer = device.CreateBuffer(
94 6528 {.bytes = uint64_t(m_rows) * sizeof(T), .usage = m_usage, .label = m_label});
95 13056 }
96
97 7692 bool Reserve(device::Device& device, uint32_t rows) {
98
54/60
chrono::batch_render::DeviceTable<chrono::batch_render::BoundableBox>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 188 times.
✓ Branch 1 taken 274 times.
✓ Branch 2 taken 48 times.
✓ Branch 3 taken 140 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CameraRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 224 times.
✓ Branch 1 taken 274 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 224 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CheckerRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 262 times.
✓ Branch 1 taken 274 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 262 times.
chrono::batch_render::DeviceTable<chrono::batch_render::CollectionRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 417 times.
✓ Branch 1 taken 274 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 416 times.
chrono::batch_render::DeviceTable<chrono::batch_render::DetectorRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 224 times.
✓ Branch 1 taken 274 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 224 times.
chrono::batch_render::DeviceTable<chrono::batch_render::DistortionRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 224 times.
✓ Branch 1 taken 274 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 224 times.
chrono::batch_render::DeviceTable<chrono::batch_render::Float4>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 1 time.
chrono::batch_render::DeviceTable<chrono::batch_render::FollowState>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 24 times.
✓ Branch 1 taken 13 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 24 times.
chrono::batch_render::DeviceTable<chrono::batch_render::LidarRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 224 times.
✓ Branch 1 taken 274 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 224 times.
chrono::batch_render::DeviceTable<chrono::batch_render::LightShapeRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 417 times.
✓ Branch 1 taken 274 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 416 times.
chrono::batch_render::DeviceTable<chrono::batch_render::MotionRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 486 times.
✓ Branch 1 taken 322 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 483 times.
chrono::batch_render::DeviceTable<chrono::batch_render::RadarRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 224 times.
✓ Branch 1 taken 274 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 223 times.
chrono::batch_render::DeviceTable<chrono::batch_render::SurfaceRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 357 times.
✓ Branch 1 taken 292 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 349 times.
chrono::batch_render::DeviceTable<float>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 262 times.
✓ Branch 1 taken 274 times.
✓ Branch 2 taken 48 times.
✓ Branch 3 taken 214 times.
chrono::batch_render::DeviceTable<unsigned int>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 241 times.
✓ Branch 1 taken 548 times.
✓ Branch 2 taken 6 times.
✓ Branch 3 taken 235 times.
7692 if (m_buffer && rows <= m_rows) {
99 return false;
100 }
101 4033 Allocate(device, rows);
102 4033 return true;
103 }
104
105 2695 uint32_t Rows() const {
106
11/22
chrono::batch_render::DeviceTable<chrono::batch_render::BoundableBox>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 114 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 735 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 735 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 188 times.
✓ Branch 9 taken 274 times.
✓ Branch 10 taken 278 times.
✗ Branch 11 not taken.
chrono::batch_render::DeviceTable<chrono::batch_render::Float4>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 13 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 256 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 256 times.
✗ Branch 5 not taken.
2695 return m_buffer ? m_rows : 0;
107 }
108
109 26163 uint64_t Address() const {
110
46/92
<unknown function 109>:
✓ Branch 0 taken 53 times.
✗ Branch 1 not taken.
<unknown function 88>:
✓ Branch 0 taken 790 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 790 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 790 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 790 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 790 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 790 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 790 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 790 times.
✗ Branch 15 not taken.
<unknown function 91>:
✓ Branch 0 taken 691 times.
✓ Branch 0 taken 815 times.
✗ Branch 1 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 691 times.
✓ Branch 2 taken 815 times.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 691 times.
✓ Branch 4 taken 815 times.
✗ Branch 5 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 691 times.
✓ Branch 6 taken 498 times.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 498 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 498 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 498 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 498 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 498 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 498 times.
✗ Branch 19 not taken.
chrono::batch_render::DeviceTable<chrono::batch_render::BoundableBox>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 735 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 735 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 735 times.
✗ Branch 5 not taken.
chrono::batch_render::DeviceTable<chrono::batch_render::Float4>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
chrono::batch_render::DeviceTable<chrono::batch_render::SurfaceRecord>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 649 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 649 times.
✗ Branch 3 not taken.
chrono::batch_render::DeviceTable<unsigned int>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 0 taken 485 times.
✗ Branch 1 not taken.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Assign(unsigned int, chrono::batch_render::MaterialRecord const&):
✓ Branch 0 taken 369 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 536 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 536 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 536 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 536 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 536 times.
✗ Branch 11 not taken.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 0 taken 11 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 37 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 791 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 791 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 808 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 808 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 808 times.
✗ Branch 13 not taken.
11463 return m_buffer ? m_buffer->Address() : 0;
111 }
112
113 274 const Ref<device::Buffer>& Buffer() const {
114
23/32
<unknown function 113>:
✓ Branch 1 taken 49 times.
✓ Branch 4 taken 10 times.
<unknown function 114>:
✓ Branch 1 taken 1 time.
✓ Branch 1 taken 9 times.
✓ Branch 4 taken 9 times.
<unknown function 19>:
✓ Branch 1 taken 113 times.
✓ Branch 4 taken 100 times.
<unknown function 88>:
✓ Branch 6 taken 619 times.
✓ Branch 9 taken 158 times.
chrono::batch_render::DeviceTable<chrono::batch_render::BoundableBox>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 114 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 100 times.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
chrono::batch_render::DeviceTable<chrono::batch_render::Float4>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✓ Branch 2 taken 2 times.
✗ Branch 5 not taken.
chrono::batch_render::DeviceTable<unsigned int>::Reserve(chrono::batch_render::device::Device&, unsigned int):
✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 42 times.
chrono::batch_render::RecordTable<chrono::batch_render::MaterialRecord>::Assign(unsigned int, chrono::batch_render::MaterialRecord const&):
✓ Branch 1 taken 311 times.
✓ Branch 4 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 4 times.
✓ Branch 9 taken 4 times.
chrono::batch_render::RecordTable<unsigned int>::Upload(chrono::batch_render::device::Device&):
✓ Branch 1 taken 7 times.
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 230 times.
✓ Branch 9 taken 13 times.
✗ Branch 10 not taken.
10901 return m_buffer;
115 }
116
117 private:
118 std::string m_label;
119 device::BufferUsage m_usage;
120 Ref<device::Buffer> m_buffer;
121 uint32_t m_rows = 0;
122 };
123
124 }
125