From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- tests/d3d12.c | 9 ++++++++- tests/d3d12_crosstest.h | 27 +++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/tests/d3d12.c b/tests/d3d12.c index 79c30ec2465f..b75cd996a2ff 100644 --- a/tests/d3d12.c +++ b/tests/d3d12.c @@ -30553,6 +30553,13 @@ static void test_conditional_rendering(void) command_list = context.list; queue = context.queue;
+ if (is_intel_windows_device(context.device)) + { + skip("Predicated rendering is broken on Intel.\n"); + destroy_test_context(&context); + return; + } + conditions = create_default_buffer(context.device, sizeof(predicate_args), D3D12_RESOURCE_FLAG_NONE, D3D12_RESOURCE_STATE_COPY_DEST); upload_buffer_data(conditions, 0, sizeof(predicate_args), &predicate_args, queue, command_list); @@ -30587,7 +30594,7 @@ static void test_conditional_rendering(void) transition_resource_state(command_list, context.render_target, D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_COPY_SOURCE);
- check_sub_resource_uint(context.render_target, 0, queue, command_list, 0xffffffff, 0); + todo check_sub_resource_uint(context.render_target, 0, queue, command_list, 0x00000000, 0);
reset_command_list(command_list, context.allocator); transition_resource_state(command_list, context.render_target, diff --git a/tests/d3d12_crosstest.h b/tests/d3d12_crosstest.h index 4a490628e483..22844ab398e7 100644 --- a/tests/d3d12_crosstest.h +++ b/tests/d3d12_crosstest.h @@ -323,14 +323,15 @@ static void init_adapter_info(void) IDXGIAdapter_Release(dxgi_adapter); }
-static inline bool is_amd_windows_device(ID3D12Device *device) +static inline bool get_adapter_desc(ID3D12Device *device, DXGI_ADAPTER_DESC *desc) { - DXGI_ADAPTER_DESC desc = {0}; IDXGIFactory4 *factory; IDXGIAdapter *adapter; HRESULT hr; LUID luid;
+ memset(desc, 0, sizeof(*desc)); + if (!vkd3d_test_platform_is_windows()) return false;
@@ -342,14 +343,27 @@ static inline bool is_amd_windows_device(ID3D12Device *device) hr = IDXGIFactory4_EnumAdapterByLuid(factory, luid, &IID_IDXGIAdapter, (void **)&adapter); if (SUCCEEDED(hr)) { - hr = IDXGIAdapter_GetDesc(adapter, &desc); + hr = IDXGIAdapter_GetDesc(adapter, desc); ok(hr == S_OK, "Failed to get adapter desc, hr %#x.\n", hr); IDXGIAdapter_Release(adapter); }
IDXGIFactory4_Release(factory); + return SUCCEEDED(hr); +} + +static inline bool is_amd_windows_device(ID3D12Device *device) +{ + DXGI_ADAPTER_DESC desc; + + return get_adapter_desc(device, &desc) && desc.VendorId == 0x1002; +} + +static inline bool is_intel_windows_device(ID3D12Device *device) +{ + DXGI_ADAPTER_DESC desc;
- return desc.VendorId == 0x1002; + return get_adapter_desc(device, &desc) && desc.VendorId == 0x8086; }
static inline bool is_mesa_device(ID3D12Device *device) @@ -566,6 +580,11 @@ static inline bool is_amd_windows_device(ID3D12Device *device) return false; }
+static inline bool is_intel_windows_device(ID3D12Device *device) +{ + return false; +} + static inline bool is_mesa_device(ID3D12Device *device) { VkPhysicalDeviceDriverPropertiesKHR properties;