Commit 9345d987 authored by Andrey Grodzovsky's avatar Andrey Grodzovsky Committed by Alex Deucher

drm/amd/display: Move stream validations into seperate function.

Stateless streams validations (not require resource population)
moved into hook to be called directly from DM.

Call dc_validate_stream be before validate_with_context for
non Linux APIs
Signed-off-by: default avatarAndrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6be425f3
...@@ -664,6 +664,20 @@ static bool is_validation_required( ...@@ -664,6 +664,20 @@ static bool is_validation_required(
return false; return false;
} }
static bool validate_streams (
const struct dc *dc,
const struct dc_validation_set set[],
int set_count)
{
int i;
for (i = 0; i < set_count; i++)
if (!dc_validate_stream(dc, set[i].stream))
return false;
return true;
}
struct validate_context *dc_get_validate_context( struct validate_context *dc_get_validate_context(
const struct dc *dc, const struct dc *dc,
const struct dc_validation_set set[], const struct dc_validation_set set[],
...@@ -673,6 +687,7 @@ struct validate_context *dc_get_validate_context( ...@@ -673,6 +687,7 @@ struct validate_context *dc_get_validate_context(
enum dc_status result = DC_ERROR_UNEXPECTED; enum dc_status result = DC_ERROR_UNEXPECTED;
struct validate_context *context; struct validate_context *context;
context = dm_alloc(sizeof(struct validate_context)); context = dm_alloc(sizeof(struct validate_context));
if (context == NULL) if (context == NULL)
goto context_alloc_fail; goto context_alloc_fail;
...@@ -711,6 +726,9 @@ bool dc_validate_resources( ...@@ -711,6 +726,9 @@ bool dc_validate_resources(
enum dc_status result = DC_ERROR_UNEXPECTED; enum dc_status result = DC_ERROR_UNEXPECTED;
struct validate_context *context; struct validate_context *context;
if (!validate_streams(dc, set, set_count))
return false;
context = dm_alloc(sizeof(struct validate_context)); context = dm_alloc(sizeof(struct validate_context));
if (context == NULL) if (context == NULL)
goto context_alloc_fail; goto context_alloc_fail;
...@@ -742,6 +760,9 @@ bool dc_validate_guaranteed( ...@@ -742,6 +760,9 @@ bool dc_validate_guaranteed(
enum dc_status result = DC_ERROR_UNEXPECTED; enum dc_status result = DC_ERROR_UNEXPECTED;
struct validate_context *context; struct validate_context *context;
if (!dc_validate_stream(dc, stream))
return false;
context = dm_alloc(sizeof(struct validate_context)); context = dm_alloc(sizeof(struct validate_context));
if (context == NULL) if (context == NULL)
goto context_alloc_fail; goto context_alloc_fail;
...@@ -1044,6 +1065,9 @@ bool dc_commit_streams( ...@@ -1044,6 +1065,9 @@ bool dc_commit_streams(
} }
if (!validate_streams(dc, set, stream_count))
return false;
context = dm_alloc(sizeof(struct validate_context)); context = dm_alloc(sizeof(struct validate_context));
if (context == NULL) if (context == NULL)
goto context_alloc_fail; goto context_alloc_fail;
......
...@@ -1416,13 +1416,8 @@ static int get_norm_pix_clk(const struct dc_crtc_timing *timing) ...@@ -1416,13 +1416,8 @@ static int get_norm_pix_clk(const struct dc_crtc_timing *timing)
return normalized_pix_clk; return normalized_pix_clk;
} }
static void calculate_phy_pix_clks(struct validate_context *context) static void calculate_phy_pix_clks(struct core_stream *stream)
{ {
int i;
for (i = 0; i < context->stream_count; i++) {
struct core_stream *stream = context->streams[i];
update_stream_signal(stream); update_stream_signal(stream);
/* update actual pixel clock on all streams */ /* update actual pixel clock on all streams */
...@@ -1432,7 +1427,6 @@ static void calculate_phy_pix_clks(struct validate_context *context) ...@@ -1432,7 +1427,6 @@ static void calculate_phy_pix_clks(struct validate_context *context)
else else
stream->phy_pix_clk = stream->phy_pix_clk =
stream->public.timing.pix_clk_khz; stream->public.timing.pix_clk_khz;
}
} }
enum dc_status resource_map_pool_resources( enum dc_status resource_map_pool_resources(
...@@ -1443,8 +1437,6 @@ enum dc_status resource_map_pool_resources( ...@@ -1443,8 +1437,6 @@ enum dc_status resource_map_pool_resources(
const struct resource_pool *pool = dc->res_pool; const struct resource_pool *pool = dc->res_pool;
int i, j; int i, j;
calculate_phy_pix_clks(context);
for (i = 0; old_context && i < context->stream_count; i++) { for (i = 0; old_context && i < context->stream_count; i++) {
struct core_stream *stream = context->streams[i]; struct core_stream *stream = context->streams[i];
...@@ -2516,3 +2508,36 @@ void resource_build_bit_depth_reduction_params(const struct core_stream *stream, ...@@ -2516,3 +2508,36 @@ void resource_build_bit_depth_reduction_params(const struct core_stream *stream,
fmt_bit_depth->pixel_encoding = pixel_encoding; fmt_bit_depth->pixel_encoding = pixel_encoding;
} }
bool dc_validate_stream(const struct dc *dc, const struct dc_stream *stream)
{
struct core_dc *core_dc = DC_TO_CORE(dc);
struct dc_context *dc_ctx = core_dc->ctx;
struct core_stream *core_stream = DC_STREAM_TO_CORE(stream);
struct dc_link *link = core_stream->sink->link;
struct timing_generator *tg = core_dc->res_pool->timing_generators[0];
enum dc_status res = DC_OK;
calculate_phy_pix_clks(core_stream);
if (!tg->funcs->validate_timing(tg, &core_stream->public.timing))
res = DC_FAIL_CONTROLLER_VALIDATE;
if (res == DC_OK)
if (!link->link_enc->funcs->validate_output_with_stream(
link->link_enc, core_stream))
res = DC_FAIL_ENC_VALIDATE;
/* TODO: validate audio ASIC caps, encoder */
if (res == DC_OK)
res = dc_link_validate_mode_timing(core_stream,
link,
&core_stream->public.timing);
if (res != DC_OK)
DC_ERROR("Failed validation for stream %p, err:%d, !\n",
stream, res);
return res == DC_OK;
}
...@@ -559,6 +559,8 @@ struct dc_validation_set { ...@@ -559,6 +559,8 @@ struct dc_validation_set {
uint8_t surface_count; uint8_t surface_count;
}; };
bool dc_validate_stream(const struct dc *dc, const struct dc_stream *stream);
/* /*
* This function takes a set of resources and checks that they are cofunctional. * This function takes a set of resources and checks that they are cofunctional.
* *
......
...@@ -1009,19 +1009,18 @@ bool dce110_link_encoder_construct( ...@@ -1009,19 +1009,18 @@ bool dce110_link_encoder_construct(
bool dce110_link_encoder_validate_output_with_stream( bool dce110_link_encoder_validate_output_with_stream(
struct link_encoder *enc, struct link_encoder *enc,
struct pipe_ctx *pipe_ctx) const struct core_stream *stream)
{ {
struct core_stream *stream = pipe_ctx->stream;
struct dce110_link_encoder *enc110 = TO_DCE110_LINK_ENC(enc); struct dce110_link_encoder *enc110 = TO_DCE110_LINK_ENC(enc);
bool is_valid; bool is_valid;
switch (pipe_ctx->stream->signal) { switch (stream->signal) {
case SIGNAL_TYPE_DVI_SINGLE_LINK: case SIGNAL_TYPE_DVI_SINGLE_LINK:
case SIGNAL_TYPE_DVI_DUAL_LINK: case SIGNAL_TYPE_DVI_DUAL_LINK:
is_valid = dce110_link_encoder_validate_dvi_output( is_valid = dce110_link_encoder_validate_dvi_output(
enc110, enc110,
stream->sink->link->connector_signal, stream->sink->link->connector_signal,
pipe_ctx->stream->signal, stream->signal,
&stream->public.timing); &stream->public.timing);
break; break;
case SIGNAL_TYPE_HDMI_TYPE_A: case SIGNAL_TYPE_HDMI_TYPE_A:
......
...@@ -199,7 +199,7 @@ bool dce110_link_encoder_validate_wireless_output( ...@@ -199,7 +199,7 @@ bool dce110_link_encoder_validate_wireless_output(
bool dce110_link_encoder_validate_output_with_stream( bool dce110_link_encoder_validate_output_with_stream(
struct link_encoder *enc, struct link_encoder *enc,
struct pipe_ctx *pipe_ctx); const struct core_stream *stream);
/****************** HW programming ************************/ /****************** HW programming ************************/
......
...@@ -651,7 +651,7 @@ static void destruct(struct dce110_resource_pool *pool) ...@@ -651,7 +651,7 @@ static void destruct(struct dce110_resource_pool *pool)
dal_irq_service_destroy(&pool->base.irqs); dal_irq_service_destroy(&pool->base.irqs);
} }
static enum dc_status validate_mapped_resource( static enum dc_status build_mapped_resource(
const struct core_dc *dc, const struct core_dc *dc,
struct validate_context *context, struct validate_context *context,
struct validate_context *old_context) struct validate_context *old_context)
...@@ -661,7 +661,6 @@ static enum dc_status validate_mapped_resource( ...@@ -661,7 +661,6 @@ static enum dc_status validate_mapped_resource(
for (i = 0; i < context->stream_count; i++) { for (i = 0; i < context->stream_count; i++) {
struct core_stream *stream = context->streams[i]; struct core_stream *stream = context->streams[i];
struct dc_link *link = stream->sink->link;
if (old_context && resource_is_stream_unchanged(old_context, stream)) if (old_context && resource_is_stream_unchanged(old_context, stream))
continue; continue;
...@@ -673,25 +672,8 @@ static enum dc_status validate_mapped_resource( ...@@ -673,25 +672,8 @@ static enum dc_status validate_mapped_resource(
if (context->res_ctx.pipe_ctx[j].stream != stream) if (context->res_ctx.pipe_ctx[j].stream != stream)
continue; continue;
if (!pipe_ctx->tg->funcs->validate_timing(
pipe_ctx->tg, &stream->public.timing))
return DC_FAIL_CONTROLLER_VALIDATE;
status = dce110_resource_build_pipe_hw_param(pipe_ctx); status = dce110_resource_build_pipe_hw_param(pipe_ctx);
if (status != DC_OK)
return status;
if (!link->link_enc->funcs->validate_output_with_stream(
link->link_enc,
pipe_ctx))
return DC_FAIL_ENC_VALIDATE;
/* TODO: validate audio ASIC caps, encoder */
status = dc_link_validate_mode_timing(stream,
link,
&stream->public.timing);
if (status != DC_OK) if (status != DC_OK)
return status; return status;
...@@ -769,7 +751,7 @@ enum dc_status dce100_validate_with_context( ...@@ -769,7 +751,7 @@ enum dc_status dce100_validate_with_context(
} }
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, old_context); result = build_mapped_resource(dc, context, old_context);
if (result == DC_OK) if (result == DC_OK)
result = resource_build_scaling_params_for_context(dc, context); result = resource_build_scaling_params_for_context(dc, context);
...@@ -798,7 +780,7 @@ enum dc_status dce100_validate_guaranteed( ...@@ -798,7 +780,7 @@ enum dc_status dce100_validate_guaranteed(
result = resource_map_clock_resources(dc, context, NULL); result = resource_map_clock_resources(dc, context, NULL);
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, NULL); result = build_mapped_resource(dc, context, NULL);
if (result == DC_OK) { if (result == DC_OK) {
validate_guaranteed_copy_streams( validate_guaranteed_copy_streams(
......
...@@ -771,7 +771,7 @@ static bool is_surface_pixel_format_supported(struct pipe_ctx *pipe_ctx, unsigne ...@@ -771,7 +771,7 @@ static bool is_surface_pixel_format_supported(struct pipe_ctx *pipe_ctx, unsigne
return true; return true;
} }
static enum dc_status validate_mapped_resource( static enum dc_status build_mapped_resource(
const struct core_dc *dc, const struct core_dc *dc,
struct validate_context *context, struct validate_context *context,
struct validate_context *old_context) struct validate_context *old_context)
...@@ -781,7 +781,6 @@ static enum dc_status validate_mapped_resource( ...@@ -781,7 +781,6 @@ static enum dc_status validate_mapped_resource(
for (i = 0; i < context->stream_count; i++) { for (i = 0; i < context->stream_count; i++) {
struct core_stream *stream = context->streams[i]; struct core_stream *stream = context->streams[i];
struct dc_link *link = stream->sink->link;
if (old_context && resource_is_stream_unchanged(old_context, stream)) if (old_context && resource_is_stream_unchanged(old_context, stream))
continue; continue;
...@@ -797,29 +796,13 @@ static enum dc_status validate_mapped_resource( ...@@ -797,29 +796,13 @@ static enum dc_status validate_mapped_resource(
dc->res_pool->underlay_pipe_index)) dc->res_pool->underlay_pipe_index))
return DC_SURFACE_PIXEL_FORMAT_UNSUPPORTED; return DC_SURFACE_PIXEL_FORMAT_UNSUPPORTED;
if (!pipe_ctx->tg->funcs->validate_timing(
pipe_ctx->tg, &stream->public.timing))
return DC_FAIL_CONTROLLER_VALIDATE;
status = dce110_resource_build_pipe_hw_param(pipe_ctx); status = dce110_resource_build_pipe_hw_param(pipe_ctx);
if (status != DC_OK) if (status != DC_OK)
return status; return status;
if (!link->link_enc->funcs->validate_output_with_stream(
link->link_enc,
pipe_ctx))
return DC_FAIL_ENC_VALIDATE;
/* TODO: validate audio ASIC caps, encoder */ /* TODO: validate audio ASIC caps, encoder */
status = dc_link_validate_mode_timing(stream,
link,
&stream->public.timing);
if (status != DC_OK)
return status;
resource_build_info_frame(pipe_ctx); resource_build_info_frame(pipe_ctx);
/* do not need to validate non root pipes */ /* do not need to validate non root pipes */
...@@ -976,7 +959,7 @@ enum dc_status dce110_validate_with_context( ...@@ -976,7 +959,7 @@ enum dc_status dce110_validate_with_context(
} }
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, old_context); result = build_mapped_resource(dc, context, old_context);
if (result == DC_OK) if (result == DC_OK)
result = resource_build_scaling_params_for_context(dc, context); result = resource_build_scaling_params_for_context(dc, context);
...@@ -1005,7 +988,7 @@ enum dc_status dce110_validate_guaranteed( ...@@ -1005,7 +988,7 @@ enum dc_status dce110_validate_guaranteed(
result = resource_map_clock_resources(dc, context, NULL); result = resource_map_clock_resources(dc, context, NULL);
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, NULL); result = build_mapped_resource(dc, context, NULL);
if (result == DC_OK) { if (result == DC_OK) {
validate_guaranteed_copy_streams( validate_guaranteed_copy_streams(
......
...@@ -720,7 +720,7 @@ static struct clock_source *find_matching_pll( ...@@ -720,7 +720,7 @@ static struct clock_source *find_matching_pll(
return 0; return 0;
} }
static enum dc_status validate_mapped_resource( static enum dc_status build_mapped_resource(
const struct core_dc *dc, const struct core_dc *dc,
struct validate_context *context, struct validate_context *context,
struct validate_context *old_context) struct validate_context *old_context)
...@@ -730,7 +730,6 @@ static enum dc_status validate_mapped_resource( ...@@ -730,7 +730,6 @@ static enum dc_status validate_mapped_resource(
for (i = 0; i < context->stream_count; i++) { for (i = 0; i < context->stream_count; i++) {
struct core_stream *stream = context->streams[i]; struct core_stream *stream = context->streams[i];
struct dc_link *link = stream->sink->link;
if (old_context && resource_is_stream_unchanged(old_context, stream)) if (old_context && resource_is_stream_unchanged(old_context, stream))
continue; continue;
...@@ -742,26 +741,8 @@ static enum dc_status validate_mapped_resource( ...@@ -742,26 +741,8 @@ static enum dc_status validate_mapped_resource(
if (context->res_ctx.pipe_ctx[j].stream != stream) if (context->res_ctx.pipe_ctx[j].stream != stream)
continue; continue;
if (!pipe_ctx->tg->funcs->validate_timing(
pipe_ctx->tg, &stream->public.timing))
return DC_FAIL_CONTROLLER_VALIDATE;
status = dce110_resource_build_pipe_hw_param(pipe_ctx); status = dce110_resource_build_pipe_hw_param(pipe_ctx);
if (status != DC_OK)
return status;
if (!link->link_enc->funcs->validate_output_with_stream(
link->link_enc,
pipe_ctx))
return DC_FAIL_ENC_VALIDATE;
/* TODO: validate audio ASIC caps, encoder */
status = dc_link_validate_mode_timing(stream,
link,
&stream->public.timing);
if (status != DC_OK) if (status != DC_OK)
return status; return status;
...@@ -952,7 +933,7 @@ enum dc_status dce112_validate_with_context( ...@@ -952,7 +933,7 @@ enum dc_status dce112_validate_with_context(
} }
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, old_context); result = build_mapped_resource(dc, context, old_context);
if (result == DC_OK) if (result == DC_OK)
result = resource_build_scaling_params_for_context(dc, context); result = resource_build_scaling_params_for_context(dc, context);
...@@ -981,7 +962,7 @@ enum dc_status dce112_validate_guaranteed( ...@@ -981,7 +962,7 @@ enum dc_status dce112_validate_guaranteed(
result = resource_map_phy_clock_resources(dc, context, NULL); result = resource_map_phy_clock_resources(dc, context, NULL);
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, NULL); result = build_mapped_resource(dc, context, NULL);
if (result == DC_OK) { if (result == DC_OK) {
validate_guaranteed_copy_streams( validate_guaranteed_copy_streams(
......
...@@ -667,7 +667,7 @@ static void destruct(struct dce110_resource_pool *pool) ...@@ -667,7 +667,7 @@ static void destruct(struct dce110_resource_pool *pool)
} }
} }
static enum dc_status validate_mapped_resource( static enum dc_status build_mapped_resource(
const struct core_dc *dc, const struct core_dc *dc,
struct validate_context *context, struct validate_context *context,
struct validate_context *old_context) struct validate_context *old_context)
...@@ -677,7 +677,6 @@ static enum dc_status validate_mapped_resource( ...@@ -677,7 +677,6 @@ static enum dc_status validate_mapped_resource(
for (i = 0; i < context->stream_count; i++) { for (i = 0; i < context->stream_count; i++) {
struct core_stream *stream = context->streams[i]; struct core_stream *stream = context->streams[i];
struct dc_link *link = stream->sink->link;
if (old_context && resource_is_stream_unchanged(old_context, stream)) if (old_context && resource_is_stream_unchanged(old_context, stream))
continue; continue;
...@@ -689,26 +688,8 @@ static enum dc_status validate_mapped_resource( ...@@ -689,26 +688,8 @@ static enum dc_status validate_mapped_resource(
if (context->res_ctx.pipe_ctx[j].stream != stream) if (context->res_ctx.pipe_ctx[j].stream != stream)
continue; continue;
if (!pipe_ctx->tg->funcs->validate_timing(
pipe_ctx->tg, &stream->public.timing))
return DC_FAIL_CONTROLLER_VALIDATE;
status = dce110_resource_build_pipe_hw_param(pipe_ctx); status = dce110_resource_build_pipe_hw_param(pipe_ctx);
if (status != DC_OK)
return status;
if (!link->link_enc->funcs->validate_output_with_stream(
link->link_enc,
pipe_ctx))
return DC_FAIL_ENC_VALIDATE;
/* TODO: validate audio ASIC caps, encoder */
status = dc_link_validate_mode_timing(stream,
link,
&stream->public.timing);
if (status != DC_OK) if (status != DC_OK)
return status; return status;
...@@ -786,7 +767,7 @@ enum dc_status dce80_validate_with_context( ...@@ -786,7 +767,7 @@ enum dc_status dce80_validate_with_context(
} }
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, old_context); result = build_mapped_resource(dc, context, old_context);
if (result == DC_OK) if (result == DC_OK)
result = resource_build_scaling_params_for_context(dc, context); result = resource_build_scaling_params_for_context(dc, context);
...@@ -814,7 +795,7 @@ enum dc_status dce80_validate_guaranteed( ...@@ -814,7 +795,7 @@ enum dc_status dce80_validate_guaranteed(
result = resource_map_clock_resources(dc, context, NULL); result = resource_map_clock_resources(dc, context, NULL);
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, NULL); result = build_mapped_resource(dc, context, NULL);
if (result == DC_OK) { if (result == DC_OK) {
validate_guaranteed_copy_streams( validate_guaranteed_copy_streams(
......
...@@ -835,7 +835,7 @@ static enum dc_status build_pipe_hw_param(struct pipe_ctx *pipe_ctx) ...@@ -835,7 +835,7 @@ static enum dc_status build_pipe_hw_param(struct pipe_ctx *pipe_ctx)
return DC_OK; return DC_OK;
} }
static enum dc_status validate_mapped_resource( static enum dc_status build_mapped_resource(
const struct core_dc *dc, const struct core_dc *dc,
struct validate_context *context, struct validate_context *context,
struct validate_context *old_context) struct validate_context *old_context)
...@@ -845,7 +845,6 @@ static enum dc_status validate_mapped_resource( ...@@ -845,7 +845,6 @@ static enum dc_status validate_mapped_resource(
for (i = 0; i < context->stream_count; i++) { for (i = 0; i < context->stream_count; i++) {
struct core_stream *stream = context->streams[i]; struct core_stream *stream = context->streams[i];
struct dc_link *link = stream->sink->link;
if (old_context && resource_is_stream_unchanged(old_context, stream)) { if (old_context && resource_is_stream_unchanged(old_context, stream)) {
if (stream != NULL && old_context->streams[i] != NULL) { if (stream != NULL && old_context->streams[i] != NULL) {
...@@ -870,29 +869,11 @@ static enum dc_status validate_mapped_resource( ...@@ -870,29 +869,11 @@ static enum dc_status validate_mapped_resource(
if (context->res_ctx.pipe_ctx[j].stream != stream) if (context->res_ctx.pipe_ctx[j].stream != stream)
continue; continue;
if (!pipe_ctx->tg->funcs->validate_timing(
pipe_ctx->tg, &stream->public.timing))
return DC_FAIL_CONTROLLER_VALIDATE;
status = build_pipe_hw_param(pipe_ctx); status = build_pipe_hw_param(pipe_ctx);
if (status != DC_OK) if (status != DC_OK)
return status; return status;
if (!link->link_enc->funcs->validate_output_with_stream(
link->link_enc, pipe_ctx))
return DC_FAIL_ENC_VALIDATE;
/* TODO: validate audio ASIC caps, encoder */
status = dc_link_validate_mode_timing(
stream, link, &stream->public.timing);
if (status != DC_OK)
return status;
/* do not need to validate non root pipes */ /* do not need to validate non root pipes */
break; break;
} }
...@@ -928,7 +909,7 @@ enum dc_status dcn10_validate_with_context( ...@@ -928,7 +909,7 @@ enum dc_status dcn10_validate_with_context(
if (result != DC_OK) if (result != DC_OK)
return result; return result;
result = validate_mapped_resource(dc, context, old_context); result = build_mapped_resource(dc, context, old_context);
if (result != DC_OK) if (result != DC_OK)
return result; return result;
...@@ -963,7 +944,7 @@ enum dc_status dcn10_validate_guaranteed( ...@@ -963,7 +944,7 @@ enum dc_status dcn10_validate_guaranteed(
result = resource_map_phy_clock_resources(dc, context, NULL); result = resource_map_phy_clock_resources(dc, context, NULL);
if (result == DC_OK) if (result == DC_OK)
result = validate_mapped_resource(dc, context, NULL); result = build_mapped_resource(dc, context, NULL);
if (result == DC_OK) { if (result == DC_OK) {
validate_guaranteed_copy_streams( validate_guaranteed_copy_streams(
......
...@@ -94,7 +94,7 @@ struct link_encoder { ...@@ -94,7 +94,7 @@ struct link_encoder {
struct link_encoder_funcs { struct link_encoder_funcs {
bool (*validate_output_with_stream)( bool (*validate_output_with_stream)(
struct link_encoder *enc, struct pipe_ctx *pipe_ctx); struct link_encoder *enc, const struct core_stream *stream);
void (*hw_init)(struct link_encoder *enc); void (*hw_init)(struct link_encoder *enc);
void (*setup)(struct link_encoder *enc, void (*setup)(struct link_encoder *enc,
enum signal_type signal); enum signal_type signal);
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
static bool virtual_link_encoder_validate_output_with_stream( static bool virtual_link_encoder_validate_output_with_stream(
struct link_encoder *enc, struct link_encoder *enc,
struct pipe_ctx *pipe_ctx) { return true; } const struct core_stream *stream) { return true; }
static void virtual_link_encoder_hw_init(struct link_encoder *enc) {} static void virtual_link_encoder_hw_init(struct link_encoder *enc) {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment