mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-05 19:31:04 +00:00
Add support for Tracy profiler (#15113)
This commit is contained in:
parent
6f23de41fb
commit
4aec4fbe6f
19 changed files with 379 additions and 4 deletions
|
@ -35,6 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "version.h"
|
||||
#include "renderingengine.h"
|
||||
#include "network/networkexceptions.h"
|
||||
#include "util/tracy_wrapper.h"
|
||||
#include <IGUISpriteBank.h>
|
||||
#include <ICameraSceneNode.h>
|
||||
#include <unordered_map>
|
||||
|
@ -544,15 +545,19 @@ void ClientLauncher::main_menu(MainMenuData *menudata)
|
|||
video::IVideoDriver *driver = m_rendering_engine->get_video_driver();
|
||||
|
||||
infostream << "Waiting for other menus" << std::endl;
|
||||
auto framemarker = FrameMarker("ClientLauncher::main_menu()-wait-frame").started();
|
||||
while (m_rendering_engine->run() && !*kill) {
|
||||
if (!isMenuActive())
|
||||
break;
|
||||
driver->beginScene(true, true, video::SColor(255, 128, 128, 128));
|
||||
m_rendering_engine->get_gui_env()->drawAll();
|
||||
driver->endScene();
|
||||
framemarker.end();
|
||||
// On some computers framerate doesn't seem to be automatically limited
|
||||
sleep_ms(25);
|
||||
framemarker.start();
|
||||
}
|
||||
framemarker.end();
|
||||
infostream << "Waited for other menus" << std::endl;
|
||||
|
||||
auto *cur_control = m_rendering_engine->get_raw_device()->getCursorControl();
|
||||
|
|
|
@ -31,6 +31,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "settings.h"
|
||||
#include "camera.h" // CameraModes
|
||||
#include "util/basic_macros.h"
|
||||
#include "util/tracy_wrapper.h"
|
||||
#include "client/renderingengine.h"
|
||||
|
||||
#include <queue>
|
||||
|
@ -714,6 +715,8 @@ void ClientMap::touchMapBlocks()
|
|||
|
||||
void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
|
||||
{
|
||||
ZoneScoped;
|
||||
|
||||
bool is_transparent_pass = pass == scene::ESNRP_TRANSPARENT;
|
||||
|
||||
std::string prefix;
|
||||
|
|
|
@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "util/basic_macros.h"
|
||||
#include "util/numeric.h"
|
||||
#include "util/directiontables.h"
|
||||
#include "util/tracy_wrapper.h"
|
||||
#include "mapblock_mesh.h"
|
||||
#include "settings.h"
|
||||
#include "nodedef.h"
|
||||
|
@ -1750,6 +1751,8 @@ void MapblockMeshGenerator::drawNode()
|
|||
|
||||
void MapblockMeshGenerator::generate()
|
||||
{
|
||||
ZoneScoped;
|
||||
|
||||
for (cur_node.p.Z = 0; cur_node.p.Z < data->side_length; cur_node.p.Z++)
|
||||
for (cur_node.p.Y = 0; cur_node.p.Y < data->side_length; cur_node.p.Y++)
|
||||
for (cur_node.p.X = 0; cur_node.p.X < data->side_length; cur_node.p.X++) {
|
||||
|
|
|
@ -79,6 +79,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "hud.h"
|
||||
#include "clientdynamicinfo.h"
|
||||
#include <IAnimatedMeshSceneNode.h>
|
||||
#include "util/tracy_wrapper.h"
|
||||
|
||||
#if USE_SOUND
|
||||
#include "client/sound/sound_openal.h"
|
||||
|
@ -1140,6 +1141,8 @@ bool Game::startup(bool *kill,
|
|||
|
||||
void Game::run()
|
||||
{
|
||||
ZoneScoped;
|
||||
|
||||
ProfilerGraph graph;
|
||||
RunStats stats = {};
|
||||
CameraOrientation cam_view_target = {};
|
||||
|
@ -1167,15 +1170,21 @@ void Game::run()
|
|||
const bool initial_window_maximized = !g_settings->getBool("fullscreen") &&
|
||||
g_settings->getBool("window_maximized");
|
||||
|
||||
auto framemarker = FrameMarker("Game::run()-frame").started();
|
||||
|
||||
while (m_rendering_engine->run()
|
||||
&& !(*kill || g_gamecallback->shutdown_requested
|
||||
|| (server && server->isShutdownRequested()))) {
|
||||
|
||||
framemarker.end();
|
||||
|
||||
// Calculate dtime =
|
||||
// m_rendering_engine->run() from this iteration
|
||||
// + Sleep time until the wanted FPS are reached
|
||||
draw_times.limit(device, &dtime, g_menumgr.pausesGame());
|
||||
|
||||
framemarker.start();
|
||||
|
||||
const auto current_dynamic_info = ClientDynamicInfo::getCurrent();
|
||||
if (!current_dynamic_info.equal(client_display_info)) {
|
||||
client_display_info = current_dynamic_info;
|
||||
|
@ -1232,6 +1241,8 @@ void Game::run()
|
|||
}
|
||||
}
|
||||
|
||||
framemarker.end();
|
||||
|
||||
RenderingEngine::autosaveScreensizeAndCo(initial_screen_size, initial_window_maximized);
|
||||
}
|
||||
|
||||
|
@ -1671,9 +1682,13 @@ bool Game::connectToServer(const GameStartData &start_data,
|
|||
|
||||
fps_control.reset();
|
||||
|
||||
auto framemarker = FrameMarker("Game::connectToServer()-frame").started();
|
||||
|
||||
while (m_rendering_engine->run()) {
|
||||
|
||||
framemarker.end();
|
||||
fps_control.limit(device, &dtime);
|
||||
framemarker.start();
|
||||
|
||||
// Update client and server
|
||||
step(dtime);
|
||||
|
@ -1719,6 +1734,7 @@ bool Game::connectToServer(const GameStartData &start_data,
|
|||
// Update status
|
||||
showOverlayMessage(N_("Connecting to server..."), dtime, 20);
|
||||
}
|
||||
framemarker.end();
|
||||
} catch (con::PeerNotFoundException &e) {
|
||||
warningstream << "This should not happen. Please report a bug." << std::endl;
|
||||
return false;
|
||||
|
@ -1736,9 +1752,11 @@ bool Game::getServerContent(bool *aborted)
|
|||
|
||||
fps_control.reset();
|
||||
|
||||
auto framemarker = FrameMarker("Game::getServerContent()-frame").started();
|
||||
while (m_rendering_engine->run()) {
|
||||
|
||||
framemarker.end();
|
||||
fps_control.limit(device, &dtime);
|
||||
framemarker.start();
|
||||
|
||||
// Update client and server
|
||||
step(dtime);
|
||||
|
@ -1804,6 +1822,7 @@ bool Game::getServerContent(bool *aborted)
|
|||
texture_src, dtime, progress);
|
||||
}
|
||||
}
|
||||
framemarker.end();
|
||||
|
||||
*aborted = true;
|
||||
infostream << "Connect aborted [device]" << std::endl;
|
||||
|
@ -2773,6 +2792,8 @@ void Game::updatePauseState()
|
|||
|
||||
inline void Game::step(f32 dtime)
|
||||
{
|
||||
ZoneScoped;
|
||||
|
||||
if (server) {
|
||||
float fps_max = (!device->isWindowFocused() || g_menumgr.pausesGame()) ?
|
||||
g_settings->getFloat("fps_max_unfocused") :
|
||||
|
@ -4052,6 +4073,7 @@ void Game::handleDigging(const PointedThing &pointed, const v3s16 &nodepos,
|
|||
void Game::updateFrame(ProfilerGraph *graph, RunStats *stats, f32 dtime,
|
||||
const CameraOrientation &cam)
|
||||
{
|
||||
ZoneScoped;
|
||||
TimeTaker tt_update("Game::updateFrame()");
|
||||
LocalPlayer *player = client->getEnv().getLocalPlayer();
|
||||
|
||||
|
@ -4311,6 +4333,8 @@ void Game::updateShadows()
|
|||
|
||||
void Game::drawScene(ProfilerGraph *graph, RunStats *stats)
|
||||
{
|
||||
ZoneScoped;
|
||||
|
||||
const video::SColor fog_color = this->sky->getFogColor();
|
||||
const video::SColor sky_color = this->sky->getSkyColor();
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "minimap.h"
|
||||
#include "content_mapblock.h"
|
||||
#include "util/directiontables.h"
|
||||
#include "util/tracy_wrapper.h"
|
||||
#include "client/meshgen/collector.h"
|
||||
#include "client/renderingengine.h"
|
||||
#include <array>
|
||||
|
@ -611,6 +612,8 @@ MapBlockMesh::MapBlockMesh(Client *client, MeshMakeData *data, v3s16 camera_offs
|
|||
m_last_crack(-1),
|
||||
m_last_daynight_ratio((u32) -1)
|
||||
{
|
||||
ZoneScoped;
|
||||
|
||||
for (auto &m : m_mesh)
|
||||
m = new scene::SMesh();
|
||||
m_enable_shaders = data->m_use_shaders;
|
||||
|
|
|
@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#include "sound_singleton.h"
|
||||
#include "util/numeric.h" // myrand()
|
||||
#include "util/tracy_wrapper.h"
|
||||
#include "filesys.h"
|
||||
#include "porting.h"
|
||||
|
||||
|
@ -501,6 +502,8 @@ void *OpenALSoundManager::run()
|
|||
|
||||
u64 t_step_start = porting::getTimeMs();
|
||||
while (true) {
|
||||
auto framemarker = FrameMarker("OpenALSoundManager::run()-frame").started();
|
||||
|
||||
auto get_time_since_last_step = [&] {
|
||||
return (f32)(porting::getTimeMs() - t_step_start);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue