[dawn][fuzzers] Add override for requestAdapterF/2 for fuzzers.
Bug: 341142179
Change-Id: If4ddccea16026fe432b15b5670533445200a611b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/189101
Auto-Submit: Loko Kung <lokokung@google.com>
Reviewed-by: Shrek Shao <shrekshao@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/fuzzers/DawnWireServerFuzzer.cpp b/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
index 7ddc02c..61497f8 100644
--- a/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
+++ b/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
@@ -111,9 +111,10 @@
DawnProcTable procs = dawn::native::GetProcs();
// Override requestAdapter to find an adapter that the fuzzer supports.
- procs.instanceRequestAdapter = [](WGPUInstance cInstance,
- const WGPURequestAdapterOptions* options,
- WGPURequestAdapterCallback callback, void* userdata) {
+ // TODO: crbug.com/42241461 - Remove overrides once older entry points are deprecated.
+ static constexpr auto RequestAdapter = [](WGPUInstance cInstance,
+ WGPURequestAdapterCallback2 callback, void* userdata1,
+ void* userdata2) -> WGPUFuture {
std::vector<dawn::native::Adapter> adapters =
dawn::native::Instance(reinterpret_cast<dawn::native::InstanceBase*>(cInstance))
.EnumerateAdapters();
@@ -121,11 +122,40 @@
if (sAdapterSupported(adapter)) {
WGPUAdapter cAdapter = adapter.Get();
dawn::native::GetProcs().adapterAddRef(cAdapter);
- callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata);
- return;
+ callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata1, userdata2);
+ return {};
}
}
- callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata);
+ callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata1,
+ userdata2);
+ return {};
+ };
+ procs.instanceRequestAdapter = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+ WGPURequestAdapterCallback callback, void* userdata) {
+ RequestAdapter(
+ cInstance,
+ [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+ void* callback, void* userdata) {
+ auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+ cb(status, adapter, message, userdata);
+ },
+ reinterpret_cast<void*>(callback), userdata);
+ };
+ procs.instanceRequestAdapterF = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+ WGPURequestAdapterCallbackInfo callbackInfo) -> WGPUFuture {
+ return RequestAdapter(
+ cInstance,
+ [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+ void* callback, void* userdata) {
+ auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+ cb(status, adapter, message, userdata);
+ },
+ reinterpret_cast<void*>(callbackInfo.callback), callbackInfo.userdata);
+ };
+ procs.instanceRequestAdapter2 = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+ WGPURequestAdapterCallbackInfo2 callbackInfo) -> WGPUFuture {
+ return RequestAdapter(cInstance, callbackInfo.callback, callbackInfo.userdata1,
+ callbackInfo.userdata2);
};
dawnProcSetProcs(&procs);
diff --git a/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp b/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp
index b30c205..fbe0259 100644
--- a/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp
+++ b/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp
@@ -85,9 +85,10 @@
DawnProcTable procs = dawn::native::GetProcs();
// Override requestAdapter to find an adapter that the fuzzer supports.
- procs.instanceRequestAdapter = [](WGPUInstance cInstance,
- const WGPURequestAdapterOptions* options,
- WGPURequestAdapterCallback callback, void* userdata) {
+ // TODO: crbug.com/42241461 - Remove overrides once older entry points are deprecated.
+ static constexpr auto RequestAdapter = [](WGPUInstance cInstance,
+ WGPURequestAdapterCallback2 callback, void* userdata1,
+ void* userdata2) -> WGPUFuture {
std::vector<dawn::native::Adapter> adapters =
dawn::native::Instance(reinterpret_cast<dawn::native::InstanceBase*>(cInstance))
.EnumerateAdapters();
@@ -95,11 +96,40 @@
if (sAdapterSupported(adapter)) {
WGPUAdapter cAdapter = adapter.Get();
dawn::native::GetProcs().adapterAddRef(cAdapter);
- callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata);
- return;
+ callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata1, userdata2);
+ return {};
}
}
- callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata);
+ callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata1,
+ userdata2);
+ return {};
+ };
+ procs.instanceRequestAdapter = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+ WGPURequestAdapterCallback callback, void* userdata) {
+ RequestAdapter(
+ cInstance,
+ [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+ void* callback, void* userdata) {
+ auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+ cb(status, adapter, message, userdata);
+ },
+ reinterpret_cast<void*>(callback), userdata);
+ };
+ procs.instanceRequestAdapterF = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+ WGPURequestAdapterCallbackInfo callbackInfo) -> WGPUFuture {
+ return RequestAdapter(
+ cInstance,
+ [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+ void* callback, void* userdata) {
+ auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+ cb(status, adapter, message, userdata);
+ },
+ reinterpret_cast<void*>(callbackInfo.callback), callbackInfo.userdata);
+ };
+ procs.instanceRequestAdapter2 = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+ WGPURequestAdapterCallbackInfo2 callbackInfo) -> WGPUFuture {
+ return RequestAdapter(cInstance, callbackInfo.callback, callbackInfo.userdata1,
+ callbackInfo.userdata2);
};
dawnProcSetProcs(&procs);