mesa: add Const.BufferCreateMapUnsynchronizedThreadSafe & MESA_MAP_THREAD_SAFE

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4758>
This commit is contained in:
Marek Olšák 2020-03-08 17:43:26 -04:00 committed by Marge Bot
parent 19eb89b0f3
commit b8223244c3
4 changed files with 14 additions and 0 deletions

View file

@ -70,6 +70,9 @@ struct _mesa_index_buffer;
*/ */
#define MESA_MAP_NOWAIT_BIT 0x4000 #define MESA_MAP_NOWAIT_BIT 0x4000
/* Mapping a buffer is allowed from any thread. */
#define MESA_MAP_THREAD_SAFE_BIT 0x8000
/** /**
* Device driver function table. * Device driver function table.

View file

@ -4126,6 +4126,12 @@ struct gl_constants
/** When drivers are OK with mapped buffers during draw and other calls. */ /** When drivers are OK with mapped buffers during draw and other calls. */
bool AllowMappedBuffersDuringExecution; bool AllowMappedBuffersDuringExecution;
/**
* Whether buffer creation, unsynchronized mapping, unmapping, and
* deletion is thread-safe.
*/
bool BufferCreateMapUnsynchronizedThreadSafe;
/** GL_ARB_get_program_binary */ /** GL_ARB_get_program_binary */
GLuint NumProgramBinaryFormats; GLuint NumProgramBinaryFormats;

View file

@ -494,6 +494,8 @@ st_access_flags_to_transfer_flags(GLbitfield access, bool wholeBuffer)
if (access & MESA_MAP_NOWAIT_BIT) if (access & MESA_MAP_NOWAIT_BIT)
flags |= PIPE_TRANSFER_DONTBLOCK; flags |= PIPE_TRANSFER_DONTBLOCK;
if (access & MESA_MAP_THREAD_SAFE_BIT)
flags |= PIPE_TRANSFER_THREAD_SAFE;
return flags; return flags;
} }

View file

@ -556,6 +556,9 @@ void st_init_limits(struct pipe_screen *screen,
c->AllowMappedBuffersDuringExecution = c->AllowMappedBuffersDuringExecution =
screen->get_param(screen, PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION); screen->get_param(screen, PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION);
c->BufferCreateMapUnsynchronizedThreadSafe =
screen->get_param(screen, PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE);
c->UseSTD430AsDefaultPacking = c->UseSTD430AsDefaultPacking =
screen->get_param(screen, PIPE_CAP_LOAD_CONSTBUF); screen->get_param(screen, PIPE_CAP_LOAD_CONSTBUF);