[Mesa-dev] [PATCH] mesa: add APPLE_vertex_array_object stubs

Ian Romanick idr at freedesktop.org
Mon May 22 17:26:48 UTC 2017


WTF?  I gave review feedback on IRC, and you said you were going to send
a different patch... yet this patch landed.  If you're not going to take
review feedback, why do you ask for it?

On 05/18/2017 07:50 PM, Timothy Arceri wrote:
> APPLE_vertex_array_object support was removed in 7927d0378fc7.
> However it turns out we can't remove the functions because this
> can cause issues when libglapi is used together with DRI1 drivers
> which were branched off from master a few years ago.
> ---
>  src/mapi/glapi/gen/APPLE_vertex_array_object.xml | 27 ++++++++++++++++++++++++
>  src/mapi/glapi/gen/Makefile.am                   |  1 +
>  src/mapi/glapi/gen/gl_API.xml                    |  2 +-
>  src/mapi/glapi/tests/check_table.cpp             |  2 ++
>  src/mesa/main/arrayobj.c                         | 16 ++++++++++++++
>  src/mesa/main/arrayobj.h                         |  4 ++++
>  src/mesa/main/tests/dispatch_sanity.cpp          |  2 ++
>  7 files changed, 53 insertions(+), 1 deletion(-)
>  create mode 100644 src/mapi/glapi/gen/APPLE_vertex_array_object.xml
> 
> diff --git a/src/mapi/glapi/gen/APPLE_vertex_array_object.xml b/src/mapi/glapi/gen/APPLE_vertex_array_object.xml
> new file mode 100644
> index 0000000..7312f9b
> --- /dev/null
> +++ b/src/mapi/glapi/gen/APPLE_vertex_array_object.xml
> @@ -0,0 +1,27 @@
> +<?xml version="1.0"?>
> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
> +
> +<OpenGLAPI>
> +<category name="GL_APPLE_vertex_array_object" number="273">
> +    <enum name="VERTEX_ARRAY_BINDING_APPLE"               value="0x85B5"/>
> +
> +    <function name="BindVertexArrayAPPLE" deprecated="3.1">
> +        <param name="array" type="GLuint"/>
> +    </function>
> +
> +    <function name="DeleteVertexArraysAPPLE" alias="DeleteVertexArrays">
> +        <param name="n" type="GLsizei"/>
> +	<param name="arrays" type="const GLuint *"/>
> +    </function>
> +
> +    <function name="GenVertexArraysAPPLE" deprecated="3.1">
> +        <param name="n" type="GLsizei"/>
> +	<param name="arrays" type="GLuint *" count="n" output="true"/>
> +    </function>
> +
> +    <function name="IsVertexArrayAPPLE" alias="IsVertexArray">
> +        <param name="array" type="GLuint"/>
> +	<return type="GLboolean"/>
> +    </function>
> +</category>
> +</OpenGLAPI>
> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
> index ecd1c71..33139bd 100644
> --- a/src/mapi/glapi/gen/Makefile.am
> +++ b/src/mapi/glapi/gen/Makefile.am
> @@ -182,20 +182,21 @@ API_XML = \
>  	ARB_texture_view.xml \
>  	ARB_uniform_buffer_object.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_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 \
> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
> index 762fb5a..630d6b8 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -12524,21 +12524,21 @@
>          <size name="Get" mode="get"/>
>      </enum>
>  
>      <function name="ActiveStencilFaceEXT" deprecated="3.1">
>          <param name="face" type="GLenum"/>
>          <glx rop="4220"/>
>      </function>
>  </category>
>  
>  <xi:include href="APPLE_object_purgeable.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
> -<!-- Extension number 273 obsolete APPLE_vertex_array_object. -->
> +<xi:include href="APPLE_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>  
>  <category name="GL_APPLE_ycbcr_422" number="275">
>      <enum name="YCBCR_422_APPLE"                          value="0x85B9"/>
>      <enum name="UNSIGNED_SHORT_8_8_APPLE"                 value="0x85BA"/>
>      <enum name="UNSIGNED_SHORT_8_8_REV_APPLE"             value="0x85BB"/>
>  </category>
>  
>  <category name="GL_S3_s3tc" number="276">
>      <enum name="RGB_S3TC"                                 value="0x83A0"/>
>      <enum name="RGB4_S3TC"                                value="0x83A1"/>
> diff --git a/src/mapi/glapi/tests/check_table.cpp b/src/mapi/glapi/tests/check_table.cpp
> index a1041bce..09bf4f3 100644
> --- a/src/mapi/glapi/tests/check_table.cpp
> +++ b/src/mapi/glapi/tests/check_table.cpp
> @@ -1397,21 +1397,23 @@ const struct name_offset known_dispatch[] = {
>     { "glColorFragmentOp3ATI", _O(ColorFragmentOp3ATI) },
>     { "glDeleteFragmentShaderATI", _O(DeleteFragmentShaderATI) },
>     { "glEndFragmentShaderATI", _O(EndFragmentShaderATI) },
>     { "glGenFragmentShadersATI", _O(GenFragmentShadersATI) },
>     { "glPassTexCoordATI", _O(PassTexCoordATI) },
>     { "glSampleMapATI", _O(SampleMapATI) },
>     { "glSetFragmentShaderConstantATI", _O(SetFragmentShaderConstantATI) },
>     { "glPointParameteri", _O(PointParameteri) },
>     { "glPointParameteriv", _O(PointParameteriv) },
>     { "glActiveStencilFaceEXT", _O(ActiveStencilFaceEXT) },
> +   { "glBindVertexArrayAPPLE", _O(BindVertexArrayAPPLE) },
>     { "glDeleteVertexArrays", _O(DeleteVertexArrays) },
> +   { "glGenVertexArraysAPPLE", _O(GenVertexArraysAPPLE) },
>     { "glIsVertexArray", _O(IsVertexArray) },
>     { "glGetProgramNamedParameterdvNV", _O(GetProgramNamedParameterdvNV) },
>     { "glGetProgramNamedParameterfvNV", _O(GetProgramNamedParameterfvNV) },
>     { "glProgramNamedParameter4dNV", _O(ProgramNamedParameter4dNV) },
>     { "glProgramNamedParameter4dvNV", _O(ProgramNamedParameter4dvNV) },
>     { "glProgramNamedParameter4fNV", _O(ProgramNamedParameter4fNV) },
>     { "glProgramNamedParameter4fvNV", _O(ProgramNamedParameter4fvNV) },
>     { "glPrimitiveRestartIndex", _O(PrimitiveRestartIndex) },
>     { "glPrimitiveRestartNV", _O(PrimitiveRestartNV) },
>     { "glDepthBoundsEXT", _O(DepthBoundsEXT) },
> diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c
> index 82c00fb..b986229 100644
> --- a/src/mesa/main/arrayobj.c
> +++ b/src/mesa/main/arrayobj.c
> @@ -466,20 +466,28 @@ _mesa_BindVertexArray( GLuint id )
>         */
>        ctx->Array._DrawArrays = NULL;
>        ctx->Array.DrawMethod = DRAW_NONE;
>     }
>  
>     ctx->NewState |= _NEW_ARRAY;
>     _mesa_reference_vao(ctx, &ctx->Array.VAO, newObj);
>  }
>  
>  
> +void GLAPIENTRY
> +_mesa_BindVertexArrayAPPLE(GLuint id)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   _mesa_problem(ctx, "APPLE_vertex_array_object is not supported!");
> +}
> +
> +
>  /**
>   * Delete a set of array objects.
>   *
>   * \param n      Number of array objects to delete.
>   * \param ids    Array of \c n array object IDs.
>   */
>  void GLAPIENTRY
>  _mesa_DeleteVertexArrays(GLsizei n, const GLuint *ids)
>  {
>     GET_CURRENT_CONTEXT(ctx);
> @@ -572,20 +580,28 @@ gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays,
>   * All arrays will be required to live in VBOs.
>   */
>  void GLAPIENTRY
>  _mesa_GenVertexArrays(GLsizei n, GLuint *arrays)
>  {
>     GET_CURRENT_CONTEXT(ctx);
>     gen_vertex_arrays(ctx, n, arrays, false, "glGenVertexArrays");
>  }
>  
>  
> +void GLAPIENTRY
> +_mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *arrays)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   _mesa_problem(ctx, "APPLE_vertex_array_object is not supported!");
> +}
> +
> +
>  /**
>   * ARB_direct_state_access
>   * Generates ID's and creates the array objects.
>   */
>  void GLAPIENTRY
>  _mesa_CreateVertexArrays(GLsizei n, GLuint *arrays)
>  {
>     GET_CURRENT_CONTEXT(ctx);
>     gen_vertex_arrays(ctx, n, arrays, true, "glCreateVertexArrays");
>  }
> diff --git a/src/mesa/main/arrayobj.h b/src/mesa/main/arrayobj.h
> index 1794968..097027b 100644
> --- a/src/mesa/main/arrayobj.h
> +++ b/src/mesa/main/arrayobj.h
> @@ -89,23 +89,27 @@ _mesa_all_varyings_in_vbos(const struct gl_vertex_array_object *vao);
>  extern bool
>  _mesa_all_buffers_are_unmapped(const struct gl_vertex_array_object *vao);
>  
>  /*
>   * API functions
>   */
>  
>  
>  void GLAPIENTRY _mesa_BindVertexArray( GLuint id );
>  
> +void GLAPIENTRY _mesa_BindVertexArrayAPPLE(GLuint id);
> +
>  void GLAPIENTRY _mesa_DeleteVertexArrays(GLsizei n, const GLuint *ids);
>  
>  void GLAPIENTRY _mesa_GenVertexArrays(GLsizei n, GLuint *arrays);
>  
> +void GLAPIENTRY _mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *buffer);
> +
>  void GLAPIENTRY _mesa_CreateVertexArrays(GLsizei n, GLuint *arrays);
>  
>  GLboolean GLAPIENTRY _mesa_IsVertexArray( GLuint id );
>  
>  void GLAPIENTRY _mesa_VertexArrayElementBuffer(GLuint vaobj, GLuint buffer);
>  
>  void GLAPIENTRY _mesa_GetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param);
>  
>  #endif /* ARRAYOBJ_H */
> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
> index b33043e..12a9ee7 100644
> --- a/src/mesa/main/tests/dispatch_sanity.cpp
> +++ b/src/mesa/main/tests/dispatch_sanity.cpp
> @@ -962,20 +962,22 @@ const struct function common_desktop_functions_possible[] = {
>     { "glBlendBarrierKHR", 20, -1 },
>  
>     /* GL_ARB_sparse_buffer */
>     { "glBufferPageCommitmentARB", 43, -1 },
>     { "glNamedBufferPageCommitmentARB", 43, -1 },
>  
>     { NULL, 0, -1 }
>  };
>  
>  const struct function gl_compatibility_functions_possible[] = {
> +   { "glBindVertexArrayAPPLE", 10, -1 },
> +   { "glGenVertexArraysAPPLE", 10, -1 },
>     { "glBindRenderbufferEXT", 10, -1 },
>     { "glBindFramebufferEXT", 10, -1 },
>     { "glNewList", 10, _gloffset_NewList },
>     { "glEndList", 10, _gloffset_EndList },
>     { "glCallList", 10, _gloffset_CallList },
>     { "glCallLists", 10, _gloffset_CallLists },
>     { "glDeleteLists", 10, _gloffset_DeleteLists },
>     { "glGenLists", 10, _gloffset_GenLists },
>     { "glListBase", 10, _gloffset_ListBase },
>     { "glBegin", 10, _gloffset_Begin },
> 



More information about the mesa-dev mailing list