Raspberry Pi2 运行 Buildroot with QT5 设置屏幕分辨率
Raspberry Pi2 running Buildroot with QT5 Set screen resolution
我正在为 RPi2 运行ning build root 开发 QT5 应用程序。最初我正在尝试使用 QML 的 QTQuick 2,然后 运行 解决了应用程序在 8" HDMI 显示器上以 1280x720 的分辨率而不是预期的 1920x1080 启动的问题。
我不知道我需要进行的更改是在 运行ning OS 中的某处,还是 QT 应用程序中的某个值以修复分辨率。
在 QML 中记录 Screen.width 和 Screen.height 输出以下内容:
qml: x: 1280 y: 720
我已尝试通过在 /etc/profiles.d/ 中使用以下内容创建文件来设置 env 变量,如 similar post 中所述。
export QT_QPA_EGLFS_WIDTH=1920
export QT_QPA_EGLFS_HEIGHT=1080
export QT_QPA_EGLFS_PHYSICAL_WIDTH=177
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=100
export QT_QPA_EGLFS_DEPTH=24
export QT_QPA_EGLFS_ALWAYS_SET_MODE=1
# Logging
#export QT_DEBUG_PLUGINS=1
export QT_QPA_EGLFS_DEBUG=1
#export QSG_INFO=1
export QT_LOGGING_RULES=qt.qpa.*=true
然而,这会导致应用程序无法检测到变量集
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
如果我手动获取包含这些值的文件,则不会输出上述错误,这表明我相信它们已被 QT 看到,但仍然没有反映任何变化。
我正在 SSH 进入 Pi 进行更改,运行 进入 QT 应用程序,我还尝试使用 fbset 更改那里的分辨率,这似乎将终端设置为 1080p,但不是运行 时的应用程序。
fbset -xres 1920 -yres 1080
这是应用 运行 时的日志输出。
qt.qpa.egldeviceintegration: EGL device integration plugin keys: ("eglfs_brcm")
qt.qpa.egldeviceintegration: EGL device integration plugin keys (sorted): ("eglfs_brcm")
qt.qpa.egldeviceintegration: Trying to load device EGL integration "eglfs_brcm"
qt.qpa.egldeviceintegration: Using EGL device integration "eglfs_brcm"
qt.qpa.input: evdevkeyboard: Using device discovery
qt.qpa.input: udev device discovery for type QFlags(0x8)
qt.qpa.input: Found matching devices ()
qt.qpa.input: evdevmouse: Using device discovery
qt.qpa.input: udev device discovery for type QFlags(0x1|0x2)
qt.qpa.input: Found matching devices ()
qt.qpa.input: evdevtouch: Using device discovery
qt.qpa.input: udev device discovery for type QFlags(0x2|0x4)
qt.qpa.input: Found matching devices ()
qml: x: 1280 y: 720
Created context for format QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 1, profile 0) with config:
EGL_BUFFER_SIZE: 16
EGL_ALPHA_SIZE: 0
EGL_BLUE_SIZE: 5
EGL_GREEN_SIZE: 6
EGL_RED_SIZE: 5
EGL_DEPTH_SIZE: 24
EGL_STENCIL_SIZE: 8
EGL_CONFIG_CAVEAT: 12344
EGL_CONFIG_ID: 17
EGL_LEVEL: 0
EGL_MAX_PBUFFER_HEIGHT: 2048
EGL_MAX_PBUFFER_PIXELS: 4194304
EGL_MAX_PBUFFER_WIDTH: 2048
EGL_NATIVE_RENDERABLE: 1
EGL_NATIVE_VISUAL_ID: 107544
EGL_NATIVE_VISUAL_TYPE: 12344
EGL_SAMPLES: 0
EGL_SAMPLE_BUFFERS: 0
EGL_SURFACE_TYPE: 1639
EGL_TRANSPARENT_TYPE: 12344
EGL_TRANSPARENT_BLUE_VALUE: 0
EGL_TRANSPARENT_GREEN_VALUE: 0
EGL_TRANSPARENT_RED_VALUE: 0
EGL_BIND_TO_TEXTURE_RGB: 1
EGL_BIND_TO_TEXTURE_RGBA: 1
EGL_MIN_SWAP_INTERVAL: 0
EGL_MAX_SWAP_INTERVAL: 2147483647
发现buildroot没有复制config.txt到SD卡的启动分区。如 this thread.
中所述,复制了一个最小配置并设置了一些参数
hdmi_ignore_edid=0xa5000080
hdmi_group=1
hdmi_mode=16
这迫使 RPi 进入 1080p 模式,现在我的 QT 应用程序可以在 1920x1080 分辨率下正确显示。
我正在为 RPi2 运行ning build root 开发 QT5 应用程序。最初我正在尝试使用 QML 的 QTQuick 2,然后 运行 解决了应用程序在 8" HDMI 显示器上以 1280x720 的分辨率而不是预期的 1920x1080 启动的问题。
我不知道我需要进行的更改是在 运行ning OS 中的某处,还是 QT 应用程序中的某个值以修复分辨率。
在 QML 中记录 Screen.width 和 Screen.height 输出以下内容:
qml: x: 1280 y: 720
我已尝试通过在 /etc/profiles.d/ 中使用以下内容创建文件来设置 env 变量,如 similar post 中所述。
export QT_QPA_EGLFS_WIDTH=1920
export QT_QPA_EGLFS_HEIGHT=1080
export QT_QPA_EGLFS_PHYSICAL_WIDTH=177
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=100
export QT_QPA_EGLFS_DEPTH=24
export QT_QPA_EGLFS_ALWAYS_SET_MODE=1
# Logging
#export QT_DEBUG_PLUGINS=1
export QT_QPA_EGLFS_DEBUG=1
#export QSG_INFO=1
export QT_LOGGING_RULES=qt.qpa.*=true
然而,这会导致应用程序无法检测到变量集
Unable to query physical screen size, defaulting to 100 dpi. To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
如果我手动获取包含这些值的文件,则不会输出上述错误,这表明我相信它们已被 QT 看到,但仍然没有反映任何变化。
我正在 SSH 进入 Pi 进行更改,运行 进入 QT 应用程序,我还尝试使用 fbset 更改那里的分辨率,这似乎将终端设置为 1080p,但不是运行 时的应用程序。
fbset -xres 1920 -yres 1080
这是应用 运行 时的日志输出。
qt.qpa.egldeviceintegration: EGL device integration plugin keys: ("eglfs_brcm")
qt.qpa.egldeviceintegration: EGL device integration plugin keys (sorted): ("eglfs_brcm")
qt.qpa.egldeviceintegration: Trying to load device EGL integration "eglfs_brcm"
qt.qpa.egldeviceintegration: Using EGL device integration "eglfs_brcm"
qt.qpa.input: evdevkeyboard: Using device discovery
qt.qpa.input: udev device discovery for type QFlags(0x8)
qt.qpa.input: Found matching devices ()
qt.qpa.input: evdevmouse: Using device discovery
qt.qpa.input: udev device discovery for type QFlags(0x1|0x2)
qt.qpa.input: Found matching devices ()
qt.qpa.input: evdevtouch: Using device discovery
qt.qpa.input: udev device discovery for type QFlags(0x2|0x4)
qt.qpa.input: Found matching devices ()
qml: x: 1280 y: 720
Created context for format QSurfaceFormat(version 2.0, options QFlags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 1, profile 0) with config:
EGL_BUFFER_SIZE: 16
EGL_ALPHA_SIZE: 0
EGL_BLUE_SIZE: 5
EGL_GREEN_SIZE: 6
EGL_RED_SIZE: 5
EGL_DEPTH_SIZE: 24
EGL_STENCIL_SIZE: 8
EGL_CONFIG_CAVEAT: 12344
EGL_CONFIG_ID: 17
EGL_LEVEL: 0
EGL_MAX_PBUFFER_HEIGHT: 2048
EGL_MAX_PBUFFER_PIXELS: 4194304
EGL_MAX_PBUFFER_WIDTH: 2048
EGL_NATIVE_RENDERABLE: 1
EGL_NATIVE_VISUAL_ID: 107544
EGL_NATIVE_VISUAL_TYPE: 12344
EGL_SAMPLES: 0
EGL_SAMPLE_BUFFERS: 0
EGL_SURFACE_TYPE: 1639
EGL_TRANSPARENT_TYPE: 12344
EGL_TRANSPARENT_BLUE_VALUE: 0
EGL_TRANSPARENT_GREEN_VALUE: 0
EGL_TRANSPARENT_RED_VALUE: 0
EGL_BIND_TO_TEXTURE_RGB: 1
EGL_BIND_TO_TEXTURE_RGBA: 1
EGL_MIN_SWAP_INTERVAL: 0
EGL_MAX_SWAP_INTERVAL: 2147483647
发现buildroot没有复制config.txt到SD卡的启动分区。如 this thread.
中所述,复制了一个最小配置并设置了一些参数hdmi_ignore_edid=0xa5000080
hdmi_group=1
hdmi_mode=16
这迫使 RPi 进入 1080p 模式,现在我的 QT 应用程序可以在 1920x1080 分辨率下正确显示。