Dan Smith
Dan Smith

Reputation: 111

Raspberry Pi2 running Buildroot with QT5 Set screen resolution

I'm in development of a QT5 application for RPi2 running build root. Initially I'm trying out QTQuick 2 with QML, and running into the issue where the app launches with a resolution of 1280x720 instead of the intended 1920x1080 on an 8" HDMI display.

I don't know if the change I need to make is somewhere within the running OS, or some value within the QT app in order to fix the resolution.

Logging Screen.width and Screen.height in QML outputs the following:

qml: x: 1280 y: 720

I have tried setting env variables as mentioned in this similar post by creating a file in /etc/profiles.d/ with the following.

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

However that results in the app not detecting the variables set

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).

If I manually source a file containing the values the error above is not output, indicating I believe that they have been seen by QT but still no change is reflected.

I am SSH'ing into the Pi to make changes and run the QT app, and I have also tried using fbset to change there resolution, which does seem to set the terminal into 1080p, but not the app when ran.

fbset -xres 1920 -yres 1080

Here is the logging output when the app is ran.

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

Upvotes: 0

Views: 2555

Answers (1)

Dan Smith
Dan Smith

Reputation: 111

Realised buildroot hadn't copied over a config.txt to the boot partition of the SD card. Copied across a minimal config and set configured a few arguments as stated in this thread.

hdmi_ignore_edid=0xa5000080
hdmi_group=1
hdmi_mode=16

That forced the RPi into 1080p mode and now my QT app is displaying correctly at 1920x1080.

Upvotes: 1

Related Questions