From: Andres Rodriguez <andre...@gmail.com> Includes implementation stubs.
Signed-off-by: Andres Rodriguez <andre...@gmail.com> Acked-by: Timothy Arceri <tarc...@itsqueeze.com> Acked-by: Samuel Pitoiset <samuel.pitoi...@gmail.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 0000000000..25e6879ec7 --- /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 0000000000..6eaa3f5b0c --- /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 bd04519f80..7f4a469303 100644 --- a/src/mapi/glapi/gen/Makefile.am +++ b/src/mapi/glapi/gen/Makefile.am @@ -185,20 +185,22 @@ API_XML = \ ARB_vertex_array_object.xml \ ARB_vertex_attrib_64bit.xml \ ARB_vertex_attrib_binding.xml \ ARB_viewport_array.xml \ AMD_draw_buffers_blend.xml \ AMD_performance_monitor.xml \ ARB_vertex_type_2_10_10_10_rev.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 \ EXT_provoking_vertex.xml \ EXT_separate_shader_objects.xml \ EXT_texture_array.xml \ EXT_texture_integer.xml \ EXT_transform_feedback.xml \ EXT_window_rectangles.xml \ GREMEDY_string_marker.xml \ diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 18839ec70c..608451820f 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -13053,13 +13053,16 @@ <xi:include href="NV_conditional_render.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="NV_primitive_restart.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="NV_texture_barrier.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="EXT_transform_feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <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 57e155bd1f..b7b22328ff 100644 --- a/src/mapi/glapi/gen/gl_genexec.py +++ b/src/mapi/glapi/gen/gl_genexec.py @@ -68,20 +68,21 @@ header = """/** #include "main/depth.h" #include "main/debug_output.h" #include "main/dlist.h" #include "main/drawpix.h" #include "main/drawtex.h" #include "main/rastpos.h" #include "main/enable.h" #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" #include "main/fbobject.h" #include "main/framebuffer.h" #include "main/genmipmap.h" #include "main/hint.h" #include "main/histogram.h" #include "main/imports.h" #include "main/light.h" diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources index 86fbf3974e..2ee1d2f814 100644 --- a/src/mesa/Makefile.sources +++ b/src/mesa/Makefile.sources @@ -78,20 +78,22 @@ MAIN_FILES = \ main/enums.h \ main/errors.c \ main/errors.h \ main/eval.c \ main/eval.h \ main/execmem.c \ main/extensions.c \ 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 \ main/feedback.h \ main/ff_fragment_shader.cpp \ main/ffvertex_prog.c \ main/ffvertex_prog.h \ main/fog.c \ main/fog.h \ main/format_fallback.c \ diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index cd561a0a27..2660e1389c 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -1878,20 +1878,36 @@ _mesa_BufferStorage_no_error(GLenum target, GLsizeiptr size, void GLAPIENTRY _mesa_BufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data, GLbitfield flags) { inlined_buffer_storage(target, 0, size, data, flags, false, false, "glBufferStorage"); } 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) { /* In direct state access, buffer objects have an unspecified target * since they are not required to be bound. */ inlined_buffer_storage(GL_NONE, buffer, size, data, flags, true, true, "glNamedBufferStorage"); } @@ -1901,20 +1917,36 @@ _mesa_NamedBufferStorage(GLuint buffer, GLsizeiptr size, const GLvoid *data, GLbitfield flags) { /* In direct state access, buffer objects have an unspecified target * since they are not required to be bound. */ inlined_buffer_storage(GL_NONE, buffer, size, data, flags, true, false, "glNamedBufferStorage"); } +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, GLenum usage, const char *func) { bool valid_usage; if (MESA_VERBOSE & VERBOSE_API) { _mesa_debug(ctx, "%s(%s, %ld, %p, %s)\n", func, diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h index 662ceba8a6..085305c810 100644 --- a/src/mesa/main/bufferobj.h +++ b/src/mesa/main/bufferobj.h @@ -178,27 +178,38 @@ _mesa_CreateBuffers(GLsizei n, GLuint *buffers); GLboolean GLAPIENTRY _mesa_IsBuffer(GLuint buffer); void GLAPIENTRY _mesa_BufferStorage_no_error(GLenum target, GLsizeiptr size, const GLvoid *data, GLbitfield flags); 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, const GLvoid *data, GLenum usage); void GLAPIENTRY _mesa_NamedBufferData(GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage); void GLAPIENTRY diff --git a/src/mesa/main/externalobjects.c b/src/mesa/main/externalobjects.c new file mode 100644 index 0000000000..86404d2a8d --- /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 0000000000..f70be8e8ab --- /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 <airl...@gmail.com> + * Andres Rodriguez <andre...@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 68f520f14e..982f64a08a 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -1939,20 +1939,26 @@ _mesa_GetDoublev(GLenum pname, GLdouble *params) case TYPE_BIT_4: case TYPE_BIT_5: case TYPE_BIT_6: case TYPE_BIT_7: shift = d->type - TYPE_BIT_0; params[0] = (*(GLbitfield *) p >> shift) & 1; break; } } +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. * \return TEXTURE_x_INDEX or -1 if binding is invalid */ static int tex_binding_to_index(const struct gl_context *ctx, GLenum binding) { switch (binding) { case GL_TEXTURE_BINDING_1D: @@ -2645,20 +2651,26 @@ _mesa_GetDoublei_v(GLenum pname, GLuint index, GLdouble *params) for (i = 0; i < 16; i++) params[i] = (GLdouble) m->m[transpose[i]]; break; default: ; } } void GLAPIENTRY +_mesa_GetUnsignedBytei_vEXT(GLenum target, GLuint index, GLubyte *data) +{ + +} + +void GLAPIENTRY _mesa_GetFixedv(GLenum pname, GLfixed *params) { const struct value_desc *d; union value v; GLmatrix *m; int shift, i; void *p; d = find_value("glGetDoublev", pname, &p, &v); switch (d->type) { diff --git a/src/mesa/main/get.h b/src/mesa/main/get.h index ce97cc586d..34cb9381fe 100644 --- a/src/mesa/main/get.h +++ b/src/mesa/main/get.h @@ -47,37 +47,43 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params ); extern void GLAPIENTRY _mesa_GetIntegerv( GLenum pname, GLint *params ); extern void GLAPIENTRY _mesa_GetInteger64v( GLenum pname, GLint64 *params ); 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 _mesa_GetIntegeri_v( GLenum pname, GLuint index, GLint *params ); extern void GLAPIENTRY _mesa_GetInteger64i_v( GLenum pname, GLuint index, GLint64 *params ); extern void GLAPIENTRY _mesa_GetPointerv( GLenum pname, GLvoid **params ); extern void GLAPIENTRY _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 ); extern const GLubyte * GLAPIENTRY _mesa_GetStringi(GLenum name, GLuint index); extern GLenum GLAPIENTRY _mesa_GetError( void ); /* GL_ARB_robustness */ diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 724c22ee9b..aea9ffb37f 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -976,20 +976,52 @@ const struct function common_desktop_functions_possible[] = { { "glMakeImageHandleNonResidentARB", 40, -1 }, { "glIsImageHandleResidentARB", 40, -1 }, { "glUniformHandleui64ARB", 40, -1 }, { "glUniformHandleui64vARB", 40, -1 }, { "glProgramUniformHandleui64ARB", 40, -1 }, { "glProgramUniformHandleui64vARB", 40, -1 }, { "glVertexAttribL1ui64ARB", 40, -1 }, { "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 } }; const struct function gl_compatibility_functions_possible[] = { { "glBindRenderbufferEXT", 10, -1 }, { "glBindFramebufferEXT", 10, -1 }, { "glNewList", 10, _gloffset_NewList }, { "glEndList", 10, _gloffset_EndList }, { "glCallList", 10, _gloffset_CallList }, { "glCallLists", 10, _gloffset_CallLists }, -- 2.13.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev