Fix Emulated OOB Index In Primitive Restart Tests
Recognizes an OOB vertex index to show consistent behavior when trying to emulate an OOB index across backends. Bug: dawn:575 Change-Id: Ie06d6706614843c75c217f7b3b144dc25996cd0b Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34924 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
This commit is contained in:
parent
f0a0c38623
commit
224a3a4ab5
|
@ -34,9 +34,15 @@ class IndexFormatTest : public DawnTest {
|
|||
wgpu::PrimitiveTopology primitiveTopology = wgpu::PrimitiveTopology::TriangleStrip) {
|
||||
wgpu::ShaderModule vsModule = utils::CreateShaderModuleFromWGSL(device, R"(
|
||||
[[location(0)]] var<in> pos : vec4<f32>;
|
||||
[[builtin(vertex_idx)]] var<in> idx : u32;
|
||||
[[builtin(position)]] var<out> Position : vec4<f32>;
|
||||
[[stage(vertex)]] fn main() -> void {
|
||||
Position = pos;
|
||||
# 0xFFFFFFFE is a designated invalid index used by some tests.
|
||||
if (idx == 0xFFFFFFFEu) {
|
||||
Position = vec4<f32>(0.0, 0.0, 0.0, 1.0);
|
||||
} else {
|
||||
Position = pos;
|
||||
}
|
||||
})");
|
||||
|
||||
wgpu::ShaderModule fsModule = utils::CreateShaderModuleFromWGSL(device, R"(
|
||||
|
@ -287,13 +293,6 @@ TEST_P(TriangleStripPrimitiveRestartTests, Uint32PrimitiveRestart) {
|
|||
// Same as the above test, but uses an OOB index to emulate primitive restart being disabled,
|
||||
// causing point C to be written to.
|
||||
TEST_P(TriangleStripPrimitiveRestartTests, Uint32WithoutPrimitiveRestart) {
|
||||
// TODO: Re-enable for all backends after robust vertex access is implemented.
|
||||
// The behavior of OOB indexes is not strictly defined on non-D3D12 platforms.
|
||||
DAWN_SKIP_TEST_IF(!IsD3D12());
|
||||
// OOB indexes should return a (0,0,0,1) vertex in D3D12, however this does not occur on Intel
|
||||
// GPUs, so we must skip this test on Intel for now.
|
||||
DAWN_SKIP_TEST_IF(IsIntel() && IsD3D12());
|
||||
|
||||
wgpu::RenderPipeline pipeline = MakeTestPipeline(wgpu::IndexFormat::Uint32);
|
||||
wgpu::Buffer indexBuffer =
|
||||
utils::CreateBufferFromData<uint32_t>(device, wgpu::BufferUsage::Index,
|
||||
|
@ -419,13 +418,6 @@ TEST_P(LineStripPrimitiveRestartTests, Uint32PrimitiveRestart) {
|
|||
// Same as the above test, but uses an OOB index to emulate primitive restart being disabled,
|
||||
// causing point A to be written to.
|
||||
TEST_P(LineStripPrimitiveRestartTests, Uint32WithoutPrimitiveRestart) {
|
||||
// TODO: Re-enable for all backends after robust vertex access is implemented.
|
||||
// The behavior of OOB indexes is not strictly defined on non-D3D12 platforms.
|
||||
DAWN_SKIP_TEST_IF(!IsD3D12());
|
||||
// OOB indexes should return a (0,0,0,1) vertex in D3D12, however this does not occur on Intel
|
||||
// GPUs, so we must skip this test on Intel for now.
|
||||
DAWN_SKIP_TEST_IF(IsIntel() && IsD3D12());
|
||||
|
||||
wgpu::RenderPipeline pipeline =
|
||||
MakeTestPipeline(wgpu::IndexFormat::Uint32, wgpu::PrimitiveTopology::LineStrip);
|
||||
|
||||
|
|
Loading…
Reference in New Issue