Skip to content

Commit c28b3ec

Browse files
Alex Hungalexdeucher
authored andcommitted
drm/amd/display: Use mpc.preblend flag to indicate 3D LUT
[WHAT] New ASIC's 3D LUT is indicated by mpc.preblend. Fixes: 0de2b1a ("drm/amd/display: add 3D LUT colorop") Reviewed-by: Melissa Wen <mwen@igalia.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit 43175f6)
1 parent 11439c4 commit c28b3ec

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,6 +1706,7 @@ __set_dm_plane_colorop_3dlut(struct drm_plane_state *plane_state,
17061706
struct dc_transfer_func *tf = &dc_plane_state->in_shaper_func;
17071707
struct drm_atomic_state *state = plane_state->state;
17081708
const struct amdgpu_device *adev = drm_to_adev(colorop->dev);
1709+
bool has_3dlut = adev->dm.dc->caps.color.dpp.hw_3d_lut || adev->dm.dc->caps.color.mpc.preblend;
17091710
const struct drm_device *dev = colorop->dev;
17101711
const struct drm_color_lut32 *lut3d;
17111712
uint32_t lut3d_size;
@@ -1722,7 +1723,7 @@ __set_dm_plane_colorop_3dlut(struct drm_plane_state *plane_state,
17221723
}
17231724

17241725
if (colorop_state && !colorop_state->bypass && colorop->type == DRM_COLOROP_3D_LUT) {
1725-
if (!adev->dm.dc->caps.color.dpp.hw_3d_lut) {
1726+
if (!has_3dlut) {
17261727
drm_dbg(dev, "3D LUT is not supported by hardware\n");
17271728
return -EINVAL;
17281729
}
@@ -1875,6 +1876,7 @@ amdgpu_dm_plane_set_colorop_properties(struct drm_plane_state *plane_state,
18751876
struct drm_colorop *colorop = plane_state->color_pipeline;
18761877
struct drm_device *dev = plane_state->plane->dev;
18771878
struct amdgpu_device *adev = drm_to_adev(dev);
1879+
bool has_3dlut = adev->dm.dc->caps.color.dpp.hw_3d_lut || adev->dm.dc->caps.color.mpc.preblend;
18781880
int ret;
18791881

18801882
/* 1D Curve - DEGAM TF */
@@ -1907,7 +1909,7 @@ amdgpu_dm_plane_set_colorop_properties(struct drm_plane_state *plane_state,
19071909
if (ret)
19081910
return ret;
19091911

1910-
if (adev->dm.dc->caps.color.dpp.hw_3d_lut) {
1912+
if (has_3dlut) {
19111913
/* 1D Curve & LUT - SHAPER TF & LUT */
19121914
colorop = colorop->next;
19131915
if (!colorop) {

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_colorop.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr
6060
struct drm_colorop *ops[MAX_COLOR_PIPELINE_OPS];
6161
struct drm_device *dev = plane->dev;
6262
struct amdgpu_device *adev = drm_to_adev(dev);
63+
bool has_3dlut = adev->dm.dc->caps.color.dpp.hw_3d_lut || adev->dm.dc->caps.color.mpc.preblend;
6364
int ret;
6465
int i = 0;
6566

@@ -112,7 +113,7 @@ int amdgpu_dm_initialize_default_pipeline(struct drm_plane *plane, struct drm_pr
112113

113114
i++;
114115

115-
if (adev->dm.dc->caps.color.dpp.hw_3d_lut) {
116+
if (has_3dlut) {
116117
/* 1D curve - SHAPER TF */
117118
ops[i] = kzalloc_obj(*ops[0]);
118119
if (!ops[i]) {

0 commit comments

Comments
 (0)