amd-drm-fixes-6.19-2026-02-05: amdgpu: - MES 11 old firmware compatibility fix - ASPM fix - DC LUT fixes amdkfd: - Fix possible double deletion of validate list Signed-off-by: Dave Airlie <airlied@redhat.com>
Unified · Split
| @@ -1920,21 +1920,21 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu( · 1919 unmodified lines | |||
| 1920 | 1920 | ||
| 1921 | /* Make sure restore workers don't access the BO any more */ | 1921 | /* Make sure restore workers don't access the BO any more */ |
| 1922 | mutex_lock(&process_info->lock); | 1922 | mutex_lock(&process_info->lock); |
| 1923 | list_del(&mem->validate_list); | 1923 | if (!list_empty(&mem->validate_list)) |
| 1924 | list_del_init(&mem->validate_list); | ||
| 1924 | mutex_unlock(&process_info->lock); | 1925 | mutex_unlock(&process_info->lock); |
| 1925 | 1926 | ||
| 1927 | ret = reserve_bo_and_cond_vms(mem, NULL, BO_VM_ALL, &ctx); | ||
| 1928 | if (unlikely(ret)) | ||
| 1929 | return ret; | ||
| 1930 | |||
| 1926 | /* Cleanup user pages and MMU notifiers */ | 1931 | /* Cleanup user pages and MMU notifiers */ |
| 1927 | if (amdgpu_ttm_tt_get_usermm(mem->bo->tbo.ttm)) { | 1932 | if (amdgpu_ttm_tt_get_usermm(mem->bo->tbo.ttm)) { |
| 1928 | amdgpu_hmm_unregister(mem->bo); | 1933 | amdgpu_hmm_unregister(mem->bo); |
| 1929 | mutex_lock(&process_info->notifier_lock); | ||
| 1930 | amdgpu_hmm_range_free(mem->range); | 1934 | amdgpu_hmm_range_free(mem->range); |
| 1931 | mutex_unlock(&process_info->notifier_lock); | 1935 | mem->range = NULL; |
| 1932 | } | 1936 | } |
| 1933 | 1937 | ||
| 1934 | ret = reserve_bo_and_cond_vms(mem, NULL, BO_VM_ALL, &ctx); | ||
| 1935 | if (unlikely(ret)) | ||
| 1936 | return ret; | ||
| 1937 | |||
| 1938 | amdgpu_amdkfd_remove_eviction_fence(mem->bo, | 1938 | amdgpu_amdkfd_remove_eviction_fence(mem->bo, |
| 1939 | process_info->eviction_fence); | 1939 | process_info->eviction_fence); |
| 1940 | pr_debug("Release VA 0x%llx - 0x%llx\n", mem->va, | 1940 | pr_debug("Release VA 0x%llx - 0x%llx\n", mem->va, |
| @@ -2405,9 +2405,6 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, · 2404 unmodified lines | |||
| 2405 | return -ENODEV; | 2405 | return -ENODEV; |
| 2406 | } | 2406 | } |
| 2407 | 2407 | ||
| 2408 | if (amdgpu_aspm == -1 && !pcie_aspm_enabled(pdev)) | ||
| 2409 | amdgpu_aspm = 0; | ||
| 2410 | |||
| 2411 | if (amdgpu_virtual_display || | 2408 | if (amdgpu_virtual_display || |
| 2412 | amdgpu_device_asic_has_dc_support(pdev, flags & AMD_ASIC_MASK)) | 2409 | amdgpu_device_asic_has_dc_support(pdev, flags & AMD_ASIC_MASK)) |
| 2413 | supports_atomic = true; | 2410 | supports_atomic = true; |
| @@ -1671,7 +1671,7 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block) · 1670 unmodified lines | |||
| 1671 | if (r) | 1671 | if (r) |
| 1672 | goto failure; | 1672 | goto failure; |
| 1673 | 1673 | ||
| 1674 | if ((adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) >= 0x50) { | 1674 | if ((adev->mes.sched_version & AMDGPU_MES_VERSION_MASK) >= 0x52) { |
| 1675 | r = mes_v11_0_set_hw_resources_1(&adev->mes); | 1675 | r = mes_v11_0_set_hw_resources_1(&adev->mes); |
| 1676 | if (r) { | 1676 | if (r) { |
| 1677 | DRM_ERROR("failed mes_v11_0_set_hw_resources_1, r=%d\n", r); | 1677 | DRM_ERROR("failed mes_v11_0_set_hw_resources_1, r=%d\n", r); |
| @@ -105,9 +105,12 @@ void cm_helper_program_gamcor_xfer_func( · 104 unmodified lines | |||
| 105 | #define NUMBER_REGIONS 32 | 105 | #define NUMBER_REGIONS 32 |
| 106 | #define NUMBER_SW_SEGMENTS 16 | 106 | #define NUMBER_SW_SEGMENTS 16 |
| 107 | 107 | ||
| 108 | bool cm3_helper_translate_curve_to_hw_format( | 108 | #define DC_LOGGER \ |
| 109 | const struct dc_transfer_func *output_tf, | 109 | ctx->logger |
| 110 | struct pwl_params *lut_params, bool fixpoint) | 110 | |
| 111 | bool cm3_helper_translate_curve_to_hw_format(struct dc_context *ctx, | ||
| 112 | const struct dc_transfer_func *output_tf, | ||
| 113 | struct pwl_params *lut_params, bool fixpoint) | ||
| 111 | { | 114 | { |
| 112 | struct curve_points3 *corner_points; | 115 | struct curve_points3 *corner_points; |
| 113 | struct pwl_result_data *rgb_resulted; | 116 | struct pwl_result_data *rgb_resulted; |
| @@ -163,6 +166,11 @@ bool cm3_helper_translate_curve_to_hw_format( · 49 unmodified lines | |||
| 163 | hw_points += (1 << seg_distr[k]); | 166 | hw_points += (1 << seg_distr[k]); |
| 164 | } | 167 | } |
| 165 | 168 | ||
| 169 | // DCN3+ have 257 pts in lieu of no separate slope registers | ||
| 170 | // Prior HW had 256 base+slope pairs | ||
| 171 | // Shaper LUT (i.e. fixpoint == true) is still 256 bases and 256 deltas | ||
| 172 | hw_points = fixpoint ? (hw_points - 1) : hw_points; | ||
| 173 | |||
| 166 | j = 0; | 174 | j = 0; |
| 167 | for (k = 0; k < (region_end - region_start); k++) { | 175 | for (k = 0; k < (region_end - region_start); k++) { |
| 168 | increment = NUMBER_SW_SEGMENTS / (1 << seg_distr[k]); | 176 | increment = NUMBER_SW_SEGMENTS / (1 << seg_distr[k]); |
| @@ -223,8 +231,6 @@ bool cm3_helper_translate_curve_to_hw_format( · 54 unmodified lines | |||
| 223 | corner_points[1].green.slope = dc_fixpt_zero; | 231 | corner_points[1].green.slope = dc_fixpt_zero; |
| 224 | corner_points[1].blue.slope = dc_fixpt_zero; | 232 | corner_points[1].blue.slope = dc_fixpt_zero; |
| 225 | 233 | ||
| 226 | // DCN3+ have 257 pts in lieu of no separate slope registers | ||
| 227 | // Prior HW had 256 base+slope pairs | ||
| 228 | lut_params->hw_points_num = hw_points + 1; | 234 | lut_params->hw_points_num = hw_points + 1; |
| 229 | 235 | ||
| 230 | k = 0; | 236 | k = 0; |
| @@ -248,6 +254,10 @@ bool cm3_helper_translate_curve_to_hw_format( · 17 unmodified lines | |||
| 248 | if (fixpoint == true) { | 254 | if (fixpoint == true) { |
| 249 | i = 1; | 255 | i = 1; |
| 250 | while (i != hw_points + 2) { | 256 | while (i != hw_points + 2) { |
| 257 | uint32_t red_clamp; | ||
| 258 | uint32_t green_clamp; | ||
| 259 | uint32_t blue_clamp; | ||
| 260 | |||
| 251 | if (i >= hw_points) { | 261 | if (i >= hw_points) { |
| 252 | if (dc_fixpt_lt(rgb_plus_1->red, rgb->red)) | 262 | if (dc_fixpt_lt(rgb_plus_1->red, rgb->red)) |
| 253 | rgb_plus_1->red = dc_fixpt_add(rgb->red, | 263 | rgb_plus_1->red = dc_fixpt_add(rgb->red, |
| @@ -260,9 +270,20 @@ bool cm3_helper_translate_curve_to_hw_format( · 6 unmodified lines | |||
| 260 | rgb_minus_1->delta_blue); | 270 | rgb_minus_1->delta_blue); |
| 261 | } | 271 | } |
| 262 | 272 | ||
| 263 | rgb->delta_red_reg = dc_fixpt_clamp_u0d10(rgb->delta_red); | 273 | rgb->delta_red = dc_fixpt_sub(rgb_plus_1->red, rgb->red); |
| 264 | rgb->delta_green_reg = dc_fixpt_clamp_u0d10(rgb->delta_green); | 274 | rgb->delta_green = dc_fixpt_sub(rgb_plus_1->green, rgb->green); |
| 265 | rgb->delta_blue_reg = dc_fixpt_clamp_u0d10(rgb->delta_blue); | 275 | rgb->delta_blue = dc_fixpt_sub(rgb_plus_1->blue, rgb->blue); |
| 276 | |||
| 277 | red_clamp = dc_fixpt_clamp_u0d14(rgb->delta_red); | ||
| 278 | green_clamp = dc_fixpt_clamp_u0d14(rgb->delta_green); | ||
| 279 | blue_clamp = dc_fixpt_clamp_u0d14(rgb->delta_blue); | ||
| 280 | |||
| 281 | if (red_clamp >> 10 || green_clamp >> 10 || blue_clamp >> 10) | ||
| 282 | DC_LOG_ERROR("Losing delta precision while programming shaper LUT."); | ||
| 283 | |||
| 284 | rgb->delta_red_reg = red_clamp & 0x3ff; | ||
| 285 | rgb->delta_green_reg = green_clamp & 0x3ff; | ||
| 286 | rgb->delta_blue_reg = blue_clamp & 0x3ff; | ||
| 266 | rgb->red_reg = dc_fixpt_clamp_u0d14(rgb->red); | 287 | rgb->red_reg = dc_fixpt_clamp_u0d14(rgb->red); |
| 267 | rgb->green_reg = dc_fixpt_clamp_u0d14(rgb->green); | 288 | rgb->green_reg = dc_fixpt_clamp_u0d14(rgb->green); |
| 268 | rgb->blue_reg = dc_fixpt_clamp_u0d14(rgb->blue); | 289 | rgb->blue_reg = dc_fixpt_clamp_u0d14(rgb->blue); |
| @@ -59,7 +59,7 @@ void cm_helper_program_gamcor_xfer_func( · 58 unmodified lines | |||
| 59 | const struct pwl_params *params, | 59 | const struct pwl_params *params, |
| 60 | const struct dcn3_xfer_func_reg *reg); | 60 | const struct dcn3_xfer_func_reg *reg); |
| 61 | 61 | ||
| 62 | bool cm3_helper_translate_curve_to_hw_format( | 62 | bool cm3_helper_translate_curve_to_hw_format(struct dc_context *ctx, |
| 63 | const struct dc_transfer_func *output_tf, | 63 | const struct dc_transfer_func *output_tf, |
| 64 | struct pwl_params *lut_params, bool fixpoint); | 64 | struct pwl_params *lut_params, bool fixpoint); |
| 65 | 65 | ||
| @@ -239,7 +239,7 @@ bool dcn30_set_blend_lut( · 238 unmodified lines | |||
| 239 | if (plane_state->blend_tf.type == TF_TYPE_HWPWL) | 239 | if (plane_state->blend_tf.type == TF_TYPE_HWPWL) |
| 240 | blend_lut = &plane_state->blend_tf.pwl; | 240 | blend_lut = &plane_state->blend_tf.pwl; |
| 241 | else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) { | 241 | else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) { |
| 242 | result = cm3_helper_translate_curve_to_hw_format( | 242 | result = cm3_helper_translate_curve_to_hw_format(plane_state->ctx, |
| 243 | &plane_state->blend_tf, &dpp_base->regamma_params, false); | 243 | &plane_state->blend_tf, &dpp_base->regamma_params, false); |
| 244 | if (!result) | 244 | if (!result) |
| 245 | return result; | 245 | return result; |
| @@ -334,8 +334,9 @@ bool dcn30_set_input_transfer_func(struct dc *dc, · 88 unmodified lines | |||
| 334 | if (plane_state->in_transfer_func.type == TF_TYPE_HWPWL) | 334 | if (plane_state->in_transfer_func.type == TF_TYPE_HWPWL) |
| 335 | params = &plane_state->in_transfer_func.pwl; | 335 | params = &plane_state->in_transfer_func.pwl; |
| 336 | else if (plane_state->in_transfer_func.type == TF_TYPE_DISTRIBUTED_POINTS && | 336 | else if (plane_state->in_transfer_func.type == TF_TYPE_DISTRIBUTED_POINTS && |
| 337 | cm3_helper_translate_curve_to_hw_format(&plane_state->in_transfer_func, | 337 | cm3_helper_translate_curve_to_hw_format(plane_state->ctx, |
| 338 | &dpp_base->degamma_params, false)) | 338 | &plane_state->in_transfer_func, |
| 339 | &dpp_base->degamma_params, false)) | ||
| 339 | params = &dpp_base->degamma_params; | 340 | params = &dpp_base->degamma_params; |
| 340 | 341 | ||
| 341 | result = dpp_base->funcs->dpp_program_gamcor_lut(dpp_base, params); | 342 | result = dpp_base->funcs->dpp_program_gamcor_lut(dpp_base, params); |
| @@ -406,7 +407,7 @@ bool dcn30_set_output_transfer_func(struct dc *dc, · 64 unmodified lines | |||
| 406 | params = &stream->out_transfer_func.pwl; | 407 | params = &stream->out_transfer_func.pwl; |
| 407 | else if (pipe_ctx->stream->out_transfer_func.type == | 408 | else if (pipe_ctx->stream->out_transfer_func.type == |
| 408 | TF_TYPE_DISTRIBUTED_POINTS && | 409 | TF_TYPE_DISTRIBUTED_POINTS && |
| 409 | cm3_helper_translate_curve_to_hw_format( | 410 | cm3_helper_translate_curve_to_hw_format(stream->ctx, |
| 410 | &stream->out_transfer_func, | 411 | &stream->out_transfer_func, |
| 411 | &mpc->blender_params, false)) | 412 | &mpc->blender_params, false)) |
| 412 | params = &mpc->blender_params; | 413 | params = &mpc->blender_params; |
| @@ -486,8 +486,9 @@ bool dcn32_set_mcm_luts( · 485 unmodified lines | |||
| 486 | if (plane_state->blend_tf.type == TF_TYPE_HWPWL) | 486 | if (plane_state->blend_tf.type == TF_TYPE_HWPWL) |
| 487 | lut_params = &plane_state->blend_tf.pwl; | 487 | lut_params = &plane_state->blend_tf.pwl; |
| 488 | else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) { | 488 | else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) { |
| 489 | result = cm3_helper_translate_curve_to_hw_format(&plane_state->blend_tf, | 489 | result = cm3_helper_translate_curve_to_hw_format(plane_state->ctx, |
| 490 | &dpp_base->regamma_params, false); | 490 | &plane_state->blend_tf, |
| 491 | &dpp_base->regamma_params, false); | ||
| 491 | if (!result) | 492 | if (!result) |
| 492 | return result; | 493 | return result; |
| 493 | 494 | ||
| @@ -501,9 +502,9 @@ bool dcn32_set_mcm_luts( · 7 unmodified lines | |||
| 501 | lut_params = &plane_state->in_shaper_func.pwl; | 502 | lut_params = &plane_state->in_shaper_func.pwl; |
| 502 | else if (plane_state->in_shaper_func.type == TF_TYPE_DISTRIBUTED_POINTS) { | 503 | else if (plane_state->in_shaper_func.type == TF_TYPE_DISTRIBUTED_POINTS) { |
| 503 | // TODO: dpp_base replace | 504 | // TODO: dpp_base replace |
| 504 | ASSERT(false); | 505 | cm3_helper_translate_curve_to_hw_format(plane_state->ctx, |
| 505 | cm3_helper_translate_curve_to_hw_format(&plane_state->in_shaper_func, | 506 | &plane_state->in_shaper_func, |
| 506 | &dpp_base->shaper_params, true); | 507 | &dpp_base->shaper_params, true); |
| 507 | lut_params = &dpp_base->shaper_params; | 508 | lut_params = &dpp_base->shaper_params; |
| 508 | } | 509 | } |
| 509 | 510 | ||
| @@ -543,8 +544,9 @@ bool dcn32_set_input_transfer_func(struct dc *dc, · 33 unmodified lines | |||
| 543 | if (plane_state->in_transfer_func.type == TF_TYPE_HWPWL) | 544 | if (plane_state->in_transfer_func.type == TF_TYPE_HWPWL) |
| 544 | params = &plane_state->in_transfer_func.pwl; | 545 | params = &plane_state->in_transfer_func.pwl; |
| 545 | else if (plane_state->in_transfer_func.type == TF_TYPE_DISTRIBUTED_POINTS && | 546 | else if (plane_state->in_transfer_func.type == TF_TYPE_DISTRIBUTED_POINTS && |
| 546 | cm3_helper_translate_curve_to_hw_format(&plane_state->in_transfer_func, | 547 | cm3_helper_translate_curve_to_hw_format(plane_state->ctx, |
| 547 | &dpp_base->degamma_params, false)) | 548 | &plane_state->in_transfer_func, |
| 549 | &dpp_base->degamma_params, false)) | ||
| 548 | params = &dpp_base->degamma_params; | 550 | params = &dpp_base->degamma_params; |
| 549 | 551 | ||
| 550 | dpp_base->funcs->dpp_program_gamcor_lut(dpp_base, params); | 552 | dpp_base->funcs->dpp_program_gamcor_lut(dpp_base, params); |
| @@ -575,7 +577,7 @@ bool dcn32_set_output_transfer_func(struct dc *dc, · 24 unmodified lines | |||
| 575 | params = &stream->out_transfer_func.pwl; | 577 | params = &stream->out_transfer_func.pwl; |
| 576 | else if (pipe_ctx->stream->out_transfer_func.type == | 578 | else if (pipe_ctx->stream->out_transfer_func.type == |
| 577 | TF_TYPE_DISTRIBUTED_POINTS && | 579 | TF_TYPE_DISTRIBUTED_POINTS && |
| 578 | cm3_helper_translate_curve_to_hw_format( | 580 | cm3_helper_translate_curve_to_hw_format(stream->ctx, |
| 579 | &stream->out_transfer_func, | 581 | &stream->out_transfer_func, |
| 580 | &mpc->blender_params, false)) | 582 | &mpc->blender_params, false)) |
| 581 | params = &mpc->blender_params; | 583 | params = &mpc->blender_params; |
| @@ -430,7 +430,7 @@ void dcn401_populate_mcm_luts(struct dc *dc, · 429 unmodified lines | |||
| 430 | if (mcm_luts.lut1d_func->type == TF_TYPE_HWPWL) | 430 | if (mcm_luts.lut1d_func->type == TF_TYPE_HWPWL) |
| 431 | m_lut_params.pwl = &mcm_luts.lut1d_func->pwl; | 431 | m_lut_params.pwl = &mcm_luts.lut1d_func->pwl; |
| 432 | else if (mcm_luts.lut1d_func->type == TF_TYPE_DISTRIBUTED_POINTS) { | 432 | else if (mcm_luts.lut1d_func->type == TF_TYPE_DISTRIBUTED_POINTS) { |
| 433 | rval = cm3_helper_translate_curve_to_hw_format( | 433 | rval = cm3_helper_translate_curve_to_hw_format(mpc->ctx, |
| 434 | mcm_luts.lut1d_func, | 434 | mcm_luts.lut1d_func, |
| 435 | &dpp_base->regamma_params, false); | 435 | &dpp_base->regamma_params, false); |
| 436 | m_lut_params.pwl = rval ? &dpp_base->regamma_params : NULL; | 436 | m_lut_params.pwl = rval ? &dpp_base->regamma_params : NULL; |
| @@ -450,7 +450,7 @@ void dcn401_populate_mcm_luts(struct dc *dc, · 13 unmodified lines | |||
| 450 | m_lut_params.pwl = &mcm_luts.shaper->pwl; | 450 | m_lut_params.pwl = &mcm_luts.shaper->pwl; |
| 451 | else if (mcm_luts.shaper->type == TF_TYPE_DISTRIBUTED_POINTS) { | 451 | else if (mcm_luts.shaper->type == TF_TYPE_DISTRIBUTED_POINTS) { |
| 452 | ASSERT(false); | 452 | ASSERT(false); |
| 453 | rval = cm3_helper_translate_curve_to_hw_format( | 453 | rval = cm3_helper_translate_curve_to_hw_format(mpc->ctx, |
| 454 | mcm_luts.shaper, | 454 | mcm_luts.shaper, |
| 455 | &dpp_base->regamma_params, true); | 455 | &dpp_base->regamma_params, true); |
| 456 | m_lut_params.pwl = rval ? &dpp_base->regamma_params : NULL; | 456 | m_lut_params.pwl = rval ? &dpp_base->regamma_params : NULL; |
| @@ -627,8 +627,9 @@ bool dcn401_set_mcm_luts(struct pipe_ctx *pipe_ctx, · 170 unmodified lines | |||
| 627 | if (plane_state->blend_tf.type == TF_TYPE_HWPWL) | 627 | if (plane_state->blend_tf.type == TF_TYPE_HWPWL) |
| 628 | lut_params = &plane_state->blend_tf.pwl; | 628 | lut_params = &plane_state->blend_tf.pwl; |
| 629 | else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) { | 629 | else if (plane_state->blend_tf.type == TF_TYPE_DISTRIBUTED_POINTS) { |
| 630 | rval = cm3_helper_translate_curve_to_hw_format(&plane_state->blend_tf, | 630 | rval = cm3_helper_translate_curve_to_hw_format(plane_state->ctx, |
| 631 | &dpp_base->regamma_params, false); | 631 | &plane_state->blend_tf, |
| 632 | &dpp_base->regamma_params, false); | ||
| 632 | lut_params = rval ? &dpp_base->regamma_params : NULL; | 633 | lut_params = rval ? &dpp_base->regamma_params : NULL; |
| 633 | } | 634 | } |
| 634 | result = mpc->funcs->program_1dlut(mpc, lut_params, mpcc_id); | 635 | result = mpc->funcs->program_1dlut(mpc, lut_params, mpcc_id); |
| @@ -639,8 +640,9 @@ bool dcn401_set_mcm_luts(struct pipe_ctx *pipe_ctx, · 4 unmodified lines | |||
| 639 | lut_params = &plane_state->in_shaper_func.pwl; | 640 | lut_params = &plane_state->in_shaper_func.pwl; |
| 640 | else if (plane_state->in_shaper_func.type == TF_TYPE_DISTRIBUTED_POINTS) { | 641 | else if (plane_state->in_shaper_func.type == TF_TYPE_DISTRIBUTED_POINTS) { |
| 641 | // TODO: dpp_base replace | 642 | // TODO: dpp_base replace |
| 642 | rval = cm3_helper_translate_curve_to_hw_format(&plane_state->in_shaper_func, | 643 | rval = cm3_helper_translate_curve_to_hw_format(plane_state->ctx, |
| 643 | &dpp_base->shaper_params, true); | 644 | &plane_state->in_shaper_func, |
| 645 | &dpp_base->shaper_params, true); | ||
| 644 | lut_params = rval ? &dpp_base->shaper_params : NULL; | 646 | lut_params = rval ? &dpp_base->shaper_params : NULL; |
| 645 | } | 647 | } |
| 646 | result &= mpc->funcs->program_shaper(mpc, lut_params, mpcc_id); | 648 | result &= mpc->funcs->program_shaper(mpc, lut_params, mpcc_id); |
| @@ -674,7 +676,7 @@ bool dcn401_set_output_transfer_func(struct dc *dc, · 27 unmodified lines | |||
| 674 | params = &stream->out_transfer_func.pwl; | 676 | params = &stream->out_transfer_func.pwl; |
| 675 | else if (pipe_ctx->stream->out_transfer_func.type == | 677 | else if (pipe_ctx->stream->out_transfer_func.type == |
| 676 | TF_TYPE_DISTRIBUTED_POINTS && | 678 | TF_TYPE_DISTRIBUTED_POINTS && |
| 677 | cm3_helper_translate_curve_to_hw_format( | 679 | cm3_helper_translate_curve_to_hw_format(stream->ctx, |
| 678 | &stream->out_transfer_func, | 680 | &stream->out_transfer_func, |
| 679 | &mpc->blender_params, false)) | 681 | &mpc->blender_params, false)) |
| 680 | params = &mpc->blender_params; | 682 | params = &mpc->blender_params; |