186c93d9c46415cf7746351c502a3513f637e77e4root/* 286c93d9c46415cf7746351c502a3513f637e77e4root * Copyright (c) 2007 Intel Corporation. All Rights Reserved. 386c93d9c46415cf7746351c502a3513f637e77e4root * 486c93d9c46415cf7746351c502a3513f637e77e4root * Permission is hereby granted, free of charge, to any person obtaining a 586c93d9c46415cf7746351c502a3513f637e77e4root * copy of this software and associated documentation files (the 686c93d9c46415cf7746351c502a3513f637e77e4root * "Software"), to deal in the Software without restriction, including 786c93d9c46415cf7746351c502a3513f637e77e4root * without limitation the rights to use, copy, modify, merge, publish, 886c93d9c46415cf7746351c502a3513f637e77e4root * distribute, sub license, and/or sell copies of the Software, and to 986c93d9c46415cf7746351c502a3513f637e77e4root * permit persons to whom the Software is furnished to do so, subject to 1086c93d9c46415cf7746351c502a3513f637e77e4root * the following conditions: 1186c93d9c46415cf7746351c502a3513f637e77e4root * 1286c93d9c46415cf7746351c502a3513f637e77e4root * The above copyright notice and this permission notice (including the 1386c93d9c46415cf7746351c502a3513f637e77e4root * next paragraph) shall be included in all copies or substantial portions 1486c93d9c46415cf7746351c502a3513f637e77e4root * of the Software. 1586c93d9c46415cf7746351c502a3513f637e77e4root * 1686c93d9c46415cf7746351c502a3513f637e77e4root * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 1786c93d9c46415cf7746351c502a3513f637e77e4root * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1886c93d9c46415cf7746351c502a3513f637e77e4root * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 1986c93d9c46415cf7746351c502a3513f637e77e4root * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 2086c93d9c46415cf7746351c502a3513f637e77e4root * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2186c93d9c46415cf7746351c502a3513f637e77e4root * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2286c93d9c46415cf7746351c502a3513f637e77e4root * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2386c93d9c46415cf7746351c502a3513f637e77e4root */ 2486c93d9c46415cf7746351c502a3513f637e77e4root 2586c93d9c46415cf7746351c502a3513f637e77e4root#define _GNU_SOURCE 1 26cceaa0568f77a7452857559614100b71fb36ee3awangkun#include "sysdeps.h" 2786c93d9c46415cf7746351c502a3513f637e77e4root#include "va.h" 2886c93d9c46415cf7746351c502a3513f637e77e4root#include "va_backend.h" 295b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang#include "va_trace.h" 305b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang#include "va_fool.h" 3186c93d9c46415cf7746351c502a3513f637e77e4root#include "va_x11.h" 3286c93d9c46415cf7746351c502a3513f637e77e4root#include "va_dri.h" 3386c93d9c46415cf7746351c502a3513f637e77e4root#include "va_dri2.h" 3486c93d9c46415cf7746351c502a3513f637e77e4root#include "va_dricommon.h" 35b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include "va_nvctrl.h" 36901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang#include "va_fglrx.h" 3786c93d9c46415cf7746351c502a3513f637e77e4root#include <stdio.h> 38b0fac498ca4863166252f1268fda83394db54153Fei Jiang#include <stdlib.h> 3986c93d9c46415cf7746351c502a3513f637e77e4root#include <stdarg.h> 4086c93d9c46415cf7746351c502a3513f637e77e4root#include <string.h> 4186c93d9c46415cf7746351c502a3513f637e77e4root#include <unistd.h> 4286c93d9c46415cf7746351c502a3513f637e77e4root#include <sys/types.h> 4386c93d9c46415cf7746351c502a3513f637e77e4root#include <sys/stat.h> 4486c93d9c46415cf7746351c502a3513f637e77e4root#include <fcntl.h> 4586c93d9c46415cf7746351c502a3513f637e77e4root#include <errno.h> 4686c93d9c46415cf7746351c502a3513f637e77e4root 4786c93d9c46415cf7746351c502a3513f637e77e4rootstatic int va_DisplayContextIsValid ( 4886c93d9c46415cf7746351c502a3513f637e77e4root VADisplayContextP pDisplayContext 4986c93d9c46415cf7746351c502a3513f637e77e4root) 5086c93d9c46415cf7746351c502a3513f637e77e4root{ 51a00f54a574bb5a51af428b03577599bcc70a17b2Austin Yuan return (pDisplayContext != NULL && 52a00f54a574bb5a51af428b03577599bcc70a17b2Austin Yuan pDisplayContext->pDriverContext != NULL); 5386c93d9c46415cf7746351c502a3513f637e77e4root} 5486c93d9c46415cf7746351c502a3513f637e77e4root 5586c93d9c46415cf7746351c502a3513f637e77e4rootstatic void va_DisplayContextDestroy ( 5686c93d9c46415cf7746351c502a3513f637e77e4root VADisplayContextP pDisplayContext 5786c93d9c46415cf7746351c502a3513f637e77e4root) 5886c93d9c46415cf7746351c502a3513f637e77e4root{ 5936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang VADriverContextP ctx; 6036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang struct dri_state *dri_state; 6136bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang 62a00f54a574bb5a51af428b03577599bcc70a17b2Austin Yuan if (pDisplayContext == NULL) 63a00f54a574bb5a51af428b03577599bcc70a17b2Austin Yuan return; 64a00f54a574bb5a51af428b03577599bcc70a17b2Austin Yuan 6536bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang ctx = pDisplayContext->pDriverContext; 66409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan dri_state = ctx->drm_state; 6736bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang 6836bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang if (dri_state && dri_state->close) 6936bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang dri_state->close(ctx); 7036bee3ca78947ad82f87473b5d29b9a7177ebaedShuduo Sang 71409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan free(pDisplayContext->pDriverContext->drm_state); 7286c93d9c46415cf7746351c502a3513f637e77e4root free(pDisplayContext->pDriverContext); 7386c93d9c46415cf7746351c502a3513f637e77e4root free(pDisplayContext); 7486c93d9c46415cf7746351c502a3513f637e77e4root} 7586c93d9c46415cf7746351c502a3513f637e77e4root 7686c93d9c46415cf7746351c502a3513f637e77e4root 7786c93d9c46415cf7746351c502a3513f637e77e4rootstatic VAStatus va_DRI2GetDriverName ( 7886c93d9c46415cf7746351c502a3513f637e77e4root VADisplayContextP pDisplayContext, 7986c93d9c46415cf7746351c502a3513f637e77e4root char **driver_name 8086c93d9c46415cf7746351c502a3513f637e77e4root) 8186c93d9c46415cf7746351c502a3513f637e77e4root{ 8286c93d9c46415cf7746351c502a3513f637e77e4root VADriverContextP ctx = pDisplayContext->pDriverContext; 8386c93d9c46415cf7746351c502a3513f637e77e4root 8486c93d9c46415cf7746351c502a3513f637e77e4root if (!isDRI2Connected(ctx, driver_name)) 8586c93d9c46415cf7746351c502a3513f637e77e4root return VA_STATUS_ERROR_UNKNOWN; 8686c93d9c46415cf7746351c502a3513f637e77e4root 8786c93d9c46415cf7746351c502a3513f637e77e4root return VA_STATUS_SUCCESS; 8886c93d9c46415cf7746351c502a3513f637e77e4root} 8986c93d9c46415cf7746351c502a3513f637e77e4root 9086c93d9c46415cf7746351c502a3513f637e77e4rootstatic VAStatus va_DRIGetDriverName ( 9186c93d9c46415cf7746351c502a3513f637e77e4root VADisplayContextP pDisplayContext, 9286c93d9c46415cf7746351c502a3513f637e77e4root char **driver_name 9386c93d9c46415cf7746351c502a3513f637e77e4root) 9486c93d9c46415cf7746351c502a3513f637e77e4root{ 9586c93d9c46415cf7746351c502a3513f637e77e4root VADriverContextP ctx = pDisplayContext->pDriverContext; 9686c93d9c46415cf7746351c502a3513f637e77e4root 9786c93d9c46415cf7746351c502a3513f637e77e4root if (!isDRI1Connected(ctx, driver_name)) 9886c93d9c46415cf7746351c502a3513f637e77e4root return VA_STATUS_ERROR_UNKNOWN; 9986c93d9c46415cf7746351c502a3513f637e77e4root 10086c93d9c46415cf7746351c502a3513f637e77e4root return VA_STATUS_SUCCESS; 10186c93d9c46415cf7746351c502a3513f637e77e4root} 10286c93d9c46415cf7746351c502a3513f637e77e4root 10386c93d9c46415cf7746351c502a3513f637e77e4rootstatic VAStatus va_NVCTRL_GetDriverName ( 10486c93d9c46415cf7746351c502a3513f637e77e4root VADisplayContextP pDisplayContext, 10586c93d9c46415cf7746351c502a3513f637e77e4root char **driver_name 10686c93d9c46415cf7746351c502a3513f637e77e4root) 10786c93d9c46415cf7746351c502a3513f637e77e4root{ 10886c93d9c46415cf7746351c502a3513f637e77e4root VADriverContextP ctx = pDisplayContext->pDriverContext; 10986c93d9c46415cf7746351c502a3513f637e77e4root int direct_capable, driver_major, driver_minor, driver_patch; 11086c93d9c46415cf7746351c502a3513f637e77e4root Bool result; 11186c93d9c46415cf7746351c502a3513f637e77e4root 1125b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang result = VA_NVCTRLQueryDirectRenderingCapable(ctx->native_dpy, ctx->x11_screen, 11386c93d9c46415cf7746351c502a3513f637e77e4root &direct_capable); 11486c93d9c46415cf7746351c502a3513f637e77e4root if (!result || !direct_capable) 11586c93d9c46415cf7746351c502a3513f637e77e4root return VA_STATUS_ERROR_UNKNOWN; 11686c93d9c46415cf7746351c502a3513f637e77e4root 1175b3d55a0433b48477823f81821817a78ef53ac2eShuduo Sang result = VA_NVCTRLGetClientDriverName(ctx->native_dpy, ctx->x11_screen, 11886c93d9c46415cf7746351c502a3513f637e77e4root &driver_major, &driver_minor, 11986c93d9c46415cf7746351c502a3513f637e77e4root &driver_patch, driver_name); 12086c93d9c46415cf7746351c502a3513f637e77e4root if (!result) 12186c93d9c46415cf7746351c502a3513f637e77e4root return VA_STATUS_ERROR_UNKNOWN; 12286c93d9c46415cf7746351c502a3513f637e77e4root 12386c93d9c46415cf7746351c502a3513f637e77e4root return VA_STATUS_SUCCESS; 12486c93d9c46415cf7746351c502a3513f637e77e4root} 12586c93d9c46415cf7746351c502a3513f637e77e4root 126901c77a7aa491f56b63af7b655b67439481e4177Fei Jiangstatic VAStatus va_FGLRX_GetDriverName ( 127901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang VADisplayContextP pDisplayContext, 128901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang char **driver_name 129901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang) 130901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang{ 131901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang VADriverContextP ctx = pDisplayContext->pDriverContext; 132901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang int driver_major, driver_minor, driver_patch; 133901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang Bool result; 134901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang 135901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang result = VA_FGLRXGetClientDriverName(ctx->native_dpy, ctx->x11_screen, 136901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang &driver_major, &driver_minor, 137901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang &driver_patch, driver_name); 138901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang if (!result) 139901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang return VA_STATUS_ERROR_UNKNOWN; 140901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang 141901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang return VA_STATUS_SUCCESS; 142901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang} 143901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang 14486c93d9c46415cf7746351c502a3513f637e77e4rootstatic VAStatus va_DisplayContextGetDriverName ( 14586c93d9c46415cf7746351c502a3513f637e77e4root VADisplayContextP pDisplayContext, 14686c93d9c46415cf7746351c502a3513f637e77e4root char **driver_name 14786c93d9c46415cf7746351c502a3513f637e77e4root) 14886c93d9c46415cf7746351c502a3513f637e77e4root{ 14986c93d9c46415cf7746351c502a3513f637e77e4root VAStatus vaStatus; 15086c93d9c46415cf7746351c502a3513f637e77e4root 15186c93d9c46415cf7746351c502a3513f637e77e4root if (driver_name) 15286c93d9c46415cf7746351c502a3513f637e77e4root *driver_name = NULL; 153409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan else 154409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan return VA_STATUS_ERROR_UNKNOWN; 155409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan 15686c93d9c46415cf7746351c502a3513f637e77e4root vaStatus = va_DRI2GetDriverName(pDisplayContext, driver_name); 15786c93d9c46415cf7746351c502a3513f637e77e4root if (vaStatus != VA_STATUS_SUCCESS) 15886c93d9c46415cf7746351c502a3513f637e77e4root vaStatus = va_DRIGetDriverName(pDisplayContext, driver_name); 15986c93d9c46415cf7746351c502a3513f637e77e4root if (vaStatus != VA_STATUS_SUCCESS) 16086c93d9c46415cf7746351c502a3513f637e77e4root vaStatus = va_NVCTRL_GetDriverName(pDisplayContext, driver_name); 161901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang if (vaStatus != VA_STATUS_SUCCESS) 162901c77a7aa491f56b63af7b655b67439481e4177Fei Jiang vaStatus = va_FGLRX_GetDriverName(pDisplayContext, driver_name); 16386c93d9c46415cf7746351c502a3513f637e77e4root return vaStatus; 16486c93d9c46415cf7746351c502a3513f637e77e4root} 16586c93d9c46415cf7746351c502a3513f637e77e4root 166b0fac498ca4863166252f1268fda83394db54153Fei Jiang 16786c93d9c46415cf7746351c502a3513f637e77e4rootVADisplay vaGetDisplay ( 16886c93d9c46415cf7746351c502a3513f637e77e4root Display *native_dpy /* implementation specific */ 16986c93d9c46415cf7746351c502a3513f637e77e4root) 17086c93d9c46415cf7746351c502a3513f637e77e4root{ 17186c93d9c46415cf7746351c502a3513f637e77e4root VADisplay dpy = NULL; 172a00f54a574bb5a51af428b03577599bcc70a17b2Austin Yuan VADisplayContextP pDisplayContext; 17386c93d9c46415cf7746351c502a3513f637e77e4root 17486c93d9c46415cf7746351c502a3513f637e77e4root if (!native_dpy) 17586c93d9c46415cf7746351c502a3513f637e77e4root return NULL; 17686c93d9c46415cf7746351c502a3513f637e77e4root 17786c93d9c46415cf7746351c502a3513f637e77e4root if (!dpy) 17886c93d9c46415cf7746351c502a3513f637e77e4root { 17986c93d9c46415cf7746351c502a3513f637e77e4root /* create new entry */ 18086c93d9c46415cf7746351c502a3513f637e77e4root VADriverContextP pDriverContext; 18186c93d9c46415cf7746351c502a3513f637e77e4root struct dri_state *dri_state; 18286c93d9c46415cf7746351c502a3513f637e77e4root pDisplayContext = calloc(1, sizeof(*pDisplayContext)); 18386c93d9c46415cf7746351c502a3513f637e77e4root pDriverContext = calloc(1, sizeof(*pDriverContext)); 18486c93d9c46415cf7746351c502a3513f637e77e4root dri_state = calloc(1, sizeof(*dri_state)); 18586c93d9c46415cf7746351c502a3513f637e77e4root if (pDisplayContext && pDriverContext && dri_state) 18686c93d9c46415cf7746351c502a3513f637e77e4root { 18786c93d9c46415cf7746351c502a3513f637e77e4root pDisplayContext->vadpy_magic = VA_DISPLAY_MAGIC; 18886c93d9c46415cf7746351c502a3513f637e77e4root 189b0fac498ca4863166252f1268fda83394db54153Fei Jiang pDriverContext->native_dpy = (void *)native_dpy; 190409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan pDriverContext->display_type = VA_DISPLAY_X11; 19186c93d9c46415cf7746351c502a3513f637e77e4root pDisplayContext->pDriverContext = pDriverContext; 19286c93d9c46415cf7746351c502a3513f637e77e4root pDisplayContext->vaIsValid = va_DisplayContextIsValid; 19386c93d9c46415cf7746351c502a3513f637e77e4root pDisplayContext->vaDestroy = va_DisplayContextDestroy; 19486c93d9c46415cf7746351c502a3513f637e77e4root pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName; 195b0fac498ca4863166252f1268fda83394db54153Fei Jiang pDisplayContext->opaque = NULL; 196409de6acb4473c973ed2532e340831dc582e5e0eAustin Yuan pDriverContext->drm_state = dri_state; 19786c93d9c46415cf7746351c502a3513f637e77e4root dpy = (VADisplay)pDisplayContext; 19886c93d9c46415cf7746351c502a3513f637e77e4root } 19986c93d9c46415cf7746351c502a3513f637e77e4root else 20086c93d9c46415cf7746351c502a3513f637e77e4root { 20186c93d9c46415cf7746351c502a3513f637e77e4root if (pDisplayContext) 20286c93d9c46415cf7746351c502a3513f637e77e4root free(pDisplayContext); 20386c93d9c46415cf7746351c502a3513f637e77e4root if (pDriverContext) 20486c93d9c46415cf7746351c502a3513f637e77e4root free(pDriverContext); 20586c93d9c46415cf7746351c502a3513f637e77e4root if (dri_state) 20686c93d9c46415cf7746351c502a3513f637e77e4root free(dri_state); 20786c93d9c46415cf7746351c502a3513f637e77e4root } 20886c93d9c46415cf7746351c502a3513f637e77e4root } 20986c93d9c46415cf7746351c502a3513f637e77e4root 21086c93d9c46415cf7746351c502a3513f637e77e4root return dpy; 21186c93d9c46415cf7746351c502a3513f637e77e4root} 212b0fac498ca4863166252f1268fda83394db54153Fei Jiang 213b0fac498ca4863166252f1268fda83394db54153Fei Jiang#define CTX(dpy) (((VADisplayContextP)dpy)->pDriverContext) 214b0fac498ca4863166252f1268fda83394db54153Fei Jiang#define CHECK_DISPLAY(dpy) if( !vaDisplayIsValid(dpy) ) { return VA_STATUS_ERROR_INVALID_DISPLAY; } 215b0fac498ca4863166252f1268fda83394db54153Fei Jiang 21621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuanvoid va_TracePutSurface ( 21721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan VADisplay dpy, 21821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan VASurfaceID surface, 21921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan void *draw, /* the target Drawable */ 22021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan short srcx, 22121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan short srcy, 22221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan unsigned short srcw, 22321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan unsigned short srch, 22421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan short destx, 22521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan short desty, 22621e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan unsigned short destw, 22721e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan unsigned short desth, 22821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan VARectangle *cliprects, /* client supplied clip list */ 22921e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan unsigned int number_cliprects, /* number of clip rects in the clip list */ 23021e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan unsigned int flags /* de-interlacing flags */ 23121e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan); 23221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan 23321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan 234b0fac498ca4863166252f1268fda83394db54153Fei JiangVAStatus vaPutSurface ( 235b0fac498ca4863166252f1268fda83394db54153Fei Jiang VADisplay dpy, 236b0fac498ca4863166252f1268fda83394db54153Fei Jiang VASurfaceID surface, 237b0fac498ca4863166252f1268fda83394db54153Fei Jiang Drawable draw, /* X Drawable */ 238b0fac498ca4863166252f1268fda83394db54153Fei Jiang short srcx, 239b0fac498ca4863166252f1268fda83394db54153Fei Jiang short srcy, 240b0fac498ca4863166252f1268fda83394db54153Fei Jiang unsigned short srcw, 241b0fac498ca4863166252f1268fda83394db54153Fei Jiang unsigned short srch, 242b0fac498ca4863166252f1268fda83394db54153Fei Jiang short destx, 243b0fac498ca4863166252f1268fda83394db54153Fei Jiang short desty, 244b0fac498ca4863166252f1268fda83394db54153Fei Jiang unsigned short destw, 245b0fac498ca4863166252f1268fda83394db54153Fei Jiang unsigned short desth, 246b0fac498ca4863166252f1268fda83394db54153Fei Jiang VARectangle *cliprects, /* client supplied clip list */ 247b0fac498ca4863166252f1268fda83394db54153Fei Jiang unsigned int number_cliprects, /* number of clip rects in the clip list */ 248b0fac498ca4863166252f1268fda83394db54153Fei Jiang unsigned int flags /* de-interlacing flags */ 249b0fac498ca4863166252f1268fda83394db54153Fei Jiang) 250b0fac498ca4863166252f1268fda83394db54153Fei Jiang{ 251b0fac498ca4863166252f1268fda83394db54153Fei Jiang VADriverContextP ctx; 252b0fac498ca4863166252f1268fda83394db54153Fei Jiang 25321e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan if (fool_postp) 25421e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan return VA_STATUS_SUCCESS; 25521e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan 256b0fac498ca4863166252f1268fda83394db54153Fei Jiang CHECK_DISPLAY(dpy); 257b0fac498ca4863166252f1268fda83394db54153Fei Jiang ctx = CTX(dpy); 25821e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan 2596044ab9a375eb73b08f45d87966652f98f918668Austin Yuan VA_TRACE_LOG(va_TracePutSurface, dpy, surface, (void *)draw, srcx, srcy, srcw, srch, 2606044ab9a375eb73b08f45d87966652f98f918668Austin Yuan destx, desty, destw, desth, 2616044ab9a375eb73b08f45d87966652f98f918668Austin Yuan cliprects, number_cliprects, flags ); 26221e26478769d887b8357289ebb7faa47b8b415aeAustin Yuan 263cceaa0568f77a7452857559614100b71fb36ee3awangkun return ctx->vtable->vaPutSurface( ctx, surface, (void *)draw, srcx, srcy, srcw, srch, 264b0fac498ca4863166252f1268fda83394db54153Fei Jiang destx, desty, destw, desth, 265b0fac498ca4863166252f1268fda83394db54153Fei Jiang cliprects, number_cliprects, flags ); 266b0fac498ca4863166252f1268fda83394db54153Fei Jiang} 267