Name KHR_image_pixmap Name Strings EGL_KHR_image_pixmap Contributors Jeff Juliano Gary King Jon Leech Jonathan Grant Barthold Lichtenbelt Aaftab Munshi Acorn Pooley Chris Wynn Ray Smith Contacts Jon Leech (jon 'at' alumni.caltech.edu) Gary King, NVIDIA Corporation (gking 'at' nvidia.com) Notice Copyright (c) 2008-2013 The Khronos Group Inc. Copyright terms at http://www.khronos.org/registry/speccopyright.html Status Complete. Functionality approved (as part of KHR_image) by the Khronos Board of Promoters on February 11, 2008. Split into KHR_image_base and KHR_image_pixmap approved by the Khronos Technical Working Group on November 19, 2008. Version Version 5, November 13, 2013 Number EGL Extension #9 Dependencies EGL 1.2 is required. EGL_KHR_image_base is required. The EGL implementation must define an EGLNativePixmapType (although it is not required either to export any EGLConfigs supporting rendering to native pixmaps, or to support eglCreatePixmapSurface). This extension is written against the wording of the EGL 1.4 Specification. Overview This extension allows creating an EGLImage from a native pixmap image. New Types None New Procedures and Functions None New Tokens Accepted by the parameter of eglCreateImageKHR: EGL_NATIVE_PIXMAP_KHR 0x30B0 Additions to Chapter 2 of the EGL 1.4 Specification (EGL Operation) Rename section 2.2.2.1 "Native Surface Coordinate Systems" to "Native Surface and EGLImage Pixmap Coordinate Systems" and add to the end of the section: "EGLImages created with target EGL_NATIVE_PIXMAP_KHR share the same coordinate system as native pixmap surfaces. When that coordinate system is inverted, client APIs must invert their coordinate when accessing such images as described above." Add to section 2.5.1 "EGLImage Specification" (as defined by the EGL_KHR_image_base specification), in the description of eglCreateImageKHR: "Values accepted for are listed in Table aaa, below. +-------------------------+--------------------------------------------+ | | Notes | +-------------------------+--------------------------------------------+ | EGL_NATIVE_PIXMAP_KHR | Used for EGLNativePixmapType objects | +-------------------------+--------------------------------------------+ Table aaa. Legal values for eglCreateImageKHR parameter ... If is EGL_NATIVE_PIXMAP_KHR, must be a valid display, must be EGL_NO_CONTEXT; must be a handle to a valid NativePixmapType object, cast into the type EGLClientBuffer; and attributes other than EGL_IMAGE_PRESERVED_KHR are ignored." Add to the list of error conditions for eglCreateImageKHR: "* If is EGL_NATIVE_PIXMAP_KHR and is not a valid native pixmap handle, or if is a native pixmap whose color buffer format is incompatible with the system's EGLImage implementation, the error EGL_BAD_PARAMETER is generated. * If is EGL_NATIVE_PIXMAP_KHR, and is not a valid EGLDisplay object the error EGL_BAD_DISPLAY is generated. * If is EGL_NATIVE_PIXMAP_KHR, and is not EGL_NO_CONTEXT, the error EGL_BAD_PARAMETER is generated. * If is EGL_NATIVE_PIXMAP_KHR, and is not a handle to a valid NativePixmapType object, the error EGL_BAD_PARAMETER is generated." Issues 1) Should this specification allow EGLImages to be created from native pixmaps which already have a pixmap surface associated with them, and vice versa? RESOLVED: Yes. There are practical usecases for this, and it is already the application's responsibility to handle any format mismatch or synchronization issues that this may allow. Revision History #5 (Jon Leech, November 13, 2013) - Add Issue #1 regarding use cases for multiple EGL consumer/producers of a native pixmap (Bug 7779). #4 (Jon Leech, October 16, 2013) - Add language allowing native pixmap and client API image y coordinate convention to differ. Re-base extension against EGL 1.4 (Bug 9701). #3 (Jon Leech, November 25, 2008) - Remove dependency on EGLConfig in error conditions. #2 (Jon Leech, November 12, 2008) - Clarified dependency on EGLNativePixmapType such that pixmap configs and surfaces are not required. #1 (Jon Leech, October 21, 2008) - Split native pixmap functionality from EGL_KHR_image into a layered extension on EGL_KHR_image_base, and note interaction with the new EGL_IMAGE_PRESERVED_KHR attribute.