Move noop dispatch handling to the Metal backend
This workaround was only necessary in the Metal backend but it was easy to put it in the frontend so it was put there. However, this simplification gets in the way of a validation change in the follow-up CL. So we move the nooping to the Metal backend. Bug: dawn:632 Change-Id: I0a9957a1bc9bdd7867eb8c60fcab710832c13af2 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49886 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Stephen White <senorblanco@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
parent
063ea17f68
commit
9dad30d926
|
@ -64,14 +64,10 @@ namespace dawn_native {
|
|||
DAWN_TRY(mCommandBufferState.ValidateCanDispatch());
|
||||
}
|
||||
|
||||
// Skip noop dispatch. It is a workaround for system crashes on 0 dispatches on some
|
||||
// platforms.
|
||||
if (x != 0 && y != 0 && z != 0) {
|
||||
DispatchCmd* dispatch = allocator->Allocate<DispatchCmd>(Command::Dispatch);
|
||||
dispatch->x = x;
|
||||
dispatch->y = y;
|
||||
dispatch->z = z;
|
||||
}
|
||||
|
||||
return {};
|
||||
});
|
||||
|
|
|
@ -858,6 +858,11 @@ namespace dawn_native { namespace metal {
|
|||
case Command::Dispatch: {
|
||||
DispatchCmd* dispatch = mCommands.NextCommand<DispatchCmd>();
|
||||
|
||||
// Skip noop dispatches, it can causes issues on some systems.
|
||||
if (dispatch->x == 0 || dispatch->y == 0 || dispatch->z == 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
bindGroups.Apply(encoder);
|
||||
storageBufferLengths.Apply(encoder, lastPipeline);
|
||||
|
||||
|
|
Loading…
Reference in New Issue