Module: wine Branch: master Commit: 2b30a5b47e4d8f21a15a67cf27ccb425149f63a5 URL: https://source.winehq.org/git/wine.git/?a=commit;h=2b30a5b47e4d8f21a15a67cf2...
Author: Zebediah Figura zfigura@codeweavers.com Date: Mon Oct 18 11:02:00 2021 -0500
d3d10core/tests: Test deleting a stream output buffer immediately after drawing into it.
Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/d3d10core/tests/d3d10core.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/d3d10core/tests/d3d10core.c b/dlls/d3d10core/tests/d3d10core.c index c1178749345..85e453c8474 100644 --- a/dlls/d3d10core/tests/d3d10core.c +++ b/dlls/d3d10core/tests/d3d10core.c @@ -15504,8 +15504,8 @@ static void test_stream_output(void)
static void test_stream_output_resume(void) { + ID3D10Buffer *cb, *so_buffer, *so_buffer2, *buffer; struct d3d10core_test_context test_context; - ID3D10Buffer *cb, *so_buffer, *buffer; unsigned int i, j, idx, offset; struct resource_readback rb; ID3D10GeometryShader *gs; @@ -15582,16 +15582,22 @@ static void test_stream_output_resume(void)
cb = create_buffer(device, D3D10_BIND_CONSTANT_BUFFER, sizeof(constants[0]), &constants[0]); so_buffer = create_buffer(device, D3D10_BIND_STREAM_OUTPUT, 1024, NULL); + so_buffer2 = create_buffer(device, D3D10_BIND_STREAM_OUTPUT, 1024, NULL);
ID3D10Device_GSSetShader(device, gs); ID3D10Device_GSSetConstantBuffers(device, 0, 1, &cb);
- offset = 0; - ID3D10Device_SOSetTargets(device, 1, &so_buffer, &offset); - ID3D10Device_ClearRenderTargetView(device, test_context.backbuffer_rtv, &white.x); check_texture_color(test_context.backbuffer, 0xffffffff, 0);
+ /* Draw into a SO buffer and then immediately destroy it, to make sure that + * wined3d doesn't try to rebind transform feedback buffers while transform + * feedback is active. */ + offset = 0; + ID3D10Device_SOSetTargets(device, 1, &so_buffer2, &offset); + draw_color_quad(&test_context, &red); + ID3D10Device_SOSetTargets(device, 1, &so_buffer, &offset); + ID3D10Buffer_Release(so_buffer2); draw_color_quad(&test_context, &red); check_texture_color(test_context.backbuffer, 0xff0000ff, 0);