Fixes a regression introduced by commit 3f698b950f52bf731d397c04ad68d240d28d7e2b.
Might be related to https://bugs.winehq.org/show_bug.cgi?id=48009, but it could not yet be tested with the game, the fix is based on unit testing.
Signed-off-by: Paul Gofman gofmanp@gmail.com --- dlls/d3d11/view.c | 5 +++++ dlls/wined3d/context.c | 2 +- dlls/wined3d/device.c | 11 ++++++----- dlls/wined3d/utils.c | 15 ++++++++++++--- dlls/wined3d/view.c | 6 ++++-- dlls/wined3d/wined3d_private.h | 13 +++++++++++-- include/wine/wined3d.h | 2 ++ 7 files changed, 41 insertions(+), 13 deletions(-)
diff --git a/dlls/d3d11/view.c b/dlls/d3d11/view.c index a6eddf59ce..40037989eb 100644 --- a/dlls/d3d11/view.c +++ b/dlls/d3d11/view.c @@ -1216,6 +1216,11 @@ static void wined3d_depth_stencil_view_desc_from_d3d11(struct wined3d_view_desc FIXME("Unhandled depth stencil view flags %#x.\n", desc->Flags);
wined3d_desc->flags = 0; + if (desc->Flags & D3D11_DSV_READ_ONLY_DEPTH) + wined3d_desc->flags |= WINED3D_VIEW_READ_ONLY_DEPTH; + if (desc->Flags & D3D11_DSV_READ_ONLY_STENCIL) + wined3d_desc->flags |= WINED3D_VIEW_READ_ONLY_STENCIL; + wined3d_desc->u.texture.level_count = 1; switch (desc->ViewDimension) { diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index e9750c41c5..f4c0d46f8e 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -3696,7 +3696,7 @@ static void context_preload_texture(struct wined3d_context *context, if (!(texture = state->textures[idx])) return;
- if (wined3d_resource_check_fbo_attached(state, &texture->resource)) + if (wined3d_resource_check_fbo_attached(state, &texture->resource, NULL)) context->uses_fbo_attached_resources = 1;
wined3d_texture_load(texture, context, is_srgb_enabled(state->sampler_states[idx])); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 5ccf96a98b..fbdf93f1a1 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -2239,7 +2239,7 @@ static void wined3d_device_set_shader_resource_view(struct wined3d_device *devic if (view == prev) return;
- if (view && wined3d_resource_check_fbo_attached(&device->state, view->resource)) + if (view && wined3d_resource_check_fbo_attached(&device->state, view->resource, view->format)) { WARN("Application is trying to bind resource which is attached as render target.\n"); view = NULL; @@ -5023,7 +5023,7 @@ struct wined3d_rendertarget_view * CDECL wined3d_device_get_depth_stencil_view(c }
static void wined3d_unbind_srv_for_rtv(struct wined3d_device *device, - const struct wined3d_rendertarget_view *view) + const struct wined3d_rendertarget_view *view, BOOL dsv) { if (view && view->resource->srv_bind_count_device) { @@ -5035,7 +5035,8 @@ static void wined3d_unbind_srv_for_rtv(struct wined3d_device *device,
for (i = 0; i < WINED3D_SHADER_TYPE_COUNT; ++i) for (j = 0; j < MAX_SHADER_RESOURCE_VIEWS; ++j) - if ((srv = device->state.shader_resource_view[i][j]) && srv->resource == resource) + if ((srv = device->state.shader_resource_view[i][j]) && srv->resource == resource + && (!dsv || wined3d_dsv_srv_conflict(view, srv->format))) wined3d_device_set_shader_resource_view(device, i, j, NULL); } } @@ -5098,7 +5099,7 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device if (prev) wined3d_rendertarget_view_decref(prev);
- wined3d_unbind_srv_for_rtv(device, view); + wined3d_unbind_srv_for_rtv(device, view, FALSE);
return WINED3D_OK; } @@ -5130,7 +5131,7 @@ HRESULT CDECL wined3d_device_set_depth_stencil_view(struct wined3d_device *devic if (prev) wined3d_rendertarget_view_decref(prev);
- wined3d_unbind_srv_for_rtv(device, view); + wined3d_unbind_srv_for_rtv(device, view, TRUE);
return WINED3D_OK; } diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 7150ca4697..e0bb17d22a 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -3785,18 +3785,27 @@ static BOOL init_typeless_formats(const struct wined3d_adapter *adapter) typeless_format->flags[j] &= ~(WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL); }
- if ((format_id = typeless_depth_stencil_formats[i].depth_view_id) - && typeless_depth_stencil_formats[i].separate_depth_view_format) + if ((format_id = typeless_depth_stencil_formats[i].depth_view_id)) { if (!(depth_view_format = get_format_internal(adapter, format_id))) return FALSE; - copy_format(adapter, depth_view_format, ds_format); + if (typeless_depth_stencil_formats[i].separate_depth_view_format) + { + copy_format(adapter, depth_view_format, ds_format); + depth_view_format->stencil_size = 0; + } + else + { + depth_view_format->depth_size = ds_format->depth_size; + } } if ((format_id = typeless_depth_stencil_formats[i].stencil_view_id)) { if (!(stencil_view_format = get_format_internal(adapter, format_id))) return FALSE; copy_format(adapter, stencil_view_format, ds_format); + if (typeless_depth_stencil_formats[i].separate_depth_view_format) + stencil_view_format->depth_size = 0; } }
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index 6710abb270..eeca7c868b 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -65,11 +65,13 @@ static GLenum get_texture_view_target(const struct wined3d_gl_info *gl_info, {GL_TEXTURE_1D_ARRAY, 0, GL_TEXTURE_1D}, {GL_TEXTURE_1D_ARRAY, WINED3D_VIEW_TEXTURE_ARRAY, GL_TEXTURE_1D_ARRAY}, }; + unsigned int flags = desc->flags & (WINED3D_VIEW_BUFFER_RAW | WINED3D_VIEW_BUFFER_APPEND + | WINED3D_VIEW_BUFFER_COUNTER | WINED3D_VIEW_TEXTURE_CUBE | WINED3D_VIEW_TEXTURE_ARRAY); unsigned int i;
for (i = 0; i < ARRAY_SIZE(view_types); ++i) { - if (view_types[i].texture_target != texture_gl->target || view_types[i].view_flags != desc->flags) + if (view_types[i].texture_target != texture_gl->target || view_types[i].view_flags != flags) continue; if (gl_info->supported[view_types[i].extension]) return view_types[i].view_target; @@ -77,7 +79,7 @@ static GLenum get_texture_view_target(const struct wined3d_gl_info *gl_info, FIXME("Extension %#x not supported.\n", view_types[i].extension); }
- FIXME("Unhandled view flags %#x for texture target %#x.\n", desc->flags, texture_gl->target); + FIXME("Unhandled view flags %#x for texture target %#x.\n", flags, texture_gl->target); return texture_gl->target; }
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 3c18c14136..2974227d0c 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -5313,14 +5313,23 @@ static inline void wined3d_context_copy_bo_address(struct wined3d_context *conte dst, dst_bind_flags, src, src_bind_flags, size); }
+static inline BOOL wined3d_dsv_srv_conflict(const struct wined3d_rendertarget_view *dsv, + const struct wined3d_format *srv_format) +{ + return srv_format && ((srv_format->depth_size && !(dsv->desc.flags & WINED3D_VIEW_READ_ONLY_DEPTH)) + || (srv_format->stencil_size && !(dsv->desc.flags & WINED3D_VIEW_READ_ONLY_STENCIL))); +} + static inline BOOL wined3d_resource_check_fbo_attached(const struct wined3d_state *state, - const struct wined3d_resource *resource) + const struct wined3d_resource *resource, const struct wined3d_format *srv_format) { struct wined3d_rendertarget_view * const *rts = &state->fb->render_targets[0]; + const struct wined3d_rendertarget_view *dsv; unsigned int i;
if ((resource->bind_flags & WINED3D_BIND_DEPTH_STENCIL) - && state->fb->depth_stencil && state->fb->depth_stencil->resource == resource) + && (dsv = state->fb->depth_stencil) && dsv->resource == resource + && wined3d_dsv_srv_conflict(dsv, srv_format)) return TRUE;
if (!(resource->bind_flags & WINED3D_BIND_RENDER_TARGET)) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 925443d112..35cef05848 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -1580,6 +1580,8 @@ enum wined3d_shader_type #define WINED3D_VIEW_BUFFER_COUNTER 0x00000004 #define WINED3D_VIEW_TEXTURE_CUBE 0x00000008 #define WINED3D_VIEW_TEXTURE_ARRAY 0x00000010 +#define WINED3D_VIEW_READ_ONLY_DEPTH 0x00000020 +#define WINED3D_VIEW_READ_ONLY_STENCIL 0x00000040
#define WINED3D_MAX_VIEWPORTS 16
Signed-off-by: Paul Gofman gofmanp@gmail.com --- dlls/d3d11/tests/d3d11.c | 97 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 92 insertions(+), 5 deletions(-)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 1213bcf49d..47a974e9fc 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -29385,18 +29385,24 @@ static void test_desktop_window(void)
static void test_sample_attached_rtv(void) { - ID3D11ShaderResourceView *srv, *srv_test; + ID3D11ShaderResourceView *srv, *srv_test, *srv_ds; + ID3D11Texture2D *texture, *texture2, *dstexture; + D3D11_SHADER_RESOURCE_VIEW_DESC srvds_desc; + D3D11_DEPTH_STENCIL_VIEW_DESC dsview_desc; struct d3d11_test_context test_context; ID3D11RenderTargetView *rtv, *rtvs[2]; - ID3D11Texture2D *texture, *texture2; D3D11_TEXTURE2D_DESC texture_desc; D3D11_SAMPLER_DESC sampler_desc; + ID3D11DepthStencilView *dsview; + ID3D11BlendState *blend_state; ID3D11DeviceContext *context; + D3D11_BLEND_DESC blend_desc; ID3D11SamplerState *sampler; struct resource_readback rb; ID3D11PixelShader *ps; ID3D11Device *device; unsigned int x, y; + unsigned int i; DWORD color; HRESULT hr;
@@ -29440,8 +29446,28 @@ static void test_sample_attached_rtv(void) 0x00004002, 0x3e800000, 0x3e800000, 0x3e800000, 0x3e800000, 0x05000036, 0x001020f2, 0x00000000, 0x00100e46, 0x00000000, 0x05000036, 0x001020f2, 0x00000001, 0x00100e46, 0x00000000, 0x0100003e, }; - static const float red[] = {1.0f, 0.0f, 0.0f, 0.5f}; + static const struct + { + DXGI_FORMAT texture_format, dsv_format, srv_format; + UINT dsv_flags; + BOOL srv_bind_allowed; + } + ds_tests[] = + { + {DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_R24_UNORM_X8_TYPELESS, + 0, FALSE}, + {DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_R24_UNORM_X8_TYPELESS, + D3D11_DSV_READ_ONLY_DEPTH, TRUE}, + {DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_X24_TYPELESS_G8_UINT, + D3D11_DSV_READ_ONLY_DEPTH, FALSE}, + {DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_X24_TYPELESS_G8_UINT, + D3D11_DSV_READ_ONLY_STENCIL, TRUE}, + {DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_R32_FLOAT, + 0, FALSE}, + {DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_R32_FLOAT, + D3D11_DSV_READ_ONLY_DEPTH, TRUE}, + };
if (!init_test_context(&test_context, NULL)) return; @@ -29486,7 +29512,6 @@ static void test_sample_attached_rtv(void)
texture_desc.Width = 640; texture_desc.Height = 480; - hr = ID3D11Device_CreateTexture2D(device, &texture_desc, NULL, &texture2); ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
@@ -29535,11 +29560,26 @@ static void test_sample_attached_rtv(void) hr = ID3D11Device_CreateShaderResourceView(device, (ID3D11Resource *)texture2, NULL, &srv); ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
- /* SRV does not get bound if resource is attached as render target. */ + memset(&blend_desc, 0, sizeof(blend_desc)); + blend_desc.IndependentBlendEnable = TRUE; + blend_desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + blend_desc.RenderTarget[1].RenderTargetWriteMask = 0; + hr = ID3D11Device_CreateBlendState(device, &blend_desc, &blend_state); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + ID3D11DeviceContext_OMSetBlendState(context, blend_state, NULL, D3D11_DEFAULT_SAMPLE_MASK); + ID3D11BlendState_Release(blend_state); + + /* SRV does not get bound if resource is attached as render target, even if write mask is 0. */ ID3D11DeviceContext_PSSetShaderResources(context, 0, 1, &srv); ID3D11DeviceContext_PSGetShaderResources(context, 0, 1, &srv_test); ok(!srv_test, "Unexpected SRV %p.\n", srv_test);
+ blend_desc.RenderTarget[1].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; + hr = ID3D11Device_CreateBlendState(device, &blend_desc, &blend_state); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + ID3D11DeviceContext_OMSetBlendState(context, blend_state, NULL, D3D11_DEFAULT_SAMPLE_MASK); + ID3D11BlendState_Release(blend_state); + ID3D11DeviceContext_ClearRenderTargetView(context, test_context.backbuffer_rtv, red);
draw_quad(&test_context); @@ -29594,6 +29634,53 @@ static void test_sample_attached_rtv(void) ID3D11DeviceContext_PSGetShaderResources(context, 0, 1, &srv_test); ok(!srv_test, "Unexpected SRV %p.\n", srv_test);
+ texture_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_DEPTH_STENCIL; + memset(&dsview_desc, 0, sizeof(dsview_desc)); + dsview_desc.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D; + + memset(&srvds_desc, 0, sizeof(srvds_desc)); + srvds_desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; + U(srvds_desc).Texture2D.MipLevels = 1; + + for (i = 0; i < ARRAY_SIZE(ds_tests); ++i) + { + texture_desc.Format = ds_tests[i].texture_format; + hr = ID3D11Device_CreateTexture2D(device, &texture_desc, NULL, &dstexture); + ok(hr == S_OK, "Test %u, got unexpected hr %#x.\n", i, hr); + dsview_desc.Format = ds_tests[i].dsv_format; + dsview_desc.Flags = ds_tests[i].dsv_flags; + hr = ID3D11Device_CreateDepthStencilView(device, (ID3D11Resource *)dstexture, &dsview_desc, &dsview); + ok(hr == S_OK, "Test %u, got unexpected hr %#x.\n", i, hr); + + srvds_desc.Format = ds_tests[i].srv_format; + hr = ID3D11Device_CreateShaderResourceView(device, (ID3D11Resource *)dstexture, &srvds_desc, &srv_ds); + ok(hr == S_OK, "Got unexpected hr %#x.\n", hr); + + ID3D11DeviceContext_OMSetRenderTargets(context, 1, rtvs, NULL); + ID3D11DeviceContext_PSSetShaderResources(context, 0, 1, &srv_ds); + ID3D11DeviceContext_PSGetShaderResources(context, 0, 1, &srv_test); + ok(!!srv_test, "Test %u, unexpected SRV %p.\n", i, srv_test); + ID3D11ShaderResourceView_Release(srv_test); + + ID3D11DeviceContext_OMSetRenderTargets(context, 1, rtvs, dsview); + ID3D11DeviceContext_PSGetShaderResources(context, 0, 1, &srv_test); + ok(!!srv_test == ds_tests[i].srv_bind_allowed, "Test %u, unexpected SRV %p.\n", i, srv_test); + if (srv_test) + ID3D11ShaderResourceView_Release(srv_test); + + ID3D11DeviceContext_PSSetShaderResources(context, 0, 1, &srv_ds); + ID3D11DeviceContext_PSGetShaderResources(context, 0, 1, &srv_test); + ok(!!srv_test == ds_tests[i].srv_bind_allowed, "Test %u, unexpected SRV %p.\n", i, srv_test); + if (srv_test) + ID3D11ShaderResourceView_Release(srv_test); + + ID3D11Texture2D_Release(dstexture); + ID3D11DepthStencilView_Release(dsview); + ID3D11ShaderResourceView_Release(srv_ds); + } + + ID3D11DeviceContext_OMSetRenderTargets(context, 2, rtvs, NULL); + ID3D11RenderTargetView_Release(rtv); ID3D11ShaderResourceView_Release(srv); ID3D11SamplerState_Release(sampler);
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
Hi,
While running your changed tests, 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=58804
Your paranoid android.
=== wvistau64 (32 bit report) ===
d3d11: d3d11.c:29664: Test failed: Test 1, got unexpected hr 0x80070057. 02d8:d3d11: unhandled exception c0000005 at 00407905
=== wvistau64_fr (32 bit report) ===
d3d11: d3d11.c:29664: Test failed: Test 1, got unexpected hr 0x80070057. 0b9c:d3d11: unhandled exception c0000005 at 00407905
=== w2008s64 (32 bit report) ===
d3d11: d3d11.c:29664: Test failed: Test 1, got unexpected hr 0x80070057. 0390:d3d11: unhandled exception c0000005 at 00407905
=== w1064v1809_2scr (32 bit report) ===
d3d11: d3d11.c:5776: Test failed: Got unexpected IAVertices count: 0. d3d11.c:5777: Test failed: Got unexpected IAPrimitives count: 0. d3d11.c:5778: Test failed: Got unexpected VSInvocations count: 0. d3d11.c:5781: Test failed: Got unexpected CInvocations count: 0. d3d11.c:5782: Test failed: Got unexpected CPrimitives count: 0.
=== w1064v1809_he (32 bit report) ===
d3d11: d3d11.c:5776: Test failed: Got unexpected IAVertices count: 0. d3d11.c:5777: Test failed: Got unexpected IAPrimitives count: 0. d3d11.c:5778: Test failed: Got unexpected VSInvocations count: 0. d3d11.c:5781: Test failed: Got unexpected CInvocations count: 0. d3d11.c:5782: Test failed: Got unexpected CPrimitives count: 0.
=== wvistau64 (64 bit report) ===
d3d11: d3d11.c:29664: Test failed: Test 1, got unexpected hr 0x80070057. 0910:d3d11: unhandled exception c0000005 at 000000000040703F
=== w2008s64 (64 bit report) ===
d3d11: d3d11.c:29664: Test failed: Test 1, got unexpected hr 0x80070057. 0390:d3d11: unhandled exception c0000005 at 000000000040703F
=== debian10 (32 bit report) ===
d3d11: d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:29646: Test failed: Unexpected SRV 00192DD8. d3d11.c:29678: Test failed: Test 1, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 3, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 5, unexpected SRV 00000000. d3d11.c:29703: Test failed: Device has 1 references left.
=== debian10 (32 bit French report) ===
d3d11: d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:17958: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0xffffffff, 0x00000000, 0x00000000, 0x00000000} at (0, 0), sub-resource 0. d3d11.c:29646: Test failed: Unexpected SRV 00152480. d3d11.c:29678: Test failed: Test 1, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 3, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 5, unexpected SRV 00000000. d3d11.c:29703: Test failed: Device has 1 references left.
=== debian10 (32 bit Japanese:Japan report) ===
d3d11: d3d11.c:6109: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:27602: Test failed: Resource type 1, test 7: pixel (200, 200) has color 00000000, expected ffff0000. d3d11.c:29646: Test failed: Unexpected SRV 00137610. d3d11.c:29678: Test failed: Test 1, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 3, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 5, unexpected SRV 00000000. d3d11.c:29703: Test failed: Device has 1 references left.
=== debian10 (32 bit Chinese:China report) ===
d3d11: d3d11.c:6109: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:29646: Test failed: Unexpected SRV 001879D0. d3d11.c:29678: Test failed: Test 1, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 3, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 5, unexpected SRV 00000000. d3d11.c:29703: Test failed: Device has 1 references left.
=== debian10 (32 bit WoW report) ===
d3d11: d3d11.c:17958: Test failed: Got {0x00000001, 0xffffffff, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000000, 0x00000000, 0x00000000} at (0, 0), sub-resource 0. d3d11.c:29646: Test failed: Unexpected SRV 0020F850. d3d11.c:29678: Test failed: Test 1, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 3, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 5, unexpected SRV 00000000. d3d11.c:29703: Test failed: Device has 1 references left.
=== debian10 (64 bit WoW report) ===
d3d11: d3d11.c:6109: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:29646: Test failed: Unexpected SRV 01308FC8. d3d11.c:29678: Test failed: Test 1, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 3, unexpected SRV 00000000. d3d11.c:29678: Test failed: Test 5, unexpected SRV 00000000. d3d11.c:29703: Test failed: Device has 1 references left.
On Thu, 31 Oct 2019 at 16:54, Paul Gofman gofmanp@gmail.com wrote:
@@ -5098,7 +5099,7 @@ HRESULT CDECL wined3d_device_set_rendertarget_view(struct wined3d_device *device if (prev) wined3d_rendertarget_view_decref(prev);
- wined3d_unbind_srv_for_rtv(device, view);
wined3d_unbind_srv_for_rtv(device, view, FALSE);
return WINED3D_OK;
} @@ -5130,7 +5131,7 @@ HRESULT CDECL wined3d_device_set_depth_stencil_view(struct wined3d_device *devic if (prev) wined3d_rendertarget_view_decref(prev);
- wined3d_unbind_srv_for_rtv(device, view);
wined3d_unbind_srv_for_rtv(device, view, TRUE);
return WINED3D_OK;
}
Mostly just a note for Alexandre, when I applied this patch here, git apply seems to have switched these hunks, leading to predictable test failures.
Hi,
While running your changed tests, 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=58803
Your paranoid android.
=== debian10 (32 bit report) ===
d3d11: d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:29606: Test failed: Unexpected SRV 01F9F048. d3d11.c:29616: Test failed: Device has 1 references left.
=== debian10 (32 bit Chinese:China report) ===
d3d11: d3d11.c:6109: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:29606: Test failed: Unexpected SRV 001B7AA0. d3d11.c:29616: Test failed: Device has 1 references left.
=== debian10 (32 bit WoW report) ===
d3d11: d3d11.c:6119: Test succeeded inside todo block: Got unexpected PrimitivesStorageNeeded: 0. d3d11.c:29606: Test failed: Unexpected SRV 001F3348. d3d11.c:29616: Test failed: Device has 1 references left.
=== debian10 (64 bit WoW report) ===
d3d11: d3d11.c:29606: Test failed: Unexpected SRV 001EDB08. d3d11.c:29616: Test failed: Device has 1 references left.