xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/xa/README (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker/**********************************************************
2*61046927SAndroid Build Coastguard Worker * Copyright 2009-2011 VMware, Inc. All rights reserved.
3*61046927SAndroid Build Coastguard Worker *
4*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person
5*61046927SAndroid Build Coastguard Worker * obtaining a copy of this software and associated documentation
6*61046927SAndroid Build Coastguard Worker * files (the "Software"), to deal in the Software without
7*61046927SAndroid Build Coastguard Worker * restriction, including without limitation the rights to use, copy,
8*61046927SAndroid Build Coastguard Worker * modify, merge, publish, distribute, sublicense, and/or sell copies
9*61046927SAndroid Build Coastguard Worker * of the Software, and to permit persons to whom the Software is
10*61046927SAndroid Build Coastguard Worker * furnished to do so, subject to the following conditions:
11*61046927SAndroid Build Coastguard Worker *
12*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice shall be
13*61046927SAndroid Build Coastguard Worker * included in all copies or substantial portions of the Software.
14*61046927SAndroid Build Coastguard Worker *
15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16*61046927SAndroid Build Coastguard Worker * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17*61046927SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18*61046927SAndroid Build Coastguard Worker * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19*61046927SAndroid Build Coastguard Worker * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20*61046927SAndroid Build Coastguard Worker * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21*61046927SAndroid Build Coastguard Worker * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22*61046927SAndroid Build Coastguard Worker * SOFTWARE.
23*61046927SAndroid Build Coastguard Worker *
24*61046927SAndroid Build Coastguard Worker *********************************************************
25*61046927SAndroid Build Coastguard Worker * Authors:
26*61046927SAndroid Build Coastguard Worker * Zack Rusin <zackr-at-vmware-dot-com>
27*61046927SAndroid Build Coastguard Worker * Thomas Hellstrom <thellstrom-at-vmware-dot-com>
28*61046927SAndroid Build Coastguard Worker */
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard WorkerThe XA gallium frontend is intended as a versioned interface to gallium for
31*61046927SAndroid Build Coastguard Workerxorg driver writers. Initially it's mostly based on Zack Rusin's
32*61046927SAndroid Build Coastguard Workercomposite / video work for the Xorg gallium frontend.
33*61046927SAndroid Build Coastguard Worker
34*61046927SAndroid Build Coastguard WorkerThe motivation behind this gallium frontend is that the Xorg gallium frontend has
35*61046927SAndroid Build Coastguard Workera number of interfaces to work with:
36*61046927SAndroid Build Coastguard Worker
37*61046927SAndroid Build Coastguard Worker1) The Xorg sdk (versioned)
38*61046927SAndroid Build Coastguard Worker2) Gallium3D (not versioned)
39*61046927SAndroid Build Coastguard Worker3) KMS modesetting (versioned)
40*61046927SAndroid Build Coastguard Worker4) Driver-private (hopefully versioned)
41*61046927SAndroid Build Coastguard Worker
42*61046927SAndroid Build Coastguard WorkerSince Gallium3D is not versioned, the Xorg gallium frontend needs to be compiled
43*61046927SAndroid Build Coastguard Workerwith Gallium, but it's really beneficial to be able to compile xorg drivers
44*61046927SAndroid Build Coastguard Workerstandalone.
45*61046927SAndroid Build Coastguard Worker
46*61046927SAndroid Build Coastguard WorkerTherefore the xa gallium frontend is intended to supply the following
47*61046927SAndroid Build Coastguard Workerfunctionality:
48*61046927SAndroid Build Coastguard Worker
49*61046927SAndroid Build Coastguard Worker1) Versioning.
50*61046927SAndroid Build Coastguard Worker2) Surface functionality (creation and copying for a basic dri2 implementation)
51*61046927SAndroid Build Coastguard Worker3) YUV blits for textured Xv.
52*61046927SAndroid Build Coastguard Worker4) Solid fills without ROP functionality.
53*61046927SAndroid Build Coastguard Worker5) Copies with format conversion and - reinterpretation but without ROP
54*61046927SAndroid Build Coastguard Worker6) Xrender- type compositing for general acceleration.
55*61046927SAndroid Build Coastguard Worker
56*61046927SAndroid Build Coastguard Worker
57*61046927SAndroid Build Coastguard WorkerThe first user will be the vmwgfx xorg driver. When there are more users,
58*61046927SAndroid Build Coastguard Workerwe need to be able to load the appropriate gallium pipe driver, and we
59*61046927SAndroid Build Coastguard Workershould investigate sharing the loadig mechanism with the EGL gallium frontend.
60*61046927SAndroid Build Coastguard Worker
61*61046927SAndroid Build Coastguard WorkerIMPORTANT:
62*61046927SAndroid Build Coastguard WorkerVersion compatibilities:
63*61046927SAndroid Build Coastguard WorkerWhile this library remains OUTSIDE any mesa release branch,
64*61046927SAndroid Build Coastguard Workerand the major version number is still 0. Any minor bump should be viewed as
65*61046927SAndroid Build Coastguard Workeran incompatibility event, and any user of this library should test for that
66*61046927SAndroid Build Coastguard Workerand refuse to use the library if minor versions differ.
67*61046927SAndroid Build Coastguard WorkerAs soon as the library enters a mesa release branch, if not earlier, major
68*61046927SAndroid Build Coastguard Workerwill be bumped to 1, and normal incompatibility rules (major bump)
69*61046927SAndroid Build Coastguard Workerwill be followed.
70*61046927SAndroid Build Coastguard WorkerIt is allowed to add function interfaces while only bumping minor. Any
71*61046927SAndroid Build Coastguard Workeruser that uses these function interfaces must therefore use lazy symbol
72*61046927SAndroid Build Coastguard Workerlookups and test minor for compatibility before using such a function.
73