Merge branch 'unused-pipevidcaps' into 'main'

pipe/video,vl: Remove some unused video caps

See merge request mesa/mesa!40644
This commit is contained in:
David Rosca 2026-05-08 02:07:54 +02:00
commit 596905a66c
10 changed files with 5 additions and 194 deletions

View file

@ -275,13 +275,7 @@ vl_deint_filter_init(struct vl_deint_filter *filter, struct pipe_context *pipe,
/* TODO: handle other than 4:2:0 subsampling */
memset(&templ, 0, sizeof(templ));
templ.buffer_format = pipe->screen->get_video_param
(
pipe->screen,
PIPE_VIDEO_PROFILE_UNKNOWN,
PIPE_VIDEO_ENTRYPOINT_PROCESSING,
PIPE_VIDEO_CAP_PREFERRED_FORMAT
);
templ.buffer_format = PIPE_FORMAT_NV12;
templ.width = video_width;
templ.height = video_height;
templ.interlaced = true;

View file

@ -390,26 +390,15 @@ vl_video_buffer_create(struct pipe_context *pipe,
{
enum pipe_format resource_formats[VL_NUM_COMPONENTS];
struct pipe_video_buffer templat, *result;
bool pot_buffers;
assert(pipe);
assert(tmpl->width > 0 && tmpl->height > 0);
pot_buffers = !pipe->screen->get_video_param
(
pipe->screen,
PIPE_VIDEO_PROFILE_UNKNOWN,
PIPE_VIDEO_ENTRYPOINT_UNKNOWN,
PIPE_VIDEO_CAP_NPOT_TEXTURES
);
vl_get_video_buffer_formats(pipe->screen, tmpl->buffer_format, resource_formats);
templat = *tmpl;
templat.width = pot_buffers ? util_next_power_of_two(tmpl->width)
: align(tmpl->width, VL_MACROBLOCK_WIDTH);
templat.height = pot_buffers ? util_next_power_of_two(tmpl->height)
: align(tmpl->height, VL_MACROBLOCK_HEIGHT);
templat.width = align(tmpl->width, VL_MACROBLOCK_WIDTH);
templat.height = align(tmpl->height, VL_MACROBLOCK_HEIGHT);
if (tmpl->interlaced)
templat.height /= 2;

View file

@ -2245,11 +2245,8 @@ d3d12_screen_get_video_param_decode(struct pipe_screen *pscreen,
flush internally on end frame for decode
*/
return 0;
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_WIDTH:
case PIPE_VIDEO_CAP_MAX_HEIGHT:
case PIPE_VIDEO_CAP_MAX_LEVEL:
case PIPE_VIDEO_CAP_MIN_WIDTH:
case PIPE_VIDEO_CAP_MIN_HEIGHT:
case PIPE_VIDEO_CAP_SUPPORTED:
@ -2286,8 +2283,6 @@ d3d12_screen_get_video_param_decode(struct pipe_screen *pscreen,
return lowestSupportedConfig.resolution.Width;
} else if (param == PIPE_VIDEO_CAP_MIN_HEIGHT) {
return lowestSupportedConfig.resolution.Height;
} else if (param == PIPE_VIDEO_CAP_MAX_LEVEL) {
return bestSupportedConfig.level;
} else if (param == PIPE_VIDEO_CAP_SUPPORTED) {
return 1;
}
@ -2297,8 +2292,6 @@ d3d12_screen_get_video_param_decode(struct pipe_screen *pscreen,
}
return 0;
} break;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return (profile == PIPE_VIDEO_PROFILE_UNKNOWN) ? PIPE_FORMAT_NV12 : d3d12_get_pipe_format(d3d12_convert_pipe_video_profile_to_dxgi_format(profile));
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP:
@ -2318,14 +2311,11 @@ d3d12_screen_get_video_param_postproc(struct pipe_screen *pscreen,
switch (param) {
case PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME:
return 1;
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_WIDTH:
case PIPE_VIDEO_CAP_MAX_HEIGHT:
case PIPE_VIDEO_CAP_MIN_WIDTH:
case PIPE_VIDEO_CAP_MIN_HEIGHT:
case PIPE_VIDEO_CAP_SUPPORTED:
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
case PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP:
case PIPE_VIDEO_CAP_VPP_MAX_INPUT_WIDTH:
@ -2366,8 +2356,6 @@ d3d12_screen_get_video_param_postproc(struct pipe_screen *pscreen,
if (d3d12_has_video_process_support(pscreen, supportCaps, minSupportedInput, maxSupportedInput)) {
if (param == PIPE_VIDEO_CAP_SUPPORTED) {
return true;
} else if (param == PIPE_VIDEO_CAP_PREFERRED_FORMAT) {
return PIPE_FORMAT_NV12;
} else if (param == PIPE_VIDEO_CAP_MIN_WIDTH) {
return minSupportedInput.Width;
} else if (param == PIPE_VIDEO_CAP_MIN_HEIGHT) {
@ -2466,8 +2454,6 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen,
switch (param) {
case PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME:
return 1;
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_TEMPORAL_LAYERS:
{
switch (u_reduce_video_profile(profile)) {
@ -2498,7 +2484,6 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen,
case PIPE_VIDEO_CAP_MAX_HEIGHT:
case PIPE_VIDEO_CAP_MIN_WIDTH:
case PIPE_VIDEO_CAP_MIN_HEIGHT:
case PIPE_VIDEO_CAP_MAX_LEVEL:
case PIPE_VIDEO_CAP_SUPPORTED:
case PIPE_VIDEO_CAP_ENC_MAX_SLICES_PER_FRAME:
case PIPE_VIDEO_CAP_ENC_SLICES_STRUCTURE:
@ -2583,8 +2568,6 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen,
return minResEncode.Width;
} else if (param == PIPE_VIDEO_CAP_MIN_HEIGHT) {
return minResEncode.Height;
} else if (param == PIPE_VIDEO_CAP_MAX_LEVEL) {
return maxLvlEncode;
} else if (param == PIPE_VIDEO_CAP_SUPPORTED) {
return 1;
} else if (param == PIPE_VIDEO_CAP_ENC_MAX_SLICES_PER_FRAME) {
@ -2689,8 +2672,6 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen,
}
return 0;
} break;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return (profile == PIPE_VIDEO_PROFILE_UNKNOWN) ? PIPE_FORMAT_NV12 : d3d12_get_pipe_format(d3d12_convert_pipe_video_profile_to_dxgi_format(profile));
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP:

View file

@ -832,25 +832,11 @@ nouveau_screen_get_video_param(struct pipe_screen *pscreen,
case PIPE_VIDEO_CAP_SUPPORTED:
return entrypoint >= PIPE_VIDEO_ENTRYPOINT_IDCT &&
u_reduce_video_profile(profile) == PIPE_VIDEO_FORMAT_MPEG12;
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_WIDTH:
case PIPE_VIDEO_CAP_MAX_HEIGHT:
return vl_video_buffer_max_size(pscreen);
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_MAX_LEVEL:
switch (profile) {
case PIPE_VIDEO_PROFILE_MPEG1:
return 0;
case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE:
case PIPE_VIDEO_PROFILE_MPEG2_MAIN:
return 3;
default:
return 0;
}
default:
debug_printf("unknown video param: %d\n", param);
return 0;

View file

@ -451,8 +451,6 @@ nouveau_vp3_screen_get_video_param(struct pipe_screen *pscreen,
profile >= PIPE_VIDEO_PROFILE_MPEG1 &&
profile < PIPE_VIDEO_PROFILE_HEVC_MAIN &&
firmware_present(pscreen, profile);
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_WIDTH:
switch (codec) {
case PIPE_VIDEO_FORMAT_MPEG12:
@ -489,32 +487,8 @@ nouveau_vp3_screen_get_video_param(struct pipe_screen *pscreen,
debug_printf("unknown video codec: %d\n", codec);
return 0;
}
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return false;
case PIPE_VIDEO_CAP_MAX_LEVEL:
switch (profile) {
case PIPE_VIDEO_PROFILE_MPEG1:
return 0;
case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE:
case PIPE_VIDEO_PROFILE_MPEG2_MAIN:
return 3;
case PIPE_VIDEO_PROFILE_VC1_SIMPLE:
return 1;
case PIPE_VIDEO_PROFILE_VC1_MAIN:
return 2;
case PIPE_VIDEO_PROFILE_VC1_ADVANCED:
return 4;
case PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_CONSTRAINED_BASELINE:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
return 41;
default:
debug_printf("unknown video profile: %d\n", profile);
return 0;
}
case PIPE_VIDEO_CAP_MAX_MACROBLOCKS:
switch (codec) {
case PIPE_VIDEO_FORMAT_MPEG12:

View file

@ -821,30 +821,11 @@ nv84_screen_get_video_param(struct pipe_screen *pscreen,
return (codec == PIPE_VIDEO_FORMAT_MPEG4_AVC ||
codec == PIPE_VIDEO_FORMAT_MPEG12) &&
firmware_present(pscreen, codec);
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_WIDTH:
case PIPE_VIDEO_CAP_MAX_HEIGHT:
return 2048;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return false;
case PIPE_VIDEO_CAP_MAX_LEVEL:
switch (profile) {
case PIPE_VIDEO_PROFILE_MPEG1:
return 0;
case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE:
case PIPE_VIDEO_PROFILE_MPEG2_MAIN:
return 3;
case PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
return 41;
default:
debug_printf("unknown video profile: %d\n", profile);
return 0;
}
case PIPE_VIDEO_CAP_MAX_MACROBLOCKS:
return 8192; /* vc-1 actually has 8190, but this is not supported */
default:

View file

@ -204,18 +204,12 @@ int rvid_get_video_param(struct pipe_screen *screen,
case PIPE_VIDEO_CAP_SUPPORTED:
return codec == PIPE_VIDEO_FORMAT_MPEG4_AVC &&
rvce_is_fw_version_supported(rscreen);
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_WIDTH:
return 2048;
case PIPE_VIDEO_CAP_MAX_HEIGHT:
return 1152;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_STACKED_FRAMES:
return 1;
default:
return 0;
}
@ -239,37 +233,12 @@ int rvid_get_video_param(struct pipe_screen *screen,
default:
return false;
}
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MAX_WIDTH:
return 2048;
case PIPE_VIDEO_CAP_MAX_HEIGHT:
return 1152;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_MAX_LEVEL:
switch (profile) {
case PIPE_VIDEO_PROFILE_MPEG1:
return 0;
case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE:
case PIPE_VIDEO_PROFILE_MPEG2_MAIN:
return 3;
case PIPE_VIDEO_PROFILE_VC1_SIMPLE:
return 1;
case PIPE_VIDEO_PROFILE_VC1_MAIN:
return 2;
case PIPE_VIDEO_PROFILE_VC1_ADVANCED:
return 4;
case PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
return 41;
default:
return 0;
}
default:
return 0;
}

View file

@ -89,8 +89,6 @@ static int si_video_get_param(struct pipe_screen *screen, enum pipe_video_profil
* Have to determine the version and features of VPE in future.
*/
return PIPE_VIDEO_VPP_BLEND_MODE_NONE;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_REQUIRES_FLUSH_ON_END_FRAME:
@ -124,8 +122,6 @@ static int si_video_get_param(struct pipe_screen *screen, enum pipe_video_profil
(profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10 && sscreen->info.vcn_ip_version >= VCN_2_0_0) ||
(profile == PIPE_VIDEO_PROFILE_AV1_MAIN &&
(sscreen->info.vcn_ip_version >= VCN_4_0_0 && sscreen->info.vcn_ip_version != VCN_4_0_3))));
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MIN_WIDTH:
if (sscreen->info.vcn_ip_version >= VCN_5_0_0) {
if (codec == PIPE_VIDEO_FORMAT_MPEG4_AVC)
@ -150,15 +146,8 @@ static int si_video_get_param(struct pipe_screen *screen, enum pipe_video_profil
return KERNEL_ENC_CAP(codec, max_height);
else
return (sscreen->info.family < CHIP_TONGA) ? 1152 : 2304;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
if (profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10)
return PIPE_FORMAT_P010;
else
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_STACKED_FRAMES:
return (sscreen->info.family < CHIP_TONGA) ? 1 : 2;
case PIPE_VIDEO_CAP_MAX_TEMPORAL_LAYERS:
return (sscreen->info.ip[AMD_IP_UVD_ENC].num_queues ||
sscreen->info.vcn_ip_version >= VCN_1_0_0) ? 4 : 0;
@ -415,8 +404,6 @@ static int si_video_get_param(struct pipe_screen *screen, enum pipe_video_profil
default:
return false;
}
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return 1;
case PIPE_VIDEO_CAP_MIN_WIDTH:
case PIPE_VIDEO_CAP_MIN_HEIGHT:
if (codec == PIPE_VIDEO_FORMAT_VP9 || codec == PIPE_VIDEO_FORMAT_AV1)
@ -450,46 +437,8 @@ static int si_video_get_param(struct pipe_screen *screen, enum pipe_video_profil
return (sscreen->info.family < CHIP_TONGA) ? 1152 : 4096;
}
}
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
if (profile == PIPE_VIDEO_PROFILE_HEVC_MAIN_10)
return PIPE_FORMAT_P010;
else if (profile == PIPE_VIDEO_PROFILE_VP9_PROFILE2)
return PIPE_FORMAT_P010;
else
return PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return true;
case PIPE_VIDEO_CAP_MAX_LEVEL:
if ((profile == PIPE_VIDEO_PROFILE_MPEG2_SIMPLE ||
profile == PIPE_VIDEO_PROFILE_MPEG2_MAIN ||
profile == PIPE_VIDEO_PROFILE_VC1_ADVANCED) &&
sscreen->info.dec_caps.codec_info[codec - 1].valid) {
return sscreen->info.dec_caps.codec_info[codec - 1].max_level;
} else {
switch (profile) {
case PIPE_VIDEO_PROFILE_MPEG1:
return 0;
case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE:
case PIPE_VIDEO_PROFILE_MPEG2_MAIN:
return 3;
case PIPE_VIDEO_PROFILE_VC1_SIMPLE:
return 1;
case PIPE_VIDEO_PROFILE_VC1_MAIN:
return 2;
case PIPE_VIDEO_PROFILE_VC1_ADVANCED:
return 4;
case PIPE_VIDEO_PROFILE_MPEG4_AVC_CONSTRAINED_BASELINE:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN:
case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
return (sscreen->info.family < CHIP_TONGA) ? 41 : 52;
case PIPE_VIDEO_PROFILE_HEVC_MAIN:
case PIPE_VIDEO_PROFILE_HEVC_MAIN_10:
return 186;
default:
return 0;
}
}
case PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP:
return true;
case PIPE_VIDEO_CAP_ROI_CROP_DEC:

View file

@ -126,32 +126,24 @@ virgl_get_video_param(struct pipe_screen *screen,
/*
* Since there are calls like this:
* pot_buffers = !pipe->screen->get_video_param
* pipe->screen->get_video_param
* (
* pipe->screen,
* PIPE_VIDEO_PROFILE_UNKNOWN,
* PIPE_VIDEO_ENTRYPOINT_UNKNOWN,
* PIPE_VIDEO_CAP_NPOT_TEXTURES
* PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE
* );
* All parameters need to check the vcaps.
*/
switch (param) {
case PIPE_VIDEO_CAP_SUPPORTED:
return vcaps != NULL;
case PIPE_VIDEO_CAP_NPOT_TEXTURES:
return vcaps ? vcaps->npot_texture : true;
case PIPE_VIDEO_CAP_MAX_WIDTH:
return vcaps ? vcaps->max_width : 0;
case PIPE_VIDEO_CAP_MAX_HEIGHT:
return vcaps ? vcaps->max_height : 0;
case PIPE_VIDEO_CAP_PREFERRED_FORMAT:
return vcaps ? virgl_to_pipe_format(vcaps->prefered_format) : PIPE_FORMAT_NV12;
case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE:
return vcaps ? vcaps->supports_progressive : true;
case PIPE_VIDEO_CAP_MAX_LEVEL:
return vcaps ? vcaps->max_level : 0;
case PIPE_VIDEO_CAP_STACKED_FRAMES:
return vcaps ? vcaps->stacked_frames : 0;
case PIPE_VIDEO_CAP_MAX_MACROBLOCKS:
return vcaps ? vcaps->max_macroblocks : 0;
case PIPE_VIDEO_CAP_MAX_TEMPORAL_LAYERS:

View file

@ -81,13 +81,9 @@ enum pipe_video_profile
enum pipe_video_cap
{
PIPE_VIDEO_CAP_SUPPORTED = 0,
PIPE_VIDEO_CAP_NPOT_TEXTURES = 1,
PIPE_VIDEO_CAP_MAX_WIDTH = 2,
PIPE_VIDEO_CAP_MAX_HEIGHT = 3,
PIPE_VIDEO_CAP_PREFERRED_FORMAT = 4,
PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE = 6,
PIPE_VIDEO_CAP_MAX_LEVEL = 8,
PIPE_VIDEO_CAP_STACKED_FRAMES = 9,
PIPE_VIDEO_CAP_MAX_MACROBLOCKS = 10,
PIPE_VIDEO_CAP_MAX_TEMPORAL_LAYERS = 11,
PIPE_VIDEO_CAP_SKIP_CLEAR_SURFACE = 12,