summaryrefslogtreecommitdiffstats
path: root/third_party/rust/wgpu-core/src/binding_model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/wgpu-core/src/binding_model.rs')
-rw-r--r--third_party/rust/wgpu-core/src/binding_model.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/third_party/rust/wgpu-core/src/binding_model.rs b/third_party/rust/wgpu-core/src/binding_model.rs
index d7b54ad5a5..8689af2ac1 100644
--- a/third_party/rust/wgpu-core/src/binding_model.rs
+++ b/third_party/rust/wgpu-core/src/binding_model.rs
@@ -38,6 +38,8 @@ pub enum BindGroupLayoutEntryError {
ArrayUnsupported,
#[error("Multisampled binding with sample type `TextureSampleType::Float` must have filterable set to false.")]
SampleTypeFloatFilterableBindingMultisampled,
+ #[error("Multisampled texture binding view dimension must be 2d, got {0:?}")]
+ Non2DMultisampled(wgt::TextureViewDimension),
#[error(transparent)]
MissingFeatures(#[from] MissingFeatures),
#[error(transparent)]
@@ -219,7 +221,7 @@ pub enum BindingZone {
}
#[derive(Clone, Debug, Error)]
-#[error("Too many bindings of type {kind:?} in {zone}, limit is {limit}, count was {count}")]
+#[error("Too many bindings of type {kind:?} in {zone}, limit is {limit}, count was {count}. Check the limit `{}` passed to `Adapter::request_device`", .kind.to_config_str())]
pub struct BindingTypeMaxCountError {
pub kind: BindingTypeMaxCountErrorKind,
pub zone: BindingZone,
@@ -238,6 +240,28 @@ pub enum BindingTypeMaxCountErrorKind {
UniformBuffers,
}
+impl BindingTypeMaxCountErrorKind {
+ fn to_config_str(&self) -> &'static str {
+ match self {
+ BindingTypeMaxCountErrorKind::DynamicUniformBuffers => {
+ "max_dynamic_uniform_buffers_per_pipeline_layout"
+ }
+ BindingTypeMaxCountErrorKind::DynamicStorageBuffers => {
+ "max_dynamic_storage_buffers_per_pipeline_layout"
+ }
+ BindingTypeMaxCountErrorKind::SampledTextures => {
+ "max_sampled_textures_per_shader_stage"
+ }
+ BindingTypeMaxCountErrorKind::Samplers => "max_samplers_per_shader_stage",
+ BindingTypeMaxCountErrorKind::StorageBuffers => "max_storage_buffers_per_shader_stage",
+ BindingTypeMaxCountErrorKind::StorageTextures => {
+ "max_storage_textures_per_shader_stage"
+ }
+ BindingTypeMaxCountErrorKind::UniformBuffers => "max_uniform_buffers_per_shader_stage",
+ }
+ }
+}
+
#[derive(Debug, Default)]
pub(crate) struct PerStageBindingTypeCounter {
vertex: u32,