I'm not sure this is 100% safe (maybe limiting those blits to sysmem textures would be better like stated in the original change?)
-- v2: HACK: wined3d: Disable CS thread check.
From: Aida Jonikienė aidas957@gmail.com
This is basically a revert of commit db6f95880c2631b64e48adc547d365e878ae45a6.
Testing of the problematic game in bug 45382 shows it no longer crashes with those blits enabled (even with CSMT) so I think this isn't a major issue anymore (and rejecting cross-device blits can break some games like GTA 2 where the menu is missing some textures after exiting from the game to the menu screen). --- dlls/wined3d/texture.c | 6 ------ 1 file changed, 6 deletions(-)
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 2efdaf91438..8fd43311056 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -3902,12 +3902,6 @@ HRESULT CDECL wined3d_device_context_blt(struct wined3d_device_context *context, return WINED3DERR_INVALIDCALL; }
- if (dst_texture->resource.device != src_texture->resource.device) - { - FIXME("Rejecting cross-device blit.\n"); - return E_NOTIMPL; - } - wined3d_device_context_emit_blt_sub_resource(context, &dst_texture->resource, dst_sub_resource_idx, &dst_box, &src_texture->resource, src_sub_resource_idx, &src_box, flags, fx, filter);
From: Aida Jonikienė aidas957@gmail.com
--- dlls/wined3d/wined3d_private.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index eff2400fd8f..9daf01cb72f 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -4662,7 +4662,7 @@ static inline void wined3d_insert_bits(uint32_t *bitstream,
static inline void wined3d_from_cs(const struct wined3d_cs *cs) { - if (cs->thread) + if (0 && cs->thread) assert(cs->thread_id == GetCurrentThreadId()); }
The first run didn't go so well in the ddraw tests with assertion failures (maybe that's the instability Jozef was referring to?)