Mesa (master): st/va: add support for allocating 10bpp surfaces

Christian König deathsimple at kemper.freedesktop.org
Mon Mar 13 08:25:27 UTC 2017


Module: Mesa
Branch: master
Commit: e9d3e29bb3225e1f6e8fdf56702979e86d92e675
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9d3e29bb3225e1f6e8fdf56702979e86d92e675

Author: Christian König <christian.koenig at amd.com>
Date:   Tue Mar  7 15:23:39 2017 +0100

st/va: add support for allocating 10bpp surfaces

We support P010 and P016 as targets for 10bpp video decoding.

Signed-off-by: Christian König <christian.koenig at amd.com>
Reviewed-by: Mark Thompson <sw at jkqxz.net>

---

 src/gallium/state_trackers/va/surface.c | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/gallium/state_trackers/va/surface.c b/src/gallium/state_trackers/va/surface.c
index 543a00a..c7d6ef7 100644
--- a/src/gallium/state_trackers/va/surface.c
+++ b/src/gallium/state_trackers/va/surface.c
@@ -431,21 +431,26 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id,
             i++;
          }
       }
-      if (config->rt_format & VA_RT_FORMAT_YUV420) {
-         attribs[i].type = VASurfaceAttribPixelFormat;
-         attribs[i].value.type = VAGenericValueTypeInteger;
-         attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
-         attribs[i].value.value.i = VA_FOURCC_NV12;
-         i++;
-      }
-   } else {
-      /* Assume VAEntrypointVLD for now. */
+   }
+   if (config->rt_format & VA_RT_FORMAT_YUV420) {
       attribs[i].type = VASurfaceAttribPixelFormat;
       attribs[i].value.type = VAGenericValueTypeInteger;
       attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
       attribs[i].value.value.i = VA_FOURCC_NV12;
       i++;
    }
+   if (config->rt_format & VA_RT_FORMAT_YUV420_10BPP) {
+      attribs[i].type = VASurfaceAttribPixelFormat;
+      attribs[i].value.type = VAGenericValueTypeInteger;
+      attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
+      attribs[i].value.value.i = VA_FOURCC_P010;
+      i++;
+      attribs[i].type = VASurfaceAttribPixelFormat;
+      attribs[i].value.type = VAGenericValueTypeInteger;
+      attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
+      attribs[i].value.value.i = VA_FOURCC_P016;
+      i++;
+   }
 
    attribs[i].type = VASurfaceAttribMemoryType;
    attribs[i].value.type = VAGenericValueTypeInteger;
@@ -658,6 +663,7 @@ vlVaCreateSurfaces2(VADriverContextP ctx, unsigned int format,
    if (VA_RT_FORMAT_YUV420 != format &&
        VA_RT_FORMAT_YUV422 != format &&
        VA_RT_FORMAT_YUV444 != format &&
+       VA_RT_FORMAT_YUV420_10BPP != format &&
        VA_RT_FORMAT_RGB32  != format) {
       return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
    }




More information about the mesa-commit mailing list