mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
mesa: Track whether a performance monitor has ever ended.
If a monitor has ended, it means a result should eventually become available, pending some flushing. This is distinct from !m->Active; if a monitor has not been started, then m->Active == false and m->Ended == false. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
a6712f5109
commit
bde5e4a1e6
2 changed files with 13 additions and 1 deletions
|
|
@ -1848,8 +1848,16 @@ struct gl_perf_monitor_object
|
|||
{
|
||||
GLuint Name;
|
||||
|
||||
/** True if the monitor is currently active (Begin called but not End). */
|
||||
GLboolean Active;
|
||||
|
||||
/**
|
||||
* True if the monitor has ended.
|
||||
*
|
||||
* This is distinct from !Active because it may never have began.
|
||||
*/
|
||||
GLboolean Ended;
|
||||
|
||||
/**
|
||||
* A list of groups with currently active counters.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -359,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);
|
||||
|
|
@ -478,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)");
|
||||
|
|
@ -507,6 +510,7 @@ _mesa_EndPerfMonitorAMD(GLuint monitor)
|
|||
ctx->Driver.EndPerfMonitor(ctx, m);
|
||||
|
||||
m->Active = false;
|
||||
m->Ended = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue