1/*****************************************************************************
2 * VIA Unichrome XvMC extension X server driver.
3 *
4 * Copyright (c) 2004 The Unichrome project. All rights reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *
24 */
25
26#ifndef _VIA_XVMC_H
27#define _VIA_XVMC_H 1
28
29#include "via_drmclient.h"
30#include "via_drm.h"
31
32/*
33 * This file contains the common definitions between the XvMC lib and the
34 * X server side. It is referenced also by the XvMC lib. Make sure any
35 * structure change is reflected also in a change in minor version number!!
36 */
37
38#define VIAXVMC_MAJOR 0
39#define VIAXVMC_MINOR 10
40#define VIAXVMC_PL    0
41#define VIA_NUM_XVMC_ATTRIBUTES 6
42#define VIA_XVMC_VALID 0x80000000
43
44/*
45 * Commands that client submits through XvPutImage:
46 */
47
48#define VIA_XVMC_COMMAND_FDISPLAY 0
49#define VIA_XVMC_COMMAND_DISPLAY 1
50#define VIA_XVMC_COMMAND_UNDISPLAY 2
51#define VIA_XVMC_COMMAND_ATTRIBUTES 3
52
53typedef drm_via_sarea_t ViaXvMCSAreaPriv;
54
55typedef struct
56{
57    INT32 attribute;
58    INT32 value;
59} ViaAttrPair;
60
61typedef struct
62{
63    unsigned numAttr;
64    ViaAttrPair attributes[VIA_NUM_XVMC_ATTRIBUTES];
65} ViaXvMCAttrHolder;
66
67/*
68 * Passed from client to X server during overlay updates.
69 */
70
71typedef struct
72{
73    unsigned command;
74    unsigned ctxNo;
75    unsigned srfNo;
76    unsigned subPicNo;
77    ViaXvMCAttrHolder attrib;
78    unsigned pad;
79} ViaXvMCCommandBuffer;
80
81/*
82 * Passed from X server to client at context creation.
83 */
84
85typedef struct
86{
87    unsigned int ctxNo;
88    unsigned int major, minor, pl;
89    unsigned xvmc_port;
90    unsigned int fbOffset;
91    unsigned int fbSize;
92    unsigned int mmioOffset;
93    unsigned int mmioSize;
94    unsigned int sAreaSize;
95    unsigned int sAreaPrivOffset;
96    ViaXvMCAttrHolder initAttrs;
97    int useAGP;
98    unsigned int chipId;
99    unsigned int screen;
100    unsigned int depth;
101    unsigned int stride;
102    unsigned int pad;
103} ViaXvMCCreateContextRec;
104
105#endif
106