Add ValidateCanRecordCommands to Debug Marker APIs
Add ValidateCanRecordCommands to debug marker calls in ProgrammablePassEncoder.
Fixes issue found by ClusterFuzz.
Bug=chromium:935902
Bug=dawn:44
Change-Id: If1a4890a9de49a1872711a7b1a875ddc13130e88
Reviewed-on: https://dawn-review.googlesource.com/c/5080
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn_native/ProgrammablePassEncoder.cpp b/src/dawn_native/ProgrammablePassEncoder.cpp
index 7a16f31..143144b 100644
--- a/src/dawn_native/ProgrammablePassEncoder.cpp
+++ b/src/dawn_native/ProgrammablePassEncoder.cpp
@@ -39,6 +39,10 @@
}
void ProgrammablePassEncoder::InsertDebugMarker(const char* groupLabel) {
+ if (mTopLevelEncoder->ConsumedError(ValidateCanRecordCommands())) {
+ return;
+ }
+
InsertDebugMarkerCmd* cmd =
mAllocator->Allocate<InsertDebugMarkerCmd>(Command::InsertDebugMarker);
new (cmd) InsertDebugMarkerCmd;
@@ -49,11 +53,19 @@
}
void ProgrammablePassEncoder::PopDebugGroup() {
+ if (mTopLevelEncoder->ConsumedError(ValidateCanRecordCommands())) {
+ return;
+ }
+
PopDebugGroupCmd* cmd = mAllocator->Allocate<PopDebugGroupCmd>(Command::PopDebugGroup);
new (cmd) PopDebugGroupCmd;
}
void ProgrammablePassEncoder::PushDebugGroup(const char* groupLabel) {
+ if (mTopLevelEncoder->ConsumedError(ValidateCanRecordCommands())) {
+ return;
+ }
+
PushDebugGroupCmd* cmd = mAllocator->Allocate<PushDebugGroupCmd>(Command::PushDebugGroup);
new (cmd) PushDebugGroupCmd;
cmd->length = strlen(groupLabel);