mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-16 16:37:08 +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
@@ -850,8 +850,10 @@ TEST_P(BindGroupTests, DynamicOffsetOrder) {
|
||||
TEST_P(BindGroupTests, BindGroupLayoutVisibilityCanBeNone) {
|
||||
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize);
|
||||
|
||||
wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::None,
|
||||
wgpu::BindingType::UniformBuffer};
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::None;
|
||||
entry.buffer.type = wgpu::BufferBindingType::Uniform;
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
@@ -880,8 +882,11 @@ TEST_P(BindGroupTests, BindGroupLayoutVisibilityCanBeNone) {
|
||||
TEST_P(BindGroupTests, DynamicBindingNoneVisibility) {
|
||||
utils::BasicRenderPass renderPass = utils::CreateBasicRenderPass(device, kRTSize, kRTSize);
|
||||
|
||||
wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::None,
|
||||
wgpu::BindingType::UniformBuffer, true};
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::None;
|
||||
entry.buffer.type = wgpu::BufferBindingType::Uniform;
|
||||
entry.buffer.hasDynamicOffset = true;
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
|
||||
@@ -100,8 +100,10 @@ TEST_P(DeviceLostTest, SubmitFails) {
|
||||
TEST_P(DeviceLostTest, CreateBindGroupLayoutFails) {
|
||||
SetCallbackAndLoseForTesting();
|
||||
|
||||
wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::None,
|
||||
wgpu::BindingType::UniformBuffer};
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::None;
|
||||
entry.buffer.type = wgpu::BufferBindingType::Uniform;
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
|
||||
@@ -29,8 +29,13 @@ TEST_P(PipelineLayoutTests, DynamicBuffersOverflow) {
|
||||
{
|
||||
std::vector<wgpu::BindGroupLayoutEntry> entries;
|
||||
for (uint32_t i = 0; i < kMaxDynamicStorageBuffersPerPipelineLayout; i++) {
|
||||
entries.push_back(
|
||||
{i, wgpu::ShaderStage::Compute, wgpu::BindingType::StorageBuffer, true});
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = i;
|
||||
entry.visibility = wgpu::ShaderStage::Compute;
|
||||
entry.buffer.type = wgpu::BufferBindingType::Storage;
|
||||
entry.buffer.hasDynamicOffset = true;
|
||||
|
||||
entries.push_back(entry);
|
||||
}
|
||||
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
@@ -44,8 +49,11 @@ TEST_P(PipelineLayoutTests, DynamicBuffersOverflow) {
|
||||
wgpu::BindGroupLayout bglB;
|
||||
{
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::Fragment,
|
||||
wgpu::BindingType::StorageBuffer, false};
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::Fragment;
|
||||
entry.buffer.type = wgpu::BufferBindingType::Storage;
|
||||
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
bglB = device.CreateBindGroupLayout(&descriptor);
|
||||
|
||||
@@ -687,9 +687,11 @@ TEST_P(StorageTextureTests, BindGroupLayoutWithStorageTextureBindingType) {
|
||||
// wgpu::BindingType::ReadonlyStorageTexture is a valid binding type to create a bind group
|
||||
// layout.
|
||||
{
|
||||
wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::Compute,
|
||||
wgpu::BindingType::ReadonlyStorageTexture};
|
||||
entry.storageTextureFormat = wgpu::TextureFormat::R32Float;
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::Compute;
|
||||
entry.storageTexture.access = wgpu::StorageTextureAccess::ReadOnly;
|
||||
entry.storageTexture.format = wgpu::TextureFormat::R32Float;
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
@@ -699,9 +701,11 @@ TEST_P(StorageTextureTests, BindGroupLayoutWithStorageTextureBindingType) {
|
||||
// wgpu::BindingType::WriteonlyStorageTexture is a valid binding type to create a bind group
|
||||
// layout.
|
||||
{
|
||||
wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::Compute,
|
||||
wgpu::BindingType::WriteonlyStorageTexture};
|
||||
entry.storageTextureFormat = wgpu::TextureFormat::R32Float;
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::Compute;
|
||||
entry.storageTexture.access = wgpu::StorageTextureAccess::WriteOnly;
|
||||
entry.storageTexture.format = wgpu::TextureFormat::R32Float;
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
|
||||
@@ -345,10 +345,8 @@ TEST_F(BindGroupValidationTest, SamplingDepthStencilTexture) {
|
||||
viewDesc.aspect = wgpu::TextureAspect::DepthOnly;
|
||||
utils::MakeBindGroup(device, layout, {{0, texture.CreateView(&viewDesc)}});
|
||||
|
||||
wgpu::BindGroupLayoutEntry entry = {0, wgpu::ShaderStage::Fragment,
|
||||
wgpu::BindingType::SampledTexture};
|
||||
entry.textureComponentType = wgpu::TextureComponentType::Uint;
|
||||
layout = utils::MakeBindGroupLayout(device, {entry});
|
||||
layout = utils::MakeBindGroupLayout(
|
||||
device, {{0, wgpu::ShaderStage::Fragment, wgpu::TextureSampleType::Uint}});
|
||||
|
||||
viewDesc.aspect = wgpu::TextureAspect::StencilOnly;
|
||||
utils::MakeBindGroup(device, layout, {{0, texture.CreateView(&viewDesc)}});
|
||||
@@ -645,16 +643,16 @@ class BindGroupLayoutValidationTest : public ValidationTest {
|
||||
TEST_F(BindGroupLayoutValidationTest, BindGroupLayoutStorageBindingsInVertexShader) {
|
||||
// Checks that storage buffer binding is not supported in vertex shader.
|
||||
ASSERT_DEVICE_ERROR(utils::MakeBindGroupLayout(
|
||||
device, {{0, wgpu::ShaderStage::Vertex, wgpu::BindingType::StorageBuffer}}));
|
||||
device, {{0, wgpu::ShaderStage::Vertex, wgpu::BufferBindingType::Storage}}));
|
||||
|
||||
utils::MakeBindGroupLayout(
|
||||
device, {{0, wgpu::ShaderStage::Vertex, wgpu::BindingType::ReadonlyStorageBuffer}});
|
||||
device, {{0, wgpu::ShaderStage::Vertex, wgpu::BufferBindingType::ReadOnlyStorage}});
|
||||
|
||||
utils::MakeBindGroupLayout(
|
||||
device, {{0, wgpu::ShaderStage::Fragment, wgpu::BindingType::StorageBuffer}});
|
||||
device, {{0, wgpu::ShaderStage::Fragment, wgpu::BufferBindingType::Storage}});
|
||||
|
||||
utils::MakeBindGroupLayout(
|
||||
device, {{0, wgpu::ShaderStage::Fragment, wgpu::BindingType::ReadonlyStorageBuffer}});
|
||||
device, {{0, wgpu::ShaderStage::Fragment, wgpu::BufferBindingType::ReadOnlyStorage}});
|
||||
}
|
||||
|
||||
// Tests setting that bind group layout bindings numbers may be very large.
|
||||
@@ -710,11 +708,13 @@ TEST_F(BindGroupLayoutValidationTest, BindGroupLayoutVisibilityNone) {
|
||||
{0, wgpu::ShaderStage::Vertex, wgpu::BindingType::UniformBuffer},
|
||||
});
|
||||
|
||||
wgpu::BindGroupLayoutEntry binding = {0, wgpu::ShaderStage::None,
|
||||
wgpu::BindingType::UniformBuffer};
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::None;
|
||||
entry.buffer.type = wgpu::BufferBindingType::Uniform;
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &binding;
|
||||
descriptor.entries = &entry;
|
||||
device.CreateBindGroupLayout(&descriptor);
|
||||
}
|
||||
|
||||
@@ -761,9 +761,9 @@ TEST_F(BindGroupLayoutValidationTest, PerStageLimits) {
|
||||
|
||||
for (TestInfo info : kTestInfos) {
|
||||
wgpu::BindGroupLayout bgl[2];
|
||||
std::vector<wgpu::BindGroupLayoutEntry> maxBindings;
|
||||
std::vector<utils::BindingLayoutEntryInitializationHelper> maxBindings;
|
||||
|
||||
auto PopulateEntry = [](wgpu::BindGroupLayoutEntry entry) {
|
||||
auto PopulateEntry = [](utils::BindingLayoutEntryInitializationHelper entry) {
|
||||
switch (entry.type) {
|
||||
case wgpu::BindingType::ReadonlyStorageTexture:
|
||||
case wgpu::BindingType::WriteonlyStorageTexture:
|
||||
@@ -772,6 +772,7 @@ TEST_F(BindGroupLayoutValidationTest, PerStageLimits) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return entry;
|
||||
};
|
||||
|
||||
@@ -784,7 +785,7 @@ TEST_F(BindGroupLayoutValidationTest, PerStageLimits) {
|
||||
|
||||
// Adding an extra binding of a different type works.
|
||||
{
|
||||
std::vector<wgpu::BindGroupLayoutEntry> bindings = maxBindings;
|
||||
std::vector<utils::BindingLayoutEntryInitializationHelper> bindings = maxBindings;
|
||||
bindings.push_back(
|
||||
PopulateEntry({info.maxCount, wgpu::ShaderStage::Compute, info.otherBindingType}));
|
||||
MakeBindGroupLayout(bindings.data(), bindings.size());
|
||||
@@ -792,7 +793,7 @@ TEST_F(BindGroupLayoutValidationTest, PerStageLimits) {
|
||||
|
||||
// Adding an extra binding of the maxed type in a different stage works
|
||||
{
|
||||
std::vector<wgpu::BindGroupLayoutEntry> bindings = maxBindings;
|
||||
std::vector<utils::BindingLayoutEntryInitializationHelper> bindings = maxBindings;
|
||||
bindings.push_back(
|
||||
PopulateEntry({info.maxCount, wgpu::ShaderStage::Fragment, info.bindingType}));
|
||||
MakeBindGroupLayout(bindings.data(), bindings.size());
|
||||
@@ -800,7 +801,7 @@ TEST_F(BindGroupLayoutValidationTest, PerStageLimits) {
|
||||
|
||||
// Adding an extra binding of the maxed type and stage exceeds the per stage limit.
|
||||
{
|
||||
std::vector<wgpu::BindGroupLayoutEntry> bindings = maxBindings;
|
||||
std::vector<utils::BindingLayoutEntryInitializationHelper> bindings = maxBindings;
|
||||
bindings.push_back(
|
||||
PopulateEntry({info.maxCount, wgpu::ShaderStage::Compute, info.bindingType}));
|
||||
ASSERT_DEVICE_ERROR(MakeBindGroupLayout(bindings.data(), bindings.size()));
|
||||
@@ -841,18 +842,18 @@ TEST_F(BindGroupLayoutValidationTest, DynamicBufferNumberLimit) {
|
||||
"");
|
||||
|
||||
for (uint32_t i = 0; i < kMaxDynamicUniformBuffersPerPipelineLayout; ++i) {
|
||||
maxUniformDB.push_back(
|
||||
{i, wgpu::ShaderStage::Compute, wgpu::BindingType::UniformBuffer, true});
|
||||
maxUniformDB.push_back(utils::BindingLayoutEntryInitializationHelper(
|
||||
i, wgpu::ShaderStage::Compute, wgpu::BindingType::UniformBuffer, true));
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < kMaxDynamicStorageBuffersPerPipelineLayout; ++i) {
|
||||
maxStorageDB.push_back(
|
||||
{i, wgpu::ShaderStage::Compute, wgpu::BindingType::StorageBuffer, true});
|
||||
maxStorageDB.push_back(utils::BindingLayoutEntryInitializationHelper(
|
||||
i, wgpu::ShaderStage::Compute, wgpu::BindingType::StorageBuffer, true));
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < kMaxDynamicStorageBuffersPerPipelineLayout; ++i) {
|
||||
maxReadonlyStorageDB.push_back(
|
||||
{i, wgpu::ShaderStage::Compute, wgpu::BindingType::ReadonlyStorageBuffer, true});
|
||||
maxReadonlyStorageDB.push_back(utils::BindingLayoutEntryInitializationHelper(
|
||||
i, wgpu::ShaderStage::Compute, wgpu::BindingType::ReadonlyStorageBuffer, true));
|
||||
}
|
||||
|
||||
// Test creating with the maxes works
|
||||
@@ -919,25 +920,25 @@ TEST_F(BindGroupLayoutValidationTest, DynamicBufferNumberLimit) {
|
||||
|
||||
// Check dynamic uniform buffers exceed maximum in bind group layout.
|
||||
{
|
||||
maxUniformDB.push_back({kMaxDynamicUniformBuffersPerPipelineLayout,
|
||||
wgpu::ShaderStage::Fragment, wgpu::BindingType::UniformBuffer,
|
||||
true});
|
||||
maxUniformDB.push_back(utils::BindingLayoutEntryInitializationHelper(
|
||||
kMaxDynamicUniformBuffersPerPipelineLayout, wgpu::ShaderStage::Fragment,
|
||||
wgpu::BindingType::UniformBuffer, true));
|
||||
TestCreateBindGroupLayout(maxUniformDB.data(), maxUniformDB.size(), false);
|
||||
}
|
||||
|
||||
// Check dynamic storage buffers exceed maximum in bind group layout.
|
||||
{
|
||||
maxStorageDB.push_back({kMaxDynamicStorageBuffersPerPipelineLayout,
|
||||
wgpu::ShaderStage::Fragment, wgpu::BindingType::StorageBuffer,
|
||||
true});
|
||||
maxStorageDB.push_back(utils::BindingLayoutEntryInitializationHelper(
|
||||
kMaxDynamicStorageBuffersPerPipelineLayout, wgpu::ShaderStage::Fragment,
|
||||
wgpu::BindingType::StorageBuffer, true));
|
||||
TestCreateBindGroupLayout(maxStorageDB.data(), maxStorageDB.size(), false);
|
||||
}
|
||||
|
||||
// Check dynamic readonly storage buffers exceed maximum in bind group layout.
|
||||
{
|
||||
maxReadonlyStorageDB.push_back({kMaxDynamicStorageBuffersPerPipelineLayout,
|
||||
wgpu::ShaderStage::Fragment,
|
||||
wgpu::BindingType::ReadonlyStorageBuffer, true});
|
||||
maxReadonlyStorageDB.push_back(utils::BindingLayoutEntryInitializationHelper(
|
||||
kMaxDynamicStorageBuffersPerPipelineLayout, wgpu::ShaderStage::Fragment,
|
||||
wgpu::BindingType::ReadonlyStorageBuffer, true));
|
||||
TestCreateBindGroupLayout(maxReadonlyStorageDB.data(), maxReadonlyStorageDB.size(), false);
|
||||
}
|
||||
}
|
||||
@@ -1491,7 +1492,8 @@ class SetBindGroupPersistenceValidationTest : public ValidationTest {
|
||||
|
||||
// Iterate through binding types and populate a list of BindGroupLayoutEntrys.
|
||||
for (uint32_t b = 0; b < layout.size(); ++b) {
|
||||
bindings[b] = {b, wgpu::ShaderStage::Fragment, layout[b], false};
|
||||
bindings[b] = utils::BindingLayoutEntryInitializationHelper(
|
||||
b, wgpu::ShaderStage::Fragment, layout[b], false);
|
||||
}
|
||||
|
||||
// Create the bind group layout.
|
||||
|
||||
@@ -297,7 +297,8 @@ TEST_F(StorageTextureValidationTests, BindGroupLayoutWithStorageTextureBindingTy
|
||||
{wgpu::ShaderStage::Compute, wgpu::BindingType::WriteonlyStorageTexture, true}}};
|
||||
|
||||
for (const auto& testSpec : kTestSpecs) {
|
||||
wgpu::BindGroupLayoutEntry entry = {0, testSpec.stage, testSpec.type};
|
||||
wgpu::BindGroupLayoutEntry entry =
|
||||
utils::BindingLayoutEntryInitializationHelper(0, testSpec.stage, testSpec.type);
|
||||
entry.storageTextureFormat = wgpu::TextureFormat::R32Uint;
|
||||
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
@@ -525,8 +526,8 @@ TEST_F(StorageTextureValidationTests, BindGroupLayoutStorageTextureFormatMatches
|
||||
defaultComputePipelineDescriptor.computeStage.entryPoint = "main";
|
||||
|
||||
// Set common fileds of bind group layout binding.
|
||||
wgpu::BindGroupLayoutEntry defaultBindGroupLayoutEntry = {0, wgpu::ShaderStage::Compute,
|
||||
bindingType};
|
||||
utils::BindingLayoutEntryInitializationHelper defaultBindGroupLayoutEntry = {
|
||||
0, wgpu::ShaderStage::Compute, bindingType};
|
||||
|
||||
for (wgpu::TextureFormat storageTextureFormatInBindGroupLayout :
|
||||
utils::kAllTextureFormats) {
|
||||
@@ -581,8 +582,8 @@ TEST_F(StorageTextureValidationTests, BindGroupLayoutViewDimensionMatchesShaderD
|
||||
defaultComputePipelineDescriptor.computeStage.entryPoint = "main";
|
||||
|
||||
// Set common fileds of bind group layout binding.
|
||||
wgpu::BindGroupLayoutEntry defaultBindGroupLayoutEntry = {0, wgpu::ShaderStage::Compute,
|
||||
bindingType};
|
||||
utils::BindingLayoutEntryInitializationHelper defaultBindGroupLayoutEntry = {
|
||||
0, wgpu::ShaderStage::Compute, bindingType};
|
||||
defaultBindGroupLayoutEntry.storageTextureFormat = kStorageTextureFormat;
|
||||
|
||||
for (wgpu::TextureViewDimension dimensionInBindGroupLayout : kSupportedDimensions) {
|
||||
|
||||
@@ -148,7 +148,6 @@ TEST_F(UnsafeAPIValidationTest, DispatchIndirectDisallowed) {
|
||||
// Check that dynamic storage buffers are disallowed.
|
||||
TEST_F(UnsafeAPIValidationTest, DynamicStorageBuffer) {
|
||||
wgpu::BindGroupLayoutEntry entry;
|
||||
entry.type = wgpu::BindingType::StorageBuffer;
|
||||
entry.visibility = wgpu::ShaderStage::Fragment;
|
||||
|
||||
wgpu::BindGroupLayoutDescriptor desc;
|
||||
@@ -157,12 +156,28 @@ TEST_F(UnsafeAPIValidationTest, DynamicStorageBuffer) {
|
||||
|
||||
// Control case: storage buffer without a dynamic offset is allowed.
|
||||
{
|
||||
entry.type = wgpu::BindingType::StorageBuffer;
|
||||
entry.hasDynamicOffset = false;
|
||||
device.CreateBindGroupLayout(&desc);
|
||||
}
|
||||
|
||||
// Control case: readonly storage buffer without a dynamic offset is allowed.
|
||||
{
|
||||
entry.type = wgpu::BindingType::ReadonlyStorageBuffer;
|
||||
entry.hasDynamicOffset = false;
|
||||
device.CreateBindGroupLayout(&desc);
|
||||
}
|
||||
|
||||
// Control case: storage buffer with a dynamic offset is disallowed.
|
||||
{
|
||||
entry.type = wgpu::BindingType::StorageBuffer;
|
||||
entry.hasDynamicOffset = true;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&desc));
|
||||
}
|
||||
|
||||
// Control case: readonly storage buffer with a dynamic offset is disallowed.
|
||||
{
|
||||
entry.type = wgpu::BindingType::ReadonlyStorageBuffer;
|
||||
entry.hasDynamicOffset = true;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&desc));
|
||||
}
|
||||
|
||||
@@ -307,13 +307,42 @@ TEST_F(WireArgumentTests, StructureOfObjectArrayArgument) {
|
||||
TEST_F(WireArgumentTests, StructureOfStructureArrayArgument) {
|
||||
static constexpr int NUM_BINDINGS = 3;
|
||||
WGPUBindGroupLayoutEntry entries[NUM_BINDINGS]{
|
||||
{0, WGPUShaderStage_Vertex, WGPUBindingType_Sampler, false, 0, WGPUTextureViewDimension_2D,
|
||||
WGPUTextureComponentType_Float, WGPUTextureFormat_RGBA8Unorm},
|
||||
{1, WGPUShaderStage_Vertex, WGPUBindingType_SampledTexture, false, 0,
|
||||
WGPUTextureViewDimension_2D, WGPUTextureComponentType_Float, WGPUTextureFormat_RGBA8Unorm},
|
||||
{2, static_cast<WGPUShaderStage>(WGPUShaderStage_Vertex | WGPUShaderStage_Fragment),
|
||||
WGPUBindingType_UniformBuffer, false, 0, WGPUTextureViewDimension_2D,
|
||||
WGPUTextureComponentType_Float, WGPUTextureFormat_RGBA8Unorm},
|
||||
{0,
|
||||
WGPUShaderStage_Vertex,
|
||||
WGPUBindingType_Sampler,
|
||||
false,
|
||||
0,
|
||||
WGPUTextureViewDimension_2D,
|
||||
WGPUTextureComponentType_Float,
|
||||
WGPUTextureFormat_RGBA8Unorm,
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{}},
|
||||
{1,
|
||||
WGPUShaderStage_Vertex,
|
||||
WGPUBindingType_SampledTexture,
|
||||
false,
|
||||
0,
|
||||
WGPUTextureViewDimension_2D,
|
||||
WGPUTextureComponentType_Float,
|
||||
WGPUTextureFormat_RGBA8Unorm,
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{}},
|
||||
{2,
|
||||
static_cast<WGPUShaderStage>(WGPUShaderStage_Vertex | WGPUShaderStage_Fragment),
|
||||
WGPUBindingType_UniformBuffer,
|
||||
false,
|
||||
0,
|
||||
WGPUTextureViewDimension_2D,
|
||||
WGPUTextureComponentType_Float,
|
||||
WGPUTextureFormat_RGBA8Unorm,
|
||||
{},
|
||||
{},
|
||||
{},
|
||||
{}},
|
||||
};
|
||||
WGPUBindGroupLayoutDescriptor bglDescriptor = {};
|
||||
bglDescriptor.entryCount = NUM_BINDINGS;
|
||||
|
||||
Reference in New Issue
Block a user