Description
The CTS validation tests use a buffer descriptor with both MAP_READ
and COPY_SRC
to obtain an invalid buffer. For most tests, the CTS requests devices with all reported adapter features. On Mac, this includes the mappable-primary-buffers
feature which makes it legal to set both MAP_READ
and COPY_SRC
. This results in CTS tests failing because they expect an error due to an invalid buffer, but the buffer is valid and no error is raised.
One such test is 'webgpu:api,validation,encoding,cmds,clearBuffer:buffer_state:bufferState="invalid"'
. It currently fails due to #7391, but with those fixes, it fails for the above reason.
I confirmed that modifying the CTS not to request the mappable-primary-buffers
feature resolves the issue. Since the spec says:
Enabling features may not necessarily be desirable, as doing so may have a performance impact. Because of this, and to improve portability across devices and implementations, applications should generally only request features that they may actually require.
Our behavior seems defensible, so perhaps the best course of action here is to request that the CTS not automatically request the mappable-primary-buffers
feature whenever it is available. (It currently has logic to block the core-features-and-limits
feature, so this is an easy change to make to the CTS, as long as it will be accepted. There are currently no other features blocked in this manner.)