From: Emeric Grange Date: Mon, 12 Sep 2011 21:39:27 +0000 (+0200) Subject: g3dvl: Add max_references parameter to vl_create_decoder() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=82e8bf36d8fcd46bcb76ec300875a47c7312f1a1;p=mesa.git g3dvl: Add max_references parameter to vl_create_decoder() Signed-off-by: Emeric Grange --- diff --git a/src/gallium/auxiliary/vl/vl_decoder.c b/src/gallium/auxiliary/vl/vl_decoder.c index 41e5f75300a..383e02d910c 100644 --- a/src/gallium/auxiliary/vl/vl_decoder.c +++ b/src/gallium/auxiliary/vl/vl_decoder.c @@ -62,7 +62,7 @@ vl_create_decoder(struct pipe_context *pipe, enum pipe_video_profile profile, enum pipe_video_entrypoint entrypoint, enum pipe_video_chroma_format chroma_format, - unsigned width, unsigned height) + unsigned width, unsigned height, unsigned max_references) { unsigned buffer_width, buffer_height; bool pot_buffers; @@ -82,7 +82,7 @@ vl_create_decoder(struct pipe_context *pipe, switch (u_reduce_video_profile(profile)) { case PIPE_VIDEO_CODEC_MPEG12: - return vl_create_mpeg12_decoder(pipe, profile, entrypoint, chroma_format, buffer_width, buffer_height); + return vl_create_mpeg12_decoder(pipe, profile, entrypoint, chroma_format, buffer_width, buffer_height, max_references); default: return NULL; } diff --git a/src/gallium/auxiliary/vl/vl_decoder.h b/src/gallium/auxiliary/vl/vl_decoder.h index 54dc42370f7..a9975169885 100644 --- a/src/gallium/auxiliary/vl/vl_decoder.h +++ b/src/gallium/auxiliary/vl/vl_decoder.h @@ -51,6 +51,6 @@ vl_create_decoder(struct pipe_context *pipe, enum pipe_video_profile profile, enum pipe_video_entrypoint entrypoint, enum pipe_video_chroma_format chroma_format, - unsigned width, unsigned height); + unsigned width, unsigned height, unsigned max_references); #endif /* vl_decoder_h */ diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c index 9ea84dc2cc9..f3706694fa7 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c +++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c @@ -1035,7 +1035,7 @@ vl_create_mpeg12_decoder(struct pipe_context *context, enum pipe_video_profile profile, enum pipe_video_entrypoint entrypoint, enum pipe_video_chroma_format chroma_format, - unsigned width, unsigned height) + unsigned width, unsigned height, unsigned max_references) { const unsigned block_size_pixels = BLOCK_WIDTH * BLOCK_HEIGHT; const struct format_config *format_config; @@ -1054,6 +1054,7 @@ vl_create_mpeg12_decoder(struct pipe_context *context, dec->base.chroma_format = chroma_format; dec->base.width = width; dec->base.height = height; + dec->base.max_references = max_references; dec->base.destroy = vl_mpeg12_destroy; dec->base.create_buffer = vl_mpeg12_create_buffer; diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h index 5f048f096ba..817c1ffd110 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h +++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.h @@ -111,6 +111,6 @@ vl_create_mpeg12_decoder(struct pipe_context *pipe, enum pipe_video_profile profile, enum pipe_video_entrypoint entrypoint, enum pipe_video_chroma_format chroma_format, - unsigned width, unsigned height); + unsigned width, unsigned height, unsigned max_references); #endif /* vl_mpeg12_decoder_h */ diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h index da3ee87515f..49c12ec64fb 100644 --- a/src/gallium/include/pipe/p_context.h +++ b/src/gallium/include/pipe/p_context.h @@ -406,7 +406,7 @@ struct pipe_context { enum pipe_video_profile profile, enum pipe_video_entrypoint entrypoint, enum pipe_video_chroma_format chroma_format, - unsigned width, unsigned height ); + unsigned width, unsigned height, unsigned max_references ); /** * Creates a video buffer as decoding target diff --git a/src/gallium/include/pipe/p_video_decoder.h b/src/gallium/include/pipe/p_video_decoder.h index 31e411c791e..40b7dcdb3cf 100644 --- a/src/gallium/include/pipe/p_video_decoder.h +++ b/src/gallium/include/pipe/p_video_decoder.h @@ -52,6 +52,7 @@ struct pipe_video_decoder enum pipe_video_chroma_format chroma_format; unsigned width; unsigned height; + unsigned max_references; /** * destroy this video decoder diff --git a/src/gallium/state_trackers/vdpau/decode.c b/src/gallium/state_trackers/vdpau/decode.c index 2bf782ef220..35011669cf2 100644 --- a/src/gallium/state_trackers/vdpau/decode.c +++ b/src/gallium/state_trackers/vdpau/decode.c @@ -69,14 +69,14 @@ vlVdpDecoderCreate(VdpDevice device, vldecoder->device = dev; - // TODO: Define max_references. Used mainly for H264 vldecoder->decoder = pipe->create_video_decoder ( pipe, p_profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM, PIPE_VIDEO_CHROMA_FORMAT_420, - width, height + width, height, max_references ); + if (!vldecoder->decoder) { ret = VDP_STATUS_ERROR; goto error_decoder; diff --git a/src/gallium/state_trackers/xorg/xvmc/context.c b/src/gallium/state_trackers/xorg/xvmc/context.c index 172f16cfb63..848da408c04 100644 --- a/src/gallium/state_trackers/xorg/xvmc/context.c +++ b/src/gallium/state_trackers/xorg/xvmc/context.c @@ -250,7 +250,7 @@ Status XvMCCreateContext(Display *dpy, XvPortID port, int surface_type_id, ProfileToPipe(mc_type), (mc_type & XVMC_IDCT) ? PIPE_VIDEO_ENTRYPOINT_IDCT : PIPE_VIDEO_ENTRYPOINT_MC, FormatToPipe(chroma_format), - width, height + width, height, 2 ); if (!context_priv->decoder) {