Android-x86
Fork
Spenden

  • R/O
  • HTTP
  • SSH
  • HTTPS

external-drm_framebuffer: Commit

external/drm_framebuffer


Commit MetaInfo

Revision47e12d832a8c97896bef6b00839a83d59266cd63 (tree)
Zeit2020-03-13 20:33:56
AutorChih-Wei Huang <cwhuang@linu...>
CommiterChih-Wei Huang

Log Message

Allow to force mode by a property

The desired resolution could be set by property debug.drm.mode.force.

Ändern Zusammenfassung

Diff

--- a/drm_framebuffer.c
+++ b/drm_framebuffer.c
@@ -26,6 +26,7 @@
2626 #include <string.h>
2727 #include <errno.h>
2828 #include <fcntl.h>
29+#include <cutils/properties.h>
2930 #include <hardware/gralloc.h>
3031 #include <log/log.h>
3132
@@ -90,10 +91,27 @@ static drmModeModeInfoPtr fb0_find_preferred_mode(drmModeConnectorPtr connector)
9091 {
9192 int i;
9293 drmModeModeInfoPtr mode = NULL;
94+ char value[PROPERTY_VALUE_MAX];
95+ uint32_t xres = 0, yres = 0, rate = 0;
96+ if (property_get("debug.drm.mode.force", value, NULL)) {
97+ /* parse <xres>x<yres>[@<refreshrate>] */
98+ if (sscanf(value, "%dx%d@%d", &xres, &yres, &rate) != 3) {
99+ rate = 0;
100+ if (sscanf(value, "%dx%d", &xres, &yres) != 2) {
101+ xres = yres = 0;
102+ }
103+ }
104+ ALOGI_IF(xres && yres, "force mode to %dx%d@%dHz", xres, yres, rate);
105+ }
93106
94107 for (i = 0; i < connector->count_modes; ++i) {
95108 mode = &connector->modes[i];
96- if (mode->type & DRM_MODE_TYPE_PREFERRED) {
109+ if (xres && yres) {
110+ if (mode->hdisplay == xres && mode->vdisplay == yres &&
111+ (!rate || mode->vrefresh == rate)) {
112+ break;
113+ }
114+ } else if (mode->type & DRM_MODE_TYPE_PREFERRED) {
97115 break;
98116 }
99117 }
Show on old repository browser