st/nine: Avoid RefToBind calls in ff
When using csmt, ff shader creation happens on the csmt thread. Creating the shaders, then calling RefToBind causes the device ref to be increased then decreased. However the device dtor assumes than no work pending on the csmt thread could increase the device ref, leading to hang. The issue is avoided by creating the shaders with a bind count directly. Fixes: https://github.com/iXit/Mesa-3D/issues/295 Signed-off-by: Axel Davy <davyaxel0@gmail.com>
This commit is contained in:
parent
e83b15cba0
commit
fcbb00a502
|
@ -1698,7 +1698,6 @@ nine_ff_get_vs(struct NineDevice9 *device)
|
|||
(void)err;
|
||||
assert(err == PIPE_OK);
|
||||
device->ff.num_vs++;
|
||||
NineUnknown_ConvertRefToBind(NineUnknown(vs));
|
||||
|
||||
vs->num_inputs = bld.num_inputs;
|
||||
for (n = 0; n < bld.num_inputs; ++n)
|
||||
|
@ -1850,7 +1849,6 @@ nine_ff_get_ps(struct NineDevice9 *device)
|
|||
(void)err;
|
||||
assert(err == PIPE_OK);
|
||||
device->ff.num_ps++;
|
||||
NineUnknown_ConvertRefToBind(NineUnknown(ps));
|
||||
|
||||
ps->rt_mask = 0x1;
|
||||
ps->sampler_mask = sampler_mask;
|
||||
|
|
|
@ -203,5 +203,9 @@ NinePixelShader9_new( struct NineDevice9 *pDevice,
|
|||
struct NinePixelShader9 **ppOut,
|
||||
const DWORD *pFunction, void *cso )
|
||||
{
|
||||
NINE_DEVICE_CHILD_NEW(PixelShader9, ppOut, pDevice, pFunction, cso);
|
||||
if (cso) { /* ff shader. Needs to start with bind count */
|
||||
NINE_DEVICE_CHILD_BIND_NEW(PixelShader9, ppOut, pDevice, pFunction, cso);
|
||||
} else {
|
||||
NINE_DEVICE_CHILD_NEW(PixelShader9, ppOut, pDevice, pFunction, cso);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -262,5 +262,9 @@ NineVertexShader9_new( struct NineDevice9 *pDevice,
|
|||
struct NineVertexShader9 **ppOut,
|
||||
const DWORD *pFunction, void *cso )
|
||||
{
|
||||
NINE_DEVICE_CHILD_NEW(VertexShader9, ppOut, pDevice, pFunction, cso);
|
||||
if (cso) {
|
||||
NINE_DEVICE_CHILD_BIND_NEW(VertexShader9, ppOut, pDevice, pFunction, cso);
|
||||
} else {
|
||||
NINE_DEVICE_CHILD_NEW(VertexShader9, ppOut, pDevice, pFunction, cso);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue