[Mesa-dev] [PATCH v3 1/2] Import eglextchromium.h from Chromium.

Brian Paul brianp at vmware.com
Tue May 20 09:14:47 PDT 2014


It seems unusual for a new extension to be defined in its own header 
file rather than the eglext.h file.

Is there a particular reason for that?  Are there other vendors putting 
their extensions in new header files like this?

-Brian


On 05/16/2014 04:05 PM, Chad Versace wrote:
> Ian and Brian,
>
> How do you feel about importing this EGL extension header from the
> Chromium source tree? Do you prefer to import the header or just add its
> content to eglmesaext.h?
>
> I have a slight preference for importing the header.
>
> -Chad
>
> On Tue, May 06, 2014 at 12:10:56PM -0700, Sarah Sharp wrote:
>> In order to support the (currently unregistered) Chromium-specific EGL
>> extension eglGetSyncValuesCHROMIUM on Intel systems, we need to import
>> the Chromium header that defines it.  The file was downloaded from
>>
>> https://urldefense.proofpoint.com/v1/url?u=https://chromium.googlesource.com/chromium/chromium/%2B/trunk/ui/gl/EGL/eglextchromium.h&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=lGQMzzTgII0I7jefp2FHq7WtZ%2BTLs8wadB%2BiIj9xpBY%3D%0A&m=%2FVSNRsaKb7upderouQ%2FRftkP8qhPrxRicKdXx3XfVSc%3D%0A&s=f0cfb03f402ce20417a8171fea945e2a2c3dce6a0953f37c67ea2c42e71fec02
>>
>> It is subject to the license found at
>>
>> https://urldefense.proofpoint.com/v1/url?u=https://chromium.googlesource.com/chromium/chromium/%2B/trunk/LICENSE&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=lGQMzzTgII0I7jefp2FHq7WtZ%2BTLs8wadB%2BiIj9xpBY%3D%0A&m=%2FVSNRsaKb7upderouQ%2FRftkP8qhPrxRicKdXx3XfVSc%3D%0A&s=2407723a2ca5c591b15d9b78ec2362a9a3c0d624cec2f3005cc3caed97e518d7
>>
>> I have imported the header file and added the license text to the top.
>> The only change was to fix the include guard on the Chromium header to
>> change the last line from a #define to a #endif, which makes the header
>> actually compile.
>>
>> Signed-off-by: Sarah Sharp <sarah.a.sharp at linux.intel.com>
>> Reviewed-by: Chad Versace <chad.versace at linux.intel.com>
>> Cc: Jamey Sharp <jamey at minilop.net>
>> Cc: Ian Romanick <idr at freedesktop.org>
>> Cc: Stéphane Marchesin <stephane.marchesin at gmail.com>
>> ---
>>
>> v3: Add an include guard on Chromium header.
>>
>>   include/EGL/eglext.h         |  1 +
>>   include/EGL/eglextchromium.h | 60 ++++++++++++++++++++++++++++++++++++++++++++
>>   src/egl/main/Makefile.am     |  1 +
>>   3 files changed, 62 insertions(+)
>>   create mode 100644 include/EGL/eglextchromium.h
>>
>> diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h
>> index 243da4a..88b39db 100644
>> --- a/include/EGL/eglext.h
>> +++ b/include/EGL/eglext.h
>> @@ -646,6 +646,7 @@ EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);
>>   #endif /* EGL_NV_system_time */
>>
>>   #include <EGL/eglmesaext.h>
>> +#include <EGL/eglextchromium.h>
>>
>>   #ifdef __cplusplus
>>   }
>> diff --git a/include/EGL/eglextchromium.h b/include/EGL/eglextchromium.h
>> new file mode 100644
>> index 0000000..0cc0976
>> --- /dev/null
>> +++ b/include/EGL/eglextchromium.h
>> @@ -0,0 +1,60 @@
>> +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
>> +//
>> +// Redistribution and use in source and binary forms, with or without
>> +// modification, are permitted provided that the following conditions are
>> +// met:
>> +//
>> +//    * Redistributions of source code must retain the above copyright
>> +// notice, this list of conditions and the following disclaimer.
>> +//    * Redistributions in binary form must reproduce the above
>> +// copyright notice, this list of conditions and the following disclaimer
>> +// in the documentation and/or other materials provided with the
>> +// distribution.
>> +//    * Neither the name of Google Inc. nor the names of its
>> +// contributors may be used to endorse or promote products derived from
>> +// this software without specific prior written permission.
>> +//
>> +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
>> +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
>> +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
>> +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>> +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>> +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>> +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>> +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>> +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
>> +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>> +
>> +// This file contains Chromium-specific EGL extensions declarations.
>> +
>> +#ifndef GPU_EGL_EGLEXTCHROMIUM_H_
>> +#define GPU_EGL_EGLEXTCHROMIUM_H_
>> +
>> +#ifdef __cplusplus
>> +extern "C" {
>> +#endif
>> +
>> +#include <EGL/eglplatform.h>
>> +
>> +/* EGLSyncControlCHROMIUM requires 64-bit uint support */
>> +#if KHRONOS_SUPPORT_INT64
>> +#ifndef EGL_CHROMIUM_sync_control
>> +#define EGL_CHROMIUM_sync_control 1
>> +typedef khronos_uint64_t EGLuint64CHROMIUM;
>> +#ifdef EGL_EGLEXT_PROTOTYPES
>> +EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(
>> +    EGLDisplay dpy, EGLSurface surface, EGLuint64CHROMIUM *ust,
>> +    EGLuint64CHROMIUM *msc, EGLuint64CHROMIUM *sbc);
>> +#endif /* EGL_EGLEXT_PROTOTYPES */
>> +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCVALUESCHROMIUMPROC)
>> +    (EGLDisplay dpy, EGLSurface surface, EGLuint64CHROMIUM *ust,
>> +     EGLuint64CHROMIUM *msc, EGLuint64CHROMIUM *sbc);
>> +#endif
>> +#endif
>> +
>> +#ifdef __cplusplus
>> +}
>> +#endif
>> +
>> +#endif // GPU_EGL_EGLEXTCHROMIUM_H_
>> diff --git a/src/egl/main/Makefile.am b/src/egl/main/Makefile.am
>> index 2858913..23207db 100644
>> --- a/src/egl/main/Makefile.am
>> +++ b/src/egl/main/Makefile.am
>> @@ -126,5 +126,6 @@ egldir = $(includedir)/EGL
>>   egl_HEADERS = \
>>   	$(top_srcdir)/include/EGL/eglext.h \
>>   	$(top_srcdir)/include/EGL/egl.h \
>> +	$(top_srcdir)/include/EGL/eglextchromium.h \
>>   	$(top_srcdir)/include/EGL/eglmesaext.h \
>>   	$(top_srcdir)/include/EGL/eglplatform.h
>> --
>> 1.8.3.2
>>



More information about the mesa-dev mailing list