Summary
On Radxa Orion O6 (CIX P1 / Sky1), GravityMark 1.89 under Vulkan initializes fine and the HUD renders, but the 3D scene is entirely black with Visible: 0 — no geometry is drawn. vkcube renders correctly on the same machine, so basic Vulkan + WSI work; the failure is specific to the GPU-driven rendering path on the panvk + vendor-layer stack.
Environment
|
|
| Board |
Radxa Orion O6 |
| SoC |
CIX P1 (CD8180) / Sky1 |
| GPU |
Mali-G720 MC10 — vendor 0x13b5, deviceID 0xc8700008 |
| OS |
Debian GNU/Linux 13 (trixie) |
| App |
GravityMark 1.89, Vulkan API, Default render, windowed (1280×720) |
| Kernel |
Linux debian 7.0.9.4-generic #1 SMP PREEMPT Thu May 21 22:39:13 CST 2026 aarch64 GNU/Linux |
(I modified the kernel a little, it's related to kvm and I haven't touch anything about GPU part.)
Vulkan info:
==========
VULKANINFO
==========
Vulkan Instance Version: 1.4.309
Instance Extensions: count = 22
-------------------------------
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_headless_surface : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 5
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_LUNARG_direct_driver_loading : extension revision 1
Instance Layers: count = 1
--------------------------
VK_LAYER_uma_memory Augments memory types on UMA GPUs (Mali, etc.) so HOST_VISIBLE+HOST_COHERENT entries also claim HOST_CACHED — enables gfxstream HOST CompositorVk to find a usable memory type on Mali UMA 1.3.0 version 1
Devices:
========
GPU0:
apiVersion = 1.4.335
driverVersion = 26.0.0
vendorID = 0x13b5
deviceID = 0xc8700008
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
deviceName = Mali-G720 MC10
driverID = DRIVER_ID_MESA_PANVK
driverName = panvk
driverInfo = Mesa 26.0.0-1sky1.2 (git-9d1aa7c27d)
conformanceVersion = 0.0.0.0
deviceUUID = b5130000-0800-70c8-0000-000000000000
driverUUID = 48c80aad-6531-e573-43d3-ed7fefb2ff62
GPU1:
apiVersion = 1.4.318
driverVersion = 25.2.6
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 19.1.7, 128 bits)
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 25.2.6-1~bpo13+1 (LLVM 19.1.7)
conformanceVersion = 1.3.1.1
deviceUUID = 6d657361-3235-2e32-2e36-2d317e627000
driverUUID = 6c6c766d-7069-7065-5555-494400000000
Steps to reproduce
- Boot with Debian 13, install open-source driver stack.
- Run GravityMark 1.89 (Linux ARM64) → Vulkan / Default.
- Observed: HUD + FPS update (~9.5 fps), scene is black,
Visible: 0. Resolution-independent.
- Sanity check —
vkcube renders a spinning cube correctly (basic Vulkan + present OK).
- Re-run with validation:
VK_LOADER_LAYERS_ENABLE=VK_LAYER_KHRONOS_validation ./GravityMark... 2>&1 | tee gm-vvl.log
ps. I believe this is not a problem of GravityMark. It runs smoothly on other devices.
Validation errors
(1) Pipeline creation — asteroid render pipeline:
VUID-RuntimeSpirv-NonWritable-06341
vkCreateGraphicsPipelines(): pStages[0] SPIR-V (VERTEX) uses descriptor
[Set 0, Binding 1, "_v13"] (STORAGE_BUFFER) not marked NonWritable,
while vertexPipelineStoresAndAtomics was not enabled.
(2) During the run — texture mip copy:
VUID-vkCmdCopyImage-dstOffset-00150 / -00151
pRegions[4,5,8,9].dstOffset + extent (4) exceeds miplevel width/height (2 / 1)
Logs:
Verifying archive integrity... 100% All good.
Uncompressing GravityMark GPU Benchmark 100%
M: 0 us: ./Browser.arm64: server is running on 62828 port
[vk_uma_layer] loaded into pid=86347 (build Jun 6 2026 19:10:32)
WARNING: panvk is not a conformant Vulkan implementation, testing use only.
M: 0 us: ../data.zip: 313 files
M: 828 us: Temporal antialiasing
M: 857 us: Render Statistics
M: 11.12 ms: Build Date: Jun 20 2025
M: 11.16 ms: Build Info: version=20250429; linux; arm64; release; vk=1; gl=45; gles=32; cu=1; fusion
M: 11.17 ms: Build Version: 1.89
M: 17.30 ms: Name: Radxa Computer (Shenzhen) Co., Ltd. Radxa Orion O6 Radxa Orion O6
M: 17.34 ms: System: Debian GNU/Linux 13 (trixie)
M: 17.34 ms: Kernel: Linux 7.0.9.4-generic aarch64
M: 17.36 ms: Memory: 31.08 GB
M: 17.37 ms: Uptime: 18:21
M: 17.38 ms: CPU: arm64
M: 17.91 ms: Desktop: 1920x1080 1.0
M: 17.95 ms: Screen 0: 1920x1080 0 0 DP-2
M: 17.99 ms: Creating 1280x720 Vulkan Window
[vk_uma_layer] loaded into pid=86723 (build Jun 6 2026 19:10:32)
WARNING: panvk is not a conformant Vulkan implementation, testing use only.
M: 72.33 ms: Using Fetch Mode
M: 160.60 ms: Device: Mali-G720 MC10
M: 160.66 ms: Vendor: 0x13b5
M: 160.67 ms: Version: 26.0.0
M: 160.68 ms: DeviceID: 0xc8700008
M: 160.69 ms: Group Memory: 32.00 KB
M: 160.69 ms: Video Memory: 23.31 GB
M: 160.70 ms: Max Uniform Size: 1.00 MB
M: 160.71 ms: Max Storage Size: 4.00 GB
M: 160.71 ms: Creating SceneManager
M: 408.41 ms: Creating RenderManager
Validation Error: [ VUID-RuntimeSpirv-NonWritable-06341 ] | MessageID = 0x116350f
vkCreateGraphicsPipelines(): pCreateInfos[0].pStages[0] SPIR-V (VK_SHADER_STAGE_VERTEX_BIT) uses descriptor [Set 0, Binding 1, variable "_v13"] (type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER) which is not marked with NonWritable, but vertexPipelineStoresAndAtomics was not enabled.
The Vulkan spec states: If the vertexPipelineStoresAndAtomics feature is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the vertex, tessellation, and geometry stages must be decorated with the NonWritable decoration (https://docs.vulkan.org/spec/latest/appendices/spirvenv.html#VUID-RuntimeSpirv-NonWritable-06341)
Objects: 1
[0] VkShaderModule 0x4910000000491
M: 652.71 ms: Rasterization Mode
M: 652.77 ms: Creating Scene
M: 1.881 s: Creating 50,000 Asteroids
M: 1.948 s: Updating Scene
M: 1.986 s: GravityMark 1.89 Vulkan is Ready in 2.0 s
M: 1.986 s: Starting 1280x720 Vulkan Benchmark
M: 1.986 s: Count: 1
M: 1.987 s: Resizing 1280x720 frame
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00150 ] | MessageID = 0x38b5face
vkCmdCopyImage(): pRegions[8].dstOffset.x (0) + extent (4) exceeds miplevel 8 width (2).
The Vulkan spec states: For each element of pRegions, dstOffset.x and (extent.width + dstOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00150)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75e000000075e
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00151 ] | MessageID = 0x4bb17a0e
vkCmdCopyImage(): pRegions[8].dstOffset.y (0) + extent (4) exceeds miplevel 8 height (2).
The Vulkan spec states: For each element of pRegions, dstOffset.y and (extent.height + dstOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00151)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75e000000075e
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00150 ] | MessageID = 0x38b5face
vkCmdCopyImage(): pRegions[9].dstOffset.x (0) + extent (4) exceeds miplevel 9 width (1).
The Vulkan spec states: For each element of pRegions, dstOffset.x and (extent.width + dstOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00150)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75e000000075e
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00151 ] | MessageID = 0x4bb17a0e
vkCmdCopyImage(): pRegions[9].dstOffset.y (0) + extent (4) exceeds miplevel 9 height (1).
The Vulkan spec states: For each element of pRegions, dstOffset.y and (extent.height + dstOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00151)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75e000000075e
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00150 ] | MessageID = 0x38b5face
vkCmdCopyImage(): pRegions[4].dstOffset.x (0) + extent (4) exceeds miplevel 4 width (2).
The Vulkan spec states: For each element of pRegions, dstOffset.x and (extent.width + dstOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00150)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75c000000075c
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00151 ] | MessageID = 0x4bb17a0e
vkCmdCopyImage(): pRegions[4].dstOffset.y (0) + extent (4) exceeds miplevel 4 height (2).
The Vulkan spec states: For each element of pRegions, dstOffset.y and (extent.height + dstOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00151)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75c000000075c
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00150 ] | MessageID = 0x38b5face
vkCmdCopyImage(): pRegions[5].dstOffset.x (0) + extent (4) exceeds miplevel 5 width (1).
The Vulkan spec states: For each element of pRegions, dstOffset.x and (extent.width + dstOffset.x) must both be greater than or equal to 0 and less than or equal to the width of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00150)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75c000000075c
Validation Error: [ VUID-vkCmdCopyImage-dstOffset-00151 ] | MessageID = 0x4bb17a0e
vkCmdCopyImage(): pRegions[5].dstOffset.y (0) + extent (4) exceeds miplevel 5 height (1).
The Vulkan spec states: For each element of pRegions, dstOffset.y and (extent.height + dstOffset.y) must both be greater than or equal to 0 and less than or equal to the height of the specified dstSubresource of dstImage (https://docs.vulkan.org/spec/latest/chapters/copies.html#VUID-vkCmdCopyImage-dstOffset-00151)
Objects: 2
[0] VkCommandBuffer 0x2fe6fbe0
[1] VkImage 0x75c000000075c
M: 16.902 s: Clearing Scene
M: 16.968 s: GravityMark 1.89 Done
Secondary — Vulkan stack maturity / performance
Separate from the bug above, a broader concern: panvk is currently the only Vulkan driver for this SoC on Linux, and it self-reports as non-conformant. In my testing, GPU throughput is well below what the hardware appears capable of. I'd like to say it performes really poor.
Summary
On Radxa Orion O6 (CIX P1 / Sky1), GravityMark 1.89 under Vulkan initializes fine and the HUD renders, but the 3D scene is entirely black with
Visible: 0— no geometry is drawn.vkcuberenders correctly on the same machine, so basic Vulkan + WSI work; the failure is specific to the GPU-driven rendering path on the panvk + vendor-layer stack.Environment
0x13b5, deviceID0xc8700008Linux debian 7.0.9.4-generic #1 SMP PREEMPT Thu May 21 22:39:13 CST 2026 aarch64 GNU/Linux(I modified the kernel a little, it's related to kvm and I haven't touch anything about GPU part.)
Vulkan info:
Steps to reproduce
Visible: 0. Resolution-independent.vkcuberenders a spinning cube correctly (basic Vulkan + present OK).ps. I believe this is not a problem of GravityMark. It runs smoothly on other devices.
Validation errors
(1) Pipeline creation — asteroid render pipeline:
(2) During the run — texture mip copy:
Logs:
Secondary — Vulkan stack maturity / performance
Separate from the bug above, a broader concern: panvk is currently the only Vulkan driver for this SoC on Linux, and it self-reports as non-conformant. In my testing, GPU throughput is well below what the hardware appears capable of. I'd like to say it performes really poor.