On 20/02/2015 20:03, Laura Ekstrand wrote:
This naming convention tries to match the corresponding DD table entry.

There's a thread discussing the naming convention for external software fallback functions. Feel free to add your input to the discussion there :)

Ack, no strong opinion here :)


On Fri, Feb 20, 2015 at 6:18 AM, Martin Peres <martin.pe...@free.fr <mailto:martin.pe...@free.fr>> wrote:

    On 12/02/2015 04:05, Laura Ekstrand wrote:

        v2: review by Jason Ekstrand
            - Split refactor of clear buffer sub data from addition of
        DSA entry
              points.
        ---
          src/mesa/main/bufferobj.c                    | 125
        ++++++++++++---------------
          src/mesa/main/bufferobj.h                    |  19 ++--
          src/mesa/state_tracker/st_cb_bufferobjects.c |   4 +-
          3 files changed, 69 insertions(+), 79 deletions(-)

        diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
        index 7225b64..b8fa917 100644
        --- a/src/mesa/main/bufferobj.c
        +++ b/src/mesa/main/bufferobj.c
        @@ -660,11 +660,11 @@ _mesa_buffer_get_subdata( struct
        gl_context *ctx, GLintptrARB offset,
           * dd_function_table::ClearBufferSubData.
           */
          void
        -_mesa_buffer_clear_subdata(struct gl_context *ctx,
        -                           GLintptr offset, GLsizeiptr size,
        -                           const GLvoid *clearValue,
        -                           GLsizeiptr clearValueSize,
        -                           struct gl_buffer_object *bufObj)
        +_mesa_ClearBufferSubData_sw(struct gl_context *ctx,


    Interesting choice of naming the function as a mix of camel case
    and underscores.

    Since it is an internal function, shouldn't it only have underscores?

    Other than that:

    Reviewed-by: Martin Peres <martin.pe...@linux.intel.com
    <mailto:martin.pe...@linux.intel.com>>

        +                            GLintptr offset, GLsizeiptr size,
        +                            const GLvoid *clearValue,
        +                            GLsizeiptr clearValueSize,
        +                            struct gl_buffer_object *bufObj)
          {
             GLsizeiptr i;
             GLubyte *dest;
        @@ -1113,7 +1113,7 @@
        _mesa_init_buffer_object_functions(struct dd_function_table
        *driver)
             driver->UnmapBuffer = _mesa_buffer_unmap;
               /* GL_ARB_clear_buffer_object */
        -   driver->ClearBufferSubData = _mesa_buffer_clear_subdata;
        +   driver->ClearBufferSubData = _mesa_ClearBufferSubData_sw;
               /* GL_ARB_map_buffer_range */
             driver->MapBufferRange = _mesa_buffer_map_range;
        @@ -1671,57 +1671,77 @@ _mesa_GetBufferSubData(GLenum target,
        GLintptr offset,
             ctx->Driver.GetBufferSubData( ctx, offset, size, data,
        bufObj );
          }
          -
        -void GLAPIENTRY
        -_mesa_ClearBufferData(GLenum target, GLenum internalformat,
        GLenum format,
        -                      GLenum type, const GLvoid* data)
        +/**
        + * \param subdata   true if caller is *SubData, false if *Data
        + */
        +void
        +_mesa_clear_buffer_sub_data(struct gl_context *ctx,
        +                            struct gl_buffer_object *bufObj,
        +                            GLenum internalformat,
        +                            GLintptr offset, GLsizeiptr size,
        +                            GLenum format, GLenum type,
        +                            const GLvoid *data,
        +                            const char *func, bool subdata)
          {
        -   GET_CURRENT_CONTEXT(ctx);
        -   struct gl_buffer_object* bufObj;
             mesa_format mesaFormat;
             GLubyte clearValue[MAX_PIXEL_BYTES];
             GLsizeiptr clearValueSize;
          -   bufObj = get_buffer(ctx, "glClearBufferData", target,
        GL_INVALID_VALUE);
        -   if (!bufObj) {
        -      return;
        -   }
        -
        -   if (_mesa_check_disallowed_mapping(bufObj)) {
        -      _mesa_error(ctx, GL_INVALID_OPERATION,
        -                  "glClearBufferData(buffer currently mapped)");
        +   /* This checks for disallowed mappings. */
        +   if (!buffer_object_subdata_range_good(ctx, bufObj, offset,
        size,
        +                                         subdata, func)) {
                return;
             }
               mesaFormat = validate_clear_buffer_format(ctx,
        internalformat,
        -                                             format, type,
        -  "glClearBufferData");
        +                                             format, type, func);
        +
             if (mesaFormat == MESA_FORMAT_NONE) {
                return;
             }
               clearValueSize = _mesa_get_format_bytes(mesaFormat);
        -   if (bufObj->Size % clearValueSize != 0) {
        +   if (offset % clearValueSize != 0 || size % clearValueSize
        != 0) {
                _mesa_error(ctx, GL_INVALID_VALUE,
        -                  "glClearBufferData(size is not a multiple of "
        -                  "internalformat size)");
        +                  "%s(offset or size is not a multiple of "
        +                  "internalformat size)", func);
                return;
             }
               if (data == NULL) {
                /* clear to zeros, per the spec */
        -      ctx->Driver.ClearBufferSubData(ctx, 0, bufObj->Size,
        -                                     NULL, clearValueSize,
        bufObj);
        +      if (size > 0) {
        +         ctx->Driver.ClearBufferSubData(ctx, offset, size,
        +                                        NULL, clearValueSize,
        bufObj);
        +      }
                return;
             }
               if (!convert_clear_buffer_data(ctx, mesaFormat, clearValue,
        -                                  format, type, data,
        "glClearBufferData")) {
        +                                  format, type, data, func)) {
                return;
             }
          -   ctx->Driver.ClearBufferSubData(ctx, 0, bufObj->Size,
        -                                  clearValue, clearValueSize,
        bufObj);
        +   if (size > 0) {
        +      ctx->Driver.ClearBufferSubData(ctx, offset, size,
        +                                     clearValue,
        clearValueSize, bufObj);
        +   }
        +}
        +
        +void GLAPIENTRY
        +_mesa_ClearBufferData(GLenum target, GLenum internalformat,
        GLenum format,
        +                      GLenum type, const GLvoid *data)
        +{
        +   GET_CURRENT_CONTEXT(ctx);
        +   struct gl_buffer_object *bufObj;
        +
        +   bufObj = get_buffer(ctx, "glClearBufferData", target,
        GL_INVALID_VALUE);
        +   if (!bufObj)
        +      return;
        +
        +   _mesa_clear_buffer_sub_data(ctx, bufObj, internalformat,
        0, bufObj->Size,
        +                               format, type, data,
        +                               "glClearBufferData", false);
          }
            @@ -1733,53 +1753,14 @@ _mesa_ClearBufferSubData(GLenum
        target, GLenum internalformat,
          {
             GET_CURRENT_CONTEXT(ctx);
             struct gl_buffer_object* bufObj;
        -   mesa_format mesaFormat;
        -   GLubyte clearValue[MAX_PIXEL_BYTES];
        -   GLsizeiptr clearValueSize;
               bufObj = get_buffer(ctx, "glClearBufferSubData",
        target, GL_INVALID_VALUE);
             if (!bufObj)
                return;
          -   if (!buffer_object_subdata_range_good(ctx, bufObj,
        offset, size,
        -                                         true,
        "glClearBufferSubData")) {
        -      return;
        -   }
        -
        -   mesaFormat = validate_clear_buffer_format(ctx, internalformat,
        -                                             format, type,
        -  "glClearBufferSubData");
        -   if (mesaFormat == MESA_FORMAT_NONE) {
        -      return;
        -   }
        -
        -   clearValueSize = _mesa_get_format_bytes(mesaFormat);
        -   if (offset % clearValueSize != 0 || size % clearValueSize
        != 0) {
        -      _mesa_error(ctx, GL_INVALID_VALUE,
        -                  "glClearBufferSubData(offset or size is not
        a multiple of "
        -                  "internalformat size)");
        -      return;
        -   }
        -
        -   if (data == NULL) {
        -      /* clear to zeros, per the spec */
        -      if (size > 0) {
        -         ctx->Driver.ClearBufferSubData(ctx, offset, size,
        -                                        NULL, clearValueSize,
        bufObj);
        -      }
        -      return;
        -   }
        -
        -   if (!convert_clear_buffer_data(ctx, mesaFormat, clearValue,
        -                                  format, type, data,
        - "glClearBufferSubData")) {
        -      return;
        -   }
        -
        -   if (size > 0) {
        -      ctx->Driver.ClearBufferSubData(ctx, offset, size,
        -                                     clearValue,
        clearValueSize, bufObj);
        -   }
        +   _mesa_clear_buffer_sub_data(ctx, bufObj, internalformat,
        offset, size,
        +                               format, type, data,
        +  "glClearBufferSubData", true);
          }
            diff --git a/src/mesa/main/bufferobj.h
        b/src/mesa/main/bufferobj.h
        index 7db5c98..5911270 100644
        --- a/src/mesa/main/bufferobj.h
        +++ b/src/mesa/main/bufferobj.h
        @@ -156,11 +156,20 @@ _mesa_copy_buffer_sub_data(struct
        gl_context *ctx,
                                     GLsizeiptr size, const char *func);
            extern void
        -_mesa_buffer_clear_subdata(struct gl_context *ctx,
        -                           GLintptr offset, GLsizeiptr size,
        -                           const GLvoid *clearValue,
        -                           GLsizeiptr clearValueSize,
        -                           struct gl_buffer_object *bufObj);
        +_mesa_ClearBufferSubData_sw(struct gl_context *ctx,
        +                            GLintptr offset, GLsizeiptr size,
        +                            const GLvoid *clearValue,
        +                            GLsizeiptr clearValueSize,
        +                            struct gl_buffer_object *bufObj);
        +
        +extern void
        +_mesa_clear_buffer_sub_data(struct gl_context *ctx,
        +                            struct gl_buffer_object *bufObj,
        +                            GLenum internalformat,
        +                            GLintptr offset, GLsizeiptr size,
        +                            GLenum format, GLenum type,
        +                            const GLvoid *data,
        +                            const char *func, bool subdata);
            /*
           * API functions
        diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c
        b/src/mesa/state_tracker/st_cb_bufferobjects.c
        index 90f786c..b7096f7 100644
        --- a/src/mesa/state_tracker/st_cb_bufferobjects.c
        +++ b/src/mesa/state_tracker/st_cb_bufferobjects.c
        @@ -477,8 +477,8 @@ st_clear_buffer_subdata(struct gl_context
        *ctx,
             static const char zeros[16] = {0};
               if (!pipe->clear_buffer) {
        -      _mesa_buffer_clear_subdata(ctx, offset, size,
        -                                 clearValue, clearValueSize,
        bufObj);
        +      _mesa_ClearBufferSubData_sw(ctx, offset, size,
        +                                  clearValue, clearValueSize,
        bufObj);
                return;
             }




_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to