tests: Test clearing a NULL UAV.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
9983a1720f
commit
47f978fec3
|
@ -5523,6 +5523,7 @@ static void test_clear_unordered_access_view_buffer(void)
|
|||
unsigned int values[4];
|
||||
unsigned int expected;
|
||||
bool is_float;
|
||||
bool is_null_descriptor;
|
||||
}
|
||||
tests[] =
|
||||
{
|
||||
|
@ -5532,6 +5533,8 @@ static void test_clear_unordered_access_view_buffer(void)
|
|||
{0, 0, 0, 0}, 0},
|
||||
{DXGI_FORMAT_R32_UINT, { 0, BUFFER_SIZE / sizeof(uint32_t), 0, 0, D3D12_BUFFER_UAV_FLAG_NONE},
|
||||
{1, 0, 0, 0}, 1},
|
||||
{DXGI_FORMAT_R32_UINT, { 0, BUFFER_SIZE / sizeof(uint32_t), 0, 0, D3D12_BUFFER_UAV_FLAG_NONE},
|
||||
{1, 0, 0, 0}, 0, false, true},
|
||||
{DXGI_FORMAT_R32_UINT, {64, BUFFER_SIZE / sizeof(uint32_t) - 64, 0, 0, D3D12_BUFFER_UAV_FLAG_NONE},
|
||||
{2, 0, 0, 0}, 2},
|
||||
{DXGI_FORMAT_R32_UINT, {64, BUFFER_SIZE / sizeof(uint32_t) - 64, 0, 0, D3D12_BUFFER_UAV_FLAG_NONE},
|
||||
|
@ -5547,6 +5550,8 @@ static void test_clear_unordered_access_view_buffer(void)
|
|||
{0, 0, 0, 0}, 0},
|
||||
{DXGI_FORMAT_R32_TYPELESS, { 0, BUFFER_SIZE / sizeof(uint32_t), 0, 0, D3D12_BUFFER_UAV_FLAG_RAW},
|
||||
{6, 0, 0, 0}, 6},
|
||||
{DXGI_FORMAT_R32_TYPELESS, { 0, BUFFER_SIZE / sizeof(uint32_t), 0, 0, D3D12_BUFFER_UAV_FLAG_RAW},
|
||||
{6, 0, 0, 0}, 0, false, true},
|
||||
{DXGI_FORMAT_R32_TYPELESS, {64, BUFFER_SIZE / sizeof(uint32_t) - 64, 0, 0, D3D12_BUFFER_UAV_FLAG_RAW},
|
||||
{7, 0, 0, 0}, 7},
|
||||
{DXGI_FORMAT_R32_TYPELESS, {64, BUFFER_SIZE / sizeof(uint32_t) - 64, 0, 0, D3D12_BUFFER_UAV_FLAG_RAW},
|
||||
|
@ -5638,7 +5643,7 @@ static void test_clear_unordered_access_view_buffer(void)
|
|||
D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_UNORDERED_ACCESS);
|
||||
|
||||
for (j = 0; j < ARRAY_SIZE(clear_value); ++j)
|
||||
clear_value[j] = tests[i].expected ? 0 : ~0u;
|
||||
clear_value[j] = tests[i].expected || tests[i].is_null_descriptor ? 0 : ~0u;
|
||||
|
||||
memset(&uav_desc, 0, sizeof(uav_desc));
|
||||
uav_desc.Format = DXGI_FORMAT_R32_UINT;
|
||||
|
@ -5657,6 +5662,15 @@ static void test_clear_unordered_access_view_buffer(void)
|
|||
ID3D12Device_CreateUnorderedAccessView(device, buffer, NULL, &uav_desc,
|
||||
get_cpu_descriptor_handle(&context, gpu_heap, 0));
|
||||
|
||||
if (tests[i].is_null_descriptor)
|
||||
{
|
||||
/* Test that we can clear out any knowledge about the existing descriptor. */
|
||||
ID3D12Device_CreateUnorderedAccessView(device, NULL, NULL, &uav_desc,
|
||||
get_cpu_descriptor_handle(&context, cpu_heap, 0));
|
||||
ID3D12Device_CreateUnorderedAccessView(device, NULL, NULL, &uav_desc,
|
||||
get_cpu_descriptor_handle(&context, gpu_heap, 0));
|
||||
}
|
||||
|
||||
ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(command_list,
|
||||
get_gpu_descriptor_handle(&context, gpu_heap, 1),
|
||||
get_cpu_descriptor_handle(&context, cpu_heap, 1),
|
||||
|
@ -5737,14 +5751,17 @@ static void test_clear_unordered_access_view_image(void)
|
|||
unsigned int values[4];
|
||||
unsigned int expected;
|
||||
bool is_float;
|
||||
bool is_null_descriptor;
|
||||
}
|
||||
tests[] =
|
||||
{
|
||||
/* Test clearing a specific mip level. */
|
||||
{DXGI_FORMAT_R32_FLOAT, 2, 1, 0, 0, 1, 0, {{0}}, {1, 0, 0, 0}, 1},
|
||||
{DXGI_FORMAT_R32_FLOAT, 2, 1, 0, 0, 1, 0, {{0}}, {1, 0, 0, 0}, 0, false, true},
|
||||
{DXGI_FORMAT_R32_FLOAT, 2, 1, 1, 0, 1, 0, {{0}}, {1, 0, 0, 0}, 1},
|
||||
{DXGI_FORMAT_R32_FLOAT, 2, 1, 0, 0, 1, 0, {{0}}, {0x3f000000, 0, 0, 0}, 0x3f000000, true},
|
||||
{DXGI_FORMAT_R32_FLOAT, 2, 1, 1, 0, 1, 0, {{0}}, {0x3f000000, 0, 0, 0}, 0x3f000000, true},
|
||||
{DXGI_FORMAT_R32_FLOAT, 2, 1, 1, 0, 1, 0, {{0}}, {0x3f000000, 0, 0, 0}, 0, true, true},
|
||||
/* Test clearing specific array layers. */
|
||||
{DXGI_FORMAT_R32_FLOAT, 1, IMAGE_SIZE, 0, 0, IMAGE_SIZE, 0, {{0}}, {1, 0, 0, 0}, 1},
|
||||
{DXGI_FORMAT_R32_FLOAT, 1, IMAGE_SIZE, 0, 3, 2, 0, {{0}}, {1, 0, 0, 0}, 1},
|
||||
|
@ -5892,9 +5909,18 @@ static void test_clear_unordered_access_view_image(void)
|
|||
&uav_desc, get_cpu_descriptor_handle(&context, gpu_heap, j));
|
||||
}
|
||||
|
||||
if (tests[i].is_null_descriptor)
|
||||
{
|
||||
/* Test that we can clear out any knowledge about the existing descriptor. */
|
||||
ID3D12Device_CreateUnorderedAccessView(device, NULL, NULL,
|
||||
&uav_desc, get_cpu_descriptor_handle(&context, cpu_heap, 0));
|
||||
ID3D12Device_CreateUnorderedAccessView(device, NULL, NULL,
|
||||
&uav_desc, get_cpu_descriptor_handle(&context, gpu_heap, 0));
|
||||
}
|
||||
|
||||
for (j = 0; j < 4; ++j)
|
||||
{
|
||||
clear_value[j] = tests[i].expected ? 0u : ~0u;
|
||||
clear_value[j] = tests[i].expected || tests[i].is_null_descriptor ? 0u : ~0u;
|
||||
}
|
||||
|
||||
ID3D12GraphicsCommandList_ClearUnorderedAccessViewUint(command_list,
|
||||
|
|
Loading…
Reference in New Issue