WebGPUComputePassEncoder.cpp [plain text]
#include "config.h"
#include "WebGPUComputePassEncoder.h"
#if ENABLE(WEBGPU)
#include "GPUComputePassEncoder.h"
#include "GPUProgrammablePassEncoder.h"
#include "Logging.h"
#include "WebGPUComputePipeline.h"
namespace WebCore {
Ref<WebGPUComputePassEncoder> WebGPUComputePassEncoder::create(RefPtr<GPUComputePassEncoder>&& encoder)
{
return adoptRef(*new WebGPUComputePassEncoder(WTFMove(encoder)));
}
WebGPUComputePassEncoder::WebGPUComputePassEncoder(RefPtr<GPUComputePassEncoder>&& encoder)
: m_passEncoder { WTFMove(encoder) }
{
}
void WebGPUComputePassEncoder::setPipeline(const WebGPUComputePipeline& pipeline)
{
if (!m_passEncoder) {
LOG(WebGPU, "GPUComputePassEncoder::setPipeline(): Invalid operation!");
return;
}
if (!pipeline.computePipeline()) {
LOG(WebGPU, "GPUComputePassEncoder::setPipeline(): Invalid pipeline!");
return;
}
m_passEncoder->setPipeline(makeRef(*pipeline.computePipeline()));
}
void WebGPUComputePassEncoder::dispatch(unsigned x, unsigned y, unsigned z)
{
if (!m_passEncoder) {
LOG(WebGPU, "GPUComputePassEncoder::dispatch(): Invalid operation!");
return;
}
m_passEncoder->dispatch(x, y, z);
}
GPUProgrammablePassEncoder* WebGPUComputePassEncoder::passEncoder()
{
return m_passEncoder.get();
}
const GPUProgrammablePassEncoder* WebGPUComputePassEncoder::passEncoder() const
{
return m_passEncoder.get();
}
}
#endif // ENABLE(WEBGPU)