#include "dawn/native/BindGroup.h"
#include "dawn/common/Assert.h"
#include "dawn/common/MatchVariant.h"
#include "dawn/common/Math.h"
#include "dawn/common/ityp_bitset.h"
#include "dawn/native/BindGroupLayout.h"
#include "dawn/native/Buffer.h"
#include "dawn/native/ChainUtils.h"
#include "dawn/native/CommandValidation.h"
#include "dawn/native/Device.h"
#include "dawn/native/ExternalTexture.h"
#include "dawn/native/ObjectBase.h"
#include "dawn/native/ObjectType_autogen.h"
#include "dawn/native/Sampler.h"
#include "dawn/native/Texture.h"
#include "dawn/native/utils/WGPUHelpers.h"
namespace dawn::native {
namespace {
MaybeError ValidateBufferBinding(const DeviceBase* device,
const BindGroupEntry& entry,
const BufferBindingInfo& layout) { … }
MaybeError ValidateTextureBindGroupEntry(DeviceBase* device, const BindGroupEntry& entry) { … }
MaybeError ValidateSampledTextureBinding(DeviceBase* device,
const BindGroupEntry& entry,
const TextureBindingInfo& layout,
UsageValidationMode mode) { … }
MaybeError ValidateStorageTextureBinding(DeviceBase* device,
const BindGroupEntry& entry,
const StorageTextureBindingInfo& layout,
UsageValidationMode mode) { … }
MaybeError ValidateSamplerBinding(const DeviceBase* device,
const BindGroupEntry& entry,
const SamplerBindingInfo& layout) { … }
MaybeError ValidateExternalTextureBinding(
const DeviceBase* device,
const BindGroupEntry& entry,
const ExternalTextureBindingEntry* externalTextureBindingEntry,
const ExternalTextureBindingExpansionMap& expansions) { … }
template <typename F>
void ForEachUnverifiedBufferBindingIndexImpl(const BindGroupLayoutInternalBase* bgl, F&& f) { … }
}
MaybeError ValidateBindGroupDescriptor(DeviceBase* device,
const BindGroupDescriptor* descriptor,
UsageValidationMode mode) { … }
BindGroupBase::BindGroupBase(DeviceBase* device,
const BindGroupDescriptor* descriptor,
void* bindingDataStart)
: … { … }
BindGroupBase::~BindGroupBase() = default;
void BindGroupBase::DestroyImpl() { … }
void BindGroupBase::DeleteThis() { … }
BindGroupBase::BindGroupBase(DeviceBase* device, ObjectBase::ErrorTag tag, const char* label)
: … { … }
Ref<BindGroupBase> BindGroupBase::MakeError(DeviceBase* device, const char* label) { … }
ObjectType BindGroupBase::GetType() const { … }
BindGroupLayoutBase* BindGroupBase::GetFrontendLayout() { … }
const BindGroupLayoutBase* BindGroupBase::GetFrontendLayout() const { … }
BindGroupLayoutInternalBase* BindGroupBase::GetLayout() { … }
const BindGroupLayoutInternalBase* BindGroupBase::GetLayout() const { … }
const ityp::span<uint32_t, uint64_t>& BindGroupBase::GetUnverifiedBufferSizes() const { … }
BufferBinding BindGroupBase::GetBindingAsBufferBinding(BindingIndex bindingIndex) { … }
SamplerBase* BindGroupBase::GetBindingAsSampler(BindingIndex bindingIndex) const { … }
TextureViewBase* BindGroupBase::GetBindingAsTextureView(BindingIndex bindingIndex) { … }
const std::vector<Ref<ExternalTextureBase>>& BindGroupBase::GetBoundExternalTextures() const { … }
void BindGroupBase::ForEachUnverifiedBufferBindingIndex(
std::function<void(BindingIndex, uint32_t)> fn) const { … }
}