From: Mark Thompson Date: Wed, 12 Oct 2016 22:52:01 +0000 (+0100) Subject: st/va: Return more useful config attributes X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8a931c83bafbf768ffa520af32740df4c5a765e9;p=mesa.git st/va: Return more useful config attributes The encoder attributes are needed for a user of the encoder to be able to configure it sensibly without internal knowledge. Reviewed-by: Christian König --- diff --git a/src/gallium/state_trackers/va/config.c b/src/gallium/state_trackers/va/config.c index 405231685d3..72f68baf3df 100644 --- a/src/gallium/state_trackers/va/config.c +++ b/src/gallium/state_trackers/va/config.c @@ -115,16 +115,45 @@ vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint en for (i = 0; i < num_attribs; ++i) { unsigned int value; - switch (attrib_list[i].type) { - case VAConfigAttribRTFormat: - value = VA_RT_FORMAT_YUV420; - break; - case VAConfigAttribRateControl: - value = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR; - break; - default: + if (entrypoint == VAEntrypointVLD) { + switch (attrib_list[i].type) { + case VAConfigAttribRTFormat: + value = VA_RT_FORMAT_YUV420; + break; + default: + value = VA_ATTRIB_NOT_SUPPORTED; + break; + } + } else if (entrypoint == VAEntrypointEncSlice) { + switch (attrib_list[i].type) { + case VAConfigAttribRTFormat: + value = VA_RT_FORMAT_YUV420; + break; + case VAConfigAttribRateControl: + value = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR; + break; + case VAConfigAttribEncPackedHeaders: + value = 0; + break; + case VAConfigAttribEncMaxRefFrames: + value = 1; + break; + default: + value = VA_ATTRIB_NOT_SUPPORTED; + break; + } + } else if (entrypoint == VAEntrypointVideoProc) { + switch (attrib_list[i].type) { + case VAConfigAttribRTFormat: + value = (VA_RT_FORMAT_YUV420 | + VA_RT_FORMAT_RGB32); + break; + default: + value = VA_ATTRIB_NOT_SUPPORTED; + break; + } + } else { value = VA_ATTRIB_NOT_SUPPORTED; - break; } attrib_list[i].value = value; }