Module: wine Branch: master Commit: 94eb8d36461f6eb380b95e58629ad4871e5efef4 URL: https://source.winehq.org/git/wine.git/?a=commit;h=94eb8d36461f6eb380b95e586...
Author: Zebediah Figura z.figura12@gmail.com Date: Mon May 24 11:05:51 2021 -0500
d3d11/tests: Add some tests for UpdateSubresource() on a deferred context.
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/d3d11/tests/d3d11.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 9315da55641..a88b2511d3d 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -32927,6 +32927,51 @@ static void test_deferred_context_map(void)
ID3D11Buffer_Release(buffer2); ID3D11Buffer_Release(buffer); + + /* Test UpdateSubresource. */ + + for (i = 0; i < ARRAY_SIZE(data); ++i) + data[i] = i; + + buffer_desc.ByteWidth = sizeof(data); + buffer_desc.Usage = D3D11_USAGE_DEFAULT; + buffer_desc.BindFlags = D3D11_BIND_VERTEX_BUFFER; + buffer_desc.CPUAccessFlags = 0; + hr = ID3D11Device_CreateBuffer(device, &buffer_desc, &resource_data, &buffer); + ok(hr == S_OK, "Failed to create buffer, hr %#x.\n", hr); + hr = ID3D11Device_CreateBuffer(device, &buffer_desc, &resource_data, &buffer2); + ok(hr == S_OK, "Failed to create buffer, hr %#x.\n", hr); + + for (i = 0; i < ARRAY_SIZE(data); ++i) + data[i] = 2 * i; + ID3D11DeviceContext_UpdateSubresource(deferred, (ID3D11Resource *)buffer, 0, NULL, data, 0, 0); + + hr = ID3D11DeviceContext_FinishCommandList(deferred, FALSE, &list); + ok(hr == S_OK, "Failed to create command list, hr %#x.\n", hr); + + get_buffer_readback(buffer, &rb); + for (i = 0; i < ARRAY_SIZE(data); ++i) + { + value = get_readback_float(&rb, i, 0); + ok(value == i, "Got unexpected value %.8e at %u.\n", value, i); + } + release_resource_readback(&rb); + + ID3D11DeviceContext_ExecuteCommandList(immediate, list, TRUE); + + get_buffer_readback(buffer, &rb); + for (i = 0; i < ARRAY_SIZE(data); ++i) + { + value = get_readback_float(&rb, i, 0); + ok(value == 2 * i, "Got unexpected value %.8e at %u.\n", value, i); + } + release_resource_readback(&rb); + + ID3D11CommandList_Release(list); + + ID3D11Buffer_Release(buffer2); + ID3D11Buffer_Release(buffer); + ID3D11DeviceContext_Release(deferred); release_test_context(&test_context); }