Hi, 2014-09-23 18:44 GMT+02:00 Leo Liu <leo....@amd.com>: > From: Christian König <christian.koe...@amd.com> > > This patch adds a skeleton VA-API state tracker, > which is filled with live in the subsequent patches. > > Signed-off-by: Christian König <christian.koe...@amd.com> > Signed-off-by: Leo Liu <leo....@amd.com> > --- > configure.ac | 35 ++++++- > src/gallium/Makefile.am | 4 + > src/gallium/state_trackers/va/Makefile.am | 43 ++++++++ > src/gallium/state_trackers/va/buffer.c | 87 +++++++++++++++++ > src/gallium/state_trackers/va/config.c | 91 +++++++++++++++++ > src/gallium/state_trackers/va/context.c | 151 > +++++++++++++++++++++++++++++ > src/gallium/state_trackers/va/display.c | 61 ++++++++++++ > src/gallium/state_trackers/va/image.c | 106 ++++++++++++++++++++ > src/gallium/state_trackers/va/picture.c | 56 +++++++++++ > src/gallium/state_trackers/va/subpicture.c | 115 ++++++++++++++++++++++ > src/gallium/state_trackers/va/surface.c | 111 +++++++++++++++++++++ > src/gallium/state_trackers/va/va_private.h | 116 ++++++++++++++++++++++ > src/gallium/targets/va/Makefile.am | 93 ++++++++++++++++++ > src/gallium/targets/va/target.c | 1 + > src/gallium/targets/va/va.sym | 6 ++ > 15 files changed, 1074 insertions(+), 2 deletions(-) > create mode 100644 src/gallium/state_trackers/va/Makefile.am > create mode 100644 src/gallium/state_trackers/va/buffer.c > create mode 100644 src/gallium/state_trackers/va/config.c > create mode 100644 src/gallium/state_trackers/va/context.c > create mode 100644 src/gallium/state_trackers/va/display.c > create mode 100644 src/gallium/state_trackers/va/image.c > create mode 100644 src/gallium/state_trackers/va/picture.c > create mode 100644 src/gallium/state_trackers/va/subpicture.c > create mode 100644 src/gallium/state_trackers/va/surface.c > create mode 100644 src/gallium/state_trackers/va/va_private.h > create mode 100644 src/gallium/targets/va/Makefile.am > create mode 100644 src/gallium/targets/va/target.c > create mode 100644 src/gallium/targets/va/va.sym > > diff --git a/configure.ac b/configure.ac > index 12f914e..951de25 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -661,6 +661,11 @@ AC_ARG_ENABLE([omx], > [enable OpenMAX library @<:@default=no@:>@])], > [enable_omx="$enableval"], > [enable_omx=no]) > +AC_ARG_ENABLE([va], > + [AS_HELP_STRING([--enable-va], > + [enable va library @<:@default=auto@:>@])], > + [enable_va="$enableval"], > + [enable_va=auto]) > AC_ARG_ENABLE([opencl], > [AS_HELP_STRING([--enable-opencl], > [enable OpenCL library @<:@default=no@:>@])], > @@ -732,6 +737,7 @@ if test "x$enable_opengl" = xno -a \ > "x$enable_xvmc" = xno -a \ > "x$enable_vdpau" = xno -a \ > "x$enable_omx" = xno -a \ > + "x$enable_va" = xno -a \ > "x$enable_opencl" = xno; then > AC_MSG_ERROR([at least one API should be enabled]) > fi > @@ -1413,6 +1419,12 @@ if test -n "$with_gallium_drivers" -a > "x$with_gallium_drivers" != xswrast; then > if test "x$enable_omx" = xauto; then > PKG_CHECK_EXISTS([libomxil-bellagio], [enable_omx=yes], > [enable_omx=no]) > fi > + > + if test "x$enable_va" = xauto; then > + #don't enable vaapi state tracker even if package exists > + #PKG_CHECK_EXISTS([libva], [enable_va=yes], [enable_va=no]) > + enable_va=no > + fi > fi > > if test "x$enable_xvmc" = xyes; then > @@ -1437,6 +1449,12 @@ if test "x$enable_omx" = xyes; then > fi > AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes) > > +if test "x$enable_va" = xyes; then > + PKG_CHECK_MODULES([LIBVA], [libva >= 0.35.0 x11-xcb xcb-dri2 >= > $XCBDRI2_REQUIRED]) > + GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va" > +fi > +AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes) > + > dnl > dnl OpenCL configuration > dnl > @@ -1816,6 +1834,14 @@ AC_ARG_WITH([omx-libdir], > [OMX_LIB_INSTALL_DIR="$OMX_LIB_INSTALL_DIR_DEFAULT"]) > AC_SUBST([OMX_LIB_INSTALL_DIR]) > > +dnl Directory for VA libs > +AC_ARG_WITH([va-libdir], > + [AS_HELP_STRING([--with-va-libdir=DIR], > + [directory for the VA libraries @<:@default=${libdir}/va@:>@])], > + [VA_LIB_INSTALL_DIR="$withval"], > + [VA_LIB_INSTALL_DIR='${libdir}/va']) > +AC_SUBST([VA_LIB_INSTALL_DIR]) > + > dnl Directory for OpenCL libs > AC_ARG_WITH([opencl-libdir], > [AS_HELP_STRING([--with-opencl-libdir=DIR], > @@ -1848,6 +1874,9 @@ gallium_check_st() { > if test "x$enable_omx" = xyes && test "x$7" != x; then > GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7" > fi > + if test "x$enable_va" = xyes && test "x$7" != x; then > + GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7" > + fi > } > > gallium_require_llvm() { > @@ -1953,7 +1982,7 @@ if test -n "$with_gallium_drivers"; then > if test "x$enable_opencl" = xyes; then > LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser" > fi > - gallium_check_st "Gallium R600" "radeon/drm" "dri/r600" "" > "xvmc/r600" "vdpau/r600" "omx/r600" > + gallium_check_st "Gallium R600" "radeon/drm" "dri/r600" "" > "xvmc/r600" "vdpau/r600" "omx/r600" "va/r600" > ;; > xradeonsi) > HAVE_GALLIUM_RADEONSI=yes > @@ -1962,7 +1991,7 @@ if test -n "$with_gallium_drivers"; then > GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi" > radeon_llvm_check "radeonsi" > require_egl_drm "radeonsi" > - gallium_check_st "radeonsi" "radeon/drm" "dri/radeonsi" "" "" > "vdpau/radeonsi" "omx/radeonsi" > + gallium_check_st "radeonsi" "radeon/drm" "dri/radeonsi" "" "" > "vdpau/radeonsi" "omx/radeonsi" "va/radeonsi" > ;; > xnouveau) > HAVE_GALLIUM_NOUVEAU=yes > @@ -2213,6 +2242,7 @@ AC_CONFIG_FILES([Makefile > src/gallium/state_trackers/glx/xlib/Makefile > src/gallium/state_trackers/omx/Makefile > src/gallium/state_trackers/osmesa/Makefile > + src/gallium/state_trackers/va/Makefile > src/gallium/state_trackers/vdpau/Makefile > src/gallium/state_trackers/vega/Makefile > src/gallium/state_trackers/xa/Makefile > @@ -2226,6 +2256,7 @@ AC_CONFIG_FILES([Makefile > src/gallium/targets/osmesa/Makefile > src/gallium/targets/osmesa/osmesa.pc > src/gallium/targets/pipe-loader/Makefile > + src/gallium/targets/va/Makefile > src/gallium/targets/vdpau/Makefile > src/gallium/targets/xa/Makefile > src/gallium/targets/xa/xatracker.pc > diff --git a/src/gallium/Makefile.am b/src/gallium/Makefile.am > index 6018e9f..ef620fa 100644 > --- a/src/gallium/Makefile.am > +++ b/src/gallium/Makefile.am > @@ -158,6 +158,10 @@ if HAVE_GALLIUM_OSMESA > SUBDIRS += state_trackers/osmesa targets/osmesa > endif > > +if HAVE_ST_VA > +SUBDIRS += state_trackers/va targets/va > +endif > + > if HAVE_ST_VDPAU > SUBDIRS += state_trackers/vdpau targets/vdpau > endif > diff --git a/src/gallium/state_trackers/va/Makefile.am > b/src/gallium/state_trackers/va/Makefile.am > new file mode 100644 > index 0000000..aef15e2 > --- /dev/null > +++ b/src/gallium/state_trackers/va/Makefile.am > @@ -0,0 +1,43 @@ > +# Copyright 2014 Advanced Micro Devices, Inc. > +# > +# Permission is hereby granted, free of charge, to any person obtaining a > +# copy of this software and associated documentation files (the "Software"), > +# to deal in the Software without restriction, including without limitation > +# the rights to use, copy, modify, merge, publish, distribute, sublicense, > +# and/or sell copies of the Software, and to permit persons to whom the > +# Software is furnished to do so, subject to the following conditions: > +# > +# The above copyright notice and this permission notice (including the next > +# paragraph) shall be included in all copies or substantial portions of the > +# Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT > +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, > +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > +# DEALINGS IN THE SOFTWARE. > + > +include $(top_srcdir)/src/gallium/Automake.inc > + > +AM_CFLAGS = \ > + $(GALLIUM_CFLAGS) \ > + $(VISIBILITY_CFLAGS) \ > + $(VA_CFLAGS) > + > +AM_CPPFLAGS = \ > + -I$(top_srcdir)/include > + > +noinst_LTLIBRARIES = libvatracker.la > + > +libvatracker_la_SOURCES = \ > + buffer.c \ > + config.c \ > + context.c \ > + display.c \ > + image.c \ > + picture.c \ > + subpicture.c \ > + surface.c > diff --git a/src/gallium/state_trackers/va/buffer.c > b/src/gallium/state_trackers/va/buffer.c > new file mode 100644 > index 0000000..0378f60 > --- /dev/null > +++ b/src/gallium/state_trackers/va/buffer.c > @@ -0,0 +1,87 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "va_private.h" > + > +VAStatus > +vlVaCreateBuffer(VADriverContextP ctx, VAContextID context, VABufferType > type, > + unsigned int size, unsigned int num_elements, void *data, > + VABufferID *buf_id) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaBufferSetNumElements(VADriverContextP ctx, VABufferID buf_id, > + unsigned int num_elements) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuff) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaUnmapBuffer(VADriverContextP ctx, VABufferID buf_id) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDestroyBuffer(VADriverContextP ctx, VABufferID buffer_id) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaBufferInfo(VADriverContextP ctx, VABufferID buf_id, VABufferType *type, > + unsigned int *size, unsigned int *num_elements) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > diff --git a/src/gallium/state_trackers/va/config.c > b/src/gallium/state_trackers/va/config.c > new file mode 100644 > index 0000000..d548780 > --- /dev/null > +++ b/src/gallium/state_trackers/va/config.c > @@ -0,0 +1,91 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "va_private.h" > + > +VAStatus > +vlVaQueryConfigProfiles(VADriverContextP ctx, VAProfile *profile_list, int > *num_profiles) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + *num_profiles = 0; > + > + return VA_STATUS_SUCCESS; > +} > + > +VAStatus > +vlVaQueryConfigEntrypoints(VADriverContextP ctx, VAProfile profile, > + VAEntrypoint *entrypoint_list, int > *num_entrypoints) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + *num_entrypoints = 0; > + > + return VA_STATUS_SUCCESS; > +} > + > +VAStatus > +vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, > VAEntrypoint entrypoint, > + VAConfigAttrib *attrib_list, int num_attribs) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint > entrypoint, > + VAConfigAttrib *attrib_list, int num_attribs, VAConfigID > *config_id) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDestroyConfig(VADriverContextP ctx, VAConfigID config_id) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaQueryConfigAttributes(VADriverContextP ctx, VAConfigID config_id, > VAProfile *profile, > + VAEntrypoint *entrypoint, VAConfigAttrib > *attrib_list, int *num_attribs) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > diff --git a/src/gallium/state_trackers/va/context.c > b/src/gallium/state_trackers/va/context.c > new file mode 100644 > index 0000000..450aef1 > --- /dev/null > +++ b/src/gallium/state_trackers/va/context.c > @@ -0,0 +1,151 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "pipe/p_screen.h" > +#include "pipe/p_video_codec.h" > + > +#include "util/u_memory.h" > +#include "vl/vl_winsys.h" > + > +#include "va_private.h" > + > +static struct VADriverVTable vtable = > +{ > + &vlVaTerminate, > + &vlVaQueryConfigProfiles, > + &vlVaQueryConfigEntrypoints, > + &vlVaGetConfigAttributes, > + &vlVaCreateConfig, > + &vlVaDestroyConfig, > + &vlVaQueryConfigAttributes, > + &vlVaCreateSurfaces, > + &vlVaDestroySurfaces, > + &vlVaCreateContext, > + &vlVaDestroyContext, > + &vlVaCreateBuffer, > + &vlVaBufferSetNumElements, > + &vlVaMapBuffer, > + &vlVaUnmapBuffer, > + &vlVaDestroyBuffer, > + &vlVaBeginPicture, > + &vlVaRenderPicture, > + &vlVaEndPicture, > + &vlVaSyncSurface, > + &vlVaQuerySurfaceStatus, > + &vlVaQuerySurfaceError, > + &vlVaPutSurface, > + &vlVaQueryImageFormats, > + &vlVaCreateImage, > + &vlVaDeriveImage, > + &vlVaDestroyImage, > + &vlVaSetImagePalette, > + &vlVaGetImage, > + &vlVaPutImage, > + &vlVaQuerySubpictureFormats, > + &vlVaCreateSubpicture, > + &vlVaDestroySubpicture, > + &vlVaSubpictureImage, > + &vlVaSetSubpictureChromakey, > + &vlVaSetSubpictureGlobalAlpha, > + &vlVaAssociateSubpicture, > + &vlVaDeassociateSubpicture, > + &vlVaQueryDisplayAttributes, > + &vlVaGetDisplayAttributes, > + &vlVaSetDisplayAttributes, > + &vlVaBufferInfo, > + &vlVaLockSurface, > + &vlVaUnlockSurface > +}; > + > +PUBLIC VAStatus > +__vaDriverInit_0_35(VADriverContextP ctx) > +{ > + vlVaDriver *drv; > + > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + drv = CALLOC(1, sizeof(vlVaDriver)); > + if (!drv) > + return VA_STATUS_ERROR_ALLOCATION_FAILED; > + > + drv->vscreen = vl_screen_create(ctx->native_dpy, ctx->x11_screen); > + if (!drv->vscreen) { > + FREE(drv); > + return VA_STATUS_ERROR_ALLOCATION_FAILED; > + } > + > + ctx->pDriverData = (void *)drv; > + ctx->version_major = 0; > + ctx->version_minor = 1;
At some point, I wanted that to be in/out versioning. In: what version libva exposes. Out: what the VA driver reports to actually implement. That way, we could improve/fix version checks at the libva level too. Agreed, however, this is not used yet. > + *ctx->vtable = vtable; > + ctx->max_profiles = 1; > + ctx->max_entrypoints = 1; > + ctx->max_attributes = 1; > + ctx->max_image_formats = 1; > + ctx->max_subpic_formats = 1; > + ctx->max_display_attributes = 1; > + ctx->str_vendor = "mesa gallium vaapi"; > + > + return VA_STATUS_SUCCESS; > +} > + > +VAStatus > +vlVaCreateContext(VADriverContextP ctx, VAConfigID config_id, int > picture_width, > + int picture_height, int flag, VASurfaceID *render_targets, > + int num_render_targets, VAContextID *conext) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDestroyContext(VADriverContextP ctx, VAContextID context) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaTerminate(VADriverContextP ctx) > +{ > + vlVaDriver *drv; > + > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + drv = ctx->pDriverData; > + vl_screen_destroy(drv->vscreen); > + FREE(drv); > + > + return VA_STATUS_SUCCESS; > +} > diff --git a/src/gallium/state_trackers/va/display.c > b/src/gallium/state_trackers/va/display.c > new file mode 100644 > index 0000000..3d0fe09 > --- /dev/null > +++ b/src/gallium/state_trackers/va/display.c > @@ -0,0 +1,61 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "va_private.h" > + > +VAStatus > +vlVaQueryDisplayAttributes(VADriverContextP ctx, VADisplayAttribute > *attr_list, int *num_attributes) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + if (!(attr_list && num_attributes)) > + return VA_STATUS_ERROR_UNKNOWN; > + > + *num_attributes = 0; > + > + return VA_STATUS_SUCCESS; > +} > + > +VAStatus > +vlVaGetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute > *attr_list, int num_attributes) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaSetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute > *attr_list, int num_attributes) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > diff --git a/src/gallium/state_trackers/va/image.c > b/src/gallium/state_trackers/va/image.c > new file mode 100644 > index 0000000..8aaa29c > --- /dev/null > +++ b/src/gallium/state_trackers/va/image.c > @@ -0,0 +1,106 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "va_private.h" > + > +VAStatus > +vlVaQueryImageFormats(VADriverContextP ctx, VAImageFormat *format_list, int > *num_formats) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + if (!(format_list && num_formats)) > + return VA_STATUS_ERROR_UNKNOWN; > + > + *num_formats = 0; > + > + return VA_STATUS_SUCCESS; > +} > + > +VAStatus > +vlVaCreateImage(VADriverContextP ctx, VAImageFormat *format, int width, int > height, VAImage *image) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + if(!format) > + return VA_STATUS_ERROR_UNKNOWN; > + > + if (!(width && height)) > + return VA_STATUS_ERROR_INVALID_IMAGE_FORMAT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDestroyImage(VADriverContextP ctx, VAImageID image) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaSetImagePalette(VADriverContextP ctx, VAImageID image, unsigned char > *palette) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaGetImage(VADriverContextP ctx, VASurfaceID surface, int x, int y, > + unsigned int width, unsigned int height, VAImageID image) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaPutImage(VADriverContextP ctx, VASurfaceID surface, VAImageID image, > + int src_x, int src_y, unsigned int src_width, unsigned int > src_height, > + int dest_x, int dest_y, unsigned int dest_width, unsigned int > dest_height) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > diff --git a/src/gallium/state_trackers/va/picture.c > b/src/gallium/state_trackers/va/picture.c > new file mode 100644 > index 0000000..4c59d43 > --- /dev/null > +++ b/src/gallium/state_trackers/va/picture.c > @@ -0,0 +1,56 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "va_private.h" > + > +VAStatus > +vlVaBeginPicture(VADriverContextP ctx, VAContextID context, VASurfaceID > render_target) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaRenderPicture(VADriverContextP ctx, VAContextID context, VABufferID > *buffers, int num_buffers) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaEndPicture(VADriverContextP ctx, VAContextID context) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > diff --git a/src/gallium/state_trackers/va/subpicture.c > b/src/gallium/state_trackers/va/subpicture.c > new file mode 100644 > index 0000000..b88511e > --- /dev/null > +++ b/src/gallium/state_trackers/va/subpicture.c > @@ -0,0 +1,115 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "va_private.h" > + > +VAStatus > +vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat *format_list, > + unsigned int *flags, unsigned int *num_formats) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + if (!(format_list && flags && num_formats)) > + return VA_STATUS_ERROR_UNKNOWN; > + > + *num_formats = 0; > + > + return VA_STATUS_SUCCESS; > +} > + > +VAStatus > +vlVaCreateSubpicture(VADriverContextP ctx, VAImageID image, VASubpictureID > *subpicture) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDestroySubpicture(VADriverContextP ctx, VASubpictureID subpicture) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaSubpictureImage(VADriverContextP ctx, VASubpictureID subpicture, > VAImageID image) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaSetSubpictureChromakey(VADriverContextP ctx, VASubpictureID subpicture, > + unsigned int chromakey_min, unsigned int > chromakey_max, unsigned int chromakey_mask) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx, VASubpictureID > subpicture, float global_alpha) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaAssociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, > VASurfaceID *target_surfaces, > + int num_surfaces, short src_x, short src_y, > + unsigned short src_width, unsigned short src_height, > + short dest_x, short dest_y, > + unsigned short dest_width, > + unsigned short dest_height, > + unsigned int flags) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDeassociateSubpicture(VADriverContextP ctx, VASubpictureID subpicture, > + VASurfaceID *target_surfaces, int num_surfaces) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > diff --git a/src/gallium/state_trackers/va/surface.c > b/src/gallium/state_trackers/va/surface.c > new file mode 100644 > index 0000000..58cd8ad > --- /dev/null > +++ b/src/gallium/state_trackers/va/surface.c > @@ -0,0 +1,111 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#include "va_private.h" > + > +VAStatus > +vlVaCreateSurfaces(VADriverContextP ctx, int width, int height, int format, > + int num_surfaces, VASurfaceID *surfaces) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + if (!(width && height)) > + return VA_STATUS_ERROR_INVALID_IMAGE_FORMAT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaDestroySurfaces(VADriverContextP ctx, VASurfaceID *surface_list, int > num_surfaces) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaSyncSurface(VADriverContextP ctx, VASurfaceID render_target) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaQuerySurfaceStatus(VADriverContextP ctx, VASurfaceID render_target, > VASurfaceStatus *status) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaQuerySurfaceError(VADriverContextP ctx, VASurfaceID render_target, > VAStatus error_status, void **error_info) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface, void* draw, short > srcx, short srcy, > + unsigned short srcw, unsigned short srch, short destx, short > desty, > + unsigned short destw, unsigned short desth, VARectangle > *cliprects, > + unsigned int number_cliprects, unsigned int flags) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaLockSurface(VADriverContextP ctx, VASurfaceID surface, unsigned int > *fourcc, > + unsigned int *luma_stride, unsigned int *chroma_u_stride, > unsigned int *chroma_v_stride, > + unsigned int *luma_offset, unsigned int *chroma_u_offset, > unsigned int *chroma_v_offset, > + unsigned int *buffer_name, void **buffer) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > + > +VAStatus > +vlVaUnlockSurface(VADriverContextP ctx, VASurfaceID surface) > +{ > + if (!ctx) > + return VA_STATUS_ERROR_INVALID_CONTEXT; > + > + return VA_STATUS_ERROR_UNIMPLEMENTED; > +} > diff --git a/src/gallium/state_trackers/va/va_private.h > b/src/gallium/state_trackers/va/va_private.h > new file mode 100644 > index 0000000..5adca12 > --- /dev/null > +++ b/src/gallium/state_trackers/va/va_private.h > @@ -0,0 +1,116 @@ > +/************************************************************************** > + * > + * Copyright 2010 Thomas Balling Sørensen & Orasanu Lucian. > + * Copyright 2014 Advanced Micro Devices, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > +#ifndef VA_PRIVATE_H > +#define VA_PRIVATE_H > + > +#include <va/va.h> > +#include <va/va_backend.h> > + > +typedef struct { > + struct vl_screen *vscreen; > +} vlVaDriver; > + > +// Public functions: > +VAStatus __vaDriverInit_0_35(VADriverContextP ctx); > + > +// vtable functions: > +VAStatus vlVaTerminate(VADriverContextP ctx); > +VAStatus vlVaQueryConfigProfiles(VADriverContextP ctx, VAProfile > *profile_list,int *num_profiles); > +VAStatus vlVaQueryConfigEntrypoints(VADriverContextP ctx, VAProfile profile, > + VAEntrypoint *entrypoint_list, int > *num_entrypoints); > +VAStatus vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, > VAEntrypoint entrypoint, > + VAConfigAttrib *attrib_list, int > num_attribs); > +VAStatus vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, > VAEntrypoint entrypoint, > + VAConfigAttrib *attrib_list, int num_attribs, > VAConfigID *config_id); > +VAStatus vlVaDestroyConfig(VADriverContextP ctx, VAConfigID config_id); > +VAStatus vlVaQueryConfigAttributes(VADriverContextP ctx, VAConfigID > config_id, VAProfile *profile, > + VAEntrypoint *entrypoint, VAConfigAttrib > *attrib_list, int *num_attribs); > +VAStatus vlVaCreateSurfaces(VADriverContextP ctx, int width, int height, int > format, > + int num_surfaces, VASurfaceID *surfaces); > +VAStatus vlVaDestroySurfaces(VADriverContextP ctx, VASurfaceID > *surface_list, int num_surfaces); > +VAStatus vlVaCreateContext(VADriverContextP ctx, VAConfigID config_id, int > picture_width, int picture_height, > + int flag, VASurfaceID *render_targets, int > num_render_targets, VAContextID *context); > +VAStatus vlVaDestroyContext(VADriverContextP ctx, VAContextID context); > +VAStatus vlVaCreateBuffer(VADriverContextP ctx, VAContextID context, > VABufferType type, unsigned int size, > + unsigned int num_elements, void *data, VABufferID > *buf_id); > +VAStatus vlVaBufferSetNumElements(VADriverContextP ctx, VABufferID buf_id, > unsigned int num_elements); > +VAStatus vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuf); > +VAStatus vlVaUnmapBuffer(VADriverContextP ctx, VABufferID buf_id); > +VAStatus vlVaDestroyBuffer(VADriverContextP ctx, VABufferID buffer_id); > +VAStatus vlVaBeginPicture(VADriverContextP ctx, VAContextID context, > VASurfaceID render_target); > +VAStatus vlVaRenderPicture(VADriverContextP ctx, VAContextID context, > VABufferID *buffers, int num_buffers); > +VAStatus vlVaEndPicture(VADriverContextP ctx, VAContextID context); > +VAStatus vlVaSyncSurface(VADriverContextP ctx, VASurfaceID render_target); > +VAStatus vlVaQuerySurfaceStatus(VADriverContextP ctx, VASurfaceID > render_target, VASurfaceStatus *status); > +VAStatus vlVaQuerySurfaceError(VADriverContextP ctx, VASurfaceID > render_target, > + VAStatus error_status, void **error_info); > +VAStatus vlVaPutSurface(VADriverContextP ctx, VASurfaceID surface, void* > draw, short srcx, short srcy, > + unsigned short srcw, unsigned short srch, short > destx, short desty, unsigned short destw, > + unsigned short desth, VARectangle *cliprects, > unsigned int number_cliprects, > + unsigned int flags); > +VAStatus vlVaQueryImageFormats(VADriverContextP ctx, VAImageFormat > *format_list, int *num_formats); > +VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat > *format_list, > + unsigned int *flags, unsigned int > *num_formats); > +VAStatus vlVaCreateImage(VADriverContextP ctx, VAImageFormat *format, int > width, int height, VAImage *image); > +VAStatus vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage > *image); > +VAStatus vlVaDestroyImage(VADriverContextP ctx, VAImageID image); > +VAStatus vlVaSetImagePalette(VADriverContextP ctx, VAImageID image, unsigned > char *palette); > +VAStatus vlVaGetImage(VADriverContextP ctx, VASurfaceID surface, int x, int > y, > + unsigned int width, unsigned int height, VAImageID > image); > +VAStatus vlVaPutImage(VADriverContextP ctx, VASurfaceID surface, VAImageID > image, int src_x, int src_y, > + unsigned int src_width, unsigned int src_height, int > dest_x, int dest_y, > + unsigned int dest_width, unsigned int dest_height); > +VAStatus vlVaQuerySubpictureFormats(VADriverContextP ctx, VAImageFormat > *format_list, > + unsigned int *flags, unsigned int > *num_formats); > +VAStatus vlVaCreateSubpicture(VADriverContextP ctx, VAImageID image, > VASubpictureID *subpicture); > +VAStatus vlVaDestroySubpicture(VADriverContextP ctx, VASubpictureID > subpicture); > +VAStatus vlVaSubpictureImage(VADriverContextP ctx, VASubpictureID > subpicture, VAImageID image); > +VAStatus vlVaSetSubpictureChromakey(VADriverContextP ctx, VASubpictureID > subpicture, > + unsigned int chromakey_min, unsigned int > chromakey_max, > + unsigned int chromakey_mask); > +VAStatus vlVaSetSubpictureGlobalAlpha(VADriverContextP ctx, VASubpictureID > subpicture, float global_alpha); > +VAStatus vlVaAssociateSubpicture(VADriverContextP ctx, VASubpictureID > subpicture, VASurfaceID *target_surfaces, > + int num_surfaces, short src_x, short src_y, > + unsigned short src_width, unsigned short > src_height, > + short dest_x, short dest_y, unsigned short > dest_width, unsigned short dest_height, > + unsigned int flags); > +VAStatus vlVaDeassociateSubpicture(VADriverContextP ctx, VASubpictureID > subpicture, > + VASurfaceID *target_surfaces, int > num_surfaces); > +VAStatus vlVaQueryDisplayAttributes(VADriverContextP ctx, VADisplayAttribute > *attr_list, int *num_attributes); > +VAStatus vlVaGetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute > *attr_list, int num_attributes); > +VAStatus vlVaSetDisplayAttributes(VADriverContextP ctx, VADisplayAttribute > *attr_list, int num_attributes); > +VAStatus vlVaBufferInfo(VADriverContextP ctx, VABufferID buf_id, > VABufferType *type, > + unsigned int *size, unsigned int *num_elements); > +VAStatus vlVaLockSurface(VADriverContextP ctx, VASurfaceID surface, unsigned > int *fourcc, > + unsigned int *luma_stride, unsigned int > *chroma_u_stride, unsigned int *chroma_v_stride, > + unsigned int *luma_offset, unsigned int > *chroma_u_offset, unsigned int *chroma_v_offset, > + unsigned int *buffer_name, void **buffer); > +VAStatus vlVaUnlockSurface(VADriverContextP ctx, VASurfaceID surface); > + > +#endif //VA_PRIVATE_H > diff --git a/src/gallium/targets/va/Makefile.am > b/src/gallium/targets/va/Makefile.am > new file mode 100644 > index 0000000..1a4e9e2 > --- /dev/null > +++ b/src/gallium/targets/va/Makefile.am > @@ -0,0 +1,93 @@ > +include $(top_srcdir)/src/gallium/Automake.inc > + > +AM_CFLAGS = \ > + $(GALLIUM_TARGET_CFLAGS) > + > +dridir = $(DRI_DRIVER_INSTALL_DIR) > +dri_LTLIBRARIES = gallium_drv_video.la > + > +nodist_EXTRA_gallium_drv_video_la_SOURCES = dummy.cpp > +gallium_drv_video_la_SOURCES = \ > + $(top_srcdir)/src/gallium/auxiliary/vl/vl_winsys_dri.c > + > +gallium_drv_video_la_LDFLAGS = \ > + -shared \ > + -module \ > + -no-undefined \ > + -avoid-version \ > + $(GC_SECTIONS) \ > + $(LD_NO_UNDEFINED) > + > +if HAVE_LD_VERSION_SCRIPT > +gallium_drv_video_la_LDFLAGS += \ > + -Wl,--version-script=$(top_srcdir)/src/gallium/targets/va/va.sym > +endif > + > +gallium_drv_video_la_LIBADD = \ > + $(top_builddir)/src/gallium/state_trackers/va/libvatracker.la \ > + $(top_builddir)/src/gallium/auxiliary/libgallium.la \ > + $(top_builddir)/src/util/libmesautil.la \ > + $(LIBVA_LIBS) \ > + $(LIBDRM_LIBS) \ > + $(GALLIUM_COMMON_LIB_DEPS) > + > + > +if HAVE_GALLIUM_STATIC_TARGETS > + > +MEGADRIVERS = > +STATIC_TARGET_CPPFLAGS = -DGALLIUM_STATIC_TARGETS=1 > +STATIC_TARGET_LIB_DEPS = \ > + $(top_builddir)/src/loader/libloader.la > + > +if HAVE_GALLIUM_R600 > +STATIC_TARGET_LIB_DEPS += \ > + $(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la > +else > +if HAVE_GALLIUM_RADEONSI > +STATIC_TARGET_LIB_DEPS += \ > + $(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la > +endif > +endif > + > +if HAVE_GALLIUM_RADEON_COMMON > +STATIC_TARGET_LIB_DEPS += \ > + $(top_builddir)/src/gallium/drivers/radeon/libradeon.la > +endif > + > +if HAVE_GALLIUM_R600 > +MEGADRIVERS += r600 > +STATIC_TARGET_CPPFLAGS += -DGALLIUM_R600 > +STATIC_TARGET_LIB_DEPS += \ > + $(top_builddir)/src/gallium/drivers/r600/libr600.la \ > + $(RADEON_LIBS) > +endif > + > +if HAVE_GALLIUM_RADEONSI > +MEGADRIVERS += radeonsi > +STATIC_TARGET_CPPFLAGS += -DGALLIUM_RADEONSI > +STATIC_TARGET_LIB_DEPS += \ > + $(top_builddir)/src/gallium/drivers/radeonsi/libradeonsi.la \ > + $(RADEON_LIBS) > +endif > + > +gallium_drv_video_la_SOURCES += target.c > +gallium_drv_video_la_CPPFLAGS = $(STATIC_TARGET_CPPFLAGS) > +gallium_drv_video_la_LIBADD += $(STATIC_TARGET_LIB_DEPS) > + > +else > + > +gallium_drv_video_la_CPPFLAGS = \ > + $(GALLIUM_PIPE_LOADER_DEFINES) \ > + -DPIPE_SEARCH_DIR=\"$(libdir)/gallium-pipe\" > + > +gallium_drv_video_la_LIBADD += \ > + $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la \ > + $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \ > + $(GALLIUM_PIPE_LOADER_LIBS) > + > +endif > + > +if HAVE_MESA_LLVM > +gallium_drv_video_la_LIBADD += $(LLVM_LIBS) > +gallium_drv_video_la_LDFLAGS += $(LLVM_LDFLAGS) > +endif > diff --git a/src/gallium/targets/va/target.c b/src/gallium/targets/va/target.c > new file mode 100644 > index 0000000..fde4a4a > --- /dev/null > +++ b/src/gallium/targets/va/target.c > @@ -0,0 +1 @@ > +#include "target-helpers/inline_drm_helper.h" > diff --git a/src/gallium/targets/va/va.sym b/src/gallium/targets/va/va.sym > new file mode 100644 > index 0000000..157004c > --- /dev/null > +++ b/src/gallium/targets/va/va.sym > @@ -0,0 +1,6 @@ > +{ > + global: > + __vaDriverInit_0_35; > + local: > + *; > +}; > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev The version of VA-API (0.35) could be kind of generated throughout the patchset. 0.36 API version is due out soon, but a 0.36 libva should accept 0.35 drivers. I would still recommend you to auto-generate all those instances of 0_35 though, not necessarily auto-detected, but definitely generated from a single location. Regards, -- Gwenole Beauchesne Intel Corporation SAS / 2 rue de Paris, 92196 Meudon Cedex, France Registration Number (RCS): Nanterre B 302 456 199 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev