[Mesa-dev] [PATCH 4/6] egl: MESA_image_drm extension
Chia-I Wu
olvaffe at gmail.com
Thu Jun 10 02:33:47 PDT 2010
2010/6/4 Jakob Bornecrantz <wallbraker at gmail.com>:
> Kristian and I discussed this on IRC and I think we got an agreement
> on the way forward. I'll inline the comments below in the spec file.
>
> 2010/6/4 Kristian Høgsberg <krh at bitplanet.net>:
>> ---
>> docs/MESA_image_drm.spec | 101 +++++++++++++++++++++++++++++++++++++++++++++
>> include/EGL/eglext.h | 23 ++++++++++
>> src/egl/main/eglapi.c | 48 +++++++++++++++++++++
>> src/egl/main/eglapi.h | 10 ++++
>> src/egl/main/eglconfig.c | 1 +
>> src/egl/main/egldisplay.h | 1 +
>> src/egl/main/eglmisc.c | 1 +
>> 7 files changed, 185 insertions(+), 0 deletions(-)
>> create mode 100644 docs/MESA_image_drm.spec
>>
>> diff --git a/docs/MESA_image_drm.spec b/docs/MESA_image_drm.spec
>> new file mode 100644
>> index 0000000..fc0f076
>> --- /dev/null
>> +++ b/docs/MESA_image_drm.spec
>> @@ -0,0 +1,101 @@
>> +Name
>> +
>> + MESA_image_drm
>> +
>> +Name Strings
>> +
>> + EGL_MESA_image_drm
>> +
>> +Contact
>> +
>> + Kristian Høgsberg <krh at bitplanet.net>
>> +
>> +Status
>> +
>> + Proposal
>> +
>> +Version
>> +
>> + Version 1, June 3, 2010
>> +
>> +Number
>> +
>> + EGL Extension #not assigned
>> +
>> +Dependencies
>> +
>> + Reguires EGL 1.4 or later. This extension is written against the
>> + wording of the EGL 1.4 specification.
>> +
>> + EGL_KHR_base_image is required.
>> +
>> +Overview
>> +
>> + Create EGLImages from DRM buffer handles.
>> +
>> +IP Status
>> +
>> + Open-source; freely implementable.
>> +
>> +Issues
>> +
>> + Nopes
>> +
>> +New Procedures and Functions
>> +
>> + EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy,
>> + EGLContext ctx,
>> + khronos_uint32_t *handle,
>> + khronos_uint32_t *stride,
>> + const EGLint *attrib_list);
>
> I think we can drop the ctx argument as it is not needed, its only
> there on eglCreateImage to know which context to lookup the
> ClientBuffer in.
>
> As I outlined in my other mails I think having the handle and stride
> arguments on this function so lets move these to eglShareDRMImageMesa
> (see more below).
>
>> +
>> + EGLBoolean eglShareDRMImageMESA(EGLDisplay dpy,
>> + EGLImageKHR image,
>> + khronos_uint32_t *name);
>
> We could rename this function to eglExportDRMImageMesa and let it have
> the following arguments.
>
> EGLBoolean eglExportDRMImageMesa(EGLDisplay dpy,
> khronos_uint32_t *name,
> khronos_uint32_t *handle,
> khronos_uint32_t *stride);
>
> Where the either name or handle can be null but not both. The function
> will also check against EGL_IMAGE_USE_MESA to make sure that the image
> was created with the correct uses.
>
>> +
>> +New Tokens
>> +
>> + Accepted in the <attrib_list> parameter of eglCreateDRMImageMESA:
>> +
>> + EGL_IMAGE_FORMAT_MESA 0xce01
>> + EGL_IMAGE_USE_MESA 0xce02
>> +
>> + Bits accepted in EGL_IMAGE_USE_MESA:
>> +
>> + EGL_IMAGE_USE_SCANOUT_MESA 0x0001
>> + EGL_IMAGE_USE_SHARE_MESA 0x0002
>> +
>> + Accepted in the <target> parameter of eglCreateImageKHR:
>> +
>> + EGL_DRM_BUFFER_MESA 0xce03
>> +
>> + Use when importing drm buffer:
>> +
>> + EGL_IMAGE_NAME_MESA 0xce04
>> + EGL_IMAGE_STRIDE_MESA 0xce05
>> +
>> + Accepted as values for the EGL_IMAGE_FORMAT_MESA attribute:
>> +
>> + EGL_IMAGE_FORMAT_ARGB8888_MESA 0xce06
> Hmm since these tokens are for a none generic extension like this
> maybe we should make them a bit less generic, maybe sprinkle some DRM
> strings in there. Just a thought, could probably stay the same tho.
I prefer to sprinkle DRM strings to the tokens. Stride seems to in bytes now,
where the last version depends on the format(?). It might be more clear to use
DRM_STRIDE and define the units.
It seems bits-per-pixel is missing here. Or should it be derived from the
format?
>> +
>> +Additions to the EGL 1.4 Specification:
>> +
>> + Goes here...
>> +
>> + Create drm buffers by calling eglCreateDRMImageMESA, pass
>> + EGL_WIDTH, EGL_EIGHT and format and use in the attrib list using
>> + EGL_IMAGE_FORMAT_MESA and EGL_IMAGE_USE_MESA. If non-NULL, the
>> + handle (local to the drm fd, for use with KMS) is written to
>> + <handle> and the stride (in bytes) is written to <stride>.
>> +
>> + Create a global name for a buffer using eglShareDRMImageMESA.
>> +
>> + Import a shared buffer by calling eglCreateImageKHR with
>> + EGL_DRM_BUFFER_MESA as the target, using EGL_WIDTH, EGL_HEIGHT,
>> + EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_NAME_MESA, EGL_IMAGE_STRIDE_MESA
>> + in the attrib list.
>> +
>> +Revision History
>> +
>> + June 3, 2010
>> + Initial draft (Kristian Høgsberg)
>> diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h
>
>
>>-- snip --<
>
> You can probably grab some of the text and tables the extensions in my
> patch series for some of the functions.
>
> Cheers Jakob.
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
--
olv at LunarG.com
More information about the mesa-dev
mailing list