Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HansKristian-Work/vkd3d-proton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2022-09-16 17:25:40 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2022-09-16 17:48:49 +0300
commitfafe99a278ead592ef49ebee9f67487474d558ce (patch)
tree5b2e807a9eec6ca7ed48f7b7e7a8b955a8fd004e
parente74cc100883ab4f512461ffb21f0c2d7b49e1b2e (diff)
vkd3d: Add stricter checks for initial resource state and resource flag.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
-rw-r--r--libs/vkd3d/resource.c13
-rw-r--r--tests/d3d12_resource.c2
2 files changed, 14 insertions, 1 deletions
diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c
index ee94a97d..90e7ed6c 100644
--- a/libs/vkd3d/resource.c
+++ b/libs/vkd3d/resource.c
@@ -2282,6 +2282,19 @@ static HRESULT d3d12_resource_validate_create_info(const D3D12_RESOURCE_DESC1 *d
if (FAILED(hr = d3d12_resource_validate_desc(desc, device)))
return hr;
+ if (initial_state == D3D12_RESOURCE_STATE_RENDER_TARGET && !(desc->Flags & D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET))
+ {
+ WARN("Creating resource in render target state, but ALLOW_RENDER_TARGET flag is not set.\n");
+ return E_INVALIDARG;
+ }
+
+ if ((initial_state == D3D12_RESOURCE_STATE_DEPTH_WRITE || initial_state == D3D12_RESOURCE_STATE_DEPTH_READ) &&
+ !(desc->Flags & D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL))
+ {
+ WARN("Creating resource in depth-stencil state, but ALLOW_DEPTH_STENCIL flag is not set.\n");
+ return E_INVALIDARG;
+ }
+
if (heap_properties)
{
if (FAILED(hr = d3d12_resource_validate_heap_properties(desc, heap_properties, initial_state)))
diff --git a/tests/d3d12_resource.c b/tests/d3d12_resource.c
index d1b3f877..d55f365d 100644
--- a/tests/d3d12_resource.c
+++ b/tests/d3d12_resource.c
@@ -139,7 +139,7 @@ void test_create_committed_resource(void)
hr = ID3D12Device_CreateCommittedResource(device, &heap_properties, D3D12_HEAP_FLAG_NONE,
&resource_desc, D3D12_RESOURCE_STATE_RENDER_TARGET, NULL,
&IID_ID3D12Resource, (void **)&resource);
- todo ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
+ ok(hr == E_INVALIDARG, "Got unexpected hr %#x.\n", hr);
if (SUCCEEDED(hr))
ID3D12Resource_Release(resource);