Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/intern/draw_manager_profiling.c')
-rw-r--r--source/blender/draw/intern/draw_manager_profiling.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/source/blender/draw/intern/draw_manager_profiling.c b/source/blender/draw/intern/draw_manager_profiling.c
index 57887c11c02..98a6b2bff00 100644
--- a/source/blender/draw/intern/draw_manager_profiling.c
+++ b/source/blender/draw/intern/draw_manager_profiling.c
@@ -32,6 +32,7 @@
#include "draw_manager.h"
+#include "GPU_debug.h"
#include "GPU_texture.h"
#include "UI_resources.h"
@@ -44,8 +45,8 @@
#define GPU_TIMER_FALLOFF 0.1
typedef struct DRWTimer {
- GLuint query[2];
- GLuint64 time_average;
+ uint32_t query[2];
+ uint64_t time_average;
char name[MAX_TIMER_NAME];
int lvl; /* Hierarchy level for nested timer. */
bool is_query; /* Does this timer actually perform queries or is it just a group. */
@@ -64,10 +65,10 @@ static struct DRWTimerPool {
void DRW_stats_free(void)
{
if (DTP.timers != NULL) {
- for (int i = 0; i < DTP.timer_count; i++) {
- DRWTimer *timer = &DTP.timers[i];
- glDeleteQueries(2, timer->query);
- }
+ // for (int i = 0; i < DTP.timer_count; i++) {
+ // DRWTimer *timer = &DTP.timers[i];
+ // glDeleteQueries(2, timer->query);
+ // }
MEM_freeN(DTP.timers);
DTP.timers = NULL;
}
@@ -117,12 +118,12 @@ static void drw_stats_timer_start_ex(const char *name, const bool is_query)
BLI_assert(!DTP.is_querying);
if (timer->is_query) {
if (timer->query[0] == 0) {
- glGenQueries(1, timer->query);
+ // glGenQueries(1, timer->query);
}
- glFinish();
+ // glFinish();
/* Issue query for the next frame */
- glBeginQuery(GL_TIME_ELAPSED, timer->query[0]);
+ // glBeginQuery(GL_TIME_ELAPSED, timer->query[0]);
DTP.is_querying = true;
}
}
@@ -133,10 +134,13 @@ static void drw_stats_timer_start_ex(const char *name, const bool is_query)
void DRW_stats_group_start(const char *name)
{
drw_stats_timer_start_ex(name, false);
+
+ GPU_debug_group_begin(name);
}
void DRW_stats_group_end(void)
{
+ GPU_debug_group_end();
if (DTP.is_recording) {
BLI_assert(!DTP.is_querying);
DTP.end_increment++;
@@ -146,15 +150,18 @@ void DRW_stats_group_end(void)
/* NOTE: Only call this when no sub timer will be called. */
void DRW_stats_query_start(const char *name)
{
+ GPU_debug_group_begin(name);
+ drw_stats_timer_start_ex(name, false);
drw_stats_timer_start_ex(name, true);
}
void DRW_stats_query_end(void)
{
+ GPU_debug_group_end();
if (DTP.is_recording) {
DTP.end_increment++;
BLI_assert(DTP.is_querying);
- glEndQuery(GL_TIME_ELAPSED);
+ // glEndQuery(GL_TIME_ELAPSED);
DTP.is_querying = false;
}
}
@@ -167,19 +174,19 @@ void DRW_stats_reset(void)
"You forgot a DRW_stats_group/query_start somewhere!");
if (DTP.is_recording) {
- GLuint64 lvl_time[MAX_NESTED_TIMER] = {0};
+ uint64_t lvl_time[MAX_NESTED_TIMER] = {0};
/* Swap queries for the next frame and sum up each lvl time. */
for (int i = DTP.timer_increment - 1; i >= 0; i--) {
DRWTimer *timer = &DTP.timers[i];
- SWAP(GLuint, timer->query[0], timer->query[1]);
+ SWAP(uint32_t, timer->query[0], timer->query[1]);
BLI_assert(timer->lvl < MAX_NESTED_TIMER);
if (timer->is_query) {
- GLuint64 time;
+ uint64_t time = 0;
if (timer->query[0] != 0) {
- glGetQueryObjectui64v(timer->query[0], GL_QUERY_RESULT, &time);
+ // glGetQueryObjectui64v(timer->query[0], GL_QUERY_RESULT, &time);
}
else {
time = 1000000000; /* 1ms default */