@@ -55,6 +55,7 @@ DCP_THUNK_OUT(iomfb_a131_pmu_service_matched, iomfbep_a131_pmu_service_matched,
5555DCP_THUNK_OUT (iomfb_a132_backlight_service_matched , iomfbep_a132_backlight_service_matched , u32 );
5656DCP_THUNK_OUT (iomfb_a358_vi_set_temperature_hint , iomfbep_a358_vi_set_temperature_hint , u32 );
5757
58+ IOMFB_THUNK_INOUT (set_matrix );
5859IOMFB_THUNK_INOUT (get_color_remap_mode );
5960IOMFB_THUNK_INOUT (last_client_close );
6061
@@ -1285,7 +1286,24 @@ void DCP_FW_NAME(iomfb_flush)(struct apple_dcp *dcp, struct drm_crtc *crtc, stru
12851286 dcp -> brightness .update = false;
12861287 }
12871288
1288- do_swap (dcp , NULL , NULL );
1289+ if (crtc_state -> color_mgmt_changed && crtc_state -> ctm ) {
1290+ struct iomfb_set_matrix_req mat ;
1291+ struct drm_color_ctm * ctm = (struct drm_color_ctm * )crtc_state -> ctm -> data ;
1292+
1293+ mat .unk_u32 = 9 ;
1294+ mat .r [0 ] = ctm -> matrix [0 ];
1295+ mat .r [1 ] = ctm -> matrix [1 ];
1296+ mat .r [2 ] = ctm -> matrix [2 ];
1297+ mat .g [0 ] = ctm -> matrix [3 ];
1298+ mat .g [1 ] = ctm -> matrix [4 ];
1299+ mat .g [2 ] = ctm -> matrix [5 ];
1300+ mat .b [0 ] = ctm -> matrix [6 ];
1301+ mat .b [1 ] = ctm -> matrix [7 ];
1302+ mat .b [2 ] = ctm -> matrix [8 ];
1303+
1304+ iomfb_set_matrix (dcp , false, & mat , do_swap , NULL );
1305+ } else
1306+ do_swap (dcp , NULL , NULL );
12891307}
12901308
12911309static void res_is_main_display (struct apple_dcp * dcp , void * out , void * cookie )
0 commit comments