mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-14 07:36:15 +00:00
Updating BindGroupLayoutEntry interface to match latest spec
Updates BindGroupLayoutEntry to allow for the newly split-up descriptors that define each binding type in it's own member (buffer, texture, etc.) The previous style of descriptor is still supported but is deprecated. For the sake of keeping the scope reasonable, this change does not alter the BindingInfo structure that's used internally by the various backends. That will come as a followup. Bug: dawn:527 Change-Id: I2f301f5f36fa2ce7ff15126ac90dc4c19d5e32ca Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34921 Commit-Queue: Brandon Jones <bajones@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
ed883bc1d9
commit
9c52c2997c
@@ -331,9 +331,9 @@ namespace utils {
|
||||
|
||||
wgpu::BindGroupLayout MakeBindGroupLayout(
|
||||
const wgpu::Device& device,
|
||||
std::initializer_list<wgpu::BindGroupLayoutEntry> entriesInitializer) {
|
||||
std::initializer_list<BindingLayoutEntryInitializationHelper> entriesInitializer) {
|
||||
std::vector<wgpu::BindGroupLayoutEntry> entries;
|
||||
for (const wgpu::BindGroupLayoutEntry& entry : entriesInitializer) {
|
||||
for (const BindingLayoutEntryInitializationHelper& entry : entriesInitializer) {
|
||||
entries.push_back(entry);
|
||||
}
|
||||
|
||||
@@ -343,6 +343,78 @@ namespace utils {
|
||||
return device.CreateBindGroupLayout(&descriptor);
|
||||
}
|
||||
|
||||
BindingLayoutEntryInitializationHelper::BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::BufferBindingType bufferType,
|
||||
bool bufferHasDynamicOffset,
|
||||
uint64_t bufferMinBindingSize) {
|
||||
binding = entryBinding;
|
||||
visibility = entryVisibility;
|
||||
buffer.type = bufferType;
|
||||
buffer.hasDynamicOffset = bufferHasDynamicOffset;
|
||||
buffer.minBindingSize = bufferMinBindingSize;
|
||||
}
|
||||
|
||||
BindingLayoutEntryInitializationHelper::BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::SamplerBindingType samplerType) {
|
||||
binding = entryBinding;
|
||||
visibility = entryVisibility;
|
||||
sampler.type = samplerType;
|
||||
}
|
||||
|
||||
BindingLayoutEntryInitializationHelper::BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::TextureSampleType textureSampleType,
|
||||
wgpu::TextureViewDimension textureViewDimension,
|
||||
bool textureMultisampled) {
|
||||
binding = entryBinding;
|
||||
visibility = entryVisibility;
|
||||
texture.sampleType = textureSampleType;
|
||||
texture.viewDimension = textureViewDimension;
|
||||
texture.multisampled = textureMultisampled;
|
||||
}
|
||||
|
||||
BindingLayoutEntryInitializationHelper::BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::StorageTextureAccess storageTextureAccess,
|
||||
wgpu::TextureFormat format,
|
||||
wgpu::TextureViewDimension textureViewDimension) {
|
||||
binding = entryBinding;
|
||||
visibility = entryVisibility;
|
||||
storageTexture.access = storageTextureAccess;
|
||||
storageTexture.format = format;
|
||||
storageTexture.viewDimension = textureViewDimension;
|
||||
}
|
||||
|
||||
BindingLayoutEntryInitializationHelper::BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::BindingType entryType,
|
||||
bool bufferHasDynamicOffset,
|
||||
uint64_t bufferMinBindingSize,
|
||||
wgpu::TextureViewDimension textureViewDimension,
|
||||
wgpu::TextureComponentType textureComponent,
|
||||
wgpu::TextureFormat storageFormat) {
|
||||
binding = entryBinding;
|
||||
visibility = entryVisibility;
|
||||
type = entryType;
|
||||
hasDynamicOffset = bufferHasDynamicOffset;
|
||||
minBufferBindingSize = bufferMinBindingSize;
|
||||
viewDimension = textureViewDimension;
|
||||
textureComponentType = textureComponent;
|
||||
storageTextureFormat = storageFormat;
|
||||
}
|
||||
|
||||
BindingLayoutEntryInitializationHelper::BindingLayoutEntryInitializationHelper(
|
||||
const wgpu::BindGroupLayoutEntry& entry)
|
||||
: wgpu::BindGroupLayoutEntry(entry) {
|
||||
}
|
||||
|
||||
BindingInitializationHelper::BindingInitializationHelper(uint32_t binding,
|
||||
const wgpu::Sampler& sampler)
|
||||
: binding(binding), sampler(sampler) {
|
||||
|
||||
@@ -100,9 +100,53 @@ namespace utils {
|
||||
wgpu::SamplerDescriptor GetDefaultSamplerDescriptor();
|
||||
wgpu::PipelineLayout MakeBasicPipelineLayout(const wgpu::Device& device,
|
||||
const wgpu::BindGroupLayout* bindGroupLayout);
|
||||
|
||||
// Helpers to make creating bind group layouts look nicer:
|
||||
//
|
||||
// utils::MakeBindGroupLayout(device, {
|
||||
// {0, wgpu::ShaderStage::Vertex, wgpu::BufferBindingType::Uniform},
|
||||
// {1, wgpu::ShaderStage::Fragment, wgpu::SamplerBindingType::Filtering},
|
||||
// {3, wgpu::ShaderStage::Fragment, wgpu::TextureSampleType::Float}
|
||||
// });
|
||||
|
||||
struct BindingLayoutEntryInitializationHelper : wgpu::BindGroupLayoutEntry {
|
||||
BindingLayoutEntryInitializationHelper(uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::BufferBindingType bufferType,
|
||||
bool bufferHasDynamicOffset = false,
|
||||
uint64_t bufferMinBindingSize = 0);
|
||||
BindingLayoutEntryInitializationHelper(uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::SamplerBindingType samplerType);
|
||||
BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::TextureSampleType textureSampleType,
|
||||
wgpu::TextureViewDimension viewDimension = wgpu::TextureViewDimension::e2D,
|
||||
bool textureMultisampled = false);
|
||||
BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::StorageTextureAccess storageTextureAccess,
|
||||
wgpu::TextureFormat format,
|
||||
wgpu::TextureViewDimension viewDimension = wgpu::TextureViewDimension::e2D);
|
||||
|
||||
// Backwards compat support for the deprecated path
|
||||
BindingLayoutEntryInitializationHelper(
|
||||
uint32_t entryBinding,
|
||||
wgpu::ShaderStage entryVisibility,
|
||||
wgpu::BindingType entryType,
|
||||
bool bufferHasDynamicOffset = false,
|
||||
uint64_t bufferMinBindingSize = 0,
|
||||
wgpu::TextureViewDimension textureViewDimension = wgpu::TextureViewDimension::Undefined,
|
||||
wgpu::TextureComponentType textureComponent = wgpu::TextureComponentType::Float,
|
||||
wgpu::TextureFormat storageFormat = wgpu::TextureFormat::Undefined);
|
||||
BindingLayoutEntryInitializationHelper(const wgpu::BindGroupLayoutEntry& entry);
|
||||
};
|
||||
|
||||
wgpu::BindGroupLayout MakeBindGroupLayout(
|
||||
const wgpu::Device& device,
|
||||
std::initializer_list<wgpu::BindGroupLayoutEntry> entriesInitializer);
|
||||
std::initializer_list<BindingLayoutEntryInitializationHelper> entriesInitializer);
|
||||
|
||||
// Helpers to make creating bind groups look nicer:
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user