mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 21:08:11 +02:00
radv: add gather_shader_info_tcs() helper
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18210>
This commit is contained in:
parent
4cec1f130b
commit
ba11aeca6b
1 changed files with 25 additions and 18 deletions
|
|
@ -346,6 +346,30 @@ assign_outinfo_params(struct radv_vs_output_info *outinfo, uint64_t mask,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gather_shader_info_tcs(struct radv_device *device, const nir_shader *nir,
|
||||
const struct radv_pipeline_key *pipeline_key, struct radv_shader_info *info)
|
||||
{
|
||||
info->tcs.tcs_vertices_out = nir->info.tess.tcs_vertices_out;
|
||||
|
||||
/* Number of tessellation patches per workgroup processed by the current pipeline. */
|
||||
info->num_tess_patches =
|
||||
get_tcs_num_patches(pipeline_key->tcs.tess_input_vertices, nir->info.tess.tcs_vertices_out,
|
||||
info->tcs.num_linked_inputs, info->tcs.num_linked_outputs,
|
||||
info->tcs.num_linked_patch_outputs,
|
||||
device->physical_device->hs.tess_offchip_block_dw_size,
|
||||
device->physical_device->rad_info.gfx_level,
|
||||
device->physical_device->rad_info.family);
|
||||
|
||||
/* LDS size used by VS+TCS for storing TCS inputs and outputs. */
|
||||
info->tcs.num_lds_blocks =
|
||||
calculate_tess_lds_size(device->physical_device->rad_info.gfx_level,
|
||||
pipeline_key->tcs.tess_input_vertices,
|
||||
nir->info.tess.tcs_vertices_out, info->tcs.num_linked_inputs,
|
||||
info->num_tess_patches, info->tcs.num_linked_outputs,
|
||||
info->tcs.num_linked_patch_outputs);
|
||||
}
|
||||
|
||||
static void
|
||||
gather_shader_info_tes(const nir_shader *nir, struct radv_shader_info *info)
|
||||
{
|
||||
|
|
@ -643,24 +667,7 @@ radv_nir_shader_info_pass(struct radv_device *device, const struct nir_shader *n
|
|||
gather_shader_info_tes(nir, info);
|
||||
break;
|
||||
case MESA_SHADER_TESS_CTRL:
|
||||
info->tcs.tcs_vertices_out = nir->info.tess.tcs_vertices_out;
|
||||
|
||||
/* Number of tessellation patches per workgroup processed by the current pipeline. */
|
||||
info->num_tess_patches =
|
||||
get_tcs_num_patches(pipeline_key->tcs.tess_input_vertices, nir->info.tess.tcs_vertices_out,
|
||||
info->tcs.num_linked_inputs, info->tcs.num_linked_outputs,
|
||||
info->tcs.num_linked_patch_outputs,
|
||||
device->physical_device->hs.tess_offchip_block_dw_size,
|
||||
device->physical_device->rad_info.gfx_level,
|
||||
device->physical_device->rad_info.family);
|
||||
|
||||
/* LDS size used by VS+TCS for storing TCS inputs and outputs. */
|
||||
info->tcs.num_lds_blocks =
|
||||
calculate_tess_lds_size(device->physical_device->rad_info.gfx_level,
|
||||
pipeline_key->tcs.tess_input_vertices,
|
||||
nir->info.tess.tcs_vertices_out, info->tcs.num_linked_inputs,
|
||||
info->num_tess_patches, info->tcs.num_linked_outputs,
|
||||
info->tcs.num_linked_patch_outputs);
|
||||
gather_shader_info_tcs(device, nir, pipeline_key, info);
|
||||
break;
|
||||
case MESA_SHADER_VERTEX:
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue