Deprecate BG[L]Desc::binding[s|Count] in favor of entr[ies|yCount]
Bug: dawn:22
Change-Id: I02188d70103a1bee25b9b2024a2ea9f785656236
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19862
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/dawn.json b/dawn.json
index 7564e53..29b99c7 100644
--- a/dawn.json
+++ b/dawn.json
@@ -77,8 +77,10 @@
"members": [
{"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true},
{"name": "layout", "type": "bind group layout"},
- {"name": "binding count", "type": "uint32_t"},
- {"name": "bindings", "type": "bind group entry", "annotation": "const*", "length": "binding count"}
+ {"name": "binding count", "type": "uint32_t", "default": 0},
+ {"name": "bindings", "type": "bind group entry", "annotation": "const*", "length": "binding count"},
+ {"name": "entry count", "type": "uint32_t", "default": 0},
+ {"name": "entries", "type": "bind group entry", "annotation": "const*", "length": "entry count"}
]
},
"bind group layout": {
@@ -104,8 +106,10 @@
"extensible": true,
"members": [
{"name": "label", "type": "char", "annotation": "const*", "length": "strlen", "optional": true},
- {"name": "binding count", "type": "uint32_t"},
- {"name": "bindings", "type": "bind group layout entry", "annotation": "const*", "length": "binding count"}
+ {"name": "binding count", "type": "uint32_t", "default": 0},
+ {"name": "bindings", "type": "bind group layout entry", "annotation": "const*", "length": "binding count"},
+ {"name": "entry count", "type": "uint32_t", "default": 0},
+ {"name": "entries", "type": "bind group layout entry", "annotation": "const*", "length": "entry count"}
]
},
"binding type": {
diff --git a/src/dawn_native/BindGroup.cpp b/src/dawn_native/BindGroup.cpp
index 85d2a38..840c404 100644
--- a/src/dawn_native/BindGroup.cpp
+++ b/src/dawn_native/BindGroup.cpp
@@ -29,22 +29,22 @@
// Helper functions to perform binding-type specific validation
MaybeError ValidateBufferBinding(const DeviceBase* device,
- const BindGroupEntry& binding,
+ const BindGroupEntry& entry,
wgpu::BufferUsage requiredUsage) {
- if (binding.buffer == nullptr || binding.sampler != nullptr ||
- binding.textureView != nullptr) {
+ if (entry.buffer == nullptr || entry.sampler != nullptr ||
+ entry.textureView != nullptr) {
return DAWN_VALIDATION_ERROR("expected buffer binding");
}
- DAWN_TRY(device->ValidateObject(binding.buffer));
+ DAWN_TRY(device->ValidateObject(entry.buffer));
- uint64_t bufferSize = binding.buffer->GetSize();
+ uint64_t bufferSize = entry.buffer->GetSize();
// Handle wgpu::WholeSize, avoiding overflows.
- if (binding.offset > bufferSize) {
+ if (entry.offset > bufferSize) {
return DAWN_VALIDATION_ERROR("Buffer binding doesn't fit in the buffer");
}
uint64_t bindingSize =
- (binding.size == wgpu::kWholeSize) ? bufferSize - binding.offset : binding.size;
+ (entry.size == wgpu::kWholeSize) ? bufferSize - entry.offset : entry.size;
if (bindingSize > bufferSize) {
return DAWN_VALIDATION_ERROR("Buffer binding size larger than the buffer");
@@ -56,16 +56,16 @@
// Note that no overflow can happen because we already checked that
// bufferSize >= bindingSize
- if (binding.offset > bufferSize - bindingSize) {
+ if (entry.offset > bufferSize - bindingSize) {
return DAWN_VALIDATION_ERROR("Buffer binding doesn't fit in the buffer");
}
- if (!IsAligned(binding.offset, 256)) {
+ if (!IsAligned(entry.offset, 256)) {
return DAWN_VALIDATION_ERROR(
"Buffer offset for bind group needs to be 256-byte aligned");
}
- if (!(binding.buffer->GetUsage() & requiredUsage)) {
+ if (!(entry.buffer->GetUsage() & requiredUsage)) {
return DAWN_VALIDATION_ERROR("buffer binding usage mismatch");
}
@@ -73,16 +73,16 @@
}
MaybeError ValidateTextureBinding(const DeviceBase* device,
- const BindGroupEntry& binding,
+ const BindGroupEntry& entry,
wgpu::TextureUsage requiredUsage,
const BindingInfo& bindingInfo) {
- if (binding.textureView == nullptr || binding.sampler != nullptr ||
- binding.buffer != nullptr) {
+ if (entry.textureView == nullptr || entry.sampler != nullptr ||
+ entry.buffer != nullptr) {
return DAWN_VALIDATION_ERROR("expected texture binding");
}
- DAWN_TRY(device->ValidateObject(binding.textureView));
+ DAWN_TRY(device->ValidateObject(entry.textureView));
- TextureBase* texture = binding.textureView->GetTexture();
+ TextureBase* texture = entry.textureView->GetTexture();
if (!(texture->GetUsage() & requiredUsage)) {
return DAWN_VALIDATION_ERROR("texture binding usage mismatch");
@@ -110,7 +110,7 @@
break;
}
- if (binding.textureView->GetDimension() != bindingInfo.viewDimension) {
+ if (entry.textureView->GetDimension() != bindingInfo.viewDimension) {
return DAWN_VALIDATION_ERROR("texture view dimension mismatch");
}
@@ -118,22 +118,22 @@
}
MaybeError ValidateSamplerBinding(const DeviceBase* device,
- const BindGroupEntry& binding,
+ const BindGroupEntry& entry,
wgpu::BindingType bindingType) {
- if (binding.sampler == nullptr || binding.textureView != nullptr ||
- binding.buffer != nullptr) {
+ if (entry.sampler == nullptr || entry.textureView != nullptr ||
+ entry.buffer != nullptr) {
return DAWN_VALIDATION_ERROR("expected sampler binding");
}
- DAWN_TRY(device->ValidateObject(binding.sampler));
+ DAWN_TRY(device->ValidateObject(entry.sampler));
switch (bindingType) {
case wgpu::BindingType::Sampler:
- if (binding.sampler->HasCompareFunction()) {
+ if (entry.sampler->HasCompareFunction()) {
return DAWN_VALIDATION_ERROR("Did not expect comparison sampler");
}
break;
case wgpu::BindingType::ComparisonSampler:
- if (!binding.sampler->HasCompareFunction()) {
+ if (!entry.sampler->HasCompareFunction()) {
return DAWN_VALIDATION_ERROR("Expected comparison sampler");
}
break;
@@ -153,17 +153,17 @@
}
DAWN_TRY(device->ValidateObject(descriptor->layout));
- if (descriptor->bindingCount != descriptor->layout->GetBindingCount()) {
+ if (descriptor->entryCount != descriptor->layout->GetBindingCount()) {
return DAWN_VALIDATION_ERROR("numBindings mismatch");
}
const BindGroupLayoutBase::BindingMap& bindingMap = descriptor->layout->GetBindingMap();
std::bitset<kMaxBindingsPerGroup> bindingsSet;
- for (uint32_t i = 0; i < descriptor->bindingCount; ++i) {
- const BindGroupEntry& binding = descriptor->bindings[i];
+ for (uint32_t i = 0; i < descriptor->entryCount; ++i) {
+ const BindGroupEntry& entry = descriptor->entries[i];
- const auto& it = bindingMap.find(BindingNumber(binding.binding));
+ const auto& it = bindingMap.find(BindingNumber(entry.binding));
if (it == bindingMap.end()) {
return DAWN_VALIDATION_ERROR("setting non-existent binding");
}
@@ -180,25 +180,25 @@
// Perform binding-type specific validation.
switch (bindingInfo.type) {
case wgpu::BindingType::UniformBuffer:
- DAWN_TRY(ValidateBufferBinding(device, binding, wgpu::BufferUsage::Uniform));
+ DAWN_TRY(ValidateBufferBinding(device, entry, wgpu::BufferUsage::Uniform));
break;
case wgpu::BindingType::StorageBuffer:
case wgpu::BindingType::ReadonlyStorageBuffer:
- DAWN_TRY(ValidateBufferBinding(device, binding, wgpu::BufferUsage::Storage));
+ DAWN_TRY(ValidateBufferBinding(device, entry, wgpu::BufferUsage::Storage));
break;
case wgpu::BindingType::SampledTexture:
- DAWN_TRY(ValidateTextureBinding(device, binding, wgpu::TextureUsage::Sampled,
+ DAWN_TRY(ValidateTextureBinding(device, entry, wgpu::TextureUsage::Sampled,
bindingInfo));
break;
case wgpu::BindingType::Sampler:
case wgpu::BindingType::ComparisonSampler:
- DAWN_TRY(ValidateSamplerBinding(device, binding, bindingInfo.type));
+ DAWN_TRY(ValidateSamplerBinding(device, entry, bindingInfo.type));
break;
// TODO(jiawei.shao@intel.com): support creating bind group with read-only and
// write-only storage textures.
case wgpu::BindingType::ReadonlyStorageTexture:
case wgpu::BindingType::WriteonlyStorageTexture:
- DAWN_TRY(ValidateTextureBinding(device, binding, wgpu::TextureUsage::Storage,
+ DAWN_TRY(ValidateTextureBinding(device, entry, wgpu::TextureUsage::Storage,
bindingInfo));
break;
case wgpu::BindingType::StorageTexture:
@@ -231,36 +231,36 @@
new (&mBindingData.bindings[i]) Ref<ObjectBase>();
}
- for (uint32_t i = 0; i < descriptor->bindingCount; ++i) {
- const BindGroupEntry& binding = descriptor->bindings[i];
+ for (uint32_t i = 0; i < descriptor->entryCount; ++i) {
+ const BindGroupEntry& entry = descriptor->entries[i];
BindingIndex bindingIndex =
- descriptor->layout->GetBindingIndex(BindingNumber(binding.binding));
+ descriptor->layout->GetBindingIndex(BindingNumber(entry.binding));
ASSERT(bindingIndex < mLayout->GetBindingCount());
// Only a single binding type should be set, so once we found it we can skip to the
// next loop iteration.
- if (binding.buffer != nullptr) {
+ if (entry.buffer != nullptr) {
ASSERT(mBindingData.bindings[bindingIndex].Get() == nullptr);
- mBindingData.bindings[bindingIndex] = binding.buffer;
- mBindingData.bufferData[bindingIndex].offset = binding.offset;
- uint64_t bufferSize = (binding.size == wgpu::kWholeSize)
- ? binding.buffer->GetSize() - binding.offset
- : binding.size;
+ mBindingData.bindings[bindingIndex] = entry.buffer;
+ mBindingData.bufferData[bindingIndex].offset = entry.offset;
+ uint64_t bufferSize = (entry.size == wgpu::kWholeSize)
+ ? entry.buffer->GetSize() - entry.offset
+ : entry.size;
mBindingData.bufferData[bindingIndex].size = bufferSize;
continue;
}
- if (binding.textureView != nullptr) {
+ if (entry.textureView != nullptr) {
ASSERT(mBindingData.bindings[bindingIndex].Get() == nullptr);
- mBindingData.bindings[bindingIndex] = binding.textureView;
+ mBindingData.bindings[bindingIndex] = entry.textureView;
continue;
}
- if (binding.sampler != nullptr) {
+ if (entry.sampler != nullptr) {
ASSERT(mBindingData.bindings[bindingIndex].Get() == nullptr);
- mBindingData.bindings[bindingIndex] = binding.sampler;
+ mBindingData.bindings[bindingIndex] = entry.sampler;
continue;
}
}
diff --git a/src/dawn_native/BindGroupLayout.cpp b/src/dawn_native/BindGroupLayout.cpp
index 891fb89..880e38e 100644
--- a/src/dawn_native/BindGroupLayout.cpp
+++ b/src/dawn_native/BindGroupLayout.cpp
@@ -102,26 +102,26 @@
std::set<BindingNumber> bindingsSet;
uint32_t dynamicUniformBufferCount = 0;
uint32_t dynamicStorageBufferCount = 0;
- for (BindingIndex i = 0; i < descriptor->bindingCount; ++i) {
- const BindGroupLayoutEntry& binding = descriptor->bindings[i];
- BindingNumber bindingNumber = BindingNumber(binding.binding);
+ for (uint32_t i = 0; i < descriptor->entryCount; ++i) {
+ const BindGroupLayoutEntry& entry = descriptor->entries[i];
+ BindingNumber bindingNumber = BindingNumber(entry.binding);
- DAWN_TRY(ValidateShaderStage(binding.visibility));
- DAWN_TRY(ValidateBindingType(binding.type));
- DAWN_TRY(ValidateTextureComponentType(binding.textureComponentType));
+ DAWN_TRY(ValidateShaderStage(entry.visibility));
+ DAWN_TRY(ValidateBindingType(entry.type));
+ DAWN_TRY(ValidateTextureComponentType(entry.textureComponentType));
- if (binding.viewDimension != wgpu::TextureViewDimension::Undefined) {
- DAWN_TRY(ValidateTextureViewDimension(binding.viewDimension));
+ if (entry.viewDimension != wgpu::TextureViewDimension::Undefined) {
+ DAWN_TRY(ValidateTextureViewDimension(entry.viewDimension));
// TODO(dawn:22): Remove this once users use viewDimension
- if (binding.textureDimension != wgpu::TextureViewDimension::Undefined) {
+ if (entry.textureDimension != wgpu::TextureViewDimension::Undefined) {
return DAWN_VALIDATION_ERROR(
"Cannot use both viewDimension and textureDimension");
}
} else {
// TODO(dawn:22): Remove this once users use viewDimension
- if (binding.textureDimension != wgpu::TextureViewDimension::Undefined) {
- DAWN_TRY(ValidateTextureViewDimension(binding.textureDimension));
+ if (entry.textureDimension != wgpu::TextureViewDimension::Undefined) {
+ DAWN_TRY(ValidateTextureViewDimension(entry.textureDimension));
device->EmitDeprecationWarning(
"BindGroupLayoutEntry::textureDimension is deprecated, use viewDimension "
"instead");
@@ -132,21 +132,19 @@
return DAWN_VALIDATION_ERROR("some binding index was specified more than once");
}
- DAWN_TRY(
- ValidateBindingTypeWithShaderStageVisibility(binding.type, binding.visibility));
+ DAWN_TRY(ValidateBindingTypeWithShaderStageVisibility(entry.type, entry.visibility));
- DAWN_TRY(
- ValidateStorageTextureFormat(device, binding.type, binding.storageTextureFormat));
+ DAWN_TRY(ValidateStorageTextureFormat(device, entry.type, entry.storageTextureFormat));
- switch (binding.type) {
+ switch (entry.type) {
case wgpu::BindingType::UniformBuffer:
- if (binding.hasDynamicOffset) {
+ if (entry.hasDynamicOffset) {
++dynamicUniformBufferCount;
}
break;
case wgpu::BindingType::StorageBuffer:
case wgpu::BindingType::ReadonlyStorageBuffer:
- if (binding.hasDynamicOffset) {
+ if (entry.hasDynamicOffset) {
++dynamicStorageBufferCount;
}
break;
@@ -155,7 +153,7 @@
case wgpu::BindingType::ComparisonSampler:
case wgpu::BindingType::ReadonlyStorageTexture:
case wgpu::BindingType::WriteonlyStorageTexture:
- if (binding.hasDynamicOffset) {
+ if (entry.hasDynamicOffset) {
return DAWN_VALIDATION_ERROR("Samplers and textures cannot be dynamic");
}
break;
@@ -163,7 +161,7 @@
return DAWN_VALIDATION_ERROR("storage textures aren't supported (yet)");
}
- if (binding.multisampled) {
+ if (entry.multisampled) {
return DAWN_VALIDATION_ERROR(
"BindGroupLayoutEntry::multisampled must be false (for now)");
}
@@ -273,9 +271,9 @@
BindGroupLayoutBase::BindGroupLayoutBase(DeviceBase* device,
const BindGroupLayoutDescriptor* descriptor)
- : CachedObject(device), mBindingCount(descriptor->bindingCount) {
+ : CachedObject(device), mBindingCount(descriptor->entryCount) {
std::vector<BindGroupLayoutEntry> sortedBindings(
- descriptor->bindings, descriptor->bindings + descriptor->bindingCount);
+ descriptor->entries, descriptor->entries + descriptor->entryCount);
std::sort(sortedBindings.begin(), sortedBindings.end(), SortBindingsCompare);
diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp
index 3de861f..41c7664 100644
--- a/src/dawn_native/Device.cpp
+++ b/src/dawn_native/Device.cpp
@@ -731,10 +731,25 @@
MaybeError DeviceBase::CreateBindGroupInternal(BindGroupBase** result,
const BindGroupDescriptor* descriptor) {
DAWN_TRY(ValidateIsAlive());
- if (IsValidationEnabled()) {
- DAWN_TRY(ValidateBindGroupDescriptor(this, descriptor));
+
+ // TODO(dawn:22): Remove this once users use entries/entryCount
+ BindGroupDescriptor fixedDescriptor = *descriptor;
+ if (fixedDescriptor.bindingCount != 0) {
+ if (fixedDescriptor.entryCount != 0) {
+ return DAWN_VALIDATION_ERROR("Cannot use bindings and entries at the same time");
+ } else {
+ EmitDeprecationWarning(
+ "BindGroupEntry::bindings/bindingCount is deprecated, use entries/entryCount "
+ "instead");
+ fixedDescriptor.entryCount = fixedDescriptor.bindingCount;
+ fixedDescriptor.entries = fixedDescriptor.bindings;
+ }
}
- DAWN_TRY_ASSIGN(*result, CreateBindGroupImpl(descriptor));
+
+ if (IsValidationEnabled()) {
+ DAWN_TRY(ValidateBindGroupDescriptor(this, &fixedDescriptor));
+ }
+ DAWN_TRY_ASSIGN(*result, CreateBindGroupImpl(&fixedDescriptor));
return {};
}
@@ -742,10 +757,25 @@
BindGroupLayoutBase** result,
const BindGroupLayoutDescriptor* descriptor) {
DAWN_TRY(ValidateIsAlive());
- if (IsValidationEnabled()) {
- DAWN_TRY(ValidateBindGroupLayoutDescriptor(this, descriptor));
+
+ // TODO(dawn:22): Remove this once users use entries/entryCount
+ BindGroupLayoutDescriptor fixedDescriptor = *descriptor;
+ if (fixedDescriptor.bindingCount != 0) {
+ if (fixedDescriptor.entryCount != 0) {
+ return DAWN_VALIDATION_ERROR("Cannot use bindings and entries at the same time");
+ } else {
+ EmitDeprecationWarning(
+ "BindGroupLayoutEntry::bindings/bindingCount is deprecated, use "
+ "entries/entryCount instead");
+ fixedDescriptor.entryCount = fixedDescriptor.bindingCount;
+ fixedDescriptor.entries = fixedDescriptor.bindings;
+ }
}
- DAWN_TRY_ASSIGN(*result, GetOrCreateBindGroupLayout(descriptor));
+
+ if (IsValidationEnabled()) {
+ DAWN_TRY(ValidateBindGroupLayoutDescriptor(this, &fixedDescriptor));
+ }
+ DAWN_TRY_ASSIGN(*result, GetOrCreateBindGroupLayout(&fixedDescriptor));
return {};
}
diff --git a/src/dawn_native/Pipeline.cpp b/src/dawn_native/Pipeline.cpp
index 4a0b653..6ca811f 100644
--- a/src/dawn_native/Pipeline.cpp
+++ b/src/dawn_native/Pipeline.cpp
@@ -89,8 +89,8 @@
// a Ref<BindGroupLayoutBase>, then the VkDevice will be destroyed before the
// VkDescriptorSetLayout.
BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 0;
- desc.bindings = nullptr;
+ desc.entryCount = 0;
+ desc.entries = nullptr;
BindGroupLayoutBase* bgl = nullptr;
if (GetDevice()->ConsumedError(GetDevice()->GetOrCreateBindGroupLayout(&desc), &bgl)) {
diff --git a/src/dawn_native/PipelineLayout.cpp b/src/dawn_native/PipelineLayout.cpp
index 7626c04..0f32ec6 100644
--- a/src/dawn_native/PipelineLayout.cpp
+++ b/src/dawn_native/PipelineLayout.cpp
@@ -126,13 +126,13 @@
// Data which BindGroupLayoutDescriptor will point to for creation
std::array<std::array<BindGroupLayoutEntry, kMaxBindingsPerGroup>, kMaxBindGroups>
- bindingData = {};
+ entryData = {};
- // A map of bindings to the index in |bindingData|
+ // A map of bindings to the index in |entryData|
std::array<std::map<BindingNumber, BindingIndex>, kMaxBindGroups> usedBindingsMap = {};
- // A counter of how many bindings we've populated in |bindingData|
- std::array<uint32_t, kMaxBindGroups> bindingCounts = {};
+ // A counter of how many bindings we've populated in |entryData|
+ std::array<uint32_t, kMaxBindGroups> entryCounts = {};
uint32_t bindGroupLayoutCount = 0;
for (uint32_t moduleIndex = 0; moduleIndex < count; ++moduleIndex) {
@@ -170,7 +170,7 @@
{
const auto& it = usedBindingsMap[group].find(bindingNumber);
if (it != usedBindingsMap[group].end()) {
- if (bindingSlot == bindingData[group][it->second]) {
+ if (bindingSlot == entryData[group][it->second]) {
// Already used and the data is the same. Continue.
continue;
} else {
@@ -181,12 +181,12 @@
}
}
- uint32_t currentBindingCount = bindingCounts[group];
- bindingData[group][currentBindingCount] = bindingSlot;
+ uint32_t currentBindingCount = entryCounts[group];
+ entryData[group][currentBindingCount] = bindingSlot;
usedBindingsMap[group][bindingNumber] = currentBindingCount;
- bindingCounts[group]++;
+ entryCounts[group]++;
bindGroupLayoutCount = std::max(bindGroupLayoutCount, group + 1);
}
@@ -196,8 +196,8 @@
std::array<BindGroupLayoutBase*, kMaxBindGroups> bindGroupLayouts = {};
for (uint32_t group = 0; group < bindGroupLayoutCount; ++group) {
BindGroupLayoutDescriptor desc = {};
- desc.bindings = bindingData[group].data();
- desc.bindingCount = bindingCounts[group];
+ desc.entries = entryData[group].data();
+ desc.entryCount = entryCounts[group];
// We should never produce a bad descriptor.
ASSERT(!ValidateBindGroupLayoutDescriptor(device, &desc).IsError());
diff --git a/src/tests/end2end/BindGroupTests.cpp b/src/tests/end2end/BindGroupTests.cpp
index 1efdb46..e3289cf 100644
--- a/src/tests/end2end/BindGroupTests.cpp
+++ b/src/tests/end2end/BindGroupTests.cpp
@@ -750,11 +750,11 @@
TEST_P(BindGroupTests, BindGroupLayoutVisibilityCanBeNone) {
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize);
- wgpu::BindGroupLayoutEntry binding = {0, wgpu::ShaderStage::None,
- wgpu::BindingType::UniformBuffer};
+ wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::None,
+ wgpu::BindingType::UniformBuffer};
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &entry;
wgpu::BindGroupLayout layout = device.CreateBindGroupLayout(&descriptor);
wgpu::RenderPipeline pipeline = MakeTestPipeline(renderPass, {}, {layout});
diff --git a/src/tests/end2end/DeprecatedAPITests.cpp b/src/tests/end2end/DeprecatedAPITests.cpp
index 5ee8cf4..23fc1b9 100644
--- a/src/tests/end2end/DeprecatedAPITests.cpp
+++ b/src/tests/end2end/DeprecatedAPITests.cpp
@@ -79,8 +79,8 @@
};
wgpu::BindGroupLayoutDescriptor bglDesc = {
- .bindingCount = 1,
- .bindings = &entryDesc,
+ .entryCount = 1,
+ .entries = &entryDesc,
};
EXPECT_DEPRECATION_WARNING(device.CreateBindGroupLayout(&bglDesc));
}
@@ -92,8 +92,8 @@
};
wgpu::BindGroupLayoutDescriptor bglDesc = {
- .bindingCount = 1,
- .bindings = &entryDesc,
+ .entryCount = 1,
+ .entries = &entryDesc,
};
device.CreateBindGroupLayout(&bglDesc);
}
@@ -106,8 +106,8 @@
};
wgpu::BindGroupLayoutDescriptor bglDesc = {
- .bindingCount = 1,
- .bindings = &entryDesc,
+ .entryCount = 1,
+ .entries = &entryDesc,
};
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&bglDesc));
}
@@ -121,8 +121,8 @@
};
wgpu::BindGroupLayoutDescriptor bglDesc = {
- .bindingCount = 1,
- .bindings = &entryDesc,
+ .entryCount = 1,
+ .entries = &entryDesc,
};
wgpu::BindGroupLayout layout;
EXPECT_DEPRECATION_WARNING(layout = device.CreateBindGroupLayout(&bglDesc));
@@ -152,6 +152,161 @@
ASSERT_DEVICE_ERROR(utils::MakeBindGroup(device, layout, {{0, arrayView}}));
}
+// Test for BindGroupLayout::bindings/bindingCount -> entries/entryCount
+
+// Test that creating a BGL with bindings emits a deprecation warning.
+TEST_P(DeprecationTests, BGLDescBindingIsDeprecated) {
+ wgpu::BindGroupLayoutEntry entryDesc = {
+ .type = wgpu::BindingType::Sampler,
+ };
+
+ wgpu::BindGroupLayoutDescriptor bglDesc = {
+ .bindingCount = 1,
+ .bindings = &entryDesc,
+ };
+ EXPECT_DEPRECATION_WARNING(device.CreateBindGroupLayout(&bglDesc));
+}
+
+// Test that creating a BGL with both entries and bindings is an error
+TEST_P(DeprecationTests, BGLDescBindingAndEntriesIsInvalid) {
+ wgpu::BindGroupLayoutEntry entryDesc = {
+ .type = wgpu::BindingType::Sampler,
+ };
+
+ wgpu::BindGroupLayoutDescriptor bglDesc = {
+ .bindingCount = 1,
+ .bindings = &entryDesc,
+ .entryCount = 1,
+ .entries = &entryDesc,
+ };
+ ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&bglDesc));
+}
+
+// Test that creating a BGL with both entries and bindings to 0 doesn't emit warnings
+TEST_P(DeprecationTests, BGLDescBindingAndEntriesBothZeroEmitsNoWarning) {
+ // TODO(cwallez@chromium.org): In Vulkan it is disallowed to create 0-sized descriptor pools
+ // but the Vulkan backend doesn't special case it yet.
+ DAWN_SKIP_TEST_IF(IsVulkan());
+
+ wgpu::BindGroupLayoutDescriptor bglDesc = {
+ .bindingCount = 0,
+ .bindings = nullptr,
+ .entryCount = 0,
+ .entries = nullptr,
+ };
+ device.CreateBindGroupLayout(&bglDesc);
+}
+
+// Test that creating a BGL with bindings still does correct state tracking
+TEST_P(DeprecationTests, BGLDescBindingStateTracking) {
+ wgpu::BindGroupLayoutEntry entryDesc = {
+ .binding = 0,
+ .type = wgpu::BindingType::Sampler,
+ };
+
+ wgpu::BindGroupLayoutDescriptor bglDesc = {
+ .bindingCount = 1,
+ .bindings = &entryDesc,
+ };
+ wgpu::BindGroupLayout layout;
+ EXPECT_DEPRECATION_WARNING(layout = device.CreateBindGroupLayout(&bglDesc));
+
+ // Test a case where if |bindings| wasn't taken into account, no validation error would happen
+ // because the layout would be empty
+ wgpu::BindGroupDescriptor badBgDesc = {
+ .layout = layout,
+ .entryCount = 0,
+ .entries = nullptr,
+ };
+ ASSERT_DEVICE_ERROR(device.CreateBindGroup(&badBgDesc));
+}
+
+// Test for BindGroup::bindings/bindingCount -> entries/entryCount
+
+// Test that creating a BG with bindings emits a deprecation warning.
+TEST_P(DeprecationTests, BGDescBindingIsDeprecated) {
+ wgpu::SamplerDescriptor samplerDesc = {};
+ wgpu::Sampler sampler = device.CreateSampler(&samplerDesc);
+
+ wgpu::BindGroupLayout layout = utils::MakeBindGroupLayout(
+ device, {{0, wgpu::ShaderStage::Fragment, wgpu::BindingType::Sampler}});
+
+ wgpu::BindGroupEntry entryDesc = {
+ .binding = 0,
+ .sampler = sampler,
+ };
+
+ wgpu::BindGroupDescriptor bgDesc = {
+ .layout = layout,
+ .bindingCount = 1,
+ .bindings = &entryDesc,
+ };
+ EXPECT_DEPRECATION_WARNING(device.CreateBindGroup(&bgDesc));
+}
+
+// Test that creating a BG with both entries and bindings is an error
+TEST_P(DeprecationTests, BGDescBindingAndEntriesIsInvalid) {
+ wgpu::SamplerDescriptor samplerDesc = {};
+ wgpu::Sampler sampler = device.CreateSampler(&samplerDesc);
+
+ wgpu::BindGroupLayout layout = utils::MakeBindGroupLayout(
+ device, {{0, wgpu::ShaderStage::Fragment, wgpu::BindingType::Sampler}});
+
+ wgpu::BindGroupEntry entryDesc = {
+ .binding = 0,
+ .sampler = sampler,
+ };
+
+ wgpu::BindGroupDescriptor bgDesc = {
+ .layout = layout,
+ .bindingCount = 1,
+ .bindings = &entryDesc,
+ .entryCount = 1,
+ .entries = &entryDesc,
+ };
+ ASSERT_DEVICE_ERROR(device.CreateBindGroup(&bgDesc));
+}
+
+// Test that creating a BG with both entries and bindings to 0 doesn't emit warnings
+TEST_P(DeprecationTests, BGDescBindingAndEntriesBothZeroEmitsNoWarning) {
+ // TODO(cwallez@chromium.org): In Vulkan it is disallowed to create 0-sized descriptor pools
+ // but the Vulkan backend doesn't special case it yet.
+ DAWN_SKIP_TEST_IF(IsVulkan());
+
+ wgpu::BindGroupLayout layout = utils::MakeBindGroupLayout(device, {});
+
+ wgpu::BindGroupDescriptor bgDesc = {
+ .layout = layout,
+ .bindingCount = 0,
+ .bindings = nullptr,
+ .entryCount = 0,
+ .entries = nullptr,
+ };
+ device.CreateBindGroup(&bgDesc);
+}
+
+// Test that creating a BG with bindings still does correct state tracking
+TEST_P(DeprecationTests, BGDescBindingStateTracking) {
+ wgpu::BindGroupLayout layout = utils::MakeBindGroupLayout(device, {});
+
+ // Test a case where if |bindings| wasn't taken into account, no validation error would happen
+ // because it would match the empty layout.
+ wgpu::SamplerDescriptor samplerDesc = {};
+ wgpu::Sampler sampler = device.CreateSampler(&samplerDesc);
+
+ wgpu::BindGroupEntry entryDesc = {
+ .binding = 0,
+ .sampler = sampler,
+ };
+
+ wgpu::BindGroupDescriptor bgDesc = {
+ .layout = layout,
+ .bindingCount = 1,
+ .bindings = &entryDesc,
+ };
+ EXPECT_DEPRECATION_WARNING(ASSERT_DEVICE_ERROR(device.CreateBindGroup(&bgDesc)));
+}
+
DAWN_INSTANTIATE_TEST(DeprecationTests,
D3D12Backend(),
MetalBackend(),
diff --git a/src/tests/end2end/DeviceLostTests.cpp b/src/tests/end2end/DeviceLostTests.cpp
index 427c7a8..6ee0367 100644
--- a/src/tests/end2end/DeviceLostTests.cpp
+++ b/src/tests/end2end/DeviceLostTests.cpp
@@ -105,11 +105,11 @@
TEST_P(DeviceLostTest, CreateBindGroupLayoutFails) {
SetCallbackAndLoseForTesting();
- wgpu::BindGroupLayoutEntry binding = {0, wgpu::ShaderStage::None,
- wgpu::BindingType::UniformBuffer};
+ wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::None,
+ wgpu::BindingType::UniformBuffer};
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &entry;
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor));
}
@@ -139,18 +139,18 @@
TEST_P(DeviceLostTest, CreateBindGroupFails) {
SetCallbackAndLoseForTesting();
- wgpu::BindGroupEntry binding;
- binding.binding = 0;
- binding.sampler = nullptr;
- binding.textureView = nullptr;
- binding.buffer = nullptr;
- binding.offset = 0;
- binding.size = 0;
+ wgpu::BindGroupEntry entry;
+ entry.binding = 0;
+ entry.sampler = nullptr;
+ entry.textureView = nullptr;
+ entry.buffer = nullptr;
+ entry.offset = 0;
+ entry.size = 0;
wgpu::BindGroupDescriptor descriptor;
descriptor.layout = nullptr;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &entry;
ASSERT_DEVICE_ERROR(device.CreateBindGroup(&descriptor));
}
diff --git a/src/tests/end2end/StorageTextureTests.cpp b/src/tests/end2end/StorageTextureTests.cpp
index e09e79a..c13a3a1 100644
--- a/src/tests/end2end/StorageTextureTests.cpp
+++ b/src/tests/end2end/StorageTextureTests.cpp
@@ -23,24 +23,24 @@
// wgpu::BindingType::ReadonlyStorageTexture is a valid binding type to create a bind group
// layout.
{
- wgpu::BindGroupLayoutEntry binding = {0, wgpu::ShaderStage::Compute,
- wgpu::BindingType::ReadonlyStorageTexture};
- binding.storageTextureFormat = wgpu::TextureFormat::R32Float;
+ wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::Compute,
+ wgpu::BindingType::ReadonlyStorageTexture};
+ entry.storageTextureFormat = wgpu::TextureFormat::R32Float;
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &entry;
device.CreateBindGroupLayout(&descriptor);
}
// wgpu::BindingType::WriteonlyStorageTexture is a valid binding type to create a bind group
// layout.
{
- wgpu::BindGroupLayoutEntry binding = {0, wgpu::ShaderStage::Compute,
- wgpu::BindingType::WriteonlyStorageTexture};
- binding.storageTextureFormat = wgpu::TextureFormat::R32Float;
+ wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::Compute,
+ wgpu::BindingType::WriteonlyStorageTexture};
+ entry.storageTextureFormat = wgpu::TextureFormat::R32Float;
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &entry;
device.CreateBindGroupLayout(&descriptor);
}
}
diff --git a/src/tests/unittests/validation/BindGroupValidationTests.cpp b/src/tests/unittests/validation/BindGroupValidationTests.cpp
index 05b6527..95a1b02 100644
--- a/src/tests/unittests/validation/BindGroupValidationTests.cpp
+++ b/src/tests/unittests/validation/BindGroupValidationTests.cpp
@@ -75,8 +75,8 @@
wgpu::BindGroupDescriptor descriptor;
descriptor.layout = layout;
- descriptor.bindingCount = 0;
- descriptor.bindings = nullptr;
+ descriptor.entryCount = 0;
+ descriptor.entries = nullptr;
// Control case: check that nextInChain = nullptr is valid
descriptor.nextInChain = nullptr;
@@ -88,15 +88,15 @@
ASSERT_DEVICE_ERROR(device.CreateBindGroup(&descriptor));
}
-// Check constraints on bindingCount
-TEST_F(BindGroupValidationTest, bindingCountMismatch) {
+// Check constraints on entryCount
+TEST_F(BindGroupValidationTest, EntryCountMismatch) {
wgpu::BindGroupLayout layout = utils::MakeBindGroupLayout(
device, {{0, wgpu::ShaderStage::Fragment, wgpu::BindingType::Sampler}});
// Control case: check that a descriptor with one binding is ok
utils::MakeBindGroup(device, layout, {{0, mSampler}});
- // Check that bindingCount != layout.bindingCount fails.
+ // Check that entryCount != layout.entryCount fails.
ASSERT_DEVICE_ERROR(utils::MakeBindGroup(device, layout, {}));
}
@@ -149,8 +149,8 @@
wgpu::BindGroupDescriptor descriptor;
descriptor.layout = layout;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &binding;
// Not setting anything fails
ASSERT_DEVICE_ERROR(device.CreateBindGroup(&descriptor));
@@ -198,8 +198,8 @@
wgpu::BindGroupDescriptor descriptor;
descriptor.layout = layout;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &binding;
// Not setting anything fails
ASSERT_DEVICE_ERROR(device.CreateBindGroup(&descriptor));
@@ -252,8 +252,8 @@
wgpu::BindGroupDescriptor descriptor;
descriptor.layout = layout;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &binding;
// Not setting anything fails
ASSERT_DEVICE_ERROR(device.CreateBindGroup(&descriptor));
@@ -473,8 +473,8 @@
bool expected) {
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = count;
- descriptor.bindings = binding;
+ descriptor.entryCount = count;
+ descriptor.entries = binding;
if (!expected) {
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor));
@@ -526,23 +526,23 @@
// Test that there can't be more than kMaxBindingPerGroup bindings per group
TEST_F(BindGroupLayoutValidationTest, BindGroupLayoutMaxBindings) {
- wgpu::BindGroupLayoutEntry bindings[kMaxBindingsPerGroup + 1];
+ wgpu::BindGroupLayoutEntry entries[kMaxBindingsPerGroup + 1];
for (uint32_t i = 0; i < kMaxBindingsPerGroup + 1; i++) {
- bindings[i].type = wgpu::BindingType::UniformBuffer;
- bindings[i].binding = i;
- bindings[i].visibility = wgpu::ShaderStage::Compute;
+ entries[i].type = wgpu::BindingType::UniformBuffer;
+ entries[i].binding = i;
+ entries[i].visibility = wgpu::ShaderStage::Compute;
}
wgpu::BindGroupLayoutDescriptor desc;
- desc.bindings = bindings;
+ desc.entries = entries;
// Control case: kMaxBindingsPerGroup bindings is allowed.
- desc.bindingCount = kMaxBindingsPerGroup;
+ desc.entryCount = kMaxBindingsPerGroup;
device.CreateBindGroupLayout(&desc);
// Error case: kMaxBindingsPerGroup + 1 bindings is not allowed.
- desc.bindingCount = kMaxBindingsPerGroup + 1;
+ desc.entryCount = kMaxBindingsPerGroup + 1;
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&desc));
}
@@ -594,8 +594,8 @@
wgpu::BindGroupLayoutEntry binding = {0, wgpu::ShaderStage::None,
wgpu::BindingType::UniformBuffer};
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &binding;
device.CreateBindGroupLayout(&descriptor);
}
@@ -642,8 +642,8 @@
auto MakeBindGroupLayout = [&](wgpu::BindGroupLayoutEntry* binding,
uint32_t count) -> wgpu::BindGroupLayout {
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = count;
- descriptor.bindings = binding;
+ descriptor.entryCount = count;
+ descriptor.entries = binding;
return device.CreateBindGroupLayout(&descriptor);
};
@@ -1055,8 +1055,8 @@
// Create the bind group layout.
wgpu::BindGroupLayoutDescriptor bglDescriptor;
- bglDescriptor.bindingCount = static_cast<uint32_t>(bindings.size());
- bglDescriptor.bindings = bindings.data();
+ bglDescriptor.entryCount = static_cast<uint32_t>(bindings.size());
+ bglDescriptor.entries = bindings.data();
bindGroupLayouts[l] = device.CreateBindGroupLayout(&bglDescriptor);
}
diff --git a/src/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp b/src/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp
index 8afeb2b..821958c 100644
--- a/src/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp
+++ b/src/tests/unittests/validation/GetBindGroupLayoutValidationTests.cpp
@@ -108,8 +108,8 @@
binding.multisampled = false;
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 1;
- desc.bindings = &binding;
+ desc.entryCount = 1;
+ desc.entries = &binding;
// Check that visibility and dynamic offsets match
binding.hasDynamicOffset = false;
@@ -157,8 +157,8 @@
binding.hasDynamicOffset = false;
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 1;
- desc.bindings = &binding;
+ desc.entryCount = 1;
+ desc.entries = &binding;
EXPECT_EQ(device.CreateBindGroupLayout(&desc).Get(), pipeline.GetBindGroupLayout(0).Get());
}
@@ -171,8 +171,8 @@
binding.multisampled = false;
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 1;
- desc.bindings = &binding;
+ desc.entryCount = 1;
+ desc.entries = &binding;
{
// Storage buffer binding is not supported in vertex shader.
@@ -243,8 +243,8 @@
binding.hasDynamicOffset = false;
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 1;
- desc.bindings = &binding;
+ desc.entryCount = 1;
+ desc.entries = &binding;
{
binding.multisampled = false;
@@ -281,8 +281,8 @@
binding.multisampled = false;
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 1;
- desc.bindings = &binding;
+ desc.entryCount = 1;
+ desc.entries = &binding;
{
binding.viewDimension = wgpu::TextureViewDimension::e1D;
@@ -355,8 +355,8 @@
binding.multisampled = false;
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 1;
- desc.bindings = &binding;
+ desc.entryCount = 1;
+ desc.entries = &binding;
{
binding.textureComponentType = wgpu::TextureComponentType::Float;
@@ -398,8 +398,8 @@
binding.multisampled = false;
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 1;
- desc.bindings = &binding;
+ desc.entryCount = 1;
+ desc.entries = &binding;
{
binding.binding = 0;
@@ -605,8 +605,8 @@
void main() {})");
wgpu::BindGroupLayoutDescriptor desc = {};
- desc.bindingCount = 0;
- desc.bindings = nullptr;
+ desc.entryCount = 0;
+ desc.entries = nullptr;
wgpu::BindGroupLayout emptyBindGroupLayout = device.CreateBindGroupLayout(&desc);
@@ -625,8 +625,8 @@
binding.visibility = wgpu::ShaderStage::Vertex;
wgpu::BindGroupLayoutDescriptor bglDesc = {};
- bglDesc.bindingCount = 1;
- bglDesc.bindings = &binding;
+ bglDesc.entryCount = 1;
+ bglDesc.entries = &binding;
wgpu::BindGroupLayout bindGroupLayout = device.CreateBindGroupLayout(&bglDesc);
@@ -663,8 +663,8 @@
{
wgpu::BindGroupLayoutDescriptor emptyDesc = {};
- emptyDesc.bindingCount = 0;
- emptyDesc.bindings = nullptr;
+ emptyDesc.entryCount = 0;
+ emptyDesc.entries = nullptr;
wgpu::BindGroupLayout emptyBindGroupLayout = device.CreateBindGroupLayout(&emptyDesc);
diff --git a/src/tests/unittests/validation/StorageTextureValidationTests.cpp b/src/tests/unittests/validation/StorageTextureValidationTests.cpp
index 4a6a8e9..82d514c 100644
--- a/src/tests/unittests/validation/StorageTextureValidationTests.cpp
+++ b/src/tests/unittests/validation/StorageTextureValidationTests.cpp
@@ -381,11 +381,12 @@
{wgpu::ShaderStage::Compute, wgpu::BindingType::StorageTexture, false}}};
for (const auto& testSpec : kTestSpecs) {
- wgpu::BindGroupLayoutEntry binding = {0, testSpec.stage, testSpec.type};
- binding.storageTextureFormat = wgpu::TextureFormat::R32Uint;
+ wgpu::BindGroupLayoutEntry entry = {0, testSpec.stage, testSpec.type};
+ entry.storageTextureFormat = wgpu::TextureFormat::R32Uint;
+
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = 1;
- descriptor.bindings = &binding;
+ descriptor.entryCount = 1;
+ descriptor.entries = &entry;
if (testSpec.valid) {
device.CreateBindGroupLayout(&descriptor);
diff --git a/src/tests/unittests/wire/WireArgumentTests.cpp b/src/tests/unittests/wire/WireArgumentTests.cpp
index cbcd793..fe2b141 100644
--- a/src/tests/unittests/wire/WireArgumentTests.cpp
+++ b/src/tests/unittests/wire/WireArgumentTests.cpp
@@ -49,8 +49,8 @@
TEST_F(WireArgumentTests, ValueArrayArgument) {
// Create a bindgroup.
WGPUBindGroupLayoutDescriptor bglDescriptor = {};
- bglDescriptor.bindingCount = 0;
- bglDescriptor.bindings = nullptr;
+ bglDescriptor.entryCount = 0;
+ bglDescriptor.entries = nullptr;
WGPUBindGroupLayout bgl = wgpuDeviceCreateBindGroupLayout(device, &bglDescriptor);
WGPUBindGroupLayout apiBgl = api.GetNewBindGroupLayout();
@@ -58,8 +58,8 @@
WGPUBindGroupDescriptor bindGroupDescriptor = {};
bindGroupDescriptor.layout = bgl;
- bindGroupDescriptor.bindingCount = 0;
- bindGroupDescriptor.bindings = nullptr;
+ bindGroupDescriptor.entryCount = 0;
+ bindGroupDescriptor.entries = nullptr;
WGPUBindGroup bindGroup = wgpuDeviceCreateBindGroup(device, &bindGroupDescriptor);
WGPUBindGroup apiBindGroup = api.GetNewBindGroup();
@@ -284,8 +284,8 @@
// Test that the wire is able to send structures that contain objects
TEST_F(WireArgumentTests, StructureOfObjectArrayArgument) {
WGPUBindGroupLayoutDescriptor bglDescriptor = {};
- bglDescriptor.bindingCount = 0;
- bglDescriptor.bindings = nullptr;
+ bglDescriptor.entryCount = 0;
+ bglDescriptor.entries = nullptr;
WGPUBindGroupLayout bgl = wgpuDeviceCreateBindGroupLayout(device, &bglDescriptor);
WGPUBindGroupLayout apiBgl = api.GetNewBindGroupLayout();
@@ -313,7 +313,7 @@
// Test that the wire is able to send structures that contain objects
TEST_F(WireArgumentTests, StructureOfStructureArrayArgument) {
static constexpr int NUM_BINDINGS = 3;
- WGPUBindGroupLayoutEntry bindings[NUM_BINDINGS]{
+ WGPUBindGroupLayoutEntry entries[NUM_BINDINGS]{
{0,
WGPUShaderStage_Vertex,
WGPUBindingType_Sampler,
@@ -343,24 +343,24 @@
WGPUTextureFormat_RGBA8Unorm},
};
WGPUBindGroupLayoutDescriptor bglDescriptor = {};
- bglDescriptor.bindingCount = NUM_BINDINGS;
- bglDescriptor.bindings = bindings;
+ bglDescriptor.entryCount = NUM_BINDINGS;
+ bglDescriptor.entries = entries;
wgpuDeviceCreateBindGroupLayout(device, &bglDescriptor);
WGPUBindGroupLayout apiBgl = api.GetNewBindGroupLayout();
EXPECT_CALL(
api,
DeviceCreateBindGroupLayout(
- apiDevice, MatchesLambda([bindings](const WGPUBindGroupLayoutDescriptor* desc) -> bool {
+ apiDevice, MatchesLambda([entries](const WGPUBindGroupLayoutDescriptor* desc) -> bool {
for (int i = 0; i < NUM_BINDINGS; ++i) {
- const auto& a = desc->bindings[i];
- const auto& b = bindings[i];
+ const auto& a = desc->entries[i];
+ const auto& b = entries[i];
if (a.binding != b.binding || a.visibility != b.visibility ||
a.type != b.type) {
return false;
}
}
- return desc->nextInChain == nullptr && desc->bindingCount == 3;
+ return desc->nextInChain == nullptr && desc->entryCount == 3;
})))
.WillOnce(Return(apiBgl));
diff --git a/src/tests/unittests/wire/WireMultipleDeviceTests.cpp b/src/tests/unittests/wire/WireMultipleDeviceTests.cpp
index da6f1e0..103702b 100644
--- a/src/tests/unittests/wire/WireMultipleDeviceTests.cpp
+++ b/src/tests/unittests/wire/WireMultipleDeviceTests.cpp
@@ -166,11 +166,11 @@
wireA.FlushClient();
- std::array<WGPUBindGroupBinding, 2> bindings = {};
+ std::array<WGPUBindGroupBinding, 2> entries = {};
// Create a buffer on wire A.
WGPUBufferDescriptor bufferDesc = {};
- bindings[0].buffer = wgpuDeviceCreateBuffer(wireA.ClientDevice(), &bufferDesc);
+ entries[0].buffer = wgpuDeviceCreateBuffer(wireA.ClientDevice(), &bufferDesc);
EXPECT_CALL(*wireA.Api(), DeviceCreateBuffer(wireA.ServerDevice(), _))
.WillOnce(Return(wireA.Api()->GetNewBuffer()));
@@ -178,7 +178,7 @@
// Create a sampler on wire B.
WGPUSamplerDescriptor samplerDesc = {};
- bindings[1].sampler = wgpuDeviceCreateSampler(wireB.ClientDevice(), &samplerDesc);
+ entries[1].sampler = wgpuDeviceCreateSampler(wireB.ClientDevice(), &samplerDesc);
EXPECT_CALL(*wireB.Api(), DeviceCreateSampler(wireB.ServerDevice(), _))
.WillOnce(Return(wireB.Api()->GetNewSampler()));
@@ -187,8 +187,8 @@
// Create a bind group on wire A using the bgl (A), buffer (A), and sampler (B).
WGPUBindGroupDescriptor bgDesc = {};
bgDesc.layout = bglA;
- bgDesc.bindingCount = bindings.size();
- bgDesc.bindings = bindings.data();
+ bgDesc.entryCount = entries.size();
+ bgDesc.entries = entries.data();
WGPUBindGroup bindGroupA = wgpuDeviceCreateBindGroup(wireA.ClientDevice(), &bgDesc);
// It should inject an error because the sampler is from a different device.
diff --git a/src/tests/unittests/wire/WireOptionalTests.cpp b/src/tests/unittests/wire/WireOptionalTests.cpp
index 5695dc5..ca80994 100644
--- a/src/tests/unittests/wire/WireOptionalTests.cpp
+++ b/src/tests/unittests/wire/WireOptionalTests.cpp
@@ -27,7 +27,7 @@
// Test passing nullptr instead of objects - object as value version
TEST_F(WireOptionalTests, OptionalObjectValue) {
WGPUBindGroupLayoutDescriptor bglDesc = {};
- bglDesc.bindingCount = 0;
+ bglDesc.entryCount = 0;
WGPUBindGroupLayout bgl = wgpuDeviceCreateBindGroupLayout(device, &bglDesc);
WGPUBindGroupLayout apiBindGroupLayout = api.GetNewBindGroupLayout();
@@ -35,27 +35,27 @@
.WillOnce(Return(apiBindGroupLayout));
// The `sampler`, `textureView` and `buffer` members of a binding are optional.
- WGPUBindGroupEntry binding;
- binding.binding = 0;
- binding.sampler = nullptr;
- binding.textureView = nullptr;
- binding.buffer = nullptr;
+ WGPUBindGroupEntry entry;
+ entry.binding = 0;
+ entry.sampler = nullptr;
+ entry.textureView = nullptr;
+ entry.buffer = nullptr;
WGPUBindGroupDescriptor bgDesc = {};
bgDesc.layout = bgl;
- bgDesc.bindingCount = 1;
- bgDesc.bindings = &binding;
+ bgDesc.entryCount = 1;
+ bgDesc.entries = &entry;
wgpuDeviceCreateBindGroup(device, &bgDesc);
WGPUBindGroup apiDummyBindGroup = api.GetNewBindGroup();
EXPECT_CALL(api, DeviceCreateBindGroup(
apiDevice, MatchesLambda([](const WGPUBindGroupDescriptor* desc) -> bool {
- return desc->nextInChain == nullptr && desc->bindingCount == 1 &&
- desc->bindings[0].binding == 0 &&
- desc->bindings[0].sampler == nullptr &&
- desc->bindings[0].buffer == nullptr &&
- desc->bindings[0].textureView == nullptr;
+ return desc->nextInChain == nullptr && desc->entryCount == 1 &&
+ desc->entries[0].binding == 0 &&
+ desc->entries[0].sampler == nullptr &&
+ desc->entries[0].buffer == nullptr &&
+ desc->entries[0].textureView == nullptr;
})))
.WillOnce(Return(apiDummyBindGroup));
diff --git a/src/utils/WGPUHelpers.cpp b/src/utils/WGPUHelpers.cpp
index 98227d6..9eb3912 100644
--- a/src/utils/WGPUHelpers.cpp
+++ b/src/utils/WGPUHelpers.cpp
@@ -271,16 +271,15 @@
wgpu::BindGroupLayout MakeBindGroupLayout(
const wgpu::Device& device,
- std::initializer_list<wgpu::BindGroupLayoutEntry> bindingsInitializer) {
-
- std::vector<wgpu::BindGroupLayoutEntry> bindings;
- for (const wgpu::BindGroupLayoutEntry& binding : bindingsInitializer) {
- bindings.push_back(binding);
+ std::initializer_list<wgpu::BindGroupLayoutEntry> entriesInitializer) {
+ std::vector<wgpu::BindGroupLayoutEntry> entries;
+ for (const wgpu::BindGroupLayoutEntry& entry : entriesInitializer) {
+ entries.push_back(entry);
}
wgpu::BindGroupLayoutDescriptor descriptor;
- descriptor.bindingCount = static_cast<uint32_t>(bindings.size());
- descriptor.bindings = bindings.data();
+ descriptor.entryCount = static_cast<uint32_t>(entries.size());
+ descriptor.entries = entries.data();
return device.CreateBindGroupLayout(&descriptor);
}
@@ -317,16 +316,16 @@
wgpu::BindGroup MakeBindGroup(
const wgpu::Device& device,
const wgpu::BindGroupLayout& layout,
- std::initializer_list<BindingInitializationHelper> bindingsInitializer) {
- std::vector<wgpu::BindGroupEntry> bindings;
- for (const BindingInitializationHelper& helper : bindingsInitializer) {
- bindings.push_back(helper.GetAsBinding());
+ std::initializer_list<BindingInitializationHelper> entriesInitializer) {
+ std::vector<wgpu::BindGroupEntry> entries;
+ for (const BindingInitializationHelper& helper : entriesInitializer) {
+ entries.push_back(helper.GetAsBinding());
}
wgpu::BindGroupDescriptor descriptor;
descriptor.layout = layout;
- descriptor.bindingCount = bindings.size();
- descriptor.bindings = bindings.data();
+ descriptor.entryCount = entries.size();
+ descriptor.entries = entries.data();
return device.CreateBindGroup(&descriptor);
}
diff --git a/src/utils/WGPUHelpers.h b/src/utils/WGPUHelpers.h
index 3fdeb6d..8e2f963 100644
--- a/src/utils/WGPUHelpers.h
+++ b/src/utils/WGPUHelpers.h
@@ -91,7 +91,7 @@
const wgpu::BindGroupLayout* bindGroupLayout);
wgpu::BindGroupLayout MakeBindGroupLayout(
const wgpu::Device& device,
- std::initializer_list<wgpu::BindGroupLayoutEntry> bindingsInitializer);
+ std::initializer_list<wgpu::BindGroupLayoutEntry> entriesInitializer);
// Helpers to make creating bind groups look nicer:
//
@@ -124,7 +124,7 @@
wgpu::BindGroup MakeBindGroup(
const wgpu::Device& device,
const wgpu::BindGroupLayout& layout,
- std::initializer_list<BindingInitializationHelper> bindingsInitializer);
+ std::initializer_list<BindingInitializationHelper> entriesInitializer);
} // namespace utils