WebGPUComputeCommandEncoder.cpp [plain text]
#include "config.h"
#include "WebGPUComputeCommandEncoder.h"
#if ENABLE(WEBGPU)
#include "GPUCommandBuffer.h"
#include "GPUComputeCommandEncoder.h"
#include "GPUSize.h"
#include "WebGPUBuffer.h"
#include "WebGPUCommandBuffer.h"
#include "WebGPUComputePipelineState.h"
#include "WebGPURenderingContext.h"
namespace WebCore {
inline GPUSize GPUSizeMake(WebGPUSize size)
{
return {size.width, size.height, size.depth};
}
Ref<WebGPUComputeCommandEncoder> WebGPUComputeCommandEncoder::create(WebGPURenderingContext* context, WebGPUCommandBuffer* buffer)
{
return adoptRef(*new WebGPUComputeCommandEncoder(context, buffer));
}
WebGPUComputeCommandEncoder::WebGPUComputeCommandEncoder(WebGPURenderingContext* context, WebGPUCommandBuffer* buffer)
: WebGPUObject(context)
{
m_computeCommandEncoder = buffer->commandBuffer()->createComputeCommandEncoder();
}
WebGPUComputeCommandEncoder::~WebGPUComputeCommandEncoder() = default;
void WebGPUComputeCommandEncoder::setComputePipelineState(WebGPUComputePipelineState& pipelineState)
{
if (!m_computeCommandEncoder)
return;
m_computeCommandEncoder->setComputePipelineState(pipelineState.computePipelineState());
}
void WebGPUComputeCommandEncoder::setBuffer(WebGPUBuffer& buffer, unsigned offset, unsigned index)
{
if (!m_computeCommandEncoder)
return;
m_computeCommandEncoder->setBuffer(buffer.buffer(), offset, index);
}
void WebGPUComputeCommandEncoder::dispatch(WebGPUSize threadgroupsPerGrid, WebGPUSize threadsPerThreadgroup)
{
if (!m_computeCommandEncoder)
return;
m_computeCommandEncoder->dispatch(GPUSizeMake(threadgroupsPerGrid), GPUSizeMake(threadsPerThreadgroup));
}
void WebGPUComputeCommandEncoder::endEncoding()
{
if (!m_computeCommandEncoder)
return;
m_computeCommandEncoder->endEncoding();
}
}
#endif