st/nine: Use atomics for available_texture_mem

Resource dtor can be executed in the worker thread.
Use atomic to avoid threading safety issues.

CC: "17.0" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Tested-by: James Harvey <lothmordor@gmail.com>
This commit is contained in:
Axel Davy
2017-03-15 22:53:36 +01:00
parent bd85bb51c7
commit bdf035ea6f

View File

@@ -79,7 +79,7 @@ NineResource9_ctor( struct NineResource9 *This,
if (This->info.target != PIPE_BUFFER) {
This->size = util_resource_size(&This->info);
This->base.device->available_texture_mem -= This->size;
p_atomic_add(&This->base.device->available_texture_mem, -This->size);
if (This->base.device->available_texture_mem <=
This->base.device->available_texture_limit) {
return D3DERR_OUTOFVIDEOMEMORY;
@@ -111,7 +111,7 @@ NineResource9_dtor( struct NineResource9 *This )
/* NOTE: size is 0, unless something has actually been allocated */
if (This->base.device)
This->base.device->available_texture_mem += This->size;
p_atomic_add(&This->base.device->available_texture_mem, This->size);
NineUnknown_dtor(&This->base);
}