Latest microprofiler in headless mode.
This commit is contained in:
parent
4a7eccf5dc
commit
7629c0f4d2
|
@ -89,7 +89,7 @@ LRESULT WGLControl::WndProc(HWND hWnd, UINT message, WPARAM wParam,
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(benvanik): profiler present.
|
// TODO(benvanik): profiler present.
|
||||||
// Profiler::Present();
|
Profiler::Present();
|
||||||
|
|
||||||
// Hacky swap timer.
|
// Hacky swap timer.
|
||||||
static int swap_count = 0;
|
static int swap_count = 0;
|
||||||
|
|
|
@ -7,10 +7,17 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MICRO_PROFILE_IMPL
|
#define MICROPROFILE_IMPL
|
||||||
#define MICROPROFILE_USE_THREAD_NAME_CALLBACK 1
|
#define MICROPROFILE_USE_THREAD_NAME_CALLBACK 1
|
||||||
|
#define MICROPROFILE_PRINTF PLOGI
|
||||||
|
#include <microprofile/microprofile.h>
|
||||||
|
|
||||||
#include <xenia/profiling.h>
|
#include <xenia/profiling.h>
|
||||||
|
|
||||||
|
#if XE_OPTION_PROFILING_UI
|
||||||
|
#include <microprofile/microprofileui.h>
|
||||||
|
#endif // XE_OPTION_PROFILING_UI
|
||||||
|
|
||||||
namespace xe {
|
namespace xe {
|
||||||
|
|
||||||
std::unique_ptr<ProfilerDisplay> Profiler::display_ = nullptr;
|
std::unique_ptr<ProfilerDisplay> Profiler::display_ = nullptr;
|
||||||
|
@ -18,11 +25,19 @@ std::unique_ptr<ProfilerDisplay> Profiler::display_ = nullptr;
|
||||||
#if XE_OPTION_PROFILING
|
#if XE_OPTION_PROFILING
|
||||||
|
|
||||||
void Profiler::Initialize() {
|
void Profiler::Initialize() {
|
||||||
MicroProfileInit();
|
MicroProfileSetForceEnable(true);
|
||||||
|
MicroProfileSetEnableAllGroups(true);
|
||||||
|
MicroProfileSetForceMetaCounters(true);
|
||||||
|
#if XE_OPTION_PROFILING_UI
|
||||||
|
MicroProfileInitUI();
|
||||||
MicroProfileSetDisplayMode(1);
|
MicroProfileSetDisplayMode(1);
|
||||||
|
#endif // XE_OPTION_PROFILING_UI
|
||||||
}
|
}
|
||||||
|
|
||||||
void Profiler::Dump() { MicroProfileDumpTimers(); }
|
void Profiler::Dump() {
|
||||||
|
MicroProfileDumpHtml("profile.html");
|
||||||
|
MicroProfileDumpHtmlToFile();
|
||||||
|
}
|
||||||
|
|
||||||
void Profiler::Shutdown() {
|
void Profiler::Shutdown() {
|
||||||
display_.reset();
|
display_.reset();
|
||||||
|
@ -44,28 +59,34 @@ void Profiler::ThreadExit() { MicroProfileOnThreadExit(); }
|
||||||
bool Profiler::OnKeyDown(int key_code) {
|
bool Profiler::OnKeyDown(int key_code) {
|
||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
|
||||||
switch (key_code) {
|
switch (key_code) {
|
||||||
case VK_TAB:
|
|
||||||
MicroProfileToggleDisplayMode();
|
|
||||||
return true;
|
|
||||||
case VK_OEM_3: // `
|
case VK_OEM_3: // `
|
||||||
MicroProfileTogglePause();
|
MicroProfileTogglePause();
|
||||||
return true;
|
return true;
|
||||||
|
#if XE_OPTION_PROFILING_UI
|
||||||
|
case VK_TAB:
|
||||||
|
MicroProfileToggleDisplayMode();
|
||||||
|
return true;
|
||||||
case 0x31: // 1
|
case 0x31: // 1
|
||||||
MicroProfileModKey(1);
|
MicroProfileModKey(1);
|
||||||
return true;
|
return true;
|
||||||
|
#endif // XE_OPTION_PROFILING_UI
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Profiler::OnKeyUp(int key_code) {
|
bool Profiler::OnKeyUp(int key_code) {
|
||||||
switch (key_code) {
|
switch (key_code) {
|
||||||
|
#if XE_OPTION_PROFILING_UI
|
||||||
case 0x31: // 1
|
case 0x31: // 1
|
||||||
MicroProfileModKey(0);
|
MicroProfileModKey(0);
|
||||||
return true;
|
return true;
|
||||||
|
#endif // XE_OPTION_PROFILING_UI
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if XE_OPTION_PROFILING_UI
|
||||||
|
|
||||||
void Profiler::OnMouseDown(bool left_button, bool right_button) {
|
void Profiler::OnMouseDown(bool left_button, bool right_button) {
|
||||||
MicroProfileMouseButton(left_button, right_button);
|
MicroProfileMouseButton(left_button, right_button);
|
||||||
}
|
}
|
||||||
|
@ -78,19 +99,48 @@ void Profiler::OnMouseWheel(int x, int y, int dy) {
|
||||||
MicroProfileMousePosition(x, y, dy);
|
MicroProfileMousePosition(x, y, dy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void Profiler::OnMouseDown(bool left_button, bool right_button) {}
|
||||||
|
|
||||||
|
void Profiler::OnMouseUp() {}
|
||||||
|
|
||||||
|
void Profiler::OnMouseMove(int x, int y) {}
|
||||||
|
|
||||||
|
void Profiler::OnMouseWheel(int x, int y, int dy) {}
|
||||||
|
|
||||||
|
#endif // XE_OPTION_PROFILING_UI
|
||||||
|
|
||||||
void Profiler::set_display(std::unique_ptr<ProfilerDisplay> display) {
|
void Profiler::set_display(std::unique_ptr<ProfilerDisplay> display) {
|
||||||
display_ = std::move(display);
|
display_ = std::move(display);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Profiler::Present() {
|
void Profiler::Present() {
|
||||||
MicroProfileFlip();
|
MicroProfileFlip();
|
||||||
|
#if XE_OPTION_PROFILING_UI
|
||||||
if (!display_) {
|
if (!display_) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
float left = 0.f;
|
||||||
|
float right = display_->width();
|
||||||
|
float bottom = display_->height();
|
||||||
|
float top = 0.f;
|
||||||
|
float near = -1.f;
|
||||||
|
float far = 1.f;
|
||||||
|
float projection[16] = {0};
|
||||||
|
projection[0] = 2.0f / (right - left);
|
||||||
|
projection[5] = 2.0f / (top - bottom);
|
||||||
|
projection[10] = -2.0f / (far - near);
|
||||||
|
projection[12] = -(right + left) / (right - left);
|
||||||
|
projection[13] = -(top + bottom) / (top - bottom);
|
||||||
|
projection[14] = -(far + near) / (far - near);
|
||||||
|
projection[15] = 1.f;
|
||||||
display_->Begin();
|
display_->Begin();
|
||||||
|
MicroProfileBeginDraw(display_->width(), display_->height(), projection);
|
||||||
MicroProfileDraw(display_->width(), display_->height());
|
MicroProfileDraw(display_->width(), display_->height());
|
||||||
|
MicroProfileEndDraw();
|
||||||
display_->End();
|
display_->End();
|
||||||
|
#endif // XE_OPTION_PROFILING_UI
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -124,6 +174,8 @@ uint64_t MicroProfileTicksPerSecondGpu() { return 0; }
|
||||||
|
|
||||||
const char* MicroProfileGetThreadName() { return "TODO: get thread name!"; }
|
const char* MicroProfileGetThreadName() { return "TODO: get thread name!"; }
|
||||||
|
|
||||||
|
#if XE_OPTION_PROFILING_UI
|
||||||
|
|
||||||
void MicroProfileDrawBox(int nX, int nY, int nX1, int nY1, uint32_t nColor,
|
void MicroProfileDrawBox(int nX, int nY, int nX1, int nY1, uint32_t nColor,
|
||||||
MicroProfileBoxType type) {
|
MicroProfileBoxType type) {
|
||||||
auto display = xe::Profiler::display();
|
auto display = xe::Profiler::display();
|
||||||
|
@ -152,4 +204,6 @@ void MicroProfileDrawText(int nX, int nY, uint32_t nColor, const char* pText,
|
||||||
display->DrawText(nX, nY, nColor, pText, nLen);
|
display->DrawText(nX, nY, nColor, pText, nLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // XE_OPTION_PROFILING_UI
|
||||||
|
|
||||||
#endif // XE_OPTION_PROFILING
|
#endif // XE_OPTION_PROFILING
|
||||||
|
|
|
@ -14,8 +14,9 @@
|
||||||
|
|
||||||
#include <poly/string.h>
|
#include <poly/string.h>
|
||||||
|
|
||||||
#if XE_LIKE_WIN32
|
|
||||||
#define XE_OPTION_PROFILING 1
|
#define XE_OPTION_PROFILING 1
|
||||||
|
#if XE_LIKE_WIN32
|
||||||
|
//#define XE_OPTION_PROFILING_UI 1
|
||||||
#endif // XE_LIKE_WIN32
|
#endif // XE_LIKE_WIN32
|
||||||
|
|
||||||
#if XE_OPTION_PROFILING
|
#if XE_OPTION_PROFILING
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue