Unravel Engine C++ Reference
Loading...
Searching...
No Matches
batch_collector.cpp
Go to the documentation of this file.
1
#include "
batch_collector.h
"
2
3
#include <algorithm>
4
#include <chrono>
5
#include <iomanip>
6
#include <sstream>
7
8
namespace
unravel
9
{
10
11
void
batch_stats::reset
()
12
{
13
total_batches
= 0;
14
total_instances
= 0;
15
draw_calls_saved
= 0;
16
collection_time_ms
= 0.0f;
17
preparation_time_ms
= 0.0f;
18
submission_time_ms
= 0.0f;
19
instance_buffer_memory_used
= 0;
20
average_batch_size
= 0.0f;
21
batching_efficiency
= 0.0f;
22
split_batches
= 0;
23
}
24
25
void
batch_stats::calculate_derived_stats
()
26
{
27
if
(
total_batches
> 0)
28
{
29
average_batch_size
=
static_cast<
float
>
(
total_instances
) /
static_cast<
float
>
(
total_batches
);
30
batching_efficiency
=
average_batch_size
;
31
}
32
else
33
{
34
average_batch_size
= 0.0f;
35
batching_efficiency
= 0.0f;
36
}
37
38
draw_calls_saved
= (
total_instances
>
total_batches
) ? (
total_instances
-
total_batches
) : 0;
39
}
40
41
auto
batch_stats::to_string
() const ->
std
::
string
42
{
43
std::ostringstream oss;
44
oss << std::fixed << std::setprecision(2);
45
oss <<
"batch_stats{"
;
46
oss <<
"batches="
<<
total_batches
;
47
oss <<
", instances="
<<
total_instances
;
48
oss <<
", saved_calls="
<<
draw_calls_saved
;
49
oss <<
", efficiency="
<<
batching_efficiency
;
50
oss <<
", avg_size="
<<
average_batch_size
;
51
oss <<
", collection_time="
<<
collection_time_ms
<<
"ms"
;
52
oss <<
", prep_time="
<<
preparation_time_ms
<<
"ms"
;
53
oss <<
", memory="
<< (
instance_buffer_memory_used
/ 1024) <<
"KB"
;
54
if
(
split_batches
> 0)
55
{
56
oss <<
", splits="
<<
split_batches
;
57
}
58
oss <<
"}"
;
59
return
oss.str();
60
}
61
62
template
class
batch_collector_t<batch_key>
;
63
template
class
batch_collector_t<shadow_batch_key>
;
64
65
}
// namespace unravel
batch_collector.h
unravel::batch_collector_t
Definition
batch_collector.h:70
std
Hash specialization for batch_key to enable use in std::unordered_map.
Definition
render_view_keys.h:37
unravel
Definition
crash.cpp:21
unravel::batch_stats::total_instances
uint32_t total_instances
Definition
batch_collector.h:16
unravel::batch_stats::split_batches
uint32_t split_batches
Definition
batch_collector.h:24
unravel::batch_stats::average_batch_size
float average_batch_size
Definition
batch_collector.h:22
unravel::batch_stats::batching_efficiency
float batching_efficiency
Definition
batch_collector.h:23
unravel::batch_stats::instance_buffer_memory_used
size_t instance_buffer_memory_used
Definition
batch_collector.h:21
unravel::batch_stats::preparation_time_ms
float preparation_time_ms
Definition
batch_collector.h:19
unravel::batch_stats::to_string
auto to_string() const -> std::string
Definition
batch_collector.cpp:41
unravel::batch_stats::calculate_derived_stats
void calculate_derived_stats()
Definition
batch_collector.cpp:25
unravel::batch_stats::draw_calls_saved
uint32_t draw_calls_saved
Definition
batch_collector.h:17
unravel::batch_stats::reset
void reset()
Definition
batch_collector.cpp:11
unravel::batch_stats::submission_time_ms
float submission_time_ms
Definition
batch_collector.h:20
unravel::batch_stats::total_batches
uint32_t total_batches
Definition
batch_collector.h:15
unravel::batch_stats::collection_time_ms
float collection_time_ms
Definition
batch_collector.h:18
engine
engine
rendering
batch_collector.cpp
Generated by
1.12.0