[PATCH 2/2] retrace: use GREMEDY_string_marker to emit call no's

José Fonseca jose.r.fonseca at gmail.com
Fri Aug 14 05:50:10 PDT 2015


It's a good idea.

But I think that instead of GL_GREMEDY_string_marker it would be better to
use GL_KHR_debug and

  glDebugMessageInsert(GL_DEBUG_SOURCE_THIRD_PARTY,...)

as KHR_debug already foresees this sort of usage (from the spec):

    "A message's source identifies the origin of the message and can either
    describe components of the GL, the window system, third-party external
    sources such as external debuggers, or even the application itself."

We could also use an unique message id (like `APTR`) so the OpenGL driver
can treat this message specially (e.g., use it to annotate its command
lists, etc.)

This also should only be done when retrace::debug option is enabled (in
particular, nothing of the sort should be attempted when benchmarking.)

Jose

On Mon, Aug 10, 2015 at 11:14 PM, Rob Clark <robdclark at gmail.com> wrote:

> If the extension is present, use it to log call numbers for draw
> commands.
>
> Signed-off-by: Rob Clark <robdclark at gmail.com>
> ---
>  retrace/glretrace.hpp      |  2 ++
>  retrace/glretrace_main.cpp | 15 +++++++++++++++
>  retrace/retrace.hpp        |  2 ++
>  retrace/retrace_main.cpp   |  4 ++++
>  4 files changed, 23 insertions(+)
>
> diff --git a/retrace/glretrace.hpp b/retrace/glretrace.hpp
> index b172f85..ebd5996 100644
> --- a/retrace/glretrace.hpp
> +++ b/retrace/glretrace.hpp
> @@ -55,6 +55,8 @@ struct Context {
>
>      bool used;
>
> +    bool GREMEDY_string_marker;
> +
>      inline glprofile::Profile
>      profile(void) const {
>          return wsContext->profile;
> diff --git a/retrace/glretrace_main.cpp b/retrace/glretrace_main.cpp
> index 71dde8e..513aca3 100755
> --- a/retrace/glretrace_main.cpp
> +++ b/retrace/glretrace_main.cpp
> @@ -348,6 +348,7 @@ initContext() {
>      supportsElapsed     =
> currentContext->hasExtension("GL_EXT_timer_query") || supportsTimestamp;
>      supportsOcclusion   =
> currentProfile.versionGreaterOrEqual(glprofile::API_GL, 1, 5);
>      supportsARBShaderObjects =
> currentContext->hasExtension("GL_ARB_shader_objects");
> +    currentContext->GREMEDY_string_marker =
> currentContext->hasExtension("GL_GREMEDY_string_marker");
>
>  #ifdef __APPLE__
>      // GL_TIMESTAMP doesn't work on Apple.  GL_TIME_ELAPSED still does
> however.
> @@ -620,6 +621,20 @@ public:
>      dumpState(StateWriter &writer) {
>          glstate::dumpCurrentContext(writer);
>      }
> +
> +    void
> +    log(trace::Call &call) {
> +        glretrace::Context *currentContext =
> glretrace::getCurrentContext();
> +        if (currentContext && currentContext->GREMEDY_string_marker) {
> +            char *str;
> +            int len = asprintf(&str, "%d:%s", call.no, call.name());
> +            if (len > 0) {
> +                glStringMarkerGREMEDY(len, str);
> +                free(str);
> +            }
> +        }
> +    }
> +
>  };
>
>  static GLDumper glDumper;
> diff --git a/retrace/retrace.hpp b/retrace/retrace.hpp
> index c2b06e3..c624b27 100644
> --- a/retrace/retrace.hpp
> +++ b/retrace/retrace.hpp
> @@ -217,6 +217,8 @@ public:
>
>      virtual void
>      dumpState(StateWriter &) = 0;
> +
> +    virtual void log(trace::Call &call) {}
>  };
>
>
> diff --git a/retrace/retrace_main.cpp b/retrace/retrace_main.cpp
> index 48651cd..356aca3 100644
> --- a/retrace/retrace_main.cpp
> +++ b/retrace/retrace_main.cpp
> @@ -232,6 +232,10 @@ retraceCall(trace::Call *call) {
>          }
>      }
>
> +    if (call->flags & trace::CALL_FLAG_RENDER) {
> +       dumper->log(*call);
> +    }
> +
>      retracer.retrace(*call);
>
>      if (doSnapshot) {
> --
> 2.4.3
>
> _______________________________________________
> apitrace mailing list
> apitrace at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/apitrace
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/apitrace/attachments/20150814/658b8e7d/attachment-0001.html>


More information about the apitrace mailing list