Skip to content

Commit cf2fb0b

Browse files
authored
do not query work group params on gles < 3.1 (#2166)
* do not query work group params on gles < 3.1 * address reviewer comment
1 parent 6fc0587 commit cf2fb0b

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

wgpu-hal/src/gles/adapter.rs

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)