User avatar
bomblord
Posts: 327
Joined: Sun Jul 14, 2019 2:54 am

Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 7:47 pm

Installing Dolphin on your Pi 4: Foreword

Good day to everyone how are you? Good? Hope so....

Anyway, there are some out of date instructions out there on building Dolphin on the Pi and since Vulkan 1.1 is available (yay!) it's a good time to update everything and bring in some new discussion.

Once again DO NOT SUDO APT INSTALL DOLPHIN-EMU it is even further out of date than the last time and even more thousands of commits behind.

Also you will need to use a 64 bit OS I used raspberry pi os https://downloads.raspberrypi.org/raspios_arm64/images/

Also also you will want to build Vulkan if you intend to use it because for some reason it's not available in the 64 bit os by default https://gitlab.freedesktop.org/mesa/mesa/.... I'm not going to get into this because it's probably more complicated than this post there are other posts on this forum that go over it although they might be out of date and I'm not 100% sure how I got it to build and work a lot of dependencies and grabbing bits and pieces from other online discussions.

Installation

Code: Select all

sudo apt update

sudo apt upgrade

sudo apt install --no-install-recommends ca-certificates qtbase5-dev qtbase5-private-dev git cmake make gcc g++ pkg-config libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libxi-dev libxrandr-dev libudev-dev libevdev-dev libsfml-dev libminiupnpc-dev libmbedtls-dev libcurl4-openssl-dev libhidapi-dev libsystemd-dev libbluetooth-dev libasound2-dev libpulse-dev libpugixml-dev libbz2-dev libzstd-dev liblzo2-dev libpng-dev libusb-1.0-0-dev gettext
I haven't compared this vs the old instructions but I've copied/pasted the dependencies that dolphin lists on their website.This next part definitely has a new instruction due to the mgba add.

Code: Select all

git clone https://github.com/dolphin-emu/dolphin.git

cd dolphin-emu

//next instruction is new
git submodule update --init

mkdir build && cd build

sudo cmake ..

sudo make
Wait

At this point you're gonna be waiting. Go make some coffee and start on the pi zero 2 project you swore you would get done one day.
....
....
Back? Is it done yet? No?... yeah this takes a while go get more coffee.
....
....

Finish waiting
Hopefully it completed without errors and you're not too jittery from the coffee. Now, 2 more commands to finish up

Code: Select all

sudo make install

sudo reboot
Configuration

Now onto configuration... which isn't much as we now have Vulkan 1.1. This time no file edits need to be made or special flags set. Just open dolphin either from the games menu or from terminal and go to the graphics tab and where it says OpenGL click the drop down and choose Vulkan. If you opted not to use Vulkan the old instructions to prefer GLES need to be applied.

Overclock

This is technically optional from a "does it open without crashing" perspective but not from a "Will it run higher than 15fps" perspective. But maybe cinematic slow down makes the game feel more epic to you. Maybe you want to really dig into that N64 nostalgia. If that's you just ignore this next part.

Code: Select all

sudo nano /boot/config.txt

//at the very bottom put

over_voltage = 5
arm_freq = 2000
gpu_freq = 600

//Ctrl+X
//Enter

sudo reboot
Both the CPU/GPU can go higher but these are nice and stable clocks on every pi I've tested.

Finished
My testing is showing absolutely no performance improvement and mostly the same graphical bugs unless the 64 bit mesa is messed up somehow (Shows 4.2 in Dolphin and 1.1.92 in vulkaninfo | less for some reason). But, for games that are simpler they should continue to run full speed at 1x res and all enhancements turned off.
Last edited by bomblord on Sun Oct 31, 2021 1:21 pm, edited 2 times in total.

WODAK
Posts: 72
Joined: Thu Jan 23, 2020 1:53 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 8:19 pm

Thank you for your report :)

For the info....I've also been messing around with Lineage 18.1 (64 bit), Dolphin and Vulkan drivers (cheers @Konsta). Overclocked to 2100 CPU and 600 GPU.

Sadly....it runs even a bit slower than on Raspberry Pi OS 64 bit.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 10:05 pm

bomblord wrote:
Fri Oct 29, 2021 7:47 pm
Installing Dolphin on your Pi 4: Foreword

Good day to everyone how are you? Good? Hope so....

Anyway, there are some out of date instructions out there on building Dolphin on the Pi and since Vulkan 1.1 is available (yay!) it's a good time to update everything and bring in some new discussion.

Once again DO NOT SUDO APT INSTALL DOLPHIN-EMU it is even further out of date than the last time and even more thousands of commits behind.

Also you will need to use the 64 bit raspberry pi os https://downloads.raspberrypi.org/raspios_arm64/images/

Also also you will want to build Vulkan if you intend to use it because for some reason it's not available in the 64 bit os by default https://gitlab.freedesktop.org/mesa/mesa/.... I'm not going to get into this because it's probably more complicated than this post there are other posts on this forum that go over it although they might be out of date and I'm not 100% sure how I got it to build and work a lot of dependencies and grabbing bits and pieces from other online discussions.

Installation

Code: Select all

sudo apt update

sudo apt upgrade

sudo apt install --no-install-recommends ca-certificates qtbase5-dev qtbase5-private-dev git cmake make gcc g++ pkg-config libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libxi-dev libxrandr-dev libudev-dev libevdev-dev libsfml-dev libminiupnpc-dev libmbedtls-dev libcurl4-openssl-dev libhidapi-dev libsystemd-dev libbluetooth-dev libasound2-dev libpulse-dev libpugixml-dev libbz2-dev libzstd-dev liblzo2-dev libpng-dev libusb-1.0-0-dev gettext
I haven't compared this vs the old instructions but I've copied/pasted the dependencies that dolphin lists on their website.This next part definitely has a new instruction due to the mgba add.

Code: Select all

git clone https://github.com/dolphin-emu/dolphin.git

cd dolphin-emu

//next instruction is new
git submodule update --init

mkdir build && cd build

sudo cmake ..

sudo make
Wait

At this point you're gonna be waiting. Go make some coffee and start on the pi zero 2 project you swore you would get done one day.
....
....
Back? Is it done yet? No?... yeah this takes a while go get more coffee.
....
....

Finish waiting
Hopefully it completed without errors and you're not too jittery from the coffee. Now, 2 more commands to finish up

Code: Select all

sudo make install

sudo reboot
Configuration

Now onto configuration... which isn't much as we now have Vulkan 1.1. This time no file edits need to be made or special flags set. Just open dolphin either from the games menu or from terminal and go to the graphics tab and where it says OpenGL click the drop down and choose Vulkan. If you opted not to use Vulkan the old instructions to prefer GLES need to be applied.

Overclock

This is technically optional from a "does it open without crashing" perspective but not from a "Will it run higher than 15fps" perspective. But maybe cinematic slow down makes the game feel more epic to you. Maybe you want to really dig into that N64 nostalgia. If that's you just ignore this next part.

Code: Select all

sudo nano /boot/config.txt

//at the very bottom put

over_voltage = 5
arm_freq = 2000
gpu_freq = 600

//Ctrl+X
//Enter

sudo reboot
Both the CPU/GPU can go higher but these are nice and stable clocks on every pi I've tested.

Finished
My testing is showing absolutely no performance improvement and mostly the same graphical bugs unless the 64 bit mesa is messed up somehow (Shows 4.2 in Dolphin and 1.1.92 in vulkaninfo | less for some reason). But, for games that are simpler they should continue to run full speed at 1x res and all enhancements turned off.
2Ghz and 600Mhz isn't necessary. It works great at 1750Mhz and 550Mhz for me on Ubuntu (30-50FPS in 50hz, 30-60FPS in 60hz), after a lot of configuration.
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

RedMarsBlueMoon
Posts: 448
Joined: Mon Apr 06, 2020 3:49 am

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 10:55 pm

Finished
My testing is showing absolutely no performance improvement and mostly the same graphical bugs unless the 64 bit mesa is messed up somehow (Shows 4.2 in Dolphin and 1.1.92 in vulkaninfo | less for some reason). But, for games that are simpler they should continue to run full speed at 1x res and all enhancements turned off.
[/quote]


Thanks for the report! Always interesting to hear how the Pi drivers push Dolphin further along. (In this case it seems no effect)
I think you could have delayed your 'Finished' conclusion to a follow up post tomorrow. Let us live in euphoric hope for a little longer before the brutal crash down to earth! :D

RedMarsBlueMoon
Posts: 448
Joined: Mon Apr 06, 2020 3:49 am

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 10:56 pm

@RasPiGaming
If you have it running that well you should definitely post some videos and how-to's!
I have only heard/seen very basic games running full speed on the Pi.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 11:43 pm

RedMarsBlueMoon wrote:
Fri Oct 29, 2021 10:56 pm
@RasPiGaming
If you have it running that well you should definitely post some videos and how-to's!
I have only heard/seen very basic games running full speed on the Pi.
I've gotten more than basic. Here's a list:
Sonic Adventure 2 - Great (30-50FPS in 50hz, usually in 50z for better performance)
Mega Man 10 - Near Perfect (in 60hz 50-60FPS)
Bomberman Blast - Great (30-40FPS in 60hz)
And a few others. I'll try to make a tutorial soon :D .
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 11:51 pm

Included screenshots of my settings. Hope it helps :D .
Attachments
Dolphin Settings 1.png
Dolphin Settings 1.png (44.18 KiB) Viewed 7805 times
Dolphin Core Settings.png
Dolphin Core Settings.png (20.79 KiB) Viewed 7805 times
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Oct 29, 2021 11:52 pm

More screenshots
Attachments
Dolphin Settings 4.png
Dolphin Settings 4.png (46.23 KiB) Viewed 7804 times
Dolphin Settings 3.png
Dolphin Settings 3.png (47.74 KiB) Viewed 7804 times
Dolphin Settings 2.png
Dolphin Settings 2.png (50.11 KiB) Viewed 7804 times
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

RedMarsBlueMoon
Posts: 448
Joined: Mon Apr 06, 2020 3:49 am

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Sat Oct 30, 2021 12:38 am

Thanks for the settings!
Maybe it's time to build it on a 64bit os.
I'd love to try Viewtiful Joe and Resi 4 (both which I own the original GC versions of)

