Skip to content

Commit 860daa4

Browse files
uma-inteljnikula
authored andcommitted
drm/i915/color: Enable Plane Color Pipelines
Expose color pipeline and add ability to program it. v2: Set bit to enable multisegmented lut v3: s/drm_color_lut_32/drm_color_lut32 (Simon) v4: - Fix dsb programming - Remove multi-segment LUT, they will be added in later patches - Add pipeline only to TGL+ - Code Refactor Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> Signed-off-by: Uma Shankar <uma.shankar@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patch.msgid.link/20251203085211.3663374-16-uma.shankar@intel.com
1 parent 65db7a1 commit 860daa4

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

drivers/gpu/drm/i915/display/intel_display.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7296,6 +7296,7 @@ static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
72967296
struct intel_display *display = to_intel_display(state);
72977297
struct intel_crtc_state *new_crtc_state =
72987298
intel_atomic_get_new_crtc_state(state, crtc);
7299+
unsigned int size = new_crtc_state->plane_color_changed ? 8192 : 1024;
72997300

73007301
if (!new_crtc_state->use_flipq &&
73017302
!new_crtc_state->use_dsb &&
@@ -7306,10 +7307,12 @@ static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
73067307
* Rough estimate:
73077308
* ~64 registers per each plane * 8 planes = 512
73087309
* Double that for pipe stuff and other overhead.
7310+
* ~4913 registers for 3DLUT
7311+
* ~200 color registers * 3 HDR planes
73097312
*/
73107313
new_crtc_state->dsb_commit = intel_dsb_prepare(state, crtc, INTEL_DSB_0,
73117314
new_crtc_state->use_dsb ||
7312-
new_crtc_state->use_flipq ? 1024 : 16);
7315+
new_crtc_state->use_flipq ? size : 16);
73137316
if (!new_crtc_state->dsb_commit) {
73147317
new_crtc_state->use_flipq = false;
73157318
new_crtc_state->use_dsb = false;

drivers/gpu/drm/i915/display/skl_universal_plane.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
#include "pxp/intel_pxp.h"
1313
#include "intel_bo.h"
14+
#include "intel_color.h"
15+
#include "intel_color_pipeline.h"
1416
#include "intel_de.h"
1517
#include "intel_display_irq.h"
1618
#include "intel_display_regs.h"
@@ -1275,6 +1277,18 @@ static u32 glk_plane_color_ctl(const struct intel_plane_state *plane_state)
12751277
if (plane_state->force_black)
12761278
plane_color_ctl |= PLANE_COLOR_PLANE_CSC_ENABLE;
12771279

1280+
if (plane_state->hw.degamma_lut)
1281+
plane_color_ctl |= PLANE_COLOR_PRE_CSC_GAMMA_ENABLE;
1282+
1283+
if (plane_state->hw.ctm)
1284+
plane_color_ctl |= PLANE_COLOR_PLANE_CSC_ENABLE;
1285+
1286+
if (plane_state->hw.gamma_lut) {
1287+
plane_color_ctl &= ~PLANE_COLOR_PLANE_GAMMA_DISABLE;
1288+
if (drm_color_lut32_size(plane_state->hw.gamma_lut) != 32)
1289+
plane_color_ctl |= PLANE_COLOR_POST_CSC_GAMMA_MULTSEG_ENABLE;
1290+
}
1291+
12781292
return plane_color_ctl;
12791293
}
12801294

@@ -1556,6 +1570,8 @@ icl_plane_update_noarm(struct intel_dsb *dsb,
15561570
plane_color_ctl = plane_state->color_ctl |
15571571
glk_plane_color_ctl_crtc(crtc_state);
15581572

1573+
intel_color_plane_program_pipeline(dsb, plane_state);
1574+
15591575
/* The scaler will handle the output position */
15601576
if (plane_state->scaler_id >= 0) {
15611577
crtc_x = 0;
@@ -1657,6 +1673,8 @@ icl_plane_update_arm(struct intel_dsb *dsb,
16571673

16581674
icl_plane_update_sel_fetch_arm(dsb, plane, crtc_state, plane_state);
16591675

1676+
intel_color_plane_commit_arm(dsb, plane_state);
1677+
16601678
/*
16611679
* In order to have FBC for fp16 formats pixel normalizer block must be
16621680
* active. Check if pixel normalizer block need to be enabled for FBC.
@@ -3001,6 +3019,9 @@ skl_universal_plane_create(struct intel_display *display,
30013019
DRM_COLOR_YCBCR_BT709,
30023020
DRM_COLOR_YCBCR_LIMITED_RANGE);
30033021

3022+
if (DISPLAY_VER(display) >= 12)
3023+
intel_color_pipeline_plane_init(&plane->base, pipe);
3024+
30043025
drm_plane_create_alpha_property(&plane->base);
30053026
drm_plane_create_blend_mode_property(&plane->base,
30063027
BIT(DRM_MODE_BLEND_PIXEL_NONE) |

0 commit comments

Comments
 (0)