X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=cli%2Ftrace_analyzer.cpp;h=79f95579eb2626be39a3aa724542367147f2de04;hb=6f80233c1a7251df2edb1b9f93cee37f4fc152f7;hp=48153f02a50cdd831861dd7c064b0c2899368cd8;hpb=25fe524415ade86b96e5d260134fab7de587b227;p=apitrace diff --git a/cli/trace_analyzer.cpp b/cli/trace_analyzer.cpp index 48153f0..79f9557 100644 --- a/cli/trace_analyzer.cpp +++ b/cli/trace_analyzer.cpp @@ -162,7 +162,7 @@ TraceAnalyzer::consume(std::string resource) resources.erase(resource); for (call = calls.begin(); call != calls.end(); call++) { - required.insert(*call); + required.add(*call); } } @@ -271,12 +271,6 @@ TraceAnalyzer::callHasNoSideEffects(trace::Call *call, const char *name) return true; } - /* Similarly, swap-buffers calls don't have interesting side effects. */ - if (call->flags & trace::CALL_FLAG_SWAP_RENDERTARGET && - call->flags & trace::CALL_FLAG_END_FRAME) { - return true; - } - /* Not known as a no-side-effect call. Return false for more analysis. */ return false; } @@ -285,7 +279,7 @@ bool TraceAnalyzer::recordTextureSideEffects(trace::Call *call, const char *name) { if (strcmp(name, "glGenTextures") == 0) { - const trace::Array *textures = dynamic_cast(&call->arg(1)); + const trace::Array *textures = call->arg(1).toArray(); size_t i; GLuint texture; @@ -635,6 +629,13 @@ TraceAnalyzer::recordDrawingSideEffects(trace::Call *call, const char *name) return true; } + /* Though it's not flagged as a "RENDER" operation, we also want + * to trim swapbuffers calls when trimming drawing operations. */ + if (call->flags & trace::CALL_FLAG_SWAP_RENDERTARGET && + call->flags & trace::CALL_FLAG_END_FRAME) { + return true; + } + /* No known drawing-related side effects. Return false for more analysis. */ return false; } @@ -714,7 +715,7 @@ TraceAnalyzer::requireDependencies(trace::Call *call) consume("state"); } -TraceAnalyzer::TraceAnalyzer(TrimFlags trimFlagsOpt = -1): +TraceAnalyzer::TraceAnalyzer(TrimFlags trimFlagsOpt): transformFeedbackActive(false), framebufferObjectActive(false), insideBeginEnd(false), @@ -753,13 +754,13 @@ TraceAnalyzer::require(trace::Call *call) requireDependencies(call); /* Then insert this call itself. */ - required.insert(call->no); + required.add(call->no); } /* Return a set of all the required calls, (both those calls added * explicitly with require() and those implicitly depended * upon. */ -std::set * +trace::FastCallSet * TraceAnalyzer::get_required(void) { return &required;