From ff44a460d66270d42db2191f2202c6ec9384de62 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 27 Oct 2014 11:40:52 -0700 Subject: [PATCH] Add NSIGHT Profiliing capability --- interface/CMakeLists.txt | 12 +++++++++--- interface/src/gpu/Batch.h | 17 +++++++++++++++++ interface/src/renderer/Model.cpp | 9 +++++++-- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index 9c4eeff65b..194558e580 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -226,11 +226,17 @@ else (APPLE) if (WIN32) find_package(GLEW REQUIRED) include_directories(${GLEW_INCLUDE_DIRS}) - + # we're using static GLEW, so define GLEW_STATIC add_definitions(-DGLEW_STATIC) - - target_link_libraries(${TARGET_NAME} "${GLEW_LIBRARIES}" wsock32.lib opengl32.lib) + + find_package(NSIGHT) + if (NSIGHT_FOUND) + include_directories(${NSIGHT_INCLUDE_DIRS}) + add_definitions(-DNSIGHT_FOUND) + endif () + + target_link_libraries(${TARGET_NAME} "${GLEW_LIBRARIES}" "${NSIGHT_LIBRARIES}" wsock32.lib opengl32.lib) endif() endif (APPLE) diff --git a/interface/src/gpu/Batch.h b/interface/src/gpu/Batch.h index ad5246f9b6..cceb41be76 100644 --- a/interface/src/gpu/Batch.h +++ b/interface/src/gpu/Batch.h @@ -16,6 +16,23 @@ #include +#if defined(NSIGHT_FOUND) + #include "nvToolsExt.h" + class ProfileRange { + public: + ProfileRange(const char *name) { + nvtxRangePush(name); + } + ~ProfileRange() { + nvtxRangePop(); + } + }; + + #define PROFILE_SCOPE(name) ProfileRange profileRangeThis(name); +#else + #define PROFILE_SCOPE(name) +#endif + namespace gpu { class Batch; diff --git a/interface/src/renderer/Model.cpp b/interface/src/renderer/Model.cpp index 131c600dc1..c2893c79ce 100644 --- a/interface/src/renderer/Model.cpp +++ b/interface/src/renderer/Model.cpp @@ -395,6 +395,7 @@ void Model::setJointStates(QVector states) { } bool Model::render(float alpha, RenderMode mode, RenderArgs* args) { + PROFILE_SCOPE(__FUNCTION__); // render the attachments foreach (Model* attachment, _attachments) { attachment->render(alpha, mode); @@ -560,8 +561,11 @@ bool Model::render(float alpha, RenderMode mode, RenderArgs* args) { GLBATCH(glBindTexture)(GL_TEXTURE_2D, 0); // Render! - ::gpu::backend::renderBatch(batch); - batch.clear(); + { + PROFILE_SCOPE("render Batch"); + ::gpu::backend::renderBatch(batch); + batch.clear(); + } // restore all the default material settings Application::getInstance()->setupWorldLight(); @@ -1551,6 +1555,7 @@ void Model::segregateMeshGroups() { int Model::renderMeshes(gpu::Batch& batch, RenderMode mode, bool translucent, float alphaThreshold, bool hasTangents, bool hasSpecular, bool isSkinned, RenderArgs* args) { + PROFILE_SCOPE(__FUNCTION__); bool dontCullOutOfViewMeshParts = Menu::getInstance()->isOptionChecked(MenuOption::DontCullOutOfViewMeshParts); bool cullTooSmallMeshParts = !Menu::getInstance()->isOptionChecked(MenuOption::DontCullTooSmallMeshParts); bool dontReduceMaterialSwitches = Menu::getInstance()->isOptionChecked(MenuOption::DontReduceMaterialSwitches);