I want to use eglCreateImageKHR api by using egl_khr_image_pixmap extension but my platform(linux 3.10, T628 fbdev r4p0 driver) can not support this egl extension.
Following are my egl extension string.
EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_ARM_pixmap_multisample_discard EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image
As you can see, this platform has no egl_khr_image_pixmap extension.
My question is
1. Why fbdev driver can not support egl_khr_image_pixmap. When porting driver, it needs additional work?
2. Can latest version of driver support egl_khr_image_pixmap?
Thanks !
First of all, I will tell that to use a pixmap for sharing buffer.
About second question, I was try new version(r6p0) of driver in our platform.
Followings are egl extension string
EGL_KHR_partial_update EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_ARM_pixmap_multisample_discard EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_create_context_robustness EGL_KHR_cl_event2
But still can't see pixmap extension.
OK, I found DMA_BUF stuff for sharing buffer. But cannot see DMA_BUF extension too.
continue...
Hi cappy,
We currently support this extension in our driver, but for Midgard this is only for X11 and not fbdev.
Are you not able to use X11 instead?
I am unaware if we have any plans to support this extension with FBDEV, however will contact our driver team for clarification on this.
Regarding DMA_BUF, please refer to this thread for a full explanation as this has already been asked: Is it possible to benefit from DMA in r6p0 using DRM + GPU?
I hope this helps,
Kind Regards,
Michael McGeagh
Thanks Michael
Currently, I am not concerned about X11.
And about DMA_BUF, I try following code already.
EGLint attrs[] = {
EGL_WIDTH, width,
EGL_HEIGHT, height,
EGL_LINUX_DRM_FOURCC_EXT, DRM_FORMAT_RGB565,
EGL_DMA_BUF_PLANE0_FD_EXT, fd,
EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
EGL_DMA_BUF_PLANE0_PITCH_EXT, stride,
EGL_NONE
};
EGLImageKHR image = eglCreateImageKHR(dpy, EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT,
(EGLClientBuffer)0, attrs);
but I got "0x300C, EGL_BAD_PARAMTER". I knew already my platform has no EGL_EXT_image_dma_buf_import but i tried anyway.
Regarding EGL_EXT_image_dma_buf_import, Need additional work on kernel driver?
Frankly speaking, I'm not expert about kernel and kernel driver.
Just to clarify.
This extension currently only works for X11 in our production drivers.
FBDEV version requires additional work. If you are using the binaries on our website, as opposed to ones from your OEM, (http://malideveloper.arm.com/resources/drivers/arm-mali-midgard-gpu-user-space-drivers/) then we have this implemented from version r6p0 onwards. However this currently requires further work from the integrator on the kernel side to implement the ioctls that the driver will be calling to make this work correctly.
We cannot give you an ETA when this will be in both sides by default, but it is likely to not happen until at least r10p0 version of our drivers.
If you cannot wait until then, and you are unable to use X11, then I would recommend using the drivers from malideveloper (r6p0 onwards) and implement the kernel side changes neccessary to make this work yourself.
EDIT: For further information on this subject, please read this blog post from guillaume.tucker!
Improving ARM® Mali™ drivers on fbdev
I hope that helps explain the current situation.
Thanks Michael !
I implemented kernel side changes already and checked very good rendering performance caused by zero-copy.
In addition, I added ion device driver, dma_buf and some code for frame buffer's sources.
But your recommended subject seems to have no relationship with EGL_EXT_image_dma_buf_import.
If I'm wrong, please tell me about the further work for this subject.
Is there any other way? For example, ump way?
What I really want is sharing texture memory between CPU and GPU. So i asked about egl_khr_image pixmap and EGL_EXT_image_dma_buf_import extension. Because my platform's EGL does not support these extensions string.
Anyway, Resolving performance issues is good thing.
Thank you,