MortenHB
Posts: 2
Joined: Mon Jun 14, 2021 8:22 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Wed Jan 05, 2022 7:44 pm

So I got Dolphin installed but when I went to choose Vulkan in the graphics section there were no choices in the adapters section and therefore I could not start any games. So I installed mesa-vulkan-drivers and I got 2 choices; V3D 4.2 and llvmpipe. Running V3D I got good performance but so many graphical bugs that it was unplayable. With llvmpipe, the games had no graphical glitches that I could see but with much worse performance.
Is there something I am missing here?

Link to what I am seeing if that helps.
https://www.youtube.com/watch?v=W5Dm2BUC_xI

I tried running it with opengl es but got this error.

Code: Select all

Failed to compile vs shader: /home/pi/.local/share/dolphin-emu/Dump/bad_vs_OGL_0.txt
Debug info (Broadcom, V3D 4.2, OpenGL ES 3.1 Mesa 20.3.5):
0:35(17): error: illegal use of reserved word `sampler2DMSArray'
0:35(17): error: syntax error, unexpected ERROR_TOK

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Wed Jan 05, 2022 11:15 pm

MortenHB wrote:
Wed Jan 05, 2022 7:44 pm
So I got Dolphin installed but when I went to choose Vulkan in the graphics section there were no choices in the adapters section and therefore I could not start any games. So I installed mesa-vulkan-drivers and I got 2 choices; V3D 4.2 and llvmpipe. Running V3D I got good performance but so many graphical bugs that it was unplayable. With llvmpipe, the games had no graphical glitches that I could see but with much worse performance.
Is there something I am missing here?

Link to what I am seeing if that helps.
https://www.youtube.com/watch?v=W5Dm2BUC_xI

I tried running it with opengl es but got this error.

Code: Select all

Failed to compile vs shader: /home/pi/.local/share/dolphin-emu/Dump/bad_vs_OGL_0.txt
Debug info (Broadcom, V3D 4.2, OpenGL ES 3.1 Mesa 20.3.5):
0:35(17): error: illegal use of reserved word `sampler2DMSArray'
0:35(17): error: syntax error, unexpected ERROR_TOK
That could a problem with the game you're trying to run. Try using my config with it. Also if you're getting graphical bugs with V3D check to see if you're still on Vulkan 1.0 (check using vulkaninfo in the terminal). If so you'll need to manually compile Mesa.
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

MortenHB
Posts: 2
Joined: Mon Jun 14, 2021 8:22 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Thu Jan 06, 2022 5:06 pm

RasPiGaming wrote:
Wed Jan 05, 2022 11:15 pm
MortenHB wrote:
Wed Jan 05, 2022 7:44 pm
So I got Dolphin installed but when I went to choose Vulkan in the graphics section there were no choices in the adapters section and therefore I could not start any games. So I installed mesa-vulkan-drivers and I got 2 choices; V3D 4.2 and llvmpipe. Running V3D I got good performance but so many graphical bugs that it was unplayable. With llvmpipe, the games had no graphical glitches that I could see but with much worse performance.
Is there something I am missing here?

Link to what I am seeing if that helps.
https://www.youtube.com/watch?v=W5Dm2BUC_xI

I tried running it with opengl es but got this error.

Code: Select all

Failed to compile vs shader: /home/pi/.local/share/dolphin-emu/Dump/bad_vs_OGL_0.txt
Debug info (Broadcom, V3D 4.2, OpenGL ES 3.1 Mesa 20.3.5):
0:35(17): error: illegal use of reserved word `sampler2DMSArray'
0:35(17): error: syntax error, unexpected ERROR_TOK
That could a problem with the game you're trying to run. Try using my config with it. Also if you're getting graphical bugs with V3D check to see if you're still on Vulkan 1.0 (check using vulkaninfo in the terminal). If so you'll need to manually compile Mesa.
I have got my settings as close to yours as i can because it is a newer version. didn't fix the issue.
Checking vulkan tools it said Vulkan Instance Version: 1.2.162 ?

Code: Select all

pi@raspberrypi:~ $ vulkaninfo 
WARNING: v3dv is neither a complete nor a conformant Vulkan implementation. Testing use only.
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.162


Instance Extensions: count = 18
===============================
	VK_EXT_acquire_xlib_display            : extension revision 1
	VK_EXT_debug_report                    : extension revision 9
	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 1
	VK_KHR_get_surface_capabilities2       : 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

Layers: count = 2
=================
VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.2.73, layer version 1:
	Layer Extensions: count = 0
	Devices: count = 2
		GPU id = 0 (V3D 4.2)
		Layer-Device Extensions: count = 0

		GPU id = 1 (llvmpipe (LLVM 11.0.1, 128 bits))
		Layer-Device Extensions: count = 0

VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.1.73, layer version 1:
	Layer Extensions: count = 0
	Devices: count = 2
		GPU id = 0 (V3D 4.2)
		Layer-Device Extensions: count = 0

		GPU id = 1 (llvmpipe (LLVM 11.0.1, 128 bits))
		Layer-Device Extensions: count = 0

Presentable Surfaces:
=====================
GPU id : 0 (V3D 4.2):
	Surface types: count = 2
		VK_KHR_xcb_surface
		VK_KHR_xlib_surface
	Formats: count = 2
		SurfaceFormat[0]:
			format = FORMAT_B8G8R8A8_SRGB
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
		SurfaceFormat[1]:
			format = FORMAT_B8G8R8A8_UNORM
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
	Present Modes: count = 4
		PRESENT_MODE_IMMEDIATE_KHR
		PRESENT_MODE_MAILBOX_KHR
		PRESENT_MODE_FIFO_KHR
		PRESENT_MODE_FIFO_RELAXED_KHR
	VkSurfaceCapabilitiesKHR:
	-------------------------
		minImageCount       = 3
		maxImageCount       = 0
		currentExtent:
			width  = 256
			height = 256
		minImageExtent:
			width  = 256
			height = 256
		maxImageExtent:
			width  = 256
			height = 256
		maxImageArrayLayers = 1
		supportedTransforms: count = 1
			SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		currentTransform    = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		supportedCompositeAlpha: count = 2
			COMPOSITE_ALPHA_OPAQUE_BIT_KHR
			COMPOSITE_ALPHA_INHERIT_BIT_KHR
		supportedUsageFlags: count = 4
			IMAGE_USAGE_TRANSFER_SRC_BIT
			IMAGE_USAGE_TRANSFER_DST_BIT
			IMAGE_USAGE_STORAGE_BIT
			IMAGE_USAGE_COLOR_ATTACHMENT_BIT
	VkSurfaceCapabilities2EXT:
	--------------------------
		supportedSurfaceCounters: count = 0
			None
	VkSurfaceProtectedCapabilitiesKHR:
	----------------------------------
		supportsProtected = false


GPU id : 1 (llvmpipe (LLVM 11.0.1, 128 bits)):
	Surface types: count = 2
		VK_KHR_xcb_surface
		VK_KHR_xlib_surface
	Formats: count = 2
		SurfaceFormat[0]:
			format = FORMAT_B8G8R8A8_SRGB
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
		SurfaceFormat[1]:
			format = FORMAT_B8G8R8A8_UNORM
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
	Present Modes: count = 4
		PRESENT_MODE_IMMEDIATE_KHR
		PRESENT_MODE_MAILBOX_KHR
		PRESENT_MODE_FIFO_KHR
		PRESENT_MODE_FIFO_RELAXED_KHR
	VkSurfaceCapabilitiesKHR:
	-------------------------
		minImageCount       = 3
		maxImageCount       = 0
		currentExtent:
			width  = 256
			height = 256
		minImageExtent:
			width  = 256
			height = 256
		maxImageExtent:
			width  = 256
			height = 256
		maxImageArrayLayers = 1
		supportedTransforms: count = 1
			SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		currentTransform    = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		supportedCompositeAlpha: count = 2
			COMPOSITE_ALPHA_OPAQUE_BIT_KHR
			COMPOSITE_ALPHA_INHERIT_BIT_KHR
		supportedUsageFlags: count = 5
			IMAGE_USAGE_TRANSFER_SRC_BIT
			IMAGE_USAGE_TRANSFER_DST_BIT
			IMAGE_USAGE_SAMPLED_BIT
			IMAGE_USAGE_STORAGE_BIT
			IMAGE_USAGE_COLOR_ATTACHMENT_BIT
	VkSurfaceCapabilities2EXT:
	--------------------------
		supportedSurfaceCounters: count = 0
			None
	VkSurfaceProtectedCapabilitiesKHR:
	----------------------------------
		supportsProtected = false



Device Groups:
==============
Group 0:
	Properties:
		physicalDevices: count = 1
			llvmpipe (LLVM 11.0.1, 128 bits) (ID: 0)
		subsetAllocation = 0

	Present Capabilities = Group does not support VK_KHR_device_group, skipping printing present capabilities

Group 1:
	Properties:
		physicalDevices: count = 1
			V3D 4.2 (ID: 0)
		subsetAllocation = 0

	Present Capabilities = Group does not support VK_KHR_device_group, skipping printing present capabilities


Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
	apiVersion     = 4194459 (1.0.155)
	driverVersion  = 83898373 (0x5003005)
	vendorID       = 0x14e4
	deviceID       = 0x002a
	deviceType     = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceName     = V3D 4.2

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

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

VkPhysicalDeviceIDPropertiesKHR:
--------------------------------
	deviceUUID      = e8c1c12d-2325-2af0-b0e8-66d7e87e7189
	driverUUID      = a8fd0fb8-55f0-17a4-83a5-4a2edff93bb8
	deviceNodeMask  = 0
	deviceLUIDValid = false


Device Extensions: count = 5
----------------------------
	VK_EXT_external_memory_dma_buf : extension revision 1
	VK_KHR_external_memory         : extension revision 1
	VK_KHR_external_memory_fd      : extension revision 1
	VK_KHR_maintenance1            : extension revision 2
	VK_KHR_swapchain               : extension revision 68

VkQueueFamilyProperties:
========================
	queueProperties[0]:
	-------------------
		minImageTransferGranularity = (1,1,1)
		queueCount                  = 1
		queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER
		timestampValidBits          = 64
		present support             = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
	memoryHeaps[0]:
		size   = 1989685248 (0x76983000) (1.85 GiB)
		budget = 103079215104 (0x1800000000) (96.00 GiB)
		usage  = 103079215104 (0x1800000000) (96.00 GiB)
		flags: count = 1
			MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 1
	memoryTypes[0]:
		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_D24_UNORM_S8_UINT
				(non-sparse)
			IMAGE_TILING_LINEAR:
				color images
				(non-sparse)

VkPhysicalDeviceFeatures:
=========================
	robustBufferAccess                      = true
	fullDrawIndexUint32                     = false
	imageCubeArray                          = true
	independentBlend                        = true
	geometryShader                          = false
	tessellationShader                      = false
	sampleRateShading                       = true
	dualSrcBlend                            = false
	logicOp                                 = true
	multiDrawIndirect                       = false
	drawIndirectFirstInstance               = true
	depthClamp                              = false
	depthBiasClamp                          = false
	fillModeNonSolid                        = true
	depthBounds                             = false
	wideLines                               = true
	largePoints                             = true
	alphaToOne                              = true
	multiViewport                           = false
	samplerAnisotropy                       = true
	textureCompressionETC2                  = true
	textureCompressionASTC_LDR              = false
	textureCompressionBC                    = false
	occlusionQueryPrecise                   = true
	pipelineStatisticsQuery                 = false
	vertexPipelineStoresAndAtomics          = true
	fragmentStoresAndAtomics                = true
	shaderTessellationAndGeometryPointSize  = false
	shaderImageGatherExtended               = false
	shaderStorageImageExtendedFormats       = true
	shaderStorageImageMultisample           = false
	shaderStorageImageReadWithoutFormat     = false
	shaderStorageImageWriteWithoutFormat    = false
	shaderUniformBufferArrayDynamicIndexing = false
	shaderSampledImageArrayDynamicIndexing  = false
	shaderStorageBufferArrayDynamicIndexing = false
	shaderStorageImageArrayDynamicIndexing  = false
	shaderClipDistance                      = true
	shaderCullDistance                      = false
	shaderFloat64                           = false
	shaderInt64                             = false
	shaderInt16                             = false
	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                        = true


GPU1:
-----
VkPhysicalDeviceProperties:
---------------------------
	apiVersion     = 4194306 (1.0.2)
	driverVersion  = 1 (0x0001)
	vendorID       = 0x10005
	deviceID       = 0x0000
	deviceType     = PHYSICAL_DEVICE_TYPE_CPU
	deviceName     = llvmpipe (LLVM 11.0.1, 128 bits)

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

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

VkPhysicalDeviceDriverPropertiesKHR:
------------------------------------
	driverID           = DRIVER_ID_MESA_LLVMPIPE
	driverName         = llvmpipe
	driverInfo         = Mesa 20.3.5 (LLVM 11.0.1)
	conformanceVersion = 1.0.0.0

VkPhysicalDeviceIDPropertiesKHR:
--------------------------------
	deviceUUID      = 00000000-0000-0000-0000-000000000000
	driverUUID      = 00000000-0000-0000-0000-000000000000
	deviceNodeMask  = 0
	deviceLUIDValid = false


Device Extensions: count = 14
-----------------------------
	VK_EXT_external_memory_dma_buf      : extension revision 1
	VK_EXT_private_data                 : extension revision 1
	VK_GOOGLE_decorate_string           : extension revision 1
	VK_GOOGLE_hlsl_functionality1       : extension revision 1
	VK_KHR_bind_memory2                 : extension revision 1
	VK_KHR_dedicated_allocation         : extension revision 1
	VK_KHR_driver_properties            : extension revision 1
	VK_KHR_get_memory_requirements2     : extension revision 1
	VK_KHR_incremental_present          : extension revision 1
	VK_KHR_maintenance1                 : extension revision 1
	VK_KHR_relaxed_block_layout         : extension revision 1
	VK_KHR_sampler_mirror_clamp_to_edge : extension revision 1
	VK_KHR_storage_buffer_storage_class : extension revision 1
	VK_KHR_swapchain                    : extension revision 68

VkQueueFamilyProperties:
========================
	queueProperties[0]:
	-------------------
		minImageTransferGranularity = (1,1,1)
		queueCount                  = 1
		queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER
		timestampValidBits          = 64
		present support             = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
	memoryHeaps[0]:
		size   = 2147483648 (0x80000000) (2.00 GiB)
		budget = 0 (0x00000000) (0.00 B)
		usage  = 0 (0x00000000) (0.00 B)
		flags: count = 1
			MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 1
	memoryTypes[0]:
		heapIndex     = 0
		propertyFlags = 0x000f: count = 4
			MEMORY_PROPERTY_DEVICE_LOCAL_BIT
			MEMORY_PROPERTY_HOST_VISIBLE_BIT
			MEMORY_PROPERTY_HOST_COHERENT_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
				FORMAT_D32_SFLOAT_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                            = true
	logicOp                                 = true
	multiDrawIndirect                       = true
	drawIndirectFirstInstance               = true
	depthClamp                              = true
	depthBiasClamp                          = true
	fillModeNonSolid                        = true
	depthBounds                             = false
	wideLines                               = false
	largePoints                             = true
	alphaToOne                              = true
	multiViewport                           = true
	samplerAnisotropy                       = false
	textureCompressionETC2                  = false
	textureCompressionASTC_LDR              = false
	textureCompressionBC                    = true
	occlusionQueryPrecise                   = true
	pipelineStatisticsQuery                 = true
	vertexPipelineStoresAndAtomics          = true
	fragmentStoresAndAtomics                = true
	shaderTessellationAndGeometryPointSize  = true
	shaderImageGatherExtended               = true
	shaderStorageImageExtendedFormats       = false
	shaderStorageImageMultisample           = true
	shaderStorageImageReadWithoutFormat     = false
	shaderStorageImageWriteWithoutFormat    = true
	shaderUniformBufferArrayDynamicIndexing = false
	shaderSampledImageArrayDynamicIndexing  = false
	shaderStorageBufferArrayDynamicIndexing = false
	shaderStorageImageArrayDynamicIndexing  = false
	shaderClipDistance                      = true
	shaderCullDistance                      = true
	shaderFloat64                           = true
	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

VkPhysicalDevicePrivateDataFeaturesEXT:
---------------------------------------
	privateData = true
I got the games running with Lakka on the pi400 with no issues so i am going to guess its the driver like you said or maybe something broke in an update of dolphin. In any case Lakka worked out of the box so i will probably be playing around with that instead.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Thu Jan 06, 2022 8:13 pm

MortenHB wrote:
Thu Jan 06, 2022 5:06 pm
RasPiGaming wrote:
Wed Jan 05, 2022 11:15 pm
MortenHB wrote:
Wed Jan 05, 2022 7:44 pm
So I got Dolphin installed but when I went to choose Vulkan in the graphics section there were no choices in the adapters section and therefore I could not start any games. So I installed mesa-vulkan-drivers and I got 2 choices; V3D 4.2 and llvmpipe. Running V3D I got good performance but so many graphical bugs that it was unplayable. With llvmpipe, the games had no graphical glitches that I could see but with much worse performance.
Is there something I am missing here?

Link to what I am seeing if that helps.
https://www.youtube.com/watch?v=W5Dm2BUC_xI

I tried running it with opengl es but got this error.

Code: Select all

Failed to compile vs shader: /home/pi/.local/share/dolphin-emu/Dump/bad_vs_OGL_0.txt
Debug info (Broadcom, V3D 4.2, OpenGL ES 3.1 Mesa 20.3.5):
0:35(17): error: illegal use of reserved word `sampler2DMSArray'
0:35(17): error: syntax error, unexpected ERROR_TOK
That could a problem with the game you're trying to run. Try using my config with it. Also if you're getting graphical bugs with V3D check to see if you're still on Vulkan 1.0 (check using vulkaninfo in the terminal). If so you'll need to manually compile Mesa.
I have got my settings as close to yours as i can because it is a newer version. didn't fix the issue.
Checking vulkan tools it said Vulkan Instance Version: 1.2.162 ?

Code: Select all

pi@raspberrypi:~ $ vulkaninfo 
WARNING: v3dv is neither a complete nor a conformant Vulkan implementation. Testing use only.
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.162


Instance Extensions: count = 18
===============================
	VK_EXT_acquire_xlib_display            : extension revision 1
	VK_EXT_debug_report                    : extension revision 9
	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 1
	VK_KHR_get_surface_capabilities2       : 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

Layers: count = 2
=================
VK_LAYER_MESA_device_select (Linux device selection layer) Vulkan version 1.2.73, layer version 1:
	Layer Extensions: count = 0
	Devices: count = 2
		GPU id = 0 (V3D 4.2)
		Layer-Device Extensions: count = 0

		GPU id = 1 (llvmpipe (LLVM 11.0.1, 128 bits))
		Layer-Device Extensions: count = 0

VK_LAYER_MESA_overlay (Mesa Overlay layer) Vulkan version 1.1.73, layer version 1:
	Layer Extensions: count = 0
	Devices: count = 2
		GPU id = 0 (V3D 4.2)
		Layer-Device Extensions: count = 0

		GPU id = 1 (llvmpipe (LLVM 11.0.1, 128 bits))
		Layer-Device Extensions: count = 0

Presentable Surfaces:
=====================
GPU id : 0 (V3D 4.2):
	Surface types: count = 2
		VK_KHR_xcb_surface
		VK_KHR_xlib_surface
	Formats: count = 2
		SurfaceFormat[0]:
			format = FORMAT_B8G8R8A8_SRGB
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
		SurfaceFormat[1]:
			format = FORMAT_B8G8R8A8_UNORM
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
	Present Modes: count = 4
		PRESENT_MODE_IMMEDIATE_KHR
		PRESENT_MODE_MAILBOX_KHR
		PRESENT_MODE_FIFO_KHR
		PRESENT_MODE_FIFO_RELAXED_KHR
	VkSurfaceCapabilitiesKHR:
	-------------------------
		minImageCount       = 3
		maxImageCount       = 0
		currentExtent:
			width  = 256
			height = 256
		minImageExtent:
			width  = 256
			height = 256
		maxImageExtent:
			width  = 256
			height = 256
		maxImageArrayLayers = 1
		supportedTransforms: count = 1
			SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		currentTransform    = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		supportedCompositeAlpha: count = 2
			COMPOSITE_ALPHA_OPAQUE_BIT_KHR
			COMPOSITE_ALPHA_INHERIT_BIT_KHR
		supportedUsageFlags: count = 4
			IMAGE_USAGE_TRANSFER_SRC_BIT
			IMAGE_USAGE_TRANSFER_DST_BIT
			IMAGE_USAGE_STORAGE_BIT
			IMAGE_USAGE_COLOR_ATTACHMENT_BIT
	VkSurfaceCapabilities2EXT:
	--------------------------
		supportedSurfaceCounters: count = 0
			None
	VkSurfaceProtectedCapabilitiesKHR:
	----------------------------------
		supportsProtected = false


