aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/main/performance_monitor.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-11-18 09:21:27 +0100
committermarha <marha@users.sourceforge.net>2013-11-18 09:21:27 +0100
commit7c20de6c7fb53ed404d4df0d975328318810ce01 (patch)
tree8f837042966482fd961444153eabbc46cb9141eb /mesalib/src/mesa/main/performance_monitor.c
parentaa095d69b3874eb179cb77f033109a7f8f351041 (diff)
downloadvcxsrv-7c20de6c7fb53ed404d4df0d975328318810ce01.tar.gz
vcxsrv-7c20de6c7fb53ed404d4df0d975328318810ce01.tar.bz2
vcxsrv-7c20de6c7fb53ed404d4df0d975328318810ce01.zip
libXext mesa xkeyboard-config pixman 18 nov 2013
xkeyboard-config commit 51ab5c95e48b2a040fc132bb5c1a5e8bbe86c8f4 libXext commit bb24f2970f2e425f4df90c9b73d078ad15a73fbb pixman commit f473fd1e7553a4e92a0d72bea360f05d005c9a88 mesa commit 2cfbf84dadc915b7075a3f1cbb569daf699d5ff0
Diffstat (limited to 'mesalib/src/mesa/main/performance_monitor.c')
-rw-r--r--mesalib/src/mesa/main/performance_monitor.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/mesalib/src/mesa/main/performance_monitor.c b/mesalib/src/mesa/main/performance_monitor.c
index 17cae5183..6491b4200 100644
--- a/mesalib/src/mesa/main/performance_monitor.c
+++ b/mesalib/src/mesa/main/performance_monitor.c
@@ -62,6 +62,10 @@ new_performance_monitor(struct gl_context *ctx, GLuint index)
if (m == NULL)
return NULL;
+ m->Name = index;
+
+ m->Active = false;
+
m->ActiveGroups =
rzalloc_array(NULL, unsigned, ctx->PerfMonitor.NumGroups);
@@ -355,8 +359,10 @@ _mesa_DeletePerfMonitorsAMD(GLsizei n, GLuint *monitors)
if (m) {
/* Give the driver a chance to stop the monitor if it's active. */
- if (m->Active)
+ if (m->Active) {
ctx->Driver.ResetPerfMonitor(ctx, m);
+ m->Ended = false;
+ }
_mesa_HashRemove(ctx->PerfMonitor.Monitors, monitors[i]);
ralloc_free(m->ActiveGroups);
@@ -474,6 +480,7 @@ _mesa_BeginPerfMonitorAMD(GLuint monitor)
*/
if (ctx->Driver.BeginPerfMonitor(ctx, m)) {
m->Active = true;
+ m->Ended = false;
} else {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBeginPerfMonitor(driver unable to begin monitoring)");
@@ -503,6 +510,7 @@ _mesa_EndPerfMonitorAMD(GLuint monitor)
ctx->Driver.EndPerfMonitor(ctx, m);
m->Active = false;
+ m->Ended = true;
}
/**
@@ -560,8 +568,12 @@ _mesa_GetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname,
return;
}
+ /* If the monitor has never ended, there is no result. */
+ bool result_available = m->Ended &&
+ ctx->Driver.IsPerfMonitorResultAvailable(ctx, m);
+
/* AMD appears to return 0 for all queries unless a result is available. */
- if (!ctx->Driver.IsPerfMonitorResultAvailable(ctx, m)) {
+ if (!result_available) {
*data = 0;
if (bytesWritten != NULL)
*bytesWritten = sizeof(GLuint);