Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HiFive Premier P550 #65

Open
geerlingguy opened this issue Jan 24, 2025 · 60 comments
Open

HiFive Premier P550 #65

geerlingguy opened this issue Jan 24, 2025 · 60 comments

Comments

@geerlingguy
Copy link
Owner

geerlingguy commented Jan 24, 2025

Image

Basic information

Linux/system information

# output of `screenfetch`
                          ./+o+-       ubuntu@ubuntu
                  yyyyy- -yyyyyy+      OS: Ubuntu 24.04 noble
               ://+//////-yyyyyyo      Kernel: riscv64 Linux 6.6.21-9-premier
           .++ .:/++++++/-.+sss/`      Uptime: 1m
         .:++o:  /++++++++/:--:/-      Packages: 1735
        o:+o+:++.`..```.-/oo+++++/     Shell: dash
       .:+o:+o/.          `+sssoo+/    Disk: 5.5G / 115G (5%)
  .++/+:+oo+o:`             /sssooo.   CPU: Unknown @ 4x 1.4GHz
 /+++//+:`oo+o               /::--:.   GPU: 
 \+/+o+++`o++o               ++////.   RAM: 782MiB / 15999MiB
  .++.o+++oo+:`             /dddhhh.  
       .+.o+oo:.          `oddhhhh+   
        \+.++o+o``-````.:ohdhhhhh+    
         `:o+++ `ohhhhhhhhyo++os:     
           .o:`.syhhhhhhh/.oo++o`     
               /osyyyyyyo++ooo+++/    
                   ````` +oo+++o\:    
                          `oo++.      

# output of `uname -a`
Linux ubuntu 6.6.21-9-premier #1 SMP PREEMPT_DYNAMIC Sat Nov  9 00:21:16 UTC 2024 riscv64 riscv64 riscv64 GNU/Linux

Benchmark results

CPU

Power

  • Idle power draw (at wall): 12.5 W (7.2 W using 12V DC adapter)
  • Maximum simulated power draw (stress-ng --matrix 0): 13.5 W (8.5 W using 12V DC adapter)
  • During Geekbench multicore benchmark: 13.7 W (9.2 W using 12V DC adapter)
  • During top500 HPL benchmark: 13.9 W (8.9 W using 12V DC adapter)

Power was measured at the wall using a ThirdReality Smart Outlet, running into the included Flex ATX PSU, unless otherwise noted.

Disk

Built-in eMMC Storage (128 GB)

Benchmark Result
iozone 4K random read 21.82 MB/s
iozone 4K random write 33.07 MB/s
iozone 1M random read 207.44 MB/s
iozone 1M random write 162.38 MB/s
iozone 1M sequential read 204.20 MB/s
iozone 1M sequential write 179.72 MB/s

Kioxia XG8 (2TB - in PCIe to x4 M.2 NVMe adapter)

Benchmark Result
iozone 4K random read 47.50 MB/s
iozone 4K random write 87.84 MB/s
iozone 1M random read 703.95 MB/s
iozone 1M random write 796.03 MB/s
iozone 1M sequential read 712.22 MB/s
iozone 1M sequential write 798.01 MB/s

Network

iperf3 results:

  • iperf3 -c $SERVER_IP: 942 Mbps
  • iperf3 -c $SERVER_IP --reverse: 701 Mbps
  • iperf3 -c $SERVER_IP --bidir: 939 Mbps up, 235 Mbps down

(Be sure to test all interfaces, noting any that are non-functional.)

GPU

glmark2

glmark2-es2 / glmark2-es2-wayland results:

=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Imagination Technologies
    GL_RENDERER:    PowerVR A-Series AXM-8-256
    GL_VERSION:     OpenGL ES 3.2 build 24.2@6643903
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 662 FrameTime: 1.512 ms
[build] use-vbo=true: FPS: 1690 FrameTime: 0.592 ms
[texture] texture-filter=nearest: FPS: 1736 FrameTime: 0.576 ms
[texture] texture-filter=linear: FPS: 1711 FrameTime: 0.585 ms
[texture] texture-filter=mipmap: FPS: 1746 FrameTime: 0.573 ms
[shading] shading=gouraud: FPS: 1554 FrameTime: 0.644 ms
[shading] shading=blinn-phong-inf: FPS: 1454 FrameTime: 0.688 ms
[shading] shading=phong: FPS: 1446 FrameTime: 0.692 ms
[shading] shading=cel: FPS: 1422 FrameTime: 0.703 ms
[bump] bump-render=high-poly: FPS: 989 FrameTime: 1.012 ms
[bump] bump-render=normals: FPS: 1679 FrameTime: 0.596 ms
[bump] bump-render=height: FPS: 1674 FrameTime: 0.597 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1165 FrameTime: 0.859 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 584 FrameTime: 1.713 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1724 FrameTime: 0.580 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 569 FrameTime: 1.759 ms
[desktop] effect=shadow:windows=4: FPS: 1180 FrameTime: 0.848 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 227 FrameTime: 4.419 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 224 FrameTime: 4.473 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 359 FrameTime: 2.788 ms
[ideas] speed=duration: FPS: 680 FrameTime: 1.471 ms
[jellyfish] <default>: FPS: 998 FrameTime: 1.003 ms
[terrain] <default>: FPS: 112 FrameTime: 9.000 ms
[shadow] <default>: FPS: 1121 FrameTime: 0.893 ms
[refract] <default>: FPS: 167 FrameTime: 5.998 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1744 FrameTime: 0.573 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1762 FrameTime: 0.568 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1709 FrameTime: 0.585 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1787 FrameTime: 0.560 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1769 FrameTime: 0.565 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1619 FrameTime: 0.618 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1863 FrameTime: 0.537 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1876 FrameTime: 0.533 ms
=======================================================
                                  glmark2 Score: 1241 
=======================================================

GravityMark

GravityMark results: DNF (no RISC-V version available)

Note: These benchmarks require an active display on the device. Not all devices may be able to run glmark2-es2, so in that case, make a note and move on!

Ollama

ollama LLM model inference results:

System CPU/GPU Model Eval Rate Power (Peak)
HiFive Premier P550 (4-core RISC-V) CPU deepseek-r1:1.5b 0.49 Tokens/s 13.5 W
HiFive Premier P550 (4-core RISC-V) CPU llama3.2:3b 0.24 Tokens/s 13.5 W
HiFive Premier P550 (4-core RISC-V) CPU llama3.1:8b 0.10 Tokens/s 13.6 W
HiFive Premier P550 (4-core RISC-V) CPU llama2:13b 0.11 Tokens/s 13.6 W

Memory

tinymembench results:

Click to expand memory benchmark result
tinymembench v0.4.10 (simple benchmark for memory throughput and latency)

==========================================================================
== Memory bandwidth tests                                               ==
==                                                                      ==
== Note 1: 1MB = 1000000 bytes                                          ==
== Note 2: Results for 'copy' tests show how many bytes can be          ==
==         copied per second (adding together read and writen           ==
==         bytes would have provided twice higher numbers)              ==
== Note 3: 2-pass copy means that we are using a small temporary buffer ==
==         to first fetch data into it, and only then write it to the   ==
==         destination (source -> L1 cache, L1 cache -> destination)    ==
== Note 4: If sample standard deviation exceeds 0.1%, it is shown in    ==
==         brackets                                                     ==
==========================================================================

 C copy backwards                                     :   1048.6 MB/s (1.8%)
 C copy backwards (32 byte blocks)                    :   2016.1 MB/s (3.8%)
 C copy backwards (64 byte blocks)                    :   2754.2 MB/s (3.9%)
 C copy                                               :   2837.9 MB/s (3.2%)
 C copy prefetched (32 bytes step)                    :   2816.7 MB/s (2.4%)
 C copy prefetched (64 bytes step)                    :   2841.9 MB/s (3.6%)
 C 2-pass copy                                        :   1988.3 MB/s (2.9%)
 C 2-pass copy prefetched (32 bytes step)             :   1098.6 MB/s (2.1%)
 C 2-pass copy prefetched (64 bytes step)             :   1098.7 MB/s (3.2%)
 C fill                                               :  10089.3 MB/s
 C fill (shuffle within 16 byte blocks)               :  10082.1 MB/s
 C fill (shuffle within 32 byte blocks)               :  10086.7 MB/s
 C fill (shuffle within 64 byte blocks)               :  10081.9 MB/s
 ---
 standard memcpy                                      :   1126.1 MB/s (2.0%)
 standard memset                                      :  10086.3 MB/s

==========================================================================
== Memory latency test                                                  ==
==                                                                      ==
== Average time is measured for random memory accesses in the buffers   ==
== of different sizes. The larger is the buffer, the more significant   ==
== are relative contributions of TLB, L1/L2 cache misses and SDRAM      ==
== accesses. For extremely large buffer sizes we are expecting to see   ==
== page table walk with several requests to SDRAM for almost every      ==
== memory access (though 64MiB is not nearly large enough to experience ==
== this effect to its fullest).                                         ==
==                                                                      ==
== Note 1: All the numbers are representing extra time, which needs to  ==
==         be added to L1 cache latency. The cycle timings for L1 cache ==
==         latency can be usually found in the processor documentation. ==
== Note 2: Dual random read means that we are simultaneously performing ==
==         two independent memory accesses at a time. In the case if    ==
==         the memory subsystem can't handle multiple outstanding       ==
==         requests, dual random read has the same timings as two       ==
==         single reads performed one after another.                    ==
==========================================================================

block size : single random read / dual random read, [MADV_NOHUGEPAGE]
      1024 :    0.0 ns          /     0.0 ns 
      2048 :    0.0 ns          /     0.0 ns 
      4096 :    0.0 ns          /     0.0 ns 
      8192 :    0.0 ns          /     0.0 ns 
     16384 :    0.0 ns          /     0.0 ns 
     32768 :    0.0 ns          /     0.0 ns 
     65536 :    3.3 ns          /     5.0 ns 
    131072 :    5.0 ns          /     6.9 ns 
    262144 :    9.5 ns          /    13.7 ns 
    524288 :   20.2 ns          /    28.5 ns 
   1048576 :   25.8 ns          /    34.0 ns 
   2097152 :   28.8 ns          /    36.2 ns 
   4194304 :   54.4 ns          /    81.6 ns 
   8388608 :  125.4 ns          /   176.6 ns 
  16777216 :  164.9 ns          /   210.8 ns 
  33554432 :  186.9 ns          /   228.3 ns 
  67108864 :  201.8 ns          /   243.8 ns 

block size : single random read / dual random read, [MADV_HUGEPAGE]
      1024 :    0.0 ns          /     0.0 ns 
      2048 :    0.0 ns          /     0.0 ns 
      4096 :    0.0 ns          /     0.0 ns 
      8192 :    0.0 ns          /     0.0 ns 
     16384 :    0.0 ns          /     0.0 ns 
     32768 :    0.0 ns          /     0.0 ns 
     65536 :    3.3 ns          /     5.0 ns 
    131072 :    4.9 ns          /     6.8 ns 
    262144 :    6.2 ns          /     8.1 ns 
    524288 :   15.5 ns          /    21.0 ns 
   1048576 :   20.5 ns          /    24.8 ns 
   2097152 :   23.3 ns          /    25.9 ns 
   4194304 :   44.4 ns          /    61.6 ns 
   8388608 :  112.0 ns          /   153.4 ns 
  16777216 :  146.4 ns          /   179.3 ns 
  33554432 :  163.2 ns          /   186.9 ns 
  67108864 :  176.5 ns          /   196.2 ns 

sbc-bench results

Run sbc-bench and paste a link to the results here: https://0x0.st/8PA8.bin

Phoronix Test Suite

Results from pi-general-benchmark.sh:

  • pts/encode-mp3: N/A sec
  • pts/x264 4K: N/A fps
  • pts/x264 1080p: N/A fps
  • pts/phpbench: 81276
  • pts/build-linux-kernel (defconfig): 2488.688 sec
@geerlingguy
Copy link
Owner Author

Bringup notes: I just plugged everything into the SiFive-provided enclosure, plugging in the front panel header connectors to standard pin locations... but it seems like it may not use the standard pin locations? The power button does nothing, and I don't see anything on the power supply to indicate it is not active (there's no separate power switch). So I'll check the documentation and see if I'm missing something obvious!

@geerlingguy
Copy link
Owner Author

Apparently "SW2" needs to be switched towards the edge of the board, instead of towards the middle of the board. There's no particular "ON" indication so that was a little confusing, but now I have it booted and running Ubuntu 24.04 (it was pre-installed).

Going to do a little exploration before jumping into any benchmarking.

Note on the official case—the tiny PSU (not sure if it's Flex ATX?) has a fairly loud fan. It ramps down immediately after startup, but it has a bit of a whine to it that makes it less pleasant. Fine for under a desk or in another room but as a desktop unit its pretty noisy, even at idle.

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 5, 2025

Ollama doesn't install, I get:

    Starting nested operation: tasks/ollama-benchmark.py | Run Ollama Install Script 
    [10.0.2.234] nested ERROR: Unsupported architecture: riscv64

But it looks like I could possibly compile it separately: https://www.bit-brick.com/2024/10/02/在pi-one-上安装ollama/

# Install cmake
sudo apt install -y cmake

# Install Go (download link is under 'Unstable versions')
wget https://go.dev/dl/go1.24rc3.linux-riscv64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.24rc3.linux-riscv64.tar.gz
export PATH=$PATH:/usr/local/go/bin

$ go version
go version go1.24rc3 linux/riscv64

# Build ollama
git clone --recurse-submodules https://github.com/mengzhuo/ollama.git
cd ollama
go build .
sudo ln -s `pwd`/ollama /usr/local/bin/ollama

# Run ollama and test a tiny model (approx. 400 MB)
ollama serve > /dev/null 2>&1 &
ollama run qwen:0.5b

Also, I filed an issue on the ollama project: ollama/ollama#8857 — we'll see where that goes!

@geerlingguy
Copy link
Owner Author

I was expecting to have to manually compile cryptography for Ansible, but it installed out of the box...

--> Starting operation: Install Ansible dependencies 
    [10.0.2.234] Success

--> Starting operation: Remove Python 3.11 EXTERNALLY-MANAGED file 
    [10.0.2.234] No changes

--> Starting operation: Remove Python 3.12 EXTERNALLY-MANAGED file 
    [10.0.2.234] No changes

--> Starting operation: Install Ansible 
    [10.0.2.234] Success

I've updated my Installing Ansible on a RISC-V computer blog post with this note. Might not be required at least on Ubuntu anymore!

That said, I'm going to let the HPL benchmark run overnight... taking quite a while :)

@geerlingguy
Copy link
Owner Author

For all my benchmarking... the idle to full power range is pretty tight:

Image

@geerlingguy
Copy link
Owner Author

Some Ethernet info for end1 (one of the two 1 Gbps ports);

ubuntu@ubuntu:~$ ethtool end1
Settings for end1:
	Supported ports: [ TP	 MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full
	                                     100baseT/Half 100baseT/Full
	                                     1000baseT/Full
	Link partner advertised pause frame use: Symmetric Receive-only
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Auto-negotiation: on
	master-slave cfg: preferred slave
	master-slave status: master
	Port: MII
	PHYAD: 0
	Transceiver: external
netlink error: Operation not permitted
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
	Link detected: yes

ubuntu@ubuntu:~$ ethtool -T end1
Time stamping parameters for end1:
Capabilities:
	software-transmit
	software-receive
	software-system-clock
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes: none

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 6, 2025

Looking at some of the other features of this board:

  • GPIO access is currently not exposed in software
  • Imagination AXM-8-256 GPU not yet fully supported (I did seem to get GL web rendering in Firefox, but nothing else on the system worked with GL at least...)
  • Integrated 20 TOPS NPU not yet supported
  • WiFi slot is it actually A+E-key?
  • The PCIe slot should work okay, need to test that with a few different devices
  • I haven't tested the remote Ethernet MCU management port either

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 6, 2025

Vulkan info (vulkaninfo output):

Click to expand
$ vulkaninfo
'DISPLAY' environment variable not set... skipping surface info
==========
VULKANINFO
==========

Vulkan Instance Version: 1.3.275


Instance Extensions: count = 21
===============================
	VK_EXT_acquire_drm_display             : extension revision 1
	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_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_display_properties2         : 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

Layers: count = 2
=================
VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.3.211, layer version 1:
	Layer Extensions: count = 0
	Devices: count = 1
		GPU id = 0 (PowerVR A-Series AXM-8-256)
		Layer-Device Extensions: count = 0

VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.3.211, layer version 1:
	Layer Extensions: count = 0
	Devices: count = 1
		GPU id = 0 (PowerVR A-Series AXM-8-256)
		Layer-Device Extensions: count = 0

Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
	apiVersion        = 1.3.225 (4206817)
	driverVersion     = 1.516.125 (6307965)
	vendorID          = 0x1010
	deviceID          = 0x30010101
	deviceType        = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceName        = PowerVR A-Series AXM-8-256
	pipelineCacheUUID = 7d406000-1e03-0098-0065-00eed95e6600

VkPhysicalDeviceLimits:
-----------------------
	maxImageDimension1D                             = 16384
	maxImageDimension2D                             = 16384
	maxImageDimension3D                             = 2048
	maxImageDimensionCube                           = 16384
	maxImageArrayLayers                             = 2048
	maxTexelBufferElements                          = 65536
	maxUniformBufferRange                           = 134217728
	maxStorageBufferRange                           = 134217728
	maxPushConstantsSize                            = 256
	maxMemoryAllocationCount                        = 4294967295
	maxSamplerAllocationCount                       = 4294967295
	bufferImageGranularity                          = 0x00000001
	sparseAddressSpaceSize                          = 0x4000000000
	maxBoundDescriptorSets                          = 8
	maxPerStageDescriptorSamplers                   = 4294967295
	maxPerStageDescriptorUniformBuffers             = 4294967295
	maxPerStageDescriptorStorageBuffers             = 4294967295
	maxPerStageDescriptorSampledImages              = 4294967295
	maxPerStageDescriptorStorageImages              = 4294967295
	maxPerStageDescriptorInputAttachments           = 4294967295
	maxPerStageResources                            = 4294967295
	maxDescriptorSetSamplers                        = 4294967295
	maxDescriptorSetUniformBuffers                  = 4294967295
	maxDescriptorSetUniformBuffersDynamic           = 4294967295
	maxDescriptorSetStorageBuffers                  = 4294967295
	maxDescriptorSetStorageBuffersDynamic           = 4294967295
	maxDescriptorSetSampledImages                   = 4294967295
	maxDescriptorSetStorageImages                   = 4294967295
	maxDescriptorSetInputAttachments                = 4294967295
	maxVertexInputAttributes                        = 16
	maxVertexInputBindings                          = 16
	maxVertexInputAttributeOffset                   = 65535
	maxVertexInputBindingStride                     = 2147483648
	maxVertexOutputComponents                       = 72
	maxTessellationGenerationLevel                  = 64
	maxTessellationPatchSize                        = 32
	maxTessellationControlPerVertexInputComponents  = 72
	maxTessellationControlPerVertexOutputComponents = 72
	maxTessellationControlPerPatchOutputComponents  = 120
	maxTessellationControlTotalOutputComponents     = 2048
	maxTessellationEvaluationInputComponents        = 72
	maxTessellationEvaluationOutputComponents       = 72
	maxGeometryShaderInvocations                    = 32
	maxGeometryInputComponents                      = 72
	maxGeometryOutputComponents                     = 72
	maxGeometryOutputVertices                       = 256
	maxGeometryTotalOutputComponents                = 1024
	maxFragmentInputComponents                      = 72
	maxFragmentOutputAttachments                    = 8
	maxFragmentDualSrcAttachments                   = 0
	maxFragmentCombinedOutputResources              = 4294967295
	maxComputeSharedMemorySize                      = 16384
	maxComputeWorkGroupCount: count = 3
		65536
		65536
		65536
	maxComputeWorkGroupInvocations                  = 512
	maxComputeWorkGroupSize: count = 3
		512
		512
		64
	subPixelPrecisionBits                           = 8
	subTexelPrecisionBits                           = 8
	mipmapPrecisionBits                             = 8
	maxDrawIndexedIndexValue                        = 4294967295
	maxDrawIndirectCount                            = 2147483648
	maxSamplerLodBias                               = 15
	maxSamplerAnisotropy                            = 16
	maxViewports                                    = 1
	maxViewportDimensions: count = 2
		16384
		16384
	viewportBoundsRange: count = 2
		-32768
		32768
	viewportSubPixelBits                            = 0
	minMemoryMapAlignment                           = 64
	minTexelBufferOffsetAlignment                   = 0x00000010
	minUniformBufferOffsetAlignment                 = 0x00000004
	minStorageBufferOffsetAlignment                 = 0x00000004
	minTexelOffset                                  = -8
	maxTexelOffset                                  = 7
	minTexelGatherOffset                            = -8
	maxTexelGatherOffset                            = 7
	minInterpolationOffset                          = -0.5
	maxInterpolationOffset                          = 0.5
	subPixelInterpolationOffsetBits                 = 4
	maxFramebufferWidth                             = 16384
	maxFramebufferHeight                            = 16384
	maxFramebufferLayers                            = 256
	framebufferColorSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	framebufferDepthSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	framebufferStencilSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	framebufferNoAttachmentsSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	maxColorAttachments                             = 8
	sampledImageColorSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	sampledImageIntegerSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	sampledImageDepthSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	sampledImageStencilSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	storageImageSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT
	maxSampleMaskWords                              = 1
	timestampComputeAndGraphics                     = false
	timestampPeriod                                 = 0
	maxClipDistances                                = 8
	maxCullDistances                                = 8
	maxCombinedClipAndCullDistances                 = 8
	discreteQueuePriorities                         = 2
	pointSizeRange: count = 2
		1
		511
	lineWidthRange: count = 2
		0.0625
		16
	pointSizeGranularity                            = 0.0625
	lineWidthGranularity                            = 0.0625
	strictLines                                     = true
	standardSampleLocations                         = true
	optimalBufferCopyOffsetAlignment                = 0x00000004
	optimalBufferCopyRowPitchAlignment              = 0x00000004
	nonCoherentAtomSize                             = 0x00000001

VkPhysicalDeviceSparseProperties:
---------------------------------
	residencyStandard2DBlockShape            = false
	residencyStandard2DMultisampleBlockShape = false
	residencyStandard3DBlockShape            = false
	residencyAlignedMipSize                  = false
	residencyNonResidentStrict               = false

VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT:
----------------------------------------------------
	advancedBlendMaxColorAttachments      = 8
	advancedBlendIndependentBlend         = true
	advancedBlendNonPremultipliedSrcColor = false
	advancedBlendNonPremultipliedDstColor = false
	advancedBlendCorrelatedOverlap        = false
	advancedBlendAllOperations            = false

VkPhysicalDeviceCustomBorderColorPropertiesEXT:
-----------------------------------------------
	maxCustomBorderColorSamplers = 2043

VkPhysicalDeviceLineRasterizationPropertiesEXT:
-----------------------------------------------
	lineSubPixelPrecisionBits = 8

VkPhysicalDevicePipelineRobustnessPropertiesEXT:
------------------------------------------------
	defaultRobustnessStorageBuffers = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
	defaultRobustnessUniformBuffers = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
	defaultRobustnessVertexInputs = PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT
	defaultRobustnessImages = PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT

VkPhysicalDeviceProvokingVertexPropertiesEXT:
---------------------------------------------
	provokingVertexModePerPipeline                       = true
	transformFeedbackPreservesTriangleFanProvokingVertex = false

VkPhysicalDevicePushDescriptorPropertiesKHR:
--------------------------------------------
	maxPushDescriptors = 32

VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT:
----------------------------------------------------
	maxVertexAttribDivisor = 4294967295

VkPhysicalDeviceVulkan11Properties:
-----------------------------------
	deviceUUID                        = 33302033-2034-3038-2031-303100000000
	driverUUID                        = 36333037-3936-3500-0000-000000000000
	deviceNodeMask                    = 0
	deviceLUIDValid                   = false
	subgroupSize                      = 128
	subgroupSupportedStages: count = 6
		SHADER_STAGE_VERTEX_BIT
		SHADER_STAGE_TESSELLATION_CONTROL_BIT
		SHADER_STAGE_TESSELLATION_EVALUATION_BIT
		SHADER_STAGE_GEOMETRY_BIT
		SHADER_STAGE_FRAGMENT_BIT
		SHADER_STAGE_COMPUTE_BIT
	subgroupSupportedOperations: count = 8
		SUBGROUP_FEATURE_BASIC_BIT
		SUBGROUP_FEATURE_VOTE_BIT
		SUBGROUP_FEATURE_ARITHMETIC_BIT
		SUBGROUP_FEATURE_BALLOT_BIT
		SUBGROUP_FEATURE_SHUFFLE_BIT
		SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
		SUBGROUP_FEATURE_CLUSTERED_BIT
		SUBGROUP_FEATURE_QUAD_BIT
	subgroupQuadOperationsInAllStages = true
	pointClippingBehavior             = POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
	maxMultiviewViewCount             = 6
	maxMultiviewInstanceIndex         = 134217727
	protectedNoFault                  = true
	maxPerSetDescriptors              = 4294967295
	maxMemoryAllocationSize           = 0x1000000000

VkPhysicalDeviceVulkan12Properties:
-----------------------------------
	driverID                                             = DRIVER_ID_IMAGINATION_PROPRIETARY
	driverName                                           = PowerVR A-Series Vulkan Driver
	driverInfo                                           = 1.18@6307965
	conformanceVersion:
		major    = 1
		minor    = 3
		subminor = 1
		patch    = 0
	denormBehaviorIndependence                           = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
	roundingModeIndependence                             = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
	shaderSignedZeroInfNanPreserveFloat16                = true
	shaderSignedZeroInfNanPreserveFloat32                = true
	shaderSignedZeroInfNanPreserveFloat64                = true
	shaderDenormPreserveFloat16                          = false
	shaderDenormPreserveFloat32                          = false
	shaderDenormPreserveFloat64                          = false
	shaderDenormFlushToZeroFloat16                       = false
	shaderDenormFlushToZeroFloat32                       = false
	shaderDenormFlushToZeroFloat64                       = false
	shaderRoundingModeRTEFloat16                         = false
	shaderRoundingModeRTEFloat32                         = false
	shaderRoundingModeRTEFloat64                         = false
	shaderRoundingModeRTZFloat16                         = true
	shaderRoundingModeRTZFloat32                         = true
	shaderRoundingModeRTZFloat64                         = true
	maxUpdateAfterBindDescriptorsInAllPools              = 4294967295
	shaderUniformBufferArrayNonUniformIndexingNative     = true
	shaderSampledImageArrayNonUniformIndexingNative      = true
	shaderStorageBufferArrayNonUniformIndexingNative     = true
	shaderStorageImageArrayNonUniformIndexingNative      = true
	shaderInputAttachmentArrayNonUniformIndexingNative   = true
	robustBufferAccessUpdateAfterBind                    = true
	quadDivergentImplicitLod                             = true
	maxPerStageDescriptorUpdateAfterBindSamplers         = 4294967295
	maxPerStageDescriptorUpdateAfterBindUniformBuffers   = 4294967295
	maxPerStageDescriptorUpdateAfterBindStorageBuffers   = 4294967295
	maxPerStageDescriptorUpdateAfterBindSampledImages    = 4294967295
	maxPerStageDescriptorUpdateAfterBindStorageImages    = 4294967295
	maxPerStageDescriptorUpdateAfterBindInputAttachments = 4294967295
	maxPerStageUpdateAfterBindResources                  = 4294967295
	maxDescriptorSetUpdateAfterBindSamplers              = 4294967295
	maxDescriptorSetUpdateAfterBindUniformBuffers        = 4294967295
	maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 4294967295
	maxDescriptorSetUpdateAfterBindStorageBuffers        = 4294967295
	maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 4294967295
	maxDescriptorSetUpdateAfterBindSampledImages         = 4294967295
	maxDescriptorSetUpdateAfterBindStorageImages         = 4294967295
	maxDescriptorSetUpdateAfterBindInputAttachments      = 4294967295
	supportedDepthResolveModes: count = 4
		RESOLVE_MODE_SAMPLE_ZERO_BIT
		RESOLVE_MODE_AVERAGE_BIT
		RESOLVE_MODE_MIN_BIT
		RESOLVE_MODE_MAX_BIT
	supportedStencilResolveModes: count = 3
		RESOLVE_MODE_SAMPLE_ZERO_BIT
		RESOLVE_MODE_MIN_BIT
		RESOLVE_MODE_MAX_BIT
	independentResolveNone                               = true
	independentResolve                                   = true
	filterMinmaxSingleComponentFormats                   = false
	filterMinmaxImageComponentMapping                    = false
	maxTimelineSemaphoreValueDifference                  = 4294967295
	framebufferIntegerColorSampleCounts: count = 4
		SAMPLE_COUNT_1_BIT
		SAMPLE_COUNT_2_BIT
		SAMPLE_COUNT_4_BIT
		SAMPLE_COUNT_8_BIT

VkPhysicalDeviceVulkan13Properties:
-----------------------------------
	minSubgroupSize                                                               = 4
	maxSubgroupSize                                                               = 128
	maxComputeWorkgroupSubgroups                                                  = 128
	requiredSubgroupSizeStages: count = 6
		SHADER_STAGE_VERTEX_BIT
		SHADER_STAGE_TESSELLATION_CONTROL_BIT
		SHADER_STAGE_TESSELLATION_EVALUATION_BIT
		SHADER_STAGE_GEOMETRY_BIT
		SHADER_STAGE_FRAGMENT_BIT
		SHADER_STAGE_COMPUTE_BIT
	maxInlineUniformBlockSize                                                     = 65536
	maxPerStageDescriptorInlineUniformBlocks                                      = 128
	maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks                       = 128
	maxDescriptorSetInlineUniformBlocks                                           = 256
	maxDescriptorSetUpdateAfterBindInlineUniformBlocks                            = 256
	maxInlineUniformTotalSize                                                     = 4294967295
	integerDotProduct8BitUnsignedAccelerated                                      = false
	integerDotProduct8BitSignedAccelerated                                        = false
	integerDotProduct8BitMixedSignednessAccelerated                               = false
	integerDotProduct4x8BitPackedUnsignedAccelerated                              = true
	integerDotProduct4x8BitPackedSignedAccelerated                                = false
	integerDotProduct4x8BitPackedMixedSignednessAccelerated                       = false
	integerDotProduct16BitUnsignedAccelerated                                     = false
	integerDotProduct16BitSignedAccelerated                                       = false
	integerDotProduct16BitMixedSignednessAccelerated                              = false
	integerDotProduct32BitUnsignedAccelerated                                     = false
	integerDotProduct32BitSignedAccelerated                                       = false
	integerDotProduct32BitMixedSignednessAccelerated                              = false
	integerDotProduct64BitUnsignedAccelerated                                     = false
	integerDotProduct64BitSignedAccelerated                                       = false
	integerDotProduct64BitMixedSignednessAccelerated                              = false
	integerDotProductAccumulatingSaturating8BitUnsignedAccelerated                = false
	integerDotProductAccumulatingSaturating8BitSignedAccelerated                  = false
	integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated         = false
	integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated        = false
	integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated          = false
	integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = false
	integerDotProductAccumulatingSaturating16BitUnsignedAccelerated               = false
	integerDotProductAccumulatingSaturating16BitSignedAccelerated                 = false
	integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated        = false
	integerDotProductAccumulatingSaturating32BitUnsignedAccelerated               = false
	integerDotProductAccumulatingSaturating32BitSignedAccelerated                 = false
	integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated        = false
	integerDotProductAccumulatingSaturating64BitUnsignedAccelerated               = false
	integerDotProductAccumulatingSaturating64BitSignedAccelerated                 = false
	integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated        = false
	storageTexelBufferOffsetAlignmentBytes                                        = 0x00000010
	storageTexelBufferOffsetSingleTexelAlignment                                  = true
	uniformTexelBufferOffsetAlignmentBytes                                        = 0x00000010
	uniformTexelBufferOffsetSingleTexelAlignment                                  = true
	maxBufferSize                                                                 = 0x1000000000


VkPhysicalDeviceHostImageCopyPropertiesEXT:
	copySrcLayoutCount                  = 0
	pCopySrcLayouts:
	copyDstLayoutCount                  = 0
	pCopyDstLayouts:
	optimalTilingLayoutUUID             = 00000000-0000-0000-0000-000000000000
	identicalMemoryTypeRequirements     = false
Device Extensions: count = 93
	VK_ARM_rasterization_order_attachment_access : extension revision 1
	VK_EXT_4444_formats                          : extension revision 1
	VK_EXT_blend_operation_advanced              : extension revision 2
	VK_EXT_buffer_device_address                 : extension revision 2
	VK_EXT_conditional_rendering                 : extension revision 2
	VK_EXT_custom_border_color                   : extension revision 12
	VK_EXT_debug_marker                          : extension revision 4
	VK_EXT_depth_clip_control                    : extension revision 1
	VK_EXT_descriptor_indexing                   : extension revision 2
	VK_EXT_device_memory_report                  : extension revision 2
	VK_EXT_extended_dynamic_state                : extension revision 1
	VK_EXT_extended_dynamic_state2               : extension revision 1
	VK_EXT_external_memory_dma_buf               : extension revision 1
	VK_EXT_global_priority                       : extension revision 2
	VK_EXT_global_priority_query                 : extension revision 1
	VK_EXT_host_query_reset                      : extension revision 1
	VK_EXT_image_compression_control             : extension revision 1
	VK_EXT_image_drm_format_modifier             : extension revision 2
	VK_EXT_image_robustness                      : extension revision 1
	VK_EXT_index_type_uint8                      : extension revision 1
	VK_EXT_inline_uniform_block                  : extension revision 1
	VK_EXT_line_rasterization                    : extension revision 1
	VK_EXT_pipeline_creation_cache_control       : extension revision 3
	VK_EXT_pipeline_creation_feedback            : extension revision 1
	VK_EXT_pipeline_robustness                   : extension revision 1
	VK_EXT_primitive_topology_list_restart       : extension revision 1
	VK_EXT_private_data                          : extension revision 1
	VK_EXT_provoking_vertex                      : extension revision 1
	VK_EXT_queue_family_foreign                  : extension revision 1
	VK_EXT_rasterization_order_attachment_access : extension revision 1
	VK_EXT_scalar_block_layout                   : extension revision 1
	VK_EXT_separate_stencil_usage                : extension revision 1
	VK_EXT_shader_demote_to_helper_invocation    : extension revision 1
	VK_EXT_shader_subgroup_vote                  : extension revision 1
	VK_EXT_subgroup_size_control                 : extension revision 2
	VK_EXT_subpass_merge_feedback                : extension revision 2
	VK_EXT_texel_buffer_alignment                : extension revision 1
	VK_EXT_tooling_info                          : extension revision 1
	VK_EXT_vertex_attribute_divisor              : extension revision 3
	VK_IMG_conditional_rendering_comparison_info : extension revision 1
	VK_IMG_format_pvrtc                          : extension revision 1
	VK_KHR_16bit_storage                         : extension revision 1
	VK_KHR_8bit_storage                          : extension revision 1
	VK_KHR_bind_memory2                          : extension revision 1
	VK_KHR_buffer_device_address                 : extension revision 1
	VK_KHR_copy_commands2                        : extension revision 1
	VK_KHR_create_renderpass2                    : extension revision 1
	VK_KHR_dedicated_allocation                  : extension revision 3
	VK_KHR_depth_stencil_resolve                 : extension revision 1
	VK_KHR_descriptor_update_template            : extension revision 1
	VK_KHR_device_group                          : extension revision 4
	VK_KHR_draw_indirect_count                   : extension revision 1
	VK_KHR_driver_properties                     : extension revision 1
	VK_KHR_dynamic_rendering                     : extension revision 1
	VK_KHR_external_fence                        : extension revision 1
	VK_KHR_external_fence_fd                     : extension revision 1
	VK_KHR_external_memory                       : extension revision 1
	VK_KHR_external_memory_fd                    : extension revision 1
	VK_KHR_external_semaphore                    : extension revision 1
	VK_KHR_external_semaphore_fd                 : extension revision 1
	VK_KHR_format_feature_flags2                 : extension revision 2
	VK_KHR_get_memory_requirements2              : extension revision 1
	VK_KHR_global_priority                       : extension revision 1
	VK_KHR_image_format_list                     : extension revision 1
	VK_KHR_imageless_framebuffer                 : extension revision 1
	VK_KHR_maintenance1                          : extension revision 2
	VK_KHR_maintenance2                          : extension revision 1
	VK_KHR_maintenance3                          : extension revision 1
	VK_KHR_maintenance4                          : extension revision 2
	VK_KHR_multiview                             : extension revision 1
	VK_KHR_push_descriptor                       : extension revision 2
	VK_KHR_relaxed_block_layout                  : extension revision 1
	VK_KHR_sampler_mirror_clamp_to_edge          : extension revision 3
	VK_KHR_sampler_ycbcr_conversion              : extension revision 14
	VK_KHR_separate_depth_stencil_layouts        : extension revision 1
	VK_KHR_shader_clock                          : extension revision 1
	VK_KHR_shader_draw_parameters                : extension revision 1
	VK_KHR_shader_float16_int8                   : extension revision 1
	VK_KHR_shader_float_controls                 : extension revision 4
	VK_KHR_shader_integer_dot_product            : extension revision 1
	VK_KHR_shader_non_semantic_info              : extension revision 1
	VK_KHR_shader_subgroup_extended_types        : extension revision 1
	VK_KHR_shader_terminate_invocation           : extension revision 1
	VK_KHR_spirv_1_4                             : extension revision 1
	VK_KHR_storage_buffer_storage_class          : extension revision 1
	VK_KHR_swapchain                             : extension revision 70
	VK_KHR_swapchain_mutable_format              : extension revision 1
	VK_KHR_synchronization2                      : extension revision 1
	VK_KHR_timeline_semaphore                    : extension revision 2
	VK_KHR_uniform_buffer_standard_layout        : extension revision 1
	VK_KHR_variable_pointers                     : extension revision 1
	VK_KHR_vulkan_memory_model                   : extension revision 3
	VK_KHR_zero_initialize_workgroup_memory      : extension revision 1

VkQueueFamilyProperties:
========================
	queueProperties[0]:
	-------------------
		minImageTransferGranularity = (1,1,1)
		queueCount                  = 2
		queueFlags                  = QUEUE_GRAPHICS_BIT | QUEUE_COMPUTE_BIT | QUEUE_TRANSFER_BIT
		timestampValidBits          = 0
		present support             = false
		VkQueueFamilyGlobalPriorityPropertiesKHR:
		-----------------------------------------
			priorityCount  = 3
			priorities: count = 3
				QUEUE_GLOBAL_PRIORITY_LOW_KHR
				QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR
				QUEUE_GLOBAL_PRIORITY_HIGH_KHR


VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
	memoryHeaps[0]:
		size   = 16777003008 (0x3e7fcc000) (15.62 GiB)
		flags: count = 1
			MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 4
	memoryTypes[0]:
		heapIndex     = 0
		propertyFlags = 0x0001: count = 1
			MEMORY_PROPERTY_DEVICE_LOCAL_BIT
		usable for:
			IMAGE_TILING_OPTIMAL:
				color images
				FORMAT_D16_UNORM
				FORMAT_X8_D24_UNORM_PACK32
				FORMAT_D32_SFLOAT
				FORMAT_S8_UINT
				FORMAT_D24_UNORM_S8_UINT
				(non-sparse)
			IMAGE_TILING_LINEAR:
				color images
				(non-sparse)
	memoryTypes[1]:
		heapIndex     = 0
		propertyFlags = 0x0011: count = 2
			MEMORY_PROPERTY_DEVICE_LOCAL_BIT
			MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
		usable for:
			IMAGE_TILING_OPTIMAL:
				color images
				FORMAT_D16_UNORM
				FORMAT_X8_D24_UNORM_PACK32
				FORMAT_D32_SFLOAT
				FORMAT_S8_UINT
				FORMAT_D24_UNORM_S8_UINT
				(transient only)
			IMAGE_TILING_LINEAR:
				color images
				(transient only)
	memoryTypes[2]:
		heapIndex     = 0
		propertyFlags = 0x0007: count = 3
			MEMORY_PROPERTY_DEVICE_LOCAL_BIT
			MEMORY_PROPERTY_HOST_VISIBLE_BIT
			MEMORY_PROPERTY_HOST_COHERENT_BIT
		usable for:
			IMAGE_TILING_OPTIMAL:
				color images
				FORMAT_D16_UNORM
				FORMAT_X8_D24_UNORM_PACK32
				FORMAT_D32_SFLOAT
				FORMAT_S8_UINT
				FORMAT_D24_UNORM_S8_UINT
				(non-sparse)
			IMAGE_TILING_LINEAR:
				color images
				(non-sparse)
	memoryTypes[3]:
		heapIndex     = 0
		propertyFlags = 0x000b: count = 3
			MEMORY_PROPERTY_DEVICE_LOCAL_BIT
			MEMORY_PROPERTY_HOST_VISIBLE_BIT
			MEMORY_PROPERTY_HOST_CACHED_BIT
		usable for:
			IMAGE_TILING_OPTIMAL:
				color images
				FORMAT_D16_UNORM
				FORMAT_X8_D24_UNORM_PACK32
				FORMAT_D32_SFLOAT
				FORMAT_S8_UINT
				FORMAT_D24_UNORM_S8_UINT
				(non-sparse)
			IMAGE_TILING_LINEAR:
				color images
				(non-sparse)

VkPhysicalDeviceFeatures:
=========================
	robustBufferAccess                      = true
	fullDrawIndexUint32                     = true
	imageCubeArray                          = true
	independentBlend                        = true
	geometryShader                          = true
	tessellationShader                      = true
	sampleRateShading                       = true
	dualSrcBlend                            = false
	logicOp                                 = true
	multiDrawIndirect                       = true
	drawIndirectFirstInstance               = true
	depthClamp                              = true
	depthBiasClamp                          = true
	fillModeNonSolid                        = false
	depthBounds                             = false
	wideLines                               = true
	largePoints                             = true
	alphaToOne                              = true
	multiViewport                           = false
	samplerAnisotropy                       = true
	textureCompressionETC2                  = true
	textureCompressionASTC_LDR              = true
	textureCompressionBC                    = false
	occlusionQueryPrecise                   = true
	pipelineStatisticsQuery                 = false
	vertexPipelineStoresAndAtomics          = true
	fragmentStoresAndAtomics                = true
	shaderTessellationAndGeometryPointSize  = true
	shaderImageGatherExtended               = true
	shaderStorageImageExtendedFormats       = true
	shaderStorageImageMultisample           = true
	shaderStorageImageReadWithoutFormat     = true
	shaderStorageImageWriteWithoutFormat    = true
	shaderUniformBufferArrayDynamicIndexing = true
	shaderSampledImageArrayDynamicIndexing  = true
	shaderStorageBufferArrayDynamicIndexing = true
	shaderStorageImageArrayDynamicIndexing  = true
	shaderClipDistance                      = true
	shaderCullDistance                      = true
	shaderFloat64                           = false
	shaderInt64                             = true
	shaderInt16                             = true
	shaderResourceResidency                 = false
	shaderResourceMinLod                    = false
	sparseBinding                           = false
	sparseResidencyBuffer                   = false
	sparseResidencyImage2D                  = false
	sparseResidencyImage3D                  = false
	sparseResidency2Samples                 = false
	sparseResidency4Samples                 = false
	sparseResidency8Samples                 = false
	sparseResidency16Samples                = false
	sparseResidencyAliased                  = false
	variableMultisampleRate                 = false
	inheritedQueries                        = false

VkPhysicalDevice4444FormatsFeaturesEXT:
---------------------------------------
	formatA4R4G4B4 = true
	formatA4B4G4R4 = true

VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT:
--------------------------------------------------
	advancedBlendCoherentOperations = true

VkPhysicalDeviceBufferDeviceAddressFeaturesEXT:
-----------------------------------------------
	bufferDeviceAddress              = true
	bufferDeviceAddressCaptureReplay = false
	bufferDeviceAddressMultiDevice   = false

VkPhysicalDeviceConditionalRenderingFeaturesEXT:
------------------------------------------------
	conditionalRendering          = true
	inheritedConditionalRendering = false

VkPhysicalDeviceCustomBorderColorFeaturesEXT:
---------------------------------------------
	customBorderColors             = true
	customBorderColorWithoutFormat = true

VkPhysicalDeviceDepthClipControlFeaturesEXT:
--------------------------------------------
	depthClipControl = true

VkPhysicalDeviceDeviceMemoryReportFeaturesEXT:
----------------------------------------------
	deviceMemoryReport = true

VkPhysicalDeviceExtendedDynamicState2FeaturesEXT:
-------------------------------------------------
	extendedDynamicState2                   = true
	extendedDynamicState2LogicOp            = false
	extendedDynamicState2PatchControlPoints = true

VkPhysicalDeviceExtendedDynamicStateFeaturesEXT:
------------------------------------------------
	extendedDynamicState = true

VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR:
-----------------------------------------------
	globalPriorityQuery = true

VkPhysicalDeviceImageCompressionControlFeaturesEXT:
---------------------------------------------------
	imageCompressionControl = true

VkPhysicalDeviceIndexTypeUint8FeaturesEXT:
------------------------------------------
	indexTypeUint8 = true

VkPhysicalDeviceLineRasterizationFeaturesEXT:
---------------------------------------------
	rectangularLines         = true
	bresenhamLines           = false
	smoothLines              = false
	stippledRectangularLines = false
	stippledBresenhamLines   = false
	stippledSmoothLines      = false

VkPhysicalDevicePipelineRobustnessFeaturesEXT:
----------------------------------------------
	pipelineRobustness = true

VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT:
--------------------------------------------------------
	primitiveTopologyListRestart      = true
	primitiveTopologyPatchListRestart = true

VkPhysicalDeviceProvokingVertexFeaturesEXT:
-------------------------------------------
	provokingVertexLast                       = true
	transformFeedbackPreservesProvokingVertex = false

VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT:
--------------------------------------------------------------
	rasterizationOrderColorAttachmentAccess   = true
	rasterizationOrderDepthAttachmentAccess   = true
	rasterizationOrderStencilAttachmentAccess = false

VkPhysicalDeviceShaderClockFeaturesKHR:
---------------------------------------
	shaderSubgroupClock = true
	shaderDeviceClock   = true

VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT:
------------------------------------------------
	subpassMergeFeedback = true

VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT:
------------------------------------------------
	texelBufferAlignment = true

VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR:
--------------------------------------------------
	vertexAttributeInstanceRateDivisor     = true
	vertexAttributeInstanceRateZeroDivisor = true

VkPhysicalDeviceVulkan11Features:
---------------------------------
	storageBuffer16BitAccess           = true
	uniformAndStorageBuffer16BitAccess = true
	storagePushConstant16              = true
	storageInputOutput16               = true
	multiview                          = true
	multiviewGeometryShader            = true
	multiviewTessellationShader        = true
	variablePointersStorageBuffer      = true
	variablePointers                   = true
	protectedMemory                    = false
	samplerYcbcrConversion             = true
	shaderDrawParameters               = true

VkPhysicalDeviceVulkan12Features:
---------------------------------
	samplerMirrorClampToEdge                           = true
	drawIndirectCount                                  = true
	storageBuffer8BitAccess                            = true
	uniformAndStorageBuffer8BitAccess                  = true
	storagePushConstant8                               = true
	shaderBufferInt64Atomics                           = false
	shaderSharedInt64Atomics                           = false
	shaderFloat16                                      = true
	shaderInt8                                         = true
	descriptorIndexing                                 = true
	shaderInputAttachmentArrayDynamicIndexing          = true
	shaderUniformTexelBufferArrayDynamicIndexing       = true
	shaderStorageTexelBufferArrayDynamicIndexing       = true
	shaderUniformBufferArrayNonUniformIndexing         = true
	shaderSampledImageArrayNonUniformIndexing          = true
	shaderStorageBufferArrayNonUniformIndexing         = true
	shaderStorageImageArrayNonUniformIndexing          = true
	shaderInputAttachmentArrayNonUniformIndexing       = true
	shaderUniformTexelBufferArrayNonUniformIndexing    = true
	shaderStorageTexelBufferArrayNonUniformIndexing    = true
	descriptorBindingUniformBufferUpdateAfterBind      = true
	descriptorBindingSampledImageUpdateAfterBind       = true
	descriptorBindingStorageImageUpdateAfterBind       = true
	descriptorBindingStorageBufferUpdateAfterBind      = true
	descriptorBindingUniformTexelBufferUpdateAfterBind = true
	descriptorBindingStorageTexelBufferUpdateAfterBind = true
	descriptorBindingUpdateUnusedWhilePending          = true
	descriptorBindingPartiallyBound                    = true
	descriptorBindingVariableDescriptorCount           = true
	runtimeDescriptorArray                             = true
	samplerFilterMinmax                                = false
	scalarBlockLayout                                  = true
	imagelessFramebuffer                               = true
	uniformBufferStandardLayout                        = true
	shaderSubgroupExtendedTypes                        = true
	separateDepthStencilLayouts                        = true
	hostQueryReset                                     = true
	timelineSemaphore                                  = true
	bufferDeviceAddress                                = true
	bufferDeviceAddressCaptureReplay                   = true
	bufferDeviceAddressMultiDevice                     = false
	vulkanMemoryModel                                  = true
	vulkanMemoryModelDeviceScope                       = true
	vulkanMemoryModelAvailabilityVisibilityChains      = true
	shaderOutputViewportIndex                          = false
	shaderOutputLayer                                  = false
	subgroupBroadcastDynamicId                         = true

VkPhysicalDeviceVulkan13Features:
---------------------------------
	robustImageAccess                                  = true
	inlineUniformBlock                                 = true
	descriptorBindingInlineUniformBlockUpdateAfterBind = true
	pipelineCreationCacheControl                       = true
	privateData                                        = true
	shaderDemoteToHelperInvocation                     = true
	shaderTerminateInvocation                          = true
	subgroupSizeControl                                = true
	computeFullSubgroups                               = true
	synchronization2                                   = true
	textureCompressionASTC_HDR                         = false
	shaderZeroInitializeWorkgroupMemory                = true
	dynamicRendering                                   = true
	shaderIntegerDotProduct                            = true
	maintenance4                                       = true

OpenGL Info:

$ DISPLAY=:1 glxinfo -B
name of display: :1
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  68
  Current serial number in output stream:  69

@geerlingguy
Copy link
Owner Author

After upgrading to the latest versions of everything (I was avoiding that initially, as it has caused issues on RISC-V dev boards in the past...), GLMark2 actually runs now! Though most other 3D/Mesa utilities keep showing various failures.

@geerlingguy
Copy link
Owner Author

lspci -vvvv output with AMD Radeon HD R5 230 Graphics Card installed:

ubuntu@ubuntu:~$ sudo lspci -vvvv
00:00.0 PCI bridge: Beijing ESWIN Computing Technology Co., Ltd. EIC7700 Root Complex (rev 01) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR+ <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 43
	IOMMU group: 5
	Region 0: Memory at 48000000 (32-bit, non-prefetchable) [size=128M]
	Region 1: Memory at 41000000 (32-bit, non-prefetchable) [size=1M]
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 1000-1fff [size=4K] [16-bit]
	Memory behind bridge: 41100000-411fffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: 8000000000-800fffffff [size=256M] [32-bit]
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR+ <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [40] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [50] MSI: Enable+ Count=1/32 Maskable+ 64bit+
		Address: 00000000fffff000  Data: 0000
		Masking: fffffffe  Pending: 004440e2
	Capabilities: [70] Express (v2) Root Port (Slot-), MSI 00
		DevCap:	MaxPayload 512 bytes, PhantFunc 0
			ExtTag+ RBE+
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #0, Speed 8GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <4us, L1 <16us
			ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x4
			TrErr- Train- SlotClk+ DLActive+ BWMgmt+ ABWMgmt+
		RootCap: CRSVisible+
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible+
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP+ LTR-
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- LN System CLS Not Supported, TPHComp- ExtTPHComp- ARIFwd-
			 AtomicOpsCap: Routing- 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled, ARIFwd-
			 AtomicOpsCtl: ReqEn- EgressBlck-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [100 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
		RootCmd: CERptEn+ NFERptEn+ FERptEn+
		RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd-
			 FirstFatal- NonFatalMsg- FatalMsg- IntMsg 0
		ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0100
	Capabilities: [148 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [188 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2- ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=10us PortTPowerOnTime=10us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=10us
		L1SubCtl2: T_PwrOn=10us
	Capabilities: [198 v1] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
	Capabilities: [298 v1] Vendor Specific Information: ID=0006 Rev=0 Len=018 <?>
	Kernel driver in use: pcieport

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (prog-if 00 [VGA controller])
	Subsystem: Hightech Information System Ltd. Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 91
	IOMMU group: 5
	Region 0: Memory at 8000000000 (64-bit, prefetchable) [size=256M]
	Region 2: Memory at 41100000 (64-bit, non-prefetchable) [size=128K]
	Region 4: I/O ports at 1000 [size=256]
	Expansion ROM at 41120000 [disabled] [size=128K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr+ FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #4, Speed 5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x4 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR-
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fffff000  Data: 0002
	Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 40000001 0000000f fffff000 00000000
	Kernel driver in use: radeon
	Kernel modules: radeon, amdgpu

01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM]
	Subsystem: Hightech Information System Ltd. Caicos HDMI Audio [Radeon HD 6450 / 7450/8450/8490 OEM / R5 230/235/235X OEM]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin B routed to IRQ 89
	IOMMU group: 5
	Region 0: Memory at 41140000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr+ FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #4, Speed 5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 5GT/s, Width x4 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR-
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fffff000  Data: 0001
	Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 40000001 0000000f fffff000 00000000
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

I get display output, but all the OpenGL/Vulkan stuff still uses the internal PowerVR GPU.

@geerlingguy
Copy link
Owner Author

SuperTuxKart also gives errors, as it is trying to use OpenGL:

[info   ] ServerConfig: Could not read server config file '/home/ubuntu/.config/supertuxkart/config-0.10/server_config.xml'. A new file will be created.
..:: Antarctica Rendering Engine 2.0 ::..
[info   ] [IrrDriver Logger]: ..:: Antarctica Rendering Engine 2.0 ::..
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  113
  Current serial number in output stream:  114

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 7, 2025

Testing an RX 480 with a monstrosity of a riser... and a CPU 8-pin to PCIe 6-pin power adapter :D

Image

I'm using a 5cm Sintech PCI-E Express X16 Riser and a COMeap CPU to GPU 8 pin to dual 6+2 pin adapter cable. And the card is precariously balancing on the top of the open enclosure :)

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 7, 2025

And booting with the AMD RX 480 GPU installed:

ubuntu@ubuntu:~$ sudo dmesg | grep amdgpu
[   30.396777] [drm] amdgpu kernel modesetting enabled.
[   30.396898] amdgpu 0000:01:00.0: Failed to enable PASID
[   30.405968] amdgpu 0000:01:00.0: Adding to iommu group 5
[   30.406261] amdgpu 0000:01:00.0: enabling device (0000 -> 0003)
[   30.620928] amdgpu 0000:01:00.0: amdgpu: Fetched VBIOS from ROM BAR
[   30.620948] amdgpu: ATOM BIOS: 113-BAFFIN_PRO_160513_D5_4GB_MIC_0_W82
[   30.621114] amdgpu 0000:01:00.0: vgaarb: deactivate vga console
[   30.621125] amdgpu 0000:01:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[   30.621133] amdgpu 0000:01:00.0: amdgpu: PCIE atomic ops is not supported
[   31.092725] amdgpu 0000:01:00.0: BAR 2: releasing [mem 0x8010000000-0x80101fffff 64bit pref]
[   31.092739] amdgpu 0000:01:00.0: BAR 0: releasing [mem 0x8000000000-0x800fffffff 64bit pref]
[   31.092834] amdgpu 0000:01:00.0: BAR 0: assigned [mem 0x8000000000-0x80ffffffff 64bit pref]
[   31.092860] amdgpu 0000:01:00.0: BAR 2: assigned [mem 0x8100000000-0x81001fffff 64bit pref]
[   31.092921] amdgpu 0000:01:00.0: amdgpu: VRAM: 4096M 0x000000F400000000 - 0x000000F4FFFFFFFF (4096M used)
[   31.092929] amdgpu 0000:01:00.0: amdgpu: GART: 256M 0x000000FF00000000 - 0x000000FF0FFFFFFF
[   31.093169] [drm] amdgpu: 4096M of VRAM memory ready
[   31.093177] [drm] amdgpu: 7999M of GTT memory ready.
[   31.123006] amdgpu: hwmgr_sw_init smu backed is polaris10_smu
[   31.502814] snd_hda_intel 0000:01:00.1: bound 0000:01:00.0 (ops amdgpu_dm_audio_component_bind_ops [amdgpu])
[   31.646982] amdgpu 0000:01:00.0: amdgpu: SE 2, SH per SE 1, CU per SH 8, active_cu_number 14
[   31.652147] amdgpu 0000:01:00.0: amdgpu: Using BACO for runtime pm
[   31.659567] [drm] Initialized amdgpu 3.54.0 20150101 for 0000:01:00.0 on minor 2
[   31.666522] amdgpu 0000:01:00.0: [drm] Cannot find any crtc or sizes
[   41.352126] amdgpu 0000:01:00.0: [drm] Cannot find any crtc or sizes
[  117.653629] amdgpu 0000:01:00.0: [drm] Cannot find any crtc or sizes
[  367.197695] amdgpu 0000:01:00.0: [drm] Cannot find any crtc or sizes
[  435.621750] amdgpu 0000:01:00.0: [drm] Cannot find any crtc or sizes

And lspci:

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] (rev cf) (prog-if 00 [VGA controller])
	Subsystem: XFX Pine Group Inc. Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X]
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 91
	IOMMU group: 5
	Region 0: Memory at 8000000000 (64-bit, prefetchable) [size=4G]
	Region 2: Memory at 8100000000 (64-bit, prefetchable) [size=2M]
	Region 4: I/O ports at 1000 [size=256]
	Region 5: Memory at 41100000 (32-bit, non-prefetchable) [size=256K]
	Expansion ROM at 41140000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
		Status: D3 NoSoftRst+ PME-Enable+ DSel=0 DScale=0 PME-
	Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr+ FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #4, Speed 8GT/s, Width x8, ASPM L1, Exit Latency L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x4 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS-
			 AtomicOpsCap: 32bit+ 64bit+ 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+
			 EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fffff000  Data: 0002
	Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 40000001 0000000f fffff000 00000000
	Capabilities: [200 v1] Physical Resizable BAR
		BAR 0: current size: 4GB, supported: 256MB 512MB 1GB 2GB 4GB
	Capabilities: [270 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Capabilities: [2b0 v1] Address Translation Service (ATS)
		ATSCap:	Invalidate Queue Depth: 00
		ATSCtl:	Enable-, Smallest Translation Unit: 00
	Capabilities: [2c0 v1] Page Request Interface (PRI)
		PRICtl: Enable- Reset-
		PRISta: RF- UPRGI- Stopped-
		Page Request Capacity: 00000020, Page Request Allocation: 00000000
	Capabilities: [2d0 v1] Process Address Space ID (PASID)
		PASIDCap: Exec+ Priv+, Max PASID Width: 10
		PASIDCtl: Enable- Exec- Priv-
	Capabilities: [320 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [328 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 1
		ARICtl:	MFVC- ACS-, Function Group: 0
	Capabilities: [370 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=0us PortTPowerOnTime=170us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=186368ns
		L1SubCtl2: T_PwrOn=170us
	Kernel driver in use: amdgpu
	Kernel modules: amdgpu

01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X]
	Subsystem: XFX Pine Group Inc. Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X]
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin B routed to IRQ 89
	IOMMU group: 5
	Region 0: Memory at 41160000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D3 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr+ NonFatalErr+ FatalErr- UnsupReq+ AuxPwr- TransPend-
		LnkCap:	Port #4, Speed 8GT/s, Width x8, ASPM L1, Exit Latency L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s (downgraded), Width x4 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 1
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS-
			 AtomicOpsCap: 32bit+ 64bit+ 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR- 10BitTagReq- OBFF Disabled,
			 AtomicOpsCtl: ReqEn-
		LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
			 EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported
	Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fffff000  Data: 0001
	Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
		AERCap:	First Error Pointer: 14, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 40000001 0000000f fffff000 00000000
	Capabilities: [328 v1] Alternative Routing-ID Interpretation (ARI)
		ARICap:	MFVC- ACS-, Next Function: 0
		ARICtl:	MFVC- ACS-, Function Group: 0
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 7, 2025

I got display output through the RX 480 as well, but can't get any of the tooling to use it instead of the Imagination PowerVR iGPU... probably just a noob to graphics drivers in Linux thing...

Also, while booting, there is no display output through the AMD graphics card, just like on Arm—it seems to only start outputting any display after Linux is fully booted and the drivers are loaded in.

Everything seems to give that same 152 (GLX) failed request...

ubuntu@ubuntu:~$ DISPLAY=:1 glxinfo -B
name of display: :1
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  68
  Current serial number in output stream:  69

Is it provided by es_drm?

ubuntu@ubuntu:~$ sudo dmesg | grep es_drm
[    2.542193] es_drm soc:display-subsystem: bound 502c0000.display_control (ops dc_component_ops)
[    2.572940] es_drm soc:display-subsystem: bound 502a0000.hdmi (ops dw_hdmi_eswin_ops)
[    2.581282] [drm] Initialized es_drm 1.0.0 20191101 for soc:display-subsystem on minor 0
[    2.589571] es_drm soc:display-subsystem: [drm] Cannot find any crtc or sizes
[    2.596869] es_drm soc:display-subsystem: [drm] Cannot find any crtc or sizes
[    2.604095] es_drm soc:display-subsystem: [drm] Cannot find any crtc or sizes

I'm trying to blacklist es_drm in /etc/modprobe.d/blacklist-esdrm.conf, and rebooting... maybe I can force Linux to just use amdgpu?

I've also started a SiFive forum topic: AMD GPU on P550 - Display works, OpenGL doesn’t

@geerlingguy
Copy link
Owner Author

Testing a Kioxia XG8 NVMe PCIe SSD in a x1 adapter (my only x4 adapter is installed somewhere, not sure where it ran off to lol):

01:00.0 Non-Volatile memory controller: KIOXIA Corporation NVMe SSD Controller XG8 (rev 01) (prog-if 02 [NVM Express])
	Subsystem: KIOXIA Corporation NVMe SSD Controller XG8
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 12
	IOMMU group: 5
	Region 0: Memory at 41100000 (64-bit, non-prefetchable) [size=16K]
...
		LnkCap:	Port #0, Speed 16GT/s, Width x4, ASPM L1, Exit Latency L1 <32us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, Disabled- CommClk+
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 8GT/s (downgraded), Width x1 (downgraded)
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

Run my disk benchmark script:

wget https://raw.githubusercontent.com/geerlingguy/pi-cluster/refs/heads/master/benchmarks/disk-benchmark.sh
chmod +x disk-benchmark.sh
sudo MOUNT_PATH=/mnt/nvme TEST_SIZE=1g ./disk-benchmark.sh

Results:

Benchmark Result
iozone 4K random read 45.00 MB/s
iozone 4K random write 82.66 MB/s
iozone 1M random read 585.13 MB/s
iozone 1M random write 614.41 MB/s
iozone 1M sequential read 591.46 MB/s
iozone 1M sequential write 616.79 MB/s

IMPORTANT NOTE: This drive should give a lot better performance if I run it with x4, so please don't draw any conclusions from the above results until after I re-run with the full bandwidth available ;)

@geerlingguy
Copy link
Owner Author

Over in the SiFive forum post, I got a reply directing me to the Release 2025.02.00 notes.

Now:

$ export MESA_LOADER_DRIVER_OVERRIDE=zink
$ supertuxkart  # WORKS!

$ glxinfo -B
name of display: :1
WARNING: Some incorrect rendering might occur because the selected Vulkan device (PowerVR A-Series AXM-8-256) doesn't support base Zink requirements: feats.features.fillModeNonSolid 
display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Collabora Ltd (0x1010)
    Device: zink (PowerVR A-Series AXM-8-256) (0x30010101)
    Version: 805372161.1.8
    Accelerated: yes
    Video memory: 15999MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 15999 MB, largest block: 15999 MB
    VBO free aux. memory - total: 0 MB, largest block: 0 MB
    Texture free memory - total: 15999 MB, largest block: 15999 MB
    Texture free aux. memory - total: 0 MB, largest block: 0 MB
    Renderbuffer free memory - total: 15999 MB, largest block: 15999 MB
    Renderbuffer free aux. memory - total: 0 MB, largest block: 0 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 15999 MB
    Total available memory: 15999 MB
    Currently available dedicated video memory: 15999 MB
OpenGL vendor string: Collabora Ltd
OpenGL renderer string: zink (PowerVR A-Series AXM-8-256)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 1:22.3.5-0ubuntu0~ppa10
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 1:22.3.5-0ubuntu0~ppa10
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 1:22.3.5-0ubuntu0~ppa10
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 7, 2025

I ran:

sudo mv /usr/share/X11/xorg.conf.d/10-pvr.conf /usr/share/X11/xorg.conf.d/10-pvr.conf.hidden

(To switch back, do the opposite:)
# sudo mv /usr/share/X11/xorg.conf.d/10-pvr.conf.hidden /usr/share/X11/xorg.conf.d/10-pvr.conf

Then shut down, plugged the RX 550 back in, and booted back up. (Correction, I have an RX 460...)

Now:

$ glxinfo -B
name of display: :1
display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: AMD (0x1002)
    Device: AMD Radeon RX 460 Graphics (polaris11, LLVM 15.0.7, DRM 3.54, 6.6.21-10-premier) (0x67ef)
    Version: 26607.1.8
    Accelerated: yes
    Video memory: 4096MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 3870 MB, largest block: 3870 MB
    VBO free aux. memory - total: 7967 MB, largest block: 7967 MB
    Texture free memory - total: 3870 MB, largest block: 3870 MB
    Texture free aux. memory - total: 7967 MB, largest block: 7967 MB
    Renderbuffer free memory - total: 3870 MB, largest block: 3870 MB
    Renderbuffer free aux. memory - total: 7967 MB, largest block: 7967 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 4096 MB
    Total available memory: 12095 MB
    Currently available dedicated video memory: 3870 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 460 Graphics (polaris11, LLVM 15.0.7, DRM 3.54, 6.6.21-10-premier)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 1:22.3.5-0ubuntu0~ppa10
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 1:22.3.5-0ubuntu0~ppa10
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 1:22.3.5-0ubuntu0~ppa10
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

SuperTuxKart is running with full acceleration too! Going to test some other things...

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 7, 2025

GLMark2 on the RX 460:

=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      AMD
    GL_RENDERER:    AMD Radeon RX 460 Graphics (polaris11, LLVM 15.0.7, DRM 3.54, 6.6.21-10-premier)
    GL_VERSION:     4.6 (Compatibility Profile) Mesa 1:22.3.5-0ubuntu0~ppa10
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 912 FrameTime: 1.097 ms
[build] use-vbo=true: FPS: 3097 FrameTime: 0.323 ms
[texture] texture-filter=nearest: FPS: 3238 FrameTime: 0.309 ms
[texture] texture-filter=linear: FPS: 3196 FrameTime: 0.313 ms
[texture] texture-filter=mipmap: FPS: 3230 FrameTime: 0.310 ms
[shading] shading=gouraud: FPS: 3231 FrameTime: 0.310 ms
[shading] shading=blinn-phong-inf: FPS: 3204 FrameTime: 0.312 ms
[shading] shading=phong: FPS: 3203 FrameTime: 0.312 ms
[shading] shading=cel: FPS: 3238 FrameTime: 0.309 ms
[bump] bump-render=high-poly: FPS: 3235 FrameTime: 0.309 ms
[bump] bump-render=normals: FPS: 3105 FrameTime: 0.322 ms
[bump] bump-render=height: FPS: 3094 FrameTime: 0.323 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 3085 FrameTime: 0.324 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 3154 FrameTime: 0.317 ms
[pulsar] light=false:quads=5:texture=false: FPS: 2985 FrameTime: 0.335 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 1832 FrameTime: 0.546 ms
[desktop] effect=shadow:windows=4: FPS: 1788 FrameTime: 0.560 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 220 FrameTime: 4.564 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 219 FrameTime: 4.582 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 398 FrameTime: 2.518 ms
[ideas] speed=duration: FPS: 1325 FrameTime: 0.755 ms
[jellyfish] <default>: FPS: 2845 FrameTime: 0.352 ms
[terrain] <default>: FPS: 973 FrameTime: 1.029 ms
[shadow] <default>: FPS: 2687 FrameTime: 0.372 ms
[refract] <default>: FPS: 1508 FrameTime: 0.663 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 3104 FrameTime: 0.322 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 3096 FrameTime: 0.323 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 3072 FrameTime: 0.326 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 3080 FrameTime: 0.325 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 2916 FrameTime: 0.343 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 3475 FrameTime: 0.288 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 3476 FrameTime: 0.288 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 3487 FrameTime: 0.287 ms
=======================================================
                                  glmark2 Score: 2565 
=======================================================

I found an issue for box86 support on RISC-V on the box86 issues: Request: Support For RISC-V and PowerISA hardware. Going to see if I can get that working at all, would be fun :D

See:

@smzahraee
Copy link

The memory test results between the P550 and RK3588 show significantly lower performance than expected. Could you confirm the accuracy of these tests or provide additional context on the testing methodology?

@geerlingguy
Copy link
Owner Author

@smzahraee - See: https://github.com/geerlingguy/sbc-reviews/blob/master/benchmark/tasks/tinymembench.py

I run tinymembench, and also sbc-bench.sh (from @tkaiser), and the memory bandwidth does seem to be hampered by the SoC in this case, even though it's LPDDR5 at I believe something like 6000 MT/s? It certainly jives with the rest of the benchmark results.

It could be something firmware/OS updates could help with, but I think the memory controller on the P550 just isn't as high performance as we hoped judging from the RAM they use here.

@ThomasKaiser
Copy link

ThomasKaiser commented Feb 10, 2025

the idle to full power range is pretty tight

I wouldn't call this 'tight' but 'an indication that's something seriously wrong' ... most probably at the firmware layer.

1.4W difference between 'idle' and 'fully loaded with Linpack' would make this thing an efficiency monster which obviously it isn't and 'idle consumption' is in reality 'firmware going berserk' or something like that :)

As for the memory results not only bandwidth suffers but also latency (starting already with the top rows), measured with @wtarreau's ramlat, comparing this board with Rock 5B (RK3588) and Orion O6 (CD8180):

Executing ramlat on cpu0 (eswin,eic770x), results in ns:

       size:  1x32  2x32  1x64  2x64 1xPTR 2xPTR 4xPTR 8xPTR
         4k: 3.697 3.670 3.581 3.579 2.148 2.147 2.862 5.726 
         8k: 3.667 3.669 3.583 3.579 2.148 2.148 2.863 5.725 
        16k: 3.668 3.670 3.579 3.579 2.147 2.147 2.864 5.726 
        32k: 3.673 3.670 3.581 3.582 2.149 2.150 2.865 5.729 
        64k: 10.12 11.54 10.02 11.55 9.303 10.76 13.17 25.60 
       128k: 10.12 11.55 10.03 11.61 9.316 10.89 13.36 25.80 
       256k: 22.39 21.36 22.26 21.28 21.72 20.76 22.21 29.21 
       512k: 30.77 29.80 30.68 29.68 30.59 29.42 37.03 55.31 
      1024k: 34.51 34.29 34.39 33.89 34.01 33.85 51.98 85.22 
      2048k: 41.25 39.43 44.31 38.73 40.84 38.70 67.21 101.7 
      4096k: 96.49 90.53 90.34 89.18 90.91 87.24 117.7 136.6 
      8192k: 175.7 175.5 175.7 174.7 175.3 168.8 196.3 204.2 
     16384k: 196.9 198.6 195.6 197.9 196.0 195.6 245.3 253.8 
     32768k: 207.4 210.5 207.1 210.0 206.5 208.7 275.7 293.3 
     65536k: 209.5 213.3 209.3 212.7 208.6 211.1 282.0 300.7 
    131072k: 216.0 218.5 214.7 218.3 214.3 216.5 290.4 307.5 

Executing ramlat on cpu6 (Cortex-A76), results in ns:

       size:  1x32  2x32  1x64  2x64 1xPTR 2xPTR 4xPTR 8xPTR
         4k: 1.721 1.721 1.720 1.721 1.720 1.720 1.721 3.263 
         8k: 1.720 1.721 1.720 1.721 1.720 1.720 1.721 3.353 
        16k: 1.720 1.721 1.720 1.720 1.720 1.720 1.721 3.353 
        32k: 1.720 1.720 1.720 1.721 1.720 1.720 1.721 3.356 
        64k: 1.721 1.721 1.721 1.721 1.721 1.721 1.722 3.356 
       128k: 5.214 5.217 5.214 5.216 5.215 5.920 7.426 13.04 
       256k: 6.129 6.073 6.104 6.098 6.119 6.079 7.574 13.04 
       512k: 11.60 9.961 11.28 9.966 11.65 10.62 12.43 19.14 
      1024k: 17.95 18.47 17.88 18.47 18.09 18.13 19.84 30.12 
      2048k: 19.32 19.45 19.30 19.45 19.25 19.78 21.89 31.66 
      4096k: 55.24 42.18 49.56 42.21 49.36 43.65 46.08 59.47 
      8192k: 101.8 85.42 98.06 86.08 101.1 84.98 84.20 91.70 
     16384k: 128.6 114.1 119.0 110.4 118.3 106.1 104.0 107.7 
     32768k: 127.5 128.2 127.3 128.3 127.7 125.0 120.6 116.0 
     65536k: 134.3 134.5 134.0 134.5 133.1 127.4 124.8 130.4 
    131072k: 137.9 138.2 138.0 138.3 137.2 132.3 130.5 134.8 

Executing ramlat on cpu11 (Cortex-A720), results in ns:

       size:  1x32  2x32  1x64  2x64 1xPTR 2xPTR 4xPTR 8xPTR
         4k: 1.539 1.540 1.539 1.539 1.539 1.539 1.539 2.843 
         8k: 1.540 1.539 1.539 1.540 1.539 1.539 1.539 2.903 
        16k: 1.539 1.539 1.540 1.539 1.540 1.539 1.539 2.906 
        32k: 1.539 1.539 1.543 1.540 1.540 1.539 1.540 2.908 
        64k: 1.540 1.540 1.540 1.540 1.540 1.541 1.540 2.910 
       128k: 3.724 3.759 3.725 3.751 3.727 4.542 6.398 16.94 
       256k: 3.524 3.544 3.524 3.540 3.524 4.563 8.657 17.29 
       512k: 3.479 3.478 3.477 3.478 3.476 4.562 8.672 17.31 
      1024k: 11.55 13.33 11.68 13.34 11.80 15.60 22.79 33.30 
      2048k: 11.99 13.90 12.16 13.91 12.16 18.34 20.53 36.12 
      4096k: 19.63 16.78 19.22 16.85 19.52 21.69 21.17 33.59 
      8192k: 26.60 21.68 26.59 21.78 26.46 24.44 25.74 35.03 
     16384k: 33.12 25.20 32.83 25.18 33.04 27.55 30.31 41.83 
     32768k: 41.80 43.55 41.85 43.14 41.89 50.44 70.08 113.9 
     65536k: 50.24 61.97 50.23 60.87 50.30 59.56 87.23 133.0 
    131072k: 49.58 71.82 49.01 70.11 48.89 63.16 94.08 136.9 

Checking 272 results from various systems 251 have better timings than this board. Those systems being slower almost all being in a different league (original RPi, Allwinner A10 or D1, i.MX6, Kendryte K510) and of course the other Eswin EIC7700 submission from last summer.

@geerlingguy are you in touch with SiFive guys? Would be an idea to ask them what they've to say about both memory timings (new firmware release lying around somewhere?) and 'idle' consumption :)

@wtarreau
Copy link

Reminds me of the VisionFive 2 which initiall shocked me:

$ taskset -c 0 ./ramlat -n 100  131072
   size:  1x32  2x32  1x64  2x64 1xPTR 2xPTR 4xPTR 8xPTR
     4k: 3.134 2.839 2.671 2.754 2.003 2.003 2.754 5.592 
     8k: 2.755 2.837 2.670 2.755 2.003 2.004 2.753 5.590 
    16k: 2.755 2.838 2.671 2.755 2.004 2.003 2.754 5.595 
    32k: 2.756 2.839 2.672 2.755 2.004 2.004 2.755 5.600 
    64k: 13.44 24.15 13.40 24.04 13.35 24.08 48.22 96.40 
   128k: 13.45 24.16 13.40 24.04 13.35 24.08 48.57 96.40 
   256k: 13.45 24.68 13.65 24.61 13.36 24.10 48.23 96.40 
   512k: 20.15 29.68 19.44 29.39 18.70 29.52 53.65 101.8 
  1024k: 22.40 33.94 22.04 33.73 20.87 33.71 61.66 116.7 
  2048k: 46.79 78.05 45.25 78.49 44.05 78.33 148.6 272.3 
  4096k: 128.5 225.2 127.0 228.5 128.0 224.2 411.2 780.6 
  8192k: 158.4 272.4 159.8 271.7 159.7 271.4 495.5 941.6 
 16384k: 163.9 278.6 163.8 278.4 161.3 275.9 507.6 966.2 
 32768k: 176.7 291.5 177.5 289.5 175.2 291.9 521.6 982.3 
 65536k: 175.0 290.6 176.1 292.7 176.6 291.6 523.6 986.2 
131072k: 177.0 292.9 177.3 293.2 177.0 292.7 524.9 991.1 
$ ./rambw 1000 5 131072
6532
6544
6520
6539
6546

180ns for 1x64 bits, 293 ns for 2x64, 525 for 4x64 and 991 for 8x64 doesn't look good at all, it looks like the memory controller cannot queue requests. But at 6.5 GB/s total RAM read bandwidth you don't expect much anyway.

@geerlingguy
Copy link
Owner Author

@ThomasKaiser - I've opened a forum topic: EIC7700X Memory Bandwidth / RAM Timings.

@smzahraee
Copy link

I also reviewed the source code of tinymembench and found that it does not include any RISC-V-specific assembly code. However, the memory performance is notably poor overall.

@ThomasKaiser
Copy link

I also reviewed the source code of tinymembench and found that it does not include any RISC-V-specific assembly code.

Well, we're using a tool that is unmaintained for 8 full years by Siarhei (where you just opened an issue). Jeff uses this fork (most probably since supporting execution in macOS?) and my sbc-bench since exactly two years that for reasons I can't remember :(

Maybe not the ideal tool any more...

@zyz1dmail
Copy link

@geerlingguy EIC770X has limitation to use iGPU (internal GPU with Imagination core) or external PCIe GPU. Since the iGPU is part of SOC, we have no way to phyically remove it. Please follow the instuctions below to user iGPU or external GPU only. DO NOT mixed them up.
===instruction begin=====
Steps to switch from iGPU to External GPU
By default iGPU is used as the GFX engine.

sudo mv /usr/share/X11/xorg.conf.d/10-pvr.conf /usr/share/X11/xorg.conf.d/10-pvr.conf.hidden
Power off the board.
Connect External GPU card.
Power on the board.

Steps to switch from Rx550 to iGPU
sudo mv /usr/share/X11/xorg.conf.d/10-pvr.conf.hidden /usr/share/X11/xorg.conf.d/10-pvr.conf
Power off the board.
Remove External GPU card.
Power on the board.
===instruction end ======
The above notes come from P550 ubuntu image release note (https://github.com/sifive/hifive-premier-p550-ubuntu/releases/tag/2025.02.00)

@geerlingguy
Copy link
Owner Author

For the fan speed control, I can change it with:

# echo 10000 > /sys/class/hwmon/hwmon0/fan_pwm_period 
# echo 50 > /sys/class/hwmon/hwmon0/pwm1

(Change the PWM1 value to something between 0-100...)

I've settled on 30 as that seems to be a good balance with very little noise + adequate cooling. Running s-tui and hitting all cores with stress-ng for over 5 minutes, the CPUCoreTemperature never rose above 45°C at 30% pwm.

@geerlingguy
Copy link
Owner Author

@zyz1dmail - Thanks! I indeed found that to be the case in #65 (comment)

It'd be nice if both can be active—I noticed when I had switched to the AMD GPU, I had rebooted for testing with the internal HDMI port, and just got a blinking cursor on that screen, oops!

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 11, 2025

Trying out Steam, I get an exec format error... probably need box32 installed? Need to find out where to get that...

ubuntu@ubuntu:~$ steam
steam.sh[2819]: Running Steam on ubuntu 24.04 64-bit
steam.sh[2819]: STEAM_RUNTIME is enabled by the user
setup.sh[2882]: Steam runtime environment up-to-date!
/home/ubuntu/.local/share/Steam/ubuntu12_32/steam-runtime/run.sh: line 85: steam-runtime-identify-library-abi: command not found
run.sh[2894]: steam-runtime-identify-library-abi --ldconfig-paths failed, falling back to ldconfig
steam.sh[2819]: Couldn't find /home/ubuntu/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/bin/srt-logger, logging to console-linux.txt
steam.sh[2819]: Can't find 'steam-runtime-check-requirements', continuing anyway
/home/ubuntu/.local/share/Steam/steam.sh: line 862: /home/ubuntu/.local/share/Steam/ubuntu12_32/steam: cannot execute binary file: Exec format error

@ksco
Copy link

ksco commented Feb 11, 2025

While we're working on it, Steam does not work on RISC-V yet, unfortunately :(

@ksco
Copy link

ksco commented Feb 11, 2025

To enable box32 mode, use ccmake .. and enable BOX32, BOX32_BINFMT, and then recompile and reinstall box64. After that, box64 will automatically switch to box32 mode for 32bit programs.

@geerlingguy
Copy link
Owner Author

@ksco - Excellent, good to hear!

In terms of something I could demo for a video, do you have any guide for games or downloads I could get onto here? I usually just use Steam since that makes it easy :D

@ThomasKaiser FYI ESWIN has responded about the memory — there are a few factors that limit their performance: https://forums.sifive.com/t/eic7700x-memory-bandwidth-ram-timings/7002/2?u=geerlingguy

@ksco
Copy link

ksco commented Feb 11, 2025

In terms of something I could demo for a video, do you have any guide for games or downloads I could get onto here? I usually just use Steam since that makes it easy :D

Sure, if you're not in a hurry, I can give you a list of games we've tested on the P550 tomorrow.

@geerlingguy
Copy link
Owner Author

@ksco That'd be great! I can wait, still have some other things I'm testing as well.

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 11, 2025

[Edit: I've opened an issue on box64 where it may be more appropriate to discuss this particular problem! See Help getting The Witcher 3 running on RISC-V.]

I bought The Witcher 3 from Gog.com and downloaded all 16 parts... but when I try running the setup.exe, I get:

ubuntu@ubuntu:/run/user/1000/gvfs/smb-share:server=nas01.mmoffice.net,share=ingest/The Witcher 3$ ls
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-1.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-10.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-11.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-12.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-13.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-14.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-15.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-2.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-3.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-4.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-5.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-6.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-7.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-8.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883)-9.bin'
'setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883).exe'
ubuntu@ubuntu:/run/user/1000/gvfs/smb-share:server=nas01.mmoffice.net,share=ingest/The Witcher 3$ box64 setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_\(73883\).exe
[BOX64] Warning: DynaRec is available on this host architecture, an interpreter-only build is probably not intended.
[BOX64] Running on unknown riscv64 cpu with 4 cores, pagesize: 4096
[BOX64] Will use hardware counter measured at 1.0 MHz emulating 2.0 GHz
[BOX64] Box64 v0.3.3 a50d34e4 built on Feb 10 2025 22:37:30
[BOX64] Detected 48bits at least of address space
[BOX64] Counted 25 Env var
[BOX64] BOX64 LIB PATH: 
[BOX64] BOX64 BIN PATH: ./:bin/:/home/ubuntu/.local/bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/:/usr/games/:/usr/local/games/:/snap/bin/
[BOX64] Looking for setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883).exe
[BOX64] BOX64ENV: Variables overridden via env and/or RC file:
	BOX64_DYNAREC_BIGBLOCK=0
	BOX64_DYNAREC_CALLRET=0
	BOX64_DYNAREC_NATIVEFLAGS=0
	BOX64_DYNAREC_SAFEFLAGS=2
[BOX64] Not an ELF file (sign=MZP)
[BOX64] Error: Reading elf header of /run/user/1000/gvfs/smb-share:server=nas01.mmoffice.net,share=ingest/The Witcher 3/setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883).exe, Try to launch natively instead
/run/user/1000/gvfs/smb-share:server=nas01.mmoffice.net,share=ingest/The Witcher 3/./setup_the_witcher_3_wild_hunt_4.04a_redkit_update_2_(73883).exe: 1: MZP???@??: ┼⎺├ °⎺┤┼␍
/⎼┤┼/┤⎽␊⎼/1000/±┴°⎽/⎽└␉-⎽␤▒⎼␊:⎽␊⎼┴␊⎼=┼▒⎽01.└└⎺°°␋␌␊.┼␊├,⎽␤▒⎼␊=␋┼±␊⎽├/T␤␊ W␋├␌␤␊⎼ 3/./⎽␊├┤⎻_├␤␊_┬␋├␌␤␊⎼_3_┬␋┌␍_␤┤┼├_4.04▒_⎼␊␍┐␋├_┤⎻␍▒├␊_2_(73883).␊│␊: 2: PEL: ┼⎺├ °⎺┤┼␍
/⎼┤┼/┤⎽␊⎼/1000/±┴°⎽/⎽└␉-⎽␤▒⎼␊:⎽␊⎼┴␊⎼=┼▒⎽01.└└⎺°°␋␌␊.┼␊├,⎽␤▒⎼␊=␋┼±␊⎽├/T␤␊ W␋├␌␤␊⎼ 3/./⎽␊├┤⎻_├␤␊_┬␋├␌␤␊⎼_3_┬␋┌␍_␤┤┼├_4.04▒_⎼␊␍┐␋├_┤⎻␍▒├␊_2_(73883).␊│␊: 1: ????.├␊│├??: ┼⎺├ °⎺┤┼␍
/⎼┤┼/┤⎽␊⎼/1000/±┴°⎽/⎽└␉-⎽␤▒⎼␊:⎽␊⎼┴␊⎼=┼▒⎽01.└└⎺°°␋␌␊.┼␊├,⎽␤▒⎼␊=␋┼±␊⎽├/T␤␊ W␋├␌␤␊⎼ 3/./⎽␊├┤⎻_├␤␊_┬␋├␌␤␊⎼_3_┬␋┌␍_␤┤┼├_4.04▒_⎼␊␍┐␋├_┤⎻␍▒├␊_2_(73883).␊│␊: 1: .␍▒├▒?
                                       : ┼⎺├ °⎺┤┼␍
/⎼┤┼/┤⎽␊⎼/1000/±┴°⎽/⎽└␉-⎽␤▒⎼␊:⎽␊⎼┴␊⎼=┼▒⎽01.└└⎺°°␋␌␊.┼␊├,⎽␤▒⎼␊=␋┼±␊⎽├/T␤␊ W␋├␌␤␊⎼ 3/./⎽␊├┤⎻_├␤␊_┬␋├␌␤␊⎼_3_┬␋┌␍_␤┤┼├_4.04▒_⎼␊␍┐␋├_┤⎻␍▒├␊_2_(73883).␊│␊: 3: ?: ┼⎺├ °⎺┤┼␍
/⎼┤┼/┤⎽␊⎼/1000/±┴°⎽/⎽└␉-⎽␤▒⎼␊:⎽␊⎼┴␊⎼=┼▒⎽01.└└⎺°°␋␌␊.┼␊├,⎽␤▒⎼␊=␋┼±␊⎽├/T␤␊ W␋├␌␤␊⎼ 3/./⎽␊├┤⎻_├␤␊_┬␋├␌␤␊⎼_3_┬␋┌␍_␤┤┼├_4.04▒_⎼␊␍┐␋├_┤⎻␍▒├␊_2_(73883).␊│␊: 6: S≤┼├▒│ ␊⎼⎼⎺⎼: "(" ┤┼␊│⎻␊␌├␊␍

The Box64 test is working at least:

ubuntu@ubuntu:~/Downloads/box64/tests$ box64 ./test01
[BOX64] Warning: DynaRec is available on this host architecture, an interpreter-only build is probably not intended.
[BOX64] Running on unknown riscv64 cpu with 4 cores, pagesize: 4096
[BOX64] Will use hardware counter measured at 1.0 MHz emulating 2.0 GHz
[BOX64] Box64 v0.3.3 a50d34e4 built on Feb 10 2025 22:37:30
[BOX64] Detected 48bits at least of address space
[BOX64] Counted 25 Env var
[BOX64] BOX64 LIB PATH: 
[BOX64] BOX64 BIN PATH: ./:bin/:/home/ubuntu/.local/bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/:/usr/games/:/usr/local/games/:/snap/bin/
[BOX64] Looking for ./test01
[BOX64] Rename process to "test01"
[BOX64] Using native(wrapped) libc.so.6
[BOX64] Using native(wrapped) ld-linux-x86-64.so.2
[BOX64] Using native(wrapped) libpthread.so.0
[BOX64] Using native(wrapped) libdl.so.2
[BOX64] Using native(wrapped) libutil.so.1
[BOX64] Using native(wrapped) libresolv.so.2
[BOX64] Using native(wrapped) librt.so.1
[BOX64] Using native(wrapped) libbsd.so.0
Hello x86_64 World!

@ksco
Copy link

ksco commented Feb 11, 2025

[BOX64] Warning: DynaRec is available on this host architecture, an interpreter-only build is probably not intended.

This is suggesting that you didn’t enable DynaRec (the JIT engine of Box64) in current build, you can do it via ccmake .., and enable the RV64 and RV64_DYNAREC, then recompile and reinstall box64.

Secondly, to run Windows exes, you need to setup wine. You can download wine from here: https://github.com/Kron4ek/Wine-Builds/releases, the wow64 ones are recommended.

@geerlingguy
Copy link
Owner Author

@ksco - Ah thanks. These are things I never have done manually, so didn't explore all the fun complexity behind the scenes with Pi-Apps and other scripts I've used.

@Civil
Copy link

Civil commented Feb 12, 2025

I wonder, if Premier P550 can be overclocked to 1.8 Ghz (or maybe even beyond that)? Some other boards on the same chip (Milk-V Megrez) can run at 1.8 GHz, but that would require at least modifying device tree, copying some definitions from milk-v:
https://github.com/rockos-riscv/rockos-kernel/blob/rockos-v6.6.y/arch/riscv/boot/dts/eswin/eic7700-milkv-megrez.dts#L898-L919

Or even compiling kernel from rockos.

I have megrez and there switching to 1.8 GHz gives a nice 15-25% boost in performance, compared to 1.4 GHz and increases power consumption only by 2W (my board consumes slightly less than yours, I had ~10W measured from socket in stock configuration and 12W at 1.8 GHz)

P.S. Source code of the kernel that ubuntu uses: https://github.com/sifive/riscv-linux/commits/dev/kernel/hifive-premier-p550/

@Min1123
Copy link

Min1123 commented Feb 12, 2025

The iGPU driver appears to not support Wayland. I can get weston to operate, but gnome-shell or SDDM in Wayland mode change the gamma (I think, the screen brightens) and have a working cursor over top the VT you attempt spawning from, however the environment never starts.

Also, using the zink rendering on blender is insufficient to run blender (4.0.2, the version that is with Ubuntu Noble (24.04.2)), it will eventually crash out, but it gives an unpleasant blank gray window while attempting to work. The driver also gives a warning "WARNING: Some incorrect rendering might occur because the selected Vulkan device (PowerVR A-Series AXM-8-256) doesn't support base Zink requirements: feats.features.fillModeNonSolid".

@Min1123
Copy link

Min1123 commented Feb 12, 2025

Also, OpenCL works (on the iGPU), at least from clinfo and clpeak, at version 3.0.

Kernel modules are not there for nouveau or for xe, so, without a more generic kernel (and newer in the case of xe), it looks like embedded or amdgpu.

I really appreciate the the board has HDMI support and will show its u-boot and allow interruptions to get into the u-boot without having an external serial connection and using that from another computer.

@geerlingguy
Copy link
Owner Author

I have Witcher 3 running... slowly:

Image

Image

Going to also test World of Goo just to see if a lightweight game can get playable FPS. It took me over 1 hr to get through the opening cutscene and out of the first room in Witcher!

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 12, 2025

Running llama.cpp compiled with Vulkan (see instructions), I got the following performance:

llama3.2:3b on RX 480 4GB

llama_perf_sampler_print:    sampling time =     232.37 ms /   450 runs   (    0.52 ms per token,  1936.58 tokens per second)
llama_perf_context_print:        load time =   12751.58 ms
llama_perf_context_print: prompt eval time =    1210.39 ms /    13 tokens (   93.11 ms per token,    10.74 tokens per second)
llama_perf_context_print:        eval time =   18819.80 ms /   449 runs   (   41.91 ms per token,    23.86 tokens per second)
llama_perf_context_print:       total time =   23924.14 ms /   462 tokens

llama3.2:3b on RX 580 8GB

llama_perf_sampler_print:    sampling time =     397.17 ms /   769 runs   (    0.52 ms per token,  1936.19 tokens per second)
llama_perf_context_print:        load time =    7999.67 ms
llama_perf_context_print: prompt eval time =    4900.60 ms /    35 tokens (  140.02 ms per token,     7.14 tokens per second)
llama_perf_context_print:        eval time =   62029.51 ms /  1831 runs   (   33.88 ms per token,    29.52 tokens per second)
llama_perf_context_print:       total time =  115494.99 ms /  1866 tokens

See full benchmarking issue: geerlingguy/ollama-benchmark#20 — I have llama-bench results there.

@geerlingguy
Copy link
Owner Author

I also tried an RX 6700 XT, but it seems that card is too new, there's a kernel oops when I try booting with the card installed:

[   27.475116] [drm] Not enough PCI address space for a large BAR.
[   27.475122] amdgpu 0000:03:00.0: BAR 0: assigned [mem 0x8000000000-0x800fffffff 64bit pref]
[   27.475149] amdgpu 0000:03:00.0: BAR 2: assigned [mem 0x8010000000-0x80101fffff 64bit pref]
[   27.475180] amdgpu 0000:03:00.0: amdgpu: VRAM: 12272M 0x0000008000000000 - 0x00000082FEFFFFFF (12272M used)
[   27.475189] amdgpu 0000:03:00.0: amdgpu: GART: 512M 0x0000000000000000 - 0x000000001FFFFFFF
[   27.475195] amdgpu 0000:03:00.0: amdgpu: AGP: 267894784M 0x0000008400000000 - 0x0000FFFFFFFFFFFF
[   27.475207] [drm] Detected VRAM RAM=12272M, BAR=256M
[   27.475212] [drm] RAM width 192bits GDDR6
[   27.475512] [drm] amdgpu: 12272M of VRAM memory ready
[   27.475520] [drm] amdgpu: 7999M of GTT memory ready.
[   27.475633] [drm] GART: num cpu pages 131072, num gpu pages 131072
[   27.475816] [drm] PCIE GART of 512M enabled (table at 0x0000008000000000).
[   29.689824] amdgpu 0000:03:00.0: amdgpu: STB initialized to 2048 entries
[   29.690322] [drm] Loading DMUB firmware via PSP: version=0x02020020
[   29.698008] [drm] use_doorbell being set to: [true]
[   29.698115] [drm] use_doorbell being set to: [true]
[   29.698190] [drm] Found VCN firmware Version ENC: 1.30 DEC: 3 VEP: 0 Revision: 4
[   29.698220] amdgpu 0000:03:00.0: amdgpu: Will use PSP to load VCN firmware
[   29.784851] [drm] reserve 0xa00000 from 0x82fd000000 for PSP TMR
[   29.886410] amdgpu 0000:03:00.0: amdgpu: RAS: optional ras ta ucode is not available
[   29.904700] amdgpu 0000:03:00.0: amdgpu: SECUREDISPLAY: securedisplay ta ucode is not available
[   29.904733] amdgpu 0000:03:00.0: amdgpu: smu driver if version = 0x0000000e, smu fw if version = 0x00000012, smu fw program = 0, version = 0x00413e00 (65.62.0)
[   29.904743] amdgpu 0000:03:00.0: amdgpu: SMU driver if version not matched
[   29.904780] amdgpu 0000:03:00.0: amdgpu: use vbios provided pptable
[   29.962893] amdgpu 0000:03:00.0: amdgpu: SMU is initialized successfully!
[   29.962968] [drm] Display Core failed to initialize with v3.2.247!
[   29.962981] Unable to handle kernel access to user memory without uaccess routines at virtual address 0000000000000008
[   29.974497] Oops [#1]
[   29.978151] Modules linked in: amdgpu(+) snd_hda_codec_hdmi pvrsrvkm binfmt_misc amdxcp drm_exec gpu_sched drm_buddy snd_soc_i2s drm_suballoc_helper snd_seq_midi snd_seq_midi_event snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_rawmidi snd_hwdep nls_iso8859_1 drm_ttm_helper snd_hda_core ttm snd_soc_audio_graph_card esw_es8328_codec snd_soc_hdmi_codec snd_soc_simple_card_utils backlight snd_soc_core at24 ina2xx pac193x snd_pcm_dmaengine snd_seq snd_pcm regmap_i2c snd_seq_device snd_timer snd input_leds dw_axi_dmac_platform dw_wdt joydev soundcore virt_dma sch_fq_codel dm_multipath efi_pstore nfnetlink ip_tables x_tables btrfs blake2b_generic xor raid6_pq libcrc32c hid_logitech_hidpp hid_logitech_dj hid_generic dwmac_eic7700 usbhid hid stmmac_platform stmmac fusb303b gpio_dwapb typec pcs_xpcs spi_eswin_bootspi phylink gpio_generic uio_pdrv_genirq uio
[   30.055552] CPU: 1 PID: 435 Comm: (udev-worker) Not tainted 6.6.21-10-premier #7
[   30.064375] Hardware name: SiFive HiFive Premier P550 (DT)
[   30.071305] epc : drm_atomic_private_obj_fini+0x14/0x58
[   30.077972]  ra : amdgpu_dm_fini+0x3e/0x1cc [amdgpu]
[   30.092815] epc : ffffffff807200fe ra : ffffffff03055be6 sp : ffff8f800279b5b0
[   30.100114]  gp : ffffffff81d90148 tp : ffffaf80e2c1b900 t0 : 213734322e322e33
[   30.100120]  t1 : 0000000000000000 t2 : 2e33762068746977 s0 : ffff8f800279b5d0
[   30.100124]  s1 : ffffaf80e383f720 a0 : ffffaf80e383f6e8 a1 : 0000000000000000
[   30.121994]  a2 : 0000000000000000 a3 : 0000000000000000 a4 : 0000000000000000
[   30.130686]  a5 : 0000000000000000 a6 : 0000000000000000 a7 : 0000000000000000
[   30.139368]  s2 : ffffaf80e383f000 s3 : ffffaf80e3800000 s4 : ffffaf80e3800010
[   30.148051]  s5 : ffff8f800279b6a0 s6 : 0000000000000001 s7 : ffffaf80e3841000
[   30.156734]  s8 : 0000000000000004 s9 : 0000000000000002 s10: 0000000000000001
[   30.165417]  s11: 0000000000000000 t3 : 0000000000000000 t4 : 0000000000000000
[   30.174100]  t5 : 0000000000000000 t6 : ffff8f800279b3f8
[   30.180503] status: 0000000200000120 badaddr: 0000000000000008 cause: 000000000000000f
[   30.188501] [<ffffffff807200fe>] drm_atomic_private_obj_fini+0x14/0x58
[   30.195109] [<ffffffff03055be6>] amdgpu_dm_fini+0x3e/0x1cc [amdgpu]
[   30.209878] [<ffffffff03062148>] amdgpu_dm_init.isra.0+0x140/0x92e [amdgpu]
[   30.222870] [<ffffffff0306294a>] dm_hw_init+0x14/0x2a [amdgpu]
[   30.235486] [<ffffffff0310001c>] amdgpu_device_ip_init+0x2f4/0x518 [amdgpu]
[   30.248192] [<ffffffff02e09720>] amdgpu_device_init+0xa22/0xe48 [amdgpu]
[   30.262935] [<ffffffff02e0b7c8>] amdgpu_driver_load_kms+0x1e/0x154 [amdgpu]
[   30.275760] [<ffffffff02e0386e>] amdgpu_pci_probe+0xde/0x360 [amdgpu]
[   30.289858] [<ffffffff80646414>] pci_device_probe+0x8a/0x132
[   30.296957] [<ffffffff807a22bc>] call_driver_probe+0x1a/0x13a
[   30.303800] [<ffffffff807a2d82>] really_probe+0x82/0x26a
[   30.309167] [<ffffffff807a2fd4>] __driver_probe_device+0x6a/0x122
[   30.315328] [<ffffffff807a30b8>] driver_probe_device+0x2c/0xac
[   30.315336] [<ffffffff807a32ea>] __driver_attach+0xda/0x1ce
[   30.315342] [<ffffffff807a0afa>] bus_for_each_dev+0x62/0xbc
[   30.332475] [<ffffffff807a277a>] driver_attach+0x1a/0x28
[   30.339239] [<ffffffff807a1da0>] bus_add_driver+0x13c/0x236
[   30.346257] [<ffffffff807a4342>] driver_register+0x3e/0xea
[   30.353188] [<ffffffff80644d9e>] __pci_register_driver+0x44/0x58
[   30.360647] [<ffffffff029c0070>] amdgpu_init+0x70/0x1000 [amdgpu]
[   30.373387] [<ffffffff80002922>] do_one_initcall+0x56/0x242
[   30.379026] [<ffffffff800cc822>] do_init_module+0x8a/0x1fc
[   30.384575] [<ffffffff800cdbae>] load_module+0x718/0x864
[   30.389942] [<ffffffff800cdf0e>] init_module_from_file+0x78/0xc6
[   30.396009] [<ffffffff800ce0b8>] idempotent_init_module+0x15c/0x258
[   30.403731] [<ffffffff800ce20c>] __riscv_sys_finit_module+0x58/0xb0
[   30.411450] [<ffffffff80c1b45e>] do_trap_ecall_u+0x4a/0x128
[   30.418469] [<ffffffff80c269c0>] ret_from_exception+0x0/0x64
[   30.425583] Code: 1101 e822 e426 ec06 1000 651c 6118 84aa 8493 0384 (e71c) e398 
[   30.434479] ---[ end trace 0000000000000000 ]---
[   31.197844] audit: type=1400 audit(1739394600.403:141): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="rsyslogd" pid=825 comm="apparmor_parser"
[   31.721417] audit: type=1400 audit(1739394600.927:142): apparmor="DENIED" operation="open" class="file" profile="rsyslogd" name="/run/systemd/sessions/" pid=859 comm=72733A6D61696E20513A526567 requested_mask="r" denied_mask="r" fsuid=101 ouid=0
[   31.743320] audit: type=1400 audit(1739394600.927:143): apparmor="DENIED" operation="open" class="file" profile="rsyslogd" name="/run/systemd/sessions/" pid=859 comm=72733A6D61696E20513A526567 requested_mask="r" denied_mask="r" fsuid=101 ouid=0
[   31.995354] codec dump onoff:0
[   32.000543] codec write reg:1, val:0x0
[   32.363832] NET: Registered PF_QIPCRTR protocol family
[   34.042451] loop2: detected capacity change from 0 to 8
[   34.530239] eic7700-eth-dwmac 50400000.ethernet end0: Register MEM_TYPE_PAGE_POOL RxQ-0
[   34.541578] eic7700-eth-dwmac 50400000.ethernet end0: PHY [stmmac-0:00] driver [Generic PHY] (irq=POLL)
[   34.557880] dwmac4: Master AXI performs any burst length
[   34.563278] eic7700-eth-dwmac 50400000.ethernet end0: No Safety Features support found
[   34.571296] eic7700-eth-dwmac 50400000.ethernet end0: No MAC Management Counters available
[   34.579663] eic7700-eth-dwmac 50400000.ethernet end0: PTP not supported by HW
[   34.599045] eic7700-eth-dwmac 50400000.ethernet end0: configuring for phy/rgmii link mode
[   34.619567] eic7700-eth-dwmac 50410000.ethernet end1: Register MEM_TYPE_PAGE_POOL RxQ-0
[   34.631247] eic7700-eth-dwmac 50410000.ethernet end1: PHY [stmmac-1:00] driver [Generic PHY] (irq=POLL)
[   34.641600] dwmac4: Master AXI performs any burst length
[   34.648346] eic7700-eth-dwmac 50410000.ethernet end1: No Safety Features support found
[   34.657717] eic7700-eth-dwmac 50410000.ethernet end1: No MAC Management Counters available
[   34.667103] eic7700-eth-dwmac 50410000.ethernet end1: PTP not supported by HW
[   34.674887] eic7700-eth-dwmac 50410000.ethernet end1: configuring for phy/rgmii link mode
[   34.896926] audit: type=1400 audit(1739394604.103:144): apparmor="DENIED" operation="capable" class="cap" profile="/usr/sbin/cupsd" pid=1096 comm="cupsd" capability=12  capname="net_admin"
[   36.032376] loop2: detected capacity change from 0 to 8
[   38.784926] eic7700-eth-dwmac 50410000.ethernet end1: Link is Up - 1Gbps/Full - flow control rx/tx
[   43.997589] pipewire[1256]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
[   56.316063] codec read reg[1]:0x0
[   57.281634] codec read reg[1]:0xc0
[   57.417774] codec read reg[1]:0xc0
[   57.965144] codec read reg[1]:0xc0

@geerlingguy
Copy link
Owner Author

geerlingguy commented Feb 12, 2025

I tried launching World of Goo, but I got:

[BOX64] Using native(wrapped) libasound.so.2
0100:fixme:avrt:AvSetMmThreadCharacteristicsW (L"Pro Audio",00000000819AFE6C): stub
[BOX64] Warning: Mmap64 for (@0x7fff05000000 0x32f110) for elf "/home/ubuntu/Downloads/wine/lib/wine/x86_64-unix/opengl32.so" returned 0x3f5bc00000(0x3f5bba8000/0x200000) instead
[BOX64] Using emulated /home/ubuntu/Downloads/wine/lib/wine/x86_64-unix/opengl32.so
0024:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0024:err:winediag:nodrv_CreateWindow L"The explorer process failed to start."
0024:fixme:ver:GetCurrentPackageId (00000000800EFB00 0000000000000000): stub

And I was dumped back to the command line :(

Edit: Nevermind... on 2nd try, it launched.

Image

@ksco
Copy link

ksco commented Feb 13, 2025

You can also try the Linux version, which generally performs better than Windows ones.

@geerlingguy
Copy link
Owner Author

@ksco - oh, didn't even realize there was a Linux download available!

@geerlingguy
Copy link
Owner Author

Just wanted to note—in addition to a Debian image from ESWIN (which seems to be the bleeding edge where they're doing the most enablement work), there's a Fedora image for it as well. See:

(Thanks to @NeilHanlon for pointing this out!)

@RevySR
Copy link

RevySR commented Feb 13, 2025

I also tried an RX 6700 XT, but it seems that card is too new, there's a kernel oops when I try booting with the card installed:

[   29.962893] amdgpu 0000:03:00.0: amdgpu: SMU is initialized successfully!
[   29.962968] [drm] Display Core failed to initialize with v3.2.247!
[   29.962981] Unable to handle kernel access to user memory without uaccess routines at virtual address 0000000000000008
[   29.974497] Oops [#1]
[   29.978151] Modules linked in: amdgpu(+) snd_hda_codec_hdmi pvrsrvkm binfmt_misc amdxcp drm_exec gpu_sched drm_buddy snd_soc_i2s drm_suballoc_helper snd_seq_midi snd_seq_midi_event snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_rawmidi snd_hwdep nls_iso8859_1 drm_ttm_helper snd_hda_core ttm snd_soc_audio_graph_card esw_es8328_codec snd_soc_hdmi_codec snd_soc_simple_card_utils backlight snd_soc_core at24 ina2xx pac193x snd_pcm_dmaengine snd_seq snd_pcm regmap_i2c snd_seq_device snd_timer snd input_leds dw_axi_dmac_platform dw_wdt joydev soundcore virt_dma sch_fq_codel dm_multipath efi_pstore nfnetlink ip_tables x_tables btrfs blake2b_generic xor raid6_pq libcrc32c hid_logitech_hidpp hid_logitech_dj hid_generic dwmac_eic7700 usbhid hid stmmac_platform stmmac fusb303b gpio_dwapb typec pcs_xpcs spi_eswin_bootspi phylink gpio_generic uio_pdrv_genirq uio
[   30.055552] CPU: 1 PID: 435 Comm: (udev-worker) Not tainted 6.6.21-10-premier #7
[   30.064375] Hardware name: SiFive HiFive Premier P550 (DT)
...

https://rockos-riscv.github.io/rockos-docs/en/docs/faq/#my-amd-rdna-or-newer-gpu-isnt-working-with-kernel-oops-on-boot

@geerlingguy
Copy link
Owner Author

@RevySR - Interesting, have you successfully tested a newer AMD card on here? Also, is RockOS the name for the official Debian flavored Linux build for the ESWIN? I hadn't heard of it before your comment, and had associated it with the 'Rock' branding from Radxa until I read up on it more...

@KevinMX
Copy link

KevinMX commented Feb 14, 2025

Interesting, have you successfully tested a newer AMD card on here?

Check that AMD Radeon 7900XTX + Milk-V Megrez Video. I guess you've seen that already.

We're currently building up the website for docs and stuff. dGPU related docs will be added soon™. (Already updated!)

Also, is RockOS the name for the official Debian flavored Linux build for the ESWIN?

Yes.

I hadn't heard of it before your comment, and had associated it with the 'Rock' branding from Radxa until I read up on it more...

No, RockOS is not affiliated with Radxa and has nothing to do with their products. I guess you mean Radxa's ROCK series (all caps).

@drmpeg
Copy link

drmpeg commented Mar 21, 2025

ESWIN has released some patches for the P550 to run at 1.8 GHz. https://github.com/sifive/riscv-linux/tree/dev/clk-1.8

Here's the .deb files for the new kernel.

https://www.w6rz.net/linux-image-6.6.21_6.6.21-g6e64cce95cec-2_riscv64.deb

https://www.w6rz.net/linux-headers-6.6.21_6.6.21-g6e64cce95cec-2_riscv64.deb

Just use sudo dpkg -i linux-image-6.6.21_6.6.21-g6e64cce95cec-2_riscv64.deb and sudo dpkg -i linux-headers-6.6.21_6.6.21-g6e64cce95cec-2_riscv64.deb to install. Everything will be installed automatically, grub will be updated and initramfs will be run.

Reboot and select the new kernel in grub with "Advanced options for Ubuntu".

There's a new device tree, so the fan control moves from hwmon0 to hwmon2.

@geerlingguy
Copy link
Owner Author

@drmpeg - Thanks for the updates! I'll have to try firing this up again soon...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests