1/* 2 * Copyright © 2007 Intel Corporation 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 * SOFTWARE. 22 * 23 * Authors: 24 * Zhenyu Wang <zhenyu.z.wang@intel.com> 25 * 26 */ 27#ifndef I830_HWMC_H 28#define I830_HWMC_H 29 30#define INTEL_XVMC_LIBNAME "IntelXvMC" 31#define INTEL_XVMC_MAJOR 0 32#define INTEL_XVMC_MINOR 1 33#define INTEL_XVMC_PATCHLEVEL 0 34 35#define FOURCC_XVMC (('C' << 24) + ('M' << 16) + ('V' << 8) + 'X') 36 37/* 38 * Commands that client submits through XvPutImage: 39 */ 40 41#define INTEL_XVMC_COMMAND_DISPLAY 0x00 42#define INTEL_XVMC_COMMAND_UNDISPLAY 0x01 43 44/* hw xvmc support type */ 45#define XVMC_I915_MPEG2_MC 0x01 46#define XVMC_I965_MPEG2_MC 0x02 47#define XVMC_I945_MPEG2_VLD 0x04 48#define XVMC_I965_MPEG2_VLD 0x08 49 50/* supported surface types */ 51enum { 52 SURFACE_TYPE_MPEG2_MPML = FOURCC_XVMC, /* mpeg2 MP@ML */ 53 SURFACE_TYPE_MPEG1_MPML, /* mpeg1 MP@ML */ 54 SURFACE_TYPE_MAX 55}; 56 57/* common header for context private */ 58struct hwmc_buffer 59{ 60 drm_handle_t handle; 61 unsigned long offset; 62 unsigned long size; 63 unsigned long bus_addr; 64}; 65 66struct _intel_xvmc_common { 67 unsigned int type; 68 struct hwmc_buffer batchbuffer; 69 unsigned int kernel_exec_fencing:1; 70}; 71 72/* Intel private XvMC command to DDX driver */ 73struct intel_xvmc_command { 74 unsigned int command; 75 unsigned int ctxNo; 76 unsigned int srfNo; 77 unsigned int subPicNo; 78 unsigned int flags; 79 unsigned int real_id; 80 uint32_t handle; 81 unsigned int pad[5]; 82}; 83 84#ifdef _INTEL_XVMC_SERVER_ 85#include <xf86xvmc.h> 86 87struct intel_xvmc_driver { 88 char *name; 89 XF86MCAdaptorPtr adaptor; 90 unsigned int flag; 91 i830_memory *batch; 92 drm_handle_t batch_handle; 93 94 /* more items for xvmv surface manage? */ 95 Bool (*init)(ScrnInfoPtr, XF86VideoAdaptorPtr); 96 void (*fini)(ScrnInfoPtr); 97 void* devPrivate; 98}; 99 100extern struct intel_xvmc_driver *xvmc_driver; 101extern struct intel_xvmc_driver i915_xvmc_driver; 102extern struct intel_xvmc_driver i965_xvmc_driver; 103extern struct intel_xvmc_driver vld_xvmc_driver; 104 105extern Bool intel_xvmc_probe(ScrnInfoPtr); 106extern Bool intel_xvmc_driver_init(ScreenPtr, XF86VideoAdaptorPtr); 107extern Bool intel_xvmc_screen_init(ScreenPtr); 108extern void intel_xvmc_finish(ScrnInfoPtr); 109extern int intel_xvmc_put_image_size(ScrnInfoPtr); 110extern Bool intel_xvmc_init_batch(ScrnInfoPtr); 111extern void intel_xvmc_fini_batch(ScrnInfoPtr); 112#endif 113 114#endif 115