mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
tests: Test GetCopyableFootprints() with base offset.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
aff7ff4fcf
commit
1561c8a9c2
@ -14619,10 +14619,10 @@ static void test_null_descriptors(void)
|
||||
destroy_test_context(&context);
|
||||
}
|
||||
|
||||
#define check_copyable_footprints(a, b, c, d, e, f, g) \
|
||||
check_copyable_footprints_(__LINE__, a, b, c, d, e, f, g)
|
||||
#define check_copyable_footprints(a, b, c, d, e, f, g, h) \
|
||||
check_copyable_footprints_(__LINE__, a, b, c, d, e, f, g, h)
|
||||
static void check_copyable_footprints_(unsigned int line, const D3D12_RESOURCE_DESC *desc,
|
||||
unsigned int sub_resource_idx, unsigned int sub_resource_count,
|
||||
unsigned int sub_resource_idx, unsigned int sub_resource_count, UINT64 base_offset,
|
||||
const D3D12_PLACED_SUBRESOURCE_FOOTPRINT *layouts, const UINT *row_counts,
|
||||
const UINT64 *row_sizes, UINT64 *total_size)
|
||||
{
|
||||
@ -14647,7 +14647,8 @@ static void check_copyable_footprints_(unsigned int line, const D3D12_RESOURCE_D
|
||||
const D3D12_PLACED_SUBRESOURCE_FOOTPRINT *l = &layouts[i];
|
||||
const D3D12_SUBRESOURCE_FOOTPRINT *f = &l->Footprint;
|
||||
|
||||
ok_(line)(l->Offset == offset, "Got offset %"PRIu64", expected %"PRIu64".\n", l->Offset, offset);
|
||||
ok_(line)(l->Offset == base_offset + offset,
|
||||
"Got offset %"PRIu64", expected %"PRIu64".\n", l->Offset, base_offset + offset);
|
||||
ok_(line)(f->Format == desc->Format, "Got format %#x, expected %#x.\n", f->Format, desc->Format);
|
||||
ok_(line)(f->Width == width, "Got width %u, expected %u.\n", f->Width, width);
|
||||
ok_(line)(f->Height == height, "Got height %u, expected %u.\n", f->Height, height);
|
||||
@ -14678,7 +14679,7 @@ static void test_get_copyable_footprints(void)
|
||||
D3D12_RESOURCE_DESC resource_desc;
|
||||
UINT64 row_sizes[10], total_size;
|
||||
unsigned int sub_resource_count;
|
||||
unsigned int i, j, k;
|
||||
unsigned int i, j, k, l;
|
||||
ID3D12Device *device;
|
||||
UINT row_counts[10];
|
||||
ULONG refcount;
|
||||
@ -14732,6 +14733,10 @@ static void test_get_copyable_footprints(void)
|
||||
{DXGI_FORMAT_BC6H_SF16, true},
|
||||
{DXGI_FORMAT_BC7_UNORM, true},
|
||||
};
|
||||
static const UINT64 base_offsets[] =
|
||||
{
|
||||
0, 1, 2, 30, 255, 512, 513, 600, 4096, 4194304, ~(UINT64)0,
|
||||
};
|
||||
static const struct
|
||||
{
|
||||
D3D12_RESOURCE_DESC resource_desc;
|
||||
@ -14780,7 +14785,6 @@ static void test_get_copyable_footprints(void)
|
||||
return;
|
||||
}
|
||||
|
||||
/* TODO: test base offset */
|
||||
for (i = 0; i < ARRAY_SIZE(resources); ++i)
|
||||
{
|
||||
const bool is_buffer = resources[i].dimension == D3D12_RESOURCE_DIMENSION_BUFFER;
|
||||
@ -14814,49 +14818,59 @@ static void test_get_copyable_footprints(void)
|
||||
sub_resource_count *= resource_desc.DepthOrArraySize;
|
||||
assert(sub_resource_count <= ARRAY_SIZE(layouts));
|
||||
|
||||
memset(layouts, 0, sizeof(layouts));
|
||||
memset(row_counts, 0, sizeof(row_counts));
|
||||
memset(row_sizes, 0, sizeof(row_sizes));
|
||||
total_size = 0;
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, 0,
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count,
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
|
||||
memset(layouts, 0, sizeof(layouts));
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, 0,
|
||||
layouts, NULL, NULL, NULL);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count,
|
||||
layouts, NULL, NULL, NULL);
|
||||
memset(row_counts, 0, sizeof(row_counts));
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, 0,
|
||||
NULL, row_counts, NULL, NULL);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count,
|
||||
NULL, row_counts, NULL, NULL);
|
||||
memset(row_sizes, 0, sizeof(row_sizes));
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, 0,
|
||||
NULL, NULL, row_sizes, NULL);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count,
|
||||
NULL, NULL, row_sizes, NULL);
|
||||
total_size = 0;
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, 0,
|
||||
NULL, NULL, NULL, &total_size);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count,
|
||||
NULL, NULL, NULL, &total_size);
|
||||
|
||||
for (k = 0; k < sub_resource_count; ++k)
|
||||
for (k = 0; k < ARRAY_SIZE(base_offsets); ++k)
|
||||
{
|
||||
vkd3d_test_set_context("resource %u, format %#x, offset %#"PRIx64,
|
||||
i, resource_desc.Format, base_offsets[k]);
|
||||
|
||||
memset(layouts, 0, sizeof(layouts));
|
||||
memset(row_counts, 0, sizeof(row_counts));
|
||||
memset(row_sizes, 0, sizeof(row_sizes));
|
||||
total_size = 0;
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, k, 1, 0,
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
check_copyable_footprints(&resource_desc, k, 1,
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
|
||||
memset(layouts, 0, sizeof(layouts));
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
layouts, NULL, NULL, NULL);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
layouts, NULL, NULL, NULL);
|
||||
memset(row_counts, 0, sizeof(row_counts));
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
NULL, row_counts, NULL, NULL);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
NULL, row_counts, NULL, NULL);
|
||||
memset(row_sizes, 0, sizeof(row_sizes));
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
NULL, NULL, row_sizes, NULL);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
NULL, NULL, row_sizes, NULL);
|
||||
total_size = 0;
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
NULL, NULL, NULL, &total_size);
|
||||
check_copyable_footprints(&resource_desc, 0, sub_resource_count, base_offsets[k],
|
||||
NULL, NULL, NULL, &total_size);
|
||||
|
||||
for (l = 0; l < sub_resource_count; ++l)
|
||||
{
|
||||
vkd3d_test_set_context("resource %u, format %#x, offset %#"PRIx64", sub-resource %u",
|
||||
i, resource_desc.Format, base_offsets[k], l);
|
||||
|
||||
memset(layouts, 0, sizeof(layouts));
|
||||
memset(row_counts, 0, sizeof(row_counts));
|
||||
memset(row_sizes, 0, sizeof(row_sizes));
|
||||
total_size = 0;
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, l, 1, base_offsets[k],
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
check_copyable_footprints(&resource_desc, l, 1, base_offsets[k],
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
vkd3d_test_set_context(NULL);
|
||||
|
||||
resource_desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
|
||||
resource_desc.Alignment = 0;
|
||||
@ -14874,7 +14888,7 @@ static void test_get_copyable_footprints(void)
|
||||
total_size = 0;
|
||||
ID3D12Device_GetCopyableFootprints(device, &resource_desc, 0, 1, 0,
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
check_copyable_footprints(&resource_desc, 0, 1,
|
||||
check_copyable_footprints(&resource_desc, 0, 1, 0,
|
||||
layouts, row_counts, row_sizes, &total_size);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(invalid_descs); ++i)
|
||||
|
Loading…
x
Reference in New Issue
Block a user