Does PVRCarbon support EGL PIXMAP surfaces on the targets? Is there any workaround so that I get the frames rendered from PIXMAP to be recorded by PVRCARBON?

Does PVRCarbon support EGL PIXMAP surfaces on the targets ?
Please anyone support me. It is bit urgent.

Hi sandy,

Thanks for your message and welcome to the PowerVR Developer Forum!

Could you please provide the Pixmap native’s type?

Also if you could please provide the information below it would be helpful:

  • GPU you are working with.
  • SoC model if you are working with an embeded system.
  • Operating system name and version.

Best regards,
Alejandro

Hi Alejandro,

Pardon me for the late reply.

Thanks a lot for your response.

Below are the details:
Pixmap native’s type : Please refer to EGL extensions below (if you still need more information I can give please let me know)
GPU : Imagination PowerVR Rogue GE7800
SoC : Renesas R-CAR M3N
(Link: R-Car-M3Ne - R-Car M3N/M3Ne/M3Ne-2G Automotive System-on-Chip (SoC) Ideal for Medium-Class Automotive Computing Systems)
Operating system : Linux xxxxx-xxxxxxxxx-ucap 4.14.0-yocto-standard #17 SMP PREEMPT Mon Nov 29 03:23:40 UTC 2021 aarch64 GNU/Linux

Please find below the EGL query details:
##########################################################################
EGL initialized: version 1.4
EGL_KHR_surfaceless_context is supported.
EGL context created successfully.
OpenGL Vendor: Imagination Technologies
OpenGL Renderer: PowerVR Rogue GE7800
OpenGL Version: OpenGL ES 3.2 build 1.9@4971894
GLSL Version: OpenGL ES GLSL ES 3.20 build 1.9@4971894
Using OpenGL ES 3.0…

EGL Version: 1.4 build 1.9@4971894
EGL Vendor: Imagination Technologies

EGL Vendor: Imagination Technologies
EGL Renderer: PowerVR Rogue GE7800

EGL Renderer: PowerVR Rogue GE7800

EGL Client APIs: OpenGL_ES

EGL Extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_IMG_cl_image EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_EXT_pixel_format_float EGL_EXT_create_context_robustness EGL_IMG_image_plane_attribs EGL_EXT_swap_buffers_with_damage EGL_KHR_swap_buffers_with_damage EGL_KHR_partial_update EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import EGL_EXT_yuv_surface EGL_IMG_context_priority EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_REL_get_spm_event EGL_REL_create_context EGL_REL_query_context EGL_REL_get_meminfo EGL_REL_get_pds_fragbuffer_info EGL_WL_bind_wayland_display
##########################################################################

Best Regards,
Sandeep

Hi Sandeep,

Thanks for your message and for the information provided.

The pixmap native format is the format of the image provided by the native windowing system, I would need you please to provide that information.

Best regards,
Alejandro

Hi Alejandro,
is the below information sufficient to find out native pixmap type ?
I just collected it directly form my target ECU/board . This information looks like my system support DRM/KMS . However we are not sure

Do you have any other suggestion to figure out native pix map type? if so kindly suggest.

Looking forward for your response . Thank you in advance.

root@valeo-r8a77965-ucap:~# ls -l /dev/dri/
drwxr-xr-x 2 root root 100 Apr 9 16:25 by-path
crw-rw---- 1 root video 226, 0 Apr 9 16:25 card0
crw-rw---- 1 root video 226, 1 Apr 9 16:25 card1
crw-rw---- 1 root video 226, 128 Apr 9 16:25 renderD128

Hi Alejandro,

Please refer to the sample code snippet below that indicate usage of eglCreatePixmapSurface()

Hope this helps.

Please share your thoughts. Thanks for the support.

################################################################

EGLNativePixmapTypeREL egl_pixmap[RENDER_IMAGE_COUNT];

..
egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
CHECK(egl_display != EGL_NO_DISPLAY, ERR_EXCEPTION_RAISED);

..
 EGLint config_result;
EGLint config_count;
config_result = eglChooseConfig(egl_display, config_attr, &egl_config, 1, &config_count);

....
**** few sanity checks
....

for(uint8_t i = 0; i < RENDER_IMAGE_COUNT; i++)
{    

egl_pixmap[i].width  = RENDER_IMAGE_WIDTH;
egl_pixmap[i].height = RENDER_IMAGE_HEIGHT;
egl_pixmap[i].stride = RENDER_IMAGE_STRIDE;
egl_pixmap[i].usage  = 0;
egl_pixmap[i].format = EGL_NATIVE_PIXFORMAT_RGB565_REL;
egl_pixmap[i].pixelData = renderImageVirtAddr[i];

egl_surface[i] = eglCreatePixmapSurface(egl_display, egl_config, &egl_pixmap[i], NULL);
    
..
}//for 

################################################################

Thanks & Regards,
Sandeep

Hi sandy,

After asking the Tools Team, they mentioned the last release of PVRCarbon (R24.2) had implemented support for Renesas’ pixmaps, being it possible to record and play them back.

However, they need to be used as EGL image targets and not as surface inputs for eglMakeCurrent, so depending on your implementation it can work or not.

Best regards,
Alejandro

Hi Alejandro,

Thanks a lot for the update and your support.
I will check on this and get back to you.

Best Regards,
Sandeep