[Mesa-dev] [PATCH 01/24] mapi: add EXT_external_objects and EXT_external_objects_fd

Samuel Pitoiset samuel.pitoiset at gmail.com
Wed Jul 26 14:36:05 UTC 2017


Acked-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

On 07/26/2017 01:46 PM, Timothy Arceri wrote:
> From: Andres Rodriguez <andresx7 at gmail.com>
> 
> Includes implementation stubs.
> 
> Signed-off-by: Andres Rodriguez <andresx7 at gmail.com>
> Acked-by: Timothy Arceri <tarceri at itsqueeze.com>
> ---
>   src/mapi/glapi/gen/EXT_external_objects.xml    | 234 ++++++++++++++++++++++
>   src/mapi/glapi/gen/EXT_external_objects_fd.xml |  28 +++
>   src/mapi/glapi/gen/Makefile.am                 |   2 +
>   src/mapi/glapi/gen/gl_API.xml                  |   3 +
>   src/mapi/glapi/gen/gl_genexec.py               |   1 +
>   src/mesa/Makefile.sources                      |   2 +
>   src/mesa/main/bufferobj.c                      |  32 +++
>   src/mesa/main/bufferobj.h                      |  13 +-
>   src/mesa/main/externalobjects.c                | 257 +++++++++++++++++++++++++
>   src/mesa/main/externalobjects.h                | 200 +++++++++++++++++++
>   src/mesa/main/get.c                            |  12 ++
>   src/mesa/main/get.h                            |   6 +
>   src/mesa/main/tests/dispatch_sanity.cpp        |  32 +++
>   13 files changed, 821 insertions(+), 1 deletion(-)
>   create mode 100644 src/mapi/glapi/gen/EXT_external_objects.xml
>   create mode 100644 src/mapi/glapi/gen/EXT_external_objects_fd.xml
>   create mode 100644 src/mesa/main/externalobjects.c
>   create mode 100644 src/mesa/main/externalobjects.h
> 
> diff --git a/src/mapi/glapi/gen/EXT_external_objects.xml b/src/mapi/glapi/gen/EXT_external_objects.xml
> new file mode 100644
> index 0000000..25e6879
> --- /dev/null
> +++ b/src/mapi/glapi/gen/EXT_external_objects.xml
> @@ -0,0 +1,234 @@
> +<?xml version="1.0"?>
> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
> +
> +<!-- Note: no GLX protocol info yet. -->
> +
> +
> +<OpenGLAPI>
> +
> +<category name="EXT_external_objects" number="503">
> +
> +    <enum name="TEXTURE_TILING_EXT"                     value="0x9580"/>
> +    <enum name="DEDICATED_MEMORY_OBJECT_EXT"            value="0x9581"/>
> +    <enum name="PROTECTED_MEMORY_OBJECT_EXT"            value="0x959B"/>
> +    <enum name="NUM_TILING_TYPES_EXT"                   value="0x9582"/>
> +    <enum name="TILING_TYPES_EXT"                       value="0x9583"/>
> +    <enum name="OPTIMAL_TILING_EXT"                     value="0x9584"/>
> +    <enum name="LINEAR_TILING_EXT"                      value="0x9585"/>
> +    <enum name="NUM_DEVICE_UUIDS_EXT"                   value="0x9596"/>
> +    <enum name="DEVICE_UUID_EXT"                        value="0x9597"/>
> +    <enum name="DRIVER_UUID_EXT"                        value="0x9598"/>
> +    <enum name="LAYOUT_GENERAL_EXT"                     value="0x958D"/>
> +    <enum name="LAYOUT_COLOR_ATTACHMENT_EXT"            value="0x958E"/>
> +    <enum name="LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT"    value="0x958F"/>
> +    <enum name="LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT"     value="0x9590"/>
> +    <enum name="LAYOUT_SHADER_READ_ONLY_EXT"            value="0x9591"/>
> +    <enum name="LAYOUT_TRANSFER_SRC_EXT"                value="0x9592"/>
> +    <enum name="LAYOUT_TRANSFER_DST_EXT"                value="0x9593"/>
> +
> +    <function name="GetUnsignedBytevEXT" es2="3.2">
> +        <param name="pname" type="GLenum"/>
> +        <param name="data" type="GLubyte *"/>
> +    </function>
> +
> +    <function name="GetUnsignedBytei_vEXT" es2="3.2">
> +        <param name="target" type="GLenum"/>
> +        <param name="index" type="GLuint"/>
> +        <param name="data" type="GLubyte *"/>
> +    </function>
> +
> +    <function name="DeleteMemoryObjectsEXT" es2="3.2">
> +        <param name="n" type="GLsizei"/>
> +        <param name="memoryObjects" type="const GLuint *"/>
> +    </function>
> +
> +    <function name="IsMemoryObjectEXT" es2="3.2">
> +        <param name="memoryObject" type="GLuint"/>
> +        <return type="GLboolean"/>
> +    </function>
> +
> +    <function name="CreateMemoryObjectsEXT" es2="3.2">
> +        <param name="n" type="GLsizei"/>
> +        <param name="memoryObjects" type="GLuint *"/>
> +    </function>
> +
> +    <function name="MemoryObjectParameterivEXT" es2="3.2">
> +        <param name="memoryObject" type="GLuint"/>
> +        <param name="pname" type="GLenum"/>
> +        <param name="params" type="const GLint *"/>
> +    </function>
> +
> +    <function name="GetMemoryObjectParameterivEXT" es2="3.2">
> +        <param name="memoryObject" type="GLuint"/>
> +        <param name="pname" type="GLenum"/>
> +        <param name="params" type="GLint *"/>
> +    </function>
> +
> +    <function name="TexStorageMem2DEXT" es2="3.2">
> +        <param name="target" type="GLenum"/>
> +        <param name="levels" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TexStorageMem2DMultisampleEXT" es2="3.2">
> +        <param name="target" type="GLenum"/>
> +        <param name="samples" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="fixedSampleLocations" type="GLboolean"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TexStorageMem3DEXT" es2="3.2">
> +        <param name="target" type="GLenum"/>
> +        <param name="levels" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="depth" type="GLsizei"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TexStorageMem3DMultisampleEXT" es2="3.2">
> +        <param name="target" type="GLenum"/>
> +        <param name="samples" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="depth" type="GLsizei"/>
> +        <param name="fixedSampleLocations" type="GLboolean"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="BufferStorageMemEXT" es2="3.2" no_error="true">
> +        <param name="target" type="GLenum"/>
> +        <param name="size" type="GLsizeiptr"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +     </function>
> +
> +    <function name="TextureStorageMem2DEXT" es2="3.2">
> +        <param name="texture" type="GLenum"/>
> +        <param name="levels" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TextureStorageMem2DMultisampleEXT" es2="3.2">
> +        <param name="texture" type="GLuint"/>
> +        <param name="samples" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="fixedSampleLocations" type="GLboolean"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TextureStorageMem3DEXT" es2="3.2">
> +        <param name="texture" type="GLuint"/>
> +        <param name="levels" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="depth" type="GLsizei"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TextureStorageMem3DMultisampleEXT" es2="3.2">
> +        <param name="texture" type="GLuint"/>
> +        <param name="samples" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="height" type="GLsizei"/>
> +        <param name="depth" type="GLsizei"/>
> +        <param name="fixedSampleLocations" type="GLboolean"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="NamedBufferStorageMemEXT" es2="3.2" no_error="true">
> +        <param name="buffer" type="GLuint"/>
> +        <param name="size" type="GLsizeiptr"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TexStorageMem1DEXT">
> +        <param name="target" type="GLenum"/>
> +        <param name="levels" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="TextureStorageMem1DEXT">
> +        <param name="texture" type="GLuint"/>
> +        <param name="levels" type="GLsizei"/>
> +        <param name="internalFormat" type="GLenum"/>
> +        <param name="width" type="GLsizei"/>
> +        <param name="memory" type="GLuint"/>
> +        <param name="offset" type="GLuint64"/>
> +    </function>
> +
> +    <function name="GenSemaphoresEXT" es2="3.2">
> +        <param name="n" type="GLsizei"/>
> +        <param name="semaphores" type="GLuint *"/>
> +    </function>
> +
> +    <function name="DeleteSemaphoresEXT" es2="3.2">
> +        <param name="n" type="GLsizei"/>
> +        <param name="semaphores" type="const GLuint *"/>
> +    </function>
> +
> +    <function name="IsSemaphoreEXT" es2="3.2">
> +        <param name="semaphore" type="GLuint"/>
> +        <return type="GLboolean"/>
> +    </function>
> +
> +    <function name="SemaphoreParameterui64vEXT" es2="3.2">
> +        <param name="semaphore" type="GLuint"/>
> +        <param name="pname" type="GLenum"/>
> +        <param name="params" type="const GLuint64 *"/>
> +    </function>
> +
> +    <function name="GetSemaphoreParameterui64vEXT" es2="3.2">
> +        <param name="semaphore" type="GLuint"/>
> +        <param name="pname" type="GLenum"/>
> +        <param name="params" type="GLuint64 *"/>
> +    </function>
> +
> +    <function name="WaitSemaphoreEXT" es2="3.2">
> +        <param name="semaphore" type="GLuint"/>
> +        <param name="numBufferBarriers" type="GLuint"/>
> +        <param name="buffers" type="const GLuint *"/>
> +        <param name="numTextureBarriers" type="GLuint"/>
> +        <param name="textures" type="const GLuint *"/>
> +        <param name="srcLayouts" type="const GLenum *"/>
> +    </function>
> +
> +    <function name="SignalSemaphoreEXT" es2="3.2">
> +        <param name="semaphore" type="GLuint"/>
> +        <param name="numBufferBarriers" type="GLuint"/>
> +        <param name="buffers" type="const GLuint *"/>
> +        <param name="numTextureBarriers" type="GLuint"/>
> +        <param name="textures" type="const GLuint *"/>
> +        <param name="dstLayouts" type="const GLenum *"/>
> +    </function>
> +
> +</category>
> +
> +</OpenGLAPI>
> diff --git a/src/mapi/glapi/gen/EXT_external_objects_fd.xml b/src/mapi/glapi/gen/EXT_external_objects_fd.xml
> new file mode 100644
> index 0000000..6eaa3f5
> --- /dev/null
> +++ b/src/mapi/glapi/gen/EXT_external_objects_fd.xml
> @@ -0,0 +1,28 @@
> +<?xml version="1.0"?>
> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
> +
> +<!-- Note: no GLX protocol info yet. -->
> +
> +
> +<OpenGLAPI>
> +
> +<category name="EXT_external_objects_fd" number="504">
> +
> +    <enum name="HANDLE_TYPE_OPAQUE_FD_EXT"              value="0x9586"/>
> +
> +    <function name="ImportMemoryFdEXT" es2="3.2">
> +        <param name="memory" type="GLuint"/>
> +        <param name="size" type="GLuint64"/>
> +        <param name="handleType" type="GLenum"/>
> +        <param name="fd" type="GLint"/>
> +    </function>
> +
> +    <function name="ImportSemaphoreFdEXT" es2="3.2">
> +        <param name="semaphore" type="GLuint"/>
> +        <param name="handleType" type="GLenum"/>
> +        <param name="fd" type="GLint"/>
> +    </function>
> +
> +</category>
> +
> +</OpenGLAPI>
> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
> index bd04519..7f4a469 100644
> --- a/src/mapi/glapi/gen/Makefile.am
> +++ b/src/mapi/glapi/gen/Makefile.am
> @@ -192,6 +192,8 @@ API_XML = \
>   	APPLE_object_purgeable.xml \
>   	APPLE_vertex_array_object.xml \
>   	EXT_draw_buffers2.xml \
> +	EXT_external_objects.xml \
> +	EXT_external_objects_fd.xml \
>   	EXT_framebuffer_object.xml \
>   	EXT_gpu_shader4.xml \
>   	EXT_packed_depth_stencil.xml \
> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
> index 18839ec..6084518 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -13060,6 +13060,9 @@
>   
>   <xi:include href="NV_vdpau_interop.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>   
> +<xi:include href="EXT_external_objects.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
> +<xi:include href="EXT_external_objects_fd.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
> +
>   <xi:include href="GL4x.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>   
>   </OpenGLAPI>
> diff --git a/src/mapi/glapi/gen/gl_genexec.py b/src/mapi/glapi/gen/gl_genexec.py
> index 57e155b..b7b2232 100644
> --- a/src/mapi/glapi/gen/gl_genexec.py
> +++ b/src/mapi/glapi/gen/gl_genexec.py
> @@ -75,6 +75,7 @@ header = """/**
>   #include "main/errors.h"
>   #include "main/es1_conversion.h"
>   #include "main/eval.h"
> +#include "main/externalobjects.h"
>   #include "main/get.h"
>   #include "main/feedback.h"
>   #include "main/fog.h"
> diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources
> index 86fbf39..2ee1d2f 100644
> --- a/src/mesa/Makefile.sources
> +++ b/src/mesa/Makefile.sources
> @@ -85,6 +85,8 @@ MAIN_FILES = \
>   	main/extensions.h \
>   	main/extensions_table.c \
>   	main/extensions_table.h \
> +	main/externalobjects.c \
> +	main/externalobjects.h \
>   	main/fbobject.c \
>   	main/fbobject.h \
>   	main/feedback.c \
> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
> index cb666dc..720569d 100644
> --- a/src/mesa/main/bufferobj.c
> +++ b/src/mesa/main/bufferobj.c
> @@ -1886,6 +1886,22 @@ _mesa_BufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data,
>   
>   
>   void GLAPIENTRY
> +_mesa_BufferStorageMemEXT(GLenum target, GLsizeiptr size,
> +                          GLuint memory, GLuint64 offset)
> +{
> +
> +}
> +
> +
> +void GLAPIENTRY
> +_mesa_BufferStorageMemEXT_no_error(GLenum target, GLsizeiptr size,
> +                                   GLuint memory, GLuint64 offset)
> +{
> +
> +}
> +
> +
> +void GLAPIENTRY
>   _mesa_NamedBufferStorage_no_error(GLuint buffer, GLsizeiptr size,
>                                     const GLvoid *data, GLbitfield flags)
>   {
> @@ -1909,6 +1925,22 @@ _mesa_NamedBufferStorage(GLuint buffer, GLsizeiptr size, const GLvoid *data,
>   }
>   
>   
> +void GLAPIENTRY
> +_mesa_NamedBufferStorageMemEXT(GLuint buffer, GLsizeiptr size,
> +                               GLuint memory, GLuint64 offset)
> +{
> +
> +}
> +
> +
> +void GLAPIENTRY
> +_mesa_NamedBufferStorageMemEXT_no_error(GLuint buffer, GLsizeiptr size,
> +                                        GLuint memory, GLuint64 offset)
> +{
> +
> +}
> +
> +
>   void
>   _mesa_buffer_data(struct gl_context *ctx, struct gl_buffer_object *bufObj,
>                     GLenum target, GLsizeiptr size, const GLvoid *data,
> diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h
> index 662ceba..085305c 100644
> --- a/src/mesa/main/bufferobj.h
> +++ b/src/mesa/main/bufferobj.h
> @@ -185,13 +185,24 @@ _mesa_BufferStorage_no_error(GLenum target, GLsizeiptr size,
>   void GLAPIENTRY
>   _mesa_BufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data,
>                       GLbitfield flags);
> -
> +void GLAPIENTRY
> +_mesa_BufferStorageMemEXT(GLenum target, GLsizeiptr size,
> +                          GLuint memory, GLuint64 offset);
> +void GLAPIENTRY
> +_mesa_BufferStorageMemEXT_no_error(GLenum target, GLsizeiptr size,
> +                                   GLuint memory, GLuint64 offset);
>   void GLAPIENTRY
>   _mesa_NamedBufferStorage_no_error(GLuint buffer, GLsizeiptr size,
>                                     const GLvoid *data, GLbitfield flags);
>   void GLAPIENTRY
>   _mesa_NamedBufferStorage(GLuint buffer, GLsizeiptr size, const GLvoid *data,
>                            GLbitfield flags);
> +void GLAPIENTRY
> +_mesa_NamedBufferStorageMemEXT(GLuint buffer, GLsizeiptr size,
> +                               GLuint memory, GLuint64 offset);
> +void GLAPIENTRY
> +_mesa_NamedBufferStorageMemEXT_no_error(GLuint buffer, GLsizeiptr size,
> +                                        GLuint memory, GLuint64 offset);
>   
>   void GLAPIENTRY
>   _mesa_BufferData(GLenum target, GLsizeiptr size,
> diff --git a/src/mesa/main/externalobjects.c b/src/mesa/main/externalobjects.c
> new file mode 100644
> index 0000000..86404d2
> --- /dev/null
> +++ b/src/mesa/main/externalobjects.c
> @@ -0,0 +1,257 @@
> +/*
> + * Copyright © 2016 Red Hat.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> + * DEALINGS IN THE SOFTWARE.
> + */
> +
> +#include "externalobjects.h"
> +
> +void GLAPIENTRY
> +_mesa_DeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects)
> +{
> +
> +}
> +
> +GLboolean GLAPIENTRY
> +_mesa_IsMemoryObjectEXT(GLuint memoryObject)
> +{
> +   return GL_FALSE;
> +}
> +
> +void GLAPIENTRY
> +_mesa_CreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_MemoryObjectParameterivEXT(GLuint memoryObject,
> +                                 GLenum pname,
> +                                 const GLint *params)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_GetMemoryObjectParameterivEXT(GLuint memoryObject,
> +                                    GLenum pname,
> +                                    GLint *params)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TexStorageMem2DEXT(GLenum target,
> +                         GLsizei levels,
> +                         GLenum internalFormat,
> +                         GLsizei width,
> +                         GLsizei height,
> +                         GLuint memory,
> +                         GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TexStorageMem2DMultisampleEXT(GLenum target,
> +                                    GLsizei samples,
> +                                    GLenum internalFormat,
> +                                    GLsizei width,
> +                                    GLsizei height,
> +                                    GLboolean fixedSampleLocations,
> +                                    GLuint memory,
> +                                    GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TexStorageMem3DEXT(GLenum target,
> +                         GLsizei levels,
> +                         GLenum internalFormat,
> +                         GLsizei width,
> +                         GLsizei height,
> +                         GLsizei depth,
> +                         GLuint memory,
> +                         GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TexStorageMem3DMultisampleEXT(GLenum target,
> +                                    GLsizei samples,
> +                                    GLenum internalFormat,
> +                                    GLsizei width,
> +                                    GLsizei height,
> +                                    GLsizei depth,
> +                                    GLboolean fixedSampleLocations,
> +                                    GLuint memory,
> +                                    GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TextureStorageMem2DEXT(GLuint texture,
> +                             GLsizei levels,
> +                             GLenum internalFormat,
> +                             GLsizei width,
> +                             GLsizei height,
> +                             GLuint memory,
> +                             GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TextureStorageMem2DMultisampleEXT(GLuint texture,
> +                                        GLsizei samples,
> +                                        GLenum internalFormat,
> +                                        GLsizei width,
> +                                        GLsizei height,
> +                                        GLboolean fixedSampleLocations,
> +                                        GLuint memory,
> +                                        GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TextureStorageMem3DEXT(GLuint texture,
> +                             GLsizei levels,
> +                             GLenum internalFormat,
> +                             GLsizei width,
> +                             GLsizei height,
> +                             GLsizei depth,
> +                             GLuint memory,
> +                             GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TextureStorageMem3DMultisampleEXT(GLuint texture,
> +                                        GLsizei samples,
> +                                        GLenum internalFormat,
> +                                        GLsizei width,
> +                                        GLsizei height,
> +                                        GLsizei depth,
> +                                        GLboolean fixedSampleLocations,
> +                                        GLuint memory,
> +                                        GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TexStorageMem1DEXT(GLenum target,
> +                         GLsizei levels,
> +                         GLenum internalFormat,
> +                         GLsizei width,
> +                         GLuint memory,
> +                         GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_TextureStorageMem1DEXT(GLuint texture,
> +                             GLsizei levels,
> +                             GLenum internalFormat,
> +                             GLsizei width,
> +                             GLuint memory,
> +                             GLuint64 offset)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_GenSemaphoresEXT(GLsizei n, GLuint *semaphores)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_DeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores)
> +{
> +
> +}
> +
> +GLboolean GLAPIENTRY
> +_mesa_IsSemaphoreEXT(GLuint semaphore)
> +{
> +   return GL_FALSE;
> +}
> +
> +void GLAPIENTRY
> +_mesa_SemaphoreParameterui64vEXT(GLuint semaphore,
> +                                 GLenum pname,
> +                                 const GLuint64 *params)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_GetSemaphoreParameterui64vEXT(GLuint semaphore,
> +                                    GLenum pname,
> +                                    GLuint64 *params)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_WaitSemaphoreEXT(GLuint semaphore,
> +                       GLuint numBufferBarriers,
> +                       const GLuint *buffers,
> +                       GLuint numTextureBarriers,
> +                       const GLuint *textures,
> +                       const GLenum *srcLayouts)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_SignalSemaphoreEXT(GLuint semaphore,
> +                         GLuint numBufferBarriers,
> +                         const GLuint *buffers,
> +                         GLuint numTextureBarriers,
> +                         const GLuint *textures,
> +                         const GLenum *dstLayouts)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_ImportMemoryFdEXT(GLuint memory,
> +                        GLuint64 size,
> +                        GLenum handleType,
> +                        GLint fd)
> +{
> +
> +}
> +
> +void GLAPIENTRY
> +_mesa_ImportSemaphoreFdEXT(GLuint semaphore,
> +                           GLenum handleType,
> +                           GLint fd)
> +{
> +
> +}
> diff --git a/src/mesa/main/externalobjects.h b/src/mesa/main/externalobjects.h
> new file mode 100644
> index 0000000..f70be8e
> --- /dev/null
> +++ b/src/mesa/main/externalobjects.h
> @@ -0,0 +1,200 @@
> +/*
> + * Mesa 3-D graphics library
> + *
> + * Copyright (C) 2017 Red Hat.
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice shall be included
> + * in all copies or substantial portions of the Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> + * DEALINGS IN THE SOFTWARE.
> + *
> + * Authors: Dave Airlie <airlied at gmail.com>
> + * 	    Andres Rodriguez <andresx7 at gmail.com>
> + */
> +
> +/**
> + * \file externalobjects.h
> + *
> + * Declarations of functions related to the API interop extensions.
> + */
> +
> +#ifndef EXTERNALOBJECTS_H
> +#define EXTERNALOBJECTS_H
> +
> +#include "glheader.h"
> +
> +extern void GLAPIENTRY
> +_mesa_DeleteMemoryObjectsEXT(GLsizei n, const GLuint *memoryObjects);
> +
> +extern GLboolean GLAPIENTRY
> +_mesa_IsMemoryObjectEXT(GLuint memoryObject);
> +
> +extern void GLAPIENTRY
> +_mesa_CreateMemoryObjectsEXT(GLsizei n, GLuint *memoryObjects);
> +
> +extern void GLAPIENTRY
> +_mesa_MemoryObjectParameterivEXT(GLuint memoryObject,
> +                                 GLenum pname,
> +                                 const GLint *params);
> +
> +extern void GLAPIENTRY
> +_mesa_GetMemoryObjectParameterivEXT(GLuint memoryObject,
> +                                    GLenum pname,
> +                                    GLint *params);
> +
> +extern void GLAPIENTRY
> +_mesa_TexStorageMem2DEXT(GLenum target,
> +                         GLsizei levels,
> +                         GLenum internalFormat,
> +                         GLsizei width,
> +                         GLsizei height,
> +                         GLuint memory,
> +                         GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TexStorageMem2DMultisampleEXT(GLenum target,
> +                                    GLsizei samples,
> +                                    GLenum internalFormat,
> +                                    GLsizei width,
> +                                    GLsizei height,
> +                                    GLboolean fixedSampleLocations,
> +                                    GLuint memory,
> +                                    GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TexStorageMem3DEXT(GLenum target,
> +                         GLsizei levels,
> +                         GLenum internalFormat,
> +                         GLsizei width,
> +                         GLsizei height,
> +                         GLsizei depth,
> +                         GLuint memory,
> +                         GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TexStorageMem3DMultisampleEXT(GLenum target,
> +                                    GLsizei samples,
> +                                    GLenum internalFormat,
> +                                    GLsizei width,
> +                                    GLsizei height,
> +                                    GLsizei depth,
> +                                    GLboolean fixedSampleLocations,
> +                                    GLuint memory,
> +                                    GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TextureStorageMem2DEXT(GLuint texture,
> +                             GLsizei levels,
> +                             GLenum internalFormat,
> +                             GLsizei width,
> +                             GLsizei height,
> +                             GLuint memory,
> +                             GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TextureStorageMem2DMultisampleEXT(GLuint texture,
> +                                        GLsizei samples,
> +                                        GLenum internalFormat,
> +                                        GLsizei width,
> +                                        GLsizei height,
> +                                        GLboolean fixedSampleLocations,
> +                                        GLuint memory,
> +                                        GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TextureStorageMem3DEXT(GLuint texture,
> +                             GLsizei levels,
> +                             GLenum internalFormat,
> +                             GLsizei width,
> +                             GLsizei height,
> +                             GLsizei depth,
> +                             GLuint memory,
> +                             GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TextureStorageMem3DMultisampleEXT(GLuint texture,
> +                                        GLsizei samples,
> +                                        GLenum internalFormat,
> +                                        GLsizei width,
> +                                        GLsizei height,
> +                                        GLsizei depth,
> +                                        GLboolean fixedSampleLocations,
> +                                        GLuint memory,
> +                                        GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TexStorageMem1DEXT(GLenum target,
> +                         GLsizei levels,
> +                         GLenum internalFormat,
> +                         GLsizei width,
> +                         GLuint memory,
> +                         GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_TextureStorageMem1DEXT(GLuint texture,
> +                             GLsizei levels,
> +                             GLenum internalFormat,
> +                             GLsizei width,
> +                             GLuint memory,
> +                             GLuint64 offset);
> +
> +extern void GLAPIENTRY
> +_mesa_GenSemaphoresEXT(GLsizei n, GLuint *semaphores);
> +
> +extern void GLAPIENTRY
> +_mesa_DeleteSemaphoresEXT(GLsizei n, const GLuint *semaphores);
> +
> +extern GLboolean GLAPIENTRY
> +_mesa_IsSemaphoreEXT(GLuint semaphore);
> +
> +extern void GLAPIENTRY
> +_mesa_SemaphoreParameterui64vEXT(GLuint semaphore,
> +                                 GLenum pname,
> +                                 const GLuint64 *params);
> +
> +extern void GLAPIENTRY
> +_mesa_GetSemaphoreParameterui64vEXT(GLuint semaphore,
> +                                    GLenum pname,
> +                                    GLuint64 *params);
> +
> +extern void GLAPIENTRY
> +_mesa_WaitSemaphoreEXT(GLuint semaphore,
> +                       GLuint numBufferBarriers,
> +                       const GLuint *buffers,
> +                       GLuint numTextureBarriers,
> +                       const GLuint *textures,
> +                       const GLenum *srcLayouts);
> +
> +extern void GLAPIENTRY
> +_mesa_SignalSemaphoreEXT(GLuint semaphore,
> +                         GLuint numBufferBarriers,
> +                         const GLuint *buffers,
> +                         GLuint numTextureBarriers,
> +                         const GLuint *textures,
> +                         const GLenum *dstLayouts);
> +
> +extern void GLAPIENTRY
> +_mesa_ImportMemoryFdEXT(GLuint memory,
> +                        GLuint64 size,
> +                        GLenum handleType,
> +                        GLint fd);
> +
> +extern void GLAPIENTRY
> +_mesa_ImportSemaphoreFdEXT(GLuint semaphore,
> +                           GLenum handleType,
> +                           GLint fd);
> +
> +#endif
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index 68f520f..982f64a 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -1946,6 +1946,12 @@ _mesa_GetDoublev(GLenum pname, GLdouble *params)
>      }
>   }
>   
> +void GLAPIENTRY
> +_mesa_GetUnsignedBytevEXT(GLenum pname, GLubyte *data)
> +{
> +
> +}
> +
>   /**
>    * Convert a GL texture binding enum such as GL_TEXTURE_BINDING_2D
>    * into the corresponding Mesa texture target index.
> @@ -2652,6 +2658,12 @@ _mesa_GetDoublei_v(GLenum pname, GLuint index, GLdouble *params)
>   }
>   
>   void GLAPIENTRY
> +_mesa_GetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data)
> +{
> +
> +}
> +
> +void GLAPIENTRY
>   _mesa_GetFixedv(GLenum pname, GLfixed *params)
>   {
>      const struct value_desc *d;
> diff --git a/src/mesa/main/get.h b/src/mesa/main/get.h
> index ce97cc5..34cb938 100644
> --- a/src/mesa/main/get.h
> +++ b/src/mesa/main/get.h
> @@ -54,6 +54,9 @@ extern void GLAPIENTRY
>   _mesa_GetFixedv(GLenum pname, GLfixed *params);
>   
>   extern void GLAPIENTRY
> +_mesa_GetUnsignedBytevEXT(GLenum pname, GLubyte *data);
> +
> +extern void GLAPIENTRY
>   _mesa_GetBooleani_v( GLenum pname, GLuint index, GLboolean *params );
>   
>   extern void GLAPIENTRY
> @@ -71,6 +74,9 @@ _mesa_GetFloati_v(GLenum target, GLuint index, GLfloat *data);
>   extern void GLAPIENTRY
>   _mesa_GetDoublei_v(GLenum target, GLuint index, GLdouble *data);
>   
> +extern void GLAPIENTRY
> +_mesa_GetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data);
> +
>   extern const GLubyte * GLAPIENTRY
>   _mesa_GetString( GLenum name );
>   
> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
> index 724c22e..aea9ffb 100644
> --- a/src/mesa/main/tests/dispatch_sanity.cpp
> +++ b/src/mesa/main/tests/dispatch_sanity.cpp
> @@ -983,6 +983,38 @@ const struct function common_desktop_functions_possible[] = {
>      { "glVertexAttribL1ui64vARB", 40, -1 },
>      { "glGetVertexAttribLui64vARB", 40, -1 },
>   
> +   /* GL_EXT_external_objects */
> +   { "glGetUnsignedBytevEXT", 45, -1 },
> +   { "glGetUnsignedBytei_vEXT", 45, -1 },
> +   { "glDeleteMemoryObjectsEXT", 45, -1 },
> +   { "glIsMemoryObjectEXT", 45, -1 },
> +   { "glCreateMemoryObjectsEXT", 45, -1 },
> +   { "glMemoryObjectParameterivEXT", 45, -1 },
> +   { "glGetMemoryObjectParameterivEXT", 45, -1 },
> +   { "glTexStorageMem2DEXT", 45, -1 },
> +   { "glTexStorageMem2DMultisampleEXT", 45, -1 },
> +   { "glTexStorageMem3DEXT", 45, -1 },
> +   { "glTexStorageMem3DMultisampleEXT", 45, -1 },
> +   { "glBufferStorageMemEXT", 45, -1 },
> +   { "glTextureStorageMem2DEXT", 45, -1 },
> +   { "glTextureStorageMem2DMultisampleEXT", 45, -1 },
> +   { "glTextureStorageMem3DEXT", 45, -1 },
> +   { "glTextureStorageMem3DMultisampleEXT", 45, -1 },
> +   { "glNamedBufferStorageMemEXT", 45, -1 },
> +   { "glTexStorageMem1DEXT", 45, -1 },
> +   { "glTextureStorageMem1DEXT", 45, -1 },
> +   { "glGenSemaphoresEXT", 45, -1 },
> +   { "glDeleteSemaphoresEXT", 45, -1 },
> +   { "glIsSemaphoreEXT", 45, -1 },
> +   { "glSemaphoreParameterui64vEXT", 45, -1 },
> +   { "glGetSemaphoreParameterui64vEXT", 45, -1 },
> +   { "glWaitSemaphoreEXT", 45, -1 },
> +   { "glSignalSemaphoreEXT", 45, -1 },
> +
> +   /* GL_EXT_external_objects_fd */
> +   { "glImportMemoryFdEXT", 45, -1 },
> +   { "glImportSemaphoreFdEXT", 45, -1 },
> +
>      { NULL, 0, -1 }
>   };
>   
> 


More information about the mesa-dev mailing list