Skip to content

Commit c7b8ea3

Browse files
committed
fix wgpu api use
1 parent adde52d commit c7b8ea3

10 files changed

+121
-90
lines changed

src/wgpu/wgpu-buffer.cpp

+12-9
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Result DeviceImpl::createBuffer(const BufferDesc& desc, const void* initData, IB
5959
bufferDesc.usage |= WGPUBufferUsage_CopyDst;
6060
}
6161

62-
bufferDesc.label = desc.label;
62+
bufferDesc.label = translateString(desc.label);
6363
buffer->m_buffer = m_ctx.api.wgpuDeviceCreateBuffer(m_ctx.device, &bufferDesc);
6464
if (!buffer->m_buffer)
6565
{
@@ -74,13 +74,13 @@ Result DeviceImpl::createBuffer(const BufferDesc& desc, const void* initData, IB
7474

7575
// Wait for the command buffer to finish executing
7676
{
77-
WGPUQueueWorkDoneStatus status = WGPUQueueWorkDoneStatus_Unknown;
78-
WGPUQueueWorkDoneCallbackInfo2 callbackInfo = {};
77+
WGPUQueueWorkDoneStatus status = WGPUQueueWorkDoneStatus(0);
78+
WGPUQueueWorkDoneCallbackInfo callbackInfo = {};
7979
callbackInfo.mode = WGPUCallbackMode_WaitAnyOnly;
8080
callbackInfo.callback = [](WGPUQueueWorkDoneStatus status_, void* userdata1, void* userdata2)
8181
{ *(WGPUQueueWorkDoneStatus*)userdata1 = status_; };
8282
callbackInfo.userdata1 = &status;
83-
WGPUFuture future = m_ctx.api.wgpuQueueOnSubmittedWorkDone2(queue, callbackInfo);
83+
WGPUFuture future = m_ctx.api.wgpuQueueOnSubmittedWorkDone(queue, callbackInfo);
8484
constexpr size_t futureCount = 1;
8585
WGPUFutureWaitInfo futures[futureCount] = {{future}};
8686
uint64_t timeoutNS = UINT64_MAX;
@@ -119,17 +119,20 @@ Result DeviceImpl::mapBuffer(IBuffer* buffer, CpuAccessMode mode, void** outData
119119
size_t offset = 0;
120120
size_t size = bufferImpl->m_desc.size;
121121

122-
WGPUMapAsyncStatus status = WGPUMapAsyncStatus_Unknown;
123-
WGPUBufferMapCallbackInfo2 callbackInfo = {};
122+
WGPUMapAsyncStatus status = WGPUMapAsyncStatus(0);
123+
WGPUBufferMapCallbackInfo callbackInfo = {};
124124
callbackInfo.mode = WGPUCallbackMode_WaitAnyOnly;
125-
callbackInfo.callback = [](WGPUMapAsyncStatus status_, const char* message, void* userdata1, void* userdata2)
125+
callbackInfo.callback = [](WGPUMapAsyncStatus status_, WGPUStringView message, void* userdata1, void* userdata2)
126126
{
127127
*(WGPUMapAsyncStatus*)userdata1 = status_;
128128
if (status_ != WGPUMapAsyncStatus_Success)
129-
fprintf(stderr, "MapAsync wait failed with message: %s\n", message);
129+
{
130+
static_cast<DeviceImpl*>(userdata2)->reportError("wgpuBufferMapAsync", message);
131+
}
130132
};
131133
callbackInfo.userdata1 = &status;
132-
WGPUFuture future = m_ctx.api.wgpuBufferMapAsync2(bufferImpl->m_buffer, mapMode, offset, size, callbackInfo);
134+
callbackInfo.userdata2 = this;
135+
WGPUFuture future = m_ctx.api.wgpuBufferMapAsync(bufferImpl->m_buffer, mapMode, offset, size, callbackInfo);
133136
WGPUFutureWaitInfo futures[1] = {{future}};
134137
uint64_t timeoutNS = UINT64_MAX;
135138
WGPUWaitStatus waitStatus =

src/wgpu/wgpu-command.cpp

+17-17
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class CommandRecorder
9797

9898
Result CommandRecorder::record(CommandBufferImpl* commandBuffer)
9999
{
100-
auto existingError = m_device->getAndClearLastError();
100+
auto existingError = m_device->getAndClearLastUncapturedError();
101101
if (existingError != WGPUErrorType_NoError)
102102
m_device->warning("Web GPU device had reported error before command record.");
103103

@@ -138,7 +138,7 @@ Result CommandRecorder::record(CommandBufferImpl* commandBuffer)
138138
return SLANG_FAIL;
139139
}
140140

141-
auto lastError = m_device->getAndClearLastError();
141+
auto lastError = m_device->getAndClearLastUncapturedError();
142142
if (lastError != WGPUErrorType_NoError)
143143
{
144144
return SLANG_FAIL;
@@ -237,13 +237,13 @@ void CommandRecorder::cmdCopyTexture(const commands::CopyTexture& cmd)
237237
uint32_t srcZ = cmd.srcOffset.z + cmd.srcSubresource.layer + layer;
238238
uint32_t dstZ = cmd.dstOffset.z + cmd.dstSubresource.layer + layer;
239239

240-
WGPUImageCopyTexture source = {};
240+
WGPUTexelCopyTextureInfo source = {};
241241
source.texture = src->m_texture;
242242
source.origin = {cmd.srcOffset.x, cmd.srcOffset.y, srcZ};
243243
source.mipLevel = srcMip;
244244
source.aspect = WGPUTextureAspect_All;
245245

246-
WGPUImageCopyTexture destination = {};
246+
WGPUTexelCopyTextureInfo destination = {};
247247
destination.texture = dst->m_texture;
248248
destination.origin = {cmd.dstOffset.x, cmd.dstOffset.y, dstZ};
249249
destination.mipLevel = dstMip;
@@ -307,13 +307,13 @@ void CommandRecorder::cmdCopyTextureToBuffer(const commands::CopyTextureToBuffer
307307
SLANG_RHI_ASSERT(srcLayer == 0 || srcOffset.z == 0);
308308
uint32_t z = srcOffset.z + srcLayer;
309309

310-
WGPUImageCopyTexture source = {};
310+
WGPUTexelCopyTextureInfo source = {};
311311
source.texture = src->m_texture;
312312
source.origin = {srcOffset.x, srcOffset.y, z};
313313
source.mipLevel = srcMip;
314314
source.aspect = WGPUTextureAspect_All;
315315

316-
WGPUImageCopyBuffer destination = {};
316+
WGPUTexelCopyBufferInfo destination = {};
317317
destination.buffer = dst->m_buffer;
318318
destination.layout.offset = dstOffset;
319319
destination.layout.bytesPerRow = dstRowPitch;
@@ -365,7 +365,7 @@ void CommandRecorder::cmdUploadTextureData(const commands::UploadTextureData& cm
365365
{
366366
uint32_t mip = subresourceRange.mip + mipOffset;
367367

368-
WGPUImageCopyBuffer srcRegion;
368+
WGPUTexelCopyBufferInfo srcRegion;
369369
srcRegion.buffer = buffer->m_buffer;
370370
srcRegion.layout.bytesPerRow = srLayout->rowPitch;
371371
srcRegion.layout.rowsPerImage = srLayout->rowCount;
@@ -376,7 +376,7 @@ void CommandRecorder::cmdUploadTextureData(const commands::UploadTextureData& cm
376376
SLANG_RHI_ASSERT(layer == 0 || cmd.offset.z == 0);
377377
uint32_t z = cmd.offset.z + layer;
378378

379-
WGPUImageCopyTexture dstRegion;
379+
WGPUTexelCopyTextureInfo dstRegion;
380380
dstRegion.aspect = WGPUTextureAspect_All;
381381
dstRegion.mipLevel = mip;
382382
dstRegion.origin = {(uint32_t)cmd.offset.x, (uint32_t)cmd.offset.y, z};
@@ -784,11 +784,11 @@ void CommandRecorder::cmdSetTextureState(const commands::SetTextureState& cmd)
784784
void CommandRecorder::cmdPushDebugGroup(const commands::PushDebugGroup& cmd)
785785
{
786786
if (m_renderPassEncoder)
787-
m_ctx.api.wgpuRenderPassEncoderPushDebugGroup(m_renderPassEncoder, cmd.name);
787+
m_ctx.api.wgpuRenderPassEncoderPushDebugGroup(m_renderPassEncoder, translateString(cmd.name));
788788
else if (m_computePassEncoder)
789-
m_ctx.api.wgpuComputePassEncoderPushDebugGroup(m_computePassEncoder, cmd.name);
789+
m_ctx.api.wgpuComputePassEncoderPushDebugGroup(m_computePassEncoder, translateString(cmd.name));
790790
else
791-
m_ctx.api.wgpuCommandEncoderPushDebugGroup(m_commandEncoder, cmd.name);
791+
m_ctx.api.wgpuCommandEncoderPushDebugGroup(m_commandEncoder, translateString(cmd.name));
792792
}
793793

794794
void CommandRecorder::cmdPopDebugGroup(const commands::PopDebugGroup& cmd)
@@ -804,11 +804,11 @@ void CommandRecorder::cmdPopDebugGroup(const commands::PopDebugGroup& cmd)
804804
void CommandRecorder::cmdInsertDebugMarker(const commands::InsertDebugMarker& cmd)
805805
{
806806
if (m_renderPassEncoder)
807-
m_ctx.api.wgpuRenderPassEncoderInsertDebugMarker(m_renderPassEncoder, cmd.name);
807+
m_ctx.api.wgpuRenderPassEncoderInsertDebugMarker(m_renderPassEncoder, translateString(cmd.name));
808808
else if (m_computePassEncoder)
809-
m_ctx.api.wgpuComputePassEncoderInsertDebugMarker(m_computePassEncoder, cmd.name);
809+
m_ctx.api.wgpuComputePassEncoderInsertDebugMarker(m_computePassEncoder, translateString(cmd.name));
810810
else
811-
m_ctx.api.wgpuCommandEncoderInsertDebugMarker(m_commandEncoder, cmd.name);
811+
m_ctx.api.wgpuCommandEncoderInsertDebugMarker(m_commandEncoder, translateString(cmd.name));
812812
}
813813

814814
void CommandRecorder::cmdWriteTimestamp(const commands::WriteTimestamp& cmd)
@@ -911,13 +911,13 @@ Result CommandQueueImpl::waitOnHost()
911911

912912
// Wait for the command buffer to finish executing
913913
{
914-
WGPUQueueWorkDoneStatus status = WGPUQueueWorkDoneStatus_Unknown;
915-
WGPUQueueWorkDoneCallbackInfo2 callbackInfo = {};
914+
WGPUQueueWorkDoneStatus status = WGPUQueueWorkDoneStatus(0);
915+
WGPUQueueWorkDoneCallbackInfo callbackInfo = {};
916916
callbackInfo.mode = WGPUCallbackMode_WaitAnyOnly;
917917
callbackInfo.callback = [](WGPUQueueWorkDoneStatus status_, void* userdata1, void* userdata2)
918918
{ *(WGPUQueueWorkDoneStatus*)userdata1 = status_; };
919919
callbackInfo.userdata1 = &status;
920-
WGPUFuture future = device->m_ctx.api.wgpuQueueOnSubmittedWorkDone2(m_queue, callbackInfo);
920+
WGPUFuture future = device->m_ctx.api.wgpuQueueOnSubmittedWorkDone(m_queue, callbackInfo);
921921
constexpr size_t futureCount = 1;
922922
WGPUFutureWaitInfo futures[futureCount] = {{future}};
923923
uint64_t timeoutNS = UINT64_MAX;

0 commit comments

Comments
 (0)