drm/amd/display: Don't try to enter MALL SS if stereo3d
[Description] MALL not supported with stereo3D according to DCN doc. Reviewed-by: Jun Lei <Jun.Lei@amd.com> Acked-by: Tom Chung <chiahsuan.chung@amd.com> Signed-off-by: Alvin Lee <alvin.lee2@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
84ef99c728
commit
f0068dd0ef
1 changed files with 23 additions and 3 deletions
|
@ -331,7 +331,9 @@ static uint32_t dcn32_calculate_cab_allocation(struct dc *dc, struct dc_state *c
|
||||||
bool dcn32_apply_idle_power_optimizations(struct dc *dc, bool enable)
|
bool dcn32_apply_idle_power_optimizations(struct dc *dc, bool enable)
|
||||||
{
|
{
|
||||||
union dmub_rb_cmd cmd;
|
union dmub_rb_cmd cmd;
|
||||||
uint8_t ways;
|
uint8_t ways, i, j;
|
||||||
|
bool stereo_in_use = false;
|
||||||
|
struct dc_plane_state *plane = NULL;
|
||||||
|
|
||||||
if (!dc->ctx->dmub_srv)
|
if (!dc->ctx->dmub_srv)
|
||||||
return false;
|
return false;
|
||||||
|
@ -360,7 +362,23 @@ bool dcn32_apply_idle_power_optimizations(struct dc *dc, bool enable)
|
||||||
* and configure HUBP's to fetch from MALL
|
* and configure HUBP's to fetch from MALL
|
||||||
*/
|
*/
|
||||||
ways = dcn32_calculate_cab_allocation(dc, dc->current_state);
|
ways = dcn32_calculate_cab_allocation(dc, dc->current_state);
|
||||||
if (ways <= dc->caps.cache_num_ways) {
|
|
||||||
|
/* MALL not supported with Stereo3D. If any plane is using stereo,
|
||||||
|
* don't try to enter MALL.
|
||||||
|
*/
|
||||||
|
for (i = 0; i < dc->current_state->stream_count; i++) {
|
||||||
|
for (j = 0; j < dc->current_state->stream_status[i].plane_count; j++) {
|
||||||
|
plane = dc->current_state->stream_status[i].plane_states[j];
|
||||||
|
|
||||||
|
if (plane->address.type == PLN_ADDR_TYPE_GRPH_STEREO) {
|
||||||
|
stereo_in_use = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (stereo_in_use)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (ways <= dc->caps.cache_num_ways && !stereo_in_use) {
|
||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
cmd.cab.header.type = DMUB_CMD__CAB_FOR_SS;
|
cmd.cab.header.type = DMUB_CMD__CAB_FOR_SS;
|
||||||
cmd.cab.header.sub_type = DMUB_CMD__CAB_DCN_SS_FIT_IN_CAB;
|
cmd.cab.header.sub_type = DMUB_CMD__CAB_DCN_SS_FIT_IN_CAB;
|
||||||
|
@ -694,9 +712,11 @@ void dcn32_update_mall_sel(struct dc *dc, struct dc_state *context)
|
||||||
if (pipe->stream->mall_stream_config.type == SUBVP_PHANTOM) {
|
if (pipe->stream->mall_stream_config.type == SUBVP_PHANTOM) {
|
||||||
hubp->funcs->hubp_update_mall_sel(hubp, 1, false);
|
hubp->funcs->hubp_update_mall_sel(hubp, 1, false);
|
||||||
} else {
|
} else {
|
||||||
|
// MALL not supported with Stereo3D
|
||||||
hubp->funcs->hubp_update_mall_sel(hubp,
|
hubp->funcs->hubp_update_mall_sel(hubp,
|
||||||
num_ways <= dc->caps.cache_num_ways &&
|
num_ways <= dc->caps.cache_num_ways &&
|
||||||
pipe->stream->link->psr_settings.psr_version == DC_PSR_VERSION_UNSUPPORTED ? 2 : 0,
|
pipe->stream->link->psr_settings.psr_version == DC_PSR_VERSION_UNSUPPORTED &&
|
||||||
|
pipe->plane_state->address.type != PLN_ADDR_TYPE_GRPH_STEREO ? 2 : 0,
|
||||||
cache_cursor);
|
cache_cursor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue