You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Organize render surface sorting key for optimizing API performance.
This commit is contained in:
@@ -35,6 +35,9 @@
|
||||
#define PRINT_RESOURCE_TRACKER_TOTAL 0
|
||||
#define PRINT_COMMAND_RECORDING 0
|
||||
|
||||
// Prints the total number of bytes used for draw lists in a frame.
|
||||
#define PRINT_DRAW_LIST_STATS 0
|
||||
|
||||
RenderingDeviceGraph::RenderingDeviceGraph() {
|
||||
driver_honors_barriers = false;
|
||||
driver_clears_with_copy_engine = false;
|
||||
@@ -835,7 +838,15 @@ void RenderingDeviceGraph::_get_draw_list_render_pass_and_framebuffer(const Reco
|
||||
r_framebuffer = it->value.framebuffer;
|
||||
}
|
||||
|
||||
#if PRINT_DRAW_LIST_STATS
|
||||
static uint32_t draw_list_total_size = 0;
|
||||
#endif
|
||||
|
||||
void RenderingDeviceGraph::_run_draw_list_command(RDD::CommandBufferID p_command_buffer, const uint8_t *p_instruction_data, uint32_t p_instruction_data_size) {
|
||||
#if PRINT_DRAW_LIST_STATS
|
||||
draw_list_total_size += p_instruction_data_size;
|
||||
#endif
|
||||
|
||||
uint32_t instruction_data_cursor = 0;
|
||||
while (instruction_data_cursor < p_instruction_data_size) {
|
||||
DEV_ASSERT((instruction_data_cursor + sizeof(DrawListInstruction)) <= p_instruction_data_size);
|
||||
@@ -2366,6 +2377,10 @@ void RenderingDeviceGraph::end(bool p_reorder_commands, bool p_full_barriers, RD
|
||||
workarounds_state.draw_list_found = false;
|
||||
}
|
||||
|
||||
#if PRINT_DRAW_LIST_STATS
|
||||
draw_list_total_size = 0;
|
||||
#endif
|
||||
|
||||
if (p_reorder_commands) {
|
||||
#if PRINT_RENDER_GRAPH
|
||||
print_line("BEFORE SORT");
|
||||
@@ -2416,6 +2431,9 @@ void RenderingDeviceGraph::end(bool p_reorder_commands, bool p_full_barriers, RD
|
||||
|
||||
_run_label_command_change(r_command_buffer, -1, -1, false, false, nullptr, 0, current_label_index, current_label_level);
|
||||
|
||||
#if PRINT_DRAW_LIST_STATS
|
||||
print_line(vformat("Draw list %d bytes", draw_list_total_size));
|
||||
#endif
|
||||
#if PRINT_COMMAND_RECORDING
|
||||
print_line(vformat("Recorded %d commands", command_count));
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user