[PATCH vkd3d v2 1/2] tests: Add test for texture placement at 64kb alignment.
Henri Verbeet
hverbeet at gmail.com
Fri Jul 2 07:17:16 CDT 2021
On Thu, 1 Jul 2021 at 14:37, Conor McCarthy <cmccarthy at codeweavers.com> wrote:
> + for (i = 0; i < resource_desc.Width * resource_desc.Height; ++i)
> + upload_buffer[i] = 0xdeadbeef;
> + texture_data.SlicePitch = texture_data.RowPitch * resource_desc.Height;
> + reset_command_list(command_list, context.allocator);
> + /* Write data to the first texture to check if the second is overwritten.
> + * Resource overlap may still go undetected depending on the actual layout
> + * used by the driver. */
> + upload_texture_data(textures[0], &texture_data, 1, queue, command_list);
> +
> + reset_command_list(command_list, context.allocator);
> + transition_resource_state(command_list, textures[1],
> + D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_COPY_SOURCE);
> + get_texture_readback_with_command_list(textures[1], 0, &rb, queue, command_list);
> + for (y = 0; y < resource_desc.Height; ++y)
> + {
> + for (x = 0; x < resource_desc.Width; ++x)
> + {
> + i = get_readback_uint(&rb, x, y, 0);
> + ok(i == 0xcafef00d, "Expected 0xcafef00d, got %#x at %u, %u.\n", i, x, y);
> + }
> + }
> + release_resource_readback(&rb);
> +
We'll want to use check_sub_resource_uint() here.
Is this test missing a todo_if()? The returned alignment is 64 KiB
here on all my systems, so I can't test the actual issue, but
presumably the test is supposed to fail on setups that do require
larger alignments.
Or is this succeeding because we fall back to a separate allocation in
vkd3d_bind_heap_memory()? In that case though:
- Why is that a problem for the actual application?
- We may be able to detect that by aliasing multiple resources to
the same heap offset.
More information about the wine-devel
mailing list