Color rendering issue on NXP iMX8MP EVK and Android 10

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Color rendering issue on NXP iMX8MP EVK and Android 10

Jump to solution
4,728 Views
robertosartori
Contributor III

Hi,

I found an issue on the Android 10 image for the iMX8MP platform.

I verified this with the image provided by NXP, BSP 2.6.0, using an HDMI display and the NXP iMX8MP EVK board.

An application using the Android immersive mode (https://developer.android.com/training/system-ui/immersive) will not be able to render the colors on screen correctly in certain circumstances. In particular, when an application is showing a full screen background color, this will not be rendered as expected.

In my tests, I prepared an application that sets a blue background in immersive mode when launched. However, on screen, the background was red. Same applies for the opposite colors (a red background is rendered as blue). When the app disables the immersive mode, the colors are then rendered as expected.

I found out that setting the Android 'sys.hwc.disable' property to '1' fixes the issue, however it is my understanding that this would increase the cpu usage.

Does someone have a similar issue, or suggestion about this?

Thanks!

1 Solution
4,392 Views
Rodrigue
NXP Employee
NXP Employee

Hi Roberto,

 

Time has passed since we last interacted. I apologize for that. 

With the patch in attachment fixes the issues on mipi-panel  for Android 10.0.0_2.6.0,

Please let us know whether it works and thus close this thread.

 

best regards,

 

Rodrigue

 

View solution in original post

0 Kudos
Reply
11 Replies
4,088 Views
e_kotsarev
Contributor II

Hello, can anyone confirm that patch works fine? Android 10 2.6.0

 

11-18 11:29:33.352 319 319 D libEGL : loaded /vendor/lib64/egl/libEGL_VIVANTE.so
11-18 11:29:33.353 310 310 D MediaCodecsXmlParser: Cannot find /data/misc/media/media_codecs_profiling_results.xml
11-18 11:29:33.354 200 200 E SELinux : avc: denied { add } for interface=android.hardware.media.omx::IOmxStore sid=u:r:init:s0 pid=310 scontext=u:r:init:s0 tcontext=u:object_r:hal_omx_hwservice:s0 tclass=hwservice_manager permissive=1
11-18 11:29:33.355 310 310 I ServiceManagement: Registered android.hardware.media.omx@1.0::IOmxStore/default (start delay of 667ms)
11-18 11:29:33.355 310 310 D ImxService: Register ImxC2Store service success
11-18 11:29:33.368 358 358 I chatty : uid=0(root) pgrep expire 87 lines
11-18 11:29:33.392 369 369 I chatty : uid=0(root) sed expire 1 line
11-18 11:29:33.392 369 369 I chatty : uid=0(root) sed expire 1 line
11-18 11:29:33.396 295 295 I ServiceManagement: Registered android.hardware.neuralnetworks@1.2::IDevice/vsi-npu (start delay of 818ms)
11-18 11:29:33.396 295 295 I ServiceManagement: Removing namespace from process name android.hardware.neuralnetworks@1.2-service-vsi-npu-server to neuralnetworks@1.2-service-vsi-npu-server.
11-18 11:29:33.401 319 319 D libEGL : loaded /vendor/lib64/egl/libGLESv1_CM_VIVANTE.so
11-18 11:29:33.405 319 319 D libEGL : loaded /vendor/lib64/egl/libGLESv2_VIVANTE.so
11-18 11:29:33.472 372 372 I chatty : uid=0(root) pgrep expire 18 lines
11-18 11:29:33.472 372 372 I chatty : uid=0(root) pgrep expire 18 lines
11-18 11:29:33.483 299 299 I FslCameraHAL: enumSensorSet
11-18 11:29:33.483 319 319 E libEGL : EGL_ANDROID_blob_cache advertised, but unable to get eglSetBlobCacheFuncsANDROID
11-18 11:29:33.484 319 319 W RenderEngine: no suitable EGLConfig found, trying a simpler query
11-18 11:29:33.484 319 319 I RenderEngine: EGL information:
11-18 11:29:33.484 319 319 I RenderEngine: vendor : Android
11-18 11:29:33.484 319 319 I RenderEngine: version : 1.5 Android META-EGL
11-18 11:29:33.484 319 319 I RenderEngine: extensions: EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_swap_buffers_with_damage EGL_ANDROID_get_native_client_buffer EGL_ANDROID_front_buffer_auto_refresh EGL_ANDROID_get_frame_timestamps EGL_EXT_surface_SMPTE2086_metadata EGL_EXT_surface_CTA861_3_metadata EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_lock_surface EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_reusable_sync EGL_KHR_fence_sync EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_EXT_create_context_robustness EGL_ANDROID_image_native_buffer EGL_KHR_wait_sync EGL_ANDROID_recordable EGL_KHR_partial_update EGL_EXT_pixel_format_float EGL_EXT_buffer_age EGL_EXT_protected_content
11-18 11:29:33.484 319 319 I RenderEngine: Client API: OpenGL_ES
11-18 11:29:33.484 319 319 I RenderEngine: EGLSurface: 8-8-8-8, config=0x15
11-18 11:29:33.484 299 299 I FslCameraHAL: matchDevNodes
11-18 11:29:33.485 299 299 I FslCameraHAL: getNodeName: dev path:/dev/video0
11-18 11:29:33.581 325 325 I mediaserver: ServiceManager: 0xf561e2a0
11-18 11:29:33.592 379 379 I chatty : uid=0(root) rm expire 1 line
11-18 11:29:33.592 379 379 I chatty : uid=0(root) rm expire 1 line
11-18 11:29:33.605 319 319 I RenderEngine: OpenGL ES informations:
11-18 11:29:33.605 319 319 I RenderEngine: vendor : Vivante Corporation
11-18 11:29:33.605 319 319 I RenderEngine: renderer : Vivante GC7000UL
11-18 11:29:33.605 319 319 I RenderEngine: version : OpenGL ES 3.1 V6.4.3.p1.305572
11-18 11:29:33.605 319 319 I RenderEngine: extensions: GL_EXT_debug_marker GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_half_float GL_OES_element_index_uint GL_OES_mapbuffer GL_OES_vertex_array_object GL_OES_compressed_ETC1_RGB8_texture GL_OES_compressed_paletted_texture GL_OES_texture_npot GL_OES_rgb8_rgba8 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32 GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_fragment_precision_high GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_stencil8 GL_OES_shader_image_atomic GL_OES_texture_storage_multisample_2d_array GL_OES_required_internalformat GL_OES_surfaceless_context GL_OES_draw_buffers_indexed GL_OES_texture_border_clamp GL_OES_texture_buffer GL_OES_texture_cube_map_array GL_OES_draw_elements_base_vertex GL_OES_texture_half_float GL_OES_texture_float GL_KHR_blend_equation_advanced GL_KHR_debug GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_
11-18 11:29:33.605 319 319 I RenderEngine: GL_MAX_TEXTURE_SIZE = 8192
11-18 11:29:33.605 319 319 I RenderEngine: GL_MAX_VIEWPORT_DIMS = 8192

0 Kudos
Reply
4,599 Views
jamesbone
NXP TechSupport
NXP TechSupport

We are doing some research internally do you think you can help us, testing in Android 11 from your side, just see how it behaves, since we have not been able to reproduced it.  They also tested with Android 11, so that´s I ask for the test from your side.

 

0 Kudos
Reply
4,526 Views
robertosartori
Contributor III

Hi James,

I can confirm that the issue is not present using the Android 11 BSP 2.2.0 for the iMX8MP EVK board.

However, the issue is there on the Android 10 BSP 2.6.0 release (same board + display, same example apk). Can you reproduce the problem with this OS?

Rodrigue confirmed that he was able to see the issue: https://community.nxp.com/t5/i-MX-Processors/Color-rendering-issue-on-NXP-iMX8MP-EVK-and-Android-10/...

Thanks,

Roberto

0 Kudos
Reply
4,393 Views
Rodrigue
NXP Employee
NXP Employee

Hi Roberto,

 

Time has passed since we last interacted. I apologize for that. 

With the patch in attachment fixes the issues on mipi-panel  for Android 10.0.0_2.6.0,

Please let us know whether it works and thus close this thread.

 

best regards,

 

Rodrigue

 

0 Kudos
Reply
4,373 Views
robertosartori
Contributor III

Hi Rodrigue.

Thank you for the patches, I can confirm that the issue is fixed also on our setup with these

Regards,

Roberto

0 Kudos
Reply
4,702 Views
jamesbone
NXP TechSupport
NXP TechSupport

Hello Roberto,

 

Can you please share the steps to follow, your code of the app tested and the exact BSP that you are using, in your EVK so we can try to reproduced the issue.  From our tests it seems everything it is working correctly, have you try in a different  HDMI display we use a  Sony TV 4K for our testing.

 

Thanks

 

0 Kudos
Reply
4,693 Views
robertosartori
Contributor III

Hi James

- BSP: Android 10 BSP 2.6.0 for iMX8MP EVK

- I attached an example apk. You can simply use the Android Studio default activity for the immersive mode to replicate this, but let me know if you need the sources.

Simply open the app: it will start in immersive mode and the color will not be rendered correctly. Upon touching the screen, the app will disable immersive mode and the background color will change (but it should stay the same).

With the 'sys.hwc.disable' property set a boot, the colors are rendered as expected.

Thank you,

Roberto

0 Kudos
Reply
4,660 Views
Rodrigue
NXP Employee
NXP Employee

Hi Roberto,

 

Ok, I just tried it.

In fact I see a difference between HDMI and MIPI. The problem only appears when displaying on the MIPI Interface and not on HDMI.

Disabling the GPU Overlays does fix the pb indeed.

Ok, let me investigate that

best regards,

Rodrigue

 

 

0 Kudos
Reply
4,649 Views
robertosartori
Contributor III

Hi Rodrigue,

just to clarify, I see the issue using the HDMI interface on the IMX8MP EVK.

I tried with a fullHD HDMI display (24 inches) and the issue was present.

Best regards,

Roberto

0 Kudos
Reply
4,633 Views
jamesbone
NXP TechSupport
NXP TechSupport

Our Internal team also don't see the issue on HDMI, MIPI-HDMI output.

Do you see the issue only when using the touch screen display?

 

0 Kudos
Reply
4,621 Views
robertosartori
Contributor III

Hi James,

I see the issue with the HDMI output without touch screen (I use a mouse or remote control).
Here a video that shows the issue: https://drive.google.com/file/d/1NKXzmkZZCJJIhdS8lxN_boDFic0r9qlx/view?usp=sharing

The display is HDMI, and as you can see from the video (the Settings app is opened) the board attached is the iMX8MP EVK running Android 10. This is the BSP 2.6.0 provided by NXP. When the Immersive app is opened (second 39) a red screen is shown: this should be blue, but the colors are not rendered correctly.

As a note: if I record the video from Android using the screenrecord tool, the colors are actually correct. They are only wrong on the display.

I verified this with two different HDMI display. The colors are correct when GPU Overlays are disabled.

Regards,
Roberto

0 Kudos
Reply