Introduce ROCK 5 Model B - ARM Desktop level SBC

In this case, it’s less the hardware design than the software design.

Android seems to prefer explicit sync for inter-process synchronisation, whereas Xorg and some Wayland compositors rely only on implicit sync. kbase had some support for implicit sync with older GPUs, but for CSF GPUs like the Mali-G610 it’s completely gone, so only explicit synchronisation through passing sync FDs is possible.

What that means is that compositors have no idea when they can start using a surface passed from an application, and so immediately start rendering. If the application is still rendering then that causes problems, but drivers work around that by effectively doing a glFinish and waiting for rendering to finish before passing the frame on to the compositor. This means that the CPU and GPU cannot work in parallel, which hurts performance a lot.

I think the Wayland blob might work around this problem somehow, but I’m not entirely sure.

(IIRC non-free nvidia drivers also use explicit sync exclusively, which causes a lot of problems.)

I noticed the basics of the rk3588 have been pushed to Linux Next so it will boot and expecting or at least hoping Alyssa & co might be having a look also.
I have seen your posts and great work but much past my knowledge.

I eventually got ArmNN delegate working with their Wav2Letter example which with CpuAcc gets all cores going at about 55%, with the GpuAcc I was sort of confused as maybe a tad faster but all it seemed to do was drop all cores by about 5%, which I found rather underwhelming but maybe my misunderstanding of the G610s ML capability or the manner ArmNN works, but its OpenCl based and maybe that also is lack lustre.
Command Stream Frontend which is a new part of Valhall…
Now I get what the csffw.bin binary is as was wondering why an additional binary to the mali but does that not mean CFS & Driver now run in separate processes?

I just remember the Arm sales blurb that often repeated CSF was to align with Vulkan more hence why that stuck in my head.

It does seem like we are seeing the true capability on Android but so far its just not plumbed in right on Linux… ?

./test_computeinfo
 Initializing random seed to 0.
Requesting Default device based on command line for platform index 0 and device index 0
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
Compute Device Name = Mali-LODX r0p0, Compute Device Vendor = ARM, Compute Device Version = OpenCL 2.1 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1, CL C Version = OpenCL C 2.0 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1
Supports single precision denormals: YES
sizeof( void*) = 8  (host)
sizeof( void*) = 8  (device)
computeinfo...

clGetPlatformInfo:
------------------
        CL_PLATFORM_VERSION == "OpenCL 2.1 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
        CL_PLATFORM_PROFILE == "FULL_PROFILE"
        CL_PLATFORM_NAME == "ARM Platform"
        CL_PLATFORM_VENDOR == "ARM"
        CL_PLATFORM_EXTENSIONS == "cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp16 cl_khr_icd cl_khr_egl_image cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_subgroups cl_khr_subgroup_extended_types cl_khr_subgroup_non_uniform_vote cl_khr_subgroup_ballot cl_khr_il_program cl_khr_priority_hints cl_khr_create_command_queue cl_khr_spirv_no_integer_wrap_decoration cl_khr_extended_versioning cl_khr_device_uuid cl_arm_core_id cl_arm_printf cl_arm_non_uniform_work_group_size cl_arm_import_memory cl_arm_import_memory_dma_buf cl_arm_import_memory_host cl_arm_integer_dot_product_int8 cl_arm_integer_dot_product_accumulate_int8 cl_arm_integer_dot_product_accumulate_saturate_int8 cl_arm_scheduling_controls cl_arm_controlled_kernel_termination cl_ext_cxx_for_opencl"
        Skipped: CL_PLATFORM_EXTENSIONS_WITH_VERSION.
        Skipped: CL_PLATFORM_NUMERIC_VERSION.

Getting device IDs for CL_DEVICE_TYPE_DEFAULT devices
Found 1 CL_DEVICE_TYPE_DEFAULT devices:
CL_DEVICE_TYPE_DEFAULT Device 1 of 1 Info:
        CL_DEVICE_VERSION == "OpenCL 2.1 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
        CL_DEVICE_EXTENSIONS == "cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp16 cl_khr_icd cl_khr_egl_image cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_subgroups cl_khr_subgroup_extended_types cl_khr_subgroup_non_uniform_vote cl_khr_subgroup_ballot cl_khr_il_program cl_khr_priority_hints cl_khr_create_command_queue cl_khr_spirv_no_integer_wrap_decoration cl_khr_extended_versioning cl_khr_device_uuid cl_arm_core_id cl_arm_printf cl_arm_non_uniform_work_group_size cl_arm_import_memory cl_arm_import_memory_dma_buf cl_arm_import_memory_host cl_arm_integer_dot_product_int8 cl_arm_integer_dot_product_accumulate_int8 cl_arm_integer_dot_product_accumulate_saturate_int8 cl_arm_scheduling_controls cl_arm_controlled_kernel_termination cl_ext_cxx_for_opencl"
        CL_DEVICE_TYPE == |CL_DEVICE_TYPE_GPU||
        CL_DEVICE_VENDOR_ID == 2825322496
        CL_DEVICE_MAX_COMPUTE_UNITS == 4
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS == 3
        CL_DEVICE_MAX_WORK_ITEM_SIZES == 1024 1024 1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE == 1024
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR == 16
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT == 8
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT == 4
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG == 2
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT == 4
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE == 0
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF == 8
        CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR == 4
        CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT == 2
        CL_DEVICE_NATIVE_VECTOR_WIDTH_INT == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE == 0
        CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF == 2
        CL_DEVICE_MAX_CLOCK_FREQUENCY == 1000
        CL_DEVICE_ADDRESS_BITS == 64
        CL_DEVICE_MAX_READ_IMAGE_ARGS == 128
        CL_DEVICE_MAX_WRITE_IMAGE_ARGS == 64
        CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS == 64
        CL_DEVICE_MAX_MEM_ALLOC_SIZE == 3914739712
        CL_DEVICE_IMAGE2D_MAX_WIDTH == 65536
        CL_DEVICE_IMAGE2D_MAX_HEIGHT == 65536
        CL_DEVICE_IMAGE3D_MAX_WIDTH == 65536
        CL_DEVICE_IMAGE3D_MAX_HEIGHT == 65536
        CL_DEVICE_IMAGE3D_MAX_DEPTH == 65536
        CL_DEVICE_IMAGE_MAX_ARRAY_SIZE == 2048
        CL_DEVICE_IMAGE_MAX_BUFFER_SIZE == 65536
        CL_DEVICE_IMAGE_SUPPORT == 1
        CL_DEVICE_MAX_PARAMETER_SIZE == 1024
        CL_DEVICE_MAX_SAMPLERS == 16
        CL_DEVICE_IMAGE_PITCH_ALIGNMENT == 64
        CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT == 32
        CL_DEVICE_MEM_BASE_ADDR_ALIGN == 1024
        CL_DEVICE_SINGLE_FP_CONFIG == CL_FP_DENORM|CL_FP_INF_NAN|CL_FP_ROUND_TO_NEAREST|CL_FP_ROUND_TO_ZERO|CL_FP_ROUND_TO_INF|CL_FP_FMA|
        CL_DEVICE_DOUBLE_FP_CONFIG == ||||||
        CL_DEVICE_GLOBAL_MEM_CACHE_TYPE == CL_READ_WRITE_CACHE
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE == 64
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE == 1048576
        CL_DEVICE_GLOBAL_MEM_SIZE == 3914739712
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE == 3914739712
        CL_DEVICE_MAX_CONSTANT_ARGS == 128
        CL_DEVICE_LOCAL_MEM_TYPE == CL_GLOBAL
        CL_DEVICE_LOCAL_MEM_SIZE == 32768
        CL_DEVICE_ERROR_CORRECTION_SUPPORT == 0
        CL_DEVICE_HOST_UNIFIED_MEMORY == 1
        CL_DEVICE_PROFILING_TIMER_RESOLUTION == 1000
        CL_DEVICE_ENDIAN_LITTLE == 1
        CL_DEVICE_AVAILABLE == 1
        CL_DEVICE_COMPILER_AVAILABLE == 1
        CL_DEVICE_LINKER_AVAILABLE == 1
        CL_DEVICE_BUILT_IN_KERNELS == ""
        CL_DEVICE_PRINTF_BUFFER_SIZE == 1048576
        CL_DEVICE_PREFERRED_INTEROP_USER_SYNC == 0
        CL_DEVICE_PARENT_DEVICE == 0
        CL_DEVICE_PARTITION_MAX_SUB_DEVICES == 0
        CL_DEVICE_PARTITION_AFFINITY_DOMAIN == |||||
        CL_DEVICE_REFERENCE_COUNT == 1
        CL_DEVICE_EXECUTION_CAPABILITIES == CL_EXEC_KERNEL|
        CL_DEVICE_QUEUE_ON_HOST_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_NAME == "Mali-LODX r0p0"
        CL_DEVICE_VENDOR == "ARM"
        CL_DRIVER_VERSION == "2.1"
        CL_DEVICE_PROFILE == "FULL_PROFILE"
        CL_DEVICE_OPENCL_C_VERSION == "OpenCL C 2.0 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
        CL_DEVICE_MAX_PIPE_ARGS == 16
        CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS == 1
        CL_DEVICE_PIPE_MAX_PACKET_SIZE == 1024
        CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE == 65536
        CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE == 0
        CL_DEVICE_QUEUE_ON_HOST_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE == 2097152
        CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE == 16777216
        CL_DEVICE_MAX_ON_DEVICE_QUEUES == 1
        CL_DEVICE_MAX_ON_DEVICE_EVENTS == 1024
        CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_SVM_CAPABILITIES == CL_DEVICE_SVM_COARSE_GRAIN_BUFFER|||
        CL_DEVICE_IL_VERSION == "SPIR-V_1.0"
        CL_DEVICE_MAX_NUM_SUB_GROUPS == 64
        CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS == 1
        Skipped: CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES.
        Skipped: CL_DEVICE_ATOMIC_FENCE_CAPABILITIES.
        Skipped: CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT.
        Skipped: CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE.
        Skipped: CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT.
        Skipped: CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT.
        Skipped: CL_DEVICE_OPENCL_C_FEATURES.
        Skipped: CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES.
        Skipped: CL_DEVICE_PIPE_SUPPORT.
        Skipped: CL_DEVICE_NUMERIC_VERSION.
        Skipped: CL_DEVICE_EXTENSIONS_WITH_VERSION.
        Skipped: CL_DEVICE_OPENCL_C_ALL_VERSIONS.
        Skipped: CL_DEVICE_ILS_WITH_VERSION.
        Skipped: CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION.
        CL_DEVICE_IMAGE_PITCH_ALIGNMENT == 64
        CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT == 32
        CL_MEM_OBJECT_IMAGE1D supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE1D_BUFFER supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE2D supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE3D supported formats:
                CL_MEM_READ_ONLY: 58 supported formats
                CL_MEM_WRITE_ONLY: 65 supported formats
                CL_MEM_READ_WRITE: 65 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 65 supported formats
        CL_MEM_OBJECT_IMAGE1D_ARRAY supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE2D_ARRAY supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats

Getting device IDs for CL_DEVICE_TYPE_CPU devices
No devices of type CL_DEVICE_TYPE_CPU found.
Getting device IDs for CL_DEVICE_TYPE_GPU devices
Found 1 CL_DEVICE_TYPE_GPU devices:
CL_DEVICE_TYPE_GPU Device 1 of 1 Info:
        CL_DEVICE_VERSION == "OpenCL 2.1 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
        CL_DEVICE_EXTENSIONS == "cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp16 cl_khr_icd cl_khr_egl_image cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_subgroups cl_khr_subgroup_extended_types cl_khr_subgroup_non_uniform_vote cl_khr_subgroup_ballot cl_khr_il_program cl_khr_priority_hints cl_khr_create_command_queue cl_khr_spirv_no_integer_wrap_decoration cl_khr_extended_versioning cl_khr_device_uuid cl_arm_core_id cl_arm_printf cl_arm_non_uniform_work_group_size cl_arm_import_memory cl_arm_import_memory_dma_buf cl_arm_import_memory_host cl_arm_integer_dot_product_int8 cl_arm_integer_dot_product_accumulate_int8 cl_arm_integer_dot_product_accumulate_saturate_int8 cl_arm_scheduling_controls cl_arm_controlled_kernel_termination cl_ext_cxx_for_opencl"
        CL_DEVICE_TYPE == |CL_DEVICE_TYPE_GPU||
        CL_DEVICE_VENDOR_ID == 2825322496
        CL_DEVICE_MAX_COMPUTE_UNITS == 4
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS == 3
        CL_DEVICE_MAX_WORK_ITEM_SIZES == 1024 1024 1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE == 1024
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR == 16
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT == 8
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT == 4
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG == 2
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT == 4
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE == 0
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF == 8
        CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR == 4
        CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT == 2
        CL_DEVICE_NATIVE_VECTOR_WIDTH_INT == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE == 0
        CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF == 2
        CL_DEVICE_MAX_CLOCK_FREQUENCY == 1000
        CL_DEVICE_ADDRESS_BITS == 64
        CL_DEVICE_MAX_READ_IMAGE_ARGS == 128
        CL_DEVICE_MAX_WRITE_IMAGE_ARGS == 64
        CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS == 64
        CL_DEVICE_MAX_MEM_ALLOC_SIZE == 3914739712
        CL_DEVICE_IMAGE2D_MAX_WIDTH == 65536
        CL_DEVICE_IMAGE2D_MAX_HEIGHT == 65536
        CL_DEVICE_IMAGE3D_MAX_WIDTH == 65536
        CL_DEVICE_IMAGE3D_MAX_HEIGHT == 65536
        CL_DEVICE_IMAGE3D_MAX_DEPTH == 65536
        CL_DEVICE_IMAGE_MAX_ARRAY_SIZE == 2048
        CL_DEVICE_IMAGE_MAX_BUFFER_SIZE == 65536
        CL_DEVICE_IMAGE_SUPPORT == 1
        CL_DEVICE_MAX_PARAMETER_SIZE == 1024
        CL_DEVICE_MAX_SAMPLERS == 16
        CL_DEVICE_IMAGE_PITCH_ALIGNMENT == 64
        CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT == 32
        CL_DEVICE_MEM_BASE_ADDR_ALIGN == 1024
        CL_DEVICE_SINGLE_FP_CONFIG == CL_FP_DENORM|CL_FP_INF_NAN|CL_FP_ROUND_TO_NEAREST|CL_FP_ROUND_TO_ZERO|CL_FP_ROUND_TO_INF|CL_FP_FMA|
        CL_DEVICE_DOUBLE_FP_CONFIG == ||||||
        CL_DEVICE_GLOBAL_MEM_CACHE_TYPE == CL_READ_WRITE_CACHE
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE == 64
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE == 1048576
        CL_DEVICE_GLOBAL_MEM_SIZE == 3914739712
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE == 3914739712
        CL_DEVICE_MAX_CONSTANT_ARGS == 128
        CL_DEVICE_LOCAL_MEM_TYPE == CL_GLOBAL
        CL_DEVICE_LOCAL_MEM_SIZE == 32768
        CL_DEVICE_ERROR_CORRECTION_SUPPORT == 0
        CL_DEVICE_HOST_UNIFIED_MEMORY == 1
        CL_DEVICE_PROFILING_TIMER_RESOLUTION == 1000
        CL_DEVICE_ENDIAN_LITTLE == 1
        CL_DEVICE_AVAILABLE == 1
        CL_DEVICE_COMPILER_AVAILABLE == 1
        CL_DEVICE_LINKER_AVAILABLE == 1
        CL_DEVICE_BUILT_IN_KERNELS == ""
        CL_DEVICE_PRINTF_BUFFER_SIZE == 1048576
        CL_DEVICE_PREFERRED_INTEROP_USER_SYNC == 0
        CL_DEVICE_PARENT_DEVICE == 0
        CL_DEVICE_PARTITION_MAX_SUB_DEVICES == 0
        CL_DEVICE_PARTITION_AFFINITY_DOMAIN == |||||
        CL_DEVICE_REFERENCE_COUNT == 1
        CL_DEVICE_EXECUTION_CAPABILITIES == CL_EXEC_KERNEL|
        CL_DEVICE_QUEUE_ON_HOST_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_NAME == "Mali-LODX r0p0"
        CL_DEVICE_VENDOR == "ARM"
        CL_DRIVER_VERSION == "2.1"
        CL_DEVICE_PROFILE == "FULL_PROFILE"
        CL_DEVICE_OPENCL_C_VERSION == "OpenCL C 2.0 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
        CL_DEVICE_MAX_PIPE_ARGS == 16
        CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS == 1
        CL_DEVICE_PIPE_MAX_PACKET_SIZE == 1024
        CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE == 65536
        CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE == 0
        CL_DEVICE_QUEUE_ON_HOST_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE == 2097152
        CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE == 16777216
        CL_DEVICE_MAX_ON_DEVICE_QUEUES == 1
        CL_DEVICE_MAX_ON_DEVICE_EVENTS == 1024
        CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_SVM_CAPABILITIES == CL_DEVICE_SVM_COARSE_GRAIN_BUFFER|||
        CL_DEVICE_IL_VERSION == "SPIR-V_1.0"
        CL_DEVICE_MAX_NUM_SUB_GROUPS == 64
        CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS == 1
        Skipped: CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES.
        Skipped: CL_DEVICE_ATOMIC_FENCE_CAPABILITIES.
        Skipped: CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT.
        Skipped: CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE.
        Skipped: CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT.
        Skipped: CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT.
        Skipped: CL_DEVICE_OPENCL_C_FEATURES.
        Skipped: CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES.
        Skipped: CL_DEVICE_PIPE_SUPPORT.
        Skipped: CL_DEVICE_NUMERIC_VERSION.
        Skipped: CL_DEVICE_EXTENSIONS_WITH_VERSION.
        Skipped: CL_DEVICE_OPENCL_C_ALL_VERSIONS.
        Skipped: CL_DEVICE_ILS_WITH_VERSION.
        Skipped: CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION.
        CL_DEVICE_IMAGE_PITCH_ALIGNMENT == 64
        CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT == 32
        CL_MEM_OBJECT_IMAGE1D supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE1D_BUFFER supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE2D supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE3D supported formats:
                CL_MEM_READ_ONLY: 58 supported formats
                CL_MEM_WRITE_ONLY: 65 supported formats
                CL_MEM_READ_WRITE: 65 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 65 supported formats
        CL_MEM_OBJECT_IMAGE1D_ARRAY supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE2D_ARRAY supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats

Getting device IDs for CL_DEVICE_TYPE_ACCELERATOR devices
No devices of type CL_DEVICE_TYPE_ACCELERATOR found.
Getting device IDs for CL_DEVICE_TYPE_ALL devices
Found 1 CL_DEVICE_TYPE_ALL devices:
CL_DEVICE_TYPE_ALL Device 1 of 1 Info:
        CL_DEVICE_VERSION == "OpenCL 2.1 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
        CL_DEVICE_EXTENSIONS == "cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp16 cl_khr_icd cl_khr_egl_image cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_subgroups cl_khr_subgroup_extended_types cl_khr_subgroup_non_uniform_vote cl_khr_subgroup_ballot cl_khr_il_program cl_khr_priority_hints cl_khr_create_command_queue cl_khr_spirv_no_integer_wrap_decoration cl_khr_extended_versioning cl_khr_device_uuid cl_arm_core_id cl_arm_printf cl_arm_non_uniform_work_group_size cl_arm_import_memory cl_arm_import_memory_dma_buf cl_arm_import_memory_host cl_arm_integer_dot_product_int8 cl_arm_integer_dot_product_accumulate_int8 cl_arm_integer_dot_product_accumulate_saturate_int8 cl_arm_scheduling_controls cl_arm_controlled_kernel_termination cl_ext_cxx_for_opencl"
        CL_DEVICE_TYPE == |CL_DEVICE_TYPE_GPU||
        CL_DEVICE_VENDOR_ID == 2825322496
        CL_DEVICE_MAX_COMPUTE_UNITS == 4
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS == 3
        CL_DEVICE_MAX_WORK_ITEM_SIZES == 1024 1024 1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE == 1024
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR == 16
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT == 8
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT == 4
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG == 2
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT == 4
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE == 0
        CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF == 8
        CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR == 4
        CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT == 2
        CL_DEVICE_NATIVE_VECTOR_WIDTH_INT == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT == 1
        CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE == 0
        CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF == 2
        CL_DEVICE_MAX_CLOCK_FREQUENCY == 1000
        CL_DEVICE_ADDRESS_BITS == 64
        CL_DEVICE_MAX_READ_IMAGE_ARGS == 128
        CL_DEVICE_MAX_WRITE_IMAGE_ARGS == 64
        CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS == 64
        CL_DEVICE_MAX_MEM_ALLOC_SIZE == 3914739712
        CL_DEVICE_IMAGE2D_MAX_WIDTH == 65536
        CL_DEVICE_IMAGE2D_MAX_HEIGHT == 65536
        CL_DEVICE_IMAGE3D_MAX_WIDTH == 65536
        CL_DEVICE_IMAGE3D_MAX_HEIGHT == 65536
        CL_DEVICE_IMAGE3D_MAX_DEPTH == 65536
        CL_DEVICE_IMAGE_MAX_ARRAY_SIZE == 2048
        CL_DEVICE_IMAGE_MAX_BUFFER_SIZE == 65536
        CL_DEVICE_IMAGE_SUPPORT == 1
        CL_DEVICE_MAX_PARAMETER_SIZE == 1024
        CL_DEVICE_MAX_SAMPLERS == 16
        CL_DEVICE_IMAGE_PITCH_ALIGNMENT == 64
        CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT == 32
        CL_DEVICE_MEM_BASE_ADDR_ALIGN == 1024
        CL_DEVICE_SINGLE_FP_CONFIG == CL_FP_DENORM|CL_FP_INF_NAN|CL_FP_ROUND_TO_NEAREST|CL_FP_ROUND_TO_ZERO|CL_FP_ROUND_TO_INF|CL_FP_FMA|
        CL_DEVICE_DOUBLE_FP_CONFIG == ||||||
        CL_DEVICE_GLOBAL_MEM_CACHE_TYPE == CL_READ_WRITE_CACHE
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE == 64
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE == 1048576
        CL_DEVICE_GLOBAL_MEM_SIZE == 3914739712
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE == 3914739712
        CL_DEVICE_MAX_CONSTANT_ARGS == 128
        CL_DEVICE_LOCAL_MEM_TYPE == CL_GLOBAL
        CL_DEVICE_LOCAL_MEM_SIZE == 32768
        CL_DEVICE_ERROR_CORRECTION_SUPPORT == 0
        CL_DEVICE_HOST_UNIFIED_MEMORY == 1
        CL_DEVICE_PROFILING_TIMER_RESOLUTION == 1000
        CL_DEVICE_ENDIAN_LITTLE == 1
        CL_DEVICE_AVAILABLE == 1
        CL_DEVICE_COMPILER_AVAILABLE == 1
        CL_DEVICE_LINKER_AVAILABLE == 1
        CL_DEVICE_BUILT_IN_KERNELS == ""
        CL_DEVICE_PRINTF_BUFFER_SIZE == 1048576
        CL_DEVICE_PREFERRED_INTEROP_USER_SYNC == 0
        CL_DEVICE_PARENT_DEVICE == 0
        CL_DEVICE_PARTITION_MAX_SUB_DEVICES == 0
        CL_DEVICE_PARTITION_AFFINITY_DOMAIN == |||||
        CL_DEVICE_REFERENCE_COUNT == 1
        CL_DEVICE_EXECUTION_CAPABILITIES == CL_EXEC_KERNEL|
        CL_DEVICE_QUEUE_ON_HOST_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_NAME == "Mali-LODX r0p0"
        CL_DEVICE_VENDOR == "ARM"
        CL_DRIVER_VERSION == "2.1"
        CL_DEVICE_PROFILE == "FULL_PROFILE"
        CL_DEVICE_OPENCL_C_VERSION == "OpenCL C 2.0 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
        CL_DEVICE_MAX_PIPE_ARGS == 16
        CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS == 1
        CL_DEVICE_PIPE_MAX_PACKET_SIZE == 1024
        CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE == 65536
        CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE == 0
        CL_DEVICE_QUEUE_ON_HOST_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES == CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE|CL_QUEUE_PROFILING_ENABLE
        CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE == 2097152
        CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE == 16777216
        CL_DEVICE_MAX_ON_DEVICE_QUEUES == 1
        CL_DEVICE_MAX_ON_DEVICE_EVENTS == 1024
        CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT == 0
        CL_DEVICE_SVM_CAPABILITIES == CL_DEVICE_SVM_COARSE_GRAIN_BUFFER|||
        CL_DEVICE_IL_VERSION == "SPIR-V_1.0"
        CL_DEVICE_MAX_NUM_SUB_GROUPS == 64
        CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS == 1
        Skipped: CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES.
        Skipped: CL_DEVICE_ATOMIC_FENCE_CAPABILITIES.
        Skipped: CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT.
        Skipped: CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE.
        Skipped: CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT.
        Skipped: CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT.
        Skipped: CL_DEVICE_OPENCL_C_FEATURES.
        Skipped: CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES.
        Skipped: CL_DEVICE_PIPE_SUPPORT.
        Skipped: CL_DEVICE_NUMERIC_VERSION.
        Skipped: CL_DEVICE_EXTENSIONS_WITH_VERSION.
        Skipped: CL_DEVICE_OPENCL_C_ALL_VERSIONS.
        Skipped: CL_DEVICE_ILS_WITH_VERSION.
        Skipped: CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION.
        CL_DEVICE_IMAGE_PITCH_ALIGNMENT == 64
        CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT == 32
        CL_MEM_OBJECT_IMAGE1D supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE1D_BUFFER supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE2D supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE3D supported formats:
                CL_MEM_READ_ONLY: 58 supported formats
                CL_MEM_WRITE_ONLY: 65 supported formats
                CL_MEM_READ_WRITE: 65 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 65 supported formats
        CL_MEM_OBJECT_IMAGE1D_ARRAY supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats
        CL_MEM_OBJECT_IMAGE2D_ARRAY supported formats:
                CL_MEM_READ_ONLY: 60 supported formats
                CL_MEM_WRITE_ONLY: 67 supported formats
                CL_MEM_READ_WRITE: 67 supported formats
                CL_MEM_KERNEL_READ_AND_WRITE: 67 supported formats

computeinfo passed
extended_versioning...
Platform versions:
        Matched the platform version
Platform extensions:
        Matched 35 extensions
Device versions:
        Matched the device OpenCL and OpenCL C versions
Device extensions:
        Matched 35 extensions
Device ILs:
        Matched 1 ILs
Device built-in kernels:
        Matched 0 kernels
extended_versioning passed
device_uuid...
        Device UUID: 000067a8010000000000000000000000
        Driver UUID: d9495befea917c528a438a3c2f7b49cc
        Device LUID validity is false
        Device LUID: 0000000000000000
        Node mask  : 00000000
device_uuid passed
conformance_version...
conformance_version skipped (requires at least OpenCL version 3.0, but the device reports OpenCL version 2.1)
pci_bus_info...
cl_khr_pci_bus_info not supported. Skipping test...
pci_bus_info test not supported
PASSED sub-test.
PASSED 3 of 3 tests.

All seems ok apart from performance.

That binary is firmware for a Cortex-M7 MCU that is inside the GPU. It handles a bunch of tasks that the kernel cannot do because of the latency, as it is quite difficult to access GPU memory from the CPU—the memory first needs to be mapped into the kernel address space with the correct attributes, and then every access is slow because there is no coherency with the GPU.

The MCU solves this by sharing an L2 cache with the GPU to get coherency, and including a mechanism for mapping GPU memory into its own address space in just a few nanoseconds. This makes it quite easy to access GPU memory, and is what makes the Command Stream Frontend possible.

Tasks that were previously done on the CPU before job submission can now be handled by the command stream processor, but that processor frequently has to interrupt the MCU to get assistance with handling an instruction. If it had to go all the way to the kernel, then the end result would be worse than the old “Job Manager” GPUs.

(I think that early prototypes of CSF might have used shader cores to try to run the firmware, but I am not very sure. But if that was tried, I bet Arm found out pretty quickly that debugging was too hard. RK3588 actually exposes a standard MCU debugger interface for the GPU, but from the Rock 5 schematics I don’t think it’s very easily accessible. Self-hosted debug works anyhow.)

Why exactly? See here for example… If you ask people for lspci output you should mention sudo and/or root as well :slight_smile:

yes i messed up you need to run it with sudo or as root this command should work (and please post the output):

sudo lspci -vv

and sorry

I am not really sure, all I know is that currently the implementation has a 3rd gen Valhall running slower than a 2nd gen Bifrost on a SoC that got criticism of the GPU being quite slow for spec.
Currently the driver in terms of performance is bad as it runs and works, but results are really bad to the levels we should be expecting .
That is with a 1000 Mhz clock rate that must be at the absolute max this thing can run, and 4 generations of increment of some big claims by Arm but it runs slower than a G52mp4 and that is wow bad.

https://developer.arm.com/documentation/102812/0102/GPU-activity?lang=en

I used Armbian in the below due to ppa:liujianfeng1994/panfork-mesa

It means Wayland and is a touch faster now than a g52mp4 but prob still quite a way off what I expected and not exactly sure what driver its using does that use libEGL.so.1 or libEGL_mesa.so.0?
I might have a go with ArmNN again but may end up in dependency hell as dunno if they stopped with 20.04

Doesn’t seem all that stable though.

Good to know, pre-ordered mine from allnet on 20th April and still waiting to place my order (for delivery to France too).
This is going to replace my current setup which urgently needs an upgrade and serve as an all purpose machine:

  • 4G + Wifi router
  • server (development, …)

Just wondering if 8GB version I took will be enough. Are we able to change RAM quantity at ordering time?

you cant change the ram quantity at ordering time if the coupon should be still valid
but you can upgrade the ram by soldering on a new set of ram chips WARNING thats very dificoult and could destroy your rock 5b

ok will probably avoid upgrading ram for now. but good to know in case I need it in future

yes it never hurts to ask

Hello. Can we still get R3 codes to get discount?

No thats not possible anymore

hello i saw explainingcomputers has posted a video about the rock 5b: https://www.youtube.com/watch?v=w85QTDPp-4Q
he has a 4GB final 1.42 version

3 Likes

Got my device yesterday (ordered March 19 from Allnet). So far very pleased :wink: I’ve successfully compiled a Yocto image for it. If s.o. is interested in using Yocto, maybe my meta layer might be helpful.

1 Like

Looks like we’re almost at the end of October and still no tracking info yet.

2 Likes

yes i am also still waiting on my tracking number

1 Like

You are not alone… I hope that the delivery status will change at any moment…

I have placed my 16GB preorder on the 2nd Feb. at Allnet
Got the code Email on the 18th this month and directly ordered it.
IIRC it was eight days in transit to germany with the cheaper shipping option.

So you will get them - keep calm :wave:

2 Likes

Yes, it seems allnet customers getting priority over ameridroid customers…

5 Likes

Excited to get my Rock5… Not excited for having to deal with Ameridroid. First and last time I purchase from them. Not because I don’t have it. It’s because they have no idea what’s going on, and they charged MORE than had I just gone through Allnet. Not to mention how they think they aren’t liable for a purchase if we don’t get their extra route protection. Unfortunate.

4 Likes