You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-20 14:45:44 +00:00
Add some important profiling hooks.
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include "core/config/project_settings.h"
|
||||
#include "core/math/transform_interpolator.h"
|
||||
#include "core/object/worker_thread_pool.h"
|
||||
#include "core/profiling/profiling.h"
|
||||
#include "renderer_canvas_cull.h"
|
||||
#include "renderer_scene_cull.h"
|
||||
#include "rendering_server_globals.h"
|
||||
@@ -733,6 +734,7 @@ void RendererViewport::_draw_viewport(Viewport *p_viewport) {
|
||||
}
|
||||
|
||||
void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
GodotProfileZoneGroupedFirst(_profile_zone, "prepare viewports");
|
||||
timestamp_vp_map.clear();
|
||||
|
||||
#ifndef XR_DISABLED
|
||||
@@ -750,6 +752,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
}
|
||||
|
||||
if (sorted_active_viewports_dirty) {
|
||||
GodotProfileZoneGrouped(_profile_zone, "_sort_active_viewports");
|
||||
sorted_active_viewports = _sort_active_viewports();
|
||||
sorted_active_viewports_dirty = false;
|
||||
}
|
||||
@@ -758,11 +761,12 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
//draw viewports
|
||||
RENDER_TIMESTAMP("> Render Viewports");
|
||||
|
||||
GodotProfileZoneGrouped(_profile_zone, "render viewports");
|
||||
|
||||
//determine what is visible
|
||||
draw_viewports_pass++;
|
||||
|
||||
for (int i = sorted_active_viewports.size() - 1; i >= 0; i--) { //to compute parent dependency, must go in reverse draw order
|
||||
|
||||
Viewport *vp = sorted_active_viewports[i];
|
||||
|
||||
if (vp->update_mode == RS::VIEWPORT_UPDATE_DISABLED) {
|
||||
@@ -821,6 +825,9 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
int draw_calls_used = 0;
|
||||
|
||||
for (int i = 0; i < sorted_active_viewports.size(); i++) {
|
||||
// TODO Somehow print the index
|
||||
GodotProfileZone("render viewport");
|
||||
|
||||
Viewport *vp = sorted_active_viewports[i];
|
||||
|
||||
if (vp->last_pass != draw_viewports_pass) {
|
||||
@@ -925,6 +932,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
vertices_drawn += vp->render_info.info[RS::VIEWPORT_RENDER_INFO_TYPE_CANVAS][RS::VIEWPORT_RENDER_INFO_PRIMITIVES_IN_FRAME];
|
||||
draw_calls_used += vp->render_info.info[RS::VIEWPORT_RENDER_INFO_TYPE_CANVAS][RS::VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME];
|
||||
}
|
||||
|
||||
RSG::scene->set_debug_draw_mode(RS::VIEWPORT_DEBUG_DRAW_DISABLED);
|
||||
|
||||
total_objects_drawn = objects_drawn;
|
||||
@@ -933,6 +941,7 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
|
||||
RENDER_TIMESTAMP("< Render Viewports");
|
||||
|
||||
GodotProfileZoneGrouped(_profile_zone, "rasterizer->blit_render_targets_to_screen");
|
||||
if (p_swap_buffers && !blit_to_screen_list.is_empty()) {
|
||||
for (const KeyValue<int, Vector<BlitToScreen>> &E : blit_to_screen_list) {
|
||||
RSG::rasterizer->blit_render_targets_to_screen(E.key, E.value.ptr(), E.value.size());
|
||||
|
||||
Reference in New Issue
Block a user