Default initialize all descriptors
Some dawn_unittests crash on some configurations because the
uninitialized |label| member crashed string serialization.
Default initialize all descriptors to avoid this problem.
Bug: none
Change-Id: I6ea1851ebb6f54690a28ba396e0beaa85d8670cc
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/16260
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
diff --git a/examples/CHelloTriangle.cpp b/examples/CHelloTriangle.cpp
index 0d36090..73c3cdf 100644
--- a/examples/CHelloTriangle.cpp
+++ b/examples/CHelloTriangle.cpp
@@ -29,9 +29,7 @@
queue = wgpuDeviceCreateQueue(device);
{
- WGPUSwapChainDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUSwapChainDescriptor descriptor = {};
descriptor.implementation = GetSwapChainImplementation();
swapchain = wgpuDeviceCreateSwapChain(device, nullptr, &descriptor);
}
@@ -58,28 +56,23 @@
utils::CreateShaderModule(device, utils::SingleShaderStage::Fragment, fs).Release();
{
- WGPURenderPipelineDescriptor descriptor;
- descriptor.label = nullptr;
- descriptor.nextInChain = nullptr;
+ WGPURenderPipelineDescriptor descriptor = {};
- descriptor.vertexStage.nextInChain = nullptr;
descriptor.vertexStage.module = vsModule;
descriptor.vertexStage.entryPoint = "main";
- WGPUProgrammableStageDescriptor fragmentStage;
- fragmentStage.nextInChain = nullptr;
+ WGPUProgrammableStageDescriptor fragmentStage = {};
fragmentStage.module = fsModule;
fragmentStage.entryPoint = "main";
descriptor.fragmentStage = &fragmentStage;
descriptor.sampleCount = 1;
- WGPUBlendDescriptor blendDescriptor;
+ WGPUBlendDescriptor blendDescriptor = {};
blendDescriptor.operation = WGPUBlendOperation_Add;
blendDescriptor.srcFactor = WGPUBlendFactor_One;
blendDescriptor.dstFactor = WGPUBlendFactor_One;
- WGPUColorStateDescriptor colorStateDescriptor;
- colorStateDescriptor.nextInChain = nullptr;
+ WGPUColorStateDescriptor colorStateDescriptor = {};
colorStateDescriptor.format = swapChainFormat;
colorStateDescriptor.alphaBlend = blendDescriptor;
colorStateDescriptor.colorBlend = blendDescriptor;
@@ -88,22 +81,18 @@
descriptor.colorStateCount = 1;
descriptor.colorStates = &colorStateDescriptor;
- WGPUPipelineLayoutDescriptor pl;
- pl.nextInChain = nullptr;
- pl.label = nullptr;
+ WGPUPipelineLayoutDescriptor pl = {};
pl.bindGroupLayoutCount = 0;
pl.bindGroupLayouts = nullptr;
descriptor.layout = wgpuDeviceCreatePipelineLayout(device, &pl);
- WGPUVertexStateDescriptor vertexState;
- vertexState.nextInChain = nullptr;
+ WGPUVertexStateDescriptor vertexState = {};
vertexState.indexFormat = WGPUIndexFormat_Uint32;
vertexState.vertexBufferCount = 0;
vertexState.vertexBuffers = nullptr;
descriptor.vertexState = &vertexState;
- WGPURasterizationStateDescriptor rasterizationState;
- rasterizationState.nextInChain = nullptr;
+ WGPURasterizationStateDescriptor rasterizationState = {};
rasterizationState.frontFace = WGPUFrontFace_CCW;
rasterizationState.cullMode = WGPUCullMode_None;
rasterizationState.depthBias = 0;
@@ -126,10 +115,8 @@
void frame() {
WGPUTextureView backbufferView = wgpuSwapChainGetCurrentTextureView(swapchain);
- WGPURenderPassDescriptor renderpassInfo;
- renderpassInfo.nextInChain = nullptr;
- renderpassInfo.label = nullptr;
- WGPURenderPassColorAttachmentDescriptor colorAttachment;
+ WGPURenderPassDescriptor renderpassInfo = {};
+ WGPURenderPassColorAttachmentDescriptor colorAttachment = {};
{
colorAttachment.attachment = backbufferView;
colorAttachment.resolveTarget = nullptr;
diff --git a/src/fuzzers/DawnWireServerFuzzer.cpp b/src/fuzzers/DawnWireServerFuzzer.cpp
index 9e3cbd6..aa0da42 100644
--- a/src/fuzzers/DawnWireServerFuzzer.cpp
+++ b/src/fuzzers/DawnWireServerFuzzer.cpp
@@ -52,9 +52,7 @@
WGPUSwapChain ErrorDeviceCreateSwapChain(WGPUDevice device,
WGPUSurface surface,
const WGPUSwapChainDescriptor*) {
- WGPUSwapChainDescriptor desc;
- desc.nextInChain = nullptr;
- desc.label = nullptr;
+ WGPUSwapChainDescriptor desc = {};
// A 0 implementation will trigger a swapchain creation error.
desc.implementation = 0;
return sOriginalDeviceCreateSwapChain(device, surface, &desc);
diff --git a/src/tests/end2end/BufferTests.cpp b/src/tests/end2end/BufferTests.cpp
index 427216b..e80747c 100644
--- a/src/tests/end2end/BufferTests.cpp
+++ b/src/tests/end2end/BufferTests.cpp
@@ -392,8 +392,7 @@
}
wgpu::CreateBufferMappedResult CreateBufferMapped(wgpu::BufferUsage usage, uint64_t size) {
- wgpu::BufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
+ wgpu::BufferDescriptor descriptor = {};
descriptor.size = size;
descriptor.usage = usage;
@@ -414,8 +413,7 @@
template <WGPUBufferMapAsyncStatus expectedStatus = WGPUBufferMapAsyncStatus_Success>
wgpu::CreateBufferMappedResult CreateBufferMappedAsyncAndWait(wgpu::BufferUsage usage,
uint64_t size) {
- wgpu::BufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
+ wgpu::BufferDescriptor descriptor = {};
descriptor.size = size;
descriptor.usage = usage;
diff --git a/src/tests/end2end/DeviceLostTests.cpp b/src/tests/end2end/DeviceLostTests.cpp
index c450274..10afcd2 100644
--- a/src/tests/end2end/DeviceLostTests.cpp
+++ b/src/tests/end2end/DeviceLostTests.cpp
@@ -178,10 +178,9 @@
TEST_P(DeviceLostTest, CreateComputePipelineFails) {
SetCallbackAndLoseForTesting();
- wgpu::ComputePipelineDescriptor descriptor;
+ wgpu::ComputePipelineDescriptor descriptor = {};
descriptor.layout = nullptr;
descriptor.computeStage.module = nullptr;
- descriptor.nextInChain = nullptr;
ASSERT_DEVICE_ERROR(device.CreateComputePipeline(&descriptor));
}
@@ -218,8 +217,7 @@
TEST_P(DeviceLostTest, CreateSwapChainFails) {
SetCallbackAndLoseForTesting();
- wgpu::SwapChainDescriptor descriptor;
- descriptor.nextInChain = nullptr;
+ wgpu::SwapChainDescriptor descriptor = {};
ASSERT_DEVICE_ERROR(device.CreateSwapChain(nullptr, &descriptor));
}
diff --git a/src/tests/unittests/wire/WireArgumentTests.cpp b/src/tests/unittests/wire/WireArgumentTests.cpp
index f9c55b6..21d5aaf 100644
--- a/src/tests/unittests/wire/WireArgumentTests.cpp
+++ b/src/tests/unittests/wire/WireArgumentTests.cpp
@@ -48,8 +48,7 @@
// Test that the wire is able to send arrays of numerical values
TEST_F(WireArgumentTests, ValueArrayArgument) {
// Create a bindgroup.
- WGPUBindGroupLayoutDescriptor bglDescriptor;
- bglDescriptor.nextInChain = nullptr;
+ WGPUBindGroupLayoutDescriptor bglDescriptor = {};
bglDescriptor.bindingCount = 0;
bglDescriptor.bindings = nullptr;
@@ -57,8 +56,7 @@
WGPUBindGroupLayout apiBgl = api.GetNewBindGroupLayout();
EXPECT_CALL(api, DeviceCreateBindGroupLayout(apiDevice, _)).WillOnce(Return(apiBgl));
- WGPUBindGroupDescriptor bindGroupDescriptor;
- bindGroupDescriptor.nextInChain = nullptr;
+ WGPUBindGroupDescriptor bindGroupDescriptor = {};
bindGroupDescriptor.layout = bgl;
bindGroupDescriptor.bindingCount = 0;
bindGroupDescriptor.bindings = nullptr;
@@ -97,35 +95,31 @@
// Test that the wire is able to send C strings
TEST_F(WireArgumentTests, CStringArgument) {
// Create shader module
- WGPUShaderModuleDescriptor vertexDescriptor;
- vertexDescriptor.nextInChain = nullptr;
+ WGPUShaderModuleDescriptor vertexDescriptor = {};
vertexDescriptor.codeSize = 0;
WGPUShaderModule vsModule = wgpuDeviceCreateShaderModule(device, &vertexDescriptor);
WGPUShaderModule apiVsModule = api.GetNewShaderModule();
EXPECT_CALL(api, DeviceCreateShaderModule(apiDevice, _)).WillOnce(Return(apiVsModule));
// Create the color state descriptor
- WGPUBlendDescriptor blendDescriptor;
+ WGPUBlendDescriptor blendDescriptor = {};
blendDescriptor.operation = WGPUBlendOperation_Add;
blendDescriptor.srcFactor = WGPUBlendFactor_One;
blendDescriptor.dstFactor = WGPUBlendFactor_One;
- WGPUColorStateDescriptor colorStateDescriptor;
- colorStateDescriptor.nextInChain = nullptr;
+ WGPUColorStateDescriptor colorStateDescriptor = {};
colorStateDescriptor.format = WGPUTextureFormat_RGBA8Unorm;
colorStateDescriptor.alphaBlend = blendDescriptor;
colorStateDescriptor.colorBlend = blendDescriptor;
colorStateDescriptor.writeMask = WGPUColorWriteMask_All;
// Create the input state
- WGPUVertexStateDescriptor vertexState;
- vertexState.nextInChain = nullptr;
+ WGPUVertexStateDescriptor vertexState = {};
vertexState.indexFormat = WGPUIndexFormat_Uint32;
vertexState.vertexBufferCount = 0;
vertexState.vertexBuffers = nullptr;
// Create the rasterization state
- WGPURasterizationStateDescriptor rasterizationState;
- rasterizationState.nextInChain = nullptr;
+ WGPURasterizationStateDescriptor rasterizationState = {};
rasterizationState.frontFace = WGPUFrontFace_CCW;
rasterizationState.cullMode = WGPUCullMode_None;
rasterizationState.depthBias = 0;
@@ -133,14 +127,13 @@
rasterizationState.depthBiasClamp = 0.0;
// Create the depth-stencil state
- WGPUStencilStateFaceDescriptor stencilFace;
+ WGPUStencilStateFaceDescriptor stencilFace = {};
stencilFace.compare = WGPUCompareFunction_Always;
stencilFace.failOp = WGPUStencilOperation_Keep;
stencilFace.depthFailOp = WGPUStencilOperation_Keep;
stencilFace.passOp = WGPUStencilOperation_Keep;
- WGPUDepthStencilStateDescriptor depthStencilState;
- depthStencilState.nextInChain = nullptr;
+ WGPUDepthStencilStateDescriptor depthStencilState = {};
depthStencilState.format = WGPUTextureFormat_Depth24PlusStencil8;
depthStencilState.depthWriteEnabled = false;
depthStencilState.depthCompare = WGPUCompareFunction_Always;
@@ -150,8 +143,7 @@
depthStencilState.stencilWriteMask = 0xff;
// Create the pipeline layout
- WGPUPipelineLayoutDescriptor layoutDescriptor;
- layoutDescriptor.nextInChain = nullptr;
+ WGPUPipelineLayoutDescriptor layoutDescriptor = {};
layoutDescriptor.bindGroupLayoutCount = 0;
layoutDescriptor.bindGroupLayouts = nullptr;
WGPUPipelineLayout layout = wgpuDeviceCreatePipelineLayout(device, &layoutDescriptor);
@@ -159,15 +151,12 @@
EXPECT_CALL(api, DeviceCreatePipelineLayout(apiDevice, _)).WillOnce(Return(apiLayout));
// Create pipeline
- WGPURenderPipelineDescriptor pipelineDescriptor;
- pipelineDescriptor.nextInChain = nullptr;
+ WGPURenderPipelineDescriptor pipelineDescriptor = {};
- pipelineDescriptor.vertexStage.nextInChain = nullptr;
pipelineDescriptor.vertexStage.module = vsModule;
pipelineDescriptor.vertexStage.entryPoint = "main";
- WGPUProgrammableStageDescriptor fragmentStage;
- fragmentStage.nextInChain = nullptr;
+ WGPUProgrammableStageDescriptor fragmentStage = {};
fragmentStage.module = vsModule;
fragmentStage.entryPoint = "main";
pipelineDescriptor.fragmentStage = &fragmentStage;
@@ -204,8 +193,7 @@
WGPUCommandEncoder apiEncoder = api.GetNewCommandEncoder();
EXPECT_CALL(api, DeviceCreateCommandEncoder(apiDevice, nullptr)).WillOnce(Return(apiEncoder));
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = 8;
descriptor.usage =
static_cast<WGPUBufferUsage>(WGPUBufferUsage_CopySrc | WGPUBufferUsage_CopyDst);
@@ -262,8 +250,7 @@
// Test that the wire is able to send structures that contain pure values (non-objects)
TEST_F(WireArgumentTests, StructureOfValuesArgument) {
- WGPUSamplerDescriptor descriptor;
- descriptor.nextInChain = nullptr;
+ WGPUSamplerDescriptor descriptor = {};
descriptor.magFilter = WGPUFilterMode_Linear;
descriptor.minFilter = WGPUFilterMode_Nearest;
descriptor.mipmapFilter = WGPUFilterMode_Linear;
@@ -296,8 +283,7 @@
// Test that the wire is able to send structures that contain objects
TEST_F(WireArgumentTests, StructureOfObjectArrayArgument) {
- WGPUBindGroupLayoutDescriptor bglDescriptor;
- bglDescriptor.nextInChain = nullptr;
+ WGPUBindGroupLayoutDescriptor bglDescriptor = {};
bglDescriptor.bindingCount = 0;
bglDescriptor.bindings = nullptr;
@@ -305,8 +291,7 @@
WGPUBindGroupLayout apiBgl = api.GetNewBindGroupLayout();
EXPECT_CALL(api, DeviceCreateBindGroupLayout(apiDevice, _)).WillOnce(Return(apiBgl));
- WGPUPipelineLayoutDescriptor descriptor;
- descriptor.nextInChain = nullptr;
+ WGPUPipelineLayoutDescriptor descriptor = {};
descriptor.bindGroupLayoutCount = 1;
descriptor.bindGroupLayouts = &bgl;
@@ -337,7 +322,7 @@
WGPUBindingType_UniformBuffer, false, false, WGPUTextureViewDimension_2D,
WGPUTextureComponentType_Float},
};
- WGPUBindGroupLayoutDescriptor bglDescriptor;
+ WGPUBindGroupLayoutDescriptor bglDescriptor = {};
bglDescriptor.bindingCount = NUM_BINDINGS;
bglDescriptor.bindings = bindings;
@@ -366,8 +351,7 @@
TEST_F(WireArgumentTests, DISABLED_NullptrInArray) {
WGPUBindGroupLayout nullBGL = nullptr;
- WGPUPipelineLayoutDescriptor descriptor;
- descriptor.nextInChain = nullptr;
+ WGPUPipelineLayoutDescriptor descriptor = {};
descriptor.bindGroupLayoutCount = 1;
descriptor.bindGroupLayouts = &nullBGL;
diff --git a/src/tests/unittests/wire/WireBufferMappingTests.cpp b/src/tests/unittests/wire/WireBufferMappingTests.cpp
index 69b1062..5bfc159 100644
--- a/src/tests/unittests/wire/WireBufferMappingTests.cpp
+++ b/src/tests/unittests/wire/WireBufferMappingTests.cpp
@@ -97,9 +97,7 @@
mockCreateBufferMappedCallback =
std::make_unique<StrictMock<MockBufferCreateMappedCallback>>();
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = kBufferSize;
apiBuffer = api.GetNewBuffer();
@@ -498,9 +496,7 @@
// Test successful CreateBufferMapped
TEST_F(WireBufferMappingTests, CreateBufferMappedSuccess) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = 4;
WGPUBuffer apiBuffer = api.GetNewBuffer();
@@ -526,9 +522,7 @@
// Test that releasing after CreateBufferMapped does not call Unmap
TEST_F(WireBufferMappingTests, ReleaseAfterCreateBufferMapped) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = 4;
WGPUBuffer apiBuffer = api.GetNewBuffer();
@@ -554,9 +548,7 @@
// Test that it is valid to map a buffer after CreateBufferMapped and Unmap
TEST_F(WireBufferMappingTests, CreateBufferMappedThenMapSuccess) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = 4;
WGPUBuffer apiBuffer = api.GetNewBuffer();
@@ -599,9 +591,7 @@
// Test that it is invalid to map a buffer after CreateBufferMapped before Unmap
TEST_F(WireBufferMappingTests, CreateBufferMappedThenMapFailure) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = 4;
WGPUBuffer apiBuffer = api.GetNewBuffer();
@@ -641,9 +631,7 @@
// Test successful CreateBufferMappedAsync
TEST_F(WireBufferMappingTests, CreateBufferMappedAsyncSuccess) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = kBufferSize;
WGPUCreateBufferMappedResult apiResult;
@@ -686,9 +674,7 @@
// Test CreateBufferMappedAsync with map error
TEST_F(WireBufferMappingTests, CreateBufferMappedAsyncMapError) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
WGPUCreateBufferMappedResult apiResult;
apiResult.buffer = apiBuffer;
@@ -720,9 +706,7 @@
// Test that the CreateBufferMappedCallback isn't fired twice when unmap() is called inside the
// callback
TEST_F(WireBufferMappingTests, UnmapInsideCreateBufferMappedAsyncCallback) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = kBufferSize;
WGPUCreateBufferMappedResult apiResult;
@@ -759,9 +743,7 @@
// Test that the CreateBufferMappedCallback isn't fired twice when the buffer is deleted inside
// the callback
TEST_F(WireBufferMappingTests, ReleaseInsideCreateBufferMappedAsyncCallback) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = kBufferSize;
WGPUCreateBufferMappedResult apiResult;
@@ -798,9 +780,7 @@
// Test that the CreateBufferMappedCallback isn't fired twice when the buffer is destroyed inside
// the callback
TEST_F(WireBufferMappingTests, DestroyInsideCreateBufferMappedAsyncCallback) {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = kBufferSize;
WGPUCreateBufferMappedResult apiResult;
diff --git a/src/tests/unittests/wire/WireFenceTests.cpp b/src/tests/unittests/wire/WireFenceTests.cpp
index 59d2b26..0f186c5 100644
--- a/src/tests/unittests/wire/WireFenceTests.cpp
+++ b/src/tests/unittests/wire/WireFenceTests.cpp
@@ -50,9 +50,7 @@
FlushClient();
}
{
- WGPUFenceDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUFenceDescriptor descriptor = {};
descriptor.initialValue = 1;
apiFence = api.GetNewFence();
diff --git a/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp b/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp
index a4f085b..ebed585 100644
--- a/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp
+++ b/src/tests/unittests/wire/WireMemoryTransferServiceTests.cpp
@@ -155,9 +155,7 @@
using ServerWriteHandle = server::MockMemoryTransferService::MockWriteHandle;
std::pair<WGPUBuffer, WGPUBuffer> CreateBuffer() {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = sizeof(mBufferContent);
WGPUBuffer apiBuffer = api.GetNewBuffer();
@@ -171,9 +169,7 @@
}
std::pair<WGPUCreateBufferMappedResult, WGPUCreateBufferMappedResult> CreateBufferMapped() {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = sizeof(mBufferContent);
WGPUBuffer apiBuffer = api.GetNewBuffer();
@@ -193,9 +189,7 @@
}
WGPUCreateBufferMappedResult CreateBufferMappedAsync() {
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = sizeof(mBufferContent);
wgpuDeviceCreateBufferMappedAsync(device, &descriptor, ToMockCreateBufferMappedCallback,
@@ -879,9 +873,7 @@
// Mock a WriteHandle creation failure
MockWriteHandleCreationFailure();
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = sizeof(mBufferContent);
// Failed creation of a WriteHandle is a fatal failure. The client synchronously receives
@@ -1035,9 +1027,7 @@
// Mock a WriteHandle creation failure
MockWriteHandleCreationFailure();
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = sizeof(mBufferContent);
WGPUCreateBufferMappedResult result = wgpuDeviceCreateBufferMapped(device, &descriptor);
@@ -1081,9 +1071,7 @@
// Note: The handle is not serialized because sychronously opening it failed.
EXPECT_CALL(clientMemoryTransferService, OnWriteHandleDestroy(clientHandle)).Times(1);
- WGPUBufferDescriptor descriptor;
- descriptor.nextInChain = nullptr;
- descriptor.label = nullptr;
+ WGPUBufferDescriptor descriptor = {};
descriptor.size = sizeof(mBufferContent);
WGPUCreateBufferMappedResult result = wgpuDeviceCreateBufferMapped(device, &descriptor);
diff --git a/src/tests/unittests/wire/WireOptionalTests.cpp b/src/tests/unittests/wire/WireOptionalTests.cpp
index da888d0..20d2435 100644
--- a/src/tests/unittests/wire/WireOptionalTests.cpp
+++ b/src/tests/unittests/wire/WireOptionalTests.cpp
@@ -26,9 +26,7 @@
// Test passing nullptr instead of objects - object as value version
TEST_F(WireOptionalTests, OptionalObjectValue) {
- WGPUBindGroupLayoutDescriptor bglDesc;
- bglDesc.nextInChain = nullptr;
- bglDesc.label = nullptr;
+ WGPUBindGroupLayoutDescriptor bglDesc = {};
bglDesc.bindingCount = 0;
WGPUBindGroupLayout bgl = wgpuDeviceCreateBindGroupLayout(device, &bglDesc);
@@ -43,9 +41,7 @@
binding.textureView = nullptr;
binding.buffer = nullptr;
- WGPUBindGroupDescriptor bgDesc;
- bgDesc.nextInChain = nullptr;
- bgDesc.label = nullptr;
+ WGPUBindGroupDescriptor bgDesc = {};
bgDesc.layout = bgl;
bgDesc.bindingCount = 1;
bgDesc.bindings = &binding;
@@ -69,36 +65,31 @@
// Test that the wire is able to send optional pointers to structures
TEST_F(WireOptionalTests, OptionalStructPointer) {
// Create shader module
- WGPUShaderModuleDescriptor vertexDescriptor;
- vertexDescriptor.nextInChain = nullptr;
- vertexDescriptor.label = nullptr;
+ WGPUShaderModuleDescriptor vertexDescriptor = {};
vertexDescriptor.codeSize = 0;
WGPUShaderModule vsModule = wgpuDeviceCreateShaderModule(device, &vertexDescriptor);
WGPUShaderModule apiVsModule = api.GetNewShaderModule();
EXPECT_CALL(api, DeviceCreateShaderModule(apiDevice, _)).WillOnce(Return(apiVsModule));
// Create the color state descriptor
- WGPUBlendDescriptor blendDescriptor;
+ WGPUBlendDescriptor blendDescriptor = {};
blendDescriptor.operation = WGPUBlendOperation_Add;
blendDescriptor.srcFactor = WGPUBlendFactor_One;
blendDescriptor.dstFactor = WGPUBlendFactor_One;
- WGPUColorStateDescriptor colorStateDescriptor;
- colorStateDescriptor.nextInChain = nullptr;
+ WGPUColorStateDescriptor colorStateDescriptor = {};
colorStateDescriptor.format = WGPUTextureFormat_RGBA8Unorm;
colorStateDescriptor.alphaBlend = blendDescriptor;
colorStateDescriptor.colorBlend = blendDescriptor;
colorStateDescriptor.writeMask = WGPUColorWriteMask_All;
// Create the input state
- WGPUVertexStateDescriptor vertexState;
- vertexState.nextInChain = nullptr;
+ WGPUVertexStateDescriptor vertexState = {};
vertexState.indexFormat = WGPUIndexFormat_Uint32;
vertexState.vertexBufferCount = 0;
vertexState.vertexBuffers = nullptr;
// Create the rasterization state
- WGPURasterizationStateDescriptor rasterizationState;
- rasterizationState.nextInChain = nullptr;
+ WGPURasterizationStateDescriptor rasterizationState = {};
rasterizationState.frontFace = WGPUFrontFace_CCW;
rasterizationState.cullMode = WGPUCullMode_None;
rasterizationState.depthBias = 0;
@@ -106,14 +97,13 @@
rasterizationState.depthBiasClamp = 0.0;
// Create the depth-stencil state
- WGPUStencilStateFaceDescriptor stencilFace;
+ WGPUStencilStateFaceDescriptor stencilFace = {};
stencilFace.compare = WGPUCompareFunction_Always;
stencilFace.failOp = WGPUStencilOperation_Keep;
stencilFace.depthFailOp = WGPUStencilOperation_Keep;
stencilFace.passOp = WGPUStencilOperation_Keep;
- WGPUDepthStencilStateDescriptor depthStencilState;
- depthStencilState.nextInChain = nullptr;
+ WGPUDepthStencilStateDescriptor depthStencilState = {};
depthStencilState.format = WGPUTextureFormat_Depth24PlusStencil8;
depthStencilState.depthWriteEnabled = false;
depthStencilState.depthCompare = WGPUCompareFunction_Always;
@@ -123,9 +113,7 @@
depthStencilState.stencilWriteMask = 0xff;
// Create the pipeline layout
- WGPUPipelineLayoutDescriptor layoutDescriptor;
- layoutDescriptor.nextInChain = nullptr;
- layoutDescriptor.label = nullptr;
+ WGPUPipelineLayoutDescriptor layoutDescriptor = {};
layoutDescriptor.bindGroupLayoutCount = 0;
layoutDescriptor.bindGroupLayouts = nullptr;
WGPUPipelineLayout layout = wgpuDeviceCreatePipelineLayout(device, &layoutDescriptor);
@@ -133,16 +121,12 @@
EXPECT_CALL(api, DeviceCreatePipelineLayout(apiDevice, _)).WillOnce(Return(apiLayout));
// Create pipeline
- WGPURenderPipelineDescriptor pipelineDescriptor;
- pipelineDescriptor.nextInChain = nullptr;
- pipelineDescriptor.label = nullptr;
+ WGPURenderPipelineDescriptor pipelineDescriptor = {};
- pipelineDescriptor.vertexStage.nextInChain = nullptr;
pipelineDescriptor.vertexStage.module = vsModule;
pipelineDescriptor.vertexStage.entryPoint = "main";
- WGPUProgrammableStageDescriptor fragmentStage;
- fragmentStage.nextInChain = nullptr;
+ WGPUProgrammableStageDescriptor fragmentStage = {};
fragmentStage.module = vsModule;
fragmentStage.entryPoint = "main";
pipelineDescriptor.fragmentStage = &fragmentStage;