bufferobj: make sw clear buffer static, move it and rename it

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14133>
This commit is contained in:
Dave Airlie
2021-12-09 13:30:59 +10:00
committed by Marge Bot
parent ff8c2a1748
commit 22e516b846
+37 -54
View File
@@ -576,6 +576,41 @@ copy_buffer_subdata(struct gl_context *ctx,
src->buffer, 0, &box);
}
static void
clear_buffer_subdata_sw(struct gl_context *ctx,
GLintptr offset, GLsizeiptr size,
const GLvoid *clearValue,
GLsizeiptr clearValueSize,
struct gl_buffer_object *bufObj)
{
GLsizeiptr i;
GLubyte *dest;
dest = _mesa_bufferobj_map_range(ctx, offset, size,
GL_MAP_WRITE_BIT |
GL_MAP_INVALIDATE_RANGE_BIT,
bufObj, MAP_INTERNAL);
if (!dest) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glClearBuffer[Sub]Data");
return;
}
if (clearValue == NULL) {
/* Clear with zeros, per the spec */
memset(dest, 0, size);
_mesa_bufferobj_unmap(ctx, bufObj, MAP_INTERNAL);
return;
}
for (i = 0; i < size/clearValueSize; ++i) {
memcpy(dest, clearValue, clearValueSize);
dest += clearValueSize;
}
_mesa_bufferobj_unmap(ctx, bufObj, MAP_INTERNAL);
}
/**
* Called via glClearBufferSubData().
*/
@@ -590,8 +625,8 @@ clear_buffer_subdata(struct gl_context *ctx,
static const char zeros[16] = {0};
if (!pipe->clear_buffer) {
_mesa_ClearBufferSubData_sw(ctx, offset, size,
clearValue, clearValueSize, bufObj);
clear_buffer_subdata_sw(ctx, offset, size,
clearValue, clearValueSize, bufObj);
return;
}
@@ -1168,58 +1203,6 @@ _mesa_total_buffer_object_memory(struct gl_context *ctx)
return total;
}
/**
* Clear a subrange of the buffer object with copies of the supplied data.
* If data is NULL the buffer is filled with zeros.
*
* This is the default callback for \c dd_function_table::ClearBufferSubData()
* Note that all GL error checking will have been done already.
*
* \param ctx GL context.
* \param offset Offset of the first byte to be cleared.
* \param size Size, in bytes, of the to be cleared range.
* \param clearValue Source of the data.
* \param clearValueSize Size, in bytes, of the supplied data.
* \param bufObj Object to be cleared.
*
* \sa glClearBufferSubData, glClearBufferData and
* dd_function_table::ClearBufferSubData.
*/
void
_mesa_ClearBufferSubData_sw(struct gl_context *ctx,
GLintptr offset, GLsizeiptr size,
const GLvoid *clearValue,
GLsizeiptr clearValueSize,
struct gl_buffer_object *bufObj)
{
GLsizeiptr i;
GLubyte *dest;
dest = _mesa_bufferobj_map_range(ctx, offset, size,
GL_MAP_WRITE_BIT |
GL_MAP_INVALIDATE_RANGE_BIT,
bufObj, MAP_INTERNAL);
if (!dest) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glClearBuffer[Sub]Data");
return;
}
if (clearValue == NULL) {
/* Clear with zeros, per the spec */
memset(dest, 0, size);
_mesa_bufferobj_unmap(ctx, bufObj, MAP_INTERNAL);
return;
}
for (i = 0; i < size/clearValueSize; ++i) {
memcpy(dest, clearValue, clearValueSize);
dest += clearValueSize;
}
_mesa_bufferobj_unmap(ctx, bufObj, MAP_INTERNAL);
}
/**
* Initialize the state associated with buffer objects
*/