From d9d5dcee2b166e28eacc417970747e24fe97b9a7 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Fri, 17 Mar 2017 13:33:15 +0100 Subject: [PATCH] wined3d: Avoid device_invalidate_state() in wined3d_texture_set_lod(). It's not safe to call device_invalidate_state() outside the CS. Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/wined3d/texture.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index a1aba368ff0..ddc128cabf8 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -1140,13 +1140,16 @@ DWORD CDECL wined3d_texture_set_lod(struct wined3d_texture *texture, DWORD lod) if (texture->lod != lod) { + struct wined3d_device *device = texture->resource.device; + wined3d_resource_wait_idle(&texture->resource); texture->lod = lod; texture->texture_rgb.base_level = ~0u; texture->texture_srgb.base_level = ~0u; if (texture->resource.bind_count) - device_invalidate_state(texture->resource.device, STATE_SAMPLER(texture->sampler)); + wined3d_cs_emit_set_sampler_state(device->cs, texture->sampler, WINED3D_SAMP_MAX_MIP_LEVEL, + device->state.sampler_states[texture->sampler][WINED3D_SAMP_MAX_MIP_LEVEL]); } return old;