From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chad Versace Subject: Requesting feedback on disallowing handle attribute values in EGLint attribute lists Date: Wed, 09 Oct 2013 10:01:03 -0700 Message-ID: <52558BCF.60503@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: "mesa-dev@lists.freedesktop.org" , dri-devel@lists.freedesktop.org, wayland@lists.freedesktop.org, xorg-devel@lists.x.org List-Id: dri-devel@lists.freedesktop.org Khronos is proposing a change affecting EGL attribute lists, and they are requesting feedback on this forum thread [1]. They have specifically requested feedback from the opensource community. [1] http://www.khronos.org/message_boards/showthread.php/9138-Requesting-feedback-on-disallowing-handle-attribute-values-in-EGLint-attribute-lists The root of the problem is that the EGL headers define EGLint to be 32-bit, but the EGL spec states that EGLint is large enough to hold pointers and "handles". This, of course, causes a conflict on 64-bit platforms. Don't worry. Khronos does not intend to break the EGL ABI by redefining EGLint as 64-bit. The EGL spec authors' intention was that EGL attribute lists (whose type is an array of EGLint) should be able to hold pointer values. In reality, there are only two instances where an attribute list needs to hold a pointer: the EGL_MATCH_NATIVE_PIXMAP attribute to eglChooseConfig and the EGL_CL_EVENT_HANDLE_KHR attribute to eglCreateSyncKHR for EGL_KHR_cl_event. The take-away message is: Don't try to put pointers in EGLint attribute lists, because it will break on 64-bit platforms. For future EGL extensions, Khronos is planning to define a new EGLattrib type for attribute lists, which will properly hold a pointer.