New Mesa drivers

@Strit When you build the next mesa-git package, would it be possible to include the vulkan test apps as seen here?

Edit: Hmm, but I guess this would cause a conflict with the mesa-demos package… which has not been updated in several months, so it is missing vkcube and I assume a newer version of gears which shows the driver info.

You mean like this:

That’s been in the package for about a month.

I have not built the mesa-git package myself so I am not positive, but I wonder if [vkcube, gears] could be included here? I am looking for /usr/bin/vkcube and when I run /usr/bin/gears it does not display the driver info as it does in the video link. I assume it is an updated version of gears.

Edit: Or any other tool that displays at least the fps, so I can use it to help track the progress of the vulkan driver’s performance. (See video at 1:30 for gears and at 9:15 for vkcube.)

Ah, it would appear that a version of vkcube is in the AUR, if a little old.
https://aur.archlinux.org/packages/vkcube-git/
Maybe I can I use it. I’ll try it this evening when I am in front of my unstable version.

Install vulkan-tools.

I’ll give it a try too, thank you.

I just went through a world of headaches when I was trying vulkan today. I had done an update with the stable branch yesterday. I could not get going with vulkan and discovered that glxgears was not working. I installed mesa-git from stable and unstable and no glxgears. Then I installed mesa back in stable and no glxgears.

Bottom line is the new mesa in stable is messed up and mesa-git is messed up in stable and unstable. I had to revert mesa in stable to 20.2.1-1.

extra/mesa 20.2.2-2 [installed: 20.2.1-1]

Wowza, not great news. Hopefully Sunday’s mesa-git pull with change things. Some combination of things must be working, how else could they be developing and merging the v3dv driver? (rhetorical)

I’m pretty sure the v3dv driver is still only in master git (21.0 branch), so that does not explain why 20.2.2 does not work.

We have narrowed it down to be Raspberry Pi specific though, as the PBP has no issues on 20.2.2.

mesa-20.2.3-1 does not work with glxgears also.

[ray@pi4 ~]$ glxgears
Error: couldn't get an RGB, Double-buffered visual

I just updated on unstable to mesa 20.2.3-1 on the rc5 kernel and I have the v3d driver loaded and no issue with glxgears.

I just updated on unstable to mesa-git 21.0.0_devel on the rc5 kernel

$ glxinfo
OpenGL renderer string: V3D 4.2

I think this means I have vulkan support!

    $ vulkaninfo
WARNING: v3dv is neither a complete nor a conformant Vulkan implementation. Testing use only.
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.159


Instance Extensions: count = 9
==============================
	VK_EXT_debug_report                    : extension revision 9
	VK_EXT_debug_utils                     : extension revision 2
	VK_KHR_display                         : extension revision 23
	VK_KHR_external_memory_capabilities    : 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_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.1.73, layer version 1:
	Layer Extensions: count = 0
	Devices: count = 1
		GPU id = 0 (V3D 4.2)
		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 = 1
		GPU id = 0 (V3D 4.2)
		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


Device Properties and Extensions:
=================================
GPU0:
-----
VkPhysicalDeviceProperties:
---------------------------
	apiVersion     = 4194459 (1.0.155)
	driverVersion  = 84291683 (0x5063063)
	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                        = 453447
	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


Device Extensions: count = 6
----------------------------
	VK_EXT_external_memory_dma_buf : extension revision 1
	VK_EXT_private_data            : 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   = 6152288256 (0x16eb47800) (5.73 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

VkPhysicalDevicePrivateDataFeaturesEXT:
---------------------------------------
	privateData = true

Not happening here.

mesa

$ pacman -Ss mesa | grep installed
extra/glu 9.0.1-2 [installed]
extra/mesa-demos 8.4.0-4 [installed]
extra/mesa-git 21.0.0_devel.131403.5b77b14448c-1 [installed]

Edit: And vulkan-tools included vkcube, thank you. I do have a spinning cube. I am still looking for that version of gears. It shows a true fps beyond the vertical sync, which will give a quantifiable measurement to the driver’s progress.

$   cat /boot/config.txt

#total_mem=4096
gpu_mem=64
initramfs initramfs-linux.img followkernel
kernel=kernel8.img
arm_64bit=1
enable_gic=1
disable_overscan=1

#enable sound
dtparam=audio=on
hdmi_drive=2

dtoverlay=disable-bt

#enable vc4
#dtoverlay=vc4-fkms-v3d
dtoverlay=vc4-kms-v3d-pi4
max_framebuffers=2
over_voltage=6
arm_freq=2000
gpu_freq=750

I do have these non-repeating device errors:

[ 25.006261] vc4_hdmi fef05700.hdmi: ASoC: error at snd_soc_dai_startup on fef05700.hdmi: -19
[ 25.007368] vc4_hdmi fef05700.hdmi: ASoC: error at snd_soc_dai_startup on fef05700.hdmi: -19
[ 25.012125] vc4_hdmi fef05700.hdmi: ASoC: error at snd_soc_dai_startup on fef05700.hdmi: -19
[ 25.012485] vc4_hdmi fef05700.hdmi: ASoC: error at snd_soc_dai_startup on fef05700.hdmi: -19
[ 25.012863] vc4_hdmi fef05700.hdmi: ASoC: error at snd_soc_dai_startup on fef05700.hdmi: -19
[ 1220.338117] v3d fec00000.v3d: MMU error from client L2T (0) at 0x2fb6c00, pte invalid

Well, not continuing to repeat. :smiley:

@Strit I found the vulkan gears app. It is not a part of Mesa but rather a part of the Official Khronos Vulkan Samples.

Edit: I have opened a bug report with Arch Linux to have vulkan gears added to the vulkan-tools package.

1 Like

There has been a lot going on regarding Vulkan for v3d (v3dv) in mesa git lately. Hopefully it stabilizes soon.

@Darksky Just to make sure the issue is not board version specific, I was successful loading the V3D driver on a 4GB RPi4.