diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index 570b0002dd4..0352f3590d5 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -412,6 +412,7 @@ void si_nir_scan_shader(struct si_screen *sscreen, struct nir_shader *nir, info->base.msaa_images = nir->info.msaa_images[0]; info->base.shared_size = nir->info.shared_size; + info->base.task_payload_size = nir->info.task_payload_size; memcpy(info->base.workgroup_size, nir->info.workgroup_size, sizeof(nir->info.workgroup_size)); info->base.workgroup_size_variable = nir->info.workgroup_size_variable; info->base.derivative_group = nir->info.derivative_group; @@ -457,6 +458,17 @@ void si_nir_scan_shader(struct si_screen *sscreen, struct nir_shader *nir, info->base.cs.user_data_components_amd = nir->info.cs.user_data_components_amd; break; + case MESA_SHADER_MESH: + info->base.mesh.max_vertices_out = nir->info.mesh.max_vertices_out; + info->base.mesh.max_primitives_out = nir->info.mesh.max_primitives_out; + break; + + case MESA_SHADER_TASK: + info->base.task.linear_taskmesh_dispatch = + nir->info.mesh.ts_mesh_dispatch_dimensions[1] == 1 && + nir->info.mesh.ts_mesh_dispatch_dimensions[2] == 1; + break; + default: UNREACHABLE("unexpected shader stage"); } diff --git a/src/gallium/drivers/radeonsi/si_shader_info.h b/src/gallium/drivers/radeonsi/si_shader_info.h index 6cbf9ef048e..16346837721 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.h +++ b/src/gallium/drivers/radeonsi/si_shader_info.h @@ -33,6 +33,7 @@ struct si_shader_info { uint32_t msaa_images; unsigned shared_size; + unsigned task_payload_size; uint16_t workgroup_size[3]; bool workgroup_size_variable:1; enum gl_derivative_group derivative_group:2; @@ -75,6 +76,15 @@ struct si_shader_info { struct { uint8_t user_data_components_amd:4; } cs; + + struct { + uint16_t max_vertices_out; + uint16_t max_primitives_out; + } mesh; + + struct { + bool linear_taskmesh_dispatch : 1; + } task; }; } base;