Skip to content

Commit 2cf8eab

Browse files
committed
Additional call_after_successful_finish tests
1 parent 8fcd343 commit 2cf8eab

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed

src/webgpu/api/validation/encoding/encoder_state.spec.ts

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,13 @@ g.test('call_after_successful_finish')
9898
.desc(`Test that encoding command after a successful finish generates a validation error.`)
9999
.params(u =>
100100
u
101-
.combine('callCmd', ['beginComputePass', 'beginRenderPass', 'insertDebugMarker'])
101+
.combine('callCmd', [
102+
'beginComputePass',
103+
'beginRenderPass',
104+
'finishAndSubmitFirst',
105+
'finishAndSubmitSecond',
106+
'insertDebugMarker',
107+
])
102108
.beginSubcases()
103109
.combine('prePassType', ['compute', 'render', 'no-op'])
104110
.combine('IsEncoderFinished', [false, true])
@@ -115,8 +121,9 @@ g.test('call_after_successful_finish')
115121
pass.end();
116122
}
117123

124+
let buffer;
118125
if (IsEncoderFinished) {
119-
encoder.finish();
126+
buffer = encoder.finish();
120127
}
121128

122129
switch (callCmd) {
@@ -129,6 +136,9 @@ g.test('call_after_successful_finish')
129136
t.expectValidationError(() => {
130137
pass.end();
131138
}, IsEncoderFinished);
139+
if (buffer) {
140+
t.device.queue.submit([buffer]);
141+
}
132142
}
133143
break;
134144
case 'beginRenderPass':
@@ -140,16 +150,41 @@ g.test('call_after_successful_finish')
140150
t.expectValidationError(() => {
141151
pass.end();
142152
}, IsEncoderFinished);
153+
if (buffer) {
154+
t.device.queue.submit([buffer]);
155+
}
156+
}
157+
break;
158+
case 'finishAndSubmitFirst':
159+
t.expectValidationError(() => {
160+
encoder.finish();
161+
}, IsEncoderFinished);
162+
if (buffer) {
163+
t.device.queue.submit([buffer]);
164+
}
165+
break;
166+
case 'finishAndSubmitSecond':
167+
{
168+
let secondBuffer: GPUCommandBuffer;
169+
t.expectValidationError(() => {
170+
secondBuffer = encoder.finish();
171+
}, IsEncoderFinished);
172+
t.expectValidationError(() => {
173+
t.device.queue.submit([secondBuffer]);
174+
}, IsEncoderFinished);
143175
}
144176
break;
145177
case 'insertDebugMarker':
146178
t.expectValidationError(() => {
147179
encoder.insertDebugMarker('');
148180
}, IsEncoderFinished);
181+
if (buffer) {
182+
t.device.queue.submit([buffer]);
183+
}
149184
break;
150185
}
151186

152-
if (!IsEncoderFinished) {
187+
if (!IsEncoderFinished && !callCmd.startsWith("finish")) {
153188
encoder.finish();
154189
}
155190
});

0 commit comments

Comments
 (0)