mesa: inline _mesa_handle_bind_buffer_gen and correct things

Changes:
- the function is inlined, which will help the next commit to improve perf
- use no_error inside the function
- if the function returns true, the buffer is non-NULL, so remove NULL
  checking in callers

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18828>
This commit is contained in:
Marek Olšák
2022-08-22 01:37:36 -04:00
committed by Marge Bot
parent 93c9be2b97
commit 6a1ede73f5
+48 -51
View File
@@ -1289,11 +1289,11 @@ new_gl_buffer_object(struct gl_context *ctx, GLuint id)
return buf;
}
bool
_mesa_handle_bind_buffer_gen(struct gl_context *ctx,
GLuint buffer,
struct gl_buffer_object **buf_handle,
const char *caller, bool no_error)
static ALWAYS_INLINE bool
handle_bind_buffer_gen(struct gl_context *ctx,
GLuint buffer,
struct gl_buffer_object **buf_handle,
const char *caller, bool no_error)
{
struct gl_buffer_object *buf = *buf_handle;
@@ -1308,7 +1308,8 @@ _mesa_handle_bind_buffer_gen(struct gl_context *ctx,
*/
*buf_handle = new_gl_buffer_object(ctx, buffer);
if (!*buf_handle) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", caller);
if (!no_error)
_mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", caller);
return false;
}
_mesa_HashLockMaybeLocked(ctx->Shared->BufferObjects,
@@ -1329,6 +1330,15 @@ _mesa_handle_bind_buffer_gen(struct gl_context *ctx,
return true;
}
bool
_mesa_handle_bind_buffer_gen(struct gl_context *ctx,
GLuint buffer,
struct gl_buffer_object **buf_handle,
const char *caller, bool no_error)
{
return handle_bind_buffer_gen(ctx, buffer, buf_handle, caller, no_error);
}
/**
* Bind the specified target to buffer for the specified context.
* Called by glBindBuffer() and other functions.
@@ -2275,8 +2285,8 @@ _mesa_NamedBufferStorageEXT(GLuint buffer, GLsizeiptr size,
GET_CURRENT_CONTEXT(ctx);
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glNamedBufferStorageEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glNamedBufferStorageEXT", false))
return;
inlined_buffer_storage(GL_NONE, buffer, size, data, flags, GL_NONE, 0,
@@ -2528,8 +2538,8 @@ _mesa_NamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const GLvoid *data,
}
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glNamedBufferDataEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glNamedBufferDataEXT", false))
return;
_mesa_buffer_data(ctx, bufObj, GL_NONE, size, data, usage,
@@ -2676,8 +2686,8 @@ _mesa_NamedBufferSubDataEXT(GLuint buffer, GLintptr offset,
}
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glNamedBufferSubDataEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glNamedBufferSubDataEXT", false))
return;
if (validate_buffer_sub_data(ctx, bufObj, offset, size,
@@ -2742,8 +2752,8 @@ _mesa_GetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset,
}
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glGetNamedBufferSubDataEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glGetNamedBufferSubDataEXT", false))
return;
if (!buffer_object_subdata_range_good(ctx, bufObj, offset, size, false,
@@ -2906,8 +2916,8 @@ _mesa_ClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat,
{
GET_CURRENT_CONTEXT(ctx);
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glClearNamedBufferDataEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glClearNamedBufferDataEXT", false))
return;
clear_buffer_sub_data_error(ctx, bufObj, internalformat, 0, bufObj->Size,
@@ -2992,8 +3002,8 @@ _mesa_ClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat,
{
GET_CURRENT_CONTEXT(ctx);
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glClearNamedBufferSubDataEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glClearNamedBufferSubDataEXT", false))
return;
clear_buffer_sub_data_error(ctx, bufObj, internalformat, offset, size,
@@ -3244,8 +3254,8 @@ _mesa_GetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint *params)
}
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glGetNamedBufferParameterivEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glGetNamedBufferParameterivEXT", false))
return;
if (!get_buffer_parameter(ctx, bufObj, pname, &parameter,
@@ -3334,8 +3344,8 @@ _mesa_GetNamedBufferPointervEXT(GLuint buffer, GLenum pname, GLvoid **params)
}
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glGetNamedBufferPointervEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glGetNamedBufferPointervEXT", false))
return;
*params = bufObj->Mappings[MAP_USER].Pointer;
@@ -3456,15 +3466,14 @@ _mesa_NamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeBuffer,
struct gl_buffer_object *src, *dst;
src = _mesa_lookup_bufferobj(ctx, readBuffer);
if (!_mesa_handle_bind_buffer_gen(ctx, readBuffer,
&src,
if (!handle_bind_buffer_gen(ctx, readBuffer,
&src,
"glNamedCopyBufferSubDataEXT", false))
return;
dst = _mesa_lookup_bufferobj(ctx, writeBuffer);
if (!_mesa_handle_bind_buffer_gen(ctx, writeBuffer,
&dst,
"glNamedCopyBufferSubDataEXT", false))
if (!handle_bind_buffer_gen(ctx, writeBuffer,
&dst, "glNamedCopyBufferSubDataEXT", false))
return;
copy_buffer_sub_data(ctx, src, dst, readOffset, writeOffset, size,
@@ -3522,7 +3531,7 @@ _mesa_InternalBufferSubDataCopyMESA(GLintptr srcBuffer, GLuint srcOffset,
if (named && ext_dsa) {
func = "glNamedBufferSubDataEXT";
dst = _mesa_lookup_bufferobj(ctx, dstTargetOrName);
if (!_mesa_handle_bind_buffer_gen(ctx, dstTargetOrName, &dst, func, false))
if (!handle_bind_buffer_gen(ctx, dstTargetOrName, &dst, func, false))
goto done;
} else if (named) {
func = "glNamedBufferSubData";
@@ -3807,7 +3816,7 @@ map_named_buffer_range(GLuint buffer, GLintptr offset, GLsizeiptr length,
if (dsa_ext) {
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer, &bufObj, func, false))
if (!handle_bind_buffer_gen(ctx, buffer, &bufObj, func, false))
return NULL;
} else {
bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, func);
@@ -3963,8 +3972,8 @@ _mesa_MapNamedBufferEXT(GLuint buffer, GLenum access)
}
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glMapNamedBufferEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glMapNamedBufferEXT", false))
return NULL;
if (!validate_map_buffer_range(ctx, bufObj, 0, bufObj->Size, accessFlags,
@@ -4096,8 +4105,8 @@ _mesa_FlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset,
}
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glFlushMappedNamedBufferRangeEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glFlushMappedNamedBufferRangeEXT", false))
return;
flush_mapped_buffer_range(ctx, bufObj, offset, length,
@@ -4894,15 +4903,9 @@ bind_buffer_range(GLenum target, GLuint index, GLuint buffer, GLintptr offset,
bufObj = NULL;
} else {
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glBindBufferRange", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glBindBufferRange", no_error))
return;
if (!no_error && !bufObj) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBindBufferRange(invalid buffer=%u)", buffer);
return;
}
}
if (no_error) {
@@ -4992,15 +4995,9 @@ _mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer)
bufObj = NULL;
} else {
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glBindBufferBase", false))
if (!handle_bind_buffer_gen(ctx, buffer,
&bufObj, "glBindBufferBase", false))
return;
if (!bufObj) {
_mesa_error(ctx, GL_INVALID_OPERATION,
"glBindBufferBase(invalid buffer=%u)", buffer);
return;
}
}
/* Note that there's some oddness in the GL 3.1-GL 3.3 specifications with
@@ -5356,8 +5353,8 @@ _mesa_NamedBufferPageCommitmentEXT(GLuint buffer, GLintptr offset,
/* Use NamedBuffer* functions logic from EXT_direct_state_access */
if (buffer != 0) {
bufferObj = _mesa_lookup_bufferobj(ctx, buffer);
if (!_mesa_handle_bind_buffer_gen(ctx, buffer, &bufferObj,
"glNamedBufferPageCommitmentEXT", false))
if (!handle_bind_buffer_gen(ctx, buffer, &bufferObj,
"glNamedBufferPageCommitmentEXT", false))
return;
} else {
/* GL_EXT_direct_state_access says about NamedBuffer* functions: