[Mesa-dev] [PATCH 14/16] main: Added entry point for glCreateRenderbuffers

Laura Ekstrand laura at jlekstrand.net
Thu Feb 26 16:07:27 PST 2015


Reviewed-by: Laura Ekstrand <laura at jlekstrand.net>

On Mon, Feb 16, 2015 at 6:14 AM, Martin Peres <martin.peres at linux.intel.com>
wrote:

> Signed-off-by: Martin Peres <martin.peres at linux.intel.com>
> ---
>  src/mapi/glapi/gen/ARB_direct_state_access.xml |  7 +++++
>  src/mesa/main/fbobject.c                       | 37
> +++++++++++++++++++++-----
>  src/mesa/main/fbobject.h                       |  3 +++
>  src/mesa/main/tests/dispatch_sanity.cpp        |  1 +
>  4 files changed, 41 insertions(+), 7 deletions(-)
>
> diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml
> b/src/mapi/glapi/gen/ARB_direct_state_access.xml
> index db85ea3..8c9ddbb 100644
> --- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
> +++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
> @@ -48,6 +48,13 @@
>        <param name="param" type="GLint64 *" />
>     </function>
>
> +   <!-- Renderbuffer object functions -->
> +
> +   <function name="CreateRenderbuffers" offset="assign">
> +      <param name="n" type="GLsizei" />
> +      <param name="renderbuffers" type="GLuint *" />
> +   </function>
> +
>     <!-- Texture object functions -->
>
>     <function name="CreateTextures" offset="assign">
> diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
> index 09c931d..c93e188 100644
> --- a/src/mesa/main/fbobject.c
> +++ b/src/mesa/main/fbobject.c
> @@ -1383,16 +1383,17 @@ _mesa_DeleteRenderbuffers(GLsizei n, const GLuint
> *renderbuffers)
>     }
>  }
>
> -
> -void GLAPIENTRY
> -_mesa_GenRenderbuffers(GLsizei n, GLuint *renderbuffers)
> +static void
> +create_render_buffers(struct gl_context *ctx, GLsizei n, GLuint
> *renderbuffers,
> +                      bool dsa)
>  {
> -   GET_CURRENT_CONTEXT(ctx);
> +   struct gl_renderbuffer *obj;
>     GLuint first;
>     GLint i;
>
>     if (n < 0) {
> -      _mesa_error(ctx, GL_INVALID_VALUE, "glGenRenderbuffersEXT(n)");
> +      _mesa_error(ctx, GL_INVALID_VALUE, "%s(n<0)",
> +                  dsa ? "glCreateRenderbuffers" : "glGenRenderbuffers");
>        return;
>     }
>
> @@ -1404,14 +1405,36 @@ _mesa_GenRenderbuffers(GLsizei n, GLuint
> *renderbuffers)
>     for (i = 0; i < n; i++) {
>        GLuint name = first + i;
>        renderbuffers[i] = name;
> -      /* insert dummy placeholder into hash table */
> +
> +      if (dsa) {
> +         obj = _mesa_new_renderbuffer(ctx, name);
> +      } else {
> +         obj = &DummyRenderbuffer;
> +      }
> +      /* insert the object into the hash table */
>        mtx_lock(&ctx->Shared->Mutex);
> -      _mesa_HashInsert(ctx->Shared->RenderBuffers, name,
> &DummyRenderbuffer);
> +      _mesa_HashInsert(ctx->Shared->RenderBuffers, name, obj);
>        mtx_unlock(&ctx->Shared->Mutex);
>     }
>  }
>
>
> +void GLAPIENTRY
> +_mesa_GenRenderbuffers(GLsizei n, GLuint *renderbuffers)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   create_render_buffers(ctx, n, renderbuffers, false);
> +}
> +
> +
> +void GLAPIENTRY
> +_mesa_CreateRenderbuffers(GLsizei n, GLuint *renderbuffers)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   create_render_buffers(ctx, n, renderbuffers, true);
> +}
> +
> +
>  /**
>   * Given an internal format token for a render buffer, return the
>   * corresponding base format (one of GL_RGB, GL_RGBA, GL_STENCIL_INDEX,
> diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h
> index 77fdef4..9ab6b0b 100644
> --- a/src/mesa/main/fbobject.h
> +++ b/src/mesa/main/fbobject.h
> @@ -115,6 +115,9 @@ extern void GLAPIENTRY
>  _mesa_GenRenderbuffers(GLsizei n, GLuint *renderbuffers);
>
>  extern void GLAPIENTRY
> +_mesa_CreateRenderbuffers(GLsizei n, GLuint *renderbuffers);
> +
> +extern void GLAPIENTRY
>  _mesa_RenderbufferStorage(GLenum target, GLenum internalformat,
>                               GLsizei width, GLsizei height);
>
> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp
> b/src/mesa/main/tests/dispatch_sanity.cpp
> index cfbd1a2..34e52d2 100644
> --- a/src/mesa/main/tests/dispatch_sanity.cpp
> +++ b/src/mesa/main/tests/dispatch_sanity.cpp
> @@ -961,6 +961,7 @@ const struct function gl_core_functions_possible[] = {
>     { "glGetTransformFeedbackiv", 45, -1 },
>     { "glGetTransformFeedbacki_v", 45, -1 },
>     { "glGetTransformFeedbacki64_v", 45, -1 },
> +   { "glCreateRenderbuffers", 45, -1 },
>     { "glCreateTextures", 45, -1 },
>     { "glTextureStorage1D", 45, -1 },
>     { "glTextureStorage2D", 45, -1 },
> --
> 2.3.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150226/6fc20735/attachment-0001.html>


More information about the mesa-dev mailing list