mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-17 08:57:26 +00:00
Implement Queue::OnSubmittedWorkDone
This is the replacement for Fence in the single-queue WebGPU world. To keep this CL focused, it doesn't deprecate the fences yet. Bug: chromium:1177476 Change-Id: I09d60732ec67bc1deb49f7a9d57699c049475acf Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41723 Auto-Submit: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
0a295c027d
commit
c093db250e
@@ -40,6 +40,34 @@ namespace dawn_wire { namespace server {
|
||||
return true;
|
||||
}
|
||||
|
||||
void Server::OnQueueWorkDone(WGPUQueueWorkDoneStatus status, QueueWorkDoneUserdata* data) {
|
||||
ReturnQueueWorkDoneCallbackCmd cmd;
|
||||
cmd.queue = data->queue;
|
||||
cmd.requestSerial = data->requestSerial;
|
||||
cmd.status = status;
|
||||
|
||||
SerializeCommand(cmd);
|
||||
}
|
||||
|
||||
bool Server::DoQueueOnSubmittedWorkDone(ObjectId queueId,
|
||||
uint64_t signalValue,
|
||||
uint64_t requestSerial) {
|
||||
auto* queue = QueueObjects().Get(queueId);
|
||||
if (queue == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto userdata = MakeUserdata<QueueWorkDoneUserdata>();
|
||||
userdata->queue = ObjectHandle{queueId, queue->generation};
|
||||
userdata->requestSerial = requestSerial;
|
||||
|
||||
mProcs.queueOnSubmittedWorkDone(
|
||||
queue->handle, signalValue,
|
||||
ForwardToServer<decltype(&Server::OnQueueWorkDone)>::Func<&Server::OnQueueWorkDone>(),
|
||||
userdata.release());
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Server::DoQueueWriteBufferInternal(ObjectId queueId,
|
||||
ObjectId bufferId,
|
||||
uint64_t bufferOffset,
|
||||
|
||||
Reference in New Issue
Block a user