GPU id : 1 (llvmpipe (LLVM 11.0.1, 128 bits)):
	Surface types: count = 2
		VK_KHR_xcb_surface
		VK_KHR_xlib_surface
	Formats: count = 2
		SurfaceFormat[0]:
			format = FORMAT_B8G8R8A8_SRGB
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
		SurfaceFormat[1]:
			format = FORMAT_B8G8R8A8_UNORM
			colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
	Present Modes: count = 4
		PRESENT_MODE_IMMEDIATE_KHR
		PRESENT_MODE_MAILBOX_KHR
		PRESENT_MODE_FIFO_KHR
		PRESENT_MODE_FIFO_RELAXED_KHR
	VkSurfaceCapabilitiesKHR:
	-------------------------
		minImageCount       = 3
		maxImageCount       = 0
		currentExtent:
			width  = 256
			height = 256
		minImageExtent:
			width  = 256
			height = 256
		maxImageExtent:
			width  = 256
			height = 256
		maxImageArrayLayers = 1
		supportedTransforms: count = 1
			SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		currentTransform    = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
		supportedCompositeAlpha: count = 2
			COMPOSITE_ALPHA_OPAQUE_BIT_KHR
			COMPOSITE_ALPHA_INHERIT_BIT_KHR
		supportedUsageFlags: count = 5
			IMAGE_USAGE_TRANSFER_SRC_BIT
			IMAGE_USAGE_TRANSFER_DST_BIT
			IMAGE_USAGE_SAMPLED_BIT
			IMAGE_USAGE_STORAGE_BIT
			IMAGE_USAGE_COLOR_ATTACHMENT_BIT
	VkSurfaceCapabilities2EXT:
	--------------------------
		supportedSurfaceCounters: count = 0
			None
	VkSurfaceProtectedCapabilitiesKHR:
	----------------------------------
		supportsProtected = false



Device Groups:
==============
Group 0:
	Properties:
		physicalDevices: count = 1
			llvmpipe (LLVM 11.0.1, 128 bits) (ID: 0)
		subsetAllocation = 0

	Present Capabilities = Group does not support VK_KHR_device_group, skipping printing present capabilities

Group 1:
	Properties:
		physicalDevices: count = 1
			V3D 4.2 (ID: 0)
		subsetAllocation = 0

	Present Capabilities = Group does not support VK_KHR_device_group, skipping printing present capabilities


Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
	apiVersion     = 4194459 (1.0.155)
	driverVersion  = 83898373 (0x5003005)
	vendorID       = 0x14e4
	deviceID       = 0x002a
	deviceType     = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceName     = V3D 4.2

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

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

VkPhysicalDeviceIDPropertiesKHR:
--------------------------------
	deviceUUID      = e8c1c12d-2325-2af0-b0e8-66d7e87e7189
	driverUUID      = a8fd0fb8-55f0-17a4-83a5-4a2edff93bb8
	deviceNodeMask  = 0
	deviceLUIDValid = false


Device Extensions: count = 5
----------------------------
	VK_EXT_external_memory_dma_buf : extension revision 1
	VK_KHR_external_memory         : extension revision 1
	VK_KHR_external_memory_fd      : extension revision 1
	VK_KHR_maintenance1            : extension revision 2
	VK_KHR_swapchain               : extension revision 68

VkQueueFamilyProperties:
========================
	queueProperties[0]:
	-------------------
		minImageTransferGranularity = (1,1,1)
		queueCount                  = 1
		queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER
		timestampValidBits          = 64
		present support             = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
	memoryHeaps[0]:
		size   = 1989685248 (0x76983000) (1.85 GiB)
		budget = 103079215104 (0x1800000000) (96.00 GiB)
		usage  = 103079215104 (0x1800000000) (96.00 GiB)
		flags: count = 1
			MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 1
	memoryTypes[0]:
		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_D24_UNORM_S8_UINT
				(non-sparse)
			IMAGE_TILING_LINEAR:
				color images
				(non-sparse)

VkPhysicalDeviceFeatures:
=========================
	robustBufferAccess                      = true
	fullDrawIndexUint32                     = false
	imageCubeArray                          = true
	independentBlend                        = true
	geometryShader                          = false
	tessellationShader                      = false
	sampleRateShading                       = true
	dualSrcBlend                            = false
	logicOp                                 = true
	multiDrawIndirect                       = false
	drawIndirectFirstInstance               = true
	depthClamp                              = false
	depthBiasClamp                          = false
	fillModeNonSolid                        = true
	depthBounds                             = false
	wideLines                               = true
	largePoints                             = true
	alphaToOne                              = true
	multiViewport                           = false
	samplerAnisotropy                       = true
	textureCompressionETC2                  = true
	textureCompressionASTC_LDR              = false
	textureCompressionBC                    = false
	occlusionQueryPrecise                   = true
	pipelineStatisticsQuery                 = false
	vertexPipelineStoresAndAtomics          = true
	fragmentStoresAndAtomics                = true
	shaderTessellationAndGeometryPointSize  = false
	shaderImageGatherExtended               = false
	shaderStorageImageExtendedFormats       = true
	shaderStorageImageMultisample           = false
	shaderStorageImageReadWithoutFormat     = false
	shaderStorageImageWriteWithoutFormat    = false
	shaderUniformBufferArrayDynamicIndexing = false
	shaderSampledImageArrayDynamicIndexing  = false
	shaderStorageBufferArrayDynamicIndexing = false
	shaderStorageImageArrayDynamicIndexing  = false
	shaderClipDistance                      = true
	shaderCullDistance                      = false
	shaderFloat64                           = false
	shaderInt64                             = false
	shaderInt16                             = false
	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                        = true


GPU1:
-----
VkPhysicalDeviceProperties:
---------------------------
	apiVersion     = 4194306 (1.0.2)
	driverVersion  = 1 (0x0001)
	vendorID       = 0x10005
	deviceID       = 0x0000
	deviceType     = PHYSICAL_DEVICE_TYPE_CPU
	deviceName     = llvmpipe (LLVM 11.0.1, 128 bits)

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

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

VkPhysicalDeviceDriverPropertiesKHR:
------------------------------------
	driverID           = DRIVER_ID_MESA_LLVMPIPE
	driverName         = llvmpipe
	driverInfo         = Mesa 20.3.5 (LLVM 11.0.1)
	conformanceVersion = 1.0.0.0

VkPhysicalDeviceIDPropertiesKHR:
--------------------------------
	deviceUUID      = 00000000-0000-0000-0000-000000000000
	driverUUID      = 00000000-0000-0000-0000-000000000000
	deviceNodeMask  = 0
	deviceLUIDValid = false


Device Extensions: count = 14
-----------------------------
	VK_EXT_external_memory_dma_buf      : extension revision 1
	VK_EXT_private_data                 : extension revision 1
	VK_GOOGLE_decorate_string           : extension revision 1
	VK_GOOGLE_hlsl_functionality1       : extension revision 1
	VK_KHR_bind_memory2                 : extension revision 1
	VK_KHR_dedicated_allocation         : extension revision 1
	VK_KHR_driver_properties            : extension revision 1
	VK_KHR_get_memory_requirements2     : extension revision 1
	VK_KHR_incremental_present          : extension revision 1
	VK_KHR_maintenance1                 : extension revision 1
	VK_KHR_relaxed_block_layout         : extension revision 1
	VK_KHR_sampler_mirror_clamp_to_edge : extension revision 1
	VK_KHR_storage_buffer_storage_class : extension revision 1
	VK_KHR_swapchain                    : extension revision 68

VkQueueFamilyProperties:
========================
	queueProperties[0]:
	-------------------
		minImageTransferGranularity = (1,1,1)
		queueCount                  = 1
		queueFlags                  = QUEUE_GRAPHICS | QUEUE_COMPUTE | QUEUE_TRANSFER
		timestampValidBits          = 64
		present support             = true

VkPhysicalDeviceMemoryProperties:
=================================
memoryHeaps: count = 1
	memoryHeaps[0]:
		size   = 2147483648 (0x80000000) (2.00 GiB)
		budget = 0 (0x00000000) (0.00 B)
		usage  = 0 (0x00000000) (0.00 B)
		flags: count = 1
			MEMORY_HEAP_DEVICE_LOCAL_BIT
memoryTypes: count = 1
	memoryTypes[0]:
		heapIndex     = 0
		propertyFlags = 0x000f: count = 4
			MEMORY_PROPERTY_DEVICE_LOCAL_BIT
			MEMORY_PROPERTY_HOST_VISIBLE_BIT
			MEMORY_PROPERTY_HOST_COHERENT_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
				FORMAT_D32_SFLOAT_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                            = true
	logicOp                                 = true
	multiDrawIndirect                       = true
	drawIndirectFirstInstance               = true
	depthClamp                              = true
	depthBiasClamp                          = true
	fillModeNonSolid                        = true
	depthBounds                             = false
	wideLines                               = false
	largePoints                             = true
	alphaToOne                              = true
	multiViewport                           = true
	samplerAnisotropy                       = false
	textureCompressionETC2                  = false
	textureCompressionASTC_LDR              = false
	textureCompressionBC                    = true
	occlusionQueryPrecise                   = true
	pipelineStatisticsQuery                 = true
	vertexPipelineStoresAndAtomics          = true
	fragmentStoresAndAtomics                = true
	shaderTessellationAndGeometryPointSize  = true
	shaderImageGatherExtended               = true
	shaderStorageImageExtendedFormats       = false
	shaderStorageImageMultisample           = true
	shaderStorageImageReadWithoutFormat     = false
	shaderStorageImageWriteWithoutFormat    = true
	shaderUniformBufferArrayDynamicIndexing = false
	shaderSampledImageArrayDynamicIndexing  = false
	shaderStorageBufferArrayDynamicIndexing = false
	shaderStorageImageArrayDynamicIndexing  = false
	shaderClipDistance                      = true
	shaderCullDistance                      = true
	shaderFloat64                           = true
	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

VkPhysicalDevicePrivateDataFeaturesEXT:
---------------------------------------
	privateData = true
I got the games running with Lakka on the pi400 with no issues so i am going to guess its the driver like you said or maybe something broke in an update of dolphin. In any case Lakka worked out of the box so i will probably be playing around with that instead.
"Instance Version" doesn't actually mean what version you have installed. You need to look for apiVersion (and it says 1.0, so you'll need to recompile Mesa).
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

User avatar
RandLin
Posts: 1
Joined: Thu Feb 03, 2022 9:30 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Thu Feb 03, 2022 10:22 pm

bomblord wrote:
Fri Oct 29, 2021 7:47 pm
Installing Dolphin on your Pi 4: Foreword

Good day to everyone how are you? Good? Hope so....

Anyway, there are some out of date instructions out there on building Dolphin on the Pi and since Vulkan 1.1 is available (yay!) it's a good time to update everything and bring in some new discussion.

Once again DO NOT SUDO APT INSTALL DOLPHIN-EMU it is even further out of date than the last time and even more thousands of commits behind.

Also you will need to use a 64 bit OS I used raspberry pi os https://downloads.raspberrypi.org/raspios_arm64/images/

Also also you will want to build Vulkan if you intend to use it because for some reason it's not available in the 64 bit os by default https://gitlab.freedesktop.org/mesa/mesa/.... I'm not going to get into this because it's probably more complicated than this post there are other posts on this forum that go over it although they might be out of date and I'm not 100% sure how I got it to build and work a lot of dependencies and grabbing bits and pieces from other online discussions.

Installation

Code: Select all

sudo apt update

sudo apt upgrade

sudo apt install --no-install-recommends ca-certificates qtbase5-dev qtbase5-private-dev git cmake make gcc g++ pkg-config libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libxi-dev libxrandr-dev libudev-dev libevdev-dev libsfml-dev libminiupnpc-dev libmbedtls-dev libcurl4-openssl-dev libhidapi-dev libsystemd-dev libbluetooth-dev libasound2-dev libpulse-dev libpugixml-dev libbz2-dev libzstd-dev liblzo2-dev libpng-dev libusb-1.0-0-dev gettext
I haven't compared this vs the old instructions but I've copied/pasted the dependencies that dolphin lists on their website.This next part definitely has a new instruction due to the mgba add.

Code: Select all

git clone https://github.com/dolphin-emu/dolphin.git

cd dolphin-emu

//next instruction is new
git submodule update --init

mkdir build && cd build

sudo cmake ..

sudo make
Wait

At this point you're gonna be waiting. Go make some coffee and start on the pi zero 2 project you swore you would get done one day.
....
....
Back? Is it done yet? No?... yeah this takes a while go get more coffee.
....
....

Finish waiting
Hopefully it completed without errors and you're not too jittery from the coffee. Now, 2 more commands to finish up

Code: Select all

sudo make install

sudo reboot
Configuration

Now onto configuration... which isn't much as we now have Vulkan 1.1. This time no file edits need to be made or special flags set. Just open dolphin either from the games menu or from terminal and go to the graphics tab and where it says OpenGL click the drop down and choose Vulkan. If you opted not to use Vulkan the old instructions to prefer GLES need to be applied.

Overclock

This is technically optional from a "does it open without crashing" perspective but not from a "Will it run higher than 15fps" perspective. But maybe cinematic slow down makes the game feel more epic to you. Maybe you want to really dig into that N64 nostalgia. If that's you just ignore this next part.

Code: Select all

sudo nano /boot/config.txt

//at the very bottom put

over_voltage = 5
arm_freq = 2000
gpu_freq = 600

//Ctrl+X
//Enter

sudo reboot
Both the CPU/GPU can go higher but these are nice and stable clocks on every pi I've tested.

Finished
My testing is showing absolutely no performance improvement and mostly the same graphical bugs unless the 64 bit mesa is messed up somehow (Shows 4.2 in Dolphin and 1.1.92 in vulkaninfo | less for some reason). But, for games that are simpler they should continue to run full speed at 1x res and all enhancements turned off.
You don't (and probably shouldn't) use sudo with cmake and make (you need it for sudo make install though).
Also instead of make you can use

Code: Select all

 make -j4 
It will be about 4X faster! However, it will use most of your CPU. Works fine on a 4gb pi4. Nice work.

BranLoux896
Posts: 41
Joined: Tue Jan 08, 2019 3:23 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Feb 25, 2022 10:10 pm

Hey everyone, just wanted to add a couple beneficial notes to this thread here:

1. The mesa/vulkan drivers are way easier to install now. It's a simple run commmand 'sudo apt install mesa-vulkan-drivers'. This specific
method works fluenty with Dolphin, as opposed to the method using PiKiss. Those drivers are only 32-bit and don't work correctly in Dolphin.

2. After doing 'cmake ..', I would definitely suggest to do 'make -j4' as previously stated by Randlin. It makes the process for this step
significantly quicker. Be sure to have some kind of active cooling on your Pi though because the CPU usage will sit at 99%-100% for the entirety
of that step.

I'm currently doing some testing on a Pi 4 - 4gb model, running the official release of Raspberry Pi OS 64-bit. I'm noting (in as few steps as possible) the full process from start-to-finish for Dolphin installation, as well as tweaking Dolphin/Pi settings to ensure games can run fluently (game dependent of course). The goal is to carry this over to my Pi 4 - 8gb model that I have inside of a PiBoy DMG so that I can run Gamecube games on there through Batocera.

I know that the folks at Experimental Pi released an official RetroPie image to run on their PiBoy DMG units, but someone in the community compiled a concept image for Batocera that works right out of the box. It's gotten some great feedback and is constantly being worked on and updated.

Any additional insight on this thread with updates to things that can be done to make Gamecube games (as a whole or on an individual game basis) run better is welcomed and much appreciated.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Sun Feb 27, 2022 6:36 pm

BranLoux896 wrote:
Fri Feb 25, 2022 10:10 pm
Any additional insight on this thread with updates to things that can be done to make Gamecube games (as a whole or on an individual game basis) run better is welcomed and much appreciated.
Check out my config earlier in the thread, many games run near full speed using it with a little bit of overclocking.
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

merryfistmas
Posts: 1
Joined: Mon Feb 28, 2022 7:24 am

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Mon Feb 28, 2022 8:53 am

I followed the instructions, checking the dolphin website for any changes in the dependencies, and it failed to compile.

I received these errors while compiling. I don't know anything about C, but they're errors with comparing a signed integer and an integer.

Code: Select all

Scanning dependencies of target imgui
Scanning dependencies of target cpp-optparse
Scanning dependencies of target enet
Scanning dependencies of target glslang
[  0%] Building CXX object Externals/cpp-optparse/CMakeFiles/cpp-optparse.dir/OptionParser.cpp.o
[  0%] Building C object Externals/enet/CMakeFiles/enet.dir/callbacks.c.o
[  0%] Building CXX object Externals/imgui/CMakeFiles/imgui.dir/imgui.cpp.o
[  1%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/GenericCodeGen/CodeGen.cpp.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/compress.c.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/host.c.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/list.c.o
[  2%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/GenericCodeGen/Link.cpp.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/packet.c.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/peer.c.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/protocol.c.o
[  2%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/attribute.cpp.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/unix.c.o
[  2%] Building C object Externals/enet/CMakeFiles/enet.dir/win32.c.o
[  2%] Linking C static library libenet.a
[  2%] Built target enet
Scanning dependencies of target xxhash
[  2%] Building C object Externals/xxhash/CMakeFiles/xxhash.dir/xxhash.c.o
[  2%] Linking C static library libxxhash.a
[  2%] Built target xxhash
Scanning dependencies of target lzma
[  2%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/check/check.c.o
[  2%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/check/crc32_fast.c.o
[  2%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/Constant.cpp.o
[  2%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/check/crc32_table.c.o
[  2%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/check/crc64_fast.c.o
[  2%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/check/crc64_table.c.o
[  3%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/check/sha256.c.o
[  3%] Linking CXX static library libcpp-optparse.a
[  3%] Built target cpp-optparse
Scanning dependencies of target zstd
[  3%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/alone_decoder.c.o
[  3%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/debug.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/entropy_common.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/alone_encoder.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/error_private.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/fse_decompress.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/auto_decoder.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/block_buffer_decoder.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/block_buffer_encoder.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/pool.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/threading.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/xxhash.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/block_decoder.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/block_encoder.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/block_header_decoder.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/block_header_encoder.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/common/zstd_common.c.o
[  4%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/block_util.c.o
[  4%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/fse_compress.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/common.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/easy_buffer_encoder.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/easy_decoder_memusage.c.o
[  5%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/hist.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/easy_encoder.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/easy_encoder_memusage.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/easy_preset.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/filter_buffer_decoder.c.o
[  5%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/huf_compress.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/filter_buffer_encoder.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/filter_common.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/filter_decoder.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/filter_encoder.c.o
[  5%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/filter_flags_decoder.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/filter_flags_encoder.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/hardware_cputhreads.c.o
[  6%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_compress.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/hardware_physmem.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/index.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/index_decoder.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/index_encoder.c.o
[  6%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/glslang_tab.cpp.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/index_hash.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/outqueue.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_buffer_decoder.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_buffer_encoder.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_decoder.c.o
[  6%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_encoder.c.o
[  7%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_encoder_mt.c.o
[  7%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_flags_common.c.o
[  7%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_flags_decoder.c.o
[  7%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/stream_flags_encoder.c.o
[  7%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_compress_literals.c.o
[  8%] Building CXX object Externals/imgui/CMakeFiles/imgui.dir/imgui_draw.cpp.o
[  8%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/vli_decoder.c.o
[  9%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_compress_sequences.c.o
[  9%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/vli_encoder.c.o
[  9%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/common/vli_size.c.o
[  9%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/delta/delta_common.c.o
[  9%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_double_fast.c.o
[  9%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/delta/delta_decoder.c.o
[  9%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/delta/delta_encoder.c.o
[  9%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lz/lz_decoder.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lz/lz_encoder.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lz/lz_encoder_mf.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/fastpos_table.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/lzma2_decoder.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/lzma2_encoder.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/lzma_decoder.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/lzma_encoder.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/lzma_encoder_optimum_fast.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/lzma_encoder_optimum_normal.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/lzma/lzma_encoder_presets.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/rangecoder/price_table.c.o
[ 10%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/simple/simple_coder.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/simple/simple_decoder.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/simple/simple_encoder.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/tuklib/tuklib_cpucores.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/tuklib/tuklib_exit.c.o
[ 11%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_fast.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/tuklib/tuklib_mbstr_fw.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/tuklib/tuklib_mbstr_width.c.o
[ 11%] Building CXX object Externals/imgui/CMakeFiles/imgui.dir/imgui_tables.cpp.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/tuklib/tuklib_open_stdxxx.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/tuklib/tuklib_physmem.c.o
[ 11%] Building C object Externals/liblzma/CMakeFiles/lzma.dir/tuklib/tuklib_progname.c.o
[ 11%] Linking C static library liblzma.a
[ 11%] Built target lzma
[ 11%] Building CXX object Externals/imgui/CMakeFiles/imgui.dir/imgui_widgets.cpp.o
Scanning dependencies of target minizip
[ 11%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_compat.c.o
[ 11%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_lazy.c.o
[ 11%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_crypt.c.o
[ 11%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_os.c.o
[ 11%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_strm.c.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_strm_buf.c.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_strm_mem.c.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_strm_split.c.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_strm_zlib.c.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_zip.c.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_zip_rw.c.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_os_posix.c.o
/home/pi/dolphin/Externals/minizip/mz_os_posix.c: In function ‘mz_os_utf8_string_create’:
/home/pi/dolphin/Externals/minizip/mz_os_posix.c:104:5: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
     strncpy((char *)string_copy, string, string_length);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/dolphin/Externals/minizip/mz_os_posix.c:102:21: note: length computed here
     string_length = strlen(string);
                     ^~~~~~~~~~~~~~
/home/pi/dolphin/Externals/minizip/mz_os_posix.c: In function ‘mz_os_get_file_date’:
/home/pi/dolphin/Externals/minizip/mz_os_posix.c:225:9: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
         strncpy(name, path, len + 1);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/dolphin/Externals/minizip/mz_os_posix.c:223:15: note: length computed here
         len = strlen(path);
               ^~~~~~~~~~~~
[ 12%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/InfoSink.cpp.o
[ 12%] Building C object Externals/minizip/CMakeFiles/minizip.dir/mz_strm_os_posix.c.o
[ 12%] Linking C static library libminizip.a
[ 12%] Built target minizip
Scanning dependencies of target FreeSurround
[ 12%] Building CXX object Externals/FreeSurround/CMakeFiles/FreeSurround.dir/source/ChannelMaps.cpp.o
[ 12%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/Initialize.cpp.o
[ 12%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_ldm.c.o
[ 12%] Linking CXX static library libimgui.a
[ 12%] Built target imgui
[ 12%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstd_opt.c.o
[ 12%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/compress/zstdmt_compress.c.o
[ 12%] Building CXX object Externals/FreeSurround/CMakeFiles/FreeSurround.dir/source/KissFFT.cpp.o
[ 12%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/decompress/huf_decompress.c.o
[ 12%] Building CXX object Externals/FreeSurround/CMakeFiles/FreeSurround.dir/source/KissFFTR.cpp.o
[ 12%] Building CXX object Externals/FreeSurround/CMakeFiles/FreeSurround.dir/source/FreeSurroundDecoder.cpp.o
[ 12%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/decompress/zstd_ddict.c.o
[ 12%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/decompress/zstd_decompress.c.o
[ 12%] Linking CXX static library libFreeSurround.a
[ 12%] Built target FreeSurround
Scanning dependencies of target SoundTouch
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/AAFilter.cpp.o
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/BPMDetect.cpp.o
[ 12%] Building C object Externals/zstd/CMakeFiles/zstd.dir/lib/decompress/zstd_decompress_block.c.o
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/cpu_detect_x86.cpp.o
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/FIFOSampleBuffer.cpp.o
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/FIRFilter.cpp.o
[ 12%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/Intermediate.cpp.o
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/InterpolateCubic.cpp.o
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/InterpolateLinear.cpp.o
[ 12%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/InterpolateShannon.cpp.o
[ 12%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/intermOut.cpp.o
[ 13%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/mmx_optimized.cpp.o
[ 13%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/PeakFinder.cpp.o
[ 13%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/RateTransposer.cpp.o
[ 13%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/SoundTouch.cpp.o
[ 13%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/sse_optimized.cpp.o
[ 13%] Building CXX object Externals/soundtouch/CMakeFiles/SoundTouch.dir/TDStretch.cpp.o
[ 13%] Linking CXX static library libSoundTouch.a
[ 13%] Built target SoundTouch
Scanning dependencies of target fmt
[ 13%] Building CXX object Externals/fmt/CMakeFiles/fmt.dir/src/format.cc.o
[ 13%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/IntermTraverse.cpp.o
[ 13%] Building CXX object Externals/fmt/CMakeFiles/fmt.dir/src/os.cc.o
[ 13%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/iomapper.cpp.o
[ 14%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/limits.cpp.o
[ 14%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/linkValidate.cpp.o
[ 15%] Linking C static library libzstd.a
[ 15%] Built target zstd
[ 15%] Linking CXX static library libfmt.a
Scanning dependencies of target speex
[ 15%] Building C object Externals/cubeb/CMakeFiles/speex.dir/src/speex/resample.c.o
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c: In function ‘update_filter’:
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c:674:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
          for (j=0;j<st->filt_len;j++)
                    ^
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c: In function ‘speex_resampler_process_float’:
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c:946:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
            for(j=0;j<ichunk;++j)
                     ^
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c:949:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
           for(j=0;j<ichunk;++j)
                    ^
[ 15%] Built target fmt
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c: In function ‘speex_resampler_process_int’:
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c:1002:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
          for(j=0;j<ichunk;++j)
                   ^
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c:1009:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
          for(j=0;j<ichunk;++j)
                   ^
/home/pi/dolphin/Externals/cubeb/src/speex/resample.c:1019:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
      for (j=0;j<ochunk+omagic;++j)
                ^
Scanning dependencies of target mgba-version-info
[ 15%] Built target mgba-version-info
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/parseConst.cpp.o
[ 15%] Built target speex
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/ParseContextBase.cpp.o
Scanning dependencies of target discord-rpc
[ 15%] Building CXX object Externals/discord-rpc/src/CMakeFiles/discord-rpc.dir/discord_rpc.cpp.o
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/ParseHelper.cpp.o
[ 15%] Building CXX object Externals/discord-rpc/src/CMakeFiles/discord-rpc.dir/rpc_connection.cpp.o
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/PoolAlloc.cpp.o
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/preprocessor/Pp.cpp.o
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/preprocessor/PpAtom.cpp.o
[ 15%] Building CXX object Externals/discord-rpc/src/CMakeFiles/discord-rpc.dir/serialization.cpp.o
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/preprocessor/PpContext.cpp.o
[ 15%] Building CXX object Externals/discord-rpc/src/CMakeFiles/discord-rpc.dir/connection_unix.cpp.o
[ 15%] Building CXX object Externals/discord-rpc/src/CMakeFiles/discord-rpc.dir/discord_register_linux.cpp.o
[ 15%] Linking CXX static library libdiscord-rpc.a
[ 15%] Built target discord-rpc
Scanning dependencies of target unittests_stubhost
[ 15%] Building CXX object Source/UnitTests/CMakeFiles/unittests_stubhost.dir/StubHost.cpp.o
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/preprocessor/PpScanner.cpp.o
[ 15%] Built target unittests_stubhost
Scanning dependencies of target common
[ 15%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/preprocessor/PpTokens.cpp.o
[ 17%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Analytics.cpp.o
[ 17%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/CDUtils.cpp.o
[ 17%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/propagateNoContraction.cpp.o
[ 17%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/ColorUtil.cpp.o
[ 18%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/reflection.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/CommonFuncs.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Config/Config.cpp.o
[ 18%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/RemoveTree.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Config/ConfigInfo.cpp.o
[ 18%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/Scan.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Config/Layer.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Crypto/AES.cpp.o
[ 18%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/ShaderLang.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Crypto/bn.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Crypto/ec.cpp.o
[ 18%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/SymbolTable.cpp.o
[ 18%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Debug/MemoryPatches.cpp.o
[ 19%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Debug/Watches.cpp.o
[ 19%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/DynamicLibrary.cpp.o
[ 19%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/MachineIndependent/Versions.cpp.o
[ 19%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/ENetUtil.cpp.o
[ 19%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/FileSearch.cpp.o
[ 19%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/FileUtil.cpp.o
[ 19%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/OGLCompilersDLL/InitializeDll.cpp.o
[ 19%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/disassemble.cpp.o
[ 19%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/doc.cpp.o
[ 19%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/FloatUtils.cpp.o
Scanning dependencies of target cubeb
[ 19%] Building C object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb.c.o
[ 19%] Building CXX object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb_mixer.cpp.o
[ 19%] Building CXX object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb_resampler.cpp.o
[ 19%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/GekkoDisassembler.cpp.o
Scanning dependencies of target mgba
[ 19%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/bitmap-cache.c.o
[ 20%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/cache-set.c.o
[ 20%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/cheats.c.o
[ 20%] Building CXX object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb_panner.cpp.o
[ 20%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/config.c.o
[ 20%] Building CXX object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb_log.cpp.o
[ 20%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/core.c.o
[ 20%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/directories.c.o
[ 20%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/input.c.o
[ 21%] Building C object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb_strings.c.o
[ 21%] Building C object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb_pulse.c.o
[ 21%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/GlslangToSpv.cpp.o
[ 21%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/interface.c.o
[ 21%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/library.c.o
[ 21%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/lockstep.c.o
[ 21%] Building C object Externals/cubeb/CMakeFiles/cubeb.dir/src/cubeb_alsa.c.o
/home/pi/dolphin/Externals/cubeb/src/cubeb_alsa.c:8: warning: "_DEFAULT_SOURCE" redefined
 #define _DEFAULT_SOURCE
 
<command-line>: note: this is the location of the previous definition
[ 21%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/log.c.o
/home/pi/dolphin/Externals/mGBA/mgba/src/core/log.c: In function ‘mLogFilterSave’:
/home/pi/dolphin/Externals/mGBA/mgba/src/core/log.c:129:58: warning: ‘%s’ directive argument is null [-Wformat-truncation=]
   snprintf(configName, sizeof(configName) - 1, "logLevel.%s", mLogCategoryId(i));
                                                          ^~
[ 21%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Hash.cpp.o
[ 21%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/map-cache.c.o
[ 21%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/mem-search.c.o
[ 21%] Linking CXX static library libcubeb.a
[ 21%] Built target cubeb
[ 21%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/InReadableOrder.cpp.o
[ 21%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/HttpRequest.cpp.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/rewind.c.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/scripting.c.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/serialize.c.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/sync.c.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/thread.c.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/tile-cache.c.o
[ 22%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Image.cpp.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/core/timing.c.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/sm83/decoder.c.o
[ 22%] Building C object Source/Core/Common/CMakeFiles/common.dir/ImageC.c.o
[ 22%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/IniFile.cpp.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/sm83/isa-sm83.c.o
/home/pi/dolphin/Externals/mGBA/mgba/src/sm83/decoder.c: In function ‘SM83Decode’:
/home/pi/dolphin/Externals/mGBA/mgba/src/sm83/decoder.c:418:9: warning: ‘decoder’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  return decoder(opcode, info);
         ^~~~~~~~~~~~~~~~~~~~~
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/sm83/sm83.c.o
[ 22%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/audio.c.o
[ 23%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/IOFile.cpp.o
[ 23%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/JitRegister.cpp.o
[ 23%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Logging/LogManager.cpp.o
[ 23%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/cheats.c.o
[ 23%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/Logger.cpp.o
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/core.c.o
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/gb.c.o
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/input.c.o
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/io.c.o
In file included from /home/pi/dolphin/Source/Core/Common/Logging/LogManager.cpp:19:
/home/pi/dolphin/Source/Core/Common/Logging/ConsoleListener.h:17:39: warning: ‘maybe_unused’ attribute ignored [-Wattributes]
   [[maybe_unused]] bool m_use_color = false;
                                       ^~~~~
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/mbc.c.o
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/memory.c.o
/home/pi/dolphin/Externals/mGBA/mgba/src/gb/memory.c: In function ‘GBLoad8’:
/home/pi/dolphin/Externals/mGBA/mgba/src/gb/memory.c:287:63: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
   } else if (cpu->tMultiplier * (cpu->pc - memory->cartBusPc) >= memory->cartBusDecay) {
                                                               ^~
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/overrides.c.o
[ 24%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/serialize.c.o
[ 24%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/MathUtil.cpp.o
[ 25%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/SpvBuilder.cpp.o
[ 25%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/renderers/cache-set.c.o
[ 25%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/renderers/software.c.o
[ 25%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Matrix.cpp.o
[ 25%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/sio.c.o
[ 26%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/timer.c.o
[ 26%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/MemoryUtil.cpp.o
[ 26%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/video.c.o
[ 26%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/arm/arm.c.o
[ 26%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/arm/decoder-arm.c.o
[ 26%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/MsgHandler.cpp.o
[ 26%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/NandPaths.cpp.o
[ 26%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/SpvPostProcess.cpp.o
/home/pi/dolphin/Source/Core/Common/NandPaths.cpp: In function ‘bool Common::IsIllegalCharacter(char)’:
/home/pi/dolphin/Source/Core/Common/NandPaths.cpp:103:13: warning: comparison is always true due to limited range of data type [-Wtype-limits]
   return (c >= 0 && c <= 0x1F) || illegal_chars.find(c) != illegal_chars.end();
           ~~^~~~
[ 26%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/arm/decoder.c.o
[ 26%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/arm/decoder-thumb.c.o
/home/pi/dolphin/Externals/mGBA/mgba/src/arm/decoder.c: In function ‘ARMResolveMemoryAccess’:
/home/pi/dolphin/Externals/mGBA/mgba/src/arm/decoder.c:565:53: warning: operand of ?: changes signedness from ‘int32_t’ {aka ‘int’} to ‘uint32_t’ {aka ‘unsigned int’} due to unsignedness of other operand [-Wsign-compare]
   offset = info->memory.offset.reg == ARM_PC ? pc : regs->gprs[info->memory.offset.reg];
                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 26%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/SPIRV/SPVRemapper.cpp.o
[ 26%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/arm/isa-arm.c.o
[ 26%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Network.cpp.o
[ 26%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/PcapFile.cpp.o
[ 26%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/PerformanceCounter.cpp.o
[ 26%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/StandAlone/ResourceLimits.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Profiler.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/QoSSession.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Random.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/SDCardUtil.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/SettingsHandler.cpp.o
[ 27%] Building CXX object Externals/glslang/CMakeFiles/glslang.dir/glslang/OSDependent/Unix/ossource.cpp.o
[ 27%] Linking CXX static library libglslang.a
[ 27%] Built target glslang
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/SFMLHelper.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/SocketContext.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/StringUtil.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/SymbolDB.cpp.o
[ 27%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/arm/isa-thumb.c.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Thread.cpp.o
[ 27%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/audio.c.o
[ 27%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/bios.c.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Timer.cpp.o
[ 27%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/TraversalClient.cpp.o
[ 27%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cart/ereader.c.o
[ 28%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/UPnP.cpp.o
[ 28%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cart/gpio.c.o
[ 28%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Version.cpp.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cart/matrix.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Logging/ConsoleListenerNix.cpp.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cart/vfame.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/MemArenaUnix.cpp.o
In file included from /home/pi/dolphin/Source/Core/Core/NetPlayProto.h:13,
                 from /home/pi/dolphin/Source/Core/Common/TraversalClient.cpp:13:
/home/pi/dolphin/Source/Core/Core/HW/EXI/EXI.h:40:23: warning: ‘ExpansionInterface::SLOTS’ defined but not used [-Wunused-variable]
 static constexpr auto SLOTS = {Slot::A, Slot::B, Slot::SP1};
                       ^~~~~
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cheats.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Arm64Emitter.cpp.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cheats/codebreaker.c.o
In file included from /home/pi/dolphin/Source/Core/Common/Logging/ConsoleListenerNix.cpp:4:
/home/pi/dolphin/Source/Core/Common/Logging/ConsoleListener.h:17:39: warning: ‘maybe_unused’ attribute ignored [-Wattributes]
   [[maybe_unused]] bool m_use_color = false;
                                       ^~~~~
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cheats/gameshark.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/ArmCPUDetect.cpp.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/cheats/parv3.c.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/core.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/ArmFPURoundMode.cpp.o
In file included from /home/pi/dolphin/Source/Core/Common/Assert.h:9,
                 from /home/pi/dolphin/Source/Core/Common/Arm64Emitter.h:12,
                 from /home/pi/dolphin/Source/Core/Common/Arm64Emitter.cpp:4:
/home/pi/dolphin/Source/Core/Common/Arm64Emitter.h: In member function ‘u32 Arm64Gen::ArithOption::GetData() const’:
/home/pi/dolphin/Source/Core/Common/MsgHandler.h:85:20: error: invalid use of void expression
       ##__VA_ARGS__)
                    ^
/home/pi/dolphin/Source/Core/Common/MsgHandler.h:126:3: note: in expansion of macro ‘GenericAlertFmt’
   GenericAlertFmt(true, Common::MsgType::Warning, log_type, format, ##__VA_ARGS__)
   ^~~~~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Assert.h:16:12: note: in expansion of macro ‘PanicYesNoFmtAssert’
       if (!PanicYesNoFmtAssert(_t_,                                                                \
            ^~~~~~~~~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Assert.h:29:7: note: in expansion of macro ‘ASSERT_MSG’
       ASSERT_MSG(_t_, _a_, _fmt_, ##__VA_ARGS__);                                                  \
       ^~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Arm64Emitter.h:495:7: note: in expansion of macro ‘DEBUG_ASSERT_MSG’
       DEBUG_ASSERT_MSG(DYNA_REC, false, "Invalid type in GetData");
       ^~~~~~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Arm64Emitter.h: In constructor ‘constexpr Arm64Gen::LogicalImm::LogicalImm(u64, u32)’:
/home/pi/dolphin/Source/Core/Common/MsgHandler.h:85:20: error: invalid use of void expression
       ##__VA_ARGS__)
                    ^
/home/pi/dolphin/Source/Core/Common/MsgHandler.h:100:3: note: in expansion of macro ‘GenericAlertFmt’
   GenericAlertFmt(true, Common::MsgType::Warning, MASTER_LOG, format, ##__VA_ARGS__)
   ^~~~~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Assert.h:37:12: note: in expansion of macro ‘PanicYesNoFmt’
       if (!PanicYesNoFmt("An error occurred.\n\n"                                                  \
            ^~~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Assert.h:49:7: note: in expansion of macro ‘ASSERT’
       ASSERT(_a_);                                                                                 \
       ^~~~~~
/home/pi/dolphin/Source/Core/Common/Arm64Emitter.h:660:5: note: in expansion of macro ‘DEBUG_ASSERT’
     DEBUG_ASSERT((multiplier_idx >= 0) &&
     ^~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Arm64Emitter.cpp: In member function ‘void Arm64Gen::ARM64FloatEmitter::EmitConvertScalarToInt(Arm64Gen::ARM64Reg, Arm64Gen::ARM64Reg, Arm64Gen::RoundingMode, bool)’:
/home/pi/dolphin/Source/Core/Common/MsgHandler.h:85:20: error: invalid use of void expression
       ##__VA_ARGS__)
                    ^
/home/pi/dolphin/Source/Core/Common/MsgHandler.h:126:3: note: in expansion of macro ‘GenericAlertFmt’
   GenericAlertFmt(true, Common::MsgType::Warning, log_type, format, ##__VA_ARGS__)
   ^~~~~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Assert.h:16:12: note: in expansion of macro ‘PanicYesNoFmtAssert’
       if (!PanicYesNoFmtAssert(_t_,                                                                \
            ^~~~~~~~~~~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Assert.h:29:7: note: in expansion of macro ‘ASSERT_MSG’
       ASSERT_MSG(_t_, _a_, _fmt_, ##__VA_ARGS__);                                                  \
       ^~~~~~~~~~
/home/pi/dolphin/Source/Core/Common/Arm64Emitter.cpp:2194:3: note: in expansion of macro ‘DEBUG_ASSERT_MSG’
   DEBUG_ASSERT_MSG(DYNA_REC, IsScalar(Rn), "fcvts: Rn must be floating point");
   ^~~~~~~~~~~~~~~~
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/dma.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/GL/GLContext.cpp.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/GL/GLUtil.cpp.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/gba.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/GL/GLExtensions/GLExtensions.cpp.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/hle-bios.c.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/input.c.o
[ 29%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/io.c.o
[ 29%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/GL/GLX11Window.cpp.o
make[2]: *** [Source/Core/Common/CMakeFiles/common.dir/build.make:713: Source/Core/Common/CMakeFiles/common.dir/Arm64Emitter.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/memory.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/overrides.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/renderers/cache-set.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/renderers/common.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/renderers/gl.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/renderers/software-bg.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/renderers/software-mode0.c.o
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-bg.c: In function ‘GBAVideoSoftwareRendererDrawBackgroundMode2’:
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-bg.c:70:12: warning: ‘localY’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     localY &= sizeAdjusted - 1; \
            ^~
In file included from /home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-bg.c:6:
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-private.h:175:10: note: ‘localY’ was declared here
  int32_t localY;                                                                                                   \
          ^~~~~~
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-bg.c:82:2: note: in expansion of macro ‘BACKGROUND_BITMAP_INIT’
  BACKGROUND_BITMAP_INIT;
  ^~~~~~~~~~~~~~~~~~~~~~
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-bg.c:69:12: warning: ‘localX’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     localX &= sizeAdjusted - 1; \
            ^~
In file included from /home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-bg.c:6:
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-private.h:174:10: note: ‘localX’ was declared here
  int32_t localX;                                                                                                   \
          ^~~~~~
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/renderers/software-bg.c:82:2: note: in expansion of macro ‘BACKGROUND_BITMAP_INIT’
  BACKGROUND_BITMAP_INIT;
  ^~~~~~~~~~~~~~~~~~~~~~
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/renderers/software-obj.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/renderers/video-software.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/savedata.c.o
[ 30%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/serialize.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/sharkport.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/sio.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/sio/gbp.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/sio/joybus.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/timer.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/video.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/circle-buffer.c.o
make[1]: *** [CMakeFiles/Makefile2:1641: Source/Core/Common/CMakeFiles/common.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/configuration.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/convolve.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/crc32.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/elf-read.c.o
[ 31%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/export.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/formatting.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/gbk-table.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/hash.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/patch.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/patch-fast.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/patch-ips.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/patch-ups.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/png-io.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/ring-fifo.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/string.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/table.c.o
[ 32%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/text-codec.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/vfs.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/version.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/vfs/vfs-mem.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/vfs/vfs-fifo.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/vfs/vfs-fd.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/vfs/vfs-dirent.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/platform/posix/memory.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/inih/ini.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/blip_buf/blip_buf.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/util/vfs/vfs-lzma.c.o
[ 34%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zAlloc.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zArcIn.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zBuf.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zBuf2.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zCrc.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zCrcOpt.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zDec.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/CpuArch.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/Delta.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/LzmaDec.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/Lzma2Dec.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/Bra.c.o
[ 35%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/Bra86.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/BraIA64.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/Bcj2.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/Ppmd7.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/Ppmd7Dec.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zFile.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/third-party/lzma/7zStream.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/sio/dolphin.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/sio/lockstep.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/sio/lockstep.c.o
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/sio/printer.c.o
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/sio/lockstep.c: In function ‘_GBASIOLockstepNodeProcessEvents’:
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/sio/lockstep.c:454:3: warning: enumeration value ‘SIO_UART’ not handled in switch [-Wswitch]
   switch (node->mode) {
   ^~~~~~
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/sio/lockstep.c:454:3: warning: enumeration value ‘SIO_GPIO’ not handled in switch [-Wswitch]
/home/pi/dolphin/Externals/mGBA/mgba/src/gba/sio/lockstep.c:454:3: warning: enumeration value ‘SIO_JOYBUS’ not handled in switch [-Wswitch]
[ 36%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/extra/audio-mixer.c.o
[ 37%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/extra/battlechip.c.o
[ 37%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gba/extra/proxy.c.o
[ 37%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/gb/extra/proxy.c.o
[ 37%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/feature/commandline.c.o
[ 37%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/feature/thread-proxy.c.o
[ 37%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/feature/updater.c.o
[ 37%] Building C object Externals/mGBA/mgba/CMakeFiles/mgba.dir/src/feature/video-logger.c.o
[ 37%] Linking C static library libmgba.a
[ 37%] Built target mgba
make: *** [Makefile:152: all] Error 2

cmake failed some tests, I'm not sure if that could be the cause of the problem or how to solve it if it is. cmake make also failed some tests, I'm not sure if that is contributing to the probem.

Has anyone else had a similar issue? Or know how to fix the error?

EDIT: It worked when I reinstalled RPi OS 64 bit on a blank SD card. I was using berryboot before and it appears to be a differen image.
Last edited by merryfistmas on Fri Mar 04, 2022 2:59 am, edited 1 time in total.

BranLoux896
Posts: 41
Joined: Tue Jan 08, 2019 3:23 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Mon Feb 28, 2022 4:24 pm

RasPiGaming, your settings menus look different than what I'm seeing on my end. Were those screenshots taken from Dolphin running on a Pi 4? Also, settings sometimes need to be adjusted depending on the game running. No specific array of settings is proven to be effective for all Gamecube/Wii games. There's also Gecko codes that can be used for individual games as well for things like increasing resolution and FPS.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Mon Feb 28, 2022 7:05 pm

BranLoux896 wrote:
Mon Feb 28, 2022 4:24 pm
RasPiGaming, your settings menus look different than what I'm seeing on my end. Were those screenshots taken from Dolphin running on a Pi 4? Also, settings sometimes need to be adjusted depending on the game running. No specific array of settings is proven to be effective for all Gamecube/Wii games. There's also Gecko codes that can be used for individual games as well for things like increasing resolution and FPS.
It's running on a Pi4, however a much older version of Dolphin (from sometime in 2020 I think?). I found it seemed to work well for most Gamecube games I tried (most over 40 FPS, which in 50hz mode is quite playable). If possible keep games running at 30/25 FPS (depending on 60hz or 50hz mode), then the games run full speed. Also keep the resolution as low as possible.
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

BranLoux896
Posts: 41
Joined: Tue Jan 08, 2019 3:23 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Mar 04, 2022 2:48 am

RasPiGaming wrote:
Mon Feb 28, 2022 7:05 pm
It's running on a Pi4, however a much older version of Dolphin (from sometime in 2020 I think?). I found it seemed to work well for most Gamecube games I tried (most over 40 FPS, which in 50hz mode is quite playable). If possible keep games running at 30/25 FPS (depending on 60hz or 50hz mode), then the games run full speed. Also keep the resolution as low as possible.
Which version of Dolphin are you using? I’m rather curious to try that.

User avatar
RasPiGaming
Posts: 404
Joined: Mon Jul 26, 2021 1:06 pm

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Fri Mar 04, 2022 10:42 pm

BranLoux896 wrote:
Fri Mar 04, 2022 2:48 am
RasPiGaming wrote:
Mon Feb 28, 2022 7:05 pm
It's running on a Pi4, however a much older version of Dolphin (from sometime in 2020 I think?). I found it seemed to work well for most Gamecube games I tried (most over 40 FPS, which in 50hz mode is quite playable). If possible keep games running at 30/25 FPS (depending on 60hz or 50hz mode), then the games run full speed. Also keep the resolution as low as possible.
Which version of Dolphin are you using? I’m rather curious to try that.
I used the version in this post: viewtopic.php?p=1526894 (looks like the build is from 2019 actually, not 2020)
If you're on a 64-bit OS ignore the chroot part.
An RPi can be a gaming PC. As long as you have the right packages and software anyway.
Using a RPi4 8GB with Ubuntu Desktop 21.04, main interests are gaming and programming. Also occasionally uses two RPi3B+ and a RPi3B.

Soutbreez
Posts: 1
Joined: Sun May 08, 2022 12:10 am

Re: Building Dolphin (GC/WII Emulator) on the Pi 4: 2021 Edition

Sun May 08, 2022 6:42 am

Greetings! As a total noob on Linux, these instructions didn't work out of the box for me. I finally got it working and thought I would share.

I just installed Dolpin on a fresh image of RaspiOS 64bit, on a Raspi 4, 8gb. I had to reference both the old and new guides as well as the comments and thought I would compile all of the correct commands here for anyone trying from scratch. These are the commands I used to successfully install dolphin, in order:

sudo apt update

sudo apt upgrade

sudo apt install --no-install-recommends ca-certificates qtbase5-dev qtbase5-private-dev git cmake make gcc g++ pkg-config libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libxi-dev libxrandr-dev libudev-dev libevdev-dev libsfml-dev libminiupnpc-dev libmbedtls-dev libcurl4-openssl-dev libhidapi-dev libsystemd-dev libbluetooth-dev libasound2-dev libpulse-dev libpugixml-dev libbz2-dev libzstd-dev liblzo2-dev libpng-dev libusb-1.0-0-dev gettext

sudo apt install mesa-vulkan-drivers

git clone https://github.com/dolphin-emu/dolphin.git dolphin-emu

cd dolphin-emu

git submodule update --init

cmake ..

make -j4

sudo make install

sudo reboot

sudo nano /boot/config.txt

//at the very bottom put

over_voltage = 5
arm_freq = 2000
gpu_freq = 600

//Ctrl+X
//Enter

sudo reboot

Return to “Gaming”