}
static inline unsigned si_get_wave_size(struct si_screen *sscreen,
- enum pipe_shader_type shader_type, bool ngg, bool es,
+ gl_shader_stage stage, bool ngg, bool es,
bool gs_fast_launch, bool prim_discard_cs)
{
- if (shader_type == PIPE_SHADER_COMPUTE)
+ if (stage == MESA_SHADER_COMPUTE)
return sscreen->compute_wave_size;
- else if (shader_type == PIPE_SHADER_FRAGMENT)
+ else if (stage == MESA_SHADER_FRAGMENT)
return sscreen->ps_wave_size;
else if (gs_fast_launch)
return 32; /* GS fast launch hangs with Wave64, so always use Wave32. */
- else if ((shader_type == PIPE_SHADER_VERTEX && prim_discard_cs) || /* only Wave64 implemented */
- (shader_type == PIPE_SHADER_VERTEX && es && !ngg) ||
- (shader_type == PIPE_SHADER_TESS_EVAL && es && !ngg) ||
- (shader_type == PIPE_SHADER_GEOMETRY && !ngg)) /* legacy GS only supports Wave64 */
+ else if ((stage == MESA_SHADER_VERTEX && prim_discard_cs) || /* only Wave64 implemented */
+ (stage == MESA_SHADER_VERTEX && es && !ngg) ||
+ (stage == MESA_SHADER_TESS_EVAL && es && !ngg) ||
+ (stage == MESA_SHADER_GEOMETRY && !ngg)) /* legacy GS only supports Wave64 */
return 64;
else
return sscreen->ge_wave_size;
static inline unsigned si_get_shader_wave_size(struct si_shader *shader)
{
- return si_get_wave_size(shader->selector->screen, shader->selector->type, shader->key.as_ngg,
+ return si_get_wave_size(shader->selector->screen, shader->selector->info.stage,
+ shader->key.as_ngg,
shader->key.as_es,
shader->key.opt.ngg_culling & SI_NGG_CULL_GS_FAST_LAUNCH_ALL,
shader->key.opt.vs_as_prim_discard_cs);