On 2024-10-22 15:50, Alex Deucher wrote:
> Some devices do not support fullscreen 3D.
> 
> v2: Make the check generic.
> 
> Fixes: 336568de918e ("drm/amdgpu/swsmu: default to fullscreen 3D profile for 
> dGPUs")
> Signed-off-by: Alex Deucher <[email protected]>
> Cc: Kenneth Feng <[email protected]>
> Cc: Lijo Lazar <[email protected]>
> ---
>  drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c 
> b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> index accc96a03bd9..8d4aee4e2287 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> @@ -1236,6 +1236,14 @@ static void smu_init_xgmi_plpd_mode(struct smu_context 
> *smu)
>       }
>  }
>  
> +static bool smu_is_workload_profile_available(struct smu_context *smu,
> +                                           u32 profile)
> +{
> +     if (profile >= PP_SMC_POWER_PROFILE_COUNT)
> +             return false;
> +     return smu->workload_map && smu->workload_map[profile].valid_mapping;
> +}
> +
>  static int smu_sw_init(struct amdgpu_ip_block *ip_block)
>  {
>       struct amdgpu_device *adev = ip_block->adev;
> @@ -1267,7 +1275,8 @@ static int smu_sw_init(struct amdgpu_ip_block *ip_block)
>       smu->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE] = 5;
>       smu->workload_prority[PP_SMC_POWER_PROFILE_CUSTOM] = 6;
>  
> -     if (smu->is_apu)
> +     if (smu->is_apu ||
> +         !smu_is_workload_profile_available(smu, 
> PP_SMC_POWER_PROFILE_FULLSCREEN3D))
>               smu->workload_mask = 1 << 
> smu->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT];
>       else
>               smu->workload_mask = 1 << 
> smu->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D];

FWIW, PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT isn't really suitable for compositing 
with an APU either (certainly not while the machine is connected to AC, though 
I'm getting good battery life even forcing the compute profile).


-- 
Earthling Michel Dänzer       \        GNOME / Xwayland / Mesa developer
https://redhat.com             \               Libre software enthusiast

Reply via email to