@jugg 数据格式NV12是没有问题的,这里主要是Esmart图层本身不支持AFBC的格式。可以尝试图层切换到Cluster显示,但是我查了一下AFBC的格式,好像也没有AFBC_FORMAT_MOD_SC这种,你可以先尝试一下.
Posts made by george
-
RE: ubuntu 0306 有时桌面卡死
-
RE: ubuntu 0306 有时桌面卡死
@george 刚才查了一下0351对应如下格式,这种格式RK3588 VOP是支持不了的,所以画面会异常。确认一下SDL过来的数据格式是否可以修改为VOP支持的格式。
-
RE: How to install OpenCL/Kronos/OpenGL on CM5-EVB
@tmb68 The OpenCL library file has been updated. Run the following command to update it:
sudo apt-get update sudo apt-get upgrade
-
OpenCL driver works on CM5/4B
- Install package
sudo apt-get update sudo apt install opencl-headers sudo apt install ocl-icd-libopencl1 sudo apt install ocl-icd-opencl-dev sudo apt install clinfo
- Checkout clpeak
sudo apt-get update && sudo apt-get install cmake git g++ git clone https://github.com/krrishnarraj/clpeak mkdir clpeak/build cd clpeak/build cmake .. make -j$(nproc) ./clpeak
- Test result
coolpi@Ubuntu:~/share/clpeak/build$ ./clpeak arm_release_ver: g13p0-01eac0, rk_so_ver: 3 Platform: ARM Platform Device: Mali-G610 r0p0 Driver version : 3.0 (Linux ARM64) Compute units : 4 Clock frequency : 1000 MHz Global memory bandwidth (GBPS) float : 22.23 float2 : 23.83 float4 : 24.41 float8 : 19.66 float16 : 11.79 Single-precision compute (GFLOPS) float : 447.13 float2 : 476.05 float4 : 471.84 float8 : 440.87 float16 : 415.77 Half-precision compute (GFLOPS) half : 447.20 half2 : 888.10 half4 : 922.15 half8 : 897.12 half16 : 857.05 No double precision support! Skipped Integer compute (GIOPS) int : 126.60 int2 : 127.16 int4 : 126.57 int8 : 125.25 int16 : 125.70 Integer compute Fast 24bit (GIOPS) int : 126.62 int2 : 127.18 int4 : 126.67 int8 : 125.28 int16 : 125.77 Transfer bandwidth (GBPS) enqueueWriteBuffer : 7.76 enqueueReadBuffer : 8.84 enqueueWriteBuffer non-blocking : 7.79 enqueueReadBuffer non-blocking : 8.87 enqueueMapBuffer(for read) : 63.02 memcpy from mapped ptr : 10.38 enqueueUnmap(after write) : 63.96 memcpy to mapped ptr : 10.39 Kernel launch latency : 19.68 us
- Test source code
#include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef MAC #include <OpenCL/cl.h> #else #include <CL/cl.h> #endif int main() { /* Host data structures */ cl_platform_id *platforms; //每一个cl_platform_id 结构表示一个在主机上的OpenCL执行平台,就是指电脑中支持OpenCL的硬件,如nvidia显卡,intel CPU和显卡,AMD显卡和CPU等 cl_uint num_platforms; cl_int i, err, platform_index = -1; /* Extension data */ char* ext_data; size_t ext_size; const char icd_ext[] = "cl_khr_icd"; //要使platform工作,需要两个步骤。1 需要为cl_platform_id结构分配内存空间。2 需要调用clGetPlatformIDs初始化这些数据结构。一般还需要步骤0:询问主机上有多少platforms /* Find number of platforms */ //返回值如果为-1就说明调用函数失败,如果为0标明成功 //第二个参数为NULL代表要咨询主机上有多少个platform,并使用num_platforms取得实际flatform数量。 //第一个参数为1,代表我们需要取最多1个platform。可以改为任意大如:INT_MAX整数最大值。但是据说0,否则会报错,实际测试好像不会报错。下面是步骤0:询问主机有多少platforms err = clGetPlatformIDs(5, NULL, &num_platforms); if(err < 0) { perror("Couldn't find any platforms."); exit(1); } printf("I have platforms: %d\n", num_platforms); //本人计算机上显示为2,有intel和nvidia两个平台 /* Access all installed platforms */ //步骤1 创建cl_platform_id,并分配空间 platforms = (cl_platform_id*) malloc(sizeof(cl_platform_id) * num_platforms); //步骤2 第二个参数用指针platforms存储platform clGetPlatformIDs(num_platforms, platforms, NULL); /* Find extensions of all platforms */ //获取额外的平台信息。上面已经取得了平台id了,那么就可以进一步获取更加详细的信息了。 //一个for循环获取所有的主机上的platforms信息 for(i=0; i<num_platforms; i++) { /* Find size of extension data */ //也是和前面一样,先设置第三和第四个参数为0和NULL,然后就可以用第五个参数ext_size获取额外信息的长度了。 err = clGetPlatformInfo(platforms[i], CL_PLATFORM_EXTENSIONS, 0, NULL, &ext_size); if(err < 0) { perror("Couldn't read extension data."); exit(1); } printf("The size of extension data is: %d\n", (int)ext_size);//我的计算机显示224. /* Access extension data */ //这里的ext_data相当于一个缓存,存储相关信息。 ext_data = (char*)malloc(ext_size); //这个函数就是获取相关信息的函数,第二个参数指明了需要什么样的信息,如这里的CL_PLATFORM_EXTENSIONS表示是opencl支持的扩展功能信息。我计算机输出一大串,机器比较新(专门为了学图形学而购置的电脑),支持的东西比较多。 clGetPlatformInfo(platforms[i], CL_PLATFORM_EXTENSIONS, ext_size, ext_data, NULL); printf("Platform %d supports extensions: %s\n", i, ext_data); //这里是输出生产商的名字,比如我显卡信息是:NVIDIA CUDA char *name = (char*)malloc(ext_size); clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, ext_size, name, NULL); printf("Platform %d name: %s\n", i, name); //这里是供应商信息,我显卡信息:NVIDIA Corporation char *vendor = (char*)malloc(ext_size); clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, ext_size, vendor, NULL); printf("Platform %d vendor: %s\n", i, vendor); //最高支持的OpenCL版本,本机显示:OpenCL1.1 CUDA 4.2.1 char *version = (char*)malloc(ext_size); clGetPlatformInfo(platforms[i], CL_PLATFORM_VERSION, ext_size, version, NULL); printf("Platform %d version: %s\n", i, version); //这个只有两个值:full profile 和 embeded profile char *profile = (char*)malloc(ext_size); clGetPlatformInfo(platforms[i], CL_PLATFORM_PROFILE, ext_size, profile, NULL); printf("Platform %d full profile or embeded profile?: %s\n", i, profile); /* Look for ICD extension */ //如果支持ICD这一扩展功能的platform,输出显示,本机的Intel和Nvidia都支持这一扩展功能 if(strstr(ext_data, icd_ext) != NULL) platform_index = i; //std::cout<<"Platform_index = "<<platform_index<<std::endl; printf("Platform_index is: %d\n", platform_index); /* Display whether ICD extension is supported */ if(platform_index > -1) printf("Platform %d supports the %s extension.\n", platform_index, icd_ext); //释放空间 free(ext_data); free(name); free(vendor); free(version); free(profile); } if(platform_index <= -1) printf("No platforms support the %s extension.\n", icd_ext); /* Deallocate resources */ free(platforms); return 0; }
gcc opencl_hello.c -o opencl_hello -lOpenCL coolpi@Ubuntu:~/share$ ./opencl_hello I have platforms: 1 arm_release_ver: g13p0-01eac0, rk_so_ver: 3 The size of extension data is: 1364 Platform 0 supports 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_subgroup_non_uniform_arithmetic cl_khr_subgroup_shuffle cl_khr_subgroup_shuffle_relative cl_khr_subgroup_clustered_reduce cl_khr_subgroup_rotate 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_khr_suggested_local_work_size cl_khr_extended_bit_ops cl_khr_integer_dot_product cl_khr_semaphore cl_khr_external_semaphore cl_khr_external_semaphore_sync_fd cl_khr_command_buffer 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_ext_image_tiling_control cl_ext_image_requirements_info cl_ext_image_from_buffer Platform 0 name: ARM Platform Platform 0 vendor: ARM Platform 0 version: OpenCL 3.0 v1.g13p0-01eac0.a8b6f0c7e1f83c654c60d1775112dbe4 Platform 0 full profile or embeded profile?: FULL_PROFILE Platform_index is: 0 Platform 0 supports the cl_khr_icd extension.
-
RE: CSI支持
@wuming 这个接口意义非常大,直接驱动4个摄像头可以做360环视。再加转换芯片以后可以做到8个摄像头同时工作。后续如果有这方面需求可以提出来,我们会有针对性的出一些转接小板。
-
RE: How to install OpenCL/Kronos/OpenGL on CM5-EVB
@tmb68 The following figure shows the test results of OpenCl, and the testing method will be provided later.
coolpi@Ubuntu:~/share/clpeak/build$ ./clpeak Platform: ARM Platform arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '7'. Device: Mali-LODX r0p0 Driver version : 2.1 (Linux ARM64) Compute units : 4 Clock frequency : 1000 MHz Global memory bandwidth (GBPS) float : 21.35 float2 : 23.18 float4 : 24.05 float8 : 12.08 float16 : 11.06 Single-precision compute (GFLOPS) float : 447.12 float2 : 476.20 float4 : 472.35 float8 : 440.72 float16 : 416.19 Half-precision compute (GFLOPS) half : 447.25 half2 : 888.31 half4 : 921.77 half8 : 897.50 half16 : 856.49 No double precision support! Skipped Integer compute (GIOPS) int : 126.55 int2 : 127.18 int4 : 126.64 int8 : 125.27 int16 : 125.79 Integer compute Fast 24bit (GIOPS) int : 126.64 int2 : 127.23 int4 : 126.79 int8 : 125.30 int16 : 125.76 Transfer bandwidth (GBPS) enqueueWriteBuffer : 7.31 enqueueReadBuffer : 8.25 enqueueWriteBuffer non-blocking : 7.30 enqueueReadBuffer non-blocking : 8.26 enqueueMapBuffer(for read) : 61.83 memcpy from mapped ptr : 9.57 enqueueUnmap(after write) : 61.21 memcpy to mapped ptr : 9.40 Kernel launch latency : 19.97 us
-
RE: Micro DisplayPort question
@murraytodd Insert your DP cable and print the mesg upload.
-
RE: Coolpi 4B not booting!
@Pharizna Please upgrade the loader to the latest version, format EMMC or TF card, and remake the boot image.
-
RE: cool pi 4b RebornOS support
@Pharizna Can other systems, such as ubuntu, be connected properly
-
RE: How to install OpenCL/Kronos/OpenGL on CM5-EVB
@tmb68 said in How to install OpenCL/Kronos/OpenGL on CM5-EVB:
Can anyone provide the steps required to install OpenCL/Kronos/OpenGL on the CM5-EVB?
Looking for support for the Mali-G610, not seeing UserSpace files on ARM or Rockchip sites.
Thanks,
TMBThe released Ubuntu system image is already integrated with G610 driver by default
-
RE: cool pi 4b RebornOS support
@Pharizna Please take a photo of the front of your machine.
-
A Method for Dynamically Hiding the Status Bar on Android 11
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index c1d54b7..6228ef0 100755 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -202,6 +202,8 @@ import java.util.Map; public class PhoneStatusBar extends BaseStatusBar implements DemoMode, DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener { static final String TAG = "PhoneStatusBar"; + static final String HIDE_NAVIGATION_BAR = "android.intent.action.HIDE_NAVIGATION_BAR"; + static final String SHOW_NAVIGATION_BAR = "android.intent.action.SHOW_NAVIGATION_BAR"; public static final boolean DEBUG = BaseStatusBar.DEBUG; public static final boolean SPEW = false; public static final boolean DUMPTRUCK = true; // extra dumpsys info @@ -1090,6 +1092,8 @@ final Object mScreenshotLock = new Object(); filter.addAction("fake_artwork"); } filter.addAction(ACTION_DEMO); + filter.addAction(HIDE_NAVIGATION_BAR); + filter.addAction(SHOW_NAVIGATION_BAR); context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null); // listen for USER_SETUP_COMPLETE setting (per-user) @@ -1381,6 +1385,12 @@ final Object mScreenshotLock = new Object(); return false; } }; + + private void removeNavigationBar() { + if (mNavigationBarView == null) return; + mWindowManager.removeView(mNavigationBarView); + mNavigationBarView = null; + } //$_rbox_$_modify_$_huangjc,add add/remove bar button private View.OnTouchListener mHidebarPreloadOnTouchListener = new View.OnTouchListener() { @@ -1475,6 +1485,32 @@ final Object mScreenshotLock = new Object(); mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams()); } + private void addNavigationBarInnerLocked(){ + if(mNavigationBarView == null){ + mNavigationBarView = (NavigationBarView) View.inflate(mContext, R.layout.navigation_bar, null); + mNavigationBarView.setDisabledFlags(mDisabled); + mNavigationBarView.setBar(this); + mNavigationBarView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + checkUserAutohide(v, event); + return false; + }}); + if (mNavigationBarView == null) return; + + prepareNavigationBarView(); + try { + mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams()); + } catch (Exception e) { + } + } + } + public void displayNavigation(){ + addNavigationBarInnerLocked(); + } + public void hideNavigation(){ + removeNavigationBar(); + } private void repositionNavigationBar() { if (mNavigationBarView == null || !mNavigationBarView.isAttachedToWindow()) return; @@ -3436,7 +3472,11 @@ final Object mScreenshotLock = new Object(); if (DEBUG_MEDIA_FAKE_ARTWORK) { updateMediaMetaData(true); } - } + }else if(HIDE_NAVIGATION_BAR.equals(action)){ + hideNavigation(); + }else if(SHOW_NAVIGATION_BAR.equals(action)){ + displayNavigation(); + } } };
-
RE: Introduction to COOL PI CM5 interface
@wuming
IMX219
【淘宝】https://m.tb.cn/h.UtvVLeM?tk=xKy7dm9s4XE CZ3457 「英伟达Jetson Nano摄像头模组 800万像素 IMX219芯片广角160度」
点击链接直接打开 或者 淘宝搜索直接打开
OV5647
【淘宝】https://m.tb.cn/h.Utv42LD?tk=6mA3dm9HRea CZ3457 「OV5647摄像头 OV5647模块适用于Raspberry Pi 500万像素 广角65度」
点击链接直接打开 或者 淘宝搜索直接打开
除了摄像头模组以外,CM5的机器还需要增加一根转接排线,预计下周各个店铺会上线转接排线。 -
RE: CoolPi 4B硬件如何扩展 CAN接口
@Tourists-0 下面这个帖子有介绍GPIO的功能复用,40PIN 可以扩展两路CAN出来。
https://www.cool-pi.com/topic/68/coolpi-4b硬件扩展一-40pin接口介绍?_=1682384241578 -
RE: Introduction to COOL PI CM5 interface
@wuming 你手上是V10的机器吗?V10的暂时不支持蓝牙!可以联系一下代理更换一下V11的底板。