drm: Don't use DEGAMMA_TF + SHAPER_TF when we don't need scaling

Introduces weird banding artifacts rn, ugh.
This commit is contained in:
Joshua Ashton 2023-04-03 22:08:23 +01:00 committed by Joshie
parent 8a39621d3a
commit ef7642faae

View file

@ -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" ); liftoff_layer_unset_property( drm->lo_layers[ i ], "COLOR_RANGE" );
if ( drm_supports_color_mgmt( drm ) ) 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_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_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 ); liftoff_layer_set_property( drm->lo_layers[ i ], "VALVE1_PLANE_BLEND_TF", drm->pending.output_tf );
} }