diff --git a/src/drm.cpp b/src/drm.cpp index 8af5503..93679a8 100644 --- a/src/drm.cpp +++ b/src/drm.cpp @@ -1880,9 +1880,11 @@ drm_prepare_liftoff( struct drm_t *drm, const struct FrameInfo_t *frameInfo, boo liftoff_layer_unset_property( drm->lo_layers[ i ], "COLOR_RANGE" ); if ( drm_supports_color_mgmt( drm ) ) { - liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_DEGAMMA_TF", convert_colorspace_to_valve1_drm( entry.layerState[i].colorspace ) ); + bool needs_scaling = frameInfo->layers[ i ].scale.x != 1.0f && frameInfo->layers[ i ].scale.y != 1.0f; + drm_valve1_transfer_function scale_tf = needs_scaling ? convert_colorspace_to_valve1_drm( entry.layerState[i].colorspace ) : DRM_VALVE1_TRANSFER_FUNCTION_DEFAULT; + liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_DEGAMMA_TF", scale_tf ); liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_SHAPER_LUT", drm->pending.shaperlut_id[ ColorSpaceToEOTFIndex( entry.layerState[i].colorspace ) ] ); - liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_SHAPER_TF", convert_colorspace_to_valve1_drm( entry.layerState[i].colorspace ) ); + liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_SHAPER_TF", scale_tf ); liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_LUT3D", drm->pending.lut3d_id[ ColorSpaceToEOTFIndex( entry.layerState[i].colorspace ) ] ); liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_BLEND_TF", drm->pending.output_tf ); }