pan/decode: Trace to stderr with PANDECODE_DUMP_FILE=stderr
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 30 Apr 2020 08:48:02 +0000 (10:48 +0200)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Fri, 1 May 2020 14:52:23 +0000 (16:52 +0200)
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4832>

src/panfrost/pandecode/common.c

index 2f2249efe955e82e11c32597988ba4288eb6d2fc..4b9dc58f26703c4e563fe4ffb770615ae8a079d3 100644 (file)
@@ -119,31 +119,33 @@ pointer_as_memory_reference(uint64_t ptr)
 static int pandecode_dump_frame_count = 0;
 
 static void
-pandecode_dump_file_open(void)
+pandecode_dump_file_open(bool force_stderr)
 {
         if (pandecode_dump_stream)
                 return;
 
-        char buffer[1024];
-
         /* This does a getenv every frame, so it is possible to use
          * setenv to change the base at runtime.
          */
         const char *dump_file_base = debug_get_option("PANDECODE_DUMP_FILE", "pandecode.dump");
-        snprintf(buffer, sizeof(buffer), "%s.%04d", dump_file_base, pandecode_dump_frame_count);
-
-        printf("pandecode: dump command stream to file %s\n", buffer);
-        pandecode_dump_stream = fopen(buffer, "w");
-
-        if (!pandecode_dump_stream)
-                fprintf(stderr,"pandecode: failed to open command stream log file %s\n",
-                        buffer);
+        if (force_stderr || !strcmp(dump_file_base, "stderr"))
+                pandecode_dump_stream = stderr;
+        else {
+                char buffer[1024];
+                snprintf(buffer, sizeof(buffer), "%s.%04d", dump_file_base, pandecode_dump_frame_count);
+                printf("pandecode: dump command stream to file %s\n", buffer);
+                pandecode_dump_stream = fopen(buffer, "w");
+                if (!pandecode_dump_stream)
+                        fprintf(stderr,
+                                "pandecode: failed to open command stream log file %s\n",
+                                buffer);
+        }
 }
 
 static void
 pandecode_dump_file_close(void)
 {
-        if (pandecode_dump_stream) {
+        if (pandecode_dump_stream && pandecode_dump_stream != stderr) {
                 fclose(pandecode_dump_stream);
                 pandecode_dump_stream = NULL;
         }
@@ -153,11 +155,7 @@ void
 pandecode_initialize(bool to_stderr)
 {
         list_inithead(&mmaps.node);
-
-        if (to_stderr)
-                pandecode_dump_stream = stderr;
-        else
-                pandecode_dump_file_open();
+        pandecode_dump_file_open(to_stderr);
 }
 
 void
@@ -165,7 +163,7 @@ pandecode_next_frame(void)
 {
         pandecode_dump_file_close();
         pandecode_dump_frame_count++;
-        pandecode_dump_file_open();
+        pandecode_dump_file_open(false);
 }
 
 void