blob: c22b6c774471b87e0c36dfe36f11a9a9d5f92c62 [file] [log] [blame]
/*
* Copyright (c) 2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#import "config.h"
#import "Queue.h"
#import "Buffer.h"
#import "CommandBuffer.h"
#import "WebGPUExt.h"
namespace WebGPU {
void Queue::onSubmittedWorkDone(uint64_t signalValue, std::function<void(WGPUQueueWorkDoneStatus)>&& callback)
{
UNUSED_PARAM(signalValue);
UNUSED_PARAM(callback);
}
void Queue::submit(Vector<std::reference_wrapper<const CommandBuffer>>&& commands)
{
UNUSED_PARAM(commands);
}
void Queue::writeBuffer(const Buffer& buffer, uint64_t bufferOffset, const void* data, size_t size)
{
UNUSED_PARAM(buffer);
UNUSED_PARAM(bufferOffset);
UNUSED_PARAM(data);
UNUSED_PARAM(size);
}
void Queue::writeTexture(const WGPUImageCopyTexture* destination, const void* data, size_t dataSize, const WGPUTextureDataLayout* dataLayout, const WGPUExtent3D* writeSize)
{
UNUSED_PARAM(destination);
UNUSED_PARAM(data);
UNUSED_PARAM(dataSize);
UNUSED_PARAM(dataLayout);
UNUSED_PARAM(writeSize);
}
void Queue::setLabel(const char* label)
{
UNUSED_PARAM(label);
}
} // namespace WebGPU
void wgpuQueueRelease(WGPUQueue queue)
{
delete queue;
}
void wgpuQueueOnSubmittedWorkDone(WGPUQueue queue, uint64_t signalValue, WGPUQueueWorkDoneCallback callback, void* userdata)
{
queue->queue.onSubmittedWorkDone(signalValue, [callback, userdata] (WGPUQueueWorkDoneStatus status) {
callback(status, userdata);
});
}
void wgpuQueueSubmit(WGPUQueue queue, uint32_t commandCount, const WGPUCommandBuffer* commands)
{
Vector<std::reference_wrapper<const WebGPU::CommandBuffer>> commandsToForward;
for (uint32_t i = 0; i < commandCount; ++i)
commandsToForward.append(commands[i]->commandBuffer);
queue->queue.submit(WTFMove(commandsToForward));
}
void wgpuQueueWriteBuffer(WGPUQueue queue, WGPUBuffer buffer, uint64_t bufferOffset, const void* data, size_t size)
{
queue->queue.writeBuffer(buffer->buffer, bufferOffset, data, size);
}
void wgpuQueueWriteTexture(WGPUQueue queue, const WGPUImageCopyTexture* destination, const void* data, size_t dataSize, const WGPUTextureDataLayout* dataLayout, const WGPUExtent3D* writeSize)
{
queue->queue.writeTexture(destination, data, dataSize, dataLayout, writeSize);
}
void wgpuQueueSetLabel(WGPUQueue queue, const char* label)
{
queue->queue.setLabel(label);
}