mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 17:30:12 +01:00
mesa: implement sparse storage buffer allocation
v2: - spec quote and style (Ian) Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
94227684c4
commit
d6fcbe1c2a
1 changed files with 23 additions and 6 deletions
|
|
@ -1536,16 +1536,33 @@ _mesa_buffer_storage(struct gl_context *ctx, struct gl_buffer_object *bufObj,
|
|||
return;
|
||||
}
|
||||
|
||||
if (flags & ~(GL_MAP_READ_BIT |
|
||||
GL_MAP_WRITE_BIT |
|
||||
GL_MAP_PERSISTENT_BIT |
|
||||
GL_MAP_COHERENT_BIT |
|
||||
GL_DYNAMIC_STORAGE_BIT |
|
||||
GL_CLIENT_STORAGE_BIT)) {
|
||||
GLbitfield valid_flags = GL_MAP_READ_BIT |
|
||||
GL_MAP_WRITE_BIT |
|
||||
GL_MAP_PERSISTENT_BIT |
|
||||
GL_MAP_COHERENT_BIT |
|
||||
GL_DYNAMIC_STORAGE_BIT |
|
||||
GL_CLIENT_STORAGE_BIT;
|
||||
|
||||
if (ctx->Extensions.ARB_sparse_buffer)
|
||||
valid_flags |= GL_SPARSE_STORAGE_BIT_ARB;
|
||||
|
||||
if (flags & ~valid_flags) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "%s(invalid flag bits set)", func);
|
||||
return;
|
||||
}
|
||||
|
||||
/* The Errors section of the GL_ARB_sparse_buffer spec says:
|
||||
*
|
||||
* "INVALID_VALUE is generated by BufferStorage if <flags> contains
|
||||
* SPARSE_STORAGE_BIT_ARB and <flags> also contains any combination of
|
||||
* MAP_READ_BIT or MAP_WRITE_BIT."
|
||||
*/
|
||||
if (flags & GL_SPARSE_STORAGE_BIT_ARB &&
|
||||
flags & (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT)) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "%s(SPARSE_STORAGE and READ/WRITE)", func);
|
||||
return;
|
||||
}
|
||||
|
||||
if (flags & GL_MAP_PERSISTENT_BIT &&
|
||||
!(flags & (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT))) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue