verifying virtio-gpu in alpine-virt-3.16.3 release
Dear experts,
I am trying alpine-virt-3.16.3-aarch63.iso
release within a virtual machine.
I already can boot into the command line interface, and I can see that virtio-gpu
are loaded:
$ lsmod | fgrep -e gpu -e drm
virtio_gpu 73728 0
virtio_dma_buf 16384 1 virtio_gpu
simpledrm 16384 0
drm_kms_helper 299008 4 virtio_gpu,simpledrm
cfbfillrect 16384 1 drm_kms_helper
syscopyarea 16384 1 drm_kms_helper
cfbimgblt 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
fb_sys_fops 16384 1 drm_kms_helper
cfbcopyarea 16384 1 drm_kms_helper
drm 618496 4 virtio_gpu,simpledrm,drm_kms_helper
fb 114688 72 drm_kms_helper,drm
i2c_core 98304 2 drm_kms_helper,drm
drm_panel_orientation_quirks 24576 1 drm
backlight 24576 2 drm_kms_helper,drm
firmware_class 32768 1 drm
$ $ ll /dev/dri
total 0
crw-rw---- 1 root video 226, 0 Jan 1 1970 card0
crw-rw---- 1 root video 226, 128 Jan 1 1970 renderD128
I also can see some virtio gpu device details:
$ drm_info
Node: /dev/dri/card0
├───Driver: virtio_gpu (virtio GPU) version 0.1.0 (0)
│ ├───DRM_CLIENT_CAP_STEREO_3D supported
│ ├───DRM_CLIENT_CAP_UNIVERSAL_PLANES supported
│ ├───DRM_CLIENT_CAP_ATOMIC supported
│ ├───DRM_CLIENT_CAP_ASPECT_RATIO supported
│ ├───DRM_CLIENT_CAP_WRITEBACK_CONNECTORS supported
│ ├───DRM_CAP_DUMB_BUFFER = 1
│ ├───DRM_CAP_VBLANK_HIGH_CRTC = 1
│ ├───DRM_CAP_DUMB_PREFERRED_DEPTH = 0
│ ├───DRM_CAP_DUMB_PREFER_SHADOW = 0
│ ├───DRM_CAP_PRIME = 3
│ ├───DRM_CAP_TIMESTAMP_MONOTONIC = 1
│ ├───DRM_CAP_ASYNC_PAGE_FLIP = 0
│ ├───DRM_CAP_CURSOR_WIDTH = 64
│ ├───DRM_CAP_CURSOR_HEIGHT = 64
│ ├───DRM_CAP_ADDFB2_MODIFIERS = 0
│ ├───DRM_CAP_PAGE_FLIP_TARGET = 0
│ ├───DRM_CAP_CRTC_IN_VBLANK_EVENT = 1
│ ├───DRM_CAP_SYNCOBJ = 0
│ └───DRM_CAP_SYNCOBJ_TIMELINE = 0
├───Device: PCI 1af4:1050 Device 1af4:1050
│ └───Available nodes: primary, render
├───Framebuffer size
│ ├───Width: [32, 8192]
│ └───Height: [32, 8192]
├───Connectors
│ └───Connector 0
│ ├───Object ID: 34
│ ├───Type: virtual
│ ├───Status: connected
│ ├───Physical size: 0x0 mm
│ ├───Subpixel: unknown
│ ├───Encoders: {0}
│ ├───Modes
│ │ ├───1920x1080@60.00 preferred nhsync pvsync
│ │ ├───4096x2160@60.00 driver phsync nvsync
│ │ ├───4096x2160@59.94 driver phsync nvsync
│ │ ├───2560x1600@59.99 driver nhsync pvsync
│ │ ├───2560x1600@59.97 driver phsync nvsync
│ │ ├───...
│ │ ├───848x480@60.00 driver phsync pvsync
│ │ └───640x480@59.94 driver nhsync nvsync
│ └───Properties
│ ├───"DPMS": enum {On, Standby, Suspend, Off} = On
│ ├───"link-status": enum {Good, Bad} = Good
│ ├───"non-desktop" (immutable): range [0, 1] = 0
│ ├───"TILE" (immutable): blob = 0
│ └───"CRTC_ID" (atomic): object CRTC = 33
├───Encoders
│ └───Encoder 0
│ ├───Object ID: 35
│ ├───Type: virtual
│ ├───CRTCS: {0}
│ └───Clones: {0}
├───CRTCs
│ └───CRTC 0
│ ├───Object ID: 33
│ ├───Mode: 1920x1080@60.00 preferred nhsync pvsync
│ ├───Gamma size: 0
│ └───Properties
│ ├───"ACTIVE" (atomic): range [0, 1] = 1
│ ├───"MODE_ID" (atomic): blob = 37
│ │ └───1920x1080@60.00 preferred nhsync pvsync
│ ├───"OUT_FENCE_PTR" (atomic): range [0, UINT64_MAX] = 0
│ └───"VRR_ENABLED": range [0, 1] = 0
└───Planes
├───Plane 0
│ ├───Object ID: 31
│ ├───CRTCs: {0}
│ ├───FB ID: 36
│ │ ├───Object ID: 36
│ │ ├───Size: 1920x1080
│ │ ├───Format: XRGB8888 (0x34325258)
│ │ └───Planes:
│ │ └───Plane 0: offset = 0, pitch = 7680
│ ├───Formats:
│ │ └───XRGB8888 (0x34325258)
│ └───Properties
│ ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Primary
│ ├───"FB_ID" (atomic): object framebuffer = 36
│ │ ├───Object ID: 36
│ │ ├───Size: 1920x1080
│ │ ├───Format: XRGB8888 (0x34325258)
│ │ └───Planes:
│ │ └───Plane 0: offset = 0, pitch = 7680
│ ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
│ ├───"CRTC_ID" (atomic): object CRTC = 33
│ ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
│ ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
│ ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 1920
│ ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 1080
│ ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
│ ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 1920
│ └───"SRC_H" (atomic): range [0, UINT32_MAX] = 1080
└───Plane 1
├───Object ID: 32
├───CRTCs: {0}
├───FB ID: 0
├───Formats:
│ └───ARGB8888 (0x34325241)
└───Properties
├───"type" (immutable): enum {Overlay, Primary, Cursor} = Cursor
├───"FB_ID" (atomic): object framebuffer = 0
├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
├───"CRTC_ID" (atomic): object CRTC = 0
├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 0
├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 0
├───"CRTC_W" (atomic): range [0, INT32_MAX] = 0
├───"CRTC_H" (atomic): range [0, INT32_MAX] = 0
├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
├───"SRC_W" (atomic): range [0, UINT32_MAX] = 0
└───"SRC_H" (atomic): range [0, UINT32_MAX] = 0
and I can see that at list the GBM platform is discoverable from EGL info:
$ eglinfo
EGL client extensions string:
EGL_EXT_client_extensions EGL_EXT_device_base
EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base
EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug
EGL_EXT_platform_device EGL_EXT_platform_wayland
EGL_KHR_platform_wayland EGL_EXT_platform_x11 EGL_KHR_platform_x11
EGL_MESA_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm
EGL_MESA_platform_surfaceless
GBM platform:
EGL API version: 1.4
EGL vendor string: Mesa Project
EGL version string: 1.4
EGL client APIs: OpenGL OpenGL_ES
EGL extensions string:
EGL_ANDROID_blob_cache EGL_EXT_buffer_age
EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers
EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context
EGL_KHR_create_context_no_error EGL_KHR_fence_sync
EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace
EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image
EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image
EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap
EGL_KHR_no_config_context EGL_KHR_reusable_sync
EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
EGL_KHR_wait_sync EGL_MESA_configless_context
EGL_MESA_image_dma_buf_export EGL_MESA_query_driver
Configurations:
bf lv colorbuffer dp st ms vis cav bi renderable supported
id sz l r g b a th cl ns b id eat nd gl es es2 vg surfaces
---------------------------------------------------------------------
0x01 32 0 8 8 8 8 0 0 0 0 0x34325241-- y y y win
0x02 32 0 8 8 8 8 16 0 0 0 0x34325241-- y y y win
0x03 32 0 8 8 8 8 24 0 0 0 0x34325241-- y y y win
0x04 32 0 8 8 8 8 24 8 0 0 0x34325241-- y y y win
0x05 32 0 8 8 8 8 32 0 0 0 0x34325241-- y y y win
...
0x30 48 0 16 16 16 0 24 0 4 1 0x48344258-- y y y win
0x31 48 0 16 16 16 0 24 8 4 1 0x48344258-- y y y win
0x32 48 0 16 16 16 0 32 0 4 1 0x48344258-- y y y win
Wayland platform:
eglinfo: eglInitialize failed
X11 platform:
eglinfo: eglInitialize failed
Device platform:
eglinfo: eglInitialize failed
As I am still newbie to the graphics stack, I am wondering if there are any alpine packages to further confirm this virtio graphics stack? I am wishing to see some graphical display on my screen. I am not expecting complex things like X11 or Wayland as my use case is to power a single GUI app.
Regards, yf