aboutsummaryrefslogtreecommitdiff
path: root/include/backend/drm/util.h
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-10-02 08:46:06 -0400
committerGitHub <noreply@github.com>2017-10-02 08:46:06 -0400
commit87a0cb7ba37eed29662ec16ce95493a0238ef660 (patch)
tree95554cb777848ce7246b651c09740d307bcdd506 /include/backend/drm/util.h
parentaa8a4f12b7e7ea8c3a1876f0585dd6171f8cb705 (diff)
parent9ec9edc40d4694dedfd7f00eb9106ce5ed133239 (diff)
Merge pull request #182 from ascent12/drm-multi-gpu
DRM Multi-GPU
Diffstat (limited to 'include/backend/drm/util.h')
-rw-r--r--include/backend/drm/util.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/backend/drm/util.h b/include/backend/drm/util.h
new file mode 100644
index 00000000..6818b4db
--- /dev/null
+++ b/include/backend/drm/util.h
@@ -0,0 +1,39 @@
+#ifndef BACKEND_DRM_UTIL_H
+#define BACKEND_DRM_UTIL_H
+
+#include <stdint.h>
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+#include <wlr/types/wlr_output.h>
+
+// Calculates a more accurate refresh rate (mHz) than what mode itself provides
+int32_t calculate_refresh_rate(drmModeModeInfo *mode);
+// Populates the make/model/phys_{width,height} of output from the edid data
+void parse_edid(struct wlr_output *restrict output, size_t len, const uint8_t *data);
+// Returns the string representation of a DRM output type
+const char *conn_get_name(uint32_t type_id);
+// Returns the DRM framebuffer id for a gbm_bo
+uint32_t get_fb_for_bo(struct gbm_bo *bo);
+
+// Part of match_obj
+enum {
+ UNMATCHED = (uint32_t)-1,
+ SKIP = (uint32_t)-2,
+};
+
+/*
+ * Tries to match some DRM objects with some other DRM resource.
+ * e.g. Match CRTCs with Encoders, CRTCs with Planes.
+ *
+ * objs contains a bit array which resources it can be matched with.
+ * e.g. Bit 0 set means can be matched with res[0]
+ *
+ * res contains an index of which objs it is matched with or UNMATCHED.
+ *
+ * This solution is left in out.
+ * Returns the total number of matched solutions.
+ */
+size_t match_obj(size_t num_objs, const uint32_t objs[static restrict num_objs],
+ size_t num_res, const uint32_t res[static restrict num_res],
+ uint32_t out[static restrict num_res]);
+#endif