@@ -191,6 +191,8 @@ impl super::Adapter {
191191 let ver = Self :: parse_version ( & version) . ok ( ) ?;
192192
193193 let supports_storage = ver >= ( 3 , 1 ) ;
194+ let supports_work_group_params = ver >= ( 3 , 1 ) ;
195+
194196 let shading_language_version = {
195197 let sl_version = gl. get_parameter_string ( glow:: SHADING_LANGUAGE_VERSION ) ;
196198 log:: info!( "SL version: {}" , & sl_version) ;
@@ -328,11 +330,14 @@ impl super::Adapter {
328330 gl. get_parameter_i32 ( glow:: MAX_VERTEX_UNIFORM_BLOCKS )
329331 . min ( gl. get_parameter_i32 ( glow:: MAX_FRAGMENT_UNIFORM_BLOCKS ) ) as u32 ;
330332
331- let max_compute_workgroups_per_dimension = gl
332- . get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_COUNT , 0 )
333- . min ( gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_COUNT , 1 ) )
334- . min ( gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_COUNT , 2 ) )
335- as u32 ;
333+ let max_compute_workgroups_per_dimension = if supports_work_group_params {
334+ gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_COUNT , 0 )
335+ . min ( gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_COUNT , 1 ) )
336+ . min ( gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_COUNT , 2 ) )
337+ as u32
338+ } else {
339+ 0
340+ } ;
336341
337342 let limits = wgt:: Limits {
338343 max_texture_dimension_1d : max_texture_size,
@@ -373,15 +378,21 @@ impl super::Adapter {
373378 max_push_constant_size : 0 ,
374379 min_uniform_buffer_offset_alignment,
375380 min_storage_buffer_offset_alignment,
376- max_compute_workgroup_size_x : gl
377- . get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_SIZE , 0 )
378- as u32 ,
379- max_compute_workgroup_size_y : gl
380- . get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_SIZE , 1 )
381- as u32 ,
382- max_compute_workgroup_size_z : gl
383- . get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_SIZE , 2 )
384- as u32 ,
381+ max_compute_workgroup_size_x : if supports_work_group_params {
382+ gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_SIZE , 0 ) as u32
383+ } else {
384+ 0
385+ } ,
386+ max_compute_workgroup_size_y : if supports_work_group_params {
387+ gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_SIZE , 1 ) as u32
388+ } else {
389+ 0
390+ } ,
391+ max_compute_workgroup_size_z : if supports_work_group_params {
392+ gl. get_parameter_indexed_i32 ( glow:: MAX_COMPUTE_WORK_GROUP_SIZE , 2 ) as u32
393+ } else {
394+ 0
395+ } ,
385396 max_compute_workgroups_per_dimension,
386397 } ;
387398
0 commit comments