intel: Add simple logging façade for Android (v2)
authorChad Versace <chadversary@chromium.org>
Fri, 25 Aug 2017 21:14:34 +0000 (14:14 -0700)
committerChad Versace <chadversary@chromium.org>
Tue, 17 Oct 2017 18:08:26 +0000 (11:08 -0700)
commitaa716db0f64ddb60da17ed64cfcf1248b9ddf907
tree69cf9a920a3497c330b97fd168fe31ab45fb613a
parent3555d3613958f6845e2172dfe8ecf842c1d77687
intel: Add simple logging façade for Android (v2)

I'm bringing up Vulkan in the Android container of Chrome OS (ARC++).

On Android, stdio goes to /dev/null. On Android, remote gdb is even more
painful than the usual remote gdb. On Android, nothing works like you
expect and debugging is hell. I need logging.

This patch introduces a small, simple logging API that can easily wrap
Android's API. On non-Android platforms, this logger does nothing fancy.
It follows the time-honored Unix tradition of spewing everything to
stderr with minimal fuss.

My goal here is not perfection. My goal is to make a minimal, clean API,
that people hate merely a little instead of a lot, and that's good
enough to let me bring up Android Vulkan.  And it needs to be fast,
which means it must be small. No one wants to their game to miss frames
while aiming a flaming bow into the jaws of an angry robot t-rex, and
thus become t-rex breakfast, because some fool had too much fun desiging
a bloated, ideal logging API.

If people like it, perhaps we should quickly promote it to src/util.

The API looks like this:

    #define INTEL_LOG_TAG "intel-vulkan"
    #define DEBUG

    intel_logd("try hard thing with foo=%d", foo);

    n = try_foo(...);
    if (n < 0) {
        intel_loge("%s:%d: foo failed bigtime", __FILE__, __LINE__);
        return VK_ERROR_DEVICE_LOST;
    }

And produces this on non-Android:

    intel-vulkan: debug: try hard thing with foo=93
    intel-vulkan: error: anv_device.c:182: foo failed bigtime

v2: Fix meson build. [for dcbaker]

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/Makefile.sources
src/intel/common/intel_log.c [new file with mode: 0644]
src/intel/common/intel_log.h [new file with mode: 0644]
src/intel/common/meson.build