From: Conor McCarthy cmccarthy@codeweavers.com
--- libs/vkd3d/device.c | 17 ++++++++++++++--- tests/d3d12.c | 8 ++------ 2 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index cb1051ddd..e6459e7e6 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -4538,12 +4538,23 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CreateCommittedResource2(ID3D12Dev D3D12_RESOURCE_STATES initial_state, const D3D12_CLEAR_VALUE *optimized_clear_value, ID3D12ProtectedResourceSession *protected_session, REFIID iid, void **resource) { - FIXME("iface %p, heap_properties %p, heap_flags %#x, desc %p, initial_state %#x, " - "optimized_clear_value %p, protected_session %p, iid %s, resource %p stub!\n", + struct d3d12_device *device = impl_from_ID3D12Device8(iface); + struct d3d12_resource *object; + HRESULT hr; + + TRACE("iface %p, heap_properties %p, heap_flags %#x, desc %p, initial_state %#x, " + "optimized_clear_value %p, protected_session %p, iid %s, resource %p.\n", iface, heap_properties, heap_flags, desc, initial_state, optimized_clear_value, protected_session, debugstr_guid(iid), resource);
- return E_NOTIMPL; + if (FAILED(hr = d3d12_committed_resource_create(device, heap_properties, heap_flags, + desc, initial_state, optimized_clear_value, protected_session, &object))) + { + *resource = NULL; + return hr; + } + + return return_interface(&object->ID3D12Resource2_iface, &IID_ID3D12Resource2, iid, resource); }
static HRESULT STDMETHODCALLTYPE d3d12_device_CreatePlacedResource1(ID3D12Device8 *iface, diff --git a/tests/d3d12.c b/tests/d3d12.c index 359227644..aebe45791 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -1920,15 +1920,11 @@ static void test_create_committed_resource(void) hr = ID3D12Device8_CreateCommittedResource2(device8, &heap_properties, D3D12_HEAP_FLAG_NONE, &resource_desc1, D3D12_RESOURCE_STATE_RENDER_TARGET, &clear_value, NULL, &IID_ID3D12Resource2, (void **)&resource2); - todo ok(hr == S_OK, "Failed to create committed resource, hr %#x.\n", hr);
- if (!hr) - { - check_interface(resource2, &IID_ID3D12Resource2, true); - ID3D12Resource2_Release(resource2); - } + check_interface(resource2, &IID_ID3D12Resource2, true);
+ ID3D12Resource2_Release(resource2); ID3D12Device8_Release(device8); }