2010/6/4 Jakob Bornecrantz <wallbra...@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 <k...@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 <k...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > -- o...@lunarg.com _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev