Skip to content

Commit 4b39ce3

Browse files
committed
Additional call_after_successful_finish tests
1 parent 6fcbc57 commit 4b39ce3

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
@@ -96,7 +96,13 @@ g.test('call_after_successful_finish')
9696
.desc(`Test that encoding command after a successful finish generates a validation error.`)
9797
.params(u =>
9898
u
99-
.combine('callCmd', ['beginComputePass', 'beginRenderPass', 'insertDebugMarker'])
99+
.combine('callCmd', [
100+
'beginComputePass',
101+
'beginRenderPass',
102+
'finishAndSubmitFirst',
103+
'finishAndSubmitSecond',
104+
'insertDebugMarker',
105+
])
100106
.beginSubcases()
101107
.combine('prePassType', ['compute', 'render', 'no-op'])
102108
.combine('IsEncoderFinished', [false, true])
@@ -113,8 +119,9 @@ g.test('call_after_successful_finish')
113119
pass.end();
114120
}
115121

122+
let buffer;
116123
if (IsEncoderFinished) {
117-
encoder.finish();
124+
buffer = encoder.finish();
118125
}
119126

120127
switch (callCmd) {
@@ -127,6 +134,9 @@ g.test('call_after_successful_finish')
127134
t.expectValidationError(() => {
128135
pass.end();
129136
}, IsEncoderFinished);
137+
if (buffer) {
138+
t.device.queue.submit([buffer]);
139+
}
130140
}
131141
break;
132142
case 'beginRenderPass':
@@ -138,16 +148,41 @@ g.test('call_after_successful_finish')
138148
t.expectValidationError(() => {
139149
pass.end();
140150
}, IsEncoderFinished);
151+
if (buffer) {
152+
t.device.queue.submit([buffer]);
153+
}
154+
}
155+
break;
156+
case 'finishAndSubmitFirst':
157+
t.expectValidationError(() => {
158+
encoder.finish();
159+
}, IsEncoderFinished);
160+
if (buffer) {
161+
t.device.queue.submit([buffer]);
162+
}
163+
break;
164+
case 'finishAndSubmitSecond':
165+
{
166+
let secondBuffer: GPUCommandBuffer;
167+
t.expectValidationError(() => {
168+
secondBuffer = encoder.finish();
169+
}, IsEncoderFinished);
170+
t.expectValidationError(() => {
171+
t.device.queue.submit([secondBuffer]);
172+
}, IsEncoderFinished);
141173
}
142174
break;
143175
case 'insertDebugMarker':
144176
t.expectValidationError(() => {
145177
encoder.insertDebugMarker('');
146178
}, IsEncoderFinished);
179+
if (buffer) {
180+
t.device.queue.submit([buffer]);
181+
}
147182
break;
148183
}
149184

150-
if (!IsEncoderFinished) {
185+
if (!IsEncoderFinished && !callCmd.startsWith("finish")) {
151186
encoder.finish();
152187
}
153188
});

0 commit comments

Comments
 (0)