+ if (profile == VAProfileHEVCMain10)
+ value = VA_RT_FORMAT_YUV420_10BPP;
We actually don't support that yet. Main10 profiles dither down the
10bit output to 8bits before writing it to the VA-API surface at the moment.
Apart from that the set looks good to me,
Christian.
Am 19.09.2016 um 01:09 schrieb Mark Thompson:
---
More chroma formats might be supportable, I've kept this to YUV420 + RGB for
now.
Also, B-frames might be supported in some configurations? That could be
conditional on the GPU being used somehow if necessary.
src/gallium/state_trackers/va/config.c | 53 ++++++++++++++++++++++++++++------
1 file changed, 44 insertions(+), 9 deletions(-)
diff --git a/src/gallium/state_trackers/va/config.c
b/src/gallium/state_trackers/va/config.c
index 4052316..c6c5bb1 100644
--- a/src/gallium/state_trackers/va/config.c
+++ b/src/gallium/state_trackers/va/config.c
@@ -115,16 +115,51 @@ 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:
+ if (profile == VAProfileHEVCMain10)
+ value = VA_RT_FORMAT_YUV420_10BPP;
+ else
+ value = VA_RT_FORMAT_YUV420;
+ break;
+ default:
+ value = VA_ATTRIB_NOT_SUPPORTED;
+ break;
+ }
+ } else if (entrypoint == VAEntrypointEncSlice) {
+ switch (attrib_list[i].type) {
+ case VAConfigAttribRTFormat:
+ if (profile == VAProfileHEVCMain10)
+ value = VA_RT_FORMAT_YUV420_10BPP;
+ else
+ 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;
}
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev