1848b8605Smrg/**********************************************************
2848b8605Smrg * Copyright 2009-2011 VMware, Inc. All rights reserved.
3848b8605Smrg *
4848b8605Smrg * Permission is hereby granted, free of charge, to any person
5848b8605Smrg * obtaining a copy of this software and associated documentation
6848b8605Smrg * files (the "Software"), to deal in the Software without
7848b8605Smrg * restriction, including without limitation the rights to use, copy,
8848b8605Smrg * modify, merge, publish, distribute, sublicense, and/or sell copies
9848b8605Smrg * of the Software, and to permit persons to whom the Software is
10848b8605Smrg * furnished to do so, subject to the following conditions:
11848b8605Smrg *
12848b8605Smrg * The above copyright notice and this permission notice shall be
13848b8605Smrg * included in all copies or substantial portions of the Software.
14848b8605Smrg *
15848b8605Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16848b8605Smrg * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17848b8605Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18848b8605Smrg * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19848b8605Smrg * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20848b8605Smrg * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21848b8605Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22848b8605Smrg * SOFTWARE.
23848b8605Smrg *
24848b8605Smrg *********************************************************
25848b8605Smrg * Authors:
26848b8605Smrg * Zack Rusin <zackr-at-vmware-dot-com>
27848b8605Smrg * Thomas Hellstrom <thellstrom-at-vmware-dot-com>
28848b8605Smrg */
29848b8605Smrg
30848b8605SmrgThe XA state tracker is intended as a versioned interface to gallium for
31848b8605Smrgxorg driver writers. Initially it's mostly based on Zack Rusin's
32848b8605Smrgcomposite / video work for the Xorg state tracker.
33848b8605Smrg
34848b8605SmrgThe motivation behind this state tracker is that the Xorg state tracker has
35848b8605Smrga number of interfaces to work with:
36848b8605Smrg
37848b8605Smrg1) The Xorg sdk (versioned)
38848b8605Smrg2) Gallium3D (not versioned)
39848b8605Smrg3) KMS modesetting (versioned)
40848b8605Smrg4) Driver-private (hopefully versioned)
41848b8605Smrg
42848b8605SmrgSince Gallium3D is not versioned, the Xorg state tracker needs to be compiled
43848b8605Smrgwith Gallium, but it's really beneficial to be able to compile xorg drivers
44848b8605Smrgstandalone.
45848b8605Smrg
46848b8605SmrgTherefore the xa state tracker is intended to supply the following
47848b8605Smrgfunctionality:
48848b8605Smrg
49848b8605Smrg1) Versioning.
50848b8605Smrg2) Surface functionality (creation and copying for a basic dri2 implementation)
51848b8605Smrg3) YUV blits for textured Xv.
52848b8605Smrg4) Solid fills without ROP functionality.
53848b8605Smrg5) Copies with format conversion and - reinterpretation but without ROP
54848b8605Smrg6) Xrender- type compositing for general acceleration.
55848b8605Smrg
56848b8605Smrg
57848b8605SmrgThe first user will be the vmwgfx xorg driver. When there are more users,
58848b8605Smrgwe need to be able to load the appropriate gallium pipe driver, and we
59848b8605Smrgshould investigate sharing the loadig mechanism with the EGL state tracker.
60848b8605Smrg
61848b8605SmrgIMPORTANT:
62848b8605SmrgVersion compatibilities:
63848b8605SmrgWhile this library remains OUTSIDE any mesa release branch,
64848b8605Smrgand the major version number is still 0. Any minor bump should be viewed as
65848b8605Smrgan incompatibility event, and any user of this library should test for that
66848b8605Smrgand refuse to use the library if minor versions differ.
67848b8605SmrgAs soon as the library enters a mesa release branch, if not earlier, major
68848b8605Smrgwill be bumped to 1, and normal incompatibility rules (major bump)
69848b8605Smrgwill be followed.
70848b8605SmrgIt is allowed to add function interfaces while only bumping minor. Any
71848b8605Smrguser that uses these function interfaces must therefore use lazy symbol
72848b8605Smrglookups and test minor for compatibility before using such a function.
73