@@ -35,7 +35,11 @@ macro_rules! with_limits {
3535 $macro_name!( max_sampled_textures_per_shader_stage, Ordering :: Less ) ;
3636 $macro_name!( max_samplers_per_shader_stage, Ordering :: Less ) ;
3737 $macro_name!( max_storage_buffers_per_shader_stage, Ordering :: Less ) ;
38+ $macro_name!( max_storage_buffers_in_vertex_stage, Ordering :: Less ) ;
39+ $macro_name!( max_storage_buffers_in_fragment_stage, Ordering :: Less ) ;
3840 $macro_name!( max_storage_textures_per_shader_stage, Ordering :: Less ) ;
41+ $macro_name!( max_storage_textures_in_vertex_stage, Ordering :: Less ) ;
42+ $macro_name!( max_storage_textures_in_fragment_stage, Ordering :: Less ) ;
3943 $macro_name!( max_uniform_buffers_per_shader_stage, Ordering :: Less ) ;
4044 $macro_name!( max_binding_array_elements_per_shader_stage, Ordering :: Less ) ;
4145 $macro_name!(
@@ -169,8 +173,16 @@ pub struct Limits {
169173 pub max_samplers_per_shader_stage : u32 ,
170174 /// Amount of storage buffers visible in a single shader stage. Defaults to 8. Higher is "better".
171175 pub max_storage_buffers_per_shader_stage : u32 ,
176+ /// Amount of storage buffers visible in a vertex shader stage. Defaults to 8. Higher is "better".
177+ pub max_storage_buffers_in_vertex_stage : u32 ,
178+ /// Amount of storage buffers visible in a fragment shader stage. Defaults to 8. Higher is "better".
179+ pub max_storage_buffers_in_fragment_stage : u32 ,
172180 /// Amount of storage textures visible in a single shader stage. Defaults to 4. Higher is "better".
173181 pub max_storage_textures_per_shader_stage : u32 ,
182+ /// Amount of storage textures visible in a vertex shader stage. Defaults to 4. Higher is "better".
183+ pub max_storage_textures_in_vertex_stage : u32 ,
184+ /// Amount of storage textures visible in a fragment shader stage. Defaults to 4. Higher is "better".
185+ pub max_storage_textures_in_fragment_stage : u32 ,
174186 /// Amount of uniform buffers visible in a single shader stage. Defaults to 12. Higher is "better".
175187 pub max_uniform_buffers_per_shader_stage : u32 ,
176188 /// Amount of individual resources within binding arrays that can be accessed in a single shader stage. Applies
@@ -367,7 +379,11 @@ impl Limits {
367379 /// max_sampled_textures_per_shader_stage: 16,
368380 /// max_samplers_per_shader_stage: 16,
369381 /// max_storage_buffers_per_shader_stage: 8,
382+ /// max_storage_buffers_in_vertex_stage: 8,
383+ /// max_storage_buffers_in_fragment_stage: 8,
370384 /// max_storage_textures_per_shader_stage: 4,
385+ /// max_storage_textures_in_vertex_stage: 4,
386+ /// max_storage_textures_in_fragment_stage: 4,
371387 /// max_uniform_buffers_per_shader_stage: 12,
372388 /// max_binding_array_elements_per_shader_stage: 0,
373389 /// max_binding_array_acceleration_structure_elements_per_shader_stage: 0,
@@ -432,7 +448,11 @@ impl Limits {
432448 max_sampled_textures_per_shader_stage : 16 ,
433449 max_samplers_per_shader_stage : 16 ,
434450 max_storage_buffers_per_shader_stage : 8 ,
451+ max_storage_buffers_in_vertex_stage : 8 ,
452+ max_storage_buffers_in_fragment_stage : 8 ,
435453 max_storage_textures_per_shader_stage : 4 ,
454+ max_storage_textures_in_vertex_stage : 4 ,
455+ max_storage_textures_in_fragment_stage : 4 ,
436456 max_uniform_buffers_per_shader_stage : 12 ,
437457 max_binding_array_elements_per_shader_stage : 0 ,
438458 max_binding_array_acceleration_structure_elements_per_shader_stage : 0 ,
@@ -502,7 +522,11 @@ impl Limits {
502522 /// max_sampled_textures_per_shader_stage: 16,
503523 /// max_samplers_per_shader_stage: 16,
504524 /// max_storage_buffers_per_shader_stage: 4, // *
525+ /// max_storage_buffers_in_vertex_stage: 4, // *
526+ /// max_storage_buffers_in_fragment_stage: 4, // *
505527 /// max_storage_textures_per_shader_stage: 4,
528+ /// max_storage_textures_in_vertex_stage: 4,
529+ /// max_storage_textures_in_fragment_stage: 4,
506530 /// max_uniform_buffers_per_shader_stage: 12,
507531 /// max_binding_array_elements_per_shader_stage: 0,
508532 /// max_binding_array_acceleration_structure_elements_per_shader_stage: 0,
@@ -560,6 +584,8 @@ impl Limits {
560584 max_texture_dimension_2d : 2048 ,
561585 max_texture_dimension_3d : 256 ,
562586 max_storage_buffers_per_shader_stage : 4 ,
587+ max_storage_buffers_in_vertex_stage : 4 ,
588+ max_storage_buffers_in_fragment_stage : 4 ,
563589 max_uniform_buffer_binding_size : 16 << 10 , // (16 KiB)
564590 max_inter_stage_shader_variables : 15 ,
565591 max_color_attachments : 4 ,
@@ -589,7 +615,11 @@ impl Limits {
589615 /// max_sampled_textures_per_shader_stage: 16,
590616 /// max_samplers_per_shader_stage: 16,
591617 /// max_storage_buffers_per_shader_stage: 0, // * +
618+ /// max_storage_buffers_in_vertex_stage: 0, // * +
619+ /// max_storage_buffers_in_fragment_stage: 0, // * +
592620 /// max_storage_textures_per_shader_stage: 0, // +
621+ /// max_storage_textures_in_vertex_stage: 0, // +
622+ /// max_storage_textures_in_fragment_stage: 0, // +
593623 /// max_uniform_buffers_per_shader_stage: 11, // +
594624 /// max_binding_array_elements_per_shader_stage: 0,
595625 /// max_binding_array_acceleration_structure_elements_per_shader_stage: 0,
@@ -645,7 +675,11 @@ impl Limits {
645675 Self {
646676 max_uniform_buffers_per_shader_stage : 11 ,
647677 max_storage_buffers_per_shader_stage : 0 ,
678+ max_storage_buffers_in_vertex_stage : 0 ,
679+ max_storage_buffers_in_fragment_stage : 0 ,
648680 max_storage_textures_per_shader_stage : 0 ,
681+ max_storage_textures_in_vertex_stage : 0 ,
682+ max_storage_textures_in_fragment_stage : 0 ,
649683 max_dynamic_storage_buffers_per_pipeline_layout : 0 ,
650684 max_storage_buffer_binding_size : 0 ,
651685 max_vertex_buffer_array_stride : 255 ,
@@ -693,7 +727,11 @@ impl Limits {
693727 max_sampled_textures_per_shader_stage : ALLOC_MAX_U32 ,
694728 max_samplers_per_shader_stage : ALLOC_MAX_U32 ,
695729 max_storage_buffers_per_shader_stage : ALLOC_MAX_U32 ,
730+ max_storage_buffers_in_vertex_stage : ALLOC_MAX_U32 ,
731+ max_storage_buffers_in_fragment_stage : ALLOC_MAX_U32 ,
696732 max_storage_textures_per_shader_stage : ALLOC_MAX_U32 ,
733+ max_storage_textures_in_vertex_stage : ALLOC_MAX_U32 ,
734+ max_storage_textures_in_fragment_stage : ALLOC_MAX_U32 ,
697735 max_uniform_buffers_per_shader_stage : ALLOC_MAX_U32 ,
698736 max_binding_array_elements_per_shader_stage : ALLOC_MAX_U32 ,
699737 max_binding_array_sampler_elements_per_shader_stage : ALLOC_MAX_U32 ,
@@ -961,7 +999,11 @@ impl Limits {
961999 max_sampled_textures_per_shader_stage : _,
9621000 max_samplers_per_shader_stage : _,
9631001 max_storage_buffers_per_shader_stage : _,
1002+ max_storage_buffers_in_vertex_stage : _,
1003+ max_storage_buffers_in_fragment_stage : _,
9641004 max_storage_textures_per_shader_stage : _,
1005+ max_storage_textures_in_vertex_stage : _,
1006+ max_storage_textures_in_fragment_stage : _,
9651007 max_uniform_buffers_per_shader_stage : _,
9661008 max_uniform_buffer_binding_size : _,
9671009 max_storage_buffer_binding_size : _,
0 commit comments