radeonsi/vcn: Add low latency decode debug option
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Similar to the low latency option for encode, this reduces latency
of decoding at the cost of increased power usage.

Can be enabled with AMD_DEBUG=lowlatencydec

Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39450>
This commit is contained in:
David Rosca 2026-01-20 15:26:52 +01:00 committed by Marge Bot
parent ce25865e8f
commit 62f07b8c63
5 changed files with 9 additions and 1 deletions

View file

@ -1743,6 +1743,8 @@ RadeonSI driver environment variables
Disable DPBB. Overrules the dpbb enable option.
``noefc``
Disable hardware based encoder color format conversion
``lowlatencydec``
Enable low latency decoding
``lowlatencyenc``
Enable low latency encoding
``notiling``

View file

@ -163,6 +163,7 @@
/* *** decode flags *** */
#define RDECODE_FLAGS_USE_DYNAMIC_DPB_MASK 0x00000001
#define RDECODE_FLAGS_USE_PAL_MASK 0x00000008
#define RDECODE_FLAGS_LOW_LATENCY_MASK 0x00000080
#define RDECODE_FLAGS_DPB_RESIZE_MASK 0x00000100
#define RDECODE_FLAGS_UNIFIED_DT_MASK 0x00000200

View file

@ -1437,7 +1437,7 @@ static struct pb_buffer_lean *rvcn_dec_message_decode(struct radeon_decoder *dec
struct si_texture *luma;
struct si_texture *chroma;
struct pipe_video_buffer *out_surf = target;
ASSERTED struct si_screen *sscreen = (struct si_screen *)dec->screen;
struct si_screen *sscreen = (struct si_screen *)dec->screen;
rvcn_dec_message_header_t *header;
rvcn_dec_message_index_t *index_codec;
rvcn_dec_message_index_t *index_drm = NULL;
@ -1567,6 +1567,9 @@ static struct pb_buffer_lean *rvcn_dec_message_decode(struct radeon_decoder *dec
if (dec->dpb_type == DPB_DYNAMIC_TIER_3)
decode->decode_flags |= RDECODE_FLAGS_UNIFIED_DT_MASK;
if (sscreen->multimedia_debug_flags & DBG(LOW_LATENCY_DECODE))
decode->decode_flags |= RDECODE_FLAGS_LOW_LATENCY_MASK;
decode->bsd_size = align(dec->bs_size, 128);
if (dec->dpb_type < DPB_DYNAMIC_TIER_2) {

View file

@ -129,6 +129,7 @@ static const struct debug_named_value radeonsi_shader_debug_options[] = {
static const struct debug_named_value radeonsi_multimedia_debug_options[] = {
/* Multimedia options: */
{"noefc", DBG(NO_EFC), "Disable hardware based encoder colour format conversion."},
{"lowlatencydec", DBG(LOW_LATENCY_DECODE), "Enable low latency decoding."},
{"lowlatencyenc", DBG(LOW_LATENCY_ENCODE), "Enable low latency encoding."},
{"novideotiling", DBG(NO_VIDEO_TILING), "Disable tiling for video."},
{"nodectier1", DBG(NO_DECODE_TIER1), "Disable tier1 for video decode."},

View file

@ -264,6 +264,7 @@ enum
enum
{
DBG_NO_EFC,
DBG_LOW_LATENCY_DECODE,
DBG_LOW_LATENCY_ENCODE,
DBG_NO_VIDEO_TILING,
DBG_NO_DECODE_TIER1,