intel: add intel_dev_log()

It is icd_log() with message filtering.
diff --git a/icd/intel/dev.c b/icd/intel/dev.c
index ff80f24..ebcc473 100644
--- a/icd/intel/dev.c
+++ b/icd/intel/dev.c
@@ -22,6 +22,7 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
+#include <stdarg.h>
 #include "kmd/winsys.h"
 #include "dispatch_tables.h"
 #include "gpu.h"
@@ -225,6 +226,55 @@
     }
 }
 
+static bool dev_filter_msg(struct intel_dev *dev,
+                           XGL_INT msg_code)
+{
+    struct intel_dev_dbg *dbg = intel_dev_dbg(dev);
+    struct intel_dev_dbg_msg_filter *filter;
+
+    if (!dbg)
+        return false;
+
+    filter = dbg->filters;
+    while (filter) {
+        if (filter->msg_code != msg_code) {
+            filter = filter->next;
+            continue;
+        }
+
+        if (filter->filter == XGL_DBG_MSG_FILTER_ALL)
+            return true;
+
+        if (filter->filter == XGL_DBG_MSG_FILTER_REPEATED &&
+            filter->triggered)
+            return true;
+
+        filter->triggered = true;
+        break;
+    }
+
+    return false;
+}
+
+void intel_dev_log(struct intel_dev *dev,
+                   XGL_DBG_MSG_TYPE msg_type,
+                   XGL_VALIDATION_LEVEL validation_level,
+                   XGL_BASE_OBJECT src_object,
+                   XGL_SIZE location,
+                   XGL_INT msg_code,
+                   const char *format, ...)
+{
+    va_list ap;
+
+    if (dev_filter_msg(dev, msg_code))
+        return;
+
+    va_start(ap, format);
+    icd_vlog(msg_type, validation_level, src_object,
+            location, msg_code, format, ap);
+    va_end(ap);
+}
+
 XGL_RESULT XGLAPI intelCreateDevice(
     XGL_PHYSICAL_GPU                            gpu_,
     const XGL_DEVICE_CREATE_INFO*               pCreateInfo,