mesa: add buffer != 0 checks to glNamedBufferEXT functions
The EXT_direct_state_access spec says: INVALID_OPERATION is generated by GetNamedBufferParameterivEXT, GetNamedBufferPointervEXT, GetNamedBufferSubDataEXT, MapNamedBufferEXT, NamedBufferDataEXT, NamedBufferSubDataEXT, and UnmapNamedBufferEXT if the buffer parameter is zero. This commits adds buffer != 0 validation to the implemented functions. glNamedBufferStorageEXT isn't included in this list and the EXT_buffer_storage doesn't says that buffer = 0 is an error either so I didn't add the same validation for this function. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
0de2754aa7
commit
32eefb7451
|
@ -2189,8 +2189,15 @@ _mesa_NamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const GLvoid *data,
|
||||||
GLenum usage)
|
GLenum usage)
|
||||||
{
|
{
|
||||||
GET_CURRENT_CONTEXT(ctx);
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
struct gl_buffer_object *bufObj;
|
||||||
|
|
||||||
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer);
|
if (!buffer) {
|
||||||
|
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||||
|
"glNamedBufferDataEXT(invalid buffer 0)");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
|
||||||
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
|
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
|
||||||
&bufObj, "glNamedBufferDataEXT"))
|
&bufObj, "glNamedBufferDataEXT"))
|
||||||
return;
|
return;
|
||||||
|
@ -2331,8 +2338,15 @@ _mesa_NamedBufferSubDataEXT(GLuint buffer, GLintptr offset,
|
||||||
GLsizeiptr size, const GLvoid *data)
|
GLsizeiptr size, const GLvoid *data)
|
||||||
{
|
{
|
||||||
GET_CURRENT_CONTEXT(ctx);
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
struct gl_buffer_object *bufObj;
|
||||||
|
|
||||||
struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, buffer);
|
if (!buffer) {
|
||||||
|
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||||
|
"glNamedBufferSubDataEXT(invalid buffer 0)");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bufObj = _mesa_lookup_bufferobj(ctx, buffer);
|
||||||
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
|
if (!_mesa_handle_bind_buffer_gen(ctx, buffer,
|
||||||
&bufObj, "glNamedBufferSubDataEXT"))
|
&bufObj, "glNamedBufferSubDataEXT"))
|
||||||
return;
|
return;
|
||||||
|
@ -2702,6 +2716,12 @@ _mesa_UnmapNamedBufferEXT(GLuint buffer)
|
||||||
GET_CURRENT_CONTEXT(ctx);
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
struct gl_buffer_object *bufObj;
|
struct gl_buffer_object *bufObj;
|
||||||
|
|
||||||
|
if (!buffer) {
|
||||||
|
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||||
|
"glUnmapNamedBufferEXT(invalid buffer 0)");
|
||||||
|
return GL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, "glUnmapNamedBuffer");
|
bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, "glUnmapNamedBuffer");
|
||||||
if (!bufObj)
|
if (!bufObj)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
@ -3310,6 +3330,12 @@ void * GLAPIENTRY
|
||||||
_mesa_MapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length,
|
_mesa_MapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length,
|
||||||
GLbitfield access)
|
GLbitfield access)
|
||||||
{
|
{
|
||||||
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
if (!buffer) {
|
||||||
|
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||||
|
"glMapNamedBufferRangeEXT(invalid buffer 0)");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return map_named_buffer_range(buffer, offset, length, access, true,
|
return map_named_buffer_range(buffer, offset, length, access, true,
|
||||||
"glMapNamedBufferRangeEXT");
|
"glMapNamedBufferRangeEXT");
|
||||||
}
|
}
|
||||||
|
@ -3431,6 +3457,11 @@ _mesa_MapNamedBufferEXT(GLuint buffer, GLenum access)
|
||||||
GET_CURRENT_CONTEXT(ctx);
|
GET_CURRENT_CONTEXT(ctx);
|
||||||
|
|
||||||
GLbitfield accessFlags;
|
GLbitfield accessFlags;
|
||||||
|
if (!buffer) {
|
||||||
|
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||||
|
"glMapNamedBufferEXT(invalid buffer 0)");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
if (!get_map_buffer_access_flags(ctx, access, &accessFlags)) {
|
if (!get_map_buffer_access_flags(ctx, access, &accessFlags)) {
|
||||||
_mesa_error(ctx, GL_INVALID_ENUM, "glMapNamedBufferEXT(invalid access)");
|
_mesa_error(ctx, GL_INVALID_ENUM, "glMapNamedBufferEXT(invalid access)");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue