diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c index 7522e5f066c..619b8f95c31 100644 --- a/src/gallium/drivers/radeonsi/si_compute.c +++ b/src/gallium/drivers/radeonsi/si_compute.c @@ -47,7 +47,6 @@ static const amd_kernel_code_t *si_compute_get_code_object(const struct si_compu if (!ac_rtld_open(&rtld, (struct ac_rtld_open_info){.info = &sel->screen->info, .shader_type = MESA_SHADER_COMPUTE, - .wave_size = program->shader.wave_size, .num_parts = 1, .elf_ptrs = &program->shader.binary.code_buffer, .elf_sizes = &program->shader.binary.code_size})) @@ -258,12 +257,14 @@ static void *si_create_compute_state(struct pipe_context *ctx, const struct pipe } memcpy((void *)program->shader.binary.code_buffer, header->blob, header->num_bytes); - /* This is only for clover without NIR. */ - program->shader.wave_size = sscreen->info.gfx_level >= GFX10 ? 32 : 64; - const amd_kernel_code_t *code_object = si_compute_get_code_object(program, 0); code_object_to_config(code_object, &program->shader.config); + if (AMD_HSA_BITS_GET(code_object->code_properties, AMD_CODE_PROPERTY_ENABLE_WAVEFRONT_SIZE32)) + program->shader.wave_size = 32; + else + program->shader.wave_size = 64; + bool ok = si_shader_binary_upload(sctx->screen, &program->shader, 0); si_shader_dump(sctx->screen, &program->shader, &sctx->debug, stderr, true);