1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
writeTexture + copyBufferToTexture + copyTextureToBuffer validation tests.
Test coverage:
* resource usages:
- texture_usage_must_be_valid: for GPUTextureUsage::COPY_SRC, GPUTextureUsage::COPY_DST flags.
- buffer_usage_must_be_valid: for GPUBufferUsage::COPY_SRC, GPUBufferUsage::COPY_DST flags.
* textureCopyView:
- texture_must_be_valid: for valid, destroyed, error textures.
- sample_count_must_be_1: for sample count 1 and 4.
- mip_level_must_be_in_range: for various combinations of mipLevel and mipLevelCount.
- format: for all formats with full and non-full copies on width, height, and depth.
- texel_block_alignment_on_origin: for all formats and coordinates.
* bufferCopyView:
- buffer_must_be_valid: for valid, destroyed, error buffers.
- bytes_per_row_alignment: for bytesPerRow to be 256-byte aligned or not, and bytesPerRow is required or not.
* linear texture data:
- bound_on_rows_per_image: for various combinations of copyDepth (1, >1), copyHeight, rowsPerImage.
- offset_plus_required_bytes_in_copy_overflow
- required_bytes_in_copy: testing minimal data size and data size too small for various combinations of bytesPerRow, rowsPerImage, copyExtent and offset. for the copy method, bytesPerRow is computed as bytesInACompleteRow aligned to be a multiple of 256 + bytesPerRowPadding * 256.
- texel_block_alignment_on_rows_per_image: for all formats.
- offset_alignment: for all formats.
- bound_on_offset: for various combinations of offset and dataSize.
* texture copy range:
- 1d_texture: copyExtent.height isn't 1, copyExtent.depthOrArrayLayers isn't 1.
- texel_block_alignment_on_size: for all formats and coordinates.
- texture_range_conditons: for all coordinate and various combinations of origin, copyExtent, textureSize and mipLevel.
TODO: more test coverage for 1D and 3D textures.
|