Open billhollings opened 3 years ago
At least one of those is a dupe. I found the AMD wide texture issue a while back and filed FB8818522.
Okay. Thanks. Good to hear it's repeatable.
One odd thing I've noticed is that the AMD failure only happens on pixel formats where the pixel size is 4 bytes or less.
For future reference, I've also found a number of other issues which are specific to AMD devices via running the CTS:
MTLHeap
min_lod_clamp
and bias
is brokenFloat32
multisampled texture when drawingsimd_is_helper_thread()
Depth16
MS textures properlysimd_broadcast()
callsFor Intel devices:
There's also one that applies to both Intel and AMD, but not M1:
@cdavis5e Thanks for posting that list. It will help me streamline what to report as I work through CTS failures, particularly on AMD.
Disappointing that their premium gaming GPU (until M1 catches on) is not behaving well.
[edit]
dEQP-VK.api.copy_and_blit.core.blit_image.all_formats.depth_stencil.1d.s8_uint_s8_uint.optimal_optimal_nearest
.The point here is that we seem to be in the realm of arbitrary GPU-specific edge cases, and it becomes really difficult to work around all the combinations within the context of Vulkan capabilities that we can enable or disable with flags.
I don't think this can be solved in general. A Vulkan Portability implementation is expected to take into account the known issues with low level drivers, just like a Vulkan driver knows about the quirks of particular GPUs it targets. Based on this, you'd adjust the set of exposed formats/features at the initialization time.
BC7_RGBAUnorm
&BC7_RGBAUnorm_sRGB
reserved Mode 8 (zeroed low byte) returns alpha 1.0 instead of required 0.0
While the specs suggest all-zero result, they do not require it.
KDFS:
Encoding the low byte as zero is reserved and should not be used when encoding a BPTC texture; hardware decoders processing a texel block with a low byte of 0 should return 0 for all channels of all texels.
D3D11:
Mode 8 (LSB 0x00) is reserved and should not be used by the encoder. If this mode is given to the hardware, an all 0 block will be returned.
While the specs suggest all-zero result, they do not require it.
I'm not sure I understand your point. The KDFS and D2D11 quotes you provide are actually very clear that 0 will (or should) be returned. And the Vulkan spec clarifies that it requires the KDFS requirements.
While neither of these indicate a strict must requirement, the D3D11 will requirement, in particular, is pretty clear, any GPU built for D3D11 would follow this to be compliant, and Apple GPUs really should do so as well, for cross-platform compliance.
Are you thinking that we should modify CTS to not enforce this requirement, under the argument that the language is not a strict must requirement?
Strictly speaking, neither D3D Functional Spec, nor KDFS are applicable to Metal conformance, especially wrt reserved inputs. On top of that, Apple's OpenGL drivers never exposed BC7 even on capable hardware.
We had the same issue in ANGLE and decided to simply avoid testing BC7 texture sampling with LSB 0x00 as it does not serve any practical purpose anyway.
FWIW, VK-GL-CTS already has some exceptions wrt invalid / reserved compressed payloads.
We had the same issue in ANGLE and decided to simply avoid testing BC7 texture sampling with LSB 0x00 as it does not serve any practical purpose anyway.
FWIW, VK-GL-CTS already has some exceptions wrt invalid / reserved compressed payloads.
Added GitLab 3501 to remove testing alpha value behavior under Mode 8 under Vulkan.
With CTS testing, we are starting to uncover issues that appear on particular platforms inconsistently:
RGBA8Unorm
Clear color normalization rounding (0.75 becomes 192 instead of expected 191)Intel
dEQP-VK.api.smoke.triangle
dEQP-VK.api.smoke.triangle_ext_structs
dEQP-VK.api.smoke.asm_triangle
dEQP-VK.api.smoke.asm_triangle_no_opname
dEQP-VK.api.smoke.unused_resolve_attachment
RGBA8Unorm
16K-wide texture fails copy to bufferdEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src16384x4_dst16384x4.r8g8b8a8_unorm.r8g8b8a8_unorm.optimal_optimal
RG16Unorm
TextureView->Texture copy rounds values< 1e-41
are to-0.0
dEQP-VK.api.copy_and_blit.core.image_to_image.all_formats.color.2d.r16g16_unorm.r32_sfloat.optimal_optimal
(0.0, 0.0, 0.0, 1.0)
appears as transparent red(1.0, 0.0, 0.0, 0.0)
for formatsR4G4B4A4_UNORM_PACK16
orR5G5B5A1_UNORM_PACK16
dEQP-VK.pipeline.sampler.view_type.*.format.r4g4b4a4_unorm_pack16.address_modes.all_mode_clamp_to_border_opaque_black
dEQP-VK.pipeline.sampler.view_type.*.format.r5g5b5a1_unorm_pack16.address_modes.all_mode_clamp_to_border_opaque_black
_( is any of: 1d, 1d_unnormalized, 1d_array, 2d, 2d_unnormalized, 2darray, 3d)
`dEQP-VK.pipeline.sampler.border_swizzle.r4g4b4a4_unorm_pack16..opaque_black
<br/>
dEQP-VK.pipeline.sampler.border_swizzle.r5g5b5a1_unorm_pack16.*.opaque_black`dEQP-VK.api.copy_and_blit.core.image_to_image.all_formats.color.2d.r8g8b8a8_unorm.r8g8b8a8_snorm.optimal_optimal
dEQP-VK.api.copy_and_blit.core.image_to_image.all_formats.color.2d.r8g8b8a8_unorm.a8b8g8r8_snorm_pack32.optimal_optimal
dEQP-VK.api.copy_and_blit.core.image_to_image.all_formats.color.2d.r8g8b8a8_uint.r8g8b8a8_snorm.optimal_optimal
dEQP-VK.api.copy_and_blit.core.image_to_image.all_formats.color.2d.r8g8b8a8_uint.a8b8g8r8_snorm_pack32.optimal_optimal
...BC7_RGBAUnorm
&BC7_RGBAUnorm_sRGB
reserved Mode 8 (zeroed low byte) returns alpha 1.0 instead of required 0.0M1FB9732481dEQP-VK.texture.compressed.bc7_unorm_block_2d_pot
dEQP-VK.texture.compressed.bc7_srgb_block_2d_pot
dEQP-VK.texture.compressed.bc7_unorm_block_2d_npot
dEQP-VK.texture.compressed.bc7_srgb_block_2d_npot
dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_pot
dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_pot
dEQP-VK.texture.compressed_3D.bc7_unorm_block_3d_npot
dEQP-VK.texture.compressed_3D.bc7_srgb_block_3d_npot