[Mesa-dev] [PATCH 5/7] svga: log the process command line to the vmware.log file
Brian Paul
brianp at vmware.com
Tue May 23 23:23:32 UTC 2017
This is useful for Piglit when thousands of tests are run and we want
to determine which test triggered a device error.
v2: only log command line info if the new SVGA_EXTRA_LOGGING env var is set
Reviewed-by: Charmaine Lee <charmainel at vmware.com>
---
docs/envvars.html | 2 ++
src/gallium/drivers/svga/svga_screen.c | 16 ++++++++++++++++
2 files changed, 18 insertions(+)
diff --git a/docs/envvars.html b/docs/envvars.html
index e075c20..a970a66 100644
--- a/docs/envvars.html
+++ b/docs/envvars.html
@@ -304,6 +304,8 @@ See src/mesa/state_tracker/st_debug.c for other options.
(will often result in incorrect rendering).
<li>SVGA_DEBUG - for dumping shaders, constant buffers, etc. See the code
for details.
+<li>SVGA_EXTRA_LOGGING - if set, enables extra logging to the vmware.log file,
+such as the OpenGL program's name and command line arguments.
<li>See the driver code for other, lesser-used variables.
</ul>
diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
index 866eef1..81856b3 100644
--- a/src/gallium/drivers/svga/svga_screen.c
+++ b/src/gallium/drivers/svga/svga_screen.c
@@ -30,6 +30,8 @@
#include "util/u_string.h"
#include "util/u_math.h"
+#include "os/os_process.h"
+
#include "svga_winsys.h"
#include "svga_public.h"
#include "svga_context.h"
@@ -42,6 +44,7 @@
#include "svga3d_shaderdefs.h"
#include "VGPU10ShaderTokens.h"
+#include "svga_msg.h"
/* NOTE: this constant may get moved into a svga3d*.h header file */
#define SVGA3D_DX_MAX_RESOURCE_SIZE (128 * 1024 * 1024)
@@ -949,6 +952,7 @@ svga_screen_create(struct svga_winsys_screen *sws)
{
struct svga_screen *svgascreen;
struct pipe_screen *screen;
+ char host_log[200];
#ifdef DEBUG
SVGA_DEBUG = debug_get_flags_option("SVGA_DEBUG", svga_debug_flags, 0 );
@@ -1138,6 +1142,18 @@ svga_screen_create(struct svga_winsys_screen *sws)
"%s%s (%s)", HOST_LOG_PREFIX, PACKAGE_VERSION, MESA_GIT_SHA1);
svga_host_log(host_log);
+ /* If the SVGA_EXTRA_LOGGING env var is set, log the process's command
+ * line (program name and arguments).
+ */
+ if (debug_get_bool_option("SVGA_EXTRA_LOGGING", FALSE)) {
+ char cmdline[1000];
+ if (os_get_command_line(cmdline, sizeof(cmdline))) {
+ util_snprintf(host_log, sizeof(host_log) - strlen(HOST_LOG_PREFIX),
+ "%s%s", HOST_LOG_PREFIX, cmdline);
+ svga_host_log(host_log);
+ }
+ }
+
return screen;
error2:
FREE(svgascreen);
--
1.9.1
More information about the mesa-dev
mailing list