Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- v2: Fix patch according to Józef's review.
Supersedes patch 157672.
dlls/d3d9/d3d9_private.h | 2 ++ dlls/d3d9/device.c | 23 +++++++++++++++++++++-- dlls/d3d9/stateblock.c | 16 +++++++++++++++- 3 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/dlls/d3d9/d3d9_private.h b/dlls/d3d9/d3d9_private.h index 1032f8e8e9c..3fe0376e5c1 100644 --- a/dlls/d3d9/d3d9_private.h +++ b/dlls/d3d9/d3d9_private.h @@ -111,6 +111,8 @@ struct d3d9_device DWORD recording : 1; DWORD padding : 11;
+ DWORD auto_mipmaps; /* D3D9_MAX_TEXTURE_UNITS */ + unsigned int max_user_clip_planes;
UINT implicit_swapchain_count; diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index 98ada03af8b..66bf69589ca 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -1012,6 +1012,9 @@ static HRESULT d3d9_device_reset(struct d3d9_device *device, device->device_state = D3D9_DEVICE_STATE_OK; }
+ if (!device->d3d_parent->extended) + device->auto_mipmaps = 0; + rtv = wined3d_device_get_rendertarget_view(device->wined3d_device, 0); device->render_targets[0] = wined3d_rendertarget_view_get_sub_resource_parent(rtv); for (i = 1; i < ARRAY_SIZE(device->render_targets); ++i) @@ -2456,6 +2459,19 @@ static HRESULT WINAPI d3d9_device_SetTexture(IDirect3DDevice9Ex *iface, DWORD st wined3d_mutex_lock(); hr = wined3d_device_set_texture(device->wined3d_device, stage, texture_impl ? texture_impl->wined3d_texture : NULL); + if (SUCCEEDED(hr) && !device->recording) + { + unsigned int i = stage < 16 || (stage >= D3DVERTEXTEXTURESAMPLER0 && stage <= D3DVERTEXTEXTURESAMPLER3) + ? stage < 16 ? stage : stage - D3DVERTEXTEXTURESAMPLER0 + 16 : ~0u; + + if (i < D3D9_MAX_TEXTURE_UNITS) + { + if (texture_impl && texture_impl->usage & D3DUSAGE_AUTOGENMIPMAP) + device->auto_mipmaps |= 1u << i; + else + device->auto_mipmaps &= ~(1u << i); + } + } wined3d_mutex_unlock();
return hr; @@ -2700,10 +2716,13 @@ static float WINAPI d3d9_device_GetNPatchMode(IDirect3DDevice9Ex *iface) static void d3d9_generate_auto_mipmaps(struct d3d9_device *device) { struct wined3d_texture *texture; - unsigned int i, stage; + unsigned int i, stage, map;
- for (i = 0; i < D3D9_MAX_TEXTURE_UNITS; ++i) + map = device->auto_mipmaps; + while (map) { + i = wined3d_bit_scan(&map); + stage = i >= 16 ? i - 16 + D3DVERTEXTEXTURESAMPLER0 : i; if ((texture = wined3d_device_get_texture(device->wined3d_device, stage))) d3d9_texture_gen_auto_mipmap(wined3d_texture_get_parent(texture)); diff --git a/dlls/d3d9/stateblock.c b/dlls/d3d9/stateblock.c index 8431ef77002..14f47d929bc 100644 --- a/dlls/d3d9/stateblock.c +++ b/dlls/d3d9/stateblock.c @@ -109,10 +109,12 @@ static HRESULT WINAPI d3d9_stateblock_Capture(IDirect3DStateBlock9 *iface) static HRESULT WINAPI d3d9_stateblock_Apply(IDirect3DStateBlock9 *iface) { struct d3d9_stateblock *stateblock = impl_from_IDirect3DStateBlock9(iface); + struct wined3d_texture *wined3d_texture; + unsigned int i, offset, stride, stage; struct wined3d_buffer *wined3d_buffer; struct d3d9_vertexbuffer *buffer; - unsigned int i, offset, stride; enum wined3d_format_id format; + struct d3d9_texture *texture; struct d3d9_device *device; HRESULT hr;
@@ -134,6 +136,18 @@ static HRESULT WINAPI d3d9_stateblock_Apply(IDirect3DStateBlock9 *iface) } device->sysmem_ib = (wined3d_buffer = wined3d_device_get_index_buffer(device->wined3d_device, &format, &offset)) && (buffer = wined3d_buffer_get_parent(wined3d_buffer)) && buffer->draw_buffer; + device->auto_mipmaps = 0; + for (i = 0; i < D3D9_MAX_TEXTURE_UNITS; ++i) + { + stage = i >= 16 ? i - 16 + D3DVERTEXTEXTURESAMPLER0 : i; + + if ((wined3d_texture = wined3d_device_get_texture(device->wined3d_device, stage)) + && (texture = wined3d_texture_get_parent(wined3d_texture)) + && texture->usage & D3DUSAGE_AUTOGENMIPMAP) + device->auto_mipmaps |= 1u << i; + else + device->auto_mipmaps &= ~(1u << i); + } wined3d_mutex_unlock();
return D3D_OK;
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- v2: Fix the tests on Windows (and also accept Nvidia behavior). v3: Fix WARP failure.
Supersedes patch 157673.
dlls/d3d8/tests/device.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c index ac04a6ad649..b57be7ad127 100644 --- a/dlls/d3d8/tests/device.c +++ b/dlls/d3d8/tests/device.c @@ -102,6 +102,11 @@ static void flush_events(void) } }
+static BOOL adapter_is_warp(const D3DADAPTER_IDENTIFIER8 *identifier) +{ + return !strcmp(identifier->Driver, "d3d10warp.dll"); +} + static IDirect3DDevice8 *create_device(IDirect3D8 *d3d8, HWND focus_window, const struct device_desc *desc) { D3DPRESENT_PARAMETERS present_parameters = {0}; @@ -8753,6 +8758,7 @@ static void test_resource_access(void) IDirect3DSurface8 *backbuffer, *depth_stencil; D3DFORMAT colour_format, depth_format, format; BOOL depth_2d, depth_cube, depth_plain; + D3DADAPTER_IDENTIFIER8 identifier; struct device_desc device_desc; D3DSURFACE_DESC surface_desc; IDirect3DDevice8 *device; @@ -8761,6 +8767,7 @@ static void test_resource_access(void) ULONG refcount; HWND window; HRESULT hr; + BOOL warp;
enum surface_type { @@ -8845,6 +8852,9 @@ static void test_resource_access(void) window = create_window(); d3d = Direct3DCreate8(D3D_SDK_VERSION); ok(!!d3d, "Failed to create a D3D object.\n"); + hr = IDirect3D8_GetAdapterIdentifier(d3d, D3DADAPTER_DEFAULT, 0, &identifier); + ok(SUCCEEDED(hr), "Failed to get adapter identifier, hr %#x.\n", hr); + warp = adapter_is_warp(&identifier);
device_desc.device_window = window; device_desc.width = 16; @@ -8951,7 +8961,9 @@ static void test_resource_access(void) hr = IDirect3DDevice8_CreateDepthStencilSurface(device, 16, 16, format, D3DMULTISAMPLE_NONE, &surface); todo_wine_if(tests[j].format == FORMAT_ATI2) - ok(hr == (tests[j].format != FORMAT_COLOUR ? D3D_OK : D3DERR_INVALIDCALL), + ok(hr == (tests[j].format == FORMAT_DEPTH ? D3D_OK + : tests[j].format == FORMAT_COLOUR ? D3DERR_INVALIDCALL : E_INVALIDARG) + || (tests[j].format == FORMAT_ATI2 && hr == D3D_OK), "Test %s %u: Got unexpected hr %#x.\n", surface_types[i].name, j, hr); if (FAILED(hr)) continue; @@ -9047,17 +9059,20 @@ static void test_resource_access(void) HRESULT expected_hr; D3DLOCKED_BOX lb;
- if (tests[j].format == FORMAT_DEPTH) + if (tests[i].format == FORMAT_DEPTH) continue;
- if (tests[j].format == FORMAT_ATI2) + if (tests[i].format == FORMAT_ATI2) format = MAKEFOURCC('A','T','I','2'); else format = colour_format;
hr = IDirect3DDevice8_CreateVolumeTexture(device, 16, 16, 1, 1, tests[i].usage, format, tests[i].pool, &texture); - ok(hr == (!(tests[i].usage & ~D3DUSAGE_DYNAMIC) ? D3D_OK : D3DERR_INVALIDCALL), + ok((hr == ((!(tests[i].usage & ~D3DUSAGE_DYNAMIC) && tests[i].format != FORMAT_ATI2) + || (tests[i].pool == D3DPOOL_SCRATCH && !tests[i].usage) + ? D3D_OK : D3DERR_INVALIDCALL)) + || (tests[i].format == FORMAT_ATI2 && (hr == D3D_OK || warp)), "Test %u: Got unexpected hr %#x.\n", i, hr); if (FAILED(hr)) continue; @@ -9075,9 +9090,11 @@ static void test_resource_access(void) expected_hr = D3D_OK; else expected_hr = D3DERR_INVALIDCALL; - ok(hr == expected_hr, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(hr == expected_hr || (volume_desc.Pool == D3DPOOL_DEFAULT && hr == D3D_OK), + "Test %u: Got unexpected hr %#x.\n", i, hr); hr = IDirect3DVolume8_UnlockBox(volume); - ok(hr == expected_hr, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(hr == expected_hr || (volume_desc.Pool == D3DPOOL_DEFAULT && hr == D3D_OK), + "Test %u: Got unexpected hr %#x.\n", i, hr);
hr = IDirect3DDevice8_SetTexture(device, 0, (IDirect3DBaseTexture8 *)texture); ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr);
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=47129
Your paranoid android.
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- v2: Fix tests failing on Windows + AMD. v3: Fix WARP failure.
Supersedes patch 157674.
dlls/d3d9/tests/d3d9ex.c | 21 +++++++++++++++------ dlls/d3d9/tests/device.c | 25 ++++++++++++++++++++----- 2 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/dlls/d3d9/tests/d3d9ex.c b/dlls/d3d9/tests/d3d9ex.c index 5260fcdeb40..132ce037880 100644 --- a/dlls/d3d9/tests/d3d9ex.c +++ b/dlls/d3d9/tests/d3d9ex.c @@ -4115,6 +4115,7 @@ static void test_resource_access(void) IDirect3DSurface9 *backbuffer, *depth_stencil; D3DFORMAT colour_format, depth_format, format; BOOL depth_2d, depth_cube, depth_plain; + D3DADAPTER_IDENTIFIER9 identifier; struct device_desc device_desc; D3DSURFACE_DESC surface_desc; IDirect3DDevice9Ex *device; @@ -4123,6 +4124,7 @@ static void test_resource_access(void) ULONG refcount; HWND window; HRESULT hr; + BOOL warp;
enum surface_type { @@ -4223,6 +4225,9 @@ static void test_resource_access(void) } hr = IDirect3DDevice9Ex_GetDirect3D(device, &d3d); ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + hr = IDirect3D9_GetAdapterIdentifier(d3d, D3DADAPTER_DEFAULT, 0, &identifier); + ok(SUCCEEDED(hr), "Failed to get adapter identifier, hr %#x.\n", hr); + warp = adapter_is_warp(&identifier);
hr = IDirect3DDevice9Ex_GetBackBuffer(device, 0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer); ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); @@ -4452,18 +4457,20 @@ static void test_resource_access(void) HRESULT expected_hr; D3DLOCKED_BOX lb;
- if (tests[j].format == FORMAT_DEPTH) + if (tests[i].format == FORMAT_DEPTH) continue;
- if (tests[j].format == FORMAT_ATI2) + if (tests[i].format == FORMAT_ATI2) format = MAKEFOURCC('A','T','I','2'); else format = colour_format;
hr = IDirect3DDevice9Ex_CreateVolumeTexture(device, 16, 16, 1, 1, tests[i].usage, format, tests[i].pool, &texture, NULL); - ok(hr == (!(tests[i].usage & ~D3DUSAGE_DYNAMIC) && tests[i].pool != D3DPOOL_MANAGED - ? D3D_OK : D3DERR_INVALIDCALL), + ok((hr == (!(tests[i].usage & ~D3DUSAGE_DYNAMIC) + && (tests[i].format != FORMAT_ATI2 || tests[i].pool == D3DPOOL_SCRATCH) + && tests[i].pool != D3DPOOL_MANAGED ? D3D_OK : D3DERR_INVALIDCALL)) + || (tests[i].format == FORMAT_ATI2 && (hr == D3D_OK || warp)), "Test %u: Got unexpected hr %#x.\n", i, hr); if (FAILED(hr)) continue; @@ -4481,9 +4488,11 @@ static void test_resource_access(void) expected_hr = D3D_OK; else expected_hr = D3DERR_INVALIDCALL; - ok(hr == expected_hr, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(hr == expected_hr || (volume_desc.Pool == D3DPOOL_DEFAULT && hr == D3D_OK), + "Test %u: Got unexpected hr %#x.\n", i, hr); hr = IDirect3DVolume9_UnlockBox(volume); - ok(hr == expected_hr, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(hr == expected_hr || (volume_desc.Pool == D3DPOOL_DEFAULT && hr == D3D_OK), + "Test %u: Got unexpected hr %#x.\n", i, hr);
hr = IDirect3DDevice9Ex_SetTexture(device, 0, (IDirect3DBaseTexture9 *)texture); ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr); diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index 9064a6701af..ad1d2899a14 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -143,6 +143,11 @@ static void flush_events(void) } }
+static BOOL adapter_is_warp(const D3DADAPTER_IDENTIFIER9 *identifier) +{ + return !strcmp(identifier->Driver, "d3d10warp.dll"); +} + static IDirect3DDevice9 *create_device(IDirect3D9 *d3d9, HWND focus_window, const struct device_desc *desc) { D3DPRESENT_PARAMETERS present_parameters = {0}; @@ -12650,6 +12655,7 @@ static void test_resource_access(void) IDirect3DSurface9 *backbuffer, *depth_stencil; D3DFORMAT colour_format, depth_format, format; BOOL depth_2d, depth_cube, depth_plain; + D3DADAPTER_IDENTIFIER9 identifier; struct device_desc device_desc; D3DSURFACE_DESC surface_desc; IDirect3DDevice9 *device; @@ -12658,6 +12664,7 @@ static void test_resource_access(void) ULONG refcount; HWND window; HRESULT hr; + BOOL warp;
enum surface_type { @@ -12754,6 +12761,9 @@ static void test_resource_access(void) DestroyWindow(window); return; } + hr = IDirect3D9_GetAdapterIdentifier(d3d, D3DADAPTER_DEFAULT, 0, &identifier); + ok(SUCCEEDED(hr), "Failed to get adapter identifier, hr %#x.\n", hr); + warp = adapter_is_warp(&identifier);
hr = IDirect3DDevice9_GetBackBuffer(device, 0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer); ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); @@ -12948,17 +12958,20 @@ static void test_resource_access(void) HRESULT expected_hr; D3DLOCKED_BOX lb;
- if (tests[j].format == FORMAT_DEPTH) + if (tests[i].format == FORMAT_DEPTH) continue;
- if (tests[j].format == FORMAT_ATI2) + if (tests[i].format == FORMAT_ATI2) format = MAKEFOURCC('A','T','I','2'); else format = colour_format;
hr = IDirect3DDevice9_CreateVolumeTexture(device, 16, 16, 1, 1, tests[i].usage, format, tests[i].pool, &texture, NULL); - ok(hr == (!(tests[i].usage & ~D3DUSAGE_DYNAMIC) ? D3D_OK : D3DERR_INVALIDCALL), + ok((hr == (!(tests[i].usage & ~D3DUSAGE_DYNAMIC) + && (tests[i].format != FORMAT_ATI2 || tests[i].pool == D3DPOOL_SCRATCH) + ? D3D_OK : D3DERR_INVALIDCALL)) + || (tests[i].format == FORMAT_ATI2 && (hr == D3D_OK || warp)), "Test %u: Got unexpected hr %#x.\n", i, hr); if (FAILED(hr)) continue; @@ -12976,9 +12989,11 @@ static void test_resource_access(void) expected_hr = D3D_OK; else expected_hr = D3DERR_INVALIDCALL; - ok(hr == expected_hr, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(hr == expected_hr || (volume_desc.Pool == D3DPOOL_DEFAULT && hr == D3D_OK), + "Test %u: Got unexpected hr %#x.\n", i, hr); hr = IDirect3DVolume9_UnlockBox(volume); - ok(hr == expected_hr, "Test %u: Got unexpected hr %#x.\n", i, hr); + ok(hr == expected_hr || (volume_desc.Pool == D3DPOOL_DEFAULT && hr == D3D_OK), + "Test %u: Got unexpected hr %#x.\n", i, hr);
hr = IDirect3DDevice9_SetTexture(device, 0, (IDirect3DBaseTexture9 *)texture); ok(hr == D3D_OK, "Test %u: Got unexpected hr %#x.\n", i, hr);
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=47130
Your paranoid android.
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=47128
Your paranoid android.
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
=== debian9 (build log) ===
X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig) X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 140 (RANDR) Minor opcode of failed request: 21 (RRSetCrtcConfig)
On Tue, 5 Feb 2019 at 03:30, Matteo Bruni mbruni@codeweavers.com wrote:
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index 98ada03af8b..66bf69589ca 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -1012,6 +1012,9 @@ static HRESULT d3d9_device_reset(struct d3d9_device *device, device->device_state = D3D9_DEVICE_STATE_OK; }
if (!device->d3d_parent->extended)
device->auto_mipmaps = 0;
Could this just get merged into the "if (!extended)" block slightly